desy-angular 14.0.1 → 14.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. package/esm2022/lib/desy-angular.module.mjs +2 -2
  2. package/esm2022/lib/desy-buttons/components/button/button.component.mjs +3 -3
  3. package/esm2022/lib/desy-buttons/components/button-loader/button-loader.component.mjs +3 -3
  4. package/esm2022/lib/desy-buttons/components/dropdown/dropdown.component.mjs +10 -9
  5. package/esm2022/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.mjs +1 -1
  6. package/esm2022/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.mjs +1 -1
  7. package/esm2022/lib/desy-buttons/components/listbox/listbox.component.mjs +18 -19
  8. package/esm2022/lib/desy-buttons/components/pill/pill.component.mjs +3 -3
  9. package/esm2022/lib/desy-buttons/components/toggle/toggle-off-state/toggle-off-state.component.mjs +3 -3
  10. package/esm2022/lib/desy-buttons/components/toggle/toggle-on-state/toggle-on-state.component.mjs +3 -3
  11. package/esm2022/lib/desy-buttons/components/toggle/toggle.component.mjs +3 -3
  12. package/esm2022/lib/desy-buttons/desy-buttons.module.mjs +7 -18
  13. package/esm2022/lib/desy-commons/components/content/content.component.mjs +1 -1
  14. package/esm2022/lib/desy-commons/components/description/description.component.mjs +2 -2
  15. package/esm2022/lib/desy-commons/components/divider/divider.component.mjs +3 -3
  16. package/esm2022/lib/desy-commons/components/icon/icon.component.mjs +1 -1
  17. package/esm2022/lib/desy-commons/components/title/title.component.mjs +2 -2
  18. package/esm2022/lib/desy-commons/desy-commons.module.mjs +6 -34
  19. package/esm2022/lib/desy-commons/interfaces/description-data.mjs +1 -1
  20. package/esm2022/lib/desy-commons/interfaces/divider-data.mjs +1 -1
  21. package/esm2022/lib/desy-commons/interfaces/icon-data.mjs +1 -1
  22. package/esm2022/lib/desy-commons/interfaces/title-data.mjs +1 -1
  23. package/esm2022/lib/desy-forms/components/character-count/character-count.component.mjs +10 -10
  24. package/esm2022/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.mjs +12 -9
  25. package/esm2022/lib/desy-forms/components/checkboxes/checkboxes-parent.component.mjs +2 -2
  26. package/esm2022/lib/desy-forms/components/checkboxes/checkboxes.component.mjs +23 -17
  27. package/esm2022/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.mjs +2 -2
  28. package/esm2022/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.mjs +3 -3
  29. package/esm2022/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.mjs +2 -2
  30. package/esm2022/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.mjs +2 -2
  31. package/esm2022/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.mjs +2 -2
  32. package/esm2022/lib/desy-forms/components/date-input/date-input.component.mjs +34 -25
  33. package/esm2022/lib/desy-forms/components/datepicker/datepicker.component.mjs +14 -14
  34. package/esm2022/lib/desy-forms/components/datepicker/datepicker.pipe.mjs +3 -3
  35. package/esm2022/lib/desy-forms/components/error-message/error-message.component.mjs +3 -3
  36. package/esm2022/lib/desy-forms/components/fieldset/fieldset.component.mjs +3 -3
  37. package/esm2022/lib/desy-forms/components/fieldset/legend/legend.component.mjs +3 -3
  38. package/esm2022/lib/desy-forms/components/file-upload/file-upload.component.mjs +7 -7
  39. package/esm2022/lib/desy-forms/components/form-field/form-field.component.mjs +12 -5
  40. package/esm2022/lib/desy-forms/components/hint/hint.component.mjs +3 -3
  41. package/esm2022/lib/desy-forms/components/input/input.component.mjs +10 -10
  42. package/esm2022/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.mjs +1 -1
  43. package/esm2022/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.mjs +2 -2
  44. package/esm2022/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.mjs +2 -2
  45. package/esm2022/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.mjs +2 -2
  46. package/esm2022/lib/desy-forms/components/input-group/input-group.component.mjs +18 -15
  47. package/esm2022/lib/desy-forms/components/label/label.component.mjs +3 -3
  48. package/esm2022/lib/desy-forms/components/radios/radio-item/radio-item.component.mjs +7 -5
  49. package/esm2022/lib/desy-forms/components/radios/radios-parent.component.mjs +2 -2
  50. package/esm2022/lib/desy-forms/components/radios/radios.component.mjs +20 -16
  51. package/esm2022/lib/desy-forms/components/search-bar/search-bar.component.mjs +12 -8
  52. package/esm2022/lib/desy-forms/components/select/option/option.component.mjs +1 -1
  53. package/esm2022/lib/desy-forms/components/select/option-group/option-group.component.mjs +1 -1
  54. package/esm2022/lib/desy-forms/components/select/select-item/select-item.component.mjs +1 -1
  55. package/esm2022/lib/desy-forms/components/select/select.component.mjs +13 -13
  56. package/esm2022/lib/desy-forms/components/template-driven-wrapper/template-driven-wrapper.component.mjs +3 -3
  57. package/esm2022/lib/desy-forms/components/textarea/textarea.component.mjs +8 -8
  58. package/esm2022/lib/desy-forms/components/tree/interfaces/quit-tree-item-focus-options.mjs +1 -1
  59. package/esm2022/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.mjs +9 -9
  60. package/esm2022/lib/desy-forms/components/tree/tree-item/tree-item.component.mjs +37 -34
  61. package/esm2022/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.mjs +4 -4
  62. package/esm2022/lib/desy-forms/components/tree/tree-sub/tree-sub.component.mjs +5 -5
  63. package/esm2022/lib/desy-forms/components/tree/tree.component.mjs +45 -42
  64. package/esm2022/lib/desy-forms/desy-forms.module.mjs +2 -2
  65. package/esm2022/lib/desy-forms/directives/condition.directive.mjs +2 -2
  66. package/esm2022/lib/desy-forms/interfaces/error-message-data.mjs +1 -1
  67. package/esm2022/lib/desy-forms/interfaces/fieldset-data.mjs +1 -1
  68. package/esm2022/lib/desy-forms/interfaces/item-checkbox-data.mjs +1 -1
  69. package/esm2022/lib/desy-forms/interfaces/item-date-input-data.mjs +1 -1
  70. package/esm2022/lib/desy-forms/interfaces/item-divider-date-input-data.mjs +1 -1
  71. package/esm2022/lib/desy-forms/interfaces/item-radio-data.mjs +1 -1
  72. package/esm2022/lib/desy-forms/interfaces/item-radio-with-template-data.mjs +1 -1
  73. package/esm2022/lib/desy-forms/interfaces/label-data.mjs +1 -1
  74. package/esm2022/lib/desy-forms/interfaces/legend-data.mjs +1 -1
  75. package/esm2022/lib/desy-forms/interfaces/select-item-data.mjs +1 -1
  76. package/esm2022/lib/desy-modals/components/dialog/dialog.component.mjs +11 -7
  77. package/esm2022/lib/desy-modals/components/modal/modal-button-loader-primary/modal-button-loader-primary.component.mjs +2 -2
  78. package/esm2022/lib/desy-modals/components/modal/modal-button-loader-secondary/modal-button-loader-secondary.component.mjs +2 -2
  79. package/esm2022/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.mjs +2 -2
  80. package/esm2022/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.mjs +2 -2
  81. package/esm2022/lib/desy-modals/components/modal/modal.component.mjs +18 -9
  82. package/esm2022/lib/desy-modals/desy-modals.module.mjs +6 -17
  83. package/esm2022/lib/desy-modals/interfaces/dialog-options.mjs +1 -1
  84. package/esm2022/lib/desy-modals/interfaces/modal-button-data.mjs +1 -1
  85. package/esm2022/lib/desy-modals/interfaces/modal-data.mjs +1 -1
  86. package/esm2022/lib/desy-modals/interfaces/modal-icon-data.mjs +1 -1
  87. package/esm2022/lib/desy-modals/interfaces/modal-options.mjs +1 -1
  88. package/esm2022/lib/desy-modals/services/dialog.service.mjs +6 -6
  89. package/esm2022/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.mjs +3 -3
  90. package/esm2022/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.mjs +3 -3
  91. package/esm2022/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.mjs +2 -2
  92. package/esm2022/lib/desy-nav/components/error-summary/error-summary.component.mjs +3 -3
  93. package/esm2022/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.mjs +2 -2
  94. package/esm2022/lib/desy-nav/components/footer/footer-meta/footer-meta.component.mjs +2 -2
  95. package/esm2022/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.mjs +2 -2
  96. package/esm2022/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.mjs +1 -1
  97. package/esm2022/lib/desy-nav/components/footer/footer.component.mjs +6 -4
  98. package/esm2022/lib/desy-nav/components/header/header-custom-navigation/header-custom-navigation.component.mjs +2 -2
  99. package/esm2022/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.mjs +5 -5
  100. package/esm2022/lib/desy-nav/components/header/header-mobileText/header-mobile-text.component.mjs +3 -3
  101. package/esm2022/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.mjs +2 -2
  102. package/esm2022/lib/desy-nav/components/header/header-navigation/header-navigation.component.mjs +3 -3
  103. package/esm2022/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.mjs +3 -3
  104. package/esm2022/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.mjs +2 -2
  105. package/esm2022/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.mjs +6 -6
  106. package/esm2022/lib/desy-nav/components/header/header-subnav/header-subnav.component.mjs +4 -4
  107. package/esm2022/lib/desy-nav/components/header/header.component.mjs +3 -3
  108. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-custom-navigation/header-custom-navigation.component.mjs +2 -2
  109. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-dropdown/header-advanced-dropdown.component.mjs +5 -5
  110. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-logo/header-advanced-logo.component.mjs +3 -3
  111. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-sub/header-advanced-sub.component.mjs +3 -3
  112. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-subtitle/header-advanced-subtitle.component.mjs +3 -3
  113. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.mjs +3 -3
  114. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-title/header-advanced-title.component.mjs +3 -3
  115. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-title-container/header-advanced-title-container.component.mjs +3 -3
  116. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced.component.mjs +3 -3
  117. package/esm2022/lib/desy-nav/components/header-mini/header-mini.component.mjs +3 -3
  118. package/esm2022/lib/desy-nav/components/links-list/links-list-icon-right/links-list-icon-right.component.mjs +3 -3
  119. package/esm2022/lib/desy-nav/components/links-list/links-list-item/links-list-item.component.mjs +3 -3
  120. package/esm2022/lib/desy-nav/components/links-list/links-list-item-sub/links-list-item-sub.component.mjs +1 -1
  121. package/esm2022/lib/desy-nav/components/links-list/links-list.component.mjs +3 -3
  122. package/esm2022/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.mjs +2 -2
  123. package/esm2022/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.mjs +6 -6
  124. package/esm2022/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.mjs +3 -3
  125. package/esm2022/lib/desy-nav/components/menu-navigation/components/menu-navigation-subitem/menu-navigation-subitem.component.mjs +3 -3
  126. package/esm2022/lib/desy-nav/components/menu-navigation/menu-navigation.component.mjs +21 -17
  127. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.mjs +1 -1
  128. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.mjs +1 -1
  129. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.mjs +1 -1
  130. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical.component.mjs +11 -15
  131. package/esm2022/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.mjs +2 -2
  132. package/esm2022/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.mjs +1 -1
  133. package/esm2022/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.mjs +2 -2
  134. package/esm2022/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.mjs +1 -1
  135. package/esm2022/lib/desy-nav/components/menubar/directives/menubaritem.directive.mjs +8 -6
  136. package/esm2022/lib/desy-nav/components/menubar/menubar.component.mjs +23 -19
  137. package/esm2022/lib/desy-nav/components/nav/nav-item/nav-item.component.mjs +1 -1
  138. package/esm2022/lib/desy-nav/components/nav/nav.component.mjs +5 -5
  139. package/esm2022/lib/desy-nav/components/notification/notification-item/notification-item.component.mjs +2 -2
  140. package/esm2022/lib/desy-nav/components/notification/notification.component.mjs +9 -17
  141. package/esm2022/lib/desy-nav/components/skip-link/skip-link.component.mjs +3 -3
  142. package/esm2022/lib/desy-nav/desy-nav.module.mjs +5 -16
  143. package/esm2022/lib/desy-nav/directives/dynamic-heading.directive.mjs +3 -3
  144. package/esm2022/lib/desy-nav/interfaces/breadcrumbs.data.mjs +1 -1
  145. package/esm2022/lib/desy-nav/interfaces/error-summary-data.mjs +1 -1
  146. package/esm2022/lib/desy-nav/interfaces/footer-data.mjs +1 -1
  147. package/esm2022/lib/desy-nav/interfaces/footer-logo.mjs +1 -1
  148. package/esm2022/lib/desy-nav/interfaces/header-advanced-logo.mjs +1 -1
  149. package/esm2022/lib/desy-nav/interfaces/header-dropdown-data.mjs +1 -1
  150. package/esm2022/lib/desy-nav/interfaces/header-mobile-text-data.mjs +1 -1
  151. package/esm2022/lib/desy-nav/interfaces/header-skiplink-data.mjs +1 -1
  152. package/esm2022/lib/desy-nav/interfaces/header-subnav-data.mjs +1 -1
  153. package/esm2022/lib/desy-nav/interfaces/index.mjs +1 -1
  154. package/esm2022/lib/desy-nav/interfaces/menu-horizontal-item-data.mjs +1 -1
  155. package/esm2022/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.mjs +1 -1
  156. package/esm2022/lib/desy-nav/interfaces/menu-navigation-item-sub-item.mjs +1 -1
  157. package/esm2022/lib/desy-nav/interfaces/menu-navigation.mjs +1 -1
  158. package/esm2022/lib/desy-nav/interfaces/menu-vertical-sub-data.mjs +1 -1
  159. package/esm2022/lib/desy-nav/interfaces/menubar-item-sub-item.mjs +1 -1
  160. package/esm2022/lib/desy-nav/interfaces/menubar-item.mjs +1 -1
  161. package/esm2022/lib/desy-nav/interfaces/nav-item-event.data.mjs +1 -1
  162. package/esm2022/lib/desy-nav/interfaces/nav-item.data.mjs +1 -1
  163. package/esm2022/lib/desy-nav/interfaces/notification-items-data.mjs +1 -1
  164. package/esm2022/lib/desy-nav/interfaces/notification-options.mjs +1 -1
  165. package/esm2022/lib/desy-pagination/components/pagination/pagination.component.mjs +17 -12
  166. package/esm2022/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.mjs +2 -2
  167. package/esm2022/lib/desy-pagination/components/pagination-listbox-label/pagination-listbox-label.component.mjs +2 -2
  168. package/esm2022/lib/desy-pagination/desy-pagination.module.mjs +6 -35
  169. package/esm2022/lib/desy-tables/components/table/components/table-caption.component.mjs +2 -2
  170. package/esm2022/lib/desy-tables/components/table/components/table-cell.component.mjs +2 -2
  171. package/esm2022/lib/desy-tables/components/table/components/table-footer.component.mjs +2 -2
  172. package/esm2022/lib/desy-tables/components/table/components/table-header.component.mjs +2 -2
  173. package/esm2022/lib/desy-tables/components/table/components/table-row.component.mjs +2 -2
  174. package/esm2022/lib/desy-tables/components/table/table.component.mjs +4 -4
  175. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-footer-cell.component.mjs +2 -2
  176. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-footer.component.mjs +2 -2
  177. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.mjs +10 -6
  178. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.mjs +2 -2
  179. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.mjs +2 -2
  180. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.mjs +2 -2
  181. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-select.component.mjs +3 -3
  182. package/esm2022/lib/desy-tables/components/table-advanced/table-advanced.component.mjs +225 -33
  183. package/esm2022/lib/desy-tables/desy-tables.module.mjs +5 -22
  184. package/esm2022/lib/desy-tables/directives/cell.directive.mjs +2 -2
  185. package/esm2022/lib/desy-tables/directives/focus-clicked-cell.directive.mjs +6 -3
  186. package/esm2022/lib/desy-tables/directives/row.directive.mjs +3 -3
  187. package/esm2022/lib/desy-tables/interfaces/cell-data.mjs +1 -1
  188. package/esm2022/lib/desy-tables/interfaces/head-cell-data.mjs +1 -1
  189. package/esm2022/lib/desy-tables/interfaces/recalculate-table-params.mjs +1 -1
  190. package/esm2022/lib/desy-tables/interfaces/row-data.mjs +1 -1
  191. package/esm2022/lib/desy-tables/interfaces/wrapper-data.mjs +1 -1
  192. package/esm2022/lib/desy-views/components/accordion/accordion-header/accordion-header.component.mjs +2 -2
  193. package/esm2022/lib/desy-views/components/accordion/accordion-item/accordion-item.component.mjs +1 -1
  194. package/esm2022/lib/desy-views/components/accordion/accordion.component.mjs +9 -9
  195. package/esm2022/lib/desy-views/components/accordion-history/accordion-history-item/accordion-history-item.component.mjs +1 -1
  196. package/esm2022/lib/desy-views/components/accordion-history/accordion-history.component.mjs +3 -3
  197. package/esm2022/lib/desy-views/components/accordion-history/accordion-item-hide-button/accordion-item-hide-button.component.mjs +2 -2
  198. package/esm2022/lib/desy-views/components/accordion-history/accordion-item-show-button/accordion-item-show-button.component.mjs +2 -2
  199. package/esm2022/lib/desy-views/components/alert/alert.component.mjs +4 -4
  200. package/esm2022/lib/desy-views/components/card/card-sectors/card-left.component.mjs +2 -2
  201. package/esm2022/lib/desy-views/components/card/card-sectors/card-right.component.mjs +2 -2
  202. package/esm2022/lib/desy-views/components/card/card-sectors/card-sub.component.mjs +2 -2
  203. package/esm2022/lib/desy-views/components/card/card-sectors/card-super.component.mjs +2 -2
  204. package/esm2022/lib/desy-views/components/card/card.component.mjs +4 -4
  205. package/esm2022/lib/desy-views/components/collapsible/collapsible.component.mjs +3 -3
  206. package/esm2022/lib/desy-views/components/description-list/definition/definition.component.mjs +2 -2
  207. package/esm2022/lib/desy-views/components/description-list/description-item/description-item.component.mjs +2 -2
  208. package/esm2022/lib/desy-views/components/description-list/description-list.component.mjs +4 -4
  209. package/esm2022/lib/desy-views/components/description-list/term/term.component.mjs +2 -2
  210. package/esm2022/lib/desy-views/components/details/details.component.mjs +3 -3
  211. package/esm2022/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.mjs +2 -2
  212. package/esm2022/lib/desy-views/components/item/item-content-right/item-content-right.component.mjs +2 -2
  213. package/esm2022/lib/desy-views/components/item/item-item/item-item.component.mjs +2 -2
  214. package/esm2022/lib/desy-views/components/item/item.component.mjs +6 -6
  215. package/esm2022/lib/desy-views/components/media-object/media-object-figure/media-object-figure.component.mjs +3 -3
  216. package/esm2022/lib/desy-views/components/media-object/media-object.component.mjs +5 -5
  217. package/esm2022/lib/desy-views/components/status/status.component.mjs +3 -3
  218. package/esm2022/lib/desy-views/components/status-item/status-item.component.mjs +7 -7
  219. package/esm2022/lib/desy-views/components/tabs/panel/panel.component.mjs +2 -2
  220. package/esm2022/lib/desy-views/components/tabs/tab-item/tab-item.component.mjs +2 -2
  221. package/esm2022/lib/desy-views/components/tabs/tabs.component.mjs +9 -8
  222. package/esm2022/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.mjs +1 -1
  223. package/esm2022/lib/desy-views/components/tooltip/tooltip.component.mjs +15 -9
  224. package/esm2022/lib/desy-views/desy-views.module.mjs +5 -19
  225. package/esm2022/lib/desy-views/interfaces/description-item.data.mjs +1 -1
  226. package/esm2022/lib/desy-views/interfaces/status-icon-data.mjs +1 -1
  227. package/esm2022/lib/desy-views/interfaces/status-item-title-data.mjs +1 -1
  228. package/esm2022/lib/desy-views/interfaces/tabs-items-data.mjs +1 -1
  229. package/esm2022/lib/desy-views/interfaces/tabs-panel-data.mjs +1 -1
  230. package/esm2022/lib/desy-views/interfaces/term-definition.data.mjs +1 -1
  231. package/esm2022/lib/desy-views/services/alert.service.mjs +5 -5
  232. package/esm2022/lib/shared/components/accessibility/accessibility-attributes.mjs +2 -2
  233. package/esm2022/lib/shared/components/accessibility/accessibility.component.mjs +2 -2
  234. package/esm2022/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.mjs +2 -2
  235. package/esm2022/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.mjs +2 -2
  236. package/esm2022/lib/shared/components/content-base/content-base.component.mjs +2 -2
  237. package/esm2022/lib/shared/components/index.mjs +1 -1
  238. package/esm2022/lib/shared/components/spinner/spinner.component.mjs +5 -5
  239. package/esm2022/lib/shared/components/text-or-html-required/text-or-html-required.component.mjs +2 -2
  240. package/esm2022/lib/shared/decorators/desy-content-child.decorator.mjs +7 -3
  241. package/esm2022/lib/shared/decorators/desy-on-input-change.decorator.mjs +2 -2
  242. package/esm2022/lib/shared/directives/accessibility-directive.mjs +7 -5
  243. package/esm2022/lib/shared/directives/attribute-change.directive.mjs +5 -5
  244. package/esm2022/lib/shared/directives/click-outside.directive.mjs +2 -2
  245. package/esm2022/lib/shared/directives/content-change.directive.mjs +3 -3
  246. package/esm2022/lib/shared/directives/custom-inner-content.directive.mjs +9 -7
  247. package/esm2022/lib/shared/directives/inner-content.directive.mjs +2 -2
  248. package/esm2022/lib/shared/interfaces/accessibility-data.mjs +1 -1
  249. package/esm2022/lib/shared/pipes/external-href.pipe.mjs +2 -2
  250. package/esm2022/lib/shared/pipes/inner-html.pipe.mjs +2 -2
  251. package/esm2022/lib/shared/pipes/make-html-list.pipe.mjs +3 -3
  252. package/esm2022/lib/shared/shared.module.mjs +4 -6
  253. package/esm2022/lib/shared/sharedExternal.module.mjs +3 -7
  254. package/esm2022/lib/shared/utils/focus-utils.mjs +2 -3
  255. package/esm2022/lib/shared/utils/search-utils.mjs +5 -5
  256. package/esm2022/lib/shared/utils/string-utils.mjs +9 -7
  257. package/esm2022/public-api.mjs +1 -1
  258. package/fesm2022/desy-angular.mjs +901 -754
  259. package/fesm2022/desy-angular.mjs.map +1 -1
  260. package/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.d.ts +3 -3
  261. package/lib/desy-forms/components/search-bar/search-bar.component.d.ts +2 -1
  262. package/lib/desy-forms/components/tree/interfaces/quit-tree-item-focus-options.d.ts +1 -1
  263. package/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.d.ts +3 -3
  264. package/lib/desy-forms/components/tree/tree-item/tree-item.component.d.ts +7 -7
  265. package/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.d.ts +1 -1
  266. package/lib/desy-forms/components/tree/tree-sub/tree-sub.component.d.ts +2 -2
  267. package/lib/desy-forms/components/tree/tree.component.d.ts +5 -5
  268. package/lib/desy-forms/interfaces/select-item-data.d.ts +1 -1
  269. package/lib/desy-modals/components/dialog/dialog.component.d.ts +1 -1
  270. package/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.d.ts +2 -2
  271. package/lib/desy-nav/components/header/header-subnav/header-subnav.component.d.ts +1 -1
  272. package/lib/desy-nav/components/header-advanced/header-advanced-dropdown/header-advanced-dropdown.component.d.ts +2 -2
  273. package/lib/desy-nav/interfaces/header-dropdown-data.d.ts +1 -1
  274. package/lib/desy-nav/interfaces/header-mobile-text-data.d.ts +1 -1
  275. package/lib/desy-nav/interfaces/header-subnav-data.d.ts +1 -1
  276. package/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.d.ts +2 -2
  277. package/lib/desy-nav/interfaces/nav-item-event.data.d.ts +1 -1
  278. package/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.d.ts +3 -3
  279. package/lib/desy-tables/components/table-advanced/components/table-advanced-select.component.d.ts +1 -1
  280. package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +19 -1
  281. package/lib/desy-tables/interfaces/head-cell-data.d.ts +1 -1
  282. package/lib/desy-views/components/alert/alert.component.d.ts +1 -1
  283. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
- import { Component, ContentChildren, EventEmitter, forwardRef, HostBinding, Input, Optional, Output, QueryList, TemplateRef, ViewChild } from '@angular/core';
2
+ import { Component, ContentChildren, EventEmitter, forwardRef, HostBinding, Input, Optional, Output, QueryList, TemplateRef, ViewChild, } from '@angular/core';
3
3
  import { ControlContainer, NG_VALUE_ACCESSOR } from '@angular/forms';
4
4
  import { LegendComponent } from '../fieldset/legend/legend.component';
5
5
  import { FormFieldComponent } from '../form-field/form-field.component';
@@ -33,7 +33,7 @@ export class InputGroupComponent extends FormFieldComponent {
33
33
  this.contentInit = false;
34
34
  }
35
35
  ngOnChanges() {
36
- this.cfgr = (this.hasErrorsMessage() || this.formGroupClasses === 'c-form-group--error');
36
+ this.cfgr = this.hasErrorsMessage() || this.formGroupClasses === 'c-form-group--error';
37
37
  }
38
38
  get ogFormGroup() {
39
39
  return this.controlContainer.control;
@@ -48,7 +48,7 @@ export class InputGroupComponent extends FormFieldComponent {
48
48
  if (value) {
49
49
  this.value = value;
50
50
  const items = this.getItems();
51
- items.forEach(item => {
51
+ items.forEach((item) => {
52
52
  const v = this.value[this.getItemName(item)];
53
53
  item.value = v ? v : null;
54
54
  });
@@ -66,7 +66,7 @@ export class InputGroupComponent extends FormFieldComponent {
66
66
  this.value = {};
67
67
  }
68
68
  const items = this.getItems();
69
- items.forEach(item => this.value[this.getItemName(item)] = item.value);
69
+ items.forEach((item) => (this.value[this.getItemName(item)] = item.value));
70
70
  this.onChange(this.value);
71
71
  }
72
72
  onInternalChange(item, itemValue) {
@@ -103,8 +103,12 @@ export class InputGroupComponent extends FormFieldComponent {
103
103
  return item.labelData ? item.labelData : { text: item.labelText };
104
104
  }
105
105
  hasFieldset() {
106
- return !!(this.hasFieldsetComponent() || this.hasLegendComponent() || this.legendRef || this.fieldsetData
107
- || (this.legendData && (this.legendData.text || this.legendData.html)) || this.legendText);
106
+ return !!(this.hasFieldsetComponent() ||
107
+ this.hasLegendComponent() ||
108
+ this.legendRef ||
109
+ this.fieldsetData ||
110
+ (this.legendData && (this.legendData.text || this.legendData.html)) ||
111
+ this.legendText);
108
112
  }
109
113
  hasFieldsetComponent() {
110
114
  return !!this.fieldsetComponent;
@@ -116,8 +120,7 @@ export class InputGroupComponent extends FormFieldComponent {
116
120
  return this.namePrefix ? this.namePrefix + '-' + item.name : item.name;
117
121
  }
118
122
  getItemSelectOptions(item) {
119
- return item instanceof InputGroupSelectComponent ?
120
- item.selectItemComponentList.toArray() : item.selectItems;
123
+ return item instanceof InputGroupSelectComponent ? item.selectItemComponentList.toArray() : item.selectItems;
121
124
  }
122
125
  getItemDividerTemplate(item) {
123
126
  return item.divider instanceof InputGroupDividerComponent ? item.divider.dividerContent : null;
@@ -149,9 +152,9 @@ export class InputGroupComponent extends FormFieldComponent {
149
152
  {
150
153
  provide: NG_VALUE_ACCESSOR,
151
154
  useExisting: forwardRef(() => InputGroupComponent),
152
- multi: true
153
- }
154
- ], queries: [{ propertyName: "itemsComponents", predicate: InputGroupItemComponent }, { propertyName: "fieldsetComponent", predicate: FieldsetComponent }, { propertyName: "legendComponent", predicate: LegendComponent }], viewQueries: [{ propertyName: "innerHtml", first: true, predicate: ["innerHtml"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- Divider no forma parte del formulario, por lo que es reutilizable en cualquier caso -->\n<ng-template #itemDivider\n let-item=\"item\">\n <div role=\"separator\"\n [ngClass]=\"item.divider.classes\">\n <ng-container\n *desyCustomInnerContent=\"{ template: getItemDividerTemplate(item), html: getItemDividerHtml(item) }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #innerHtml>\n <ng-content select=\"desy-hint\"></ng-content>\n <ng-container *ngTemplateOutlet=\"hintRef\"></ng-container>\n <desy-hint *ngIf=\"!hintRef && hintData\"\n [id]=\"getHintId()\"\n [text]=\"hintData.text\"\n [html]=\"hintData.html\"\n [classes]=\"hintData.classes\"\n [role]=\"hintData.role\"\n [ariaLabel]=\"hintData.ariaLabel\"\n [ariaDescribedBy]=\"hintData.ariaDescribedBy\"\n [ariaLabelledBy]=\"hintData.ariaLabelledBy\"\n [ariaHidden]=\"hintData.ariaHidden\"\n [ariaDisabled]=\"hintData.ariaDisabled\"\n [ariaControls]=\"hintData.ariaControls\"\n [ariaCurrent]=\"hintData.ariaCurrent\"\n [ariaLive]=\"hintData.ariaLive\"\n [ariaExpanded]=\"hintData.ariaExpanded\"\n [ariaErrorMessage]=\"hintData.ariaErrorMessage\"\n [ariaHasPopup]=\"hintData.ariaHasPopup\"\n [tabindex]=\"hintData.tabindex\"></desy-hint>\n <desy-hint *ngIf=\"!hintRef && !hintData && hintText\"\n [text]=\"hintText\"\n [id]=\"getHintId()\"></desy-hint>\n\n <ng-content select=\"desy-error-message\"></ng-content>\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\n <desy-error-message *ngIf=\"!errorMessageRef && errorMessageData\"\n [id]=\"getErrorId()\"\n [text]=\"errorMessageData.text\"\n [html]=\"errorMessageData.html\"\n [classes]=\"errorMessageData.classes\"\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\n [role]=\"errorMessageData.role\"\n [ariaLabel]=\"errorMessageData.ariaLabel\"\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\n [ariaHidden]=\"errorMessageData.ariaHidden\"\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\n [ariaControls]=\"errorMessageData.ariaControls\"\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\n [ariaLive]=\"errorMessageData.ariaLive\"\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\n <desy-error-message *ngIf=\"!errorMessageRef && !errorMessageData && errorMessageText\"\n [text]=\"errorMessageText\"\n [id]=\"getErrorId()\"></desy-error-message>\n\n <!-- Reactive forms -->\n <div *ngIf=\"controlContainer && !ngModelGroup\"\n [formGroup]=\"ogFormGroup\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\n <ng-template #itemSelect>\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [formControlName]=\"getItemName(item)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [formControlName]=\"getItemName(item)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-input>\n </ng-template>\n </ng-container>\n </div>\n\n <!-- Template-driven forms -->\n <desy-template-driven-wrapper *ngIf=\"controlContainer && ngModelGroup\">\n <div [ngModelGroup]=\"ngModelGroup\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\n <ng-template #itemSelect>\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value === undefined ? null : item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-input>\n </ng-template>\n </ng-container>\n </div>\n </desy-template-driven-wrapper>\n\n <!-- With ngModel-->\n <div *ngIf=\"!controlContainer\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\n <ng-template #itemSelect>\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [tabindex]=\"item.tabindex\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [tabindex]=\"item.tabindex\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-input>\n </ng-template>\n </ng-container>\n </div>\n</ng-template>\n\n\n\n<ng-container *ngIf=\"hasFieldsetComponent()\">\n <ng-content select=\"desy-fieldset\"></ng-content>\n</ng-container>\n<ng-container *ngIf=\"!hasFieldsetComponent()\">\n <desy-fieldset *ngIf=\"fieldsetData\"\n [classes]=\"fieldsetData.classes\"\n [id]=\"fieldsetData.id\"\n [legendData]=\"fieldsetData.legend\"\n [headingLevel]=\"fieldsetData.headingLevel\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[fieldsetData.describedBy, getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"\n [ariaLabel]=\"fieldsetData.ariaLabel\"\n [ariaLabelledBy]=\"fieldsetData.ariaLabelledBy\"\n [ariaHidden]=\"fieldsetData.ariaHidden\"\n [ariaDisabled]=\"fieldsetData.ariaDisabled\"\n [ariaControls]=\"fieldsetData.ariaControls\"\n [ariaCurrent]=\"fieldsetData.ariaCurrent\"\n [ariaLive]=\"fieldsetData.ariaLive\"\n [ariaExpanded]=\"fieldsetData.ariaExpanded\"\n [ariaHasPopup]=\"fieldsetData.ariaHasPopup\"\n [tabindex]=\"fieldsetData.tabindex\"></desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && hasLegendComponent()\"\n [legendRef]=\"legendTemplate\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\">\n <ng-template #legendTemplate>\n <ng-content select=\"desy-legend\"></ng-content>\n </ng-template>\n </desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && legendRef\"\n [legendRef]=\"legendRef\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"></desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && legendData\"\n [legendData]=\"{text: legendData.text, html: legendData.html, classes: legendData.classes, isPageHeading: legendData.isPageHeading}\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"></desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && !legendData && legendText\"\n [legendText]=\"legendText\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"></desy-fieldset>\n\n <ng-container *ngIf=\"!hasFieldset()\">\n <ng-container *ngTemplateOutlet=\"innerHtml\"></ng-container>\n </ng-container>\n</ng-container>", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgModelGroup, selector: "[ngModelGroup]", inputs: ["ngModelGroup"], exportAs: ["ngModelGroup"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "directive", type: i4.AccessibilityDirective, selector: "[desyAppAccessibility]", inputs: ["desyAppAccessibility"] }, { kind: "component", type: i5.TemplateDrivenWrapperComponent, selector: "desy-template-driven-wrapper" }, { kind: "component", type: i6.HintComponent, selector: "desy-hint", inputs: ["id", "classes", "html", "text"] }, { kind: "component", type: i7.ErrorMessageComponent, selector: "desy-error-message", inputs: ["id", "classes", "html", "text", "visuallyHiddenText"] }, { kind: "component", type: i8.FieldsetComponent, selector: "desy-fieldset", inputs: ["describedBy", "errorId", "legendRef", "legendData", "legendText", "classes", "caller", "id", "headingLevel"] }, { kind: "component", type: i9.InputComponent, selector: "desy-input", inputs: ["name", "type", "describedBy", "pattern", "inputmode", "placeholder", "formGroupClasses", "classes", "autocomplete", "maxlength", "errorId", "attributes"] }, { kind: "component", type: i10.SelectComponent, selector: "desy-select", inputs: ["name", "items", "describedBy", "formGroupClasses", "classes"] }, { kind: "pipe", type: i11.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
155
+ multi: true,
156
+ },
157
+ ], queries: [{ propertyName: "itemsComponents", predicate: InputGroupItemComponent }, { propertyName: "fieldsetComponent", predicate: FieldsetComponent }, { propertyName: "legendComponent", predicate: LegendComponent }], viewQueries: [{ propertyName: "innerHtml", first: true, predicate: ["innerHtml"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- Divider no forma parte del formulario, por lo que es reutilizable en cualquier caso -->\n<ng-template\n #itemDivider\n let-item=\"item\">\n <div\n role=\"separator\"\n [ngClass]=\"item.divider.classes\">\n <ng-container\n *desyCustomInnerContent=\"{\n template: getItemDividerTemplate(item),\n html: getItemDividerHtml(item),\n }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #innerHtml>\n <ng-content select=\"desy-hint\"></ng-content>\n <ng-container *ngTemplateOutlet=\"hintRef\"></ng-container>\n <desy-hint\n *ngIf=\"!hintRef && hintData\"\n [id]=\"getHintId()\"\n [text]=\"hintData.text\"\n [html]=\"hintData.html\"\n [classes]=\"hintData.classes\"\n [role]=\"hintData.role\"\n [ariaLabel]=\"hintData.ariaLabel\"\n [ariaDescribedBy]=\"hintData.ariaDescribedBy\"\n [ariaLabelledBy]=\"hintData.ariaLabelledBy\"\n [ariaHidden]=\"hintData.ariaHidden\"\n [ariaDisabled]=\"hintData.ariaDisabled\"\n [ariaControls]=\"hintData.ariaControls\"\n [ariaCurrent]=\"hintData.ariaCurrent\"\n [ariaLive]=\"hintData.ariaLive\"\n [ariaExpanded]=\"hintData.ariaExpanded\"\n [ariaErrorMessage]=\"hintData.ariaErrorMessage\"\n [ariaHasPopup]=\"hintData.ariaHasPopup\"\n [tabindex]=\"hintData.tabindex\"></desy-hint>\n <desy-hint\n *ngIf=\"!hintRef && !hintData && hintText\"\n [text]=\"hintText\"\n [id]=\"getHintId()\"></desy-hint>\n\n <ng-content select=\"desy-error-message\"></ng-content>\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\n <desy-error-message\n *ngIf=\"!errorMessageRef && errorMessageData\"\n [id]=\"getErrorId()\"\n [text]=\"errorMessageData.text\"\n [html]=\"errorMessageData.html\"\n [classes]=\"errorMessageData.classes\"\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\n [role]=\"errorMessageData.role\"\n [ariaLabel]=\"errorMessageData.ariaLabel\"\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\n [ariaHidden]=\"errorMessageData.ariaHidden\"\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\n [ariaControls]=\"errorMessageData.ariaControls\"\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\n [ariaLive]=\"errorMessageData.ariaLive\"\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\n <desy-error-message\n *ngIf=\"!errorMessageRef && !errorMessageData && errorMessageText\"\n [text]=\"errorMessageText\"\n [id]=\"getErrorId()\"></desy-error-message>\n\n <!-- Reactive forms -->\n <div\n *ngIf=\"controlContainer && !ngModelGroup\"\n [formGroup]=\"ogFormGroup\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container\n *ngTemplateOutlet=\"\n isSelectItem(item) ? itemSelect : item.divider ? itemDivider : itemInput;\n context: { item: item }\n \"></ng-container>\n <ng-template #itemSelect>\n <desy-select\n [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [formControlName]=\"getItemName(item)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\"></desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input\n [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [formControlName]=\"getItemName(item)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\"></desy-input>\n </ng-template>\n </ng-container>\n </div>\n\n <!-- Template-driven forms -->\n <desy-template-driven-wrapper *ngIf=\"controlContainer && ngModelGroup\">\n <div\n [ngModelGroup]=\"ngModelGroup\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container\n *ngTemplateOutlet=\"\n isSelectItem(item) ? itemSelect : item.divider ? itemDivider : itemInput;\n context: { item: item }\n \"></ng-container>\n <ng-template #itemSelect>\n <desy-select\n [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value === undefined ? null : item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\"></desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input\n [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\"></desy-input>\n </ng-template>\n </ng-container>\n </div>\n </desy-template-driven-wrapper>\n\n <!-- With ngModel-->\n <div\n *ngIf=\"!controlContainer\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container\n *ngTemplateOutlet=\"\n isSelectItem(item) ? itemSelect : item.divider ? itemDivider : itemInput;\n context: { item: item }\n \"></ng-container>\n <ng-template #itemSelect>\n <desy-select\n [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [tabindex]=\"item.tabindex\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\"></desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input\n [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [tabindex]=\"item.tabindex\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\"></desy-input>\n </ng-template>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"hasFieldsetComponent()\">\n <ng-content select=\"desy-fieldset\"></ng-content>\n</ng-container>\n<ng-container *ngIf=\"!hasFieldsetComponent()\">\n <desy-fieldset\n *ngIf=\"fieldsetData\"\n [classes]=\"fieldsetData.classes\"\n [id]=\"fieldsetData.id\"\n [legendData]=\"fieldsetData.legend\"\n [headingLevel]=\"fieldsetData.headingLevel\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[fieldsetData.describedBy, getHintId(), getErrorId()] | makeHtmlList: null\"\n role=\"group\"\n [ariaLabel]=\"fieldsetData.ariaLabel\"\n [ariaLabelledBy]=\"fieldsetData.ariaLabelledBy\"\n [ariaHidden]=\"fieldsetData.ariaHidden\"\n [ariaDisabled]=\"fieldsetData.ariaDisabled\"\n [ariaControls]=\"fieldsetData.ariaControls\"\n [ariaCurrent]=\"fieldsetData.ariaCurrent\"\n [ariaLive]=\"fieldsetData.ariaLive\"\n [ariaExpanded]=\"fieldsetData.ariaExpanded\"\n [ariaHasPopup]=\"fieldsetData.ariaHasPopup\"\n [tabindex]=\"fieldsetData.tabindex\"></desy-fieldset>\n <desy-fieldset\n *ngIf=\"!fieldsetData && hasLegendComponent()\"\n [legendRef]=\"legendTemplate\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[getHintId(), getErrorId()] | makeHtmlList: null\">\n <ng-template #legendTemplate>\n <ng-content select=\"desy-legend\"></ng-content>\n </ng-template>\n </desy-fieldset>\n <desy-fieldset\n *ngIf=\"!fieldsetData && !hasLegendComponent() && legendRef\"\n [legendRef]=\"legendRef\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[getHintId(), getErrorId()] | makeHtmlList: null\"\n role=\"group\"></desy-fieldset>\n <desy-fieldset\n *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && legendData\"\n [legendData]=\"{\n text: legendData.text,\n html: legendData.html,\n classes: legendData.classes,\n isPageHeading: legendData.isPageHeading,\n }\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[getHintId(), getErrorId()] | makeHtmlList: null\"\n role=\"group\"></desy-fieldset>\n <desy-fieldset\n *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && !legendData && legendText\"\n [legendText]=\"legendText\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[getHintId(), getErrorId()] | makeHtmlList: null\"\n role=\"group\"></desy-fieldset>\n\n <ng-container *ngIf=\"!hasFieldset()\">\n <ng-container *ngTemplateOutlet=\"innerHtml\"></ng-container>\n </ng-container>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgModelGroup, selector: "[ngModelGroup]", inputs: ["ngModelGroup"], exportAs: ["ngModelGroup"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "directive", type: i4.AccessibilityDirective, selector: "[desyAppAccessibility]", inputs: ["desyAppAccessibility"] }, { kind: "component", type: i5.TemplateDrivenWrapperComponent, selector: "desy-template-driven-wrapper" }, { kind: "component", type: i6.HintComponent, selector: "desy-hint", inputs: ["id", "classes", "html", "text"] }, { kind: "component", type: i7.ErrorMessageComponent, selector: "desy-error-message", inputs: ["id", "classes", "html", "text", "visuallyHiddenText"] }, { kind: "component", type: i8.FieldsetComponent, selector: "desy-fieldset", inputs: ["describedBy", "errorId", "legendRef", "legendData", "legendText", "classes", "caller", "id", "headingLevel"] }, { kind: "component", type: i9.InputComponent, selector: "desy-input", inputs: ["name", "type", "describedBy", "pattern", "inputmode", "placeholder", "formGroupClasses", "classes", "autocomplete", "maxlength", "errorId", "attributes"] }, { kind: "component", type: i10.SelectComponent, selector: "desy-select", inputs: ["name", "items", "describedBy", "formGroupClasses", "classes"] }, { kind: "pipe", type: i11.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
155
158
  }
156
159
  __decorate([
157
160
  DesyOnInputChange('onExternalChange'),
@@ -175,9 +178,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
175
178
  {
176
179
  provide: NG_VALUE_ACCESSOR,
177
180
  useExisting: forwardRef(() => InputGroupComponent),
178
- multi: true
179
- }
180
- ], template: "<!-- Divider no forma parte del formulario, por lo que es reutilizable en cualquier caso -->\n<ng-template #itemDivider\n let-item=\"item\">\n <div role=\"separator\"\n [ngClass]=\"item.divider.classes\">\n <ng-container\n *desyCustomInnerContent=\"{ template: getItemDividerTemplate(item), html: getItemDividerHtml(item) }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #innerHtml>\n <ng-content select=\"desy-hint\"></ng-content>\n <ng-container *ngTemplateOutlet=\"hintRef\"></ng-container>\n <desy-hint *ngIf=\"!hintRef && hintData\"\n [id]=\"getHintId()\"\n [text]=\"hintData.text\"\n [html]=\"hintData.html\"\n [classes]=\"hintData.classes\"\n [role]=\"hintData.role\"\n [ariaLabel]=\"hintData.ariaLabel\"\n [ariaDescribedBy]=\"hintData.ariaDescribedBy\"\n [ariaLabelledBy]=\"hintData.ariaLabelledBy\"\n [ariaHidden]=\"hintData.ariaHidden\"\n [ariaDisabled]=\"hintData.ariaDisabled\"\n [ariaControls]=\"hintData.ariaControls\"\n [ariaCurrent]=\"hintData.ariaCurrent\"\n [ariaLive]=\"hintData.ariaLive\"\n [ariaExpanded]=\"hintData.ariaExpanded\"\n [ariaErrorMessage]=\"hintData.ariaErrorMessage\"\n [ariaHasPopup]=\"hintData.ariaHasPopup\"\n [tabindex]=\"hintData.tabindex\"></desy-hint>\n <desy-hint *ngIf=\"!hintRef && !hintData && hintText\"\n [text]=\"hintText\"\n [id]=\"getHintId()\"></desy-hint>\n\n <ng-content select=\"desy-error-message\"></ng-content>\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\n <desy-error-message *ngIf=\"!errorMessageRef && errorMessageData\"\n [id]=\"getErrorId()\"\n [text]=\"errorMessageData.text\"\n [html]=\"errorMessageData.html\"\n [classes]=\"errorMessageData.classes\"\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\n [role]=\"errorMessageData.role\"\n [ariaLabel]=\"errorMessageData.ariaLabel\"\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\n [ariaHidden]=\"errorMessageData.ariaHidden\"\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\n [ariaControls]=\"errorMessageData.ariaControls\"\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\n [ariaLive]=\"errorMessageData.ariaLive\"\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\n <desy-error-message *ngIf=\"!errorMessageRef && !errorMessageData && errorMessageText\"\n [text]=\"errorMessageText\"\n [id]=\"getErrorId()\"></desy-error-message>\n\n <!-- Reactive forms -->\n <div *ngIf=\"controlContainer && !ngModelGroup\"\n [formGroup]=\"ogFormGroup\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\n <ng-template #itemSelect>\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [formControlName]=\"getItemName(item)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [formControlName]=\"getItemName(item)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-input>\n </ng-template>\n </ng-container>\n </div>\n\n <!-- Template-driven forms -->\n <desy-template-driven-wrapper *ngIf=\"controlContainer && ngModelGroup\">\n <div [ngModelGroup]=\"ngModelGroup\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\n <ng-template #itemSelect>\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value === undefined ? null : item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-input>\n </ng-template>\n </ng-container>\n </div>\n </desy-template-driven-wrapper>\n\n <!-- With ngModel-->\n <div *ngIf=\"!controlContainer\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\n <ng-template #itemSelect>\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [tabindex]=\"item.tabindex\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [tabindex]=\"item.tabindex\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-input>\n </ng-template>\n </ng-container>\n </div>\n</ng-template>\n\n\n\n<ng-container *ngIf=\"hasFieldsetComponent()\">\n <ng-content select=\"desy-fieldset\"></ng-content>\n</ng-container>\n<ng-container *ngIf=\"!hasFieldsetComponent()\">\n <desy-fieldset *ngIf=\"fieldsetData\"\n [classes]=\"fieldsetData.classes\"\n [id]=\"fieldsetData.id\"\n [legendData]=\"fieldsetData.legend\"\n [headingLevel]=\"fieldsetData.headingLevel\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[fieldsetData.describedBy, getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"\n [ariaLabel]=\"fieldsetData.ariaLabel\"\n [ariaLabelledBy]=\"fieldsetData.ariaLabelledBy\"\n [ariaHidden]=\"fieldsetData.ariaHidden\"\n [ariaDisabled]=\"fieldsetData.ariaDisabled\"\n [ariaControls]=\"fieldsetData.ariaControls\"\n [ariaCurrent]=\"fieldsetData.ariaCurrent\"\n [ariaLive]=\"fieldsetData.ariaLive\"\n [ariaExpanded]=\"fieldsetData.ariaExpanded\"\n [ariaHasPopup]=\"fieldsetData.ariaHasPopup\"\n [tabindex]=\"fieldsetData.tabindex\"></desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && hasLegendComponent()\"\n [legendRef]=\"legendTemplate\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\">\n <ng-template #legendTemplate>\n <ng-content select=\"desy-legend\"></ng-content>\n </ng-template>\n </desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && legendRef\"\n [legendRef]=\"legendRef\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"></desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && legendData\"\n [legendData]=\"{text: legendData.text, html: legendData.html, classes: legendData.classes, isPageHeading: legendData.isPageHeading}\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"></desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && !legendData && legendText\"\n [legendText]=\"legendText\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"></desy-fieldset>\n\n <ng-container *ngIf=\"!hasFieldset()\">\n <ng-container *ngTemplateOutlet=\"innerHtml\"></ng-container>\n </ng-container>\n</ng-container>" }]
181
+ multi: true,
182
+ },
183
+ ], template: "<!-- Divider no forma parte del formulario, por lo que es reutilizable en cualquier caso -->\n<ng-template\n #itemDivider\n let-item=\"item\">\n <div\n role=\"separator\"\n [ngClass]=\"item.divider.classes\">\n <ng-container\n *desyCustomInnerContent=\"{\n template: getItemDividerTemplate(item),\n html: getItemDividerHtml(item),\n }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #innerHtml>\n <ng-content select=\"desy-hint\"></ng-content>\n <ng-container *ngTemplateOutlet=\"hintRef\"></ng-container>\n <desy-hint\n *ngIf=\"!hintRef && hintData\"\n [id]=\"getHintId()\"\n [text]=\"hintData.text\"\n [html]=\"hintData.html\"\n [classes]=\"hintData.classes\"\n [role]=\"hintData.role\"\n [ariaLabel]=\"hintData.ariaLabel\"\n [ariaDescribedBy]=\"hintData.ariaDescribedBy\"\n [ariaLabelledBy]=\"hintData.ariaLabelledBy\"\n [ariaHidden]=\"hintData.ariaHidden\"\n [ariaDisabled]=\"hintData.ariaDisabled\"\n [ariaControls]=\"hintData.ariaControls\"\n [ariaCurrent]=\"hintData.ariaCurrent\"\n [ariaLive]=\"hintData.ariaLive\"\n [ariaExpanded]=\"hintData.ariaExpanded\"\n [ariaErrorMessage]=\"hintData.ariaErrorMessage\"\n [ariaHasPopup]=\"hintData.ariaHasPopup\"\n [tabindex]=\"hintData.tabindex\"></desy-hint>\n <desy-hint\n *ngIf=\"!hintRef && !hintData && hintText\"\n [text]=\"hintText\"\n [id]=\"getHintId()\"></desy-hint>\n\n <ng-content select=\"desy-error-message\"></ng-content>\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\n <desy-error-message\n *ngIf=\"!errorMessageRef && errorMessageData\"\n [id]=\"getErrorId()\"\n [text]=\"errorMessageData.text\"\n [html]=\"errorMessageData.html\"\n [classes]=\"errorMessageData.classes\"\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\n [role]=\"errorMessageData.role\"\n [ariaLabel]=\"errorMessageData.ariaLabel\"\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\n [ariaHidden]=\"errorMessageData.ariaHidden\"\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\n [ariaControls]=\"errorMessageData.ariaControls\"\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\n [ariaLive]=\"errorMessageData.ariaLive\"\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\n <desy-error-message\n *ngIf=\"!errorMessageRef && !errorMessageData && errorMessageText\"\n [text]=\"errorMessageText\"\n [id]=\"getErrorId()\"></desy-error-message>\n\n <!-- Reactive forms -->\n <div\n *ngIf=\"controlContainer && !ngModelGroup\"\n [formGroup]=\"ogFormGroup\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container\n *ngTemplateOutlet=\"\n isSelectItem(item) ? itemSelect : item.divider ? itemDivider : itemInput;\n context: { item: item }\n \"></ng-container>\n <ng-template #itemSelect>\n <desy-select\n [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [formControlName]=\"getItemName(item)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\"></desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input\n [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [formControlName]=\"getItemName(item)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\"></desy-input>\n </ng-template>\n </ng-container>\n </div>\n\n <!-- Template-driven forms -->\n <desy-template-driven-wrapper *ngIf=\"controlContainer && ngModelGroup\">\n <div\n [ngModelGroup]=\"ngModelGroup\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container\n *ngTemplateOutlet=\"\n isSelectItem(item) ? itemSelect : item.divider ? itemDivider : itemInput;\n context: { item: item }\n \"></ng-container>\n <ng-template #itemSelect>\n <desy-select\n [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value === undefined ? null : item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\"></desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input\n [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\"></desy-input>\n </ng-template>\n </ng-container>\n </div>\n </desy-template-driven-wrapper>\n\n <!-- With ngModel-->\n <div\n *ngIf=\"!controlContainer\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container\n *ngTemplateOutlet=\"\n isSelectItem(item) ? itemSelect : item.divider ? itemDivider : itemInput;\n context: { item: item }\n \"></ng-container>\n <ng-template #itemSelect>\n <desy-select\n [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [tabindex]=\"item.tabindex\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\"></desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input\n [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [tabindex]=\"item.tabindex\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\"></desy-input>\n </ng-template>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"hasFieldsetComponent()\">\n <ng-content select=\"desy-fieldset\"></ng-content>\n</ng-container>\n<ng-container *ngIf=\"!hasFieldsetComponent()\">\n <desy-fieldset\n *ngIf=\"fieldsetData\"\n [classes]=\"fieldsetData.classes\"\n [id]=\"fieldsetData.id\"\n [legendData]=\"fieldsetData.legend\"\n [headingLevel]=\"fieldsetData.headingLevel\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[fieldsetData.describedBy, getHintId(), getErrorId()] | makeHtmlList: null\"\n role=\"group\"\n [ariaLabel]=\"fieldsetData.ariaLabel\"\n [ariaLabelledBy]=\"fieldsetData.ariaLabelledBy\"\n [ariaHidden]=\"fieldsetData.ariaHidden\"\n [ariaDisabled]=\"fieldsetData.ariaDisabled\"\n [ariaControls]=\"fieldsetData.ariaControls\"\n [ariaCurrent]=\"fieldsetData.ariaCurrent\"\n [ariaLive]=\"fieldsetData.ariaLive\"\n [ariaExpanded]=\"fieldsetData.ariaExpanded\"\n [ariaHasPopup]=\"fieldsetData.ariaHasPopup\"\n [tabindex]=\"fieldsetData.tabindex\"></desy-fieldset>\n <desy-fieldset\n *ngIf=\"!fieldsetData && hasLegendComponent()\"\n [legendRef]=\"legendTemplate\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[getHintId(), getErrorId()] | makeHtmlList: null\">\n <ng-template #legendTemplate>\n <ng-content select=\"desy-legend\"></ng-content>\n </ng-template>\n </desy-fieldset>\n <desy-fieldset\n *ngIf=\"!fieldsetData && !hasLegendComponent() && legendRef\"\n [legendRef]=\"legendRef\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[getHintId(), getErrorId()] | makeHtmlList: null\"\n role=\"group\"></desy-fieldset>\n <desy-fieldset\n *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && legendData\"\n [legendData]=\"{\n text: legendData.text,\n html: legendData.html,\n classes: legendData.classes,\n isPageHeading: legendData.isPageHeading,\n }\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[getHintId(), getErrorId()] | makeHtmlList: null\"\n role=\"group\"></desy-fieldset>\n <desy-fieldset\n *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && !legendData && legendText\"\n [legendText]=\"legendText\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[getHintId(), getErrorId()] | makeHtmlList: null\"\n role=\"group\"></desy-fieldset>\n\n <ng-container *ngIf=\"!hasFieldset()\">\n <ng-container *ngTemplateOutlet=\"innerHtml\"></ng-container>\n </ng-container>\n</ng-container>\n" }]
181
184
  }], ctorParameters: () => [{ type: i1.ControlContainer, decorators: [{
182
185
  type: Optional
183
186
  }] }], propDecorators: { ngModelGroup: [{
@@ -226,4 +229,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
226
229
  type: ViewChild,
227
230
  args: ['innerHtml', { static: true }]
228
231
  }] } });
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1mb3Jtcy9jb21wb25lbnRzL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktZm9ybXMvY29tcG9uZW50cy9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBQUUsWUFBWSxFQUM3QixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFDTCxRQUFRLEVBQUUsTUFBTSxFQUNoQixTQUFTLEVBQ1QsV0FBVyxFQUFFLFNBQVMsRUFFdkIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFhLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLCtDQUErQyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQzVGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBQ3pGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ3pGLE9BQU8sRUFBQyx5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O3lDQTNDWixZQUFZO3NCQUFwQixLQUFLO2dCQUdHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUdFLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUc2QixHQUFHO3NCQUFyQyxXQUFXO3VCQUFDLG9CQUFvQjtnQkFDUyxJQUFJO3NCQUE3QyxXQUFXO3VCQUFDLDJCQUEyQjtnQkFDVCxnQkFBZ0I7c0JBQTlDLEtBQUs7O3NCQUFJLFdBQVc7dUJBQUMsT0FBTztnQkFFcEIsWUFBWTtzQkFBcEIsS0FBSztnQkFDVyxFQUFFO3NCQUFsQixLQUFLO2dCQVNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRW9DLGVBQWU7c0JBQXhELGVBQWU7dUJBQUMsdUJBQXVCO2dCQUdKLGlCQUFpQjtzQkFBcEQsZUFBZTt1QkFBQyxpQkFBaUI7Z0JBR0EsZUFBZTtzQkFBaEQsZUFBZTt1QkFBQyxlQUFlO2dCQUVVLFNBQVM7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0NoZWNrZWQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT3B0aW9uYWwsIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLFxuICBPbkNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0ZpZWxkc2V0RGF0YSwgTGVnZW5kRGF0YSwgSXRlbUlucHV0R3JvdXBEYXRhLCBMYWJlbERhdGEsIFNlbGVjdEl0ZW1EYXRhfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIEZvcm1Hcm91cCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMZWdlbmRDb21wb25lbnQgfSBmcm9tICcuLi9maWVsZHNldC9sZWdlbmQvbGVnZW5kLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7SW5wdXRHcm91cEl0ZW1Db21wb25lbnR9IGZyb20gJy4vaW5wdXQtZ3JvdXAtaXRlbS9pbnB1dC1ncm91cC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQge0Rlc3lPbklucHV0Q2hhbmdlfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGVjb3JhdG9ycy9kZXN5LW9uLWlucHV0LWNoYW5nZS5kZWNvcmF0b3InO1xuaW1wb3J0IHtEZXN5Q29udGVudENoaWxkfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGVjb3JhdG9ycy9kZXN5LWNvbnRlbnQtY2hpbGQuZGVjb3JhdG9yJztcbmltcG9ydCB7RmllbGRzZXRDb21wb25lbnR9IGZyb20gJy4uL2ZpZWxkc2V0L2ZpZWxkc2V0LmNvbXBvbmVudCc7XG5pbXBvcnQge01ha2VIdG1sTGlzdFBpcGV9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9waXBlcy9tYWtlLWh0bWwtbGlzdC5waXBlJztcbmltcG9ydCB7SW5wdXRHcm91cElucHV0Q29tcG9uZW50fSBmcm9tICcuL2lucHV0LWdyb3VwLWlucHV0L2lucHV0LWdyb3VwLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQge0lucHV0R3JvdXBTZWxlY3RDb21wb25lbnR9IGZyb20gJy4vaW5wdXQtZ3JvdXAtc2VsZWN0L2lucHV0LWdyb3VwLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHtJbnB1dEdyb3VwRGl2aWRlckNvbXBvbmVudH0gZnJvbSAnLi9pbnB1dC1ncm91cC1kaXZpZGVyL2lucHV0LWdyb3VwLWRpdmlkZXIuY29tcG9uZW50JztcbmltcG9ydCB7U3RyaW5nVXRpbHN9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9zdHJpbmctdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZXN5LWlucHV0LWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dEdyb3VwQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIElucHV0R3JvdXBDb21wb25lbnQgZXh0ZW5kcyBGb3JtRmllbGRDb21wb25lbnQ8YW55PiBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uQ2hhbmdlcyB7XG5cbiAgQElucHV0KCkgbmdNb2RlbEdyb3VwOiBzdHJpbmc7XG5cbiAgQERlc3lPbklucHV0Q2hhbmdlKCdvbkV4dGVybmFsQ2hhbmdlJylcbiAgQElucHV0KCkgaXRlbXM6IEl0ZW1JbnB1dEdyb3VwRGF0YVtdO1xuICBAT3V0cHV0KCkgaXRlbXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJdGVtSW5wdXRHcm91cERhdGFbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEl0ZW1JbnB1dEdyb3VwRGF0YVtdPigpO1xuXG4gIEBEZXN5T25JbnB1dENoYW5nZSgnb25FeHRlcm5hbENoYW5nZScpXG4gIEBJbnB1dCgpIG5hbWVQcmVmaXg6IHN0cmluZztcbiAgQElucHV0KCkgY2xhc3Nlczogc3RyaW5nO1xuXG4gIC8vICBmb3JtIGdyb3VwIGNsYXNzIC0gYXNpZ25hciBjbGFzZXMgYSBsYSBldGlxdWV0YSBkZXN5LWlucHV0LWdyb3VwXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYy1mb3JtLWdyb3VwJykgY2ZnID0gdHJ1ZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jLWZvcm0tZ3JvdXAtLWVycm9yJykgY2ZncjogYm9vbGVhbjtcbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGZvcm1Hcm91cENsYXNzZXM6IGFueTtcblxuICBASW5wdXQoKSBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgQElucHV0KCkgZGVjbGFyZSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBmaWVsZHNldCwgZGlmZXJlbnRlcyBmb3JtYXMgZGUgaW1wbGVtZW50YXIsIGVudW1lcmFkYXMgcG9yIHByaW9yaWRhZFxuICAgKiAxKSBpbmNsdWlyIG9iamV0byBGaWVsZHNldERhdGEgKGludGVyZmF6IGV4cHVlc3RhKVxuICAgKiAyKSBpbmNsdWlyIHRlbXBsYXRlIGxlZ2VuZFxuICAgKiAzKSBpbmNsdWlyIGxlZ2VuZERhdGEgLSBpbmNsdWlyIHVuIGZpZWxkc2V0IGNvbiB1bmEgbGVnZW5kYSBjb24gbG9zIHBhcmFtZXRyb3MgcGFzYWRvcyAgKGludGVyZmF6IGV4cHVlc3RhKVxuICAgKiA0KSBpbmNsdWlyIGxlZ2VuZFRleHQgLSBpbmNsdWlyIHVuIGZpZWxkc2V0IGNvbiB1biB0ZXh0byBlbiBsYSBsZWdlbmRhXG4gICAqL1xuICBASW5wdXQoKSBmaWVsZHNldERhdGE6IEZpZWxkc2V0RGF0YTtcbiAgQElucHV0KCkgbGVnZW5kUmVmOiBUZW1wbGF0ZVJlZjxMZWdlbmRDb21wb25lbnQ+O1xuICBASW5wdXQoKSBsZWdlbmREYXRhOiBMZWdlbmREYXRhO1xuICBASW5wdXQoKSBsZWdlbmRUZXh0OiBzdHJpbmc7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihJbnB1dEdyb3VwSXRlbUNvbXBvbmVudCkgaXRlbXNDb21wb25lbnRzOiBRdWVyeUxpc3Q8SW5wdXRHcm91cEl0ZW1Db21wb25lbnQ+O1xuXG4gIEBEZXN5Q29udGVudENoaWxkKHsgb25TZXRDYWxsYmFja05hbWU6ICdvdmVycmlkZUZpZWxkc2V0UGFyYW1zJ30pXG4gIEBDb250ZW50Q2hpbGRyZW4oRmllbGRzZXRDb21wb25lbnQpIGZpZWxkc2V0Q29tcG9uZW50OiBGaWVsZHNldENvbXBvbmVudDtcblxuICBARGVzeUNvbnRlbnRDaGlsZCgpXG4gIEBDb250ZW50Q2hpbGRyZW4oTGVnZW5kQ29tcG9uZW50KSBsZWdlbmRDb21wb25lbnQ6IExlZ2VuZENvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdpbm5lckh0bWwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbm5lckh0bWw6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHJpdmF0ZSBjb250ZW50SW5pdCA9IGZhbHNlO1xuICAvL3B1YmxpYyBvZ0Zvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHB1YmxpYyBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuY2ZnciA9ICh0aGlzLmhhc0Vycm9yc01lc3NhZ2UoKSB8fCB0aGlzLmZvcm1Hcm91cENsYXNzZXMgPT09ICdjLWZvcm0tZ3JvdXAtLWVycm9yJyk7XG4gIH1cblxuICBnZXQgb2dGb3JtR3JvdXAoKTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sQ29udGFpbmVyLmNvbnRyb2wgYXMgRm9ybUdyb3VwO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY29udGVudEluaXQgPSB0cnVlO1xuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5nZXRJdGVtcygpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0SXRlbXMoKTtcbiAgICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLnZhbHVlW3RoaXMuZ2V0SXRlbU5hbWUoaXRlbSldO1xuICAgICAgICBpdGVtLnZhbHVlID0gdiA/IHYgOiBudWxsO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLml0ZW1zKSB7XG4gICAgICAgIHRoaXMuaXRlbXNDaGFuZ2UuZW1pdCh0aGlzLml0ZW1zKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICBvbkV4dGVybmFsQ2hhbmdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250ZW50SW5pdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IHt9O1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5nZXRJdGVtcygpO1xuICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiB0aGlzLnZhbHVlW3RoaXMuZ2V0SXRlbU5hbWUoaXRlbSldID0gaXRlbS52YWx1ZSk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIG9uSW50ZXJuYWxDaGFuZ2UoaXRlbTogSXRlbUlucHV0R3JvdXBEYXRhLCBpdGVtVmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW1OYW1lID0gdGhpcy5nZXRJdGVtTmFtZShpdGVtKTtcbiAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB7fTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy52YWx1ZVtpdGVtTmFtZV0gIT09IGl0ZW1WYWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZVtpdGVtTmFtZV0gPSBpdGVtVmFsdWU7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuXG4gICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIElucHV0R3JvdXBJbnB1dENvbXBvbmVudCB8fCBpdGVtIGluc3RhbmNlb2YgSW5wdXRHcm91cFNlbGVjdENvbXBvbmVudCkge1xuICAgICAgICBpdGVtLnZhbHVlQ2hhbmdlLmVtaXQoaXRlbVZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaXRlbXMpIHtcbiAgICAgICAgaXRlbS52YWx1ZSA9IGl0ZW1WYWx1ZTtcbiAgICAgICAgdGhpcy5pdGVtc0NoYW5nZS5lbWl0KHRoaXMuaXRlbXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlRmllbGRzZXRQYXJhbXMoZmllbGRzZXQ6IEZpZWxkc2V0Q29tcG9uZW50KTogdm9pZCB7XG4gICAgZmllbGRzZXQuY2FsbGVyID0gdGhpcy5pbm5lckh0bWw7XG4gICAgZmllbGRzZXQuZXJyb3JJZCA9IHRoaXMuZ2V0RXJyb3JJZCgpO1xuICAgIGZpZWxkc2V0LmRlc2NyaWJlZEJ5ID0gbmV3IE1ha2VIdG1sTGlzdFBpcGUoKS50cmFuc2Zvcm0oW3RoaXMuZ2V0SGludElkKCksIHRoaXMuZ2V0RXJyb3JJZCgpXSwgbnVsbCk7XG4gICAgZmllbGRzZXQucm9sZSA9ICdncm91cCc7XG4gICAgZmllbGRzZXQuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLypcbiAgICogTcOpdG9kb3MgcGFyYSBwcm9wb3JjaW9uYXIgZGF0b3NcbiAgICovXG4gIGdldEl0ZW1zKCk6IEl0ZW1JbnB1dEdyb3VwRGF0YVtdIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtc0NvbXBvbmVudHMgJiYgdGhpcy5pdGVtc0NvbXBvbmVudHMubGVuZ3RoID8gdGhpcy5pdGVtc0NvbXBvbmVudHMudG9BcnJheSgpIDogdGhpcy5pdGVtcztcbiAgfVxuXG4gIGdldEl0ZW1MYWJlbFJlZihpdGVtOiBJdGVtSW5wdXRHcm91cERhdGEpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICByZXR1cm4gaXRlbSBpbnN0YW5jZW9mIElucHV0R3JvdXBJbnB1dENvbXBvbmVudCB8fCBpdGVtIGluc3RhbmNlb2YgSW5wdXRHcm91cFNlbGVjdENvbXBvbmVudCA/IGl0ZW0ubGFiZWxSZWYgOiBudWxsO1xuICB9XG5cbiAgZ2V0SXRlbUxhYmVsRGF0YShpdGVtOiBJdGVtSW5wdXRHcm91cERhdGEpOiBMYWJlbERhdGEge1xuICAgIHJldHVybiBpdGVtLmxhYmVsRGF0YSA/IGl0ZW0ubGFiZWxEYXRhIDogeyB0ZXh0OiBpdGVtLmxhYmVsVGV4dCB9O1xuICB9XG5cbiAgaGFzRmllbGRzZXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMuaGFzRmllbGRzZXRDb21wb25lbnQoKSB8fCB0aGlzLmhhc0xlZ2VuZENvbXBvbmVudCgpIHx8IHRoaXMubGVnZW5kUmVmIHx8IHRoaXMuZmllbGRzZXREYXRhXG4gICAgICB8fCAodGhpcy5sZWdlbmREYXRhICYmICh0aGlzLmxlZ2VuZERhdGEudGV4dCB8fCB0aGlzLmxlZ2VuZERhdGEuaHRtbCkpIHx8IHRoaXMubGVnZW5kVGV4dCk7XG4gIH1cblxuICBoYXNGaWVsZHNldENvbXBvbmVudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmZpZWxkc2V0Q29tcG9uZW50O1xuICB9XG5cbiAgaGFzTGVnZW5kQ29tcG9uZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMubGVnZW5kQ29tcG9uZW50O1xuICB9XG5cbiAgZ2V0SXRlbU5hbWUoaXRlbTogSXRlbUlucHV0R3JvdXBEYXRhKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lUHJlZml4ID8gdGhpcy5uYW1lUHJlZml4ICsgJy0nICsgaXRlbS5uYW1lIDogaXRlbS5uYW1lO1xuICB9XG5cbiAgZ2V0SXRlbVNlbGVjdE9wdGlvbnMoaXRlbTogSXRlbUlucHV0R3JvdXBEYXRhKTogU2VsZWN0SXRlbURhdGFbXSB7XG4gICAgcmV0dXJuIGl0ZW0gaW5zdGFuY2VvZiBJbnB1dEdyb3VwU2VsZWN0Q29tcG9uZW50ID9cbiAgICAgIGl0ZW0uc2VsZWN0SXRlbUNvbXBvbmVudExpc3QudG9BcnJheSgpIDogaXRlbS5zZWxlY3RJdGVtcztcbiAgfVxuXG4gIGdldEl0ZW1EaXZpZGVyVGVtcGxhdGUoaXRlbTogSXRlbUlucHV0R3JvdXBEYXRhKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgcmV0dXJuIGl0ZW0uZGl2aWRlciBpbnN0YW5jZW9mIElucHV0R3JvdXBEaXZpZGVyQ29tcG9uZW50ID8gaXRlbS5kaXZpZGVyLmRpdmlkZXJDb250ZW50IDogbnVsbDtcbiAgfVxuXG4gIGdldEl0ZW1EaXZpZGVySHRtbChpdGVtOiBJdGVtSW5wdXRHcm91cERhdGEpOiBzdHJpbmcge1xuICAgIHJldHVybiBpdGVtLmRpdmlkZXIuaHRtbCA/IGl0ZW0uZGl2aWRlci5odG1sIDogYDxwPiR7IFN0cmluZ1V0aWxzLmVzY2FwZUh0bWwoaXRlbS5kaXZpZGVyLnRleHQpIH08L3A+YDtcbiAgfVxuXG4gIGlzU2VsZWN0SXRlbShpdGVtOiBJdGVtSW5wdXRHcm91cERhdGEpOiBib29sZWFuIHtcbiAgICBsZXQgaGFzU2VsZWN0SXRlbXM7XG4gICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBJbnB1dEdyb3VwU2VsZWN0Q29tcG9uZW50KSB7XG4gICAgICBoYXNTZWxlY3RJdGVtcyA9IGl0ZW0uc2VsZWN0SXRlbUNvbXBvbmVudExpc3QgJiYgaXRlbS5zZWxlY3RJdGVtQ29tcG9uZW50TGlzdC5sZW5ndGggPiAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBoYXNTZWxlY3RJdGVtcyA9IGl0ZW0uc2VsZWN0SXRlbXM7XG4gICAgfVxuICAgIHJldHVybiBpdGVtLmlzU2VsZWN0ICYmIGhhc1NlbGVjdEl0ZW1zO1xuICB9XG5cbiAgaGFzSXRlbUxhYmVsKGl0ZW06IEl0ZW1JbnB1dEdyb3VwRGF0YSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISgoaXRlbS5sYWJlbERhdGEgJiYgKGl0ZW0ubGFiZWxEYXRhLnRleHQgfHwgaXRlbS5sYWJlbERhdGEuaHRtbCkpIHx8IGl0ZW0ubGFiZWxUZXh0KTtcbiAgfVxuXG4gIGdldEl0ZW1DbGFzc2VzKGl0ZW06IEl0ZW1JbnB1dEdyb3VwRGF0YSk6IHN0cmluZ3tcbiAgICByZXR1cm4gbmV3IE1ha2VIdG1sTGlzdFBpcGUoKS50cmFuc2Zvcm0oWydtYi0wJywgaXRlbS5jbGFzc2VzLCB0aGlzLmhhc0Vycm9yc01lc3NhZ2UoKSA/ICdib3JkZXItYWxlcnQtYmFzZSByaW5nLTIgcmluZy1hbGVydC1iYXNlJyA6IG51bGxdLCBudWxsKTtcbiAgfVxuXG4gIGdldEl0ZW1BcmlhRGVzY3JpYmVkQnkoaXRlbTogSXRlbUlucHV0R3JvdXBEYXRhKTogc3RyaW5ne1xuICAgIHJldHVybiBuZXcgTWFrZUh0bWxMaXN0UGlwZSgpLnRyYW5zZm9ybShbaXRlbS5hcmlhRGVzY3JpYmVkQnksIHRoaXMuZ2V0RXJyb3JJZCgpLCB0aGlzLmdldEhpbnRJZCgpXSwgbnVsbCk7XG4gIH1cblxufVxuIiwiPCEtLSBEaXZpZGVyIG5vIGZvcm1hIHBhcnRlIGRlbCBmb3JtdWxhcmlvLCBwb3IgbG8gcXVlIGVzIHJldXRpbGl6YWJsZSBlbiBjdWFscXVpZXIgY2FzbyAtLT5cbjxuZy10ZW1wbGF0ZSAjaXRlbURpdmlkZXJcbiAgICAgICAgICAgICBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgPGRpdiByb2xlPVwic2VwYXJhdG9yXCJcbiAgICAgICBbbmdDbGFzc109XCJpdGVtLmRpdmlkZXIuY2xhc3Nlc1wiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyB0ZW1wbGF0ZTogZ2V0SXRlbURpdmlkZXJUZW1wbGF0ZShpdGVtKSwgaHRtbDogZ2V0SXRlbURpdmlkZXJIdG1sKGl0ZW0pIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lubmVySHRtbD5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGVzeS1oaW50XCI+PC9uZy1jb250ZW50PlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGludFJlZlwiPjwvbmctY29udGFpbmVyPlxuICA8ZGVzeS1oaW50ICpuZ0lmPVwiIWhpbnRSZWYgJiYgaGludERhdGFcIlxuICAgICAgICAgICAgIFtpZF09XCJnZXRIaW50SWQoKVwiXG4gICAgICAgICAgICAgW3RleHRdPVwiaGludERhdGEudGV4dFwiXG4gICAgICAgICAgICAgW2h0bWxdPVwiaGludERhdGEuaHRtbFwiXG4gICAgICAgICAgICAgW2NsYXNzZXNdPVwiaGludERhdGEuY2xhc3Nlc1wiXG4gICAgICAgICAgICAgW3JvbGVdPVwiaGludERhdGEucm9sZVwiXG4gICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJoaW50RGF0YS5hcmlhTGFiZWxcIlxuICAgICAgICAgICAgIFthcmlhRGVzY3JpYmVkQnldPVwiaGludERhdGEuYXJpYURlc2NyaWJlZEJ5XCJcbiAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiaGludERhdGEuYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgIFthcmlhSGlkZGVuXT1cImhpbnREYXRhLmFyaWFIaWRkZW5cIlxuICAgICAgICAgICAgIFthcmlhRGlzYWJsZWRdPVwiaGludERhdGEuYXJpYURpc2FibGVkXCJcbiAgICAgICAgICAgICBbYXJpYUNvbnRyb2xzXT1cImhpbnREYXRhLmFyaWFDb250cm9sc1wiXG4gICAgICAgICAgICAgW2FyaWFDdXJyZW50XT1cImhpbnREYXRhLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgICBbYXJpYUxpdmVdPVwiaGludERhdGEuYXJpYUxpdmVcIlxuICAgICAgICAgICAgIFthcmlhRXhwYW5kZWRdPVwiaGludERhdGEuYXJpYUV4cGFuZGVkXCJcbiAgICAgICAgICAgICBbYXJpYUVycm9yTWVzc2FnZV09XCJoaW50RGF0YS5hcmlhRXJyb3JNZXNzYWdlXCJcbiAgICAgICAgICAgICBbYXJpYUhhc1BvcHVwXT1cImhpbnREYXRhLmFyaWFIYXNQb3B1cFwiXG4gICAgICAgICAgICAgW3RhYmluZGV4XT1cImhpbnREYXRhLnRhYmluZGV4XCI+PC9kZXN5LWhpbnQ+XG4gIDxkZXN5LWhpbnQgKm5nSWY9XCIhaGludFJlZiAmJiAhaGludERhdGEgJiYgaGludFRleHRcIlxuICAgICAgICAgICAgIFt0ZXh0XT1cImhpbnRUZXh0XCJcbiAgICAgICAgICAgICBbaWRdPVwiZ2V0SGludElkKClcIj48L2Rlc3ktaGludD5cblxuICA8bmctY29udGVudCBzZWxlY3Q9XCJkZXN5LWVycm9yLW1lc3NhZ2VcIj48L25nLWNvbnRlbnQ+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlcnJvck1lc3NhZ2VSZWZcIj48L25nLWNvbnRhaW5lcj5cbiAgPGRlc3ktZXJyb3ItbWVzc2FnZSAqbmdJZj1cIiFlcnJvck1lc3NhZ2VSZWYgJiYgZXJyb3JNZXNzYWdlRGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImdldEVycm9ySWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiZXJyb3JNZXNzYWdlRGF0YS50ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbaHRtbF09XCJlcnJvck1lc3NhZ2VEYXRhLmh0bWxcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc2VzXT1cImVycm9yTWVzc2FnZURhdGEuY2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3Zpc3VhbGx5SGlkZGVuVGV4dF09XCJlcnJvck1lc3NhZ2VEYXRhLnZpc3VhbGx5SGlkZGVuVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3JvbGVdPVwiZXJyb3JNZXNzYWdlRGF0YS5yb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYURlc2NyaWJlZEJ5XT1cImVycm9yTWVzc2FnZURhdGEuYXJpYURlc2NyaWJlZEJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFIaWRkZW5dPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhSGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYURpc2FibGVkXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYURpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbnRyb2xzXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUN1cnJlbnRdPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhQ3VycmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFMaXZlXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUxpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhRXhwYW5kZWRdPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhRXJyb3JNZXNzYWdlXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUVycm9yTWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFIYXNQb3B1cF09XCJlcnJvck1lc3NhZ2VEYXRhLmFyaWFIYXNQb3B1cFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cImVycm9yTWVzc2FnZURhdGEudGFiaW5kZXhcIj48L2Rlc3ktZXJyb3ItbWVzc2FnZT5cbiAgPGRlc3ktZXJyb3ItbWVzc2FnZSAqbmdJZj1cIiFlcnJvck1lc3NhZ2VSZWYgJiYgIWVycm9yTWVzc2FnZURhdGEgJiYgZXJyb3JNZXNzYWdlVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiZXJyb3JNZXNzYWdlVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImdldEVycm9ySWQoKVwiPjwvZGVzeS1lcnJvci1tZXNzYWdlPlxuXG4gIDwhLS0gUmVhY3RpdmUgZm9ybXMgLS0+XG4gIDxkaXYgKm5nSWY9XCJjb250cm9sQ29udGFpbmVyICYmICFuZ01vZGVsR3JvdXBcIlxuICAgICAgIFtmb3JtR3JvdXBdPVwib2dGb3JtR3JvdXBcIlxuICAgICAgIFtuZ0NsYXNzXT1cImNsYXNzZXMgPyBjbGFzc2VzIDogJ2ZsZXgnXCJcbiAgICAgICBbYXR0ci5pZF09XCJpZCA/IGlkIDogbnVsbFwiXG4gICAgICAgW2Rlc3lBcHBBY2Nlc3NpYmlsaXR5XT1cInRoaXNcIj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0SXRlbXMoKTsgaW5kZXggYXMgaVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlzU2VsZWN0SXRlbShpdGVtKSA/IGl0ZW1TZWxlY3QgOiAoaXRlbS5kaXZpZGVyID8gaXRlbURpdmlkZXIgOiBpdGVtSW5wdXQpOyBjb250ZXh0OiB7aXRlbTogaXRlbX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbVNlbGVjdD5cbiAgICAgICAgPGRlc3ktc2VsZWN0IFtpZF09XCJpdGVtLmlkID8gaXRlbS5pZCA6IGlkICsgJy0nICsgaXRlbS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgIFtsYWJlbFJlZl09XCJnZXRJdGVtTGFiZWxSZWYoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgW2xhYmVsRGF0YV09XCJnZXRJdGVtTGFiZWxEYXRhKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzc2VzXT1cImdldEl0ZW1DbGFzc2VzKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBDbGFzc2VzXT1cIml0ZW0uZm9ybUdyb3VwQ2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJnZXRJdGVtTmFtZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImdldEl0ZW1OYW1lKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJnZXRJdGVtU2VsZWN0T3B0aW9ucyhpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICBbcm9sZV09XCJpdGVtLnJvbGVcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJpdGVtLmFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYURlc2NyaWJlZEJ5XT1cImdldEl0ZW1BcmlhRGVzY3JpYmVkQnkoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFIaWRkZW5dPVwiaXRlbS5hcmlhSGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhRGlzYWJsZWRdPVwiaXRlbS5hcmlhRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFDb250cm9sc109XCJpdGVtLmFyaWFDb250cm9sc1wiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUN1cnJlbnRdPVwiaXRlbS5hcmlhQ3VycmVudFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUxpdmVdPVwiaXRlbS5hcmlhTGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUV4cGFuZGVkXT1cIml0ZW0uYXJpYUV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhRXJyb3JNZXNzYWdlXT1cImdldEVycm9ySWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUhhc1BvcHVwXT1cIml0ZW0uYXJpYUhhc1BvcHVwXCJcbiAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJpdGVtLnRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhTW9kYWxdPVwiaXRlbS5hcmlhTW9kYWxcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFDaGVja2VkXT1cIml0ZW0uYXJpYUNoZWNrZWRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFQcmVzc2VkXT1cIml0ZW0uYXJpYVByZXNzZWRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFSZWFkb25seV09XCJpdGVtLmFyaWFSZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVJlcXVpcmVkXT1cIml0ZW0uYXJpYVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhU2VsZWN0ZWRdPVwiaXRlbS5hcmlhU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFWYWx1ZW1pbl09XCJpdGVtLmFyaWFWYWx1ZW1pblwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVZhbHVlbWF4XT1cIml0ZW0uYXJpYVZhbHVlbWF4XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhVmFsdWVub3ddPVwiaXRlbS5hcmlhVmFsdWVub3dcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFWYWx1ZXRleHRdPVwiaXRlbS5hcmlhVmFsdWV0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhT3JpZW50YXRpb25dPVwiaXRlbS5hcmlhT3JpZW50YXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFMZXZlbF09XCJpdGVtLmFyaWFMZXZlbFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYU11bHRpc2VsZWN0YWJsZV09XCJpdGVtLmFyaWFNdWx0aXNlbGVjdGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFQbGFjZWhvbGRlcl09XCJpdGVtLmFyaWFQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVBvc2luc2V0XT1cIml0ZW0uYXJpYVBvc2luc2V0XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhU2V0c2l6ZV09XCJpdGVtLmFyaWFTZXRzaXplXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhU29ydF09XCJpdGVtLmFyaWFTb3J0XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhQnVzeV09XCJpdGVtLmFyaWFCdXN5XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhRHJvcGVmZmVjdF09XCJpdGVtLmFyaWFEcm9wZWZmZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhR3JhYmJlZF09XCJpdGVtLmFyaWFHcmFiYmVkXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhQWN0aXZlZGVzY2VuZGFudF09XCJpdGVtLmFyaWFBY3RpdmVkZXNjZW5kYW50XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhQXRvbWljXT1cIml0ZW0uYXJpYUF0b21pY1wiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUF1dG9jb21wbGV0ZV09XCJpdGVtLmFyaWFBdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFCcmFpbGxlbGFiZWxdPVwiaXRlbS5hcmlhQnJhaWxsZWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhQnJhaWxsZXJvbGVkZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFCcmFpbGxlcm9sZWRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhQ29sY291bnRdPVwiaXRlbS5hcmlhQ29sY291bnRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFDb2xpbmRleF09XCJpdGVtLmFyaWFDb2xpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbGluZGV4dGV4dF09XCJpdGVtLmFyaWFDb2xpbmRleHRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFDb2xzcGFuXT1cIml0ZW0uYXJpYUNvbHNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFEZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYURldGFpbHNdPVwiaXRlbS5hcmlhRGV0YWlsc1wiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUZsb3d0b109XCJpdGVtLmFyaWFGbG93dG9cIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFJbnZhbGlkXT1cIml0ZW0uYXJpYUludmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFLZXlzaG9ydGN1dHNdPVwiaXRlbS5hcmlhS2V5c2hvcnRjdXRzXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhT3duc109XCJpdGVtLmFyaWFPd25zXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhUmVsZXZhbnRdPVwiaXRlbS5hcmlhUmVsZXZhbnRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFSb2xlZGVzY3JpcHRpb25dPVwiaXRlbS5hcmlhUm9sZWRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhUm93Y291bnRdPVwiaXRlbS5hcmlhUm93Y291bnRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFSb3dpbmRleF09XCJpdGVtLmFyaWFSb3dpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVJvd2luZGV4dGV4dF09XCJpdGVtLmFyaWFSb3dpbmRleHRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFSb3dzcGFuXT1cIml0ZW0uYXJpYVJvd3NwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW0udGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJpdGVtLmFsdFwiXG4gICAgICAgICAgICAgICAgICAgICBbbGFuZ109XCJpdGVtLmxhbmdcIlxuICAgICAgICAgICAgICAgICAgICAgW2FjY2Vzc2tleV09XCJpdGVtLmFjY2Vzc2tleVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIml0ZW0uYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwiaXRlbS5hdXRvZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRlZGl0YWJsZV09XCJpdGVtLmNvbnRlbnRlZGl0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICBbZGlyXT1cIml0ZW0uZGlyXCJcbiAgICAgICAgICAgICAgICAgICAgIFtkcmFnZ2FibGVdPVwiaXRlbS5kcmFnZ2FibGVcIlxuICAgICAgICAgICAgICAgICAgICAgW2VudGVya2V5aGludF09XCJpdGVtLmVudGVya2V5aGludFwiXG4gICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIml0ZW0uaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgIFtpbnB1dG1vZGVdPVwiaXRlbS5pbnB1dG1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgW3NwZWxsY2hlY2tdPVwiaXRlbS5zcGVsbGNoZWNrXCJcbiAgICAgICAgICAgICAgICAgICAgIFt0cmFuc2xhdGVdPVwiaXRlbS50cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFNdWx0aWxpbmVdPVwiaXRlbS5hcmlhTXVsdGlsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgIFtmb3JdPVwiaXRlbS5mb3JcIlxuICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwiaXRlbS5mb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgIFtoZWFkZXJzXT1cIml0ZW0uaGVhZGVyc1wiXG4gICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXRlbS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiaXRlbS5yZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXRlbS5yZXF1aXJlZFwiPlxuICAgICAgICA8L2Rlc3ktc2VsZWN0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbUlucHV0PlxuICAgICAgICA8ZGVzeS1pbnB1dCBbaWRdPVwiaXRlbS5pZCA/IGl0ZW0uaWQgOiBpZCArICctJyArIGl0ZW0ubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbFJlZl09XCJnZXRJdGVtTGFiZWxSZWYoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxEYXRhXT1cImdldEl0ZW1MYWJlbERhdGEoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3Nlc109XCJnZXRJdGVtQ2xhc3NlcyhpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBDbGFzc2VzXT1cIml0ZW0uZm9ybUdyb3VwQ2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImdldEl0ZW1OYW1lKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJnZXRJdGVtTmFtZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIml0ZW0udHlwZSA/IGl0ZW0udHlwZSA6ICd0ZXh0J1wiXG4gICAgICAgICAgICAgICAgICAgIFtpbnB1dG1vZGVdPVwiaXRlbS5pbnB1dG1vZGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIml0ZW0uYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW3BhdHRlcm5dPVwiaXRlbS5wYXR0ZXJuXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIml0ZW0ucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFttYXhsZW5ndGhdPVwiaXRlbS5tYXhsZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICBbcm9sZV09XCJpdGVtLnJvbGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cIml0ZW0uYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFEZXNjcmliZWRCeV09XCJnZXRJdGVtQXJpYURlc2NyaWJlZEJ5KGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cIml0ZW0uYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUhpZGRlbl09XCJpdGVtLmFyaWFIaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYURpc2FibGVkXT1cIml0ZW0uYXJpYURpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFDb250cm9sc109XCJpdGVtLmFyaWFDb250cm9sc1wiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhQ3VycmVudF09XCJpdGVtLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFMaXZlXT1cIml0ZW0uYXJpYUxpdmVcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUV4cGFuZGVkXT1cIml0ZW0uYXJpYUV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFIYXNQb3B1cF09XCJpdGVtLmFyaWFIYXNQb3B1cFwiXG4gICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJpdGVtLnRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFNb2RhbF09XCJpdGVtLmFyaWFNb2RhbFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhQ2hlY2tlZF09XCJpdGVtLmFyaWFDaGVja2VkXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFQcmVzc2VkXT1cIml0ZW0uYXJpYVByZXNzZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVJlYWRvbmx5XT1cIml0ZW0uYXJpYVJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFSZXF1aXJlZF09XCJpdGVtLmFyaWFSZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhU2VsZWN0ZWRdPVwiaXRlbS5hcmlhU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVZhbHVlbWluXT1cIml0ZW0uYXJpYVZhbHVlbWluXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFWYWx1ZW1heF09XCJpdGVtLmFyaWFWYWx1ZW1heFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhVmFsdWVub3ddPVwiaXRlbS5hcmlhVmFsdWVub3dcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVZhbHVldGV4dF09XCJpdGVtLmFyaWFWYWx1ZXRleHRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYU9yaWVudGF0aW9uXT1cIml0ZW0uYXJpYU9yaWVudGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFMZXZlbF09XCJpdGVtLmFyaWFMZXZlbFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhTXVsdGlzZWxlY3RhYmxlXT1cIml0ZW0uYXJpYU11bHRpc2VsZWN0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhUGxhY2Vob2xkZXJdPVwiaXRlbS5hcmlhUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVBvc2luc2V0XT1cIml0ZW0uYXJpYVBvc2luc2V0XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFTZXRzaXplXT1cIml0ZW0uYXJpYVNldHNpemVcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVNvcnRdPVwiaXRlbS5hcmlhU29ydFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhQnVzeV09XCJpdGVtLmFyaWFCdXN5XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFEcm9wZWZmZWN0XT1cIml0ZW0uYXJpYURyb3BlZmZlY3RcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUdyYWJiZWRdPVwiaXRlbS5hcmlhR3JhYmJlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhQWN0aXZlZGVzY2VuZGFudF09XCJpdGVtLmFyaWFBY3RpdmVkZXNjZW5kYW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFBdG9taWNdPVwiaXRlbS5hcmlhQXRvbWljXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFBdXRvY29tcGxldGVdPVwiaXRlbS5hcmlhQXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFCcmFpbGxlbGFiZWxdPVwiaXRlbS5hcmlhQnJhaWxsZWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFCcmFpbGxlcm9sZWRlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYUJyYWlsbGVyb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbGNvdW50XT1cIml0ZW0uYXJpYUNvbGNvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFDb2xpbmRleF09XCJpdGVtLmFyaWFDb2xpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhQ29saW5kZXh0ZXh0XT1cIml0ZW0uYXJpYUNvbGluZGV4dGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhQ29sc3Bhbl09XCJpdGVtLmFyaWFDb2xzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFEZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhRGV0YWlsc109XCJpdGVtLmFyaWFEZXRhaWxzXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFGbG93dG9dPVwiaXRlbS5hcmlhRmxvd3RvXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFJbnZhbGlkXT1cIml0ZW0uYXJpYUludmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUtleXNob3J0Y3V0c109XCJpdGVtLmFyaWFLZXlzaG9ydGN1dHNcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYU93bnNdPVwiaXRlbS5hcmlhT3duc1wiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhUmVsZXZhbnRdPVwiaXRlbS5hcmlhUmVsZXZhbnRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVJvbGVkZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFSb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVJvd2NvdW50XT1cIml0ZW0uYXJpYVJvd2NvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFSb3dpbmRleF09XCJpdGVtLmFyaWFSb3dpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhUm93aW5kZXh0ZXh0XT1cIml0ZW0uYXJpYVJvd2luZGV4dGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhUm93c3Bhbl09XCJpdGVtLmFyaWFSb3dzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW0udGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0uYWx0XCJcbiAgICAgICAgICAgICAgICAgICAgW2xhbmddPVwiaXRlbS5sYW5nXCJcbiAgICAgICAgICAgICAgICAgICAgW2FjY2Vzc2tleV09XCJpdGVtLmFjY2Vzc2tleVwiXG4gICAgICAgICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiaXRlbS5hdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cIml0ZW0uYXV0b2ZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRlZGl0YWJsZV09XCJpdGVtLmNvbnRlbnRlZGl0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXJdPVwiaXRlbS5kaXJcIlxuICAgICAgICAgICAgICAgICAgICBbZHJhZ2dhYmxlXT1cIml0ZW0uZHJhZ2dhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2VudGVya2V5aGludF09XCJpdGVtLmVudGVya2V5aGludFwiXG4gICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiaXRlbS5oaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICBbaW5wdXRtb2RlXT1cIml0ZW0uaW5wdXRtb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgW3NwZWxsY2hlY2tdPVwiaXRlbS5zcGVsbGNoZWNrXCJcbiAgICAgICAgICAgICAgICAgICAgW3RyYW5zbGF0ZV09XCJpdGVtLnRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhTXVsdGlsaW5lXT1cIml0ZW0uYXJpYU11bHRpbGluZVwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JdPVwiaXRlbS5mb3JcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJpdGVtLmZvcm1cIlxuICAgICAgICAgICAgICAgICAgICBbaGVhZGVyc109XCJpdGVtLmhlYWRlcnNcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXRlbS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJpdGVtLnJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cIml0ZW0ucmVxdWlyZWRcIj5cbiAgICAgICAgPC9kZXN5LWlucHV0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBUZW1wbGF0ZS1kcml2ZW4gZm9ybXMgLS0+XG4gIDxkZXN5LXRlbXBsYXRlLWRyaXZlbi13cmFwcGVyICpuZ0lmPVwiY29udHJvbENvbnRhaW5lciAmJiBuZ01vZGVsR3JvdXBcIj5cbiAgICA8ZGl2IFtuZ01vZGVsR3JvdXBdPVwibmdNb2RlbEdyb3VwXCJcbiAgICAgICAgIFtuZ0NsYXNzXT1cImNsYXNzZXMgPyBjbGFzc2VzIDogJ2ZsZXgnXCJcbiAgICAgICAgIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCJcbiAgICAgICAgIFtkZXN5QXBwQWNjZXNzaWJpbGl0eV09XCJ0aGlzXCI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0SXRlbXMoKTsgaW5kZXggYXMgaVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXNTZWxlY3RJdGVtKGl0ZW0pID8gaXRlbVNlbGVjdCA6IChpdGVtLmRpdmlkZXIgPyBpdGVtRGl2aWRlciA6IGl0ZW1JbnB1dCk7IGNvbnRleHQ6IHtpdGVtOiBpdGVtfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2l0ZW1TZWxlY3Q+XG4gICAgICAgICAgPGRlc3ktc2VsZWN0IFtpZF09XCJpdGVtLmlkID8gaXRlbS5pZCA6IGlkICsgJy0nICsgaXRlbS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsUmVmXT1cImdldEl0ZW1MYWJlbFJlZihpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbERhdGFdPVwiZ2V0SXRlbUxhYmVsRGF0YShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc2VzXT1cImdldEl0ZW1DbGFzc2VzKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cENsYXNzZXNdPVwiaXRlbS5mb3JtR3JvdXBDbGFzc2VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiZ2V0SXRlbU5hbWUoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJpdGVtLnZhbHVlID09PSB1bmRlZmluZWQgPyBudWxsIDogaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uSW50ZXJuYWxDaGFuZ2UoaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJnZXRJdGVtU2VsZWN0T3B0aW9ucyhpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW3JvbGVdPVwiaXRlbS5yb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJpdGVtLmFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhRGVzY3JpYmVkQnldPVwiZ2V0SXRlbUFyaWFEZXNjcmliZWRCeShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJpdGVtLmFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFIaWRkZW5dPVwiaXRlbS5hcmlhSGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFEaXNhYmxlZF09XCJpdGVtLmFyaWFEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhQ29udHJvbHNdPVwiaXRlbS5hcmlhQ29udHJvbHNcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUN1cnJlbnRdPVwiaXRlbS5hcmlhQ3VycmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGl2ZV09XCJpdGVtLmFyaWFMaXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFFeHBhbmRlZF09XCJpdGVtLmFyaWFFeHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhRXJyb3JNZXNzYWdlXT1cImdldEVycm9ySWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhSGFzUG9wdXBdPVwiaXRlbS5hcmlhSGFzUG9wdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiaXRlbS50YWJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhTW9kYWxdPVwiaXRlbS5hcmlhTW9kYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUNoZWNrZWRdPVwiaXRlbS5hcmlhQ2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhUHJlc3NlZF09XCJpdGVtLmFyaWFQcmVzc2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFSZWFkb25seV09XCJpdGVtLmFyaWFSZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhUmVxdWlyZWRdPVwiaXRlbS5hcmlhUmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYVNlbGVjdGVkXT1cIml0ZW0uYXJpYVNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFWYWx1ZW1pbl09XCJpdGVtLmFyaWFWYWx1ZW1pblwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhVmFsdWVtYXhdPVwiaXRlbS5hcmlhVmFsdWVtYXhcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYVZhbHVlbm93XT1cIml0ZW0uYXJpYVZhbHVlbm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFWYWx1ZXRleHRdPVwiaXRlbS5hcmlhVmFsdWV0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFPcmllbnRhdGlvbl09XCJpdGVtLmFyaWFPcmllbnRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGV2ZWxdPVwiaXRlbS5hcmlhTGV2ZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYU11bHRpc2VsZWN0YWJsZV09XCJpdGVtLmFyaWFNdWx0aXNlbGVjdGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYVBsYWNlaG9sZGVyXT1cIml0ZW0uYXJpYVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFQb3NpbnNldF09XCJpdGVtLmFyaWFQb3NpbnNldFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhU2V0c2l6ZV09XCJpdGVtLmFyaWFTZXRzaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFTb3J0XT1cIml0ZW0uYXJpYVNvcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUJ1c3ldPVwiaXRlbS5hcmlhQnVzeVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhRHJvcGVmZmVjdF09XCJpdGVtLmFyaWFEcm9wZWZmZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFHcmFiYmVkXT1cIml0ZW0uYXJpYUdyYWJiZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUFjdGl2ZWRlc2NlbmRhbnRdPVwiaXRlbS5hcmlhQWN0aXZlZGVzY2VuZGFudFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhQXRvbWljXT1cIml0ZW0uYXJpYUF0b21pY1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhQXV0b2NvbXBsZXRlXT1cIml0ZW0uYXJpYUF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhQnJhaWxsZWxhYmVsXT1cIml0ZW0uYXJpYUJyYWlsbGVsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhQnJhaWxsZXJvbGVkZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFCcmFpbGxlcm9sZWRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFDb2xjb3VudF09XCJpdGVtLmFyaWFDb2xjb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhQ29saW5kZXhdPVwiaXRlbS5hcmlhQ29saW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbGluZGV4dGV4dF09XCJpdGVtLmFyaWFDb2xpbmRleHRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbHNwYW5dPVwiaXRlbS5hcmlhQ29sc3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhRGVzY3JpcHRpb25dPVwiaXRlbS5hcmlhRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYURldGFpbHNdPVwiaXRlbS5hcmlhRGV0YWlsc1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhRmxvd3RvXT1cIml0ZW0uYXJpYUZsb3d0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhSW52YWxpZF09XCJpdGVtLmFyaWFJbnZhbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFLZXlzaG9ydGN1dHNdPVwiaXRlbS5hcmlhS2V5c2hvcnRjdXRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFPd25zXT1cIml0ZW0uYXJpYU93bnNcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYVJlbGV2YW50XT1cIml0ZW0uYXJpYVJlbGV2YW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFSb2xlZGVzY3JpcHRpb25dPVwiaXRlbS5hcmlhUm9sZWRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFSb3djb3VudF09XCJpdGVtLmFyaWFSb3djb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhUm93aW5kZXhdPVwiaXRlbS5hcmlhUm93aW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYVJvd2luZGV4dGV4dF09XCJpdGVtLmFyaWFSb3dpbmRleHRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYVJvd3NwYW5dPVwiaXRlbS5hcmlhUm93c3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJpdGVtLmFsdFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtsYW5nXT1cIml0ZW0ubGFuZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFthY2Nlc3NrZXldPVwiaXRlbS5hY2Nlc3NrZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIml0ZW0uYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJpdGVtLmF1dG9mb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50ZWRpdGFibGVdPVwiaXRlbS5jb250ZW50ZWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICBbZGlyXT1cIml0ZW0uZGlyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2RyYWdnYWJsZV09XCJpdGVtLmRyYWdnYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtlbnRlcmtleWhpbnRdPVwiaXRlbS5lbnRlcmtleWhpbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIml0ZW0uaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0bW9kZV09XCJpdGVtLmlucHV0bW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtzcGVsbGNoZWNrXT1cIml0ZW0uc3BlbGxjaGVja1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFt0cmFuc2xhdGVdPVwiaXRlbS50cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYU11bHRpbGluZV09XCJpdGVtLmFyaWFNdWx0aWxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICBbZm9yXT1cIml0ZW0uZm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwiaXRlbS5mb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2hlYWRlcnNdPVwiaXRlbS5oZWFkZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIml0ZW0ucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiaXRlbS5yZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpdGVtLnJlcXVpcmVkXCI+XG4gICAgICAgICAgPC9kZXN5LXNlbGVjdD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNpdGVtSW5wdXQ+XG4gICAgICAgICAgPGRlc3ktaW5wdXQgW2lkXT1cIml0ZW0uaWQgPyBpdGVtLmlkIDogaWQgKyAnLScgKyBpdGVtLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbFJlZl09XCJnZXRJdGVtTGFiZWxSZWYoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbERhdGFdPVwiZ2V0SXRlbUxhYmVsRGF0YShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzZXNdPVwiZ2V0SXRlbUNsYXNzZXMoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBDbGFzc2VzXT1cIml0ZW0uZm9ybUdyb3VwQ2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiZ2V0SXRlbU5hbWUoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uSW50ZXJuYWxDaGFuZ2UoaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiaXRlbS50eXBlID8gaXRlbS50eXBlIDogJ3RleHQnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRtb2RlXT1cIml0ZW0uaW5wdXRtb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIml0ZW0uYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbcGF0dGVybl09XCJpdGVtLnBhdHRlcm5cIlxuICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpdGVtLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW21heGxlbmd0aF09XCJpdGVtLm1heGxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3JvbGVdPVwiaXRlbS5yb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cIml0ZW0uYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYURlc2NyaWJlZEJ5XT1cImdldEl0ZW1BcmlhRGVzY3JpYmVkQnkoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJpdGVtLmFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUhpZGRlbl09XCJpdGVtLmFyaWFIaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhRGlzYWJsZWRdPVwiaXRlbS5hcmlhRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhQ29udHJvbHNdPVwiaXRlbS5hcmlhQ29udHJvbHNcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhQ3VycmVudF09XCJpdGVtLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUxpdmVdPVwiaXRlbS5hcmlhTGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFFeHBhbmRlZF09XCJpdGVtLmFyaWFFeHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUhhc1BvcHVwXT1cIml0ZW0uYXJpYUhhc1BvcHVwXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiaXRlbS50YWJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFNb2RhbF09XCJpdGVtLmFyaWFNb2RhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFDaGVja2VkXT1cIml0ZW0uYXJpYUNoZWNrZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhUHJlc3NlZF09XCJpdGVtLmFyaWFQcmVzc2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYVJlYWRvbmx5XT1cIml0ZW0uYXJpYVJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYVJlcXVpcmVkXT1cIml0ZW0uYXJpYVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYVNlbGVjdGVkXT1cIml0ZW0uYXJpYVNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYVZhbHVlbWluXT1cIml0ZW0uYXJpYVZhbHVlbWluXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYVZhbHVlbWF4XT1cIml0ZW0uYXJpYVZhbHVlbWF4XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYVZhbHVlbm93XT1cIml0ZW0uYXJpYVZhbHVlbm93XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYVZhbHVldGV4dF09XCJpdGVtLmFyaWFWYWx1ZXRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhT3JpZW50YXRpb25dPVwiaXRlbS5hcmlhT3JpZW50YXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGV2ZWxdPVwiaXRlbS5hcmlhTGV2ZWxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhTXVsdGlzZWxlY3RhYmxlXT1cIml0ZW0uYXJpYU11bHRpc2VsZWN0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFQbGFjZWhvbGRlcl09XCJpdGVtLmFyaWFQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFQb3NpbnNldF09XCJpdGVtLmFyaWFQb3NpbnNldFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFTZXRzaXplXT1cIml0ZW0uYXJpYVNldHNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhU29ydF09XCJpdGVtLmFyaWFTb3J0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUJ1c3ldPVwiaXRlbS5hcmlhQnVzeVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFEcm9wZWZmZWN0XT1cIml0ZW0uYXJpYURyb3BlZmZlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhR3JhYmJlZF09XCJpdGVtLmFyaWFHcmFiYmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUFjdGl2ZWRlc2NlbmRhbnRdPVwiaXRlbS5hcmlhQWN0aXZlZGVzY2VuZGFudFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFBdG9taWNdPVwiaXRlbS5hcmlhQXRvbWljXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUF1dG9jb21wbGV0ZV09XCJpdGVtLmFyaWFBdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhQnJhaWxsZWxhYmVsXT1cIml0ZW0uYXJpYUJyYWlsbGVsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFCcmFpbGxlcm9sZWRlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYUJyYWlsbGVyb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhQ29sY291bnRdPVwiaXRlbS5hcmlhQ29sY291bnRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhQ29saW5kZXhdPVwiaXRlbS5hcmlhQ29saW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhQ29saW5kZXh0ZXh0XT1cIml0ZW0uYXJpYUNvbGluZGV4dGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFDb2xzcGFuXT1cIml0ZW0uYXJpYUNvbHNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhRGVzY3JpcHRpb25dPVwiaXRlbS5hcmlhRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhRGV0YWlsc109XCJpdGVtLmFyaWFEZXRhaWxzXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUZsb3d0b109XCJpdGVtLmFyaWFGbG93dG9cIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhSW52YWxpZF09XCJpdGVtLmFyaWFJbnZhbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUtleXNob3J0Y3V0c109XCJpdGVtLmFyaWFLZXlzaG9ydGN1dHNcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhT3duc109XCJpdGVtLmFyaWFPd25zXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYVJlbGV2YW50XT1cIml0ZW0uYXJpYVJlbGV2YW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYVJvbGVkZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFSb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhUm93Y291bnRdPVwiaXRlbS5hcmlhUm93Y291bnRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhUm93aW5kZXhdPVwiaXRlbS5hcmlhUm93aW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhUm93aW5kZXh0ZXh0XT1cIml0ZW0uYXJpYVJvd2luZGV4dGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFSb3dzcGFuXT1cIml0ZW0uYXJpYVJvd3NwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0uYWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFuZ109XCJpdGVtLmxhbmdcIlxuICAgICAgICAgICAgICAgICAgICAgIFthY2Nlc3NrZXldPVwiaXRlbS5hY2Nlc3NrZXlcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiaXRlbS5hdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwiaXRlbS5hdXRvZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50ZWRpdGFibGVdPVwiaXRlbS5jb250ZW50ZWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXJdPVwiaXRlbS5kaXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkcmFnZ2FibGVdPVwiaXRlbS5kcmFnZ2FibGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtlbnRlcmtleWhpbnRdPVwiaXRlbS5lbnRlcmtleWhpbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiaXRlbS5oaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dG1vZGVdPVwiaXRlbS5pbnB1dG1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzcGVsbGNoZWNrXT1cIml0ZW0uc3BlbGxjaGVja1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3RyYW5zbGF0ZV09XCJpdGVtLnRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFNdWx0aWxpbmVdPVwiaXRlbS5hcmlhTXVsdGlsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9yXT1cIml0ZW0uZm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJpdGVtLmZvcm1cIlxuICAgICAgICAgICAgICAgICAgICAgIFtoZWFkZXJzXT1cIml0ZW0uaGVhZGVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIml0ZW0ucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJpdGVtLnJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXRlbS5yZXF1aXJlZFwiPlxuICAgICAgICAgIDwvZGVzeS1pbnB1dD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rlc3ktdGVtcGxhdGUtZHJpdmVuLXdyYXBwZXI+XG5cbiAgPCEtLSBXaXRoIG5nTW9kZWwtLT5cbiAgPGRpdiAqbmdJZj1cIiFjb250cm9sQ29udGFpbmVyXCJcbiAgICAgICBbbmdDbGFzc109XCJjbGFzc2VzID8gY2xhc3NlcyA6ICdmbGV4J1wiXG4gICAgICAgW2F0dHIuaWRdPVwiaWQgPyBpZCA6IG51bGxcIlxuICAgICAgIFtkZXN5QXBwQWNjZXNzaWJpbGl0eV09XCJ0aGlzXCI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldEl0ZW1zKCk7IGluZGV4IGFzIGlcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpc1NlbGVjdEl0ZW0oaXRlbSkgPyBpdGVtU2VsZWN0IDogKGl0ZW0uZGl2aWRlciA/IGl0ZW1EaXZpZGVyIDogaXRlbUlucHV0KTsgY29udGV4dDoge2l0ZW06IGl0ZW19XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2l0ZW1TZWxlY3Q+XG4gICAgICAgIDxkZXN5LXNlbGVjdCBbaWRdPVwiaXRlbS5pZCA/IGl0ZW0uaWQgOiBpZCArICctJyArIGl0ZW0ubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICBbbGFiZWxSZWZdPVwiZ2V0SXRlbUxhYmVsUmVmKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgIFtsYWJlbERhdGFdPVwiZ2V0SXRlbUxhYmVsRGF0YShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICBbY2xhc3Nlc109XCJnZXRJdGVtQ2xhc3NlcyhpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwQ2xhc3Nlc109XCJpdGVtLmZvcm1Hcm91cENsYXNzZXNcIlxuICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiZ2V0SXRlbU5hbWUoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImdldEl0ZW1TZWxlY3RPcHRpb25zKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25JbnRlcm5hbENoYW5nZShpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgIFtyb2xlXT1cIml0ZW0ucm9sZVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cIml0ZW0uYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhRGVzY3JpYmVkQnldPVwiZ2V0SXRlbUFyaWFEZXNjcmliZWRCeShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiaXRlbS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUhpZGRlbl09XCJpdGVtLmFyaWFIaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFEaXNhYmxlZF09XCJpdGVtLmFyaWFEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbnRyb2xzXT1cIml0ZW0uYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhQ3VycmVudF09XCJpdGVtLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhTGl2ZV09XCJpdGVtLmFyaWFMaXZlXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhRXhwYW5kZWRdPVwiaXRlbS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhSGFzUG9wdXBdPVwiaXRlbS5hcmlhSGFzUG9wdXBcIlxuICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cIml0ZW0udGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFNb2RhbF09XCJpdGVtLmFyaWFNb2RhbFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUNoZWNrZWRdPVwiaXRlbS5hcmlhQ2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVByZXNzZWRdPVwiaXRlbS5hcmlhUHJlc3NlZFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVJlYWRvbmx5XT1cIml0ZW0uYXJpYVJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhUmVxdWlyZWRdPVwiaXRlbS5hcmlhUmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFTZWxlY3RlZF09XCJpdGVtLmFyaWFTZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVZhbHVlbWluXT1cIml0ZW0uYXJpYVZhbHVlbWluXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhVmFsdWVtYXhdPVwiaXRlbS5hcmlhVmFsdWVtYXhcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFWYWx1ZW5vd109XCJpdGVtLmFyaWFWYWx1ZW5vd1wiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVZhbHVldGV4dF09XCJpdGVtLmFyaWFWYWx1ZXRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFPcmllbnRhdGlvbl09XCJpdGVtLmFyaWFPcmllbnRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUxldmVsXT1cIml0ZW0uYXJpYUxldmVsXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhTXVsdGlzZWxlY3RhYmxlXT1cIml0ZW0uYXJpYU11bHRpc2VsZWN0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVBsYWNlaG9sZGVyXT1cIml0ZW0uYXJpYVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhUG9zaW5zZXRdPVwiaXRlbS5hcmlhUG9zaW5zZXRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFTZXRzaXplXT1cIml0ZW0uYXJpYVNldHNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFTb3J0XT1cIml0ZW0uYXJpYVNvcnRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFCdXN5XT1cIml0ZW0uYXJpYUJ1c3lcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFEcm9wZWZmZWN0XT1cIml0ZW0uYXJpYURyb3BlZmZlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFHcmFiYmVkXT1cIml0ZW0uYXJpYUdyYWJiZWRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFBY3RpdmVkZXNjZW5kYW50XT1cIml0ZW0uYXJpYUFjdGl2ZWRlc2NlbmRhbnRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFBdG9taWNdPVwiaXRlbS5hcmlhQXRvbWljXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhQXV0b2NvbXBsZXRlXT1cIml0ZW0uYXJpYUF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUJyYWlsbGVsYWJlbF09XCJpdGVtLmFyaWFCcmFpbGxlbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFCcmFpbGxlcm9sZWRlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYUJyYWlsbGVyb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFDb2xjb3VudF09XCJpdGVtLmFyaWFDb2xjb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbGluZGV4XT1cIml0ZW0uYXJpYUNvbGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhQ29saW5kZXh0ZXh0XT1cIml0ZW0uYXJpYUNvbGluZGV4dGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbHNwYW5dPVwiaXRlbS5hcmlhQ29sc3BhblwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYURlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYURlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhRGV0YWlsc109XCJpdGVtLmFyaWFEZXRhaWxzXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhRmxvd3RvXT1cIml0ZW0uYXJpYUZsb3d0b1wiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUludmFsaWRdPVwiaXRlbS5hcmlhSW52YWxpZFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUtleXNob3J0Y3V0c109XCJpdGVtLmFyaWFLZXlzaG9ydGN1dHNcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFPd25zXT1cIml0ZW0uYXJpYU93bnNcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFSZWxldmFudF09XCJpdGVtLmFyaWFSZWxldmFudFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVJvbGVkZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFSb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFSb3djb3VudF09XCJpdGVtLmFyaWFSb3djb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVJvd2luZGV4XT1cIml0ZW0uYXJpYVJvd2luZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhUm93aW5kZXh0ZXh0XT1cIml0ZW0uYXJpYVJvd2luZGV4dGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVJvd3NwYW5dPVwiaXRlbS5hcmlhUm93c3BhblwiXG4gICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiaXRlbS50YWJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXRlbS50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0uYWx0XCJcbiAgICAgICAgICAgICAgICAgICAgIFtsYW5nXT1cIml0ZW0ubGFuZ1wiXG4gICAgICAgICAgICAgICAgICAgICBbYWNjZXNza2V5XT1cIml0ZW0uYWNjZXNza2V5XCJcbiAgICAgICAgICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiaXRlbS5hdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJpdGVtLmF1dG9mb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgICBbY29udGVudGVkaXRhYmxlXT1cIml0ZW0uY29udGVudGVkaXRhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXJdPVwiaXRlbS5kaXJcIlxuICAgICAgICAgICAgICAgICAgICAgW2RyYWdnYWJsZV09XCJpdGVtLmRyYWdnYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICBbZW50ZXJrZXloaW50XT1cIml0ZW0uZW50ZXJrZXloaW50XCJcbiAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiaXRlbS5oaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgW2lucHV0bW9kZV09XCJpdGVtLmlucHV0bW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICBbc3BlbGxjaGVja109XCJpdGVtLnNwZWxsY2hlY2tcIlxuICAgICAgICAgICAgICAgICAgICAgW3RyYW5zbGF0ZV09XCJpdGVtLnRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYU11bHRpbGluZV09XCJpdGVtLmFyaWFNdWx0aWxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgW2Zvcl09XCJpdGVtLmZvclwiXG4gICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJpdGVtLmZvcm1cIlxuICAgICAgICAgICAgICAgICAgICAgW2hlYWRlcnNdPVwiaXRlbS5oZWFkZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpdGVtLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJpdGVtLnJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpdGVtLnJlcXVpcmVkXCI+XG4gICAgICAgIDwvZGVzeS1zZWxlY3Q+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlICNpdGVtSW5wdXQ+XG4gICAgICAgIDxkZXN5LWlucHV0IFtpZF09XCJpdGVtLmlkID8gaXRlbS5pZCA6IGlkICsgJy0nICsgaXRlbS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsUmVmXT1cImdldEl0ZW1MYWJlbFJlZihpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbERhdGFdPVwiZ2V0SXRlbUxhYmVsRGF0YShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc2VzXT1cImdldEl0ZW1DbGFzc2VzKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cENsYXNzZXNdPVwiaXRlbS5mb3JtR3JvdXBDbGFzc2VzXCJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiZ2V0SXRlbU5hbWUoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25JbnRlcm5hbENoYW5nZShpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiaXRlbS50eXBlID8gaXRlbS50eXBlIDogJ3RleHQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2lucHV0bW9kZV09XCJpdGVtLmlucHV0bW9kZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiaXRlbS5hdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICAgICAgICBbcGF0dGVybl09XCJpdGVtLnBhdHRlcm5cIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXRlbS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW21heGxlbmd0aF09XCJpdGVtLm1heGxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgIFtyb2xlXT1cIml0ZW0ucm9sZVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiaXRlbS5hcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYURlc2NyaWJlZEJ5XT1cImdldEl0ZW1BcmlhRGVzY3JpYmVkQnkoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiaXRlbS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhSGlkZGVuXT1cIml0ZW0uYXJpYUhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhRGlzYWJsZWRdPVwiaXRlbS5hcmlhRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbnRyb2xzXT1cIml0ZW0uYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFDdXJyZW50XT1cIml0ZW0uYXJpYUN1cnJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUxpdmVdPVwiaXRlbS5hcmlhTGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhRXhwYW5kZWRdPVwiaXRlbS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUVycm9yTWVzc2FnZV09XCJnZXRFcnJvcklkKClcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUhhc1BvcHVwXT1cIml0ZW0uYXJpYUhhc1BvcHVwXCJcbiAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cIml0ZW0udGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYU1vZGFsXT1cIml0ZW0uYXJpYU1vZGFsXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFDaGVja2VkXT1cIml0ZW0uYXJpYUNoZWNrZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVByZXNzZWRdPVwiaXRlbS5hcmlhUHJlc3NlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhUmVhZG9ubHldPVwiaXRlbS5hcmlhUmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVJlcXVpcmVkXT1cIml0ZW0uYXJpYVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFTZWxlY3RlZF09XCJpdGVtLmFyaWFTZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhVmFsdWVtaW5dPVwiaXRlbS5hcmlhVmFsdWVtaW5cIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVZhbHVlbWF4XT1cIml0ZW0uYXJpYVZhbHVlbWF4XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFWYWx1ZW5vd109XCJpdGVtLmFyaWFWYWx1ZW5vd1wiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhVmFsdWV0ZXh0XT1cIml0ZW0uYXJpYVZhbHVldGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhT3JpZW50YXRpb25dPVwiaXRlbS5hcmlhT3JpZW50YXRpb25cIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUxldmVsXT1cIml0ZW0uYXJpYUxldmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFNdWx0aXNlbGVjdGFibGVdPVwiaXRlbS5hcmlhTXVsdGlzZWxlY3RhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFQbGFjZWhvbGRlcl09XCJpdGVtLmFyaWFQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhUG9zaW5zZXRdPVwiaXRlbS5hcmlhUG9zaW5zZXRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVNldHNpemVdPVwiaXRlbS5hcmlhU2V0c2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhU29ydF09XCJpdGVtLmFyaWFTb3J0XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFCdXN5XT1cIml0ZW0uYXJpYUJ1c3lcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYURyb3BlZmZlY3RdPVwiaXRlbS5hcmlhRHJvcGVmZmVjdFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhR3JhYmJlZF09XCJpdGVtLmFyaWFHcmFiYmVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFBY3RpdmVkZXNjZW5kYW50XT1cIml0ZW0uYXJpYUFjdGl2ZWRlc2NlbmRhbnRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUF0b21pY109XCJpdGVtLmFyaWFBdG9taWNcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUF1dG9jb21wbGV0ZV09XCJpdGVtLmFyaWFBdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUJyYWlsbGVsYWJlbF09XCJpdGVtLmFyaWFCcmFpbGxlbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUJyYWlsbGVyb2xlZGVzY3JpcHRpb25dPVwiaXRlbS5hcmlhQnJhaWxsZXJvbGVkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhQ29sY291bnRdPVwiaXRlbS5hcmlhQ29sY291bnRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbGluZGV4XT1cIml0ZW0uYXJpYUNvbGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFDb2xpbmRleHRleHRdPVwiaXRlbS5hcmlhQ29saW5kZXh0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFDb2xzcGFuXT1cIml0ZW0uYXJpYUNvbHNwYW5cIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYURlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYURlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFEZXRhaWxzXT1cIml0ZW0uYXJpYURldGFpbHNcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUZsb3d0b109XCJpdGVtLmFyaWFGbG93dG9cIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUludmFsaWRdPVwiaXRlbS5hcmlhSW52YWxpZFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhS2V5c2hvcnRjdXRzXT1cIml0ZW0uYXJpYUtleXNob3J0Y3V0c1wiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhT3duc109XCJpdGVtLmFyaWFPd25zXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFSZWxldmFudF09XCJpdGVtLmFyaWFSZWxldmFudFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhUm9sZWRlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYVJvbGVkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhUm93Y291bnRdPVwiaXRlbS5hcmlhUm93Y291bnRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVJvd2luZGV4XT1cIml0ZW0uYXJpYVJvd2luZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFSb3dpbmRleHRleHRdPVwiaXRlbS5hcmlhUm93aW5kZXh0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFSb3dzcGFuXT1cIml0ZW0uYXJpYVJvd3NwYW5cIlxuICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiaXRlbS50YWJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJpdGVtLmFsdFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYW5nXT1cIml0ZW0ubGFuZ1wiXG4gICAgICAgICAgICAgICAgICAgIFthY2Nlc3NrZXldPVwiaXRlbS5hY2Nlc3NrZXlcIlxuICAgICAgICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIml0ZW0uYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJpdGVtLmF1dG9mb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgIFtjb250ZW50ZWRpdGFibGVdPVwiaXRlbS5jb250ZW50ZWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgICBbZGlyXT1cIml0ZW0uZGlyXCJcbiAgICAgICAgICAgICAgICAgICAgW2RyYWdnYWJsZV09XCJpdGVtLmRyYWdnYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtlbnRlcmtleWhpbnRdPVwiaXRlbS5lbnRlcmtleWhpbnRcIlxuICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIml0ZW0uaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgW2lucHV0bW9kZV09XCJpdGVtLmlucHV0bW9kZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzcGVsbGNoZWNrXT1cIml0ZW0uc3BlbGxjaGVja1wiXG4gICAgICAgICAgICAgICAgICAgIFt0cmFuc2xhdGVdPVwiaXRlbS50cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYU11bHRpbGluZV09XCJpdGVtLmFyaWFNdWx0aWxpbmVcIlxuICAgICAgICAgICAgICAgICAgICBbZm9yXT1cIml0ZW0uZm9yXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwiaXRlbS5mb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgW2hlYWRlcnNdPVwiaXRlbS5oZWFkZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIml0ZW0ucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiaXRlbS5yZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpdGVtLnJlcXVpcmVkXCI+XG4gICAgICAgIDwvZGVzeS1pbnB1dD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuXG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNGaWVsZHNldENvbXBvbmVudCgpXCI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImRlc3ktZmllbGRzZXRcIj48L25nLWNvbnRlbnQ+XG48L25nLWNvbnRhaW5lcj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhaGFzRmllbGRzZXRDb21wb25lbnQoKVwiPlxuICA8ZGVzeS1maWVsZHNldCAqbmdJZj1cImZpZWxkc2V0RGF0YVwiXG4gICAgICAgICAgICAgICAgIFtjbGFzc2VzXT1cImZpZWxkc2V0RGF0YS5jbGFzc2VzXCJcbiAgICAgICAgICAgICAgICAgW2lkXT1cImZpZWxkc2V0RGF0YS5pZFwiXG4gICAgICAgICAgICAgICAgIFtsZWdlbmREYXRhXT1cImZpZWxkc2V0RGF0YS5sZWdlbmRcIlxuICAgICAgICAgICAgICAgICBbaGVhZGluZ0xldmVsXT1cImZpZWxkc2V0RGF0YS5oZWFkaW5nTGV2ZWxcIlxuICAgICAgICAgICAgICAgICBbY2FsbGVyXT1cImlubmVySHRtbFwiXG4gICAgICAgICAgICAgICAgIFtlcnJvcklkXT1cImdldEVycm9ySWQoKVwiXG4gICAgICAgICAgICAgICAgIFtkZXNjcmliZWRCeV09XCJbZmllbGRzZXREYXRhLmRlc2NyaWJlZEJ5LCBnZXRIaW50SWQoKSwgZ2V0RXJyb3JJZCgpXSB8IG1ha2VIdG1sTGlzdDpudWxsXCJcbiAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJmaWVsZHNldERhdGEuYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cImZpZWxkc2V0RGF0YS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgICAgIFthcmlhSGlkZGVuXT1cImZpZWxkc2V0RGF0YS5hcmlhSGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgW2FyaWFEaXNhYmxlZF09XCJmaWVsZHNldERhdGEuYXJpYURpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgW2FyaWFDb250cm9sc109XCJmaWVsZHNldERhdGEuYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgICAgICAgW2FyaWFDdXJyZW50XT1cImZpZWxkc2V0RGF0YS5hcmlhQ3VycmVudFwiXG4gICAgICAgICAgICAgICAgIFthcmlhTGl2ZV09XCJmaWVsZHNldERhdGEuYXJpYUxpdmVcIlxuICAgICAgICAgICAgICAgICBbYXJpYUV4cGFuZGVkXT1cImZpZWxkc2V0RGF0YS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgICBbYXJpYUhhc1BvcHVwXT1cImZpZWxkc2V0RGF0YS5hcmlhSGFzUG9wdXBcIlxuICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiZmllbGRzZXREYXRhLnRhYmluZGV4XCI+PC9kZXN5LWZpZWxkc2V0PlxuICA8ZGVzeS1maWVsZHNldCAqbmdJZj1cIiFmaWVsZHNldERhdGEgJiYgaGFzTGVnZW5kQ29tcG9uZW50KClcIlxuICAgICAgICAgICAgICAgICBbbGVnZW5kUmVmXT1cImxlZ2VuZFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgW2NhbGxlcl09XCJpbm5lckh0bWxcIlxuICAgICAgICAgICAgICAgICBbZXJyb3JJZF09XCJnZXRFcnJvcklkKClcIlxuICAgICAgICAgICAgICAgICBbZGVzY3JpYmVkQnldPVwiWyBnZXRIaW50SWQoKSwgZ2V0RXJyb3JJZCgpXSB8IG1ha2VIdG1sTGlzdDpudWxsXCI+XG4gICAgPG5nLXRlbXBsYXRlICNsZWdlbmRUZW1wbGF0ZT5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImRlc3ktbGVnZW5kXCI+PC9uZy1jb250ZW50PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGVzeS1maWVsZHNldD5cbiAgPGRlc3ktZmllbGRzZXQgKm5nSWY9XCIhZmllbGRzZXREYXRhICYmICFoYXNMZWdlbmRDb21wb25lbnQoKSAmJiBsZWdlbmRSZWZcIlxuICAgICAgICAgICAgICAgICBbbGVnZW5kUmVmXT1cImxlZ2VuZFJlZlwiXG4gICAgICAgICAgICAgICAgIFtjYWxsZXJdPVwiaW5uZXJIdG1sXCJcbiAgICAgICAgICAgICAgICAgW2Vycm9ySWRdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICAgICAgICAgICAgICAgW2Rlc2NyaWJlZEJ5XT1cIlsgZ2V0SGludElkKCksIGdldEVycm9ySWQoKV0gfCBtYWtlSHRtbExpc3Q6bnVsbFwiXG4gICAgICAgICAgICAgICAgIHJvbGU9XCJncm91cFwiPjwvZGVzeS1maWVsZHNldD5cbiAgPGRlc3ktZmllbGRzZXQgKm5nSWY9XCIhZmllbGRzZXREYXRhICYmICFoYXNMZWdlbmRDb21wb25lbnQoKSAmJiAhbGVnZW5kUmVmICYmIGxlZ2VuZERhdGFcIlxuICAgICAgICAgICAgICAgICBbbGVnZW5kRGF0YV09XCJ7dGV4dDogbGVnZW5kRGF0YS50ZXh0LCBodG1sOiBsZWdlbmREYXRhLmh0bWwsICBjbGFzc2VzOiBsZWdlbmREYXRhLmNsYXNzZXMsIGlzUGFnZUhlYWRpbmc6IGxlZ2VuZERhdGEuaXNQYWdlSGVhZGluZ31cIlxuICAgICAgICAgICAgICAgICBbY2FsbGVyXT1cImlubmVySHRtbFwiXG4gICAgICAgICAgICAgICAgIFtlcnJvcklkXT1cImdldEVycm9ySWQoKVwiXG4gICAgICAgICAgICAgICAgIFtkZXNjcmliZWRCeV09XCJbIGdldEhpbnRJZCgpLCBnZXRFcnJvcklkKCldIHwgbWFrZUh0bWxMaXN0Om51bGxcIlxuICAgICAgICAgICAgICAgICByb2xlPVwiZ3JvdXBcIj48L2Rlc3ktZmllbGRzZXQ+XG4gIDxkZXN5LWZpZWxkc2V0ICpuZ0lmPVwiIWZpZWxkc2V0RGF0YSAmJiAhaGFzTGVnZW5kQ29tcG9uZW50KCkgJiYgIWxlZ2VuZFJlZiAmJiAhbGVnZW5kRGF0YSAmJiBsZWdlbmRUZXh0XCJcbiAgICAgICAgICAgICAgICAgW2xlZ2VuZFRleHRdPVwibGVnZW5kVGV4dFwiXG4gICAgICAgICAgICAgICAgIFtjYWxsZXJdPVwiaW5uZXJIdG1sXCJcbiAgICAgICAgICAgICAgICAgW2Vycm9ySWRdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICAgICAgICAgICAgICAgW2Rlc2NyaWJlZEJ5XT1cIlsgZ2V0SGludElkKCksIGdldEVycm9ySWQoKV0gfCBtYWtlSHRtbExpc3Q6bnVsbFwiXG4gICAgICAgICAgICAgICAgIHJvbGU9XCJncm91cFwiPjwvZGVzeS1maWVsZHNldD5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhhc0ZpZWxkc2V0KClcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5uZXJIdG1sXCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+Il19
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1mb3Jtcy9jb21wb25lbnRzL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktZm9ybXMvY29tcG9uZW50cy9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFhLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSx5QkFB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QXFEWSxRQUFRO3lDQS9DWixZQUFZO3NCQUFwQixLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUlQLFVBQVU7c0JBRFQsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRzZCLEdBQUc7c0JBQXJDLFdBQVc7dUJBQUMsb0JBQW9CO2dCQUNTLElBQUk7c0JBQTdDLFdBQVc7dUJBQUMsMkJBQTJCO2dCQUNULGdCQUFnQjtzQkFBOUMsS0FBSzs7c0JBQUksV0FBVzt1QkFBQyxPQUFPO2dCQUVwQixZQUFZO3NCQUFwQixLQUFLO2dCQUNXLEVBQUU7c0JBQWxCLEtBQUs7Z0JBU0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFb0MsZUFBZTtzQkFBeEQsZUFBZTt1QkFBQyx1QkFBdUI7Z0JBSXhDLGlCQUFpQjtzQkFEaEIsZUFBZTt1QkFBQyxpQkFBaUI7Z0JBS2xDLGVBQWU7c0JBRGQsZUFBZTt1QkFBQyxlQUFlO2dCQUdVLFNBQVM7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBPbkNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmllbGRzZXREYXRhLCBMZWdlbmREYXRhLCBJdGVtSW5wdXRHcm91cERhdGEsIExhYmVsRGF0YSwgU2VsZWN0SXRlbURhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIEZvcm1Hcm91cCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMZWdlbmRDb21wb25lbnQgfSBmcm9tICcuLi9maWVsZHNldC9sZWdlbmQvbGVnZW5kLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0R3JvdXBJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC1ncm91cC1pdGVtL2lucHV0LWdyb3VwLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IERlc3lPbklucHV0Q2hhbmdlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2RlY29yYXRvcnMvZGVzeS1vbi1pbnB1dC1jaGFuZ2UuZGVjb3JhdG9yJztcbmltcG9ydCB7IERlc3lDb250ZW50Q2hpbGQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGVjb3JhdG9ycy9kZXN5LWNvbnRlbnQtY2hpbGQuZGVjb3JhdG9yJztcbmltcG9ydCB7IEZpZWxkc2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vZmllbGRzZXQvZmllbGRzZXQuY29tcG9uZW50JztcbmltcG9ydCB7IE1ha2VIdG1sTGlzdFBpcGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvcGlwZXMvbWFrZS1odG1sLWxpc3QucGlwZSc7XG5pbXBvcnQgeyBJbnB1dEdyb3VwSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2lucHV0LWdyb3VwLWlucHV0L2lucHV0LWdyb3VwLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dEdyb3VwU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC1ncm91cC1zZWxlY3QvaW5wdXQtZ3JvdXAtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dEdyb3VwRGl2aWRlckNvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQtZ3JvdXAtZGl2aWRlci9pbnB1dC1ncm91cC1kaXZpZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdHJpbmdVdGlscyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9zdHJpbmctdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZXN5LWlucHV0LWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dEdyb3VwQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIElucHV0R3JvdXBDb21wb25lbnRcbiAgZXh0ZW5kcyBGb3JtRmllbGRDb21wb25lbnQ8YW55PlxuICBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uQ2hhbmdlc1xue1xuICBASW5wdXQoKSBuZ01vZGVsR3JvdXA6IHN0cmluZztcblxuICBARGVzeU9uSW5wdXRDaGFuZ2UoJ29uRXh0ZXJuYWxDaGFuZ2UnKVxuICBASW5wdXQoKVxuICBpdGVtczogSXRlbUlucHV0R3JvdXBEYXRhW107XG4gIEBPdXRwdXQoKSBpdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPEl0ZW1JbnB1dEdyb3VwRGF0YVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8SXRlbUlucHV0R3JvdXBEYXRhW10+KCk7XG5cbiAgQERlc3lPbklucHV0Q2hhbmdlKCdvbkV4dGVybmFsQ2hhbmdlJylcbiAgQElucHV0KClcbiAgbmFtZVByZWZpeDogc3RyaW5nO1xuICBASW5wdXQoKSBjbGFzc2VzOiBzdHJpbmc7XG5cbiAgLy8gIGZvcm0gZ3JvdXAgY2xhc3MgLSBhc2lnbmFyIGNsYXNlcyBhIGxhIGV0aXF1ZXRhIGRlc3ktaW5wdXQtZ3JvdXBcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jLWZvcm0tZ3JvdXAnKSBjZmcgPSB0cnVlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmMtZm9ybS1ncm91cC0tZXJyb3InKSBjZmdyOiBib29sZWFuO1xuICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZm9ybUdyb3VwQ2xhc3NlczogYW55O1xuXG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICBASW5wdXQoKSBkZWNsYXJlIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGZpZWxkc2V0LCBkaWZlcmVudGVzIGZvcm1hcyBkZSBpbXBsZW1lbnRhciwgZW51bWVyYWRhcyBwb3IgcHJpb3JpZGFkXG4gICAqIDEpIGluY2x1aXIgb2JqZXRvIEZpZWxkc2V0RGF0YSAoaW50ZXJmYXogZXhwdWVzdGEpXG4gICAqIDIpIGluY2x1aXIgdGVtcGxhdGUgbGVnZW5kXG4gICAqIDMpIGluY2x1aXIgbGVnZW5kRGF0YSAtIGluY2x1aXIgdW4gZmllbGRzZXQgY29uIHVuYSBsZWdlbmRhIGNvbiBsb3MgcGFyYW1ldHJvcyBwYXNhZG9zICAoaW50ZXJmYXogZXhwdWVzdGEpXG4gICAqIDQpIGluY2x1aXIgbGVnZW5kVGV4dCAtIGluY2x1aXIgdW4gZmllbGRzZXQgY29uIHVuIHRleHRvIGVuIGxhIGxlZ2VuZGFcbiAgICovXG4gIEBJbnB1dCgpIGZpZWxkc2V0RGF0YTogRmllbGRzZXREYXRhO1xuICBASW5wdXQoKSBsZWdlbmRSZWY6IFRlbXBsYXRlUmVmPExlZ2VuZENvbXBvbmVudD47XG4gIEBJbnB1dCgpIGxlZ2VuZERhdGE6IExlZ2VuZERhdGE7XG4gIEBJbnB1dCgpIGxlZ2VuZFRleHQ6IHN0cmluZztcblxuICBAQ29udGVudENoaWxkcmVuKElucHV0R3JvdXBJdGVtQ29tcG9uZW50KSBpdGVtc0NvbXBvbmVudHM6IFF1ZXJ5TGlzdDxJbnB1dEdyb3VwSXRlbUNvbXBvbmVudD47XG5cbiAgQERlc3lDb250ZW50Q2hpbGQoeyBvblNldENhbGxiYWNrTmFtZTogJ292ZXJyaWRlRmllbGRzZXRQYXJhbXMnIH0pXG4gIEBDb250ZW50Q2hpbGRyZW4oRmllbGRzZXRDb21wb25lbnQpXG4gIGZpZWxkc2V0Q29tcG9uZW50OiBGaWVsZHNldENvbXBvbmVudDtcblxuICBARGVzeUNvbnRlbnRDaGlsZCgpXG4gIEBDb250ZW50Q2hpbGRyZW4oTGVnZW5kQ29tcG9uZW50KVxuICBsZWdlbmRDb21wb25lbnQ6IExlZ2VuZENvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdpbm5lckh0bWwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbm5lckh0bWw6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHJpdmF0ZSBjb250ZW50SW5pdCA9IGZhbHNlO1xuICAvL3B1YmxpYyBvZ0Zvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHB1YmxpYyBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuY2ZnciA9IHRoaXMuaGFzRXJyb3JzTWVzc2FnZSgpIHx8IHRoaXMuZm9ybUdyb3VwQ2xhc3NlcyA9PT0gJ2MtZm9ybS1ncm91cC0tZXJyb3InO1xuICB9XG5cbiAgZ2V0IG9nRm9ybUdyb3VwKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbENvbnRhaW5lci5jb250cm9sIGFzIEZvcm1Hcm91cDtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRlbnRJbml0ID0gdHJ1ZTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0SXRlbXMoKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldEl0ZW1zKCk7XG4gICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLnZhbHVlW3RoaXMuZ2V0SXRlbU5hbWUoaXRlbSldO1xuICAgICAgICBpdGVtLnZhbHVlID0gdiA/IHYgOiBudWxsO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLml0ZW1zKSB7XG4gICAgICAgIHRoaXMuaXRlbXNDaGFuZ2UuZW1pdCh0aGlzLml0ZW1zKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICBvbkV4dGVybmFsQ2hhbmdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250ZW50SW5pdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IHt9O1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5nZXRJdGVtcygpO1xuICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+ICh0aGlzLnZhbHVlW3RoaXMuZ2V0SXRlbU5hbWUoaXRlbSldID0gaXRlbS52YWx1ZSkpO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICBvbkludGVybmFsQ2hhbmdlKGl0ZW06IEl0ZW1JbnB1dEdyb3VwRGF0YSwgaXRlbVZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtTmFtZSA9IHRoaXMuZ2V0SXRlbU5hbWUoaXRlbSk7XG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlID0ge307XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmFsdWVbaXRlbU5hbWVdICE9PSBpdGVtVmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWVbaXRlbU5hbWVdID0gaXRlbVZhbHVlO1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcblxuICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBJbnB1dEdyb3VwSW5wdXRDb21wb25lbnQgfHwgaXRlbSBpbnN0YW5jZW9mIElucHV0R3JvdXBTZWxlY3RDb21wb25lbnQpIHtcbiAgICAgICAgaXRlbS52YWx1ZUNoYW5nZS5lbWl0KGl0ZW1WYWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLml0ZW1zKSB7XG4gICAgICAgIGl0ZW0udmFsdWUgPSBpdGVtVmFsdWU7XG4gICAgICAgIHRoaXMuaXRlbXNDaGFuZ2UuZW1pdCh0aGlzLml0ZW1zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvdmVycmlkZUZpZWxkc2V0UGFyYW1zKGZpZWxkc2V0OiBGaWVsZHNldENvbXBvbmVudCk6IHZvaWQge1xuICAgIGZpZWxkc2V0LmNhbGxlciA9IHRoaXMuaW5uZXJIdG1sO1xuICAgIGZpZWxkc2V0LmVycm9ySWQgPSB0aGlzLmdldEVycm9ySWQoKTtcbiAgICBmaWVsZHNldC5kZXNjcmliZWRCeSA9IG5ldyBNYWtlSHRtbExpc3RQaXBlKCkudHJhbnNmb3JtKFt0aGlzLmdldEhpbnRJZCgpLCB0aGlzLmdldEVycm9ySWQoKV0sIG51bGwpO1xuICAgIGZpZWxkc2V0LnJvbGUgPSAnZ3JvdXAnO1xuICAgIGZpZWxkc2V0LmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qXG4gICAqIE3DqXRvZG9zIHBhcmEgcHJvcG9yY2lvbmFyIGRhdG9zXG4gICAqL1xuICBnZXRJdGVtcygpOiBJdGVtSW5wdXRHcm91cERhdGFbXSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXNDb21wb25lbnRzICYmIHRoaXMuaXRlbXNDb21wb25lbnRzLmxlbmd0aCA/IHRoaXMuaXRlbXNDb21wb25lbnRzLnRvQXJyYXkoKSA6IHRoaXMuaXRlbXM7XG4gIH1cblxuICBnZXRJdGVtTGFiZWxSZWYoaXRlbTogSXRlbUlucHV0R3JvdXBEYXRhKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgcmV0dXJuIGl0ZW0gaW5zdGFuY2VvZiBJbnB1dEdyb3VwSW5wdXRDb21wb25lbnQgfHwgaXRlbSBpbnN0YW5jZW9mIElucHV0R3JvdXBTZWxlY3RDb21wb25lbnQgPyBpdGVtLmxhYmVsUmVmIDogbnVsbDtcbiAgfVxuXG4gIGdldEl0ZW1MYWJlbERhdGEoaXRlbTogSXRlbUlucHV0R3JvdXBEYXRhKTogTGFiZWxEYXRhIHtcbiAgICByZXR1cm4gaXRlbS5sYWJlbERhdGEgPyBpdGVtLmxhYmVsRGF0YSA6IHsgdGV4dDogaXRlbS5sYWJlbFRleHQgfTtcbiAgfVxuXG4gIGhhc0ZpZWxkc2V0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIShcbiAgICAgIHRoaXMuaGFzRmllbGRzZXRDb21wb25lbnQoKSB8fFxuICAgICAgdGhpcy5oYXNMZWdlbmRDb21wb25lbnQoKSB8fFxuICAgICAgdGhpcy5sZWdlbmRSZWYgfHxcbiAgICAgIHRoaXMuZmllbGRzZXREYXRhIHx8XG4gICAgICAodGhpcy5sZWdlbmREYXRhICYmICh0aGlzLmxlZ2VuZERhdGEudGV4dCB8fCB0aGlzLmxlZ2VuZERhdGEuaHRtbCkpIHx8XG4gICAgICB0aGlzLmxlZ2VuZFRleHRcbiAgICApO1xuICB9XG5cbiAgaGFzRmllbGRzZXRDb21wb25lbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5maWVsZHNldENvbXBvbmVudDtcbiAgfVxuXG4gIGhhc0xlZ2VuZENvbXBvbmVudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmxlZ2VuZENvbXBvbmVudDtcbiAgfVxuXG4gIGdldEl0ZW1OYW1lKGl0ZW06IEl0ZW1JbnB1dEdyb3VwRGF0YSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubmFtZVByZWZpeCA/IHRoaXMubmFtZVByZWZpeCArICctJyArIGl0ZW0ubmFtZSA6IGl0ZW0ubmFtZTtcbiAgfVxuXG4gIGdldEl0ZW1TZWxlY3RPcHRpb25zKGl0ZW06IEl0ZW1JbnB1dEdyb3VwRGF0YSk6IFNlbGVjdEl0ZW1EYXRhW10ge1xuICAgIHJldHVybiBpdGVtIGluc3RhbmNlb2YgSW5wdXRHcm91cFNlbGVjdENvbXBvbmVudCA/IGl0ZW0uc2VsZWN0SXRlbUNvbXBvbmVudExpc3QudG9BcnJheSgpIDogaXRlbS5zZWxlY3RJdGVtcztcbiAgfVxuXG4gIGdldEl0ZW1EaXZpZGVyVGVtcGxhdGUoaXRlbTogSXRlbUlucHV0R3JvdXBEYXRhKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgcmV0dXJuIGl0ZW0uZGl2aWRlciBpbnN0YW5jZW9mIElucHV0R3JvdXBEaXZpZGVyQ29tcG9uZW50ID8gaXRlbS5kaXZpZGVyLmRpdmlkZXJDb250ZW50IDogbnVsbDtcbiAgfVxuXG4gIGdldEl0ZW1EaXZpZGVySHRtbChpdGVtOiBJdGVtSW5wdXRHcm91cERhdGEpOiBzdHJpbmcge1xuICAgIHJldHVybiBpdGVtLmRpdmlkZXIuaHRtbCA/IGl0ZW0uZGl2aWRlci5odG1sIDogYDxwPiR7U3RyaW5nVXRpbHMuZXNjYXBlSHRtbChpdGVtLmRpdmlkZXIudGV4dCl9PC9wPmA7XG4gIH1cblxuICBpc1NlbGVjdEl0ZW0oaXRlbTogSXRlbUlucHV0R3JvdXBEYXRhKTogYm9vbGVhbiB7XG4gICAgbGV0IGhhc1NlbGVjdEl0ZW1zO1xuICAgIGlmIChpdGVtIGluc3RhbmNlb2YgSW5wdXRHcm91cFNlbGVjdENvbXBvbmVudCkge1xuICAgICAgaGFzU2VsZWN0SXRlbXMgPSBpdGVtLnNlbGVjdEl0ZW1Db21wb25lbnRMaXN0ICYmIGl0ZW0uc2VsZWN0SXRlbUNvbXBvbmVudExpc3QubGVuZ3RoID4gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaGFzU2VsZWN0SXRlbXMgPSBpdGVtLnNlbGVjdEl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbS5pc1NlbGVjdCAmJiBoYXNTZWxlY3RJdGVtcztcbiAgfVxuXG4gIGhhc0l0ZW1MYWJlbChpdGVtOiBJdGVtSW5wdXRHcm91cERhdGEpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoKGl0ZW0ubGFiZWxEYXRhICYmIChpdGVtLmxhYmVsRGF0YS50ZXh0IHx8IGl0ZW0ubGFiZWxEYXRhLmh0bWwpKSB8fCBpdGVtLmxhYmVsVGV4dCk7XG4gIH1cblxuICBnZXRJdGVtQ2xhc3NlcyhpdGVtOiBJdGVtSW5wdXRHcm91cERhdGEpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgTWFrZUh0bWxMaXN0UGlwZSgpLnRyYW5zZm9ybShcbiAgICAgIFsnbWItMCcsIGl0ZW0uY2xhc3NlcywgdGhpcy5oYXNFcnJvcnNNZXNzYWdlKCkgPyAnYm9yZGVyLWFsZXJ0LWJhc2UgcmluZy0yIHJpbmctYWxlcnQtYmFzZScgOiBudWxsXSxcbiAgICAgIG51bGxcbiAgICApO1xuICB9XG5cbiAgZ2V0SXRlbUFyaWFEZXNjcmliZWRCeShpdGVtOiBJdGVtSW5wdXRHcm91cERhdGEpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgTWFrZUh0bWxMaXN0UGlwZSgpLnRyYW5zZm9ybShbaXRlbS5hcmlhRGVzY3JpYmVkQnksIHRoaXMuZ2V0RXJyb3JJZCgpLCB0aGlzLmdldEhpbnRJZCgpXSwgbnVsbCk7XG4gIH1cbn1cbiIsIjwhLS0gRGl2aWRlciBubyBmb3JtYSBwYXJ0ZSBkZWwgZm9ybXVsYXJpbywgcG9yIGxvIHF1ZSBlcyByZXV0aWxpemFibGUgZW4gY3VhbHF1aWVyIGNhc28gLS0+XG48bmctdGVtcGxhdGVcbiAgI2l0ZW1EaXZpZGVyXG4gIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8ZGl2XG4gICAgcm9sZT1cInNlcGFyYXRvclwiXG4gICAgW25nQ2xhc3NdPVwiaXRlbS5kaXZpZGVyLmNsYXNzZXNcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cIntcbiAgICAgICAgdGVtcGxhdGU6IGdldEl0ZW1EaXZpZGVyVGVtcGxhdGUoaXRlbSksXG4gICAgICAgIGh0bWw6IGdldEl0ZW1EaXZpZGVySHRtbChpdGVtKSxcbiAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lubmVySHRtbD5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGVzeS1oaW50XCI+PC9uZy1jb250ZW50PlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGludFJlZlwiPjwvbmctY29udGFpbmVyPlxuICA8ZGVzeS1oaW50XG4gICAgKm5nSWY9XCIhaGludFJlZiAmJiBoaW50RGF0YVwiXG4gICAgW2lkXT1cImdldEhpbnRJZCgpXCJcbiAgICBbdGV4dF09XCJoaW50RGF0YS50ZXh0XCJcbiAgICBbaHRtbF09XCJoaW50RGF0YS5odG1sXCJcbiAgICBbY2xhc3Nlc109XCJoaW50RGF0YS5jbGFzc2VzXCJcbiAgICBbcm9sZV09XCJoaW50RGF0YS5yb2xlXCJcbiAgICBbYXJpYUxhYmVsXT1cImhpbnREYXRhLmFyaWFMYWJlbFwiXG4gICAgW2FyaWFEZXNjcmliZWRCeV09XCJoaW50RGF0YS5hcmlhRGVzY3JpYmVkQnlcIlxuICAgIFthcmlhTGFiZWxsZWRCeV09XCJoaW50RGF0YS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgW2FyaWFIaWRkZW5dPVwiaGludERhdGEuYXJpYUhpZGRlblwiXG4gICAgW2FyaWFEaXNhYmxlZF09XCJoaW50RGF0YS5hcmlhRGlzYWJsZWRcIlxuICAgIFthcmlhQ29udHJvbHNdPVwiaGludERhdGEuYXJpYUNvbnRyb2xzXCJcbiAgICBbYXJpYUN1cnJlbnRdPVwiaGludERhdGEuYXJpYUN1cnJlbnRcIlxuICAgIFthcmlhTGl2ZV09XCJoaW50RGF0YS5hcmlhTGl2ZVwiXG4gICAgW2FyaWFFeHBhbmRlZF09XCJoaW50RGF0YS5hcmlhRXhwYW5kZWRcIlxuICAgIFthcmlhRXJyb3JNZXNzYWdlXT1cImhpbnREYXRhLmFyaWFFcnJvck1lc3NhZ2VcIlxuICAgIFthcmlhSGFzUG9wdXBdPVwiaGludERhdGEuYXJpYUhhc1BvcHVwXCJcbiAgICBbdGFiaW5kZXhdPVwiaGludERhdGEudGFiaW5kZXhcIj48L2Rlc3ktaGludD5cbiAgPGRlc3ktaGludFxuICAgICpuZ0lmPVwiIWhpbnRSZWYgJiYgIWhpbnREYXRhICYmIGhpbnRUZXh0XCJcbiAgICBbdGV4dF09XCJoaW50VGV4dFwiXG4gICAgW2lkXT1cImdldEhpbnRJZCgpXCI+PC9kZXN5LWhpbnQ+XG5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGVzeS1lcnJvci1tZXNzYWdlXCI+PC9uZy1jb250ZW50PlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXJyb3JNZXNzYWdlUmVmXCI+PC9uZy1jb250YWluZXI+XG4gIDxkZXN5LWVycm9yLW1lc3NhZ2VcbiAgICAqbmdJZj1cIiFlcnJvck1lc3NhZ2VSZWYgJiYgZXJyb3JNZXNzYWdlRGF0YVwiXG4gICAgW2lkXT1cImdldEVycm9ySWQoKVwiXG4gICAgW3RleHRdPVwiZXJyb3JNZXNzYWdlRGF0YS50ZXh0XCJcbiAgICBbaHRtbF09XCJlcnJvck1lc3NhZ2VEYXRhLmh0bWxcIlxuICAgIFtjbGFzc2VzXT1cImVycm9yTWVzc2FnZURhdGEuY2xhc3Nlc1wiXG4gICAgW3Zpc3VhbGx5SGlkZGVuVGV4dF09XCJlcnJvck1lc3NhZ2VEYXRhLnZpc3VhbGx5SGlkZGVuVGV4dFwiXG4gICAgW3JvbGVdPVwiZXJyb3JNZXNzYWdlRGF0YS5yb2xlXCJcbiAgICBbYXJpYUxhYmVsXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUxhYmVsXCJcbiAgICBbYXJpYURlc2NyaWJlZEJ5XT1cImVycm9yTWVzc2FnZURhdGEuYXJpYURlc2NyaWJlZEJ5XCJcbiAgICBbYXJpYUxhYmVsbGVkQnldPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgW2FyaWFIaWRkZW5dPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhSGlkZGVuXCJcbiAgICBbYXJpYURpc2FibGVkXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYURpc2FibGVkXCJcbiAgICBbYXJpYUNvbnRyb2xzXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUNvbnRyb2xzXCJcbiAgICBbYXJpYUN1cnJlbnRdPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhQ3VycmVudFwiXG4gICAgW2FyaWFMaXZlXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUxpdmVcIlxuICAgIFthcmlhRXhwYW5kZWRdPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhRXhwYW5kZWRcIlxuICAgIFthcmlhRXJyb3JNZXNzYWdlXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUVycm9yTWVzc2FnZVwiXG4gICAgW2FyaWFIYXNQb3B1cF09XCJlcnJvck1lc3NhZ2VEYXRhLmFyaWFIYXNQb3B1cFwiXG4gICAgW3RhYmluZGV4XT1cImVycm9yTWVzc2FnZURhdGEudGFiaW5kZXhcIj48L2Rlc3ktZXJyb3ItbWVzc2FnZT5cbiAgPGRlc3ktZXJyb3ItbWVzc2FnZVxuICAgICpuZ0lmPVwiIWVycm9yTWVzc2FnZVJlZiAmJiAhZXJyb3JNZXNzYWdlRGF0YSAmJiBlcnJvck1lc3NhZ2VUZXh0XCJcbiAgICBbdGV4dF09XCJlcnJvck1lc3NhZ2VUZXh0XCJcbiAgICBbaWRdPVwiZ2V0RXJyb3JJZCgpXCI+PC9kZXN5LWVycm9yLW1lc3NhZ2U+XG5cbiAgPCEtLSBSZWFjdGl2ZSBmb3JtcyAtLT5cbiAgPGRpdlxuICAgICpuZ0lmPVwiY29udHJvbENvbnRhaW5lciAmJiAhbmdNb2RlbEdyb3VwXCJcbiAgICBbZm9ybUdyb3VwXT1cIm9nRm9ybUdyb3VwXCJcbiAgICBbbmdDbGFzc109XCJjbGFzc2VzID8gY2xhc3NlcyA6ICdmbGV4J1wiXG4gICAgW2F0dHIuaWRdPVwiaWQgPyBpZCA6IG51bGxcIlxuICAgIFtkZXN5QXBwQWNjZXNzaWJpbGl0eV09XCJ0aGlzXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXRJdGVtcygpOyBpbmRleCBhcyBpXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgaXNTZWxlY3RJdGVtKGl0ZW0pID8gaXRlbVNlbGVjdCA6IGl0ZW0uZGl2aWRlciA/IGl0ZW1EaXZpZGVyIDogaXRlbUlucHV0O1xuICAgICAgICAgIGNvbnRleHQ6IHsgaXRlbTogaXRlbSB9XG4gICAgICAgIFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNpdGVtU2VsZWN0PlxuICAgICAgICA8ZGVzeS1zZWxlY3RcbiAgICAgICAgICBbaWRdPVwiaXRlbS5pZCA/IGl0ZW0uaWQgOiBpZCArICctJyArIGl0ZW0ubmFtZVwiXG4gICAgICAgICAgW2xhYmVsUmVmXT1cImdldEl0ZW1MYWJlbFJlZihpdGVtKVwiXG4gICAgICAgICAgW2xhYmVsRGF0YV09XCJnZXRJdGVtTGFiZWxEYXRhKGl0ZW0pXCJcbiAgICAgICAgICBbY2xhc3Nlc109XCJnZXRJdGVtQ2xhc3NlcyhpdGVtKVwiXG4gICAgICAgICAgW2Zvcm1Hcm91cENsYXNzZXNdPVwiaXRlbS5mb3JtR3JvdXBDbGFzc2VzXCJcbiAgICAgICAgICBbbmFtZV09XCJnZXRJdGVtTmFtZShpdGVtKVwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJnZXRJdGVtTmFtZShpdGVtKVwiXG4gICAgICAgICAgW2l0ZW1zXT1cImdldEl0ZW1TZWxlY3RPcHRpb25zKGl0ZW0pXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgW3JvbGVdPVwiaXRlbS5yb2xlXCJcbiAgICAgICAgICBbYXJpYUxhYmVsXT1cIml0ZW0uYXJpYUxhYmVsXCJcbiAgICAgICAgICBbYXJpYURlc2NyaWJlZEJ5XT1cImdldEl0ZW1BcmlhRGVzY3JpYmVkQnkoaXRlbSlcIlxuICAgICAgICAgIFthcmlhSGlkZGVuXT1cIml0ZW0uYXJpYUhpZGRlblwiXG4gICAgICAgICAgW2FyaWFEaXNhYmxlZF09XCJpdGVtLmFyaWFEaXNhYmxlZFwiXG4gICAgICAgICAgW2FyaWFDb250cm9sc109XCJpdGVtLmFyaWFDb250cm9sc1wiXG4gICAgICAgICAgW2FyaWFDdXJyZW50XT1cIml0ZW0uYXJpYUN1cnJlbnRcIlxuICAgICAgICAgIFthcmlhTGl2ZV09XCJpdGVtLmFyaWFMaXZlXCJcbiAgICAgICAgICBbYXJpYUV4cGFuZGVkXT1cIml0ZW0uYXJpYUV4cGFuZGVkXCJcbiAgICAgICAgICBbYXJpYUVycm9yTWVzc2FnZV09XCJnZXRFcnJvcklkKClcIlxuICAgICAgICAgIFthcmlhSGFzUG9wdXBdPVwiaXRlbS5hcmlhSGFzUG9wdXBcIlxuICAgICAgICAgIFt0YWJpbmRleF09XCJpdGVtLnRhYmluZGV4XCJcbiAgICAgICAgICBbYXJpYU1vZGFsXT1cIml0ZW0uYXJpYU1vZGFsXCJcbiAgICAgICAgICBbYXJpYUNoZWNrZWRdPVwiaXRlbS5hcmlhQ2hlY2tlZFwiXG4gICAgICAgICAgW2FyaWFQcmVzc2VkXT1cIml0ZW0uYXJpYVByZXNzZWRcIlxuICAgICAgICAgIFthcmlhUmVhZG9ubHldPVwiaXRlbS5hcmlhUmVhZG9ubHlcIlxuICAgICAgICAgIFthcmlhUmVxdWlyZWRdPVwiaXRlbS5hcmlhUmVxdWlyZWRcIlxuICAgICAgICAgIFthcmlhU2VsZWN0ZWRdPVwiaXRlbS5hcmlhU2VsZWN0ZWRcIlxuICAgICAgICAgIFthcmlhVmFsdWVtaW5dPVwiaXRlbS5hcmlhVmFsdWVtaW5cIlxuICAgICAgICAgIFthcmlhVmFsdWVtYXhdPVwiaXRlbS5hcmlhVmFsdWVtYXhcIlxuICAgICAgICAgIFthcmlhVmFsdWVub3ddPVwiaXRlbS5hcmlhVmFsdWVub3dcIlxuICAgICAgICAgIFthcmlhVmFsdWV0ZXh0XT1cIml0ZW0uYXJpYVZhbHVldGV4dFwiXG4gICAgICAgICAgW2FyaWFPcmllbnRhdGlvbl09XCJpdGVtLmFyaWFPcmllbnRhdGlvblwiXG4gICAgICAgICAgW2FyaWFMZXZlbF09XCJpdGVtLmFyaWFMZXZlbFwiXG4gICAgICAgICAgW2FyaWFNdWx0aXNlbGVjdGFibGVdPVwiaXRlbS5hcmlhTXVsdGlzZWxlY3RhYmxlXCJcbiAgICAgICAgICBbYXJpYVBsYWNlaG9sZGVyXT1cIml0ZW0uYXJpYVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbYXJpYVBvc2luc2V0XT1cIml0ZW0uYXJpYVBvc2luc2V0XCJcbiAgICAgICAgICBbYXJpYVNldHNpemVdPVwiaXRlbS5hcmlhU2V0c2l6ZVwiXG4gICAgICAgICAgW2FyaWFTb3J0XT1cIml0ZW0uYXJpYVNvcnRcIlxuICAgICAgICAgIFthcmlhQnVzeV09XCJpdGVtLmFyaWFCdXN5XCJcbiAgICAgICAgICBbYXJpYURyb3BlZmZlY3RdPVwiaXRlbS5hcmlhRHJvcGVmZmVjdFwiXG4gICAgICAgICAgW2FyaWFHcmFiYmVkXT1cIml0ZW0uYXJpYUdyYWJiZWRcIlxuICAgICAgICAgIFthcmlhQWN0aXZlZGVzY2VuZGFudF09XCJpdGVtLmFyaWFBY3RpdmVkZXNjZW5kYW50XCJcbiAgICAgICAgICBbYXJpYUF0b21pY109XCJpdGVtLmFyaWFBdG9taWNcIlxuICAgICAgICAgIFthcmlhQXV0b2NvbXBsZXRlXT1cIml0ZW0uYXJpYUF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgW2FyaWFCcmFpbGxlbGFiZWxdPVwiaXRlbS5hcmlhQnJhaWxsZWxhYmVsXCJcbiAgICAgICAgICBbYXJpYUJyYWlsbGVyb2xlZGVzY3JpcHRpb25dPVwiaXRlbS5hcmlhQnJhaWxsZXJvbGVkZXNjcmlwdGlvblwiXG4gICAgICAgICAgW2FyaWFDb2xjb3VudF09XCJpdGVtLmFyaWFDb2xjb3VudFwiXG4gICAgICAgICAgW2FyaWFDb2xpbmRleF09XCJpdGVtLmFyaWFDb2xpbmRleFwiXG4gICAgICAgICAgW2FyaWFDb2xpbmRleHRleHRdPVwiaXRlbS5hcmlhQ29saW5kZXh0ZXh0XCJcbiAgICAgICAgICBbYXJpYUNvbHNwYW5dPVwiaXRlbS5hcmlhQ29sc3BhblwiXG4gICAgICAgICAgW2FyaWFEZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFEZXNjcmlwdGlvblwiXG4gICAgICAgICAgW2FyaWFEZXRhaWxzXT1cIml0ZW0uYXJpYURldGFpbHNcIlxuICAgICAgICAgIFthcmlhRmxvd3RvXT1cIml0ZW0uYXJpYUZsb3d0b1wiXG4gICAgICAgICAgW2FyaWFJbnZhbGlkXT1cIml0ZW0uYXJpYUludmFsaWRcIlxuICAgICAgICAgIFthcmlhS2V5c2hvcnRjdXRzXT1cIml0ZW0uYXJpYUtleXNob3J0Y3V0c1wiXG4gICAgICAgICAgW2FyaWFPd25zXT1cIml0ZW0uYXJpYU93bnNcIlxuICAgICAgICAgIFthcmlhUmVsZXZhbnRdPVwiaXRlbS5hcmlhUmVsZXZhbnRcIlxuICAgICAgICAgIFthcmlhUm9sZWRlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYVJvbGVkZXNjcmlwdGlvblwiXG4gICAgICAgICAgW2FyaWFSb3djb3VudF09XCJpdGVtLmFyaWFSb3djb3VudFwiXG4gICAgICAgICAgW2FyaWFSb3dpbmRleF09XCJpdGVtLmFyaWFSb3dpbmRleFwiXG4gICAgICAgICAgW2FyaWFSb3dpbmRleHRleHRdPVwiaXRlbS5hcmlhUm93aW5kZXh0ZXh0XCJcbiAgICAgICAgICBbYXJpYVJvd3NwYW5dPVwiaXRlbS5hcmlhUm93c3BhblwiXG4gICAgICAgICAgW3RpdGxlXT1cIml0ZW0udGl0bGVcIlxuICAgICAgICAgIFthbHRdPVwiaXRlbS5hbHRcIlxuICAgICAgICAgIFtsYW5nXT1cIml0ZW0ubGFuZ1wiXG4gICAgICAgICAgW2FjY2Vzc2tleV09XCJpdGVtLmFjY2Vzc2tleVwiXG4gICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJpdGVtLmF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgW2F1dG9mb2N1c109XCJpdGVtLmF1dG9mb2N1c1wiXG4gICAgICAgICAgW2NvbnRlbnRlZGl0YWJsZV09XCJpdGVtLmNvbnRlbnRlZGl0YWJsZVwiXG4gICAgICAgICAgW2Rpcl09XCJpdGVtLmRpclwiXG4gICAgICAgICAgW2RyYWdnYWJsZV09XCJpdGVtLmRyYWdnYWJsZVwiXG4gICAgICAgICAgW2VudGVya2V5aGludF09XCJpdGVtLmVudGVya2V5aGludFwiXG4gICAgICAgICAgW2hpZGRlbl09XCJpdGVtLmhpZGRlblwiXG4gICAgICAgICAgW2lucHV0bW9kZV09XCJpdGVtLmlucHV0bW9kZVwiXG4gICAgICAgICAgW3NwZWxsY2hlY2tdPVwiaXRlbS5zcGVsbGNoZWNrXCJcbiAgICAgICAgICBbdHJhbnNsYXRlXT1cIml0ZW0udHJhbnNsYXRlXCJcbiAgICAgICAgICBbYXJpYU11bHRpbGluZV09XCJpdGVtLmFyaWFNdWx0aWxpbmVcIlxuICAgICAgICAgIFtmb3JdPVwiaXRlbS5mb3JcIlxuICAgICAgICAgIFtmb3JtXT1cIml0ZW0uZm9ybVwiXG4gICAgICAgICAgW2hlYWRlcnNdPVwiaXRlbS5oZWFkZXJzXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXRlbS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgW3JlYWRvbmx5XT1cIml0ZW0ucmVhZG9ubHlcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJpdGVtLnJlcXVpcmVkXCI+PC9kZXN5LXNlbGVjdD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgI2l0ZW1JbnB1dD5cbiAgICAgICAgPGRlc3ktaW5wdXRcbiAgICAgICAgICBbaWRdPVwiaXRlbS5pZCA/IGl0ZW0uaWQgOiBpZCArICctJyArIGl0ZW0ubmFtZVwiXG4gICAgICAgICAgW2xhYmVsUmVmXT1cImdldEl0ZW1MYWJlbFJlZihpdGVtKVwiXG4gICAgICAgICAgW2xhYmVsRGF0YV09XCJnZXRJdGVtTGFiZWxEYXRhKGl0ZW0pXCJcbiAgICAgICAgICBbY2xhc3Nlc109XCJnZXRJdGVtQ2xhc3NlcyhpdGVtKVwiXG4gICAgICAgICAgW2Zvcm1Hcm91cENsYXNzZXNdPVwiaXRlbS5mb3JtR3JvdXBDbGFzc2VzXCJcbiAgICAgICAgICBbbmFtZV09XCJnZXRJdGVtTmFtZShpdGVtKVwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJnZXRJdGVtTmFtZShpdGVtKVwiXG4gICAgICAgICAgW3R5cGVdPVwiaXRlbS50eXBlID8gaXRlbS50eXBlIDogJ3RleHQnXCJcbiAgICAgICAgICBbaW5wdXRtb2RlXT1cIml0ZW0uaW5wdXRtb2RlXCJcbiAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIml0ZW0uYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICBbcGF0dGVybl09XCJpdGVtLnBhdHRlcm5cIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpdGVtLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgW21heGxlbmd0aF09XCJpdGVtLm1heGxlbmd0aFwiXG4gICAgICAgICAgW3JvbGVdPVwiaXRlbS5yb2xlXCJcbiAgICAgICAgICBbYXJpYUxhYmVsXT1cIml0ZW0uYXJpYUxhYmVsXCJcbiAgICAgICAgICBbYXJpYURlc2NyaWJlZEJ5XT1cImdldEl0ZW1BcmlhRGVzY3JpYmVkQnkoaXRlbSlcIlxuICAgICAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJpdGVtLmFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICBbYXJpYUhpZGRlbl09XCJpdGVtLmFyaWFIaWRkZW5cIlxuICAgICAgICAgIFthcmlhRGlzYWJsZWRdPVwiaXRlbS5hcmlhRGlzYWJsZWRcIlxuICAgICAgICAgIFthcmlhQ29udHJvbHNdPVwiaXRlbS5hcmlhQ29udHJvbHNcIlxuICAgICAgICAgIFthcmlhQ3VycmVudF09XCJpdGVtLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICBbYXJpYUxpdmVdPVwiaXRlbS5hcmlhTGl2ZVwiXG4gICAgICAgICAgW2FyaWFFeHBhbmRlZF09XCJpdGVtLmFyaWFFeHBhbmRlZFwiXG4gICAgICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICAgICAgICBbYXJpYUhhc1BvcHVwXT1cIml0ZW0uYXJpYUhhc1BvcHVwXCJcbiAgICAgICAgICBbdGFiaW5kZXhdPVwiaXRlbS50YWJpbmRleFwiXG4gICAgICAgICAgW2FyaWFNb2RhbF09XCJpdGVtLmFyaWFNb2RhbFwiXG4gICAgICAgICAgW2FyaWFDaGVja2VkXT1cIml0ZW0uYXJpYUNoZWNrZWRcIlxuICAgICAgICAgIFthcmlhUHJlc3NlZF09XCJpdGVtLmFyaWFQcmVzc2VkXCJcbiAgICAgICAgICBbYXJpYVJlYWRvbmx5XT1cIml0ZW0uYXJpYVJlYWRvbmx5XCJcbiAgICAgICAgICBbYXJpYVJlcXVpcmVkXT1cIml0ZW0uYXJpYVJlcXVpcmVkXCJcbiAgICAgICAgICBbYXJpYVNlbGVjdGVkXT1cIml0ZW0uYXJpYVNlbGVjdGVkXCJcbiAgICAgICAgICBbYXJpYVZhbHVlbWluXT1cIml0ZW0uYXJpYVZhbHVlbWluXCJcbiAgICAgICAgICBbYXJpYVZhbHVlbWF4XT1cIml0ZW0uYXJpYVZhbHVlbWF4XCJcbiAgICAgICAgICBbYXJpYVZhbHVlbm93XT1cIml0ZW0uYXJpYVZhbHVlbm93XCJcbiAgICAgICAgICBbYXJpYVZhbHVldGV4dF09XCJpdGVtLmFyaWFWYWx1ZXRleHRcIlxuICAgICAgICAgIFthcmlhT3JpZW50YXRpb25dPVwiaXRlbS5hcmlhT3JpZW50YXRpb25cIlxuICAgICAgICAgIFthcmlhTGV2ZWxdPVwiaXRlbS5hcmlhTGV2ZWxcIlxuICAgICAgICAgIFthcmlhTXVsdGlzZWxlY3RhYmxlXT1cIml0ZW0uYXJpYU11bHRpc2VsZWN0YWJsZVwiXG4gICAgICAgICAgW2FyaWFQbGFjZWhvbGRlcl09XCJpdGVtLmFyaWFQbGFjZWhvbGRlclwiXG4gICAgICAgICAgW2FyaWFQb3NpbnNldF09XCJpdGVtLmFyaWFQb3NpbnNldFwiXG4gICAgICAgICAgW2FyaWFTZXRzaXplXT1cIml0ZW0uYXJpYVNldHNpemVcIlxuICAgICAgICAgIFthcmlhU29ydF09XCJpdGVtLmFyaWFTb3J0XCJcbiAgICAgICAgICBbYXJpYUJ1c3ldPVwiaXRlbS5hcmlhQnVzeVwiXG4gICAgICAgICAgW2FyaWFEcm9wZWZmZWN0XT1cIml0ZW0uYXJpYURyb3BlZmZlY3RcIlxuICAgICAgICAgIFthcmlhR3JhYmJlZF09XCJpdGVtLmFyaWFHcmFiYmVkXCJcbiAgICAgICAgICBbYXJpYUFjdGl2ZWRlc2NlbmRhbnRdPVwiaXRlbS5hcmlhQWN0aXZlZGVzY2VuZGFudFwiXG4gICAgICAgICAgW2FyaWFBdG9taWNdPVwiaXRlbS5hcmlhQXRvbWljXCJcbiAgICAgICAgICBbYXJpYUF1dG9jb21wbGV0ZV09XCJpdGVtLmFyaWFBdXRvY29tcGxldGVcIlxuICAgICAgICAgIFthcmlhQnJhaWxsZWxhYmVsXT1cIml0ZW0uYXJpYUJyYWlsbGVsYWJlbFwiXG4gICAgICAgICAgW2FyaWFCcmFpbGxlcm9sZWRlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYUJyYWlsbGVyb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgIFthcmlhQ29sY291bnRdPVwiaXRlbS5hcmlhQ29sY291bnRcIlxuICAgICAgICAgIFthcmlhQ29saW5kZXhdPVwiaXRlbS5hcmlhQ29saW5kZXhcIlxuICAgICAgICAgIFthcmlhQ29saW5kZXh0ZXh0XT1cIml0ZW0uYXJpYUNvbGluZGV4dGV4dFwiXG4gICAgICAgICAgW2FyaWFDb2xzcGFuXT1cIml0ZW0uYXJpYUNvbHNwYW5cIlxuICAgICAgICAgIFthcmlhRGVzY3JpcHRpb25dPVwiaXRlbS5hcmlhRGVzY3JpcHRpb25cIlxuICAgICAgICAgIFthcmlhRGV0YWlsc109XCJpdGVtLmFyaWFEZXRhaWxzXCJcbiAgICAgICAgICBbYXJpYUZsb3d0b109XCJpdGVtLmFyaWFGbG93dG9cIlxuICAgICAgICAgIFthcmlhSW52YWxpZF09XCJpdGVtLmFyaWFJbnZhbGlkXCJcbiAgICAgICAgICBbYXJpYUtleXNob3J0Y3V0c109XCJpdGVtLmFyaWFLZXlzaG9ydGN1dHNcIlxuICAgICAgICAgIFthcmlhT3duc109XCJpdGVtLmFyaWFPd25zXCJcbiAgICAgICAgICBbYXJpYVJlbGV2YW50XT1cIml0ZW0uYXJpYVJlbGV2YW50XCJcbiAgICAgICAgICBbYXJpYVJvbGVkZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFSb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgIFthcmlhUm93Y291bnRdPVwiaXRlbS5hcmlhUm93Y291bnRcIlxuICAgICAgICAgIFthcmlhUm93aW5kZXhdPVwiaXRlbS5hcmlhUm93aW5kZXhcIlxuICAgICAgICAgIFthcmlhUm93aW5kZXh0ZXh0XT1cIml0ZW0uYXJpYVJvd2luZGV4dGV4dFwiXG4gICAgICAgICAgW2FyaWFSb3dzcGFuXT1cIml0ZW0uYXJpYVJvd3NwYW5cIlxuICAgICAgICAgIFt0aXRsZV09XCJpdGVtLnRpdGxlXCJcbiAgICAgICAgICBbYWx0XT1cIml0ZW0uYWx0XCJcbiAgICAgICAgICBbbGFuZ109XCJpdGVtLmxhbmdcIlxuICAgICAgICAgIFthY2Nlc3NrZXldPVwiaXRlbS5hY2Nlc3NrZXlcIlxuICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiaXRlbS5hdXRvY29tcGxldGVcIlxuICAgICAgICAgIFthdXRvZm9jdXNdPVwiaXRlbS5hdXRvZm9jdXNcIlxuICAgICAgICAgIFtjb250ZW50ZWRpdGFibGVdPVwiaXRlbS5jb250ZW50ZWRpdGFibGVcIlxuICAgICAgICAgIFtkaXJdPVwiaXRlbS5kaXJcIlxuICAgICAgICAgIFtkcmFnZ2FibGVdPVwiaXRlbS5kcmFnZ2FibGVcIlxuICAgICAgICAgIFtlbnRlcmtleWhpbnRdPVwiaXRlbS5lbnRlcmtleWhpbnRcIlxuICAgICAgICAgIFtoaWRkZW5dPVwiaXRlbS5oaWRkZW5cIlxuICAgICAgICAgIFtpbnB1dG1vZGVdPVwiaXRlbS5pbnB1dG1vZGVcIlxuICAgICAgICAgIFtzcGVsbGNoZWNrXT1cIml0ZW0uc3BlbGxjaGVja1wiXG4gICAgICAgICAgW3RyYW5zbGF0ZV09XCJpdGVtLnRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2FyaWFNdWx0aWxpbmVdPVwiaXRlbS5hcmlhTXVsdGlsaW5lXCJcbiAgICAgICAgICBbZm9yXT1cIml0ZW0uZm9yXCJcbiAgICAgICAgICBbZm9ybV09XCJpdGVtLmZvcm1cIlxuICAgICAgICAgIFtoZWFkZXJzXT1cIml0ZW0uaGVhZGVyc1wiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIml0ZW0ucGxhY2Vob2xkZXJcIlxuICAgICAgICAgIFtyZWFkb25seV09XCJpdGVtLnJlYWRvbmx5XCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwiaXRlbS5yZXF1aXJlZFwiPjwvZGVzeS1pbnB1dD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVGVtcGxhdGUtZHJpdmVuIGZvcm1zIC0tPlxuICA8ZGVzeS10ZW1wbGF0ZS1kcml2ZW4td3JhcHBlciAqbmdJZj1cImNvbnRyb2xDb250YWluZXIgJiYgbmdNb2RlbEdyb3VwXCI+XG4gICAgPGRpdlxuICAgICAgW25nTW9kZWxHcm91cF09XCJuZ01vZGVsR3JvdXBcIlxuICAgICAgW25nQ2xhc3NdPVwiY2xhc3NlcyA/IGNsYXNzZXMgOiAnZmxleCdcIlxuICAgICAgW2F0dHIuaWRdPVwiaWQgPyBpZCA6IG51bGxcIlxuICAgICAgW2Rlc3lBcHBBY2Nlc3NpYmlsaXR5XT1cInRoaXNcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0SXRlbXMoKTsgaW5kZXggYXMgaVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIGlzU2VsZWN0SXRlbShpdGVtKSA/IGl0ZW1TZWxlY3QgOiBpdGVtLmRpdmlkZXIgPyBpdGVtRGl2aWRlciA6IGl0ZW1JbnB1dDtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgaXRlbTogaXRlbSB9XG4gICAgICAgICAgXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbVNlbGVjdD5cbiAgICAgICAgICA8ZGVzeS1zZWxlY3RcbiAgICAgICAgICAgIFtpZF09XCJpdGVtLmlkID8gaXRlbS5pZCA6IGlkICsgJy0nICsgaXRlbS5uYW1lXCJcbiAgICAgICAgICAgIFtsYWJlbFJlZl09XCJnZXRJdGVtTGFiZWxSZWYoaXRlbSlcIlxuICAgICAgICAgICAgW2xhYmVsRGF0YV09XCJnZXRJdGVtTGFiZWxEYXRhKGl0ZW0pXCJcbiAgICAgICAgICAgIFtjbGFzc2VzXT1cImdldEl0ZW1DbGFzc2VzKGl0ZW0pXCJcbiAgICAgICAgICAgIFtmb3JtR3JvdXBDbGFzc2VzXT1cIml0ZW0uZm9ybUdyb3VwQ2xhc3Nlc1wiXG4gICAgICAgICAgICBbbmFtZV09XCJnZXRJdGVtTmFtZShpdGVtKVwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJpdGVtLnZhbHVlID09PSB1bmRlZmluZWQgPyBudWxsIDogaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkludGVybmFsQ2hhbmdlKGl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgW2l0ZW1zXT1cImdldEl0ZW1TZWxlY3RPcHRpb25zKGl0ZW0pXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgIFtyb2xlXT1cIml0ZW0ucm9sZVwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsXT1cIml0ZW0uYXJpYUxhYmVsXCJcbiAgICAgICAgICAgIFthcmlhRGVzY3JpYmVkQnldPVwiZ2V0SXRlbUFyaWFEZXNjcmliZWRCeShpdGVtKVwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiaXRlbS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICBbYXJpYUhpZGRlbl09XCJpdGVtLmFyaWFIaWRkZW5cIlxuICAgICAgICAgICAgW2FyaWFEaXNhYmxlZF09XCJpdGVtLmFyaWFEaXNhYmxlZFwiXG4gICAgICAgICAgICBbYXJpYUNvbnRyb2xzXT1cIml0ZW0uYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgIFthcmlhQ3VycmVudF09XCJpdGVtLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgIFthcmlhTGl2ZV09XCJpdGVtLmFyaWFMaXZlXCJcbiAgICAgICAgICAgIFthcmlhRXhwYW5kZWRdPVwiaXRlbS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICAgICAgICAgIFthcmlhSGFzUG9wdXBdPVwiaXRlbS5hcmlhSGFzUG9wdXBcIlxuICAgICAgICAgICAgW3RhYmluZGV4XT1cIml0ZW0udGFiaW5kZXhcIlxuICAgICAgICAgICAgW2FyaWFNb2RhbF09XCJpdGVtLmFyaWFNb2RhbFwiXG4gICAgICAgICAgICBbYXJpYUNoZWNrZWRdPVwiaXRlbS5hcmlhQ2hlY2tlZFwiXG4gICAgICAgICAgICBbYXJpYVByZXNzZWRdPVwiaXRlbS5hcmlhUHJlc3NlZFwiXG4gICAgICAgICAgICBbYXJpYVJlYWRvbmx5XT1cIml0ZW0uYXJpYVJlYWRvbmx5XCJcbiAgICAgICAgICAgIFthcmlhUmVxdWlyZWRdPVwiaXRlbS5hcmlhUmVxdWlyZWRcIlxuICAgICAgICAgICAgW2FyaWFTZWxlY3RlZF09XCJpdGVtLmFyaWFTZWxlY3RlZFwiXG4gICAgICAgICAgICBbYXJpYVZhbHVlbWluXT1cIml0ZW0uYXJpYVZhbHVlbWluXCJcbiAgICAgICAgICAgIFthcmlhVmFsdWVtYXhdPVwiaXRlbS5hcmlhVmFsdWVtYXhcIlxuICAgICAgICAgICAgW2FyaWFWYWx1ZW5vd109XCJpdGVtLmFyaWFWYWx1ZW5vd1wiXG4gICAgICAgICAgICBbYXJpYVZhbHVldGV4dF09XCJpdGVtLmFyaWFWYWx1ZXRleHRcIlxuICAgICAgICAgICAgW2FyaWFPcmllbnRhdGlvbl09XCJpdGVtLmFyaWFPcmllbnRhdGlvblwiXG4gICAgICAgICAgICBbYXJpYUxldmVsXT1cIml0ZW0uYXJpYUxldmVsXCJcbiAgICAgICAgICAgIFthcmlhTXVsdGlzZWxlY3RhYmxlXT1cIml0ZW0uYXJpYU11bHRpc2VsZWN0YWJsZVwiXG4gICAgICAgICAgICBbYXJpYVBsYWNlaG9sZGVyXT1cIml0ZW0uYXJpYVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFthcmlhUG9zaW5zZXRdPVwiaXRlbS5hcmlhUG9zaW5zZXRcIlxuICAgICAgICAgICAgW2FyaWFTZXRzaXplXT1cIml0ZW0uYXJpYVNldHNpemVcIlxuICAgICAgICAgICAgW2FyaWFTb3J0XT1cIml0ZW0uYXJpYVNvcnRcIlxuICAgICAgICAgICAgW2FyaWFCdXN5XT1cIml0ZW0uYXJpYUJ1c3lcIlxuICAgICAgICAgICAgW2FyaWFEcm9wZWZmZWN0XT1cIml0ZW0uYXJpYURyb3BlZmZlY3RcIlxuICAgICAgICAgICAgW2FyaWFHcmFiYmVkXT1cIml0ZW0uYXJpYUdyYWJiZWRcIlxuICAgICAgICAgICAgW2FyaWFBY3RpdmVkZXNjZW5kYW50XT1cIml0ZW0uYXJpYUFjdGl2ZWRlc2NlbmRhbnRcIlxuICAgICAgICAgICAgW2FyaWFBdG9taWNdPVwiaXRlbS5hcmlhQXRvbWljXCJcbiAgICAgICAgICAgIFthcmlhQXV0b2NvbXBsZXRlXT1cIml0ZW0uYXJpYUF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICBbYXJpYUJyYWlsbGVsYWJlbF09XCJpdGVtLmFyaWFCcmFpbGxlbGFiZWxcIlxuICAgICAgICAgICAgW2FyaWFCcmFpbGxlcm9sZWRlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYUJyYWlsbGVyb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgW2FyaWFDb2xjb3VudF09XCJpdGVtLmFyaWFDb2xjb3VudFwiXG4gICAgICAgICAgICBbYXJpYUNvbGluZGV4XT1cIml0ZW0uYXJpYUNvbGluZGV4XCJcbiAgICAgICAgICAgIFthcmlhQ29saW5kZXh0ZXh0XT1cIml0ZW0uYXJpYUNvbGluZGV4dGV4dFwiXG4gICAgICAgICAgICBbYXJpYUNvbHNwYW5dPVwiaXRlbS5hcmlhQ29sc3BhblwiXG4gICAgICAgICAgICBbYXJpYURlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYURlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIFthcmlhRGV0YWlsc109XCJpdGVtLmFyaWFEZXRhaWxzXCJcbiAgICAgICAgICAgIFthcmlhRmxvd3RvXT1cIml0ZW0uYXJpYUZsb3d0b1wiXG4gICAgICAgICAgICBbYXJpYUludmFsaWRdPVwiaXRlbS5hcmlhSW52YWxpZFwiXG4gICAgICAgICAgICBbYXJpYUtleXNob3J0Y3V0c109XCJpdGVtLmFyaWFLZXlzaG9ydGN1dHNcIlxuICAgICAgICAgICAgW2FyaWFPd25zXT1cIml0ZW0uYXJpYU93bnNcIlxuICAgICAgICAgICAgW2FyaWFSZWxldmFudF09XCJpdGVtLmFyaWFSZWxldmFudFwiXG4gICAgICAgICAgICBbYXJpYVJvbGVkZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFSb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgW2FyaWFSb3djb3VudF09XCJpdGVtLmFyaWFSb3djb3VudFwiXG4gICAgICAgICAgICBbYXJpYVJvd2luZGV4XT1cIml0ZW0uYXJpYVJvd2luZGV4XCJcbiAgICAgICAgICAgIFthcmlhUm93aW5kZXh0ZXh0XT1cIml0ZW0uYXJpYVJvd2luZGV4dGV4dFwiXG4gICAgICAgICAgICBbYXJpYVJvd3NwYW5dPVwiaXRlbS5hcmlhUm93c3BhblwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiaXRlbS50aXRsZVwiXG4gICAgICAgICAgICBbYWx0XT1cIml0ZW0uYWx0XCJcbiAgICAgICAgICAgIFtsYW5nXT1cIml0ZW0ubGFuZ1wiXG4gICAgICAgICAgICBbYWNjZXNza2V5XT1cIml0ZW0uYWNjZXNza2V5XCJcbiAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiaXRlbS5hdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgW2F1dG9mb2N1c109XCJpdGVtLmF1dG9mb2N1c1wiXG4gICAgICAgICAgICBbY29udGVudGVkaXRhYmxlXT1cIml0ZW0uY29udGVudGVkaXRhYmxlXCJcbiAgICAgICAgICAgIFtkaXJdPVwiaXRlbS5kaXJcIlxuICAgICAgICAgICAgW2RyYWdnYWJsZV09XCJpdGVtLmRyYWdnYWJsZVwiXG4gICAgICAgICAgICBbZW50ZXJrZXloaW50XT1cIml0ZW0uZW50ZXJrZXloaW50XCJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwiaXRlbS5oaWRkZW5cIlxuICAgICAgICAgICAgW2lucHV0bW9kZV09XCJpdGVtLmlucHV0bW9kZVwiXG4gICAgICAgICAgICBbc3BlbGxjaGVja109XCJpdGVtLnNwZWxsY2hlY2tcIlxuICAgICAgICAgICAgW3RyYW5zbGF0ZV09XCJpdGVtLnRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbYXJpYU11bHRpbGluZV09XCJpdGVtLmFyaWFNdWx0aWxpbmVcIlxuICAgICAgICAgICAgW2Zvcl09XCJpdGVtLmZvclwiXG4gICAgICAgICAgICBbZm9ybV09XCJpdGVtLmZvcm1cIlxuICAgICAgICAgICAgW2hlYWRlcnNdPVwiaXRlbS5oZWFkZXJzXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpdGVtLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJpdGVtLnJlYWRvbmx5XCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpdGVtLnJlcXVpcmVkXCI+PC9kZXN5LXNlbGVjdD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNpdGVtSW5wdXQ+XG4gICAgICAgICAgPGRlc3ktaW5wdXRcbiAgICAgICAgICAgIFtpZF09XCJpdGVtLmlkID8gaXRlbS5pZCA6IGlkICsgJy0nICsgaXRlbS5uYW1lXCJcbiAgICAgICAgICAgIFtsYWJlbFJlZl09XCJnZXRJdGVtTGFiZWxSZWYoaXRlbSlcIlxuICAgICAgICAgICAgW2xhYmVsRGF0YV09XCJnZXRJdGVtTGFiZWxEYXRhKGl0ZW0pXCJcbiAgICAgICAgICAgIFtjbGFzc2VzXT1cImdldEl0ZW1DbGFzc2VzKGl0ZW0pXCJcbiAgICAgICAgICAgIFtmb3JtR3JvdXBDbGFzc2VzXT1cIml0ZW0uZm9ybUdyb3VwQ2xhc3Nlc1wiXG4gICAgICAgICAgICBbbmFtZV09XCJnZXRJdGVtTmFtZShpdGVtKVwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uSW50ZXJuYWxDaGFuZ2UoaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICBbdHlwZV09XCJpdGVtLnR5cGUgPyBpdGVtLnR5cGUgOiAndGV4dCdcIlxuICAgICAgICAgICAgW2lucHV0bW9kZV09XCJpdGVtLmlucHV0bW9kZVwiXG4gICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIml0ZW0uYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgIFtwYXR0ZXJuXT1cIml0ZW0ucGF0dGVyblwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXRlbS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICBbbWF4bGVuZ3RoXT1cIml0ZW0ubWF4bGVuZ3RoXCJcbiAgICAgICAgICAgIFtyb2xlXT1cIml0ZW0ucm9sZVwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsXT1cIml0ZW0uYXJpYUxhYmVsXCJcbiAgICAgICAgICAgIFthcmlhRGVzY3JpYmVkQnldPVwiZ2V0SXRlbUFyaWFEZXNjcmliZWRCeShpdGVtKVwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiaXRlbS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICBbYXJpYUhpZGRlbl09XCJpdGVtLmFyaWFIaWRkZW5cIlxuICAgICAgICAgICAgW2FyaWFEaXNhYmxlZF09XCJpdGVtLmFyaWFEaXNhYmxlZFwiXG4gICAgICAgICAgICBbYXJpYUNvbnRyb2xzXT1cIml0ZW0uYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgIFthcmlhQ3VycmVudF09XCJpdGVtLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgIFthcmlhTGl2ZV09XCJpdGVtLmFyaWFMaXZlXCJcbiAgICAgICAgICAgIFthcmlhRXhwYW5kZWRdPVwiaXRlbS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICAgICAgICAgIFthcmlhSGFzUG9wdXBdPVwiaXRlbS5hcmlhSGFzUG9wdXBcIlxuICAgICAgICAgICAgW3RhYmluZGV4XT1cIml0ZW0udGFiaW5kZXhcIlxuICAgICAgICAgICAgW2FyaWFNb2RhbF09XCJpdGVtLmFyaWFNb2RhbFwiXG4gICAgICAgICAgICBbYXJpYUNoZWNrZWRdPVwiaXRlbS5hcmlhQ2hlY2tlZFwiXG4gICAgICAgICAgICBbYXJpYVByZXNzZWRdPVwiaXRlbS5hcmlhUHJlc3NlZFwiXG4gICAgICAgICAgICBbYXJpYVJlYWRvbmx5XT1cIml0ZW0uYXJpYVJlYWRvbmx5XCJcbiAgICAgICAgICAgIFthcmlhUmVxdWlyZWRdPVwiaXRlbS5hcmlhUmVxdWlyZWRcIlxuICAgICAgICAgICAgW2FyaWFTZWxlY3RlZF09XCJpdGVtLmFyaWFTZWxlY3RlZFwiXG4gICAgICAgICAgICBbYXJpYVZhbHVlbWluXT1cIml0ZW0uYXJpYVZhbHVlbWluXCJcbiAgICAgICAgICAgIFthcmlhVmFsdWVtYXhdPVwiaXRlbS5hcmlhVmFsdWVtYXhcIlxuICAgICAgICAgICAgW2FyaWFWYWx1ZW5vd109XCJpdGVtLmFyaWFWYWx1ZW5vd1wiXG4gICAgICAgICAgICBbYXJpYVZhbHVldGV4dF09XCJpdGVtLmFyaWFWYWx1ZXRleHRcIlxuICAgICAgICAgICAgW2FyaWFPcmllbnRhdGlvbl09XCJpdGVtLmFyaWFPcmllbnRhdGlvblwiXG4gICAgICAgICAgICBbYXJpYUxldmVsXT1cIml0ZW0uYXJpYUxldmVsXCJcbiAgICAgICAgICAgIFthcmlhTXVsdGlzZWxlY3RhYmxlXT1cIml0ZW0uYXJpYU11bHRpc2VsZWN0YWJsZVwiXG4gICAgICAgICAgICBbYXJpYVBsYWNlaG9sZGVyXT1cIml0ZW0uYXJpYVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFthcmlhUG9zaW5zZXRdPVwiaXRlbS5hcmlhUG9zaW5zZXRcIlxuICAgICAgICAgICAgW2FyaWFTZXRzaXplXT1cIml0ZW0uYXJpYVNldHNpemVcIlxuICAgICAgICAgICAgW2FyaWFTb3J0XT1cIml0ZW0uYXJpYVNvcnRcIlxuICAgICAgICAgICAgW2FyaWFCdXN5XT1cIml0ZW0uYXJpYUJ1c3lcIlxuICAgICAgICAgICAgW2FyaWFEcm9wZWZmZWN0XT1cIml0ZW0uYXJpYURyb3BlZmZlY3RcIlxuICAgICAgICAgICAgW2FyaWFHcmFiYmVkXT1cIml0ZW0uYXJpYUdyYWJiZWRcIlxuICAgICAgICAgICAgW2FyaWFBY3RpdmVkZXNjZW5kYW50XT1cIml0ZW0uYXJpYUFjdGl2ZWRlc2NlbmRhbnRcIlxuICAgICAgICAgICAgW2FyaWFBdG9taWNdPVwiaXRlbS5hcmlhQXRvbWljXCJcbiAgICAgICAgICAgIFthcmlhQXV0b2NvbXBsZXRlXT1cIml0ZW0uYXJpYUF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICBbYXJpYUJyYWlsbGVsYWJlbF09XCJpdGVtLmFyaWFCcmFpbGxlbGFiZWxcIlxuICAgICAgICAgICAgW2FyaWFCcmFpbGxlcm9sZWRlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYUJyYWlsbGVyb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgW2FyaWFDb2xjb3VudF09XCJpdGVtLmFyaWFDb2xjb3VudFwiXG4gICAgICAgICAgICBbYXJpYUNvbGluZGV4XT1cIml0ZW0uYXJpYUNvbGluZGV4XCJcbiAgICAgICAgICAgIFthcmlhQ29saW5kZXh0ZXh0XT1cIml0ZW0uYXJpYUNvbGluZGV4dGV4dFwiXG4gICAgICAgICAgICBbYXJpYUNvbHNwYW5dPVwiaXRlbS5hcmlhQ29sc3BhblwiXG4gICAgICAgICAgICBbYXJpYURlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYURlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIFthcmlhRGV0YWlsc109XCJpdGVtLmFyaWFEZXRhaWxzXCJcbiAgICAgICAgICAgIFthcmlhRmxvd3RvXT1cIml0ZW0uYXJpYUZsb3d0b1wiXG4gICAgICAgICAgICBbYXJpYUludmFsaWRdPVwiaXRlbS5hcmlhSW52YWxpZFwiXG4gICAgICAgICAgICBbYXJpYUtleXNob3J0Y3V0c109XCJpdGVtLmFyaWFLZXlzaG9ydGN1dHNcIlxuICAgICAgICAgICAgW2FyaWFPd25zXT1cIml0ZW0uYXJpYU93bnNcIlxuICAgICAgICAgICAgW2FyaWFSZWxldmFudF09XCJpdGVtLmFyaWFSZWxldmFudFwiXG4gICAgICAgICAgICBbYXJpYVJvbGVkZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFSb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgW2FyaWFSb3djb3VudF09XCJpdGVtLmFyaWFSb3djb3VudFwiXG4gICAgICAgICAgICBbYXJpYVJvd2luZGV4XT1cIml0ZW0uYXJpYVJvd2luZGV4XCJcbiAgICAgICAgICAgIFthcmlhUm93aW5kZXh0ZXh0XT1cIml0ZW0uYXJpYVJvd2luZGV4dGV4dFwiXG4gICAgICAgICAgICBbYXJpYVJvd3NwYW5dPVwiaXRlbS5hcmlhUm93c3BhblwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiaXRlbS50aXRsZVwiXG4gICAgICAgICAgICBbYWx0XT1cIml0ZW0uYWx0XCJcbiAgICAgICAgICAgIFtsYW5nXT1cIml0ZW0ubGFuZ1wiXG4gICAgICAgICAgICBbYWNjZXNza2V5XT1cIml0ZW0uYWNjZXNza2V5XCJcbiAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiaXRlbS5hdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgW2F1dG9mb2N1c109XCJpdGVtLmF1dG9mb2N1c1wiXG4gICAgICAgICAgICBbY29udGVudGVkaXRhYmxlXT1cIml0ZW0uY29udGVudGVkaXRhYmxlXCJcbiAgICAgICAgICAgIFtkaXJdPVwiaXRlbS5kaXJcIlxuICAgICAgICAgICAgW2RyYWdnYWJsZV09XCJpdGVtLmRyYWdnYWJsZVwiXG4gICAgICAgICAgICBbZW50ZXJrZXloaW50XT1cIml0ZW0uZW50ZXJrZXloaW50XCJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwiaXRlbS5oaWRkZW5cIlxuICAgICAgICAgICAgW2lucHV0bW9kZV09XCJpdGVtLmlucHV0bW9kZVwiXG4gICAgICAgICAgICBbc3BlbGxjaGVja109XCJpdGVtLnNwZWxsY2hlY2tcIlxuICAgICAgICAgICAgW3RyYW5zbGF0ZV09XCJpdGVtLnRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbYXJpYU11bHRpbGluZV09XCJpdGVtLmFyaWFNdWx0aWxpbmVcIlxuICAgICAgICAgICAgW2Zvcl09XCJpdGVtLmZvclwiXG4gICAgICAgICAgICBbZm9ybV09XCJpdGVtLmZvcm1cIlxuICAgICAgICAgICAgW2hlYWRlcnNdPVwiaXRlbS5oZWFkZXJzXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpdGVtLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJpdGVtLnJlYWRvbmx5XCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpdGVtLnJlcXVpcmVkXCI+PC9kZXN5LWlucHV0PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGVzeS10ZW1wbGF0ZS1kcml2ZW4td3JhcHBlcj5cblxuICA8IS0tIFdpdGggbmdNb2RlbC0tPlxuICA8ZGl2XG4gICAgKm5nSWY9XCIhY29udHJvbENvbnRhaW5lclwiXG4gICAgW25nQ2xhc3NdPVwiY2xhc3NlcyA/IGNsYXNzZXMgOiAnZmxleCdcIlxuICAgIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCJcbiAgICBbZGVzeUFwcEFjY2Vzc2liaWxpdHldPVwidGhpc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0SXRlbXMoKTsgaW5kZXggYXMgaVwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIGlzU2VsZWN0SXRlbShpdGVtKSA/IGl0ZW1TZWxlY3QgOiBpdGVtLmRpdmlkZXIgPyBpdGVtRGl2aWRlciA6IGl0ZW1JbnB1dDtcbiAgICAgICAgICBjb250ZXh0OiB7IGl0ZW06IGl0ZW0gfVxuICAgICAgICBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbVNlbGVjdD5cbiAgICAgICAgPGRlc3ktc2VsZWN0XG4gICAgICAgICAgW2lkXT1cIml0ZW0uaWQgPyBpdGVtLmlkIDogaWQgKyAnLScgKyBpdGVtLm5hbWVcIlxuICAgICAgICAgIFtsYWJlbFJlZl09XCJnZXRJdGVtTGFiZWxSZWYoaXRlbSlcIlxuICAgICAgICAgIFtsYWJlbERhdGFdPVwiZ2V0SXRlbUxhYmVsRGF0YShpdGVtKVwiXG4gICAgICAgICAgW2NsYXNzZXNdPVwiZ2V0SXRlbUNsYXNzZXMoaXRlbSlcIlxuICAgICAgICAgIFtmb3JtR3JvdXBDbGFzc2VzXT1cIml0ZW0uZm9ybUdyb3VwQ2xhc3Nlc1wiXG4gICAgICAgICAgW25hbWVdPVwiZ2V0SXRlbU5hbWUoaXRlbSlcIlxuICAgICAgICAgIFtpdGVtc109XCJnZXRJdGVtU2VsZWN0T3B0aW9ucyhpdGVtKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uSW50ZXJuYWxDaGFuZ2UoaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgW3JvbGVdPVwiaXRlbS5yb2xlXCJcbiAgICAgICAgICBbYXJpYUxhYmVsXT1cIml0ZW0uYXJpYUxhYmVsXCJcbiAgICAgICAgICBbYXJpYURlc2NyaWJlZEJ5XT1cImdldEl0ZW1BcmlhRGVzY3JpYmVkQnkoaXRlbSlcIlxuICAgICAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJpdGVtLmFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICBbYXJpYUhpZGRlbl09XCJpdGVtLmFyaWFIaWRkZW5cIlxuICAgICAgICAgIFthcmlhRGlzYWJsZWRdPVwiaXRlbS5hcmlhRGlzYWJsZWRcIlxuICAgICAgICAgIFthcmlhQ29udHJvbHNdPVwiaXRlbS5hcmlhQ29udHJvbHNcIlxuICAgICAgICAgIFthcmlhQ3VycmVudF09XCJpdGVtLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICBbYXJpYUxpdmVdPVwiaXRlbS5hcmlhTGl2ZVwiXG4gICAgICAgICAgW2FyaWFFeHBhbmRlZF09XCJpdGVtLmFyaWFFeHBhbmRlZFwiXG4gICAgICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICAgICAgICBbYXJpYUhhc1BvcHVwXT1cIml0ZW0uYXJpYUhhc1BvcHVwXCJcbiAgICAgICAgICBbdGFiaW5kZXhdPVwiaXRlbS50YWJpbmRleFwiXG4gICAgICAgICAgW2FyaWFNb2RhbF09XCJpdGVtLmFyaWFNb2RhbFwiXG4gICAgICAgICAgW2FyaWFDaGVja2VkXT1cIml0ZW0uYXJpYUNoZWNrZWRcIlxuICAgICAgICAgIFthcmlhUHJlc3NlZF09XCJpdGVtLmFyaWFQcmVzc2VkXCJcbiAgICAgICAgICBbYXJpYVJlYWRvbmx5XT1cIml0ZW0uYXJpYVJlYWRvbmx5XCJcbiAgICAgICAgICBbYXJpYVJlcXVpcmVkXT1cIml0ZW0uYXJpYVJlcXVpcmVkXCJcbiAgICAgICAgICBbYXJpYVNlbGVjdGVkXT1cIml0ZW0uYXJpYVNlbGVjdGVkXCJcbiAgICAgICAgICBbYXJpYVZhbHVlbWluXT1cIml0ZW0uYXJpYVZhbHVlbWluXCJcbiAgICAgICAgICBbYXJpYVZhbHVlbWF4XT1cIml0ZW0uYXJpYVZhbHVlbWF4XCJcbiAgICAgICAgICBbYXJpYVZhbHVlbm93XT1cIml0ZW0uYXJpYVZhbHVlbm93XCJcbiAgICAgICAgICBbYXJpYVZhbHVldGV4dF09XCJpdGVtLmFyaWFWYWx1ZXRleHRcIlxuICAgICAgICAgIFthcmlhT3JpZW50YXRpb25dPVwiaXRlbS5hcmlhT3JpZW50YXRpb25cIlxuICAgICAgICAgIFthcmlhTGV2ZWxdPVwiaXRlbS5hcmlhTGV2ZWxcIlxuICAgICAgICAgIFthcmlhTXVsdGlzZWxlY3RhYmxlXT1cIml0ZW0uYXJpYU11bHRpc2VsZWN0YWJsZVwiXG4gICAgICAgICAgW2FyaWFQbGFjZWhvbGRlcl09XCJpdGVtLmFyaWFQbGFjZWhvbGRlclwiXG4gICAgICAgICAgW2FyaWFQb3NpbnNldF09XCJpdGVtLmFyaWFQb3NpbnNldFwiXG4gICAgICAgICAgW2FyaWFTZXRzaXplXT1cIml0ZW0uYXJpYVNldHNpemVcIlxuICAgICAgICAgIFthcmlhU29ydF09XCJpdGVtLmFyaWFTb3J0XCJcbiAgICAgICAgICBbYXJpYUJ1c3ldPVwiaXRlbS5hcmlhQnVzeVwiXG4gICAgICAgICAgW2FyaWFEcm9wZWZmZWN0XT1cIml0ZW0uYXJpYURyb3BlZmZlY3RcIlxuICAgICAgICAgIFthcmlhR3JhYmJlZF09XCJpdGVtLmFyaWFHcmFiYmVkXCJcbiAgICAgICAgICBbYXJpYUFjdGl2ZWRlc2NlbmRhbnRdPVwiaXRlbS5hcmlhQWN0aXZlZGVzY2VuZGFudFwiXG4gICAgICAgICAgW2FyaWFBdG9taWNdPVwiaXRlbS5hcmlhQXRvbWljXCJcbiAgICAgICAgICBbYXJpYUF1dG9jb21wbGV0ZV09XCJpdGVtLmFyaWFBdXRvY29tcGxldGVcIlxuICAgICAgICAgIFthcmlhQnJhaWxsZWxhYmVsXT1cIml0ZW0uYXJpYUJyYWlsbGVsYWJlbFwiXG4gICAgICAgICAgW2FyaWFCcmFpbGxlcm9sZWRlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYUJyYWlsbGVyb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgIFthcmlhQ29sY291bnRdPVwiaXRlbS5hcmlhQ29sY291bnRcIlxuICAgICAgICAgIFthcmlhQ29saW5kZXhdPVwiaXRlbS5hcmlhQ29saW5kZXhcIlxuICAgICAgICAgIFthcmlhQ29saW5kZXh0ZXh0XT1cIml0ZW0uYXJpYUNvbGluZGV4dGV4dFwiXG4gICAgICAgICAgW2FyaWFDb2xzcGFuXT1cIml0ZW0uYXJpYUNvbHNwYW5cIlxuICAgICAgICAgIFthcmlhRGVzY3JpcHRpb25dPVwiaXRlbS5hcmlhRGVzY3JpcHRpb25cIlxuICAgICAgICAgIFthcmlhRGV0YWlsc109XCJpdGVtLmFyaWFEZXRhaWxzXCJcbiAgICAgICAgICBbYXJpYUZsb3d0b109XCJpdGVtLmFyaWFGbG93dG9cIlxuICAgICAgICAgIFthcmlhSW52YWxpZF09XCJpdGVtLmFyaWFJbnZhbGlkXCJcbiAgICAgICAgICBbYXJpYUtleXNob3J0Y3V0c109XCJpdGVtLmFyaWFLZXlzaG9ydGN1dHNcIlxuICAgICAgICAgIFthcmlhT3duc109XCJpdGVtLmFyaWFPd25zXCJcbiAgICAgICAgICBbYXJpYVJlbGV2YW50XT1cIml0ZW0uYXJpYVJlbGV2YW50XCJcbiAgICAgICAgICBbYXJpYVJvbGVkZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFSb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgIFthcmlhUm93Y291bnRdPVwiaXRlbS5hcmlhUm93Y291bnRcIlxuICAgICAgICAgIFthcmlhUm93aW5kZXhdPVwiaXRlbS5hcmlhUm93aW5kZXhcIlxuICAgICAgICAgIFthcmlhUm93aW5kZXh0ZXh0XT1cIml0ZW0uYXJpYVJvd2luZGV4dGV4dFwiXG4gICAgICAgICAgW2FyaWFSb3dzcGFuXT1cIml0ZW0uYXJpYVJvd3NwYW5cIlxuICAgICAgICAgIFt0YWJpbmRleF09XCJpdGVtLnRhYmluZGV4XCJcbiAgICAgICAgICBbdGl0bGVdPVwiaXRlbS50aXRsZVwiXG4gICAgICAgICAgW2FsdF09XCJpdGVtLmFsdFwiXG4gICAgICAgICAgW2xhbmddPVwiaXRlbS5sYW5nXCJcbiAgICAgICAgICBbYWNjZXNza2V5XT1cIml0ZW0uYWNjZXNza2V5XCJcbiAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIml0ZW0uYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICBbYXV0b2ZvY3VzXT1cIml0ZW0uYXV0b2ZvY3VzXCJcbiAgICAgICAgICBbY29udGVudGVkaXRhYmxlXT1cIml0ZW0uY29udGVudGVkaXRhYmxlXCJcbiAgICAgICAgICBbZGlyXT1cIml0ZW0uZGlyXCJcbiAgICAgICAgICBbZHJhZ2dhYmxlXT1cIml0ZW0uZHJhZ2dhYmxlXCJcbiAgICAgICAgICBbZW50ZXJrZXloaW50XT1cIml0ZW0uZW50ZXJrZXloaW50XCJcbiAgICAgICAgICBbaGlkZGVuXT1cIml0ZW0uaGlkZGVuXCJcbiAgICAgICAgICBbaW5wdXRtb2RlXT1cIml0ZW0uaW5wdXRtb2RlXCJcbiAgICAgICAgICBbc3BlbGxjaGVja109XCJpdGVtLnNwZWxsY2hlY2tcIlxuICAgICAgICAgIFt0cmFuc2xhdGVdPVwiaXRlbS50cmFuc2xhdGVcIlxuICAgICAgICAgIFthcmlhTXVsdGlsaW5lXT1cIml0ZW0uYXJpYU11bHRpbGluZVwiXG4gICAgICAgICAgW2Zvcl09XCJpdGVtLmZvclwiXG4gICAgICAgICAgW2Zvcm1dPVwiaXRlbS5mb3JtXCJcbiAgICAgICAgICBbaGVhZGVyc109XCJpdGVtLmhlYWRlcnNcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpdGVtLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwiaXRlbS5yZWFkb25seVwiXG4gICAgICAgICAgW3JlcXVpcmVkXT1cIml0ZW0ucmVxdWlyZWRcIj48L2Rlc3ktc2VsZWN0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbUlucHV0PlxuICAgICAgICA8ZGVzeS1pbnB1dFxuICAgICAgICAgIFtpZF09XCJpdGVtLmlkID8gaXRlbS5pZCA6IGlkICsgJy0nICsgaXRlbS5uYW1lXCJcbiAgICAgICAgICBbbGFiZWxSZWZdPVwiZ2V0SXRlbUxhYmVsUmVmKGl0ZW0pXCJcbiAgICAgICAgICBbbGFiZWxEYXRhXT1cImdldEl0ZW1MYWJlbERhdGEoaXRlbSlcIlxuICAgICAgICAgIFtjbGFzc2VzXT1cImdldEl0ZW1DbGFzc2VzKGl0ZW0pXCJcbiAgICAgICAgICBbZm9ybUdyb3VwQ2xhc3Nlc109XCJpdGVtLmZvcm1Hcm91cENsYXNzZXNcIlxuICAgICAgICAgIFtuYW1lXT1cImdldEl0ZW1OYW1lKGl0ZW0pXCJcbiAgICAgICAgICBbbmdNb2RlbF09XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkludGVybmFsQ2hhbmdlKGl0ZW0sICRldmVudClcIlxuICAgICAgICAgIFt0eXBlXT1cIml0ZW0udHlwZSA/IGl0ZW0udHlwZSA6ICd0ZXh0J1wiXG4gICAgICAgICAgW2lucHV0bW9kZV09XCJpdGVtLmlucHV0bW9kZVwiXG4gICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJpdGVtLmF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgW3BhdHRlcm5dPVwiaXRlbS5wYXR0ZXJuXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXRlbS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgIFttYXhsZW5ndGhdPVwiaXRlbS5tYXhsZW5ndGhcIlxuICAgICAgICAgIFtyb2xlXT1cIml0ZW0ucm9sZVwiXG4gICAgICAgICAgW2FyaWFMYWJlbF09XCJpdGVtLmFyaWFMYWJlbFwiXG4gICAgICAgICAgW2FyaWFEZXNjcmliZWRCeV09XCJnZXRJdGVtQXJpYURlc2NyaWJlZEJ5KGl0ZW0pXCJcbiAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiaXRlbS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgW2FyaWFIaWRkZW5dPVwiaXRlbS5hcmlhSGlkZGVuXCJcbiAgICAgICAgICBbYXJpYURpc2FibGVkXT1cIml0ZW0uYXJpYURpc2FibGVkXCJcbiAgICAgICAgICBbYXJpYUNvbnRyb2xzXT1cIml0ZW0uYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICBbYXJpYUN1cnJlbnRdPVwiaXRlbS5hcmlhQ3VycmVudFwiXG4gICAgICAgICAgW2FyaWFMaXZlXT1cIml0ZW0uYXJpYUxpdmVcIlxuICAgICAgICAgIFthcmlhRXhwYW5kZWRdPVwiaXRlbS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgIFthcmlhRXJyb3JNZXNzYWdlXT1cImdldEVycm9ySWQoKVwiXG4gICAgICAgICAgW2FyaWFIYXNQb3B1cF09XCJpdGVtLmFyaWFIYXNQb3B1cFwiXG4gICAgICAgICAgW3RhYmluZGV4XT1cIml0ZW0udGFiaW5kZXhcIlxuICAgICAgICAgIFthcmlhTW9kYWxdPVwiaXRlbS5hcmlhTW9kYWxcIlxuICAgICAgICAgIFthcmlhQ2hlY2tlZF09XCJpdGVtLmFyaWFDaGVja2VkXCJcbiAgICAgICAgICBbYXJpYVByZXNzZWRdPVwiaXRlbS5hcmlhUHJlc3NlZFwiXG4gICAgICAgICAgW2FyaWFSZWFkb25seV09XCJpdGVtLmFyaWFSZWFkb25seVwiXG4gICAgICAgICAgW2FyaWFSZXF1aXJlZF09XCJpdGVtLmFyaWFSZXF1aXJlZFwiXG4gICAgICAgICAgW2FyaWFTZWxlY3RlZF09XCJpdGVtLmFyaWFTZWxlY3RlZFwiXG4gICAgICAgICAgW2FyaWFWYWx1ZW1pbl09XCJpdGVtLmFyaWFWYWx1ZW1pblwiXG4gICAgICAgICAgW2FyaWFWYWx1ZW1heF09XCJpdGVtLmFyaWFWYWx1ZW1heFwiXG4gICAgICAgICAgW2FyaWFWYWx1ZW5vd109XCJpdGVtLmFyaWFWYWx1ZW5vd1wiXG4gICAgICAgICAgW2FyaWFWYWx1ZXRleHRdPVwiaXRlbS5hcmlhVmFsdWV0ZXh0XCJcbiAgICAgICAgICBbYXJpYU9yaWVudGF0aW9uXT1cIml0ZW0uYXJpYU9yaWVudGF0aW9uXCJcbiAgICAgICAgICBbYXJpYUxldmVsXT1cIml0ZW0uYXJpYUxldmVsXCJcbiAgICAgICAgICBbYXJpYU11bHRpc2VsZWN0YWJsZV09XCJpdGVtLmFyaWFNdWx0aXNlbGVjdGFibGVcIlxuICAgICAgICAgIFthcmlhUGxhY2Vob2xkZXJdPVwiaXRlbS5hcmlhUGxhY2Vob2xkZXJcIlxuICAgICAgICAgIFthcmlhUG9zaW5zZXRdPVwiaXRlbS5hcmlhUG9zaW5zZXRcIlxuICAgICAgICAgIFthcmlhU2V0c2l6ZV09XCJpdGVtLmFyaWFTZXRzaXplXCJcbiAgICAgICAgICBbYXJpYVNvcnRdPVwiaXRlbS5hcmlhU29ydFwiXG4gICAgICAgICAgW2FyaWFCdXN5XT1cIml0ZW0uYXJpYUJ1c3lcIlxuICAgICAgICAgIFthcmlhRHJvcGVmZmVjdF09XCJpdGVtLmFyaWFEcm9wZWZmZWN0XCJcbiAgICAgICAgICBbYXJpYUdyYWJiZWRdPVwiaXRlbS5hcmlhR3JhYmJlZFwiXG4gICAgICAgICAgW2FyaWFBY3RpdmVkZXNjZW5kYW50XT1cIml0ZW0uYXJpYUFjdGl2ZWRlc2NlbmRhbnRcIlxuICAgICAgICAgIFthcmlhQXRvbWljXT1cIml0ZW0uYXJpYUF0b21pY1wiXG4gICAgICAgICAgW2FyaWFBdXRvY29tcGxldGVdPVwiaXRlbS5hcmlhQXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICBbYXJpYUJyYWlsbGVsYWJlbF09XCJpdGVtLmFyaWFCcmFpbGxlbGFiZWxcIlxuICAgICAgICAgIFthcmlhQnJhaWxsZXJvbGVkZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFCcmFpbGxlcm9sZWRlc2NyaXB0aW9uXCJcbiAgICAgICAgICBbYXJpYUNvbGNvdW50XT1cIml0ZW0uYXJpYUNvbGNvdW50XCJcbiAgICAgICAgICBbYXJpYUNvbGluZGV4XT1cIml0ZW0uYXJpYUNvbGluZGV4XCJcbiAgICAgICAgICBbYXJpYUNvbGluZGV4dGV4dF09XCJpdGVtLmFyaWFDb2xpbmRleHRleHRcIlxuICAgICAgICAgIFthcmlhQ29sc3Bhbl09XCJpdGVtLmFyaWFDb2xzcGFuXCJcbiAgICAgICAgICBbYXJpYURlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYURlc2NyaXB0aW9uXCJcbiAgICAgICAgICBbYXJpYURldGFpbHNdPVwiaXRlbS5hcmlhRGV0YWlsc1wiXG4gICAgICAgICAgW2FyaWFGbG93dG9dPVwiaXRlbS5hcmlhRmxvd3RvXCJcbiAgICAgICAgICBbYXJpYUludmFsaWRdPVwiaXRlbS5hcmlhSW52YWxpZFwiXG4gICAgICAgICAgW2FyaWFLZXlzaG9ydGN1dHNdPVwiaXRlbS5hcmlhS2V5c2hvcnRjdXRzXCJcbiAgICAgICAgICBbYXJpYU93bnNdPVwiaXRlbS5hcmlhT3duc1wiXG4gICAgICAgICAgW2FyaWFSZWxldmFudF09XCJpdGVtLmFyaWFSZWxldmFudFwiXG4gICAgICAgICAgW2FyaWFSb2xlZGVzY3JpcHRpb25dPVwiaXRlbS5hcmlhUm9sZWRlc2NyaXB0aW9uXCJcbiAgICAgICAgICBbYXJpYVJvd2NvdW50XT1cIml0ZW0uYXJpYVJvd2NvdW50XCJcbiAgICAgICAgICBbYXJpYVJvd2luZGV4XT1cIml0ZW0uYXJpYVJvd2luZGV4XCJcbiAgICAgICAgICBbYXJpYVJvd2luZGV4dGV4dF09XCJpdGVtLmFyaWFSb3dpbmRleHRleHRcIlxuICAgICAgICAgIFthcmlhUm93c3Bhbl09XCJpdGVtLmFyaWFSb3dzcGFuXCJcbiAgICAgICAgICBbdGFiaW5kZXhdPVwiaXRlbS50YWJpbmRleFwiXG4gICAgICAgICAgW3RpdGxlXT1cIml0ZW0udGl0bGVcIlxuICAgICAgICAgIFthbHRdPVwiaXRlbS5hbHRcIlxuICAgICAgICAgIFtsYW5nXT1cIml0ZW0ubGFuZ1wiXG4gICAgICAgICAgW2FjY2Vzc2tleV09XCJpdGVtLmFjY2Vzc2tleVwiXG4gICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJpdGVtLmF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgW2F1dG9mb2N1c109XCJpdGVtLmF1dG9mb2N1c1wiXG4gICAgICAgICAgW2NvbnRlbnRlZGl0YWJsZV09XCJpdGVtLmNvbnRlbnRlZGl0YWJsZVwiXG4gICAgICAgICAgW2Rpcl09XCJpdGVtLmRpclwiXG4gICAgICAgICAgW2RyYWdnYWJsZV09XCJpdGVtLmRyYWdnYWJsZVwiXG4gICAgICAgICAgW2VudGVya2V5aGludF09XCJpdGVtLmVudGVya2V5aGludFwiXG4gICAgICAgICAgW2hpZGRlbl09XCJpdGVtLmhpZGRlblwiXG4gICAgICAgICAgW2lucHV0bW9kZV09XCJpdGVtLmlucHV0bW9kZVwiXG4gICAgICAgICAgW3NwZWxsY2hlY2tdPVwiaXRlbS5zcGVsbGNoZWNrXCJcbiAgICAgICAgICBbdHJhbnNsYXRlXT1cIml0ZW0udHJhbnNsYXRlXCJcbiAgICAgICAgICBbYXJpYU11bHRpbGluZV09XCJpdGVtLmFyaWFNdWx0aWxpbmVcIlxuICAgICAgICAgIFtmb3JdPVwiaXRlbS5mb3JcIlxuICAgICAgICAgIFtmb3JtXT1cIml0ZW0uZm9ybVwiXG4gICAgICAgICAgW2hlYWRlcnNdPVwiaXRlbS5oZWFkZXJzXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXRlbS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgW3JlYWRvbmx5XT1cIml0ZW0ucmVhZG9ubHlcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJpdGVtLnJlcXVpcmVkXCI+PC9kZXN5LWlucHV0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiaGFzRmllbGRzZXRDb21wb25lbnQoKVwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJkZXN5LWZpZWxkc2V0XCI+PC9uZy1jb250ZW50PlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwiIWhhc0ZpZWxkc2V0Q29tcG9uZW50KClcIj5cbiAgPGRlc3ktZmllbGRzZXRcbiAgICAqbmdJZj1cImZpZWxkc2V0RGF0YVwiXG4gICAgW2NsYXNzZXNdPVwiZmllbGRzZXREYXRhLmNsYXNzZXNcIlxuICAgIFtpZF09XCJmaWVsZHNldERhdGEuaWRcIlxuICAgIFtsZWdlbmREYXRhXT1cImZpZWxkc2V0RGF0YS5sZWdlbmRcIlxuICAgIFtoZWFkaW5nTGV2ZWxdPVwiZmllbGRzZXREYXRhLmhlYWRpbmdMZXZlbFwiXG4gICAgW2NhbGxlcl09XCJpbm5lckh0bWxcIlxuICAgIFtlcnJvcklkXT1cImdldEVycm9ySWQoKVwiXG4gICAgW2Rlc2NyaWJlZEJ5XT1cIltmaWVsZHNldERhdGEuZGVzY3JpYmVkQnksIGdldEhpbnRJZCgpLCBnZXRFcnJvcklkKCldIHwgbWFrZUh0bWxMaXN0OiBudWxsXCJcbiAgICByb2xlPVwiZ3JvdXBcIlxuICAgIFthcmlhTGFiZWxdPVwiZmllbGRzZXREYXRhLmFyaWFMYWJlbFwiXG4gICAgW2FyaWFMYWJlbGxlZEJ5XT1cImZpZWxkc2V0RGF0YS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgW2FyaWFIaWRkZW5dPVwiZmllbGRzZXREYXRhLmFyaWFIaWRkZW5cIlxuICAgIFthcmlhRGlzYWJsZWRdPVwiZmllbGRzZXREYXRhLmFyaWFEaXNhYmxlZFwiXG4gICAgW2FyaWFDb250cm9sc109XCJmaWVsZHNldERhdGEuYXJpYUNvbnRyb2xzXCJcbiAgICBbYXJpYUN1cnJlbnRdPVwiZmllbGRzZXREYXRhLmFyaWFDdXJyZW50XCJcbiAgICBbYXJpYUxpdmVdPVwiZmllbGRzZXREYXRhLmFyaWFMaXZlXCJcbiAgICBbYXJpYUV4cGFuZGVkXT1cImZpZWxkc2V0RGF0YS5hcmlhRXhwYW5kZWRcIlxuICAgIFthcmlhSGFzUG9wdXBdPVwiZmllbGRzZXREYXRhLmFyaWFIYXNQb3B1cFwiXG4gICAgW3RhYmluZGV4XT1cImZpZWxkc2V0RGF0YS50YWJpbmRleFwiPjwvZGVzeS1maWVsZHNldD5cbiAgPGRlc3ktZmllbGRzZXRcbiAgICAqbmdJZj1cIiFmaWVsZHNldERhdGEgJiYgaGFzTGVnZW5kQ29tcG9uZW50KClcIlxuICAgIFtsZWdlbmRSZWZdPVwibGVnZW5kVGVtcGxhdGVcIlxuICAgIFtjYWxsZXJdPVwiaW5uZXJIdG1sXCJcbiAgICBbZXJyb3JJZF09XCJnZXRFcnJvcklkKClcIlxuICAgIFtkZXNjcmliZWRCeV09XCJbZ2V0SGludElkKCksIGdldEVycm9ySWQoKV0gfCBtYWtlSHRtbExpc3Q6IG51bGxcIj5cbiAgICA8bmctdGVtcGxhdGUgI2xlZ2VuZFRlbXBsYXRlPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGVzeS1sZWdlbmRcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kZXN5LWZpZWxkc2V0PlxuICA8ZGVzeS1maWVsZHNldFxuICAgICpuZ0lmPVwiIWZpZWxkc2V0RGF0YSAmJiAhaGFzTGVnZW5kQ29tcG9uZW50KCkgJiYgbGVnZW5kUmVmXCJcbiAgICBbbGVnZW5kUmVmXT1cImxlZ2VuZFJlZlwiXG4gICAgW2NhbGxlcl09XCJpbm5lckh0bWxcIlxuICAgIFtlcnJvcklkXT1cImdldEVycm9ySWQoKVwiXG4gICAgW2Rlc2NyaWJlZEJ5XT1cIltnZXRIaW50SWQoKSwgZ2V0RXJyb3JJZCgpXSB8IG1ha2VIdG1sTGlzdDogbnVsbFwiXG4gICAgcm9sZT1cImdyb3VwXCI+PC9kZXN5LWZpZWxkc2V0PlxuICA8ZGVzeS1maWVsZHNldFxuICAgICpuZ0lmPVwiIWZpZWxkc2V0RGF0YSAmJiAhaGFzTGVnZW5kQ29tcG9uZW50KCkgJiYgIWxlZ2VuZFJlZiAmJiBsZWdlbmREYXRhXCJcbiAgICBbbGVnZW5kRGF0YV09XCJ7XG4gICAgICB0ZXh0OiBsZWdlbmREYXRhLnRleHQsXG4gICAgICBodG1sOiBsZWdlbmREYXRhLmh0bWwsXG4gICAgICBjbGFzc2VzOiBsZWdlbmREYXRhLmNsYXNzZXMsXG4gICAgICBpc1BhZ2VIZWFkaW5nOiBsZWdlbmREYXRhLmlzUGFnZUhlYWRpbmcsXG4gICAgfVwiXG4gICAgW2NhbGxlcl09XCJpbm5lckh0bWxcIlxuICAgIFtlcnJvcklkXT1cImdldEVycm9ySWQoKVwiXG4gICAgW2Rlc2NyaWJlZEJ5XT1cIltnZXRIaW50SWQoKSwgZ2V0RXJyb3JJZCgpXSB8IG1ha2VIdG1sTGlzdDogbnVsbFwiXG4gICAgcm9sZT1cImdyb3VwXCI+PC9kZXN5LWZpZWxkc2V0PlxuICA8ZGVzeS1maWVsZHNldFxuICAgICpuZ0lmPVwiIWZpZWxkc2V0RGF0YSAmJiAhaGFzTGVnZW5kQ29tcG9uZW50KCkgJiYgIWxlZ2VuZFJlZiAmJiAhbGVnZW5kRGF0YSAmJiBsZWdlbmRUZXh0XCJcbiAgICBbbGVnZW5kVGV4dF09XCJsZWdlbmRUZXh0XCJcbiAgICBbY2FsbGVyXT1cImlubmVySHRtbFwiXG4gICAgW2Vycm9ySWRdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICBbZGVzY3JpYmVkQnldPVwiW2dldEhpbnRJZCgpLCBnZXRFcnJvcklkKCldIHwgbWFrZUh0bWxMaXN0OiBudWxsXCJcbiAgICByb2xlPVwiZ3JvdXBcIj48L2Rlc3ktZmllbGRzZXQ+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoYXNGaWVsZHNldCgpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlubmVySHRtbFwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19