@ethlete/cdk 4.6.0 → 4.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/esm2022/lib/components/accordion/components/accordion/accordion.component.mjs +3 -3
  3. package/esm2022/lib/components/accordion/components/accordion-group/accordion-group.component.mjs +4 -4
  4. package/esm2022/lib/components/accordion/partials/accordion-hint/accordion-hint.directive.mjs +3 -3
  5. package/esm2022/lib/components/accordion/partials/accordion-hint-wrapper/accordion-hint-wrapper.directive.mjs +3 -3
  6. package/esm2022/lib/components/accordion/partials/accordion-label/accordion-label.directive.mjs +3 -3
  7. package/esm2022/lib/components/accordion/partials/accordion-label-wrapper/accordion-label-wrapper.directive.mjs +3 -3
  8. package/esm2022/lib/components/bracket/components/bracket/bracket.component.mjs +4 -4
  9. package/esm2022/lib/components/bracket/directives/bracket-match/bracket-match.directive.mjs +3 -3
  10. package/esm2022/lib/components/bracket/directives/bracket-round/bracket-round.directive.mjs +3 -3
  11. package/esm2022/lib/components/bracket/partials/bracket-match/bracket-match.component.mjs +3 -3
  12. package/esm2022/lib/components/bracket/partials/bracket-round-header/bracket-round-header.component.mjs +3 -3
  13. package/esm2022/lib/components/bracket/utils/bracket.utils.mjs +1 -1
  14. package/esm2022/lib/components/button/components/button/button.component.mjs +3 -3
  15. package/esm2022/lib/components/button/components/query-button/query-button.component.mjs +3 -3
  16. package/esm2022/lib/components/button/directives/button/button.directive.mjs +3 -3
  17. package/esm2022/lib/components/button/directives/query-button/query-button.directive.mjs +4 -4
  18. package/esm2022/lib/components/filter/filter-overlay/components/filter-overlay-page-outlet/filter-overlay-page-outlet.component.mjs +3 -3
  19. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-back-or-close/filter-overlay-back-or-close.directive.mjs +4 -4
  20. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-link/filter-overlay-link.directive.mjs +3 -3
  21. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-reset/filter-overlay-reset.directive.mjs +3 -3
  22. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-submit/filter-overlay-submit.directive.mjs +3 -3
  23. package/esm2022/lib/components/filter/filter-overlay/services/filter-overlay.service.mjs +3 -3
  24. package/esm2022/lib/components/filter/filter-overlay/utils/filter-overlay-ref.mjs +1 -1
  25. package/esm2022/lib/components/filter/rich-filter/components/rich-filter-host/rich-filter-host.component.mjs +3 -3
  26. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button/rich-filter-button.directive.mjs +3 -3
  27. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button-slot/rich-filter-button-slot.directive.mjs +3 -3
  28. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-content/rich-filter-content.directive.mjs +3 -3
  29. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-top/rich-filter-top.directive.mjs +3 -3
  30. package/esm2022/lib/components/forms/components/checkbox/components/checkbox/checkbox.component.mjs +3 -3
  31. package/esm2022/lib/components/forms/components/checkbox/components/checkbox-field/checkbox-field.component.mjs +3 -3
  32. package/esm2022/lib/components/forms/components/checkbox/components/checkbox-group/checkbox-group.component.mjs +3 -3
  33. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox/checkbox.directive.mjs +3 -3
  34. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-field/checkbox-field.directive.mjs +4 -4
  35. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group/checkbox-group.directive.mjs +4 -4
  36. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group-control/checkbox-group-control.directive.mjs +3 -3
  37. package/esm2022/lib/components/forms/components/error/components/error/error.component.mjs +4 -4
  38. package/esm2022/lib/components/forms/components/input/components/date-input/date-input.component.mjs +3 -3
  39. package/esm2022/lib/components/forms/components/input/components/date-time-input/date-time-input.component.mjs +3 -3
  40. package/esm2022/lib/components/forms/components/input/components/email-input/email-input.component.mjs +3 -3
  41. package/esm2022/lib/components/forms/components/input/components/input-field/input-field.component.mjs +3 -3
  42. package/esm2022/lib/components/forms/components/input/components/number-input/number-input.component.mjs +3 -3
  43. package/esm2022/lib/components/forms/components/input/components/password-input/password-input.component.mjs +3 -3
  44. package/esm2022/lib/components/forms/components/input/components/search-input/search-input.component.mjs +3 -3
  45. package/esm2022/lib/components/forms/components/input/components/text-input/text-input.component.mjs +3 -3
  46. package/esm2022/lib/components/forms/components/input/components/textarea-input/textarea-input.component.mjs +3 -3
  47. package/esm2022/lib/components/forms/components/input/directives/autosize-textarea/autosize-textarea.directive.mjs +4 -4
  48. package/esm2022/lib/components/forms/components/input/directives/date-input/date-input.directive.mjs +4 -4
  49. package/esm2022/lib/components/forms/components/input/directives/date-time-input/date-time-input.directive.mjs +4 -4
  50. package/esm2022/lib/components/forms/components/input/directives/email-input/email-input.directive.mjs +4 -4
  51. package/esm2022/lib/components/forms/components/input/directives/number-input/number-input.directive.mjs +4 -4
  52. package/esm2022/lib/components/forms/components/input/directives/password-input/password-input.directive.mjs +4 -4
  53. package/esm2022/lib/components/forms/components/input/directives/search-input/search-input.directive.mjs +4 -4
  54. package/esm2022/lib/components/forms/components/input/directives/show-picker-trigger/show-picker-trigger.directive.mjs +4 -4
  55. package/esm2022/lib/components/forms/components/input/directives/text-input/text-input.directive.mjs +4 -4
  56. package/esm2022/lib/components/forms/components/input/directives/textarea-input/textarea-input.directive.mjs +4 -4
  57. package/esm2022/lib/components/forms/components/input/partials/password-input-toggle/password-input-toggle.component.mjs +3 -3
  58. package/esm2022/lib/components/forms/components/input/partials/search-input-clear/search-input-clear.component.mjs +3 -3
  59. package/esm2022/lib/components/forms/components/label/components/label/label.component.mjs +3 -3
  60. package/esm2022/lib/components/forms/components/label/directives/label-suffix/label-suffix.directive.mjs +3 -3
  61. package/esm2022/lib/components/forms/components/radio/components/radio/radio.component.mjs +3 -3
  62. package/esm2022/lib/components/forms/components/radio/components/radio-field/radio-field.component.mjs +3 -3
  63. package/esm2022/lib/components/forms/components/radio/components/radio-group/radio-group.component.mjs +3 -3
  64. package/esm2022/lib/components/forms/components/radio/directives/radio/radio.directive.mjs +4 -4
  65. package/esm2022/lib/components/forms/components/radio/directives/radio-field/radio-field.directive.mjs +3 -3
  66. package/esm2022/lib/components/forms/components/radio/directives/radio-group/radio-group.directive.mjs +3 -3
  67. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button/segmented-button.component.mjs +4 -4
  68. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-field/segmented-button-field.component.mjs +3 -3
  69. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-group/segmented-button-group.component.mjs +3 -3
  70. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button/segmented-button.directive.mjs +4 -4
  71. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-field/segmented-button-field.directive.mjs +3 -3
  72. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-group/segmented-button-group.directive.mjs +4 -4
  73. package/esm2022/lib/components/forms/components/select/components/combobox/components/combobox/combobox.component.mjs +5 -5
  74. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox/combobox.directive.mjs +30 -137
  75. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-empty-template/combobox-body-empty-template.directive.mjs +3 -3
  76. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-error-template/combobox-body-error-template.directive.mjs +3 -3
  77. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-loading-template/combobox-body-loading-template.directive.mjs +3 -3
  78. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-more-items-hint-template/combobox-body-more-items-hint-template.directive.mjs +3 -3
  79. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-option-template/combobox-option-template.directive.mjs +3 -3
  80. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-selected-option-template/combobox-selected-option-template.directive.mjs +3 -3
  81. package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-body/combobox-body.component.mjs +23 -33
  82. package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-option/combobox-option.component.mjs +39 -47
  83. package/esm2022/lib/components/forms/components/select/components/combobox/private/combobox.private.errors.mjs +1 -1
  84. package/esm2022/lib/components/forms/components/select/components/native-select/components/native-select/native-select.component.mjs +3 -3
  85. package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-input/native-select-input.directive.mjs +4 -4
  86. package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-option/native-select-option.directive.mjs +3 -3
  87. package/esm2022/lib/components/forms/components/select/components/native-select/partials/native-select-option/native-select-option.component.mjs +3 -3
  88. package/esm2022/lib/components/forms/components/select/components/select/components/select/select.component.mjs +3 -3
  89. package/esm2022/lib/components/forms/components/select/components/select/directives/select/select.directive.mjs +4 -4
  90. package/esm2022/lib/components/forms/components/select/components/select/directives/select-body/select-body.directive.mjs +3 -3
  91. package/esm2022/lib/components/forms/components/select/components/select/directives/select-option/select-option.directive.mjs +4 -4
  92. package/esm2022/lib/components/forms/components/select/components/select/partials/select-body/select-body.component.mjs +3 -3
  93. package/esm2022/lib/components/forms/components/select/components/select/partials/select-option/select-option.component.mjs +3 -3
  94. package/esm2022/lib/components/forms/components/select/components/select-field/select-field.component.mjs +3 -3
  95. package/esm2022/lib/components/forms/components/select/directives/select-field/select-field.directive.mjs +3 -3
  96. package/esm2022/lib/components/forms/components/selection-list/components/selection-list-field/selection-list-field.component.mjs +3 -3
  97. package/esm2022/lib/components/forms/components/selection-list/components/selection-list-option/selection-list-option.component.mjs +3 -3
  98. package/esm2022/lib/components/forms/components/selection-list/directives/selection-list-field/selection-list-field.directive.mjs +4 -4
  99. package/esm2022/lib/components/forms/components/selection-list/directives/selection-list-option/selection-list-option.directive.mjs +4 -4
  100. package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle/slide-toggle.component.mjs +3 -3
  101. package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle-field/slide-toggle-field.component.mjs +3 -3
  102. package/esm2022/lib/components/forms/components/slide-toggle/directives/slide-toggle/slide-toggle.directive.mjs +3 -3
  103. package/esm2022/lib/components/forms/components/slider/components/slider/slider.component.mjs +4 -4
  104. package/esm2022/lib/components/forms/components/slider/components/slider-field/slider-field.component.mjs +3 -3
  105. package/esm2022/lib/components/forms/directives/dynamic-form-field/dynamic-form-field.directive.mjs +3 -3
  106. package/esm2022/lib/components/forms/directives/dynamic-form-group/dynamic-form-group.directive.mjs +3 -3
  107. package/esm2022/lib/components/forms/directives/expose-input-vars/expose-input-vars.directive.mjs +3 -3
  108. package/esm2022/lib/components/forms/directives/if-input-empty/if-input-empty.directive.mjs +4 -4
  109. package/esm2022/lib/components/forms/directives/if-input-filled/if-input-filled.directive.mjs +4 -4
  110. package/esm2022/lib/components/forms/directives/input/input.directive.mjs +4 -4
  111. package/esm2022/lib/components/forms/directives/input-prefix/input-prefix.directive.mjs +3 -3
  112. package/esm2022/lib/components/forms/directives/input-suffix/input-suffix.directive.mjs +3 -3
  113. package/esm2022/lib/components/forms/directives/native-input-ref/native-input-ref.directive.mjs +3 -3
  114. package/esm2022/lib/components/forms/directives/static-form-field/static-form-field.directive.mjs +4 -4
  115. package/esm2022/lib/components/forms/directives/static-form-group/static-form-group.directive.mjs +3 -3
  116. package/esm2022/lib/components/forms/directives/writeable-input/writeable-input.directive.mjs +3 -3
  117. package/esm2022/lib/components/forms/services/default-validator-errors.service.mjs +4 -4
  118. package/esm2022/lib/components/forms/services/form-field-state.service.mjs +3 -3
  119. package/esm2022/lib/components/forms/services/form-group-state.service.mjs +3 -3
  120. package/esm2022/lib/components/forms/services/input-state.service.mjs +4 -4
  121. package/esm2022/lib/components/forms/utils/decorated-form-field.base.mjs +3 -3
  122. package/esm2022/lib/components/forms/utils/decorated-input.base.mjs +3 -3
  123. package/esm2022/lib/components/forms/utils/input.base.mjs +4 -4
  124. package/esm2022/lib/components/icons/chevron-icon/chevron-icon.component.mjs +3 -3
  125. package/esm2022/lib/components/masonry/components/masonry/masonry.component.mjs +4 -4
  126. package/esm2022/lib/components/masonry/partials/masonry-item/masonry-item.component.mjs +4 -4
  127. package/esm2022/lib/components/overlay/components/bottom-sheet/components/bottom-sheet-container/bottom-sheet-container.component.mjs +3 -3
  128. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-container-base/bottom-sheet-container-base.component.mjs +4 -4
  129. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-drag-handle/bottom-sheet-drag-handle.component.mjs +4 -4
  130. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-title/bottom-sheet-title.directive.mjs +4 -4
  131. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-base.service.mjs +4 -4
  132. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-swipe-handler.service.mjs +4 -4
  133. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet.service.mjs +3 -3
  134. package/esm2022/lib/components/overlay/components/bottom-sheet/utils/bottom-sheet-ref.mjs +1 -1
  135. package/esm2022/lib/components/overlay/components/bottom-sheet/utils/bottom-sheet.utils.mjs +1 -1
  136. package/esm2022/lib/components/overlay/components/dialog/components/dialog-container/dialog-container.component.mjs +3 -3
  137. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-close/dialog-close.directive.mjs +4 -4
  138. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-container-base/dialog-container-base.component.mjs +4 -4
  139. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-title/dialog-title.directive.mjs +4 -4
  140. package/esm2022/lib/components/overlay/components/dialog/services/dialog-base.service.mjs +4 -4
  141. package/esm2022/lib/components/overlay/components/dialog/services/dialog.service.mjs +3 -3
  142. package/esm2022/lib/components/overlay/components/dialog/utils/dialog-ref.mjs +1 -1
  143. package/esm2022/lib/components/overlay/components/dialog/utils/dialog.utils.mjs +1 -1
  144. package/esm2022/lib/components/overlay/components/menu/components/menu/menu.component.mjs +4 -4
  145. package/esm2022/lib/components/overlay/components/menu/components/menu-container/menu-container.component.mjs +3 -3
  146. package/esm2022/lib/components/overlay/components/menu/components/public-api.mjs +3 -3
  147. package/esm2022/lib/components/overlay/components/menu/directives/menu-group/menu-group.directive.mjs +3 -3
  148. package/esm2022/lib/components/overlay/components/menu/directives/menu-group-title/menu-group-title.directive.mjs +3 -3
  149. package/esm2022/lib/components/overlay/components/menu/directives/menu-item/menu-item.directive.mjs +4 -4
  150. package/esm2022/lib/components/overlay/components/menu/directives/menu-trigger/menu-trigger.directive.mjs +4 -4
  151. package/esm2022/lib/components/overlay/components/menu/directives/public-api.mjs +3 -3
  152. package/esm2022/lib/components/overlay/components/menu/menu.imports.mjs +3 -7
  153. package/esm2022/lib/components/overlay/components/menu-deprecated/context-menu-trigger.mjs +7 -7
  154. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-aim.mjs +7 -7
  155. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-bar.mjs +4 -4
  156. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-base.mjs +4 -4
  157. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-group.mjs +3 -3
  158. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-checkbox.mjs +4 -4
  159. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-radio.mjs +4 -4
  160. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-selectable.mjs +4 -4
  161. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item.mjs +4 -4
  162. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-module.mjs +4 -4
  163. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-stack.mjs +4 -4
  164. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-trigger-base.mjs +4 -4
  165. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-trigger.mjs +4 -4
  166. package/esm2022/lib/components/overlay/components/menu-deprecated/menu.mjs +4 -4
  167. package/esm2022/lib/components/overlay/components/overlay/components/overlay-container/overlay-container.component.mjs +4 -4
  168. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-body/overlay-body.component.mjs +4 -4
  169. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-close/overlay-close.directive.mjs +4 -4
  170. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-footer/overlay-footer.directive.mjs +4 -4
  171. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-header/overlay-header.directive.mjs +4 -4
  172. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-title/overlay-title.directive.mjs +4 -4
  173. package/esm2022/lib/components/overlay/components/overlay/services/overlay.service.mjs +4 -4
  174. package/esm2022/lib/components/overlay/components/overlay/utils/overlay-ref.mjs +1 -1
  175. package/esm2022/lib/components/overlay/components/overlay/utils/overlay.utils.mjs +1 -1
  176. package/esm2022/lib/components/overlay/components/toggletip/components/toggletip/toggletip.component.mjs +3 -3
  177. package/esm2022/lib/components/overlay/components/toggletip/directives/toggletip/toggletip.directive.mjs +4 -4
  178. package/esm2022/lib/components/overlay/components/tooltip/components/tooltip/tooltip.component.mjs +3 -3
  179. package/esm2022/lib/components/overlay/components/tooltip/directives/tooltip/tooltip.directive.mjs +4 -4
  180. package/esm2022/lib/components/overlay/directives/dynamic-overlay-title/dynamic-overlay-title.directive.mjs +4 -4
  181. package/esm2022/lib/components/overlay/directives/overlay-close-auto-blocker/overlay-close-auto-blocker.directive.mjs +4 -4
  182. package/esm2022/lib/components/overlay/services/dynamic-overlay.service.mjs +4 -4
  183. package/esm2022/lib/components/overlay/utils/overlay-dismiss-checker.util.mjs +1 -1
  184. package/esm2022/lib/components/pagination/components/pagination/pagination.component.mjs +4 -4
  185. package/esm2022/lib/components/pagination/partials/pagination-link/pagination-link.directive.mjs +4 -4
  186. package/esm2022/lib/components/pagination/services/pagination-head.service.mjs +4 -4
  187. package/esm2022/lib/components/pagination/utils/pagination.util.mjs +1 -1
  188. package/esm2022/lib/components/picture/picture-data.directive.mjs +3 -3
  189. package/esm2022/lib/components/picture/picture.component.mjs +4 -4
  190. package/esm2022/lib/components/picture/pipes/normalize-source/normalize-source.pipe.mjs +3 -3
  191. package/esm2022/lib/components/picture/pipes/normalize-source/normalize-source.util.mjs +1 -1
  192. package/esm2022/lib/components/progress-spinner/progress-spinner.component.mjs +4 -4
  193. package/esm2022/lib/components/query-error/components/query-error/query-error.component.mjs +3 -3
  194. package/esm2022/lib/components/query-error/directives/query-error/query-error.directive.mjs +184 -9
  195. package/esm2022/lib/components/scrollable/components/scrollable/scrollable.component.mjs +4 -4
  196. package/esm2022/lib/components/scrollable/directives/scrollable-ignore-child/scrollable-ignore-child.directive.mjs +3 -3
  197. package/esm2022/lib/components/scrollable/directives/scrollable-is-active-child/scrollable-is-active-child.directive.mjs +3 -3
  198. package/esm2022/lib/components/skeleton/components/skeleton/skeleton.component.mjs +3 -3
  199. package/esm2022/lib/components/skeleton/partials/skeleton-item/skeleton-item.component.mjs +3 -3
  200. package/esm2022/lib/components/sort/components/sort-header/sort-header.component.mjs +4 -4
  201. package/esm2022/lib/components/sort/partials/sort/sort.directive.mjs +4 -4
  202. package/esm2022/lib/components/sort/services/sort-header-intl.mjs +3 -3
  203. package/esm2022/lib/components/table/components/table/table.component.mjs +67 -67
  204. package/esm2022/lib/components/table/partials/cells/cell/cell.directive.mjs +3 -3
  205. package/esm2022/lib/components/table/partials/cells/cell-def/cell-def.directive.mjs +3 -3
  206. package/esm2022/lib/components/table/partials/cells/column-def/column-def.directive.mjs +3 -3
  207. package/esm2022/lib/components/table/partials/cells/footer-cell/footer-cell.directive.mjs +3 -3
  208. package/esm2022/lib/components/table/partials/cells/footer-cell-def/footer-cell-def.directive.mjs +3 -3
  209. package/esm2022/lib/components/table/partials/cells/header-cell/header-cell.directive.mjs +3 -3
  210. package/esm2022/lib/components/table/partials/cells/header-cell-def/header-cell-def.directive.mjs +3 -3
  211. package/esm2022/lib/components/table/partials/cells/text-column/text-column.component.mjs +3 -3
  212. package/esm2022/lib/components/table/partials/rows/footer-row/footer-row.component.mjs +3 -3
  213. package/esm2022/lib/components/table/partials/rows/footer-row-def/footer-row-def.directive.mjs +3 -3
  214. package/esm2022/lib/components/table/partials/rows/header-row/header-row.component.mjs +3 -3
  215. package/esm2022/lib/components/table/partials/rows/header-row-def/header-row-def.directive.mjs +3 -3
  216. package/esm2022/lib/components/table/partials/rows/no-data-row/no-data-row.directive.mjs +3 -3
  217. package/esm2022/lib/components/table/partials/rows/recycle-rows/recycle-rows.directive.mjs +3 -3
  218. package/esm2022/lib/components/table/partials/rows/row/row.component.mjs +3 -3
  219. package/esm2022/lib/components/table/partials/rows/row-def/row-def.directive.mjs +3 -3
  220. package/esm2022/lib/components/table/partials/table-busy/table-busy.directive.mjs +3 -3
  221. package/esm2022/lib/components/table/partials/table-busy-outlet/table-busy-outlet.directive.mjs +3 -3
  222. package/esm2022/lib/components/table/utils/table-data-source.mjs +1 -1
  223. package/esm2022/lib/components/tabs/components/inline-tabs/inline-tabs.component.mjs +4 -4
  224. package/esm2022/lib/components/tabs/components/nav-tabs/nav-tabs.component.mjs +4 -4
  225. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab/inline-tab.component.mjs +4 -4
  226. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body/inline-tab-body.component.mjs +4 -4
  227. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body-host/inline-tab-body-host.directive.mjs +3 -3
  228. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-content/inline-tab-content.directive.mjs +3 -3
  229. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-header/inline-tab-header.component.mjs +3 -3
  230. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label/inline-tab-label.directive.mjs +3 -3
  231. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label-wrapper/inline-tab-label-wrapper.directive.mjs +3 -3
  232. package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tab-link/nav-tab-link.directive.mjs +4 -4
  233. package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tabs-outlet/nav-tabs-outlet.component.mjs +3 -3
  234. package/esm2022/lib/components/tabs/utils/active-tab-underline.util.mjs +4 -4
  235. package/esm2022/lib/components/tabs/utils/paginated-tab-header.directive.mjs +4 -4
  236. package/esm2022/lib/services/swipe-handler.service.mjs +4 -4
  237. package/fesm2022/ethlete-cdk.mjs +8011 -8112
  238. package/fesm2022/ethlete-cdk.mjs.map +1 -1
  239. package/lib/components/button/directives/button/button.directive.d.ts +6 -0
  240. package/lib/components/button/directives/query-button/query-button.directive.d.ts +3 -0
  241. package/lib/components/forms/components/checkbox/directives/checkbox/checkbox.directive.d.ts +3 -0
  242. package/lib/components/forms/components/checkbox/directives/checkbox-field/checkbox-field.directive.d.ts +3 -0
  243. package/lib/components/forms/components/checkbox/directives/checkbox-group-control/checkbox-group-control.directive.d.ts +3 -0
  244. package/lib/components/forms/components/error/components/error/error.component.d.ts +3 -0
  245. package/lib/components/forms/components/radio/directives/radio/radio.directive.d.ts +3 -0
  246. package/lib/components/forms/components/radio/directives/radio-field/radio-field.directive.d.ts +3 -0
  247. package/lib/components/forms/components/radio/directives/radio-group/radio-group.directive.d.ts +3 -0
  248. package/lib/components/forms/components/segmented-button/directives/segmented-button/segmented-button.directive.d.ts +3 -0
  249. package/lib/components/forms/components/segmented-button/directives/segmented-button-field/segmented-button-field.directive.d.ts +3 -0
  250. package/lib/components/forms/components/segmented-button/directives/segmented-button-group/segmented-button-group.directive.d.ts +3 -0
  251. package/lib/components/forms/components/select/components/combobox/directives/combobox/combobox.directive.d.ts +28 -58
  252. package/lib/components/forms/components/select/components/combobox/partials/combobox-body/combobox-body.component.d.ts +20 -16
  253. package/lib/components/forms/components/select/components/combobox/partials/combobox-option/combobox-option.component.d.ts +20 -16
  254. package/lib/components/forms/components/select/components/select/directives/select/select.directive.d.ts +6 -0
  255. package/lib/components/forms/components/select/components/select/directives/select-body/select-body.directive.d.ts +3 -0
  256. package/lib/components/forms/components/select/components/select/directives/select-option/select-option.directive.d.ts +6 -0
  257. package/lib/components/forms/components/slide-toggle/directives/slide-toggle/slide-toggle.directive.d.ts +3 -0
  258. package/lib/components/forms/components/slider/components/slider/slider.component.d.ts +6 -0
  259. package/lib/components/forms/directives/writeable-input/writeable-input.directive.d.ts +3 -0
  260. package/lib/components/forms/utils/decorated-form-field.base.d.ts +3 -0
  261. package/lib/components/forms/utils/decorated-input.base.d.ts +3 -0
  262. package/lib/components/masonry/components/masonry/masonry.component.d.ts +3 -0
  263. package/lib/components/overlay/components/menu/components/menu/menu.component.d.ts +3 -0
  264. package/lib/components/overlay/components/menu/components/public-api.d.ts +0 -2
  265. package/lib/components/overlay/components/menu/directives/menu-group/menu-group.directive.d.ts +3 -0
  266. package/lib/components/overlay/components/menu/directives/menu-item/menu-item.directive.d.ts +6 -0
  267. package/lib/components/overlay/components/menu/directives/menu-trigger/menu-trigger.directive.d.ts +6 -0
  268. package/lib/components/overlay/components/menu/directives/public-api.d.ts +0 -2
  269. package/lib/components/overlay/components/menu/menu.imports.d.ts +3 -3
  270. package/lib/components/overlay/components/overlay/components/overlay-container/overlay-container.component.d.ts +3 -0
  271. package/lib/components/overlay/components/overlay/partials/overlay-body/overlay-body.component.d.ts +3 -0
  272. package/lib/components/query-error/directives/query-error/query-error.directive.d.ts +6 -3
  273. package/lib/components/scrollable/components/scrollable/scrollable.component.d.ts +6 -0
  274. package/lib/components/scrollable/directives/scrollable-ignore-child/scrollable-ignore-child.directive.d.ts +3 -0
  275. package/lib/components/scrollable/directives/scrollable-is-active-child/scrollable-is-active-child.directive.d.ts +3 -0
  276. package/lib/components/table/components/table/table.component.d.ts +4 -11
  277. package/package.json +8 -8
  278. package/esm2022/lib/components/forms/index.mjs +0 -2
  279. package/esm2022/lib/components/overlay/components/menu/components/menu-checkbox-item/menu-checkbox-item.component.mjs +0 -68
  280. package/esm2022/lib/components/overlay/components/menu/components/menu-checkbox-item/public-api.mjs +0 -2
  281. package/esm2022/lib/components/overlay/components/menu/components/menu-radio-item/menu-radio-item.component.mjs +0 -61
  282. package/esm2022/lib/components/overlay/components/menu/components/menu-radio-item/public-api.mjs +0 -2
  283. package/esm2022/lib/components/overlay/components/menu/directives/menu-checkbox-group/menu-checkbox-group.directive.mjs +0 -31
  284. package/esm2022/lib/components/overlay/components/menu/directives/menu-checkbox-group/public-api.mjs +0 -2
  285. package/esm2022/lib/components/overlay/components/menu/directives/menu-radio-group/menu-radio-group.directive.mjs +0 -42
  286. package/esm2022/lib/components/overlay/components/menu/directives/menu-radio-group/public-api.mjs +0 -2
  287. package/lib/components/forms/index.d.ts +0 -1
  288. package/lib/components/overlay/components/menu/components/menu-checkbox-item/menu-checkbox-item.component.d.ts +0 -23
  289. package/lib/components/overlay/components/menu/components/menu-checkbox-item/public-api.d.ts +0 -1
  290. package/lib/components/overlay/components/menu/components/menu-radio-item/menu-radio-item.component.d.ts +0 -21
  291. package/lib/components/overlay/components/menu/components/menu-radio-item/public-api.d.ts +0 -1
  292. package/lib/components/overlay/components/menu/directives/menu-checkbox-group/menu-checkbox-group.directive.d.ts +0 -9
  293. package/lib/components/overlay/components/menu/directives/menu-checkbox-group/public-api.d.ts +0 -1
  294. package/lib/components/overlay/components/menu/directives/menu-radio-group/menu-radio-group.directive.d.ts +0 -12
  295. package/lib/components/overlay/components/menu/directives/menu-radio-group/public-api.d.ts +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @ethlete/cdk
2
2
 
3
+ ## 4.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`47f6e7b`](https://github.com/ethlete-io/ethdk/commit/47f6e7bb0b9902a8b2a75d155b751c68a05c26a9) Thanks [@TomTomB](https://github.com/TomTomB)! - Add german translations for query error directive
8
+
9
+ ### Patch Changes
10
+
11
+ - [`aae34e8`](https://github.com/ethlete-io/ethdk/commit/aae34e8736c62487f783c6bb8e2478439db57a4c) Thanks [@TomTomB](https://github.com/TomTomB)! - Fix table from throwing erros during creation
12
+
3
13
  ## 4.6.0
4
14
 
5
15
  ### Minor Changes
@@ -40,10 +40,10 @@ export class AccordionComponent {
40
40
  close() {
41
41
  this._isOpen$.next(false);
42
42
  }
43
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
44
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.9", type: AccordionComponent, isStandalone: true, selector: "et-accordion", inputs: { isOpenByDefault: ["isOpenByDefault", "isOpenByDefault", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], label: "label" }, host: { classAttribute: "et-accordion" }, providers: [{ provide: ACCORDION_COMPONENT, useExisting: AccordionComponent }], queries: [{ propertyName: "templateLabel", first: true, predicate: ACCORDION_LABEL_WRAPPER_DIRECTIVE, descendants: true }, { propertyName: "templateHint", first: true, predicate: ACCORDION_HINT_WRAPPER_DIRECTIVE, descendants: true }], ngImport: i0, template: "<div *etLet=\"_isOpen$ | async as isOpen\" class=\"et-accordion-container\">\n <h3 class=\"et-accordion-header-wrapper\">\n <button\n [disabled]=\"disabled\"\n [id]=\"headerId\"\n [attr.aria-controls]=\"bodyId\"\n [attr.aria-expanded]=\"isOpen\"\n [class.et-accordion-has-hint]=\"!!templateHint\"\n (click)=\"toggleAccordionOpen()\"\n class=\"et-accordion-header\"\n type=\"button\"\n >\n <div>\n @if (templateLabel) {\n <ng-template [cdkPortalOutlet]=\"templateLabel\" />\n } @else {\n <span et-accordion-label>{{ label }} </span>\n }\n </div>\n\n @if (templateHint) {\n <ng-template [cdkPortalOutlet]=\"templateHint\" />\n }\n\n <et-chevron-icon />\n </button>\n </h3>\n <div\n [@animateOpenClose]=\"(_isOpen$ | async) ? 'open' : 'close'\"\n [attr.aria-labelledby]=\"headerId\"\n [id]=\"bodyId\"\n class=\"et-accordion-body\"\n role=\"region\"\n >\n <div class=\"et-accordion-body-container\">\n <ng-content />\n </div>\n </div>\n <hr class=\"et-accordion-separator\" />\n</div>\n", styles: [":where(.et-accordion){--chevron-size: 15px}.et-accordion .et-accordion-container{position:relative;z-index:1}.et-accordion .et-chevron-icon{display:block;transform:rotate(180deg);transition:transform .3s var(--ease-5);inline-size:var(--chevron-size);block-size:var(--chevron-size)}.et-accordion [aria-expanded=true] .et-chevron-icon{transform:rotate(0)}.et-accordion .et-accordion-header{display:grid;grid-template-columns:1fr auto;inline-size:100%;block-size:100%;text-align:left;background-color:transparent;border:none;align-items:center;padding:0;gap:15px}.et-accordion .et-accordion-header:not(:disabled){cursor:pointer}.et-accordion .et-accordion-header.et-accordion-has-hint{grid-template-columns:1fr auto auto}.et-accordion .et-accordion-header-wrapper{margin:0}.et-accordion .et-accordion-body{overflow:hidden}.et-accordion .et-accordion-separator{position:relative;z-index:-1}\n"], dependencies: [{ kind: "directive", type: LetDirective, selector: "[etLet]", inputs: ["etLet"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: AccordionLabelDirective, selector: "[et-accordion-label]" }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: ChevronIconComponent, selector: "et-chevron-icon" }], animations: [accordionAnimations.animateOpenClose], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
44
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.0", type: AccordionComponent, isStandalone: true, selector: "et-accordion", inputs: { isOpenByDefault: ["isOpenByDefault", "isOpenByDefault", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], label: "label" }, host: { classAttribute: "et-accordion" }, providers: [{ provide: ACCORDION_COMPONENT, useExisting: AccordionComponent }], queries: [{ propertyName: "templateLabel", first: true, predicate: ACCORDION_LABEL_WRAPPER_DIRECTIVE, descendants: true }, { propertyName: "templateHint", first: true, predicate: ACCORDION_HINT_WRAPPER_DIRECTIVE, descendants: true }], ngImport: i0, template: "<div *etLet=\"_isOpen$ | async as isOpen\" class=\"et-accordion-container\">\n <h3 class=\"et-accordion-header-wrapper\">\n <button\n [disabled]=\"disabled\"\n [id]=\"headerId\"\n [attr.aria-controls]=\"bodyId\"\n [attr.aria-expanded]=\"isOpen\"\n [class.et-accordion-has-hint]=\"!!templateHint\"\n (click)=\"toggleAccordionOpen()\"\n class=\"et-accordion-header\"\n type=\"button\"\n >\n <div>\n @if (templateLabel) {\n <ng-template [cdkPortalOutlet]=\"templateLabel\" />\n } @else {\n <span et-accordion-label>{{ label }} </span>\n }\n </div>\n\n @if (templateHint) {\n <ng-template [cdkPortalOutlet]=\"templateHint\" />\n }\n\n <et-chevron-icon />\n </button>\n </h3>\n <div\n [@animateOpenClose]=\"(_isOpen$ | async) ? 'open' : 'close'\"\n [attr.aria-labelledby]=\"headerId\"\n [id]=\"bodyId\"\n class=\"et-accordion-body\"\n role=\"region\"\n >\n <div class=\"et-accordion-body-container\">\n <ng-content />\n </div>\n </div>\n <hr class=\"et-accordion-separator\" />\n</div>\n", styles: [":where(.et-accordion){--chevron-size: 15px}.et-accordion .et-accordion-container{position:relative;z-index:1}.et-accordion .et-chevron-icon{display:block;transform:rotate(180deg);transition:transform .3s var(--ease-5);inline-size:var(--chevron-size);block-size:var(--chevron-size)}.et-accordion [aria-expanded=true] .et-chevron-icon{transform:rotate(0)}.et-accordion .et-accordion-header{display:grid;grid-template-columns:1fr auto;inline-size:100%;block-size:100%;text-align:left;background-color:transparent;border:none;align-items:center;padding:0;gap:15px}.et-accordion .et-accordion-header:not(:disabled){cursor:pointer}.et-accordion .et-accordion-header.et-accordion-has-hint{grid-template-columns:1fr auto auto}.et-accordion .et-accordion-header-wrapper{margin:0}.et-accordion .et-accordion-body{overflow:hidden}.et-accordion .et-accordion-separator{position:relative;z-index:-1}\n"], dependencies: [{ kind: "directive", type: LetDirective, selector: "[etLet]", inputs: ["etLet"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: AccordionLabelDirective, selector: "[et-accordion-label]" }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: ChevronIconComponent, selector: "et-chevron-icon" }], animations: [accordionAnimations.animateOpenClose], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
45
45
  }
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AccordionComponent, decorators: [{
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AccordionComponent, decorators: [{
47
47
  type: Component,
48
48
  args: [{ selector: 'et-accordion', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, providers: [{ provide: ACCORDION_COMPONENT, useExisting: AccordionComponent }], imports: [
49
49
  LetDirective,
@@ -35,10 +35,10 @@ export class AccordionGroupComponent {
35
35
  }), takeUntil(this._destroy$))
36
36
  .subscribe();
37
37
  }
38
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AccordionGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
39
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.0.9", type: AccordionGroupComponent, isStandalone: true, selector: "et-accordion-group", inputs: { autoCloseOthers: ["autoCloseOthers", "autoCloseOthers", booleanAttribute] }, host: { classAttribute: "et-accordion-group" }, queries: [{ propertyName: "_accordions", predicate: ACCORDION_COMPONENT }], ngImport: i0, template: "<ng-content select=\"et-accordion\" />\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AccordionGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
39
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.1.0", type: AccordionGroupComponent, isStandalone: true, selector: "et-accordion-group", inputs: { autoCloseOthers: ["autoCloseOthers", "autoCloseOthers", booleanAttribute] }, host: { classAttribute: "et-accordion-group" }, queries: [{ propertyName: "_accordions", predicate: ACCORDION_COMPONENT }], ngImport: i0, template: "<ng-content select=\"et-accordion\" />\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
40
40
  }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AccordionGroupComponent, decorators: [{
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AccordionGroupComponent, decorators: [{
42
42
  type: Component,
43
43
  args: [{ selector: 'et-accordion-group', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, host: {
44
44
  class: 'et-accordion-group',
@@ -50,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
50
50
  type: ContentChildren,
51
51
  args: [ACCORDION_COMPONENT]
52
52
  }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9hY2NvcmRpb24vY29tcG9uZW50cy9hY2NvcmRpb24tZ3JvdXAvYWNjb3JkaW9uLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9hY2NvcmRpb24vY29tcG9uZW50cy9hY2NvcmRpb24tZ3JvdXAvYWNjb3JkaW9uLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULGVBQWUsRUFDZixLQUFLLEVBQ0wsaUJBQWlCLEVBQ2pCLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBc0IsTUFBTSxjQUFjLENBQUM7O0FBWXZFLE1BQU0sT0FBTyx1QkFBdUI7SUFWcEM7UUFXbUIsY0FBUyxHQUFHLGFBQWEsRUFBRSxDQUFDO1FBRzdDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO0tBOEN6QjtJQXpDQyxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPO2FBQ3JCLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUMzQixHQUFHLENBQ0QsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUNiLFVBQVU7WUFDUixFQUFFLE9BQU8sRUFBRTthQUNWLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBMkIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDM0MsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUNqQyxFQUNELFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2xDLFFBQVEsRUFBRSxFQUNWLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3pCLE9BQU87YUFDUjtZQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUU1RCxJQUFJLFdBQVcsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDdEIsT0FBTzthQUNSO1lBRUQsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXO2dCQUN0QyxFQUFFLE9BQU8sRUFBRTtpQkFDVixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQTJCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNwQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ2Q7YUFDRjtRQUNILENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFCO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQzs4R0FqRFUsdUJBQXVCO2tHQUF2Qix1QkFBdUIsd0hBR2QsZ0JBQWdCLHlHQUduQixtQkFBbUIsNkJDN0J0QywwQ0FDQTs7MkZEc0JhLHVCQUF1QjtrQkFWbkMsU0FBUzsrQkFDRSxvQkFBb0IsaUJBRWYsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFFBQ1Y7d0JBQ0osS0FBSyxFQUFFLG9CQUFvQjtxQkFDNUI7OEJBTUQsZUFBZTtzQkFEZCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUlyQixXQUFXO3NCQUQzQixlQUFlO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSW5wdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBib29sZWFuQXR0cmlidXRlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFR5cGVkUXVlcnlMaXN0LCBjcmVhdGVEZXN0cm95IH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIHBhaXJ3aXNlLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFDQ09SRElPTl9DT01QT05FTlQsIEFjY29yZGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL2FjY29yZGlvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2V0LWFjY29yZGlvbi1ncm91cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hY2NvcmRpb24tZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZXQtYWNjb3JkaW9uLWdyb3VwJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQWNjb3JkaW9uR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBjcmVhdGVEZXN0cm95KCk7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGF1dG9DbG9zZU90aGVycyA9IGZhbHNlO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oQUNDT1JESU9OX0NPTVBPTkVOVClcbiAgcHJpdmF0ZSByZWFkb25seSBfYWNjb3JkaW9ucz86IFR5cGVkUXVlcnlMaXN0PEFjY29yZGlvbkNvbXBvbmVudD47XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWNjb3JkaW9ucykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2FjY29yZGlvbnMuY2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh0aGlzLl9hY2NvcmRpb25zKSxcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChhY2NvcmRpb25zKSA9PlxuICAgICAgICAgICAgYWNjb3JkaW9uc1xuICAgICAgICAgICAgICA/LnRvQXJyYXkoKVxuICAgICAgICAgICAgICAuZmlsdGVyKChhKTogYSBpcyBBY2NvcmRpb25Db21wb25lbnQgPT4gISFhKVxuICAgICAgICAgICAgICAubWFwKChhKSA9PiBhLmlzT3BlbiQpID8/IFtdLFxuICAgICAgICApLFxuICAgICAgICBzd2l0Y2hNYXAoKGQpID0+IGNvbWJpbmVMYXRlc3QoZCkpLFxuICAgICAgICBwYWlyd2lzZSgpLFxuICAgICAgICB0YXAoKFtwcmV2LCBjdXJyXSkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5hdXRvQ2xvc2VPdGhlcnMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBpc09wZW5lZE5vdyA9IGN1cnIuZmluZEluZGV4KChhLCBpKSA9PiBhICYmICFwcmV2W2ldKTtcblxuICAgICAgICAgIGlmIChpc09wZW5lZE5vdyA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IFtpLCBpdGVtXSBvZiB0aGlzLl9hY2NvcmRpb25zXG4gICAgICAgICAgICA/LnRvQXJyYXkoKVxuICAgICAgICAgICAgLmZpbHRlcigoYSk6IGEgaXMgQWNjb3JkaW9uQ29tcG9uZW50ID0+ICEhYSlcbiAgICAgICAgICAgIC5lbnRyaWVzKCkgPz8gW10uZW50cmllcygpKSB7XG4gICAgICAgICAgICBpZiAoaSAhPT0gaXNPcGVuZWROb3cgJiYgaXRlbS5pc09wZW4pIHtcbiAgICAgICAgICAgICAgaXRlbS5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImV0LWFjY29yZGlvblwiIC8+XG4iXX0=
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9hY2NvcmRpb24vY29tcG9uZW50cy9hY2NvcmRpb24tZ3JvdXAvYWNjb3JkaW9uLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9hY2NvcmRpb24vY29tcG9uZW50cy9hY2NvcmRpb24tZ3JvdXAvYWNjb3JkaW9uLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULGVBQWUsRUFDZixLQUFLLEVBQ0wsaUJBQWlCLEVBQ2pCLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBc0IsTUFBTSxjQUFjLENBQUM7O0FBWXZFLE1BQU0sT0FBTyx1QkFBdUI7SUFWcEM7UUFXbUIsY0FBUyxHQUFHLGFBQWEsRUFBRSxDQUFDO1FBRzdDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO0tBOEN6QjtJQXpDQyxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTzthQUNyQixJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFDM0IsR0FBRyxDQUNELENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FDYixVQUFVO1lBQ1IsRUFBRSxPQUFPLEVBQUU7YUFDVixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQTJCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzNDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FDakMsRUFDRCxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNsQyxRQUFRLEVBQUUsRUFDVixHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQzFCLE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTVELElBQUksV0FBVyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU87WUFDVCxDQUFDO1lBRUQsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXO2dCQUN0QyxFQUFFLE9BQU8sRUFBRTtpQkFDVixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQTJCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDckMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNmLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDOzhHQWpEVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qix3SEFHZCxnQkFBZ0IseUdBR25CLG1CQUFtQiw2QkM3QnRDLDBDQUNBOzsyRkRzQmEsdUJBQXVCO2tCQVZuQyxTQUFTOytCQUNFLG9CQUFvQixpQkFFZixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksUUFDVjt3QkFDSixLQUFLLEVBQUUsb0JBQW9CO3FCQUM1Qjs4QkFNRCxlQUFlO3NCQURkLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSXJCLFdBQVc7c0JBRDNCLGVBQWU7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBJbnB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHlwZWRRdWVyeUxpc3QsIGNyZWF0ZURlc3Ryb3kgfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1hcCwgcGFpcndpc2UsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQUNDT1JESU9OX0NPTVBPTkVOVCwgQWNjb3JkaW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYWNjb3JkaW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXQtYWNjb3JkaW9uLWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FjY29yZGlvbi1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdldC1hY2NvcmRpb24tZ3JvdXAnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25Hcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IGNyZWF0ZURlc3Ryb3koKTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgYXV0b0Nsb3NlT3RoZXJzID0gZmFsc2U7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihBQ0NPUkRJT05fQ09NUE9ORU5UKVxuICBwcml2YXRlIHJlYWRvbmx5IF9hY2NvcmRpb25zPzogVHlwZWRRdWVyeUxpc3Q8QWNjb3JkaW9uQ29tcG9uZW50PjtcblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hY2NvcmRpb25zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fYWNjb3JkaW9ucy5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHRoaXMuX2FjY29yZGlvbnMpLFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKGFjY29yZGlvbnMpID0+XG4gICAgICAgICAgICBhY2NvcmRpb25zXG4gICAgICAgICAgICAgID8udG9BcnJheSgpXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGEpOiBhIGlzIEFjY29yZGlvbkNvbXBvbmVudCA9PiAhIWEpXG4gICAgICAgICAgICAgIC5tYXAoKGEpID0+IGEuaXNPcGVuJCkgPz8gW10sXG4gICAgICAgICksXG4gICAgICAgIHN3aXRjaE1hcCgoZCkgPT4gY29tYmluZUxhdGVzdChkKSksXG4gICAgICAgIHBhaXJ3aXNlKCksXG4gICAgICAgIHRhcCgoW3ByZXYsIGN1cnJdKSA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLmF1dG9DbG9zZU90aGVycykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGlzT3BlbmVkTm93ID0gY3Vyci5maW5kSW5kZXgoKGEsIGkpID0+IGEgJiYgIXByZXZbaV0pO1xuXG4gICAgICAgICAgaWYgKGlzT3BlbmVkTm93ID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAoY29uc3QgW2ksIGl0ZW1dIG9mIHRoaXMuX2FjY29yZGlvbnNcbiAgICAgICAgICAgID8udG9BcnJheSgpXG4gICAgICAgICAgICAuZmlsdGVyKChhKTogYSBpcyBBY2NvcmRpb25Db21wb25lbnQgPT4gISFhKVxuICAgICAgICAgICAgLmVudHJpZXMoKSA/PyBbXS5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGlmIChpICE9PSBpc09wZW5lZE5vdyAmJiBpdGVtLmlzT3Blbikge1xuICAgICAgICAgICAgICBpdGVtLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwiZXQtYWNjb3JkaW9uXCIgLz5cbiJdfQ==
@@ -1,10 +1,10 @@
1
1
  import { Directive } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class AccordionHintDirective {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AccordionHintDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: AccordionHintDirective, isStandalone: true, selector: "[et-accordion-hint]", host: { classAttribute: "et-accordion-hint" }, ngImport: i0 }); }
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AccordionHintDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0", type: AccordionHintDirective, isStandalone: true, selector: "[et-accordion-hint]", host: { classAttribute: "et-accordion-hint" }, ngImport: i0 }); }
6
6
  }
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AccordionHintDirective, decorators: [{
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AccordionHintDirective, decorators: [{
8
8
  type: Directive,
9
9
  args: [{
10
10
  selector: '[et-accordion-hint]',
@@ -6,10 +6,10 @@ export class AccordionHintWrapperDirective extends CdkPortal {
6
6
  constructor(templateRef, viewContainerRef) {
7
7
  super(templateRef, viewContainerRef);
8
8
  }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AccordionHintWrapperDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
10
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: AccordionHintWrapperDirective, isStandalone: true, selector: "ng-template[et-accordion-hint-wrapper]", providers: [{ provide: ACCORDION_HINT_WRAPPER_DIRECTIVE, useExisting: AccordionHintWrapperDirective }], usesInheritance: true, ngImport: i0 }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AccordionHintWrapperDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0", type: AccordionHintWrapperDirective, isStandalone: true, selector: "ng-template[et-accordion-hint-wrapper]", providers: [{ provide: ACCORDION_HINT_WRAPPER_DIRECTIVE, useExisting: AccordionHintWrapperDirective }], usesInheritance: true, ngImport: i0 }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AccordionHintWrapperDirective, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AccordionHintWrapperDirective, decorators: [{
13
13
  type: Directive,
14
14
  args: [{
15
15
  selector: 'ng-template[et-accordion-hint-wrapper]',
@@ -1,10 +1,10 @@
1
1
  import { Directive } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class AccordionLabelDirective {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AccordionLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: AccordionLabelDirective, isStandalone: true, selector: "[et-accordion-label]", host: { classAttribute: "et-accordion-label" }, ngImport: i0 }); }
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AccordionLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0", type: AccordionLabelDirective, isStandalone: true, selector: "[et-accordion-label]", host: { classAttribute: "et-accordion-label" }, ngImport: i0 }); }
6
6
  }
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AccordionLabelDirective, decorators: [{
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AccordionLabelDirective, decorators: [{
8
8
  type: Directive,
9
9
  args: [{
10
10
  selector: '[et-accordion-label]',
@@ -6,10 +6,10 @@ export class AccordionLabelWrapperDirective extends CdkPortal {
6
6
  constructor(templateRef, viewContainerRef) {
7
7
  super(templateRef, viewContainerRef);
8
8
  }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AccordionLabelWrapperDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
10
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: AccordionLabelWrapperDirective, isStandalone: true, selector: "ng-template[et-accordion-label-wrapper]", providers: [{ provide: ACCORDION_LABEL_WRAPPER_DIRECTIVE, useExisting: AccordionLabelWrapperDirective }], usesInheritance: true, ngImport: i0 }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AccordionLabelWrapperDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0", type: AccordionLabelWrapperDirective, isStandalone: true, selector: "ng-template[et-accordion-label-wrapper]", providers: [{ provide: ACCORDION_LABEL_WRAPPER_DIRECTIVE, useExisting: AccordionLabelWrapperDirective }], usesInheritance: true, ngImport: i0 }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AccordionLabelWrapperDirective, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AccordionLabelWrapperDirective, decorators: [{
13
13
  type: Directive,
14
14
  args: [{
15
15
  selector: 'ng-template[et-accordion-label-wrapper]',
@@ -222,8 +222,8 @@ export class BracketComponent {
222
222
  const round = this._getRoundById(roundId, bracket);
223
223
  return round?.matches.find((match) => match.data.id === matchId) ?? null;
224
224
  }
225
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BracketComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
226
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.9", type: BracketComponent, isStandalone: true, selector: "et-bracket", inputs: { itemWith: "itemWith", itemHeight: "itemHeight", roundHeaderHeight: "roundHeaderHeight", upperLowerBracketGap: "upperLowerBracketGap", columnGap: "columnGap", rowGap: "rowGap", roundsWithMatches: "roundsWithMatches", componentConfig: "componentConfig" }, host: { properties: { "attr.has-round-headers": "this.hasRoundHeaders" }, classAttribute: "et-bracket" }, providers: [
225
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: BracketComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
226
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.0", type: BracketComponent, isStandalone: true, selector: "et-bracket", inputs: { itemWith: "itemWith", itemHeight: "itemHeight", roundHeaderHeight: "roundHeaderHeight", upperLowerBracketGap: "upperLowerBracketGap", columnGap: "columnGap", rowGap: "rowGap", roundsWithMatches: "roundsWithMatches", componentConfig: "componentConfig" }, host: { properties: { "attr.has-round-headers": "this.hasRoundHeaders" }, classAttribute: "et-bracket" }, providers: [
227
227
  {
228
228
  provide: BRACKET_TOKEN,
229
229
  useExisting: BracketComponent,
@@ -300,7 +300,7 @@ __decorate([
300
300
  __metadata("design:paramtypes", [Object, Bracket]),
301
301
  __metadata("design:returntype", void 0)
302
302
  ], BracketComponent.prototype, "_getNextMatch", null);
303
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BracketComponent, decorators: [{
303
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: BracketComponent, decorators: [{
304
304
  type: Component,
305
305
  args: [{ selector: 'et-bracket', standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgClass, LetDirective, PortalModule, AsyncPipe], host: {
306
306
  class: 'et-bracket',
@@ -330,4 +330,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
330
330
  type: HostBinding,
331
331
  args: ['attr.has-round-headers']
332
332
  }], getConnectedMatches: [], getChildConnectorShape: [], getLineMultiAfter: [], getLineSpan: [], createRoundPortal: [], createMatchPortal: [], _getRoundById: [], _getPreviousMatches: [], _getNextMatch: [] } });
333
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhY2tldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvYnJhY2tldC9jb21wb25lbnRzL2JyYWNrZXQvYnJhY2tldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvYnJhY2tldC9jb21wb25lbnRzL2JyYWNrZXQvYnJhY2tldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGVBQWUsRUFBaUIsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFFBQVEsRUFDUixLQUFLLEVBRUwsaUJBQWlCLEVBQ2pCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQXFCeEUsTUFBTSxPQUFPLGdCQUFnQjtJQWxCN0I7UUFtQlUsZ0JBQVcsR0FBRyxNQUFNLENBQTBCLFVBQVUsQ0FBQyxDQUFDO1FBQzFELG1CQUFjLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsUUFBUSxF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QkFBaUIsTUFpRGpCLFdBQVcsTUFnQ1gsaUJBQWlCLE1BbUJqQixpQkFBaUIsTUFpQm5CLGFBQWEsTUFRYixtQkFBbUIsTUFrQm5CLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIENvbXBvbmVudFR5cGUsIFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIFRyYWNrQnlGdW5jdGlvbixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMZXREaXJlY3RpdmUsIE1lbW8gfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IFJvdW5kU3RhZ2VTdHJ1Y3R1cmVXaXRoTWF0Y2hlc1ZpZXcgfSBmcm9tICdAZXRobGV0ZS90eXBlcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQlJBQ0tFVF9DT05GSUdfVE9LRU4sIEJSQUNLRVRfTUFUQ0hfSURfVE9LRU4sIEJSQUNLRVRfUk9VTkRfSURfVE9LRU4sIEJSQUNLRVRfVE9LRU4gfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQnJhY2tldENvbmZpZywgQnJhY2tldE1hdGNoLCBCcmFja2V0Um91bmQgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBCcmFja2V0LCBjcmVhdGVCcmFja2V0Q29uZmlnLCBvcmRlclJvdW5kcyB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IENvbm5lY3RlZE1hdGNoZXMgfSBmcm9tICcuL2JyYWNrZXQuY29tcG9uZW50LnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXQtYnJhY2tldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9icmFja2V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYnJhY2tldC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW05nQ2xhc3MsIExldERpcmVjdGl2ZSwgUG9ydGFsTW9kdWxlLCBBc3luY1BpcGVdLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdldC1icmFja2V0JyxcbiAgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQlJBQ0tFVF9UT0tFTixcbiAgICAgIHVzZUV4aXN0aW5nOiBCcmFja2V0Q29tcG9uZW50LFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEJyYWNrZXRDb21wb25lbnQge1xuICBwcml2YXRlIF9lbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSBfYnJhY2tldENvbmZpZyA9IGluamVjdChCUkFDS0VUX0NPTkZJR19UT0tFTiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBpdGVtV2l0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbVdpdGg7XG4gIH1cbiAgc2V0IGl0ZW1XaXRoKHY6IHN0cmluZykge1xuICAgIHRoaXMuX2l0ZW1XaXRoID0gdjtcblxuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1fYnJhY2tldC1pdGVtLXdpZHRoJywgdik7XG4gIH1cbiAgcHJpdmF0ZSBfaXRlbVdpdGggPSAnMjAwcHgnO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBpdGVtSGVpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLl9pdGVtSGVpZ2h0O1xuICB9XG4gIHNldCBpdGVtSGVpZ2h0KHY6IHN0cmluZykge1xuICAgIHRoaXMuX2l0ZW1IZWlnaHQgPSB2O1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1fYnJhY2tldC1pdGVtLWhlaWdodCcsIHYpO1xuICB9XG4gIHByaXZhdGUgX2l0ZW1IZWlnaHQgPSAnMTAwcHgnO1xuXG4gIEBJbnB1dCgpXG4gIGdldCByb3VuZEhlYWRlckhlaWdodCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcm91bmRIZWFkZXJIZWlnaHQ7XG4gIH1cbiAgc2V0IHJvdW5kSGVhZGVySGVpZ2h0KHY6IHN0cmluZykge1xuICAgIHRoaXMuX3JvdW5kSGVhZGVySGVpZ2h0ID0gdjtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tX3JvdW5kLWhlYWRlci1oZWlnaHQnLCB2KTtcbiAgfVxuICBwcml2YXRlIF9yb3VuZEhlYWRlckhlaWdodCA9ICc1MHB4JztcblxuICBASW5wdXQoKVxuICBnZXQgdXBwZXJMb3dlckJyYWNrZXRHYXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3VwcGVyTG93ZXJCcmFja2V0R2FwO1xuICB9XG4gIHNldCB1cHBlckxvd2VyQnJhY2tldEdhcCh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl91cHBlckxvd2VyQnJhY2tldEdhcCA9IHY7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLV91cHBlci1sb3dlci1icmFja2V0LWdhcCcsIHYpO1xuICB9XG4gIHByaXZhdGUgX3VwcGVyTG93ZXJCcmFja2V0R2FwID0gJzBweCc7XG5cbiAgQElucHV0KClcbiAgZ2V0IGNvbHVtbkdhcCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1uR2FwO1xuICB9XG4gIHNldCBjb2x1bW5HYXAodjogc3RyaW5nKSB7XG4gICAgdGhpcy5fY29sdW1uR2FwID0gdjtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tX2JyYWNrZXQtY29sdW1uLWdhcCcsIHYpO1xuICB9XG4gIHByaXZhdGUgX2NvbHVtbkdhcCE6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBnZXQgcm93R2FwKCkge1xuICAgIHJldHVybiB0aGlzLl9yb3dHYXA7XG4gIH1cbiAgc2V0IHJvd0dhcCh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9yb3dHYXAgPSB2O1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1fYnJhY2tldC1yb3ctZ2FwJywgdik7XG4gIH1cbiAgcHJpdmF0ZSBfcm93R2FwITogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGdldCByb3VuZHNXaXRoTWF0Y2hlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fcm91bmRzV2l0aE1hdGNoZXM7XG4gIH1cbiAgc2V0IHJvdW5kc1dpdGhNYXRjaGVzKHY6IFJvdW5kU3RhZ2VTdHJ1Y3R1cmVXaXRoTWF0Y2hlc1ZpZXdbXSB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9yb3VuZHNXaXRoTWF0Y2hlcyA9IHY7XG5cbiAgICBpZiAoIXYgfHwgdi5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuX2JyYWNrZXQkLm5leHQobnVsbCk7XG4gICAgICB0aGlzLl9yb3VuZHNXaXRoTWF0Y2hlcyA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNvcnRlZFJvdW5kcyA9IG9yZGVyUm91bmRzKHYpO1xuXG4gICAgICB0aGlzLl9icmFja2V0JC5uZXh0KG5ldyBCcmFja2V0KHNvcnRlZFJvdW5kcykpO1xuICAgICAgdGhpcy5fcm91bmRzV2l0aE1hdGNoZXMgPSBzb3J0ZWRSb3VuZHM7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX3JvdW5kc1dpdGhNYXRjaGVzITogUm91bmRTdGFnZVN0cnVjdHVyZVdpdGhNYXRjaGVzVmlld1tdIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBnZXQgY29tcG9uZW50Q29uZmlnKCkge1xuICAgIHJldHVybiB0aGlzLl9jb21wb25lbnRDb25maWc7XG4gIH1cbiAgc2V0IGNvbXBvbmVudENvbmZpZyh2OiBCcmFja2V0Q29uZmlnIHwgbnVsbCkge1xuICAgIHRoaXMuX2NvbXBvbmVudENvbmZpZyA9IHY7XG4gICAgdGhpcy5fY29uZmlnID0gY3JlYXRlQnJhY2tldENvbmZpZyh0aGlzLl9icmFja2V0Q29uZmlnLCB2KTtcbiAgfVxuICBwcml2YXRlIF9jb21wb25lbnRDb25maWc6IEJyYWNrZXRDb25maWcgfCBudWxsID0gbnVsbDtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuaGFzLXJvdW5kLWhlYWRlcnMnKVxuICBnZXQgaGFzUm91bmRIZWFkZXJzKCkge1xuICAgIHJldHVybiAhIXRoaXMuX2NvbmZpZz8ucm91bmRIZWFkZXJDb21wb25lbnQgPz8gZmFsc2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2NvbmZpZyA9IGNyZWF0ZUJyYWNrZXRDb25maWcodGhpcy5fY29tcG9uZW50Q29uZmlnLCB0aGlzLl9icmFja2V0Q29uZmlnKTtcbiAgcHJvdGVjdGVkIF9icmFja2V0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QnJhY2tldCB8IG51bGw+KG51bGwpO1xuXG4gIHRyYWNrQnlSb3VuZDogVHJhY2tCeUZ1bmN0aW9uPEJyYWNrZXRSb3VuZD4gPSAoXywgcm91bmQpID0+IHJvdW5kLmRhdGEuaWQ7XG4gIHRyYWNrQnlNYXRjaDogVHJhY2tCeUZ1bmN0aW9uPEJyYWNrZXRNYXRjaD4gPSAoXywgbWF0Y2gpID0+IG1hdGNoLmRhdGEuaWQ7XG5cbiAgZ2V0QnJhY2tldE1hdGNoQnlJZChpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX2JyYWNrZXQkLnBpcGUobWFwKChicmFja2V0KSA9PiBicmFja2V0Py5nZXRNYXRjaEJ5SWQoaWQpID8/IG51bGwpKTtcbiAgfVxuXG4gIGdldEJyYWNrZXRSb3VuZEJ5SWQoaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9icmFja2V0JC5waXBlKG1hcCgoYnJhY2tldCkgPT4gYnJhY2tldD8uZ2V0Um91bmRCeUlkKGlkKSA/PyBudWxsKSk7XG4gIH1cblxuICBATWVtbyh7XG4gICAgcmVzb2x2ZXI6IChtYXRjaDogQnJhY2tldE1hdGNoLCBicmFja2V0OiBCcmFja2V0KSA9PlxuICAgICAgYCR7bWF0Y2guZGF0YS5pZH0tJHttYXRjaC5wcmV2aW91c01hdGNoZXM/LnJvdW5kSWQgPz8gbnVsbH0gJHticmFja2V0LmlkfWAsXG4gIH0pXG4gIHByb3RlY3RlZCBnZXRDb25uZWN0ZWRNYXRjaGVzKG1hdGNoOiBCcmFja2V0TWF0Y2gsIGJyYWNrZXQ6IEJyYWNrZXQpOiBDb25uZWN0ZWRNYXRjaGVzIHtcbiAgICBjb25zdCBwcmV2aW91c01hdGNoZXMgPSB0aGlzLl9nZXRQcmV2aW91c01hdGNoZXMobWF0Y2gsIGJyYWNrZXQpO1xuICAgIGNvbnN0IG5leHRNYXRjaCA9IHRoaXMuX2dldE5leHRNYXRjaChtYXRjaCwgYnJhY2tldCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcHJldmlvdXNNYXRjaGVzLFxuICAgICAgbmV4dE1hdGNoLFxuICAgIH07XG4gIH1cblxuICBATWVtbyh7XG4gICAgcmVzb2x2ZXI6IChjdXJyZW50TWF0Y2g6IEJyYWNrZXRNYXRjaCwgbmV4dE1hdGNoOiBCcmFja2V0TWF0Y2ggfCBudWxsKSA9PlxuICAgICAgYCR7Y3VycmVudE1hdGNoLmRhdGEuaWR9LSR7bmV4dE1hdGNoPy5wcmV2aW91c01hdGNoZXM/LnJvdW5kSWQgPz8gbnVsbH1gLFxuICB9KVxuICBwcm90ZWN0ZWQgZ2V0Q2hpbGRDb25uZWN0b3JTaGFwZShjdXJyZW50TWF0Y2g6IEJyYWNrZXRNYXRjaCwgbmV4dE1hdGNoOiBCcmFja2V0TWF0Y2ggfCBudWxsKSB7XG4gICAgaWYgKCFuZXh0TWF0Y2gpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHRNYXRjaFByZXZpb3VzTWF0Y2hlcyA9IG5leHRNYXRjaC5wcmV2aW91c01hdGNoZXM/Lm1hdGNoSWRzO1xuXG4gICAgaWYgKCFuZXh0TWF0Y2hQcmV2aW91c01hdGNoZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHRNYXRjaFByZXZpb3VzTWF0Y2hBID0gbmV4dE1hdGNoUHJldmlvdXNNYXRjaGVzWzBdO1xuICAgIGNvbnN0IG5leHRNYXRjaFByZXZpb3VzTWF0Y2hCID0gbmV4dE1hdGNoUHJldmlvdXNNYXRjaGVzWzFdO1xuXG4gICAgaWYgKG5leHRNYXRjaFByZXZpb3VzTWF0Y2hlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiAnc3RyYWlnaHQnO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50TWF0Y2guZGF0YS5pZCA9PT0gbmV4dE1hdGNoUHJldmlvdXNNYXRjaEEpIHtcbiAgICAgIHJldHVybiAnZG93bic7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRNYXRjaC5kYXRhLmlkID09PSBuZXh0TWF0Y2hQcmV2aW91c01hdGNoQikge1xuICAgICAgcmV0dXJuICd1cCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBATWVtbyh7XG4gICAgcmVzb2x2ZXI6IChyb3VuZEluZGV4OiBudW1iZXIsIGJyYWNrZXQ6IEJyYWNrZXQpID0+IGAke3JvdW5kSW5kZXh9LSR7YnJhY2tldC5pZH1gLFxuICB9KVxuICBwcm90ZWN0ZWQgZ2V0TGluZU11bHRpQWZ0ZXIocm91bmRJbmRleDogbnVtYmVyLCBicmFja2V0OiBCcmFja2V0KSB7XG4gICAgY29uc3QgaXNEb3VibGVFbGltaW5hdGlvbiA9IGJyYWNrZXQuYnJhY2tldFR5cGUgPT09ICdkb3VibGUnO1xuICAgIGNvbnN0IGN1cnJlbnRSb3VuZCA9IGJyYWNrZXQuYnJhY2tldFJvdW5kc1tyb3VuZEluZGV4XTtcbiAgICBjb25zdCBuZXh0Um91bmQgPSBicmFja2V0LmJyYWNrZXRSb3VuZHNbcm91bmRJbmRleCArIDFdO1xuXG4gICAgLy8gZm9yIGNvbm5lY3RpbmcgdGhlIGxhc3QgbG9vc2VyIG1hdGNoIGFuZCB0aGUgcmVzcGVjdGl2ZSBzZW1pIGZpbmFsIHdpbm5lciBtYXRjaFxuICAgIGlmIChcbiAgICAgIGlzRG91YmxlRWxpbWluYXRpb24gJiZcbiAgICAgICghbmV4dFJvdW5kIHx8IG5leHRSb3VuZC5kYXRhLnR5cGUgPT09ICd0aGlyZF9wbGFjZScpICYmXG4gICAgICBjdXJyZW50Um91bmQ/LmRhdGEudHlwZSA9PT0gJ2xvc2VyX2JyYWNrZXQnXG4gICAgKSB7XG4gICAgICByZXR1cm4gYnJhY2tldC50b3RhbFJvd0NvdW50IC0gMTtcbiAgICB9XG5cbiAgICBpZiAoIW5leHRSb3VuZCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgaWYgKG5leHRSb3VuZC5tYXRjaGVzLmxlbmd0aCA9PT0gY3VycmVudFJvdW5kPy5tYXRjaGVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgaWYgKCFpc0RvdWJsZUVsaW1pbmF0aW9uKSB7XG4gICAgICByZXR1cm4gMiAqKiByb3VuZEluZGV4O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcm5kSW5kZXggPSByb3VuZEluZGV4O1xuXG4gICAgICBpZiAoY3VycmVudFJvdW5kPy5kYXRhLnR5cGUgPT09ICdsb3Nlcl9icmFja2V0Jykge1xuICAgICAgICBjb25zdCB0b3RhbFdpbm5lclJvdW5kcyA9IGJyYWNrZXQud2lubmVyUm91bmRDb3VudDtcbiAgICAgICAgY29uc3QgbG9vc2VyUm91bmRJbmRleCA9XG4gICAgICAgICAgY3VycmVudFJvdW5kLmRhdGEudHlwZSA9PT0gJ2xvc2VyX2JyYWNrZXQnID8gcm91bmRJbmRleCAtIHRvdGFsV2lubmVyUm91bmRzIDogcm91bmRJbmRleDtcblxuICAgICAgICBybmRJbmRleCA9IGxvb3NlclJvdW5kSW5kZXggLyAyO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gMiAqKiBybmRJbmRleDtcbiAgICB9XG4gIH1cblxuICBATWVtbyh7XG4gICAgcmVzb2x2ZXI6IChcbiAgICAgIGFmZmVjdGVkUm91bmQ6IEJyYWNrZXRSb3VuZCB8IG51bGwsXG4gICAgICBwcmV2aW91c1JvdW5kOiBCcmFja2V0Um91bmQgfCBudWxsLFxuICAgICAgY3VycmVudFJvdW5kOiBCcmFja2V0Um91bmQgfCBudWxsLFxuICAgICAgbmV4dFJvdW5kOiBCcmFja2V0Um91bmQgfCBudWxsLFxuICAgICAgYnJhY2tldDogQnJhY2tldCxcbiAgICApID0+XG4gICAgICBgJHthZmZlY3RlZFJvdW5kPy5kYXRhLmlkfSAke3ByZXZpb3VzUm91bmQ/LmRhdGEuaWR9ICR7Y3VycmVudFJvdW5kPy5kYXRhLmlkfSAke25leHRSb3VuZD8uZGF0YS5pZH0gJHticmFja2V0LmlkfWAsXG4gIH0pXG4gIHByb3RlY3RlZCBnZXRMaW5lU3BhbihcbiAgICBhZmZlY3RlZFJvdW5kOiBCcmFja2V0Um91bmQgfCBudWxsLFxuICAgIHByZXZpb3VzUm91bmQ6IEJyYWNrZXRSb3VuZCB8IG51bGwsXG4gICAgY3VycmVudFJvdW5kOiBCcmFja2V0Um91bmQgfCBudWxsLFxuICAgIG5leHRSb3VuZDogQnJhY2tldFJvdW5kIHwgbnVsbCxcbiAgICBicmFja2V0OiBCcmFja2V0LFxuICApIHtcbiAgICBpZiAoIWFmZmVjdGVkUm91bmQpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIC8vIFRoZXJlIGlzIG5ldmVyIGEgY29ubmVjdGlvbiB0byB0aGUgdGhpcmQgcGxhY2UgbWF0Y2hcbiAgICBpZiAobmV4dFJvdW5kPy5kYXRhLnR5cGUgPT09ICd0aGlyZF9wbGFjZScpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGlmIChicmFja2V0LmlzUGFydGlhbERvdWJsZUVsaW1pbmF0aW9uKSB7XG4gICAgICBpZiAoYWZmZWN0ZWRSb3VuZCA9PT0gbmV4dFJvdW5kICYmIG5leHRSb3VuZC5kYXRhLnR5cGUgPT09ICdmaW5hbCcpIHtcbiAgICAgICAgcmV0dXJuIDI7XG4gICAgICB9IGVsc2UgaWYgKGFmZmVjdGVkUm91bmQgPT09IGN1cnJlbnRSb3VuZCAmJiBjdXJyZW50Um91bmQ/LmRhdGEudHlwZSA9PT0gJ2ZpbmFsJykge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0gZWxzZSBpZiAoYWZmZWN0ZWRSb3VuZCA9PT0gcHJldmlvdXNSb3VuZCAmJiBjdXJyZW50Um91bmQ/LmRhdGEudHlwZSA9PT0gJ2ZpbmFsJykge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWZmZWN0ZWRSb3VuZC5jb2x1bW4uZW5kIC0gYWZmZWN0ZWRSb3VuZC5jb2x1bW4uc3RhcnQ7XG4gIH1cblxuICBATWVtbyh7XG4gICAgcmVzb2x2ZXI6IChyb3VuZDogQnJhY2tldFJvdW5kKSA9PiBgJHtyb3VuZC5kYXRhLmlkfWAsXG4gIH0pXG4gIHByb3RlY3RlZCBjcmVhdGVSb3VuZFBvcnRhbChyb3VuZDogQnJhY2tldFJvdW5kLCBjb21wb25lbnQ6IENvbXBvbmVudFR5cGU8dW5rbm93bj4pIHtcbiAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEJSQUNLRVRfUk9VTkRfSURfVE9LRU4sXG4gICAgICAgICAgdXNlVmFsdWU6IHJvdW5kLmRhdGEuaWQsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgcGFyZW50OiB0aGlzLl9pbmplY3RvcixcbiAgICB9KTtcblxuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoY29tcG9uZW50LCBudWxsLCBpbmplY3Rvcik7XG5cbiAgICByZXR1cm4gcG9ydGFsO1xuICB9XG5cbiAgQE1lbW8oe1xuICAgIHJlc29sdmVyOiAobWF0Y2g6IEJyYWNrZXRNYXRjaCkgPT4gYCR7bWF0Y2guZGF0YS5pZH1gLFxuICB9KVxuICBwcm90ZWN0ZWQgY3JlYXRlTWF0Y2hQb3J0YWwobWF0Y2g6IEJyYWNrZXRNYXRjaCwgY29tcG9uZW50OiBDb21wb25lbnRUeXBlPHVua25vd24+KSB7XG4gICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBCUkFDS0VUX01BVENIX0lEX1RPS0VOLFxuICAgICAgICAgIHVzZVZhbHVlOiBtYXRjaC5kYXRhLmlkLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3IsXG4gICAgfSk7XG5cbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKGNvbXBvbmVudCwgbnVsbCwgaW5qZWN0b3IpO1xuXG4gICAgcmV0dXJuIHBvcnRhbDtcbiAgfVxuXG4gIEBNZW1vKHsgcmVzb2x2ZXI6IChpZDogc3RyaW5nLCBicmFja2V0OiBCcmFja2V0KSA9PiBgJHtpZH0tJHticmFja2V0LmlkfWAgfSlcbiAgcHJpdmF0ZSBfZ2V0Um91bmRCeUlkKGlkOiBzdHJpbmcsIGJyYWNrZXQ6IEJyYWNrZXQpIHtcbiAgICByZXR1cm4gYnJhY2tldD8uYnJhY2tldFJvdW5kcy5maW5kKChyb3VuZCkgPT4gcm91bmQuZGF0YS5pZCA9PT0gaWQpID8/IG51bGw7XG4gIH1cblxuICBATWVtbyh7XG4gICAgcmVzb2x2ZXI6IChtYXRjaDogQnJhY2tldE1hdGNoLCBicmFja2V0OiBCcmFja2V0KSA9PlxuICAgICAgYCR7bWF0Y2guZGF0YS5pZH0tJHttYXRjaC5wcmV2aW91c01hdGNoZXM/LnJvdW5kSWQgPz8gbnVsbH0gJHticmFja2V0LmlkfWAsXG4gIH0pXG4gIHByaXZhdGUgX2dldFByZXZpb3VzTWF0Y2hlcyhtYXRjaDogQnJhY2tldE1hdGNoLCBicmFja2V0OiBCcmFja2V0KSB7XG4gICAgaWYgKCFtYXRjaC5wcmV2aW91c01hdGNoZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcm91bmRJZCwgbWF0Y2hJZHMgfSA9IG1hdGNoLnByZXZpb3VzTWF0Y2hlcztcblxuICAgIGNvbnN0IHJvdW5kID0gdGhpcy5fZ2V0Um91bmRCeUlkKHJvdW5kSWQsIGJyYWNrZXQpO1xuXG4gICAgcmV0dXJuIG1hdGNoSWRzLm1hcCgobWF0Y2hJZDogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gcm91bmQ/Lm1hdGNoZXMuZmluZCgobWF0Y2gpID0+IG1hdGNoLmRhdGEuaWQgPT09IG1hdGNoSWQpID8/IG51bGw7XG4gICAgfSk7XG4gIH1cblxuICBATWVtbyh7XG4gICAgcmVzb2x2ZXI6IChtYXRjaDogQnJhY2tldE1hdGNoLCBicmFja2V0OiBCcmFja2V0KSA9PlxuICAgICAgYCR7bWF0Y2guZGF0YS5pZH0tJHttYXRjaC5wcmV2aW91c01hdGNoZXM/LnJvdW5kSWQgPz8gbnVsbH0gJHticmFja2V0LmlkfWAsXG4gIH0pXG4gIHByaXZhdGUgX2dldE5leHRNYXRjaChtYXRjaDogQnJhY2tldE1hdGNoLCBicmFja2V0OiBCcmFja2V0KSB7XG4gICAgaWYgKCFtYXRjaC5uZXh0TWF0Y2gpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcm91bmRJZCwgbWF0Y2hJZCB9ID0gbWF0Y2gubmV4dE1hdGNoO1xuXG4gICAgY29uc3Qgcm91bmQgPSB0aGlzLl9nZXRSb3VuZEJ5SWQocm91bmRJZCwgYnJhY2tldCk7XG5cbiAgICByZXR1cm4gcm91bmQ/Lm1hdGNoZXMuZmluZCgobWF0Y2gpID0+IG1hdGNoLmRhdGEuaWQgPT09IG1hdGNoSWQpID8/IG51bGw7XG4gIH1cbn1cbiIsIkBpZiAoX2JyYWNrZXQkIHwgYXN5bmM7IGFzIGJyYWNrZXQpIHtcbiAgQGZvciAocm91bmQgb2YgYnJhY2tldC5icmFja2V0Um91bmRzOyB0cmFjayB0cmFja0J5Um91bmQocm91bmRJbmRleCwgcm91bmQpOyBsZXQgcm91bmRJbmRleCA9ICRpbmRleCkge1xuICAgIEBpZiAoX2NvbmZpZy5yb3VuZEhlYWRlckNvbXBvbmVudCkge1xuICAgICAgPGRpdlxuICAgICAgICBbc3R5bGUuLS1fY3NdPVwicm91bmQuY29sdW1uLnN0YXJ0XCJcbiAgICAgICAgW3N0eWxlLi0tX2NlXT1cInJvdW5kLmNvbHVtbi5lbmRcIlxuICAgICAgICBbc3R5bGUuLS1fcnNdPVwiXG4gICAgICAgICAgcm91bmQuZGF0YS50eXBlID09PSAnbG9zZXJfYnJhY2tldCcgfHwgcm91bmQuZGF0YS50eXBlID09PSAndGhpcmRfcGxhY2UnXG4gICAgICAgICAgICA/IHJvdW5kLnJvdy5zdGFydCArIDFcbiAgICAgICAgICAgIDogcm91bmQucm93LnN0YXJ0XG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLnNwZWNpYWwtYWxpZ24tZW5kXT1cIlxuICAgICAgICAgIHJvdW5kLmRhdGEudHlwZSA9PT0gJ3RoaXJkX3BsYWNlJyAmJlxuICAgICAgICAgIGJyYWNrZXQuYnJhY2tldFR5cGUgPT09ICdzaW5nbGUnICYmXG4gICAgICAgICAgYnJhY2tldC5maXJzdFdpbm5lclJvdW5kICYmXG4gICAgICAgICAgYnJhY2tldC5maXJzdFdpbm5lclJvdW5kLm1hdGNoZXMubGVuZ3RoIDw9IDRcbiAgICAgICAgICAgID8gJ3RydWUnXG4gICAgICAgICAgICA6ICdmYWxzZSdcbiAgICAgICAgXCJcbiAgICAgICAgW2F0dHIuaXMtbG9zZXItcm91bmQtaGVhZGVyXT1cIlxuICAgICAgICAgIChyb3VuZC5kYXRhLnR5cGUgPT09ICdsb3Nlcl9icmFja2V0JyB8fCByb3VuZC5kYXRhLnR5cGUgPT09ICd0aGlyZF9wbGFjZScpICYmIGJyYWNrZXQuYnJhY2tldFR5cGUgPT09ICdkb3VibGUnXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwiZXQtYnJhY2tldC1yb3VuZFwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKmNka1BvcnRhbE91dGxldD1cImNyZWF0ZVJvdW5kUG9ydGFsKHJvdW5kLCBfY29uZmlnLnJvdW5kSGVhZGVyQ29tcG9uZW50KVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgPG5nLWNvbnRhaW5lciAqZXRMZXQ9XCJicmFja2V0LmJyYWNrZXRSb3VuZHNbcm91bmRJbmRleCAtIDFdID8/IG51bGwgYXMgbGFzdFJvdW5kXCI+XG4gICAgICA8bmctY29udGFpbmVyICpldExldD1cImJyYWNrZXQuYnJhY2tldFJvdW5kc1tyb3VuZEluZGV4ICsgMV0gPz8gbnVsbCBhcyBuZXh0Um91bmRcIj5cbiAgICAgICAgQGZvciAobWF0Y2ggb2Ygcm91bmQubWF0Y2hlczsgdHJhY2sgdHJhY2tCeU1hdGNoKG1hdGNoSW5kZXgsIG1hdGNoKTsgbGV0IG1hdGNoSW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgICBAaWYgKGdldENvbm5lY3RlZE1hdGNoZXMobWF0Y2gsIGJyYWNrZXQpOyBhcyBjb25uZWN0ZWRNYXRjaGVzKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIFtzdHlsZS4tLV9jc109XCJyb3VuZC5jb2x1bW4uc3RhcnRcIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1fY2VdPVwicm91bmQuY29sdW1uLmVuZFwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLV9yc109XCJcbiAgICAgICAgICAgICAgICByb3VuZC5kYXRhLnR5cGUgPT09ICdsb3Nlcl9icmFja2V0JyB8fCByb3VuZC5kYXRhLnR5cGUgPT09ICd0aGlyZF9wbGFjZSdcbiAgICAgICAgICAgICAgICAgID8gbWF0Y2gucm93LnN0YXJ0ICsgKF9jb25maWcucm91bmRIZWFkZXJDb21wb25lbnQgPyAyIDogMClcbiAgICAgICAgICAgICAgICAgIDogbWF0Y2gucm93LnN0YXJ0ICsgKF9jb25maWcucm91bmRIZWFkZXJDb21wb25lbnQgPyAxIDogMClcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW3N0eWxlLi0tX3JlXT1cIlxuICAgICAgICAgICAgICAgIHJvdW5kLmRhdGEudHlwZSA9PT0gJ2xvc2VyX2JyYWNrZXQnIHx8IHJvdW5kLmRhdGEudHlwZSA9PT0gJ3RoaXJkX3BsYWNlJ1xuICAgICAgICAgICAgICAgICAgPyBtYXRjaC5yb3cuZW5kICsgKF9jb25maWcucm91bmRIZWFkZXJDb21wb25lbnQgPyAyIDogMClcbiAgICAgICAgICAgICAgICAgIDogbWF0Y2gucm93LmVuZCArIChfY29uZmlnLnJvdW5kSGVhZGVyQ29tcG9uZW50ID8gMSA6IDApXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLV9saW5lLW11bHRpLWFmdGVyXT1cImdldExpbmVNdWx0aUFmdGVyKHJvdW5kSW5kZXgsIGJyYWNrZXQpXCJcbiAgICAgICAgICAgICAgW2F0dHIuZXQtaGFzLXBhcmVudHNdPVwiISFjb25uZWN0ZWRNYXRjaGVzLnByZXZpb3VzTWF0Y2hlcz8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgW2F0dHIuZXQtaGFzLWNoaWxkXT1cIiEhY29ubmVjdGVkTWF0Y2hlcy5uZXh0TWF0Y2hcIlxuICAgICAgICAgICAgICBbYXR0ci5ldC1jaGlsZC1jb25uZWN0b3Itc2hhcGVdPVwiZ2V0Q2hpbGRDb25uZWN0b3JTaGFwZShtYXRjaCwgY29ubmVjdGVkTWF0Y2hlcy5uZXh0TWF0Y2gpXCJcbiAgICAgICAgICAgICAgW2F0dHIubGluZS1zcGFuLWJlZm9yZV09XCJnZXRMaW5lU3BhbihsYXN0Um91bmQsIGxhc3RSb3VuZCwgcm91bmQsIG5leHRSb3VuZCwgYnJhY2tldClcIlxuICAgICAgICAgICAgICBbYXR0ci5saW5lLXNwYW4tY3VycmVudF09XCJnZXRMaW5lU3Bhbihyb3VuZCwgbGFzdFJvdW5kLCByb3VuZCwgbmV4dFJvdW5kLCBicmFja2V0KVwiXG4gICAgICAgICAgICAgIFthdHRyLmxpbmUtc3Bhbi1hZnRlcl09XCJnZXRMaW5lU3BhbihuZXh0Um91bmQsIGxhc3RSb3VuZCwgcm91bmQsIG5leHRSb3VuZCwgYnJhY2tldClcIlxuICAgICAgICAgICAgICBbYXR0ci5pcy1maXJzdC1sb3Nlci1yb3VuZC1tYXRjaF09XCJcbiAgICAgICAgICAgICAgICAocm91bmQuZGF0YS50eXBlID09PSAnbG9zZXJfYnJhY2tldCcgfHwgcm91bmQuZGF0YS50eXBlID09PSAndGhpcmRfcGxhY2UnKSAmJiBtYXRjaEluZGV4ID09PSAwXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmlzLWxhc3QtbG93ZXItYnJhY2tldC1tYXRjaF09XCJcbiAgICAgICAgICAgICAgICByb3VuZC5kYXRhLnR5cGUgPT09ICdsb3Nlcl9icmFja2V0JyAmJlxuICAgICAgICAgICAgICAgIChyb3VuZEluZGV4ID09PSBicmFja2V0LmJyYWNrZXRSb3VuZHMubGVuZ3RoIC0gMSB8fCBuZXh0Um91bmQ/LmRhdGE/LnR5cGUgPT09ICd0aGlyZF9wbGFjZScpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZXQtYnJhY2tldC1tYXRjaFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKmNka1BvcnRhbE91dGxldD1cImNyZWF0ZU1hdGNoUG9ydGFsKG1hdGNoLCBfY29uZmlnLm1hdGNoQ29tcG9uZW50KVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICB9XG59XG4iXX0=
333
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhY2tldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvYnJhY2tldC9jb21wb25lbnRzL2JyYWNrZXQvYnJhY2tldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvYnJhY2tldC9jb21wb25lbnRzL2JyYWNrZXQvYnJhY2tldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGVBQWUsRUFBaUIsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFFBQVEsRUFDUixLQUFLLEVBRUwsaUJBQWlCLEVBQ2pCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQXFCeEUsTUFBTSxPQUFPLGdCQUFnQjtJQWxCN0I7UUFtQlUsZ0JBQVcsR0FBRyxNQUFNLENBQTBCLFVBQVUsQ0FBQyxDQUFDO1FBQzFELG1CQUFjLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsUUFBUSxF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RixpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBV0Ysb0JBQW9CO3NCQUR2QixLQUFLO2dCQVdGLFNBQVM7c0JBRFosS0FBSztnQkFXRixNQUFNO3NCQURULEtBQUs7Z0JBV0YsaUJBQWlCO3NCQURwQixLQUFLO2dCQW9CRixlQUFlO3NCQURsQixLQUFLO2dCQVdGLGVBQWU7c0JBRGxCLFdBQVc7dUJBQUMsd0JBQXdCO2dCQXVCM0IsbUJBQW1CLE1BY25CLHNCQUFzQixNQWdDdEIsaUJBQWlCLE1BaURqQixXQUFXLE1BZ0NYLGlCQUFpQixNQW1CakIsaUJBQWlCLE1BaUJuQixhQUFhLE1BUWIsbUJBQW1CLE1Ba0JuQixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsLCBDb21wb25lbnRUeXBlLCBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGV0RGlyZWN0aXZlLCBNZW1vIH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBSb3VuZFN0YWdlU3RydWN0dXJlV2l0aE1hdGNoZXNWaWV3IH0gZnJvbSAnQGV0aGxldGUvdHlwZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJSQUNLRVRfQ09ORklHX1RPS0VOLCBCUkFDS0VUX01BVENIX0lEX1RPS0VOLCBCUkFDS0VUX1JPVU5EX0lEX1RPS0VOLCBCUkFDS0VUX1RPS0VOIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEJyYWNrZXRDb25maWcsIEJyYWNrZXRNYXRjaCwgQnJhY2tldFJvdW5kIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQnJhY2tldCwgY3JlYXRlQnJhY2tldENvbmZpZywgb3JkZXJSb3VuZHMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBDb25uZWN0ZWRNYXRjaGVzIH0gZnJvbSAnLi9icmFja2V0LmNvbXBvbmVudC50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2V0LWJyYWNrZXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYnJhY2tldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2JyYWNrZXQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtOZ0NsYXNzLCBMZXREaXJlY3RpdmUsIFBvcnRhbE1vZHVsZSwgQXN5bmNQaXBlXSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZXQtYnJhY2tldCcsXG4gIH0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEJSQUNLRVRfVE9LRU4sXG4gICAgICB1c2VFeGlzdGluZzogQnJhY2tldENvbXBvbmVudCxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBCcmFja2V0Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBfZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByaXZhdGUgX2JyYWNrZXRDb25maWcgPSBpbmplY3QoQlJBQ0tFVF9DT05GSUdfVE9LRU4sIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgX2luamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICBASW5wdXQoKVxuICBnZXQgaXRlbVdpdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1XaXRoO1xuICB9XG4gIHNldCBpdGVtV2l0aCh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pdGVtV2l0aCA9IHY7XG5cbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tX2JyYWNrZXQtaXRlbS13aWR0aCcsIHYpO1xuICB9XG4gIHByaXZhdGUgX2l0ZW1XaXRoID0gJzIwMHB4JztcblxuICBASW5wdXQoKVxuICBnZXQgaXRlbUhlaWdodCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbUhlaWdodDtcbiAgfVxuICBzZXQgaXRlbUhlaWdodCh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pdGVtSGVpZ2h0ID0gdjtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tX2JyYWNrZXQtaXRlbS1oZWlnaHQnLCB2KTtcbiAgfVxuICBwcml2YXRlIF9pdGVtSGVpZ2h0ID0gJzEwMHB4JztcblxuICBASW5wdXQoKVxuICBnZXQgcm91bmRIZWFkZXJIZWlnaHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kSGVhZGVySGVpZ2h0O1xuICB9XG4gIHNldCByb3VuZEhlYWRlckhlaWdodCh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9yb3VuZEhlYWRlckhlaWdodCA9IHY7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLV9yb3VuZC1oZWFkZXItaGVpZ2h0Jywgdik7XG4gIH1cbiAgcHJpdmF0ZSBfcm91bmRIZWFkZXJIZWlnaHQgPSAnNTBweCc7XG5cbiAgQElucHV0KClcbiAgZ2V0IHVwcGVyTG93ZXJCcmFja2V0R2FwKCkge1xuICAgIHJldHVybiB0aGlzLl91cHBlckxvd2VyQnJhY2tldEdhcDtcbiAgfVxuICBzZXQgdXBwZXJMb3dlckJyYWNrZXRHYXAodjogc3RyaW5nKSB7XG4gICAgdGhpcy5fdXBwZXJMb3dlckJyYWNrZXRHYXAgPSB2O1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1fdXBwZXItbG93ZXItYnJhY2tldC1nYXAnLCB2KTtcbiAgfVxuICBwcml2YXRlIF91cHBlckxvd2VyQnJhY2tldEdhcCA9ICcwcHgnO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBjb2x1bW5HYXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbkdhcDtcbiAgfVxuICBzZXQgY29sdW1uR2FwKHY6IHN0cmluZykge1xuICAgIHRoaXMuX2NvbHVtbkdhcCA9IHY7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLV9icmFja2V0LWNvbHVtbi1nYXAnLCB2KTtcbiAgfVxuICBwcml2YXRlIF9jb2x1bW5HYXAhOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgZ2V0IHJvd0dhcCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcm93R2FwO1xuICB9XG4gIHNldCByb3dHYXAodjogc3RyaW5nKSB7XG4gICAgdGhpcy5fcm93R2FwID0gdjtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tX2JyYWNrZXQtcm93LWdhcCcsIHYpO1xuICB9XG4gIHByaXZhdGUgX3Jvd0dhcCE6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBnZXQgcm91bmRzV2l0aE1hdGNoZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kc1dpdGhNYXRjaGVzO1xuICB9XG4gIHNldCByb3VuZHNXaXRoTWF0Y2hlcyh2OiBSb3VuZFN0YWdlU3RydWN0dXJlV2l0aE1hdGNoZXNWaWV3W10gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fcm91bmRzV2l0aE1hdGNoZXMgPSB2O1xuXG4gICAgaWYgKCF2IHx8IHYubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLl9icmFja2V0JC5uZXh0KG51bGwpO1xuICAgICAgdGhpcy5fcm91bmRzV2l0aE1hdGNoZXMgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzb3J0ZWRSb3VuZHMgPSBvcmRlclJvdW5kcyh2KTtcblxuICAgICAgdGhpcy5fYnJhY2tldCQubmV4dChuZXcgQnJhY2tldChzb3J0ZWRSb3VuZHMpKTtcbiAgICAgIHRoaXMuX3JvdW5kc1dpdGhNYXRjaGVzID0gc29ydGVkUm91bmRzO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9yb3VuZHNXaXRoTWF0Y2hlcyE6IFJvdW5kU3RhZ2VTdHJ1Y3R1cmVXaXRoTWF0Y2hlc1ZpZXdbXSB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgZ2V0IGNvbXBvbmVudENvbmZpZygpIHtcbiAgICByZXR1cm4gdGhpcy5fY29tcG9uZW50Q29uZmlnO1xuICB9XG4gIHNldCBjb21wb25lbnRDb25maWcodjogQnJhY2tldENvbmZpZyB8IG51bGwpIHtcbiAgICB0aGlzLl9jb21wb25lbnRDb25maWcgPSB2O1xuICAgIHRoaXMuX2NvbmZpZyA9IGNyZWF0ZUJyYWNrZXRDb25maWcodGhpcy5fYnJhY2tldENvbmZpZywgdik7XG4gIH1cbiAgcHJpdmF0ZSBfY29tcG9uZW50Q29uZmlnOiBCcmFja2V0Q29uZmlnIHwgbnVsbCA9IG51bGw7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmhhcy1yb3VuZC1oZWFkZXJzJylcbiAgZ2V0IGhhc1JvdW5kSGVhZGVycygpIHtcbiAgICByZXR1cm4gISF0aGlzLl9jb25maWc/LnJvdW5kSGVhZGVyQ29tcG9uZW50ID8/IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9jb25maWcgPSBjcmVhdGVCcmFja2V0Q29uZmlnKHRoaXMuX2NvbXBvbmVudENvbmZpZywgdGhpcy5fYnJhY2tldENvbmZpZyk7XG4gIHByb3RlY3RlZCBfYnJhY2tldCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJyYWNrZXQgfCBudWxsPihudWxsKTtcblxuICB0cmFja0J5Um91bmQ6IFRyYWNrQnlGdW5jdGlvbjxCcmFja2V0Um91bmQ+ID0gKF8sIHJvdW5kKSA9PiByb3VuZC5kYXRhLmlkO1xuICB0cmFja0J5TWF0Y2g6IFRyYWNrQnlGdW5jdGlvbjxCcmFja2V0TWF0Y2g+ID0gKF8sIG1hdGNoKSA9PiBtYXRjaC5kYXRhLmlkO1xuXG4gIGdldEJyYWNrZXRNYXRjaEJ5SWQoaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9icmFja2V0JC5waXBlKG1hcCgoYnJhY2tldCkgPT4gYnJhY2tldD8uZ2V0TWF0Y2hCeUlkKGlkKSA/PyBudWxsKSk7XG4gIH1cblxuICBnZXRCcmFja2V0Um91bmRCeUlkKGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5fYnJhY2tldCQucGlwZShtYXAoKGJyYWNrZXQpID0+IGJyYWNrZXQ/LmdldFJvdW5kQnlJZChpZCkgPz8gbnVsbCkpO1xuICB9XG5cbiAgQE1lbW8oe1xuICAgIHJlc29sdmVyOiAobWF0Y2g6IEJyYWNrZXRNYXRjaCwgYnJhY2tldDogQnJhY2tldCkgPT5cbiAgICAgIGAke21hdGNoLmRhdGEuaWR9LSR7bWF0Y2gucHJldmlvdXNNYXRjaGVzPy5yb3VuZElkID8/IG51bGx9ICR7YnJhY2tldC5pZH1gLFxuICB9KVxuICBwcm90ZWN0ZWQgZ2V0Q29ubmVjdGVkTWF0Y2hlcyhtYXRjaDogQnJhY2tldE1hdGNoLCBicmFja2V0OiBCcmFja2V0KTogQ29ubmVjdGVkTWF0Y2hlcyB7XG4gICAgY29uc3QgcHJldmlvdXNNYXRjaGVzID0gdGhpcy5fZ2V0UHJldmlvdXNNYXRjaGVzKG1hdGNoLCBicmFja2V0KTtcbiAgICBjb25zdCBuZXh0TWF0Y2ggPSB0aGlzLl9nZXROZXh0TWF0Y2gobWF0Y2gsIGJyYWNrZXQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHByZXZpb3VzTWF0Y2hlcyxcbiAgICAgIG5leHRNYXRjaCxcbiAgICB9O1xuICB9XG5cbiAgQE1lbW8oe1xuICAgIHJlc29sdmVyOiAoY3VycmVudE1hdGNoOiBCcmFja2V0TWF0Y2gsIG5leHRNYXRjaDogQnJhY2tldE1hdGNoIHwgbnVsbCkgPT5cbiAgICAgIGAke2N1cnJlbnRNYXRjaC5kYXRhLmlkfS0ke25leHRNYXRjaD8ucHJldmlvdXNNYXRjaGVzPy5yb3VuZElkID8/IG51bGx9YCxcbiAgfSlcbiAgcHJvdGVjdGVkIGdldENoaWxkQ29ubmVjdG9yU2hhcGUoY3VycmVudE1hdGNoOiBCcmFja2V0TWF0Y2gsIG5leHRNYXRjaDogQnJhY2tldE1hdGNoIHwgbnVsbCkge1xuICAgIGlmICghbmV4dE1hdGNoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0TWF0Y2hQcmV2aW91c01hdGNoZXMgPSBuZXh0TWF0Y2gucHJldmlvdXNNYXRjaGVzPy5tYXRjaElkcztcblxuICAgIGlmICghbmV4dE1hdGNoUHJldmlvdXNNYXRjaGVzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0TWF0Y2hQcmV2aW91c01hdGNoQSA9IG5leHRNYXRjaFByZXZpb3VzTWF0Y2hlc1swXTtcbiAgICBjb25zdCBuZXh0TWF0Y2hQcmV2aW91c01hdGNoQiA9IG5leHRNYXRjaFByZXZpb3VzTWF0Y2hlc1sxXTtcblxuICAgIGlmIChuZXh0TWF0Y2hQcmV2aW91c01hdGNoZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gJ3N0cmFpZ2h0JztcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudE1hdGNoLmRhdGEuaWQgPT09IG5leHRNYXRjaFByZXZpb3VzTWF0Y2hBKSB7XG4gICAgICByZXR1cm4gJ2Rvd24nO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50TWF0Y2guZGF0YS5pZCA9PT0gbmV4dE1hdGNoUHJldmlvdXNNYXRjaEIpIHtcbiAgICAgIHJldHVybiAndXAnO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgQE1lbW8oe1xuICAgIHJlc29sdmVyOiAocm91bmRJbmRleDogbnVtYmVyLCBicmFja2V0OiBCcmFja2V0KSA9PiBgJHtyb3VuZEluZGV4fS0ke2JyYWNrZXQuaWR9YCxcbiAgfSlcbiAgcHJvdGVjdGVkIGdldExpbmVNdWx0aUFmdGVyKHJvdW5kSW5kZXg6IG51bWJlciwgYnJhY2tldDogQnJhY2tldCkge1xuICAgIGNvbnN0IGlzRG91YmxlRWxpbWluYXRpb24gPSBicmFja2V0LmJyYWNrZXRUeXBlID09PSAnZG91YmxlJztcbiAgICBjb25zdCBjdXJyZW50Um91bmQgPSBicmFja2V0LmJyYWNrZXRSb3VuZHNbcm91bmRJbmRleF07XG4gICAgY29uc3QgbmV4dFJvdW5kID0gYnJhY2tldC5icmFja2V0Um91bmRzW3JvdW5kSW5kZXggKyAxXTtcblxuICAgIC8vIGZvciBjb25uZWN0aW5nIHRoZSBsYXN0IGxvb3NlciBtYXRjaCBhbmQgdGhlIHJlc3BlY3RpdmUgc2VtaSBmaW5hbCB3aW5uZXIgbWF0Y2hcbiAgICBpZiAoXG4gICAgICBpc0RvdWJsZUVsaW1pbmF0aW9uICYmXG4gICAgICAoIW5leHRSb3VuZCB8fCBuZXh0Um91bmQuZGF0YS50eXBlID09PSAndGhpcmRfcGxhY2UnKSAmJlxuICAgICAgY3VycmVudFJvdW5kPy5kYXRhLnR5cGUgPT09ICdsb3Nlcl9icmFja2V0J1xuICAgICkge1xuICAgICAgcmV0dXJuIGJyYWNrZXQudG90YWxSb3dDb3VudCAtIDE7XG4gICAgfVxuXG4gICAgaWYgKCFuZXh0Um91bmQpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGlmIChuZXh0Um91bmQubWF0Y2hlcy5sZW5ndGggPT09IGN1cnJlbnRSb3VuZD8ubWF0Y2hlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGlmICghaXNEb3VibGVFbGltaW5hdGlvbikge1xuICAgICAgcmV0dXJuIDIgKiogcm91bmRJbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHJuZEluZGV4ID0gcm91bmRJbmRleDtcblxuICAgICAgaWYgKGN1cnJlbnRSb3VuZD8uZGF0YS50eXBlID09PSAnbG9zZXJfYnJhY2tldCcpIHtcbiAgICAgICAgY29uc3QgdG90YWxXaW5uZXJSb3VuZHMgPSBicmFja2V0Lndpbm5lclJvdW5kQ291bnQ7XG4gICAgICAgIGNvbnN0IGxvb3NlclJvdW5kSW5kZXggPVxuICAgICAgICAgIGN1cnJlbnRSb3VuZC5kYXRhLnR5cGUgPT09ICdsb3Nlcl9icmFja2V0JyA/IHJvdW5kSW5kZXggLSB0b3RhbFdpbm5lclJvdW5kcyA6IHJvdW5kSW5kZXg7XG5cbiAgICAgICAgcm5kSW5kZXggPSBsb29zZXJSb3VuZEluZGV4IC8gMjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIDIgKiogcm5kSW5kZXg7XG4gICAgfVxuICB9XG5cbiAgQE1lbW8oe1xuICAgIHJlc29sdmVyOiAoXG4gICAgICBhZmZlY3RlZFJvdW5kOiBCcmFja2V0Um91bmQgfCBudWxsLFxuICAgICAgcHJldmlvdXNSb3VuZDogQnJhY2tldFJvdW5kIHwgbnVsbCxcbiAgICAgIGN1cnJlbnRSb3VuZDogQnJhY2tldFJvdW5kIHwgbnVsbCxcbiAgICAgIG5leHRSb3VuZDogQnJhY2tldFJvdW5kIHwgbnVsbCxcbiAgICAgIGJyYWNrZXQ6IEJyYWNrZXQsXG4gICAgKSA9PlxuICAgICAgYCR7YWZmZWN0ZWRSb3VuZD8uZGF0YS5pZH0gJHtwcmV2aW91c1JvdW5kPy5kYXRhLmlkfSAke2N1cnJlbnRSb3VuZD8uZGF0YS5pZH0gJHtuZXh0Um91bmQ/LmRhdGEuaWR9ICR7YnJhY2tldC5pZH1gLFxuICB9KVxuICBwcm90ZWN0ZWQgZ2V0TGluZVNwYW4oXG4gICAgYWZmZWN0ZWRSb3VuZDogQnJhY2tldFJvdW5kIHwgbnVsbCxcbiAgICBwcmV2aW91c1JvdW5kOiBCcmFja2V0Um91bmQgfCBudWxsLFxuICAgIGN1cnJlbnRSb3VuZDogQnJhY2tldFJvdW5kIHwgbnVsbCxcbiAgICBuZXh0Um91bmQ6IEJyYWNrZXRSb3VuZCB8IG51bGwsXG4gICAgYnJhY2tldDogQnJhY2tldCxcbiAgKSB7XG4gICAgaWYgKCFhZmZlY3RlZFJvdW5kKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICAvLyBUaGVyZSBpcyBuZXZlciBhIGNvbm5lY3Rpb24gdG8gdGhlIHRoaXJkIHBsYWNlIG1hdGNoXG4gICAgaWYgKG5leHRSb3VuZD8uZGF0YS50eXBlID09PSAndGhpcmRfcGxhY2UnKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBpZiAoYnJhY2tldC5pc1BhcnRpYWxEb3VibGVFbGltaW5hdGlvbikge1xuICAgICAgaWYgKGFmZmVjdGVkUm91bmQgPT09IG5leHRSb3VuZCAmJiBuZXh0Um91bmQuZGF0YS50eXBlID09PSAnZmluYWwnKSB7XG4gICAgICAgIHJldHVybiAyO1xuICAgICAgfSBlbHNlIGlmIChhZmZlY3RlZFJvdW5kID09PSBjdXJyZW50Um91bmQgJiYgY3VycmVudFJvdW5kPy5kYXRhLnR5cGUgPT09ICdmaW5hbCcpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9IGVsc2UgaWYgKGFmZmVjdGVkUm91bmQgPT09IHByZXZpb3VzUm91bmQgJiYgY3VycmVudFJvdW5kPy5kYXRhLnR5cGUgPT09ICdmaW5hbCcpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFmZmVjdGVkUm91bmQuY29sdW1uLmVuZCAtIGFmZmVjdGVkUm91bmQuY29sdW1uLnN0YXJ0O1xuICB9XG5cbiAgQE1lbW8oe1xuICAgIHJlc29sdmVyOiAocm91bmQ6IEJyYWNrZXRSb3VuZCkgPT4gYCR7cm91bmQuZGF0YS5pZH1gLFxuICB9KVxuICBwcm90ZWN0ZWQgY3JlYXRlUm91bmRQb3J0YWwocm91bmQ6IEJyYWNrZXRSb3VuZCwgY29tcG9uZW50OiBDb21wb25lbnRUeXBlPHVua25vd24+KSB7XG4gICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBCUkFDS0VUX1JPVU5EX0lEX1RPS0VOLFxuICAgICAgICAgIHVzZVZhbHVlOiByb3VuZC5kYXRhLmlkLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3IsXG4gICAgfSk7XG5cbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKGNvbXBvbmVudCwgbnVsbCwgaW5qZWN0b3IpO1xuXG4gICAgcmV0dXJuIHBvcnRhbDtcbiAgfVxuXG4gIEBNZW1vKHtcbiAgICByZXNvbHZlcjogKG1hdGNoOiBCcmFja2V0TWF0Y2gpID0+IGAke21hdGNoLmRhdGEuaWR9YCxcbiAgfSlcbiAgcHJvdGVjdGVkIGNyZWF0ZU1hdGNoUG9ydGFsKG1hdGNoOiBCcmFja2V0TWF0Y2gsIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTx1bmtub3duPikge1xuICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQlJBQ0tFVF9NQVRDSF9JRF9UT0tFTixcbiAgICAgICAgICB1c2VWYWx1ZTogbWF0Y2guZGF0YS5pZCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChjb21wb25lbnQsIG51bGwsIGluamVjdG9yKTtcblxuICAgIHJldHVybiBwb3J0YWw7XG4gIH1cblxuICBATWVtbyh7IHJlc29sdmVyOiAoaWQ6IHN0cmluZywgYnJhY2tldDogQnJhY2tldCkgPT4gYCR7aWR9LSR7YnJhY2tldC5pZH1gIH0pXG4gIHByaXZhdGUgX2dldFJvdW5kQnlJZChpZDogc3RyaW5nLCBicmFja2V0OiBCcmFja2V0KSB7XG4gICAgcmV0dXJuIGJyYWNrZXQ/LmJyYWNrZXRSb3VuZHMuZmluZCgocm91bmQpID0+IHJvdW5kLmRhdGEuaWQgPT09IGlkKSA/PyBudWxsO1xuICB9XG5cbiAgQE1lbW8oe1xuICAgIHJlc29sdmVyOiAobWF0Y2g6IEJyYWNrZXRNYXRjaCwgYnJhY2tldDogQnJhY2tldCkgPT5cbiAgICAgIGAke21hdGNoLmRhdGEuaWR9LSR7bWF0Y2gucHJldmlvdXNNYXRjaGVzPy5yb3VuZElkID8/IG51bGx9ICR7YnJhY2tldC5pZH1gLFxuICB9KVxuICBwcml2YXRlIF9nZXRQcmV2aW91c01hdGNoZXMobWF0Y2g6IEJyYWNrZXRNYXRjaCwgYnJhY2tldDogQnJhY2tldCkge1xuICAgIGlmICghbWF0Y2gucHJldmlvdXNNYXRjaGVzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB7IHJvdW5kSWQsIG1hdGNoSWRzIH0gPSBtYXRjaC5wcmV2aW91c01hdGNoZXM7XG5cbiAgICBjb25zdCByb3VuZCA9IHRoaXMuX2dldFJvdW5kQnlJZChyb3VuZElkLCBicmFja2V0KTtcblxuICAgIHJldHVybiBtYXRjaElkcy5tYXAoKG1hdGNoSWQ6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHJvdW5kPy5tYXRjaGVzLmZpbmQoKG1hdGNoKSA9PiBtYXRjaC5kYXRhLmlkID09PSBtYXRjaElkKSA/PyBudWxsO1xuICAgIH0pO1xuICB9XG5cbiAgQE1lbW8oe1xuICAgIHJlc29sdmVyOiAobWF0Y2g6IEJyYWNrZXRNYXRjaCwgYnJhY2tldDogQnJhY2tldCkgPT5cbiAgICAgIGAke21hdGNoLmRhdGEuaWR9LSR7bWF0Y2gucHJldmlvdXNNYXRjaGVzPy5yb3VuZElkID8/IG51bGx9ICR7YnJhY2tldC5pZH1gLFxuICB9KVxuICBwcml2YXRlIF9nZXROZXh0TWF0Y2gobWF0Y2g6IEJyYWNrZXRNYXRjaCwgYnJhY2tldDogQnJhY2tldCkge1xuICAgIGlmICghbWF0Y2gubmV4dE1hdGNoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB7IHJvdW5kSWQsIG1hdGNoSWQgfSA9IG1hdGNoLm5leHRNYXRjaDtcblxuICAgIGNvbnN0IHJvdW5kID0gdGhpcy5fZ2V0Um91bmRCeUlkKHJvdW5kSWQsIGJyYWNrZXQpO1xuXG4gICAgcmV0dXJuIHJvdW5kPy5tYXRjaGVzLmZpbmQoKG1hdGNoKSA9PiBtYXRjaC5kYXRhLmlkID09PSBtYXRjaElkKSA/PyBudWxsO1xuICB9XG59XG4iLCJAaWYgKF9icmFja2V0JCB8IGFzeW5jOyBhcyBicmFja2V0KSB7XG4gIEBmb3IgKHJvdW5kIG9mIGJyYWNrZXQuYnJhY2tldFJvdW5kczsgdHJhY2sgdHJhY2tCeVJvdW5kKHJvdW5kSW5kZXgsIHJvdW5kKTsgbGV0IHJvdW5kSW5kZXggPSAkaW5kZXgpIHtcbiAgICBAaWYgKF9jb25maWcucm91bmRIZWFkZXJDb21wb25lbnQpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgW3N0eWxlLi0tX2NzXT1cInJvdW5kLmNvbHVtbi5zdGFydFwiXG4gICAgICAgIFtzdHlsZS4tLV9jZV09XCJyb3VuZC5jb2x1bW4uZW5kXCJcbiAgICAgICAgW3N0eWxlLi0tX3JzXT1cIlxuICAgICAgICAgIHJvdW5kLmRhdGEudHlwZSA9PT0gJ2xvc2VyX2JyYWNrZXQnIHx8IHJvdW5kLmRhdGEudHlwZSA9PT0gJ3RoaXJkX3BsYWNlJ1xuICAgICAgICAgICAgPyByb3VuZC5yb3cuc3RhcnQgKyAxXG4gICAgICAgICAgICA6IHJvdW5kLnJvdy5zdGFydFxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5zcGVjaWFsLWFsaWduLWVuZF09XCJcbiAgICAgICAgICByb3VuZC5kYXRhLnR5cGUgPT09ICd0aGlyZF9wbGFjZScgJiZcbiAgICAgICAgICBicmFja2V0LmJyYWNrZXRUeXBlID09PSAnc2luZ2xlJyAmJlxuICAgICAgICAgIGJyYWNrZXQuZmlyc3RXaW5uZXJSb3VuZCAmJlxuICAgICAgICAgIGJyYWNrZXQuZmlyc3RXaW5uZXJSb3VuZC5tYXRjaGVzLmxlbmd0aCA8PSA0XG4gICAgICAgICAgICA/ICd0cnVlJ1xuICAgICAgICAgICAgOiAnZmFsc2UnXG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLmlzLWxvc2VyLXJvdW5kLWhlYWRlcl09XCJcbiAgICAgICAgICAocm91bmQuZGF0YS50eXBlID09PSAnbG9zZXJfYnJhY2tldCcgfHwgcm91bmQuZGF0YS50eXBlID09PSAndGhpcmRfcGxhY2UnKSAmJiBicmFja2V0LmJyYWNrZXRUeXBlID09PSAnZG91YmxlJ1xuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImV0LWJyYWNrZXQtcm91bmRcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpjZGtQb3J0YWxPdXRsZXQ9XCJjcmVhdGVSb3VuZFBvcnRhbChyb3VuZCwgX2NvbmZpZy5yb3VuZEhlYWRlckNvbXBvbmVudClcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIDxuZy1jb250YWluZXIgKmV0TGV0PVwiYnJhY2tldC5icmFja2V0Um91bmRzW3JvdW5kSW5kZXggLSAxXSA/PyBudWxsIGFzIGxhc3RSb3VuZFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqZXRMZXQ9XCJicmFja2V0LmJyYWNrZXRSb3VuZHNbcm91bmRJbmRleCArIDFdID8/IG51bGwgYXMgbmV4dFJvdW5kXCI+XG4gICAgICAgIEBmb3IgKG1hdGNoIG9mIHJvdW5kLm1hdGNoZXM7IHRyYWNrIHRyYWNrQnlNYXRjaChtYXRjaEluZGV4LCBtYXRjaCk7IGxldCBtYXRjaEluZGV4ID0gJGluZGV4KSB7XG4gICAgICAgICAgQGlmIChnZXRDb25uZWN0ZWRNYXRjaGVzKG1hdGNoLCBicmFja2V0KTsgYXMgY29ubmVjdGVkTWF0Y2hlcykge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBbc3R5bGUuLS1fY3NdPVwicm91bmQuY29sdW1uLnN0YXJ0XCJcbiAgICAgICAgICAgICAgW3N0eWxlLi0tX2NlXT1cInJvdW5kLmNvbHVtbi5lbmRcIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1fcnNdPVwiXG4gICAgICAgICAgICAgICAgcm91bmQuZGF0YS50eXBlID09PSAnbG9zZXJfYnJhY2tldCcgfHwgcm91bmQuZGF0YS50eXBlID09PSAndGhpcmRfcGxhY2UnXG4gICAgICAgICAgICAgICAgICA/IG1hdGNoLnJvdy5zdGFydCArIChfY29uZmlnLnJvdW5kSGVhZGVyQ29tcG9uZW50ID8gMiA6IDApXG4gICAgICAgICAgICAgICAgICA6IG1hdGNoLnJvdy5zdGFydCArIChfY29uZmlnLnJvdW5kSGVhZGVyQ29tcG9uZW50ID8gMSA6IDApXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLV9yZV09XCJcbiAgICAgICAgICAgICAgICByb3VuZC5kYXRhLnR5cGUgPT09ICdsb3Nlcl9icmFja2V0JyB8fCByb3VuZC5kYXRhLnR5cGUgPT09ICd0aGlyZF9wbGFjZSdcbiAgICAgICAgICAgICAgICAgID8gbWF0Y2gucm93LmVuZCArIChfY29uZmlnLnJvdW5kSGVhZGVyQ29tcG9uZW50ID8gMiA6IDApXG4gICAgICAgICAgICAgICAgICA6IG1hdGNoLnJvdy5lbmQgKyAoX2NvbmZpZy5yb3VuZEhlYWRlckNvbXBvbmVudCA/IDEgOiAwKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1fbGluZS1tdWx0aS1hZnRlcl09XCJnZXRMaW5lTXVsdGlBZnRlcihyb3VuZEluZGV4LCBicmFja2V0KVwiXG4gICAgICAgICAgICAgIFthdHRyLmV0LWhhcy1wYXJlbnRzXT1cIiEhY29ubmVjdGVkTWF0Y2hlcy5wcmV2aW91c01hdGNoZXM/Lmxlbmd0aFwiXG4gICAgICAgICAgICAgIFthdHRyLmV0LWhhcy1jaGlsZF09XCIhIWNvbm5lY3RlZE1hdGNoZXMubmV4dE1hdGNoXCJcbiAgICAgICAgICAgICAgW2F0dHIuZXQtY2hpbGQtY29ubmVjdG9yLXNoYXBlXT1cImdldENoaWxkQ29ubmVjdG9yU2hhcGUobWF0Y2gsIGNvbm5lY3RlZE1hdGNoZXMubmV4dE1hdGNoKVwiXG4gICAgICAgICAgICAgIFthdHRyLmxpbmUtc3Bhbi1iZWZvcmVdPVwiZ2V0TGluZVNwYW4obGFzdFJvdW5kLCBsYXN0Um91bmQsIHJvdW5kLCBuZXh0Um91bmQsIGJyYWNrZXQpXCJcbiAgICAgICAgICAgICAgW2F0dHIubGluZS1zcGFuLWN1cnJlbnRdPVwiZ2V0TGluZVNwYW4ocm91bmQsIGxhc3RSb3VuZCwgcm91bmQsIG5leHRSb3VuZCwgYnJhY2tldClcIlxuICAgICAgICAgICAgICBbYXR0ci5saW5lLXNwYW4tYWZ0ZXJdPVwiZ2V0TGluZVNwYW4obmV4dFJvdW5kLCBsYXN0Um91bmQsIHJvdW5kLCBuZXh0Um91bmQsIGJyYWNrZXQpXCJcbiAgICAgICAgICAgICAgW2F0dHIuaXMtZmlyc3QtbG9zZXItcm91bmQtbWF0Y2hdPVwiXG4gICAgICAgICAgICAgICAgKHJvdW5kLmRhdGEudHlwZSA9PT0gJ2xvc2VyX2JyYWNrZXQnIHx8IHJvdW5kLmRhdGEudHlwZSA9PT0gJ3RoaXJkX3BsYWNlJykgJiYgbWF0Y2hJbmRleCA9PT0gMFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbYXR0ci5pcy1sYXN0LWxvd2VyLWJyYWNrZXQtbWF0Y2hdPVwiXG4gICAgICAgICAgICAgICAgcm91bmQuZGF0YS50eXBlID09PSAnbG9zZXJfYnJhY2tldCcgJiZcbiAgICAgICAgICAgICAgICAocm91bmRJbmRleCA9PT0gYnJhY2tldC5icmFja2V0Um91bmRzLmxlbmd0aCAtIDEgfHwgbmV4dFJvdW5kPy5kYXRhPy50eXBlID09PSAndGhpcmRfcGxhY2UnKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImV0LWJyYWNrZXQtbWF0Y2hcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpjZGtQb3J0YWxPdXRsZXQ9XCJjcmVhdGVNYXRjaFBvcnRhbChtYXRjaCwgX2NvbmZpZy5tYXRjaENvbXBvbmVudClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgfVxufVxuIl19
@@ -7,10 +7,10 @@ export class BracketMatchDirective {
7
7
  this.bracket = inject(BRACKET_TOKEN);
8
8
  this.match$ = this.bracket.getBracketMatchById(this.matchId);
9
9
  }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BracketMatchDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: BracketMatchDirective, isStandalone: true, ngImport: i0 }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: BracketMatchDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0", type: BracketMatchDirective, isStandalone: true, ngImport: i0 }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BracketMatchDirective, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: BracketMatchDirective, decorators: [{
14
14
  type: Directive,
15
15
  args: [{
16
16
  standalone: true,
@@ -7,10 +7,10 @@ export class BracketRoundDirective {
7
7
  this.bracket = inject(BRACKET_TOKEN);
8
8
  this.round$ = this.bracket.getBracketRoundById(this.roundId);
9
9
  }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BracketRoundDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: BracketRoundDirective, isStandalone: true, ngImport: i0 }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: BracketRoundDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0", type: BracketRoundDirective, isStandalone: true, ngImport: i0 }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BracketRoundDirective, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: BracketRoundDirective, decorators: [{
14
14
  type: Directive,
15
15
  args: [{
16
16
  standalone: true,
@@ -7,10 +7,10 @@ export class BracketMatchComponent {
7
7
  constructor() {
8
8
  this.matchData = inject(BracketMatchDirective);
9
9
  }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BracketMatchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.9", type: BracketMatchComponent, isStandalone: true, selector: "et-bracket-match", host: { classAttribute: "et-bracket-match" }, hostDirectives: [{ directive: i1.BracketMatchDirective }], ngImport: i0, template: "@if (matchData.match$ | async; as match) {\n {{ match.data.id }}\n}\n", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: BracketMatchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.0", type: BracketMatchComponent, isStandalone: true, selector: "et-bracket-match", host: { classAttribute: "et-bracket-match" }, hostDirectives: [{ directive: i1.BracketMatchDirective }], ngImport: i0, template: "@if (matchData.match$ | async; as match) {\n {{ match.data.id }}\n}\n", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BracketMatchComponent, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: BracketMatchComponent, decorators: [{
14
14
  type: Component,
15
15
  args: [{ selector: 'et-bracket-match', standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
16
16
  class: 'et-bracket-match',
@@ -7,10 +7,10 @@ export class BracketRoundHeaderComponent {
7
7
  constructor() {
8
8
  this.roundData = inject(BracketRoundDirective);
9
9
  }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BracketRoundHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.9", type: BracketRoundHeaderComponent, isStandalone: true, selector: "et-bracket-round-header", host: { classAttribute: "et-bracket-round-header" }, hostDirectives: [{ directive: i1.BracketRoundDirective }], ngImport: i0, template: "@if (roundData.round$ | async; as round) {\n {{ round.name }}\n}\n", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: BracketRoundHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.0", type: BracketRoundHeaderComponent, isStandalone: true, selector: "et-bracket-round-header", host: { classAttribute: "et-bracket-round-header" }, hostDirectives: [{ directive: i1.BracketRoundDirective }], ngImport: i0, template: "@if (roundData.round$ | async; as round) {\n {{ round.name }}\n}\n", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BracketRoundHeaderComponent, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: BracketRoundHeaderComponent, decorators: [{
14
14
  type: Component,
15
15
  args: [{ selector: 'et-bracket-round-header', standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
16
16
  class: 'et-bracket-round-header',
@@ -336,4 +336,4 @@ export class Bracket {
336
336
  return rounds;
337
337
  }
338
338
  }
339
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhY2tldC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9icmFja2V0L3V0aWxzL2JyYWNrZXQudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBRWxCLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBNEQsRUFBRSxFQUFFO0lBQ2xHLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsT0FBTyxDQUNMLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLGdCQUFnQjtRQUNyQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPO1FBQzVCLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVE7UUFDN0IsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssZUFBZTtRQUNwQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNsQixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBNEMsRUFBRSxFQUFFO0lBQzFFLE1BQU0sWUFBWSxHQUFHLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDL0YsTUFBTSxZQUFZLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBQ3ZHLE1BQU0sV0FBVyxHQUFHLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxN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bEYsYUFBYSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUM7YUFDdEQ7WUFFRCxJQUFJLGFBQWEsR0FBOEMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7WUFDdkYsTUFBTSxTQUFTLEdBQThDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO1lBRXJGLDZEQUE2RDtZQUM3RCxJQUFJLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssa0JBQWtCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDMUYsYUFBYSxHQUFHLElBQUksQ0FBQzthQUN0QjtZQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQ25GO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQWdQRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hdGNoTGlzdFZpZXcsIFJvdW5kU3RhZ2VTdHJ1Y3R1cmVXaXRoTWF0Y2hlc1ZpZXcgfSBmcm9tICdAZXRobGV0ZS90eXBlcyc7XG5pbXBvcnQgeyBCcmFja2V0TWF0Y2gsIEJyYWNrZXRSb3VuZCB9IGZyb20gJy4uL3R5cGVzJztcblxubGV0IGJyYWNrZXRJZCA9IDA7XG5cbmV4cG9ydCBjb25zdCBpc1VwcGVyQnJhY2tldE1hdGNoID0gKG1hdGNoOiBSb3VuZFN0YWdlU3RydWN0dXJlV2l0aE1hdGNoZXNWaWV3IHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4ge1xuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICBtYXRjaC5yb3VuZC50eXBlID09PSAnd2lubmVyX2JyYWNrZXQnIHx8XG4gICAgbWF0Y2gucm91bmQudHlwZSA9PT0gJ2ZpbmFsJyB8fFxuICAgIG1hdGNoLnJvdW5kLnR5cGUgPT09ICdub3JtYWwnIHx8XG4gICAgbWF0Y2gucm91bmQudHlwZSA9PT0gJ3JldmVyc2VfZmluYWwnIHx8XG4gICAgIW1hdGNoLnJvdW5kLnR5cGVcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBvcmRlclJvdW5kcyA9IChyb3VuZHM6IFJvdW5kU3RhZ2VTdHJ1Y3R1cmVXaXRoTWF0Y2hlc1ZpZXdbXSkgPT4ge1xuICBjb25zdCBub3JtYWxSb3VuZHMgPSBvcmRlclJvdW5kc0J5Um91bmROdW1iZXIocm91bmRzLmZpbHRlcigocikgPT4gci5yb3VuZC50eXBlID09PSAnbm9ybWFsJykpO1xuICBjb25zdCB3aW5uZXJSb3VuZHMgPSBvcmRlclJvdW5kc0J5Um91bmROdW1iZXIocm91bmRzLmZpbHRlcigocikgPT4gci5yb3VuZC50eXBlID09PSAnd2lubmVyX2JyYWNrZXQnKSk7XG4gIGNvbnN0IGxvc2VyUm91bmRzID0gb3JkZXJSb3VuZHNCeVJvdW5kTnVtYmVyKHJvdW5kcy5maWx0ZXIoKHIpID0+IHIucm91bmQudHlwZSA9PT0gJ2xvc2VyX2JyYWNrZXQnKSk7XG4gIGNvbnN0IGZpbmFsUm91bmRzID0gcm91bmRzLmZpbHRlcigocikgPT4gci5yb3VuZC50eXBlID09PSAnZmluYWwnKTtcbiAgY29uc3QgcmV2ZXJzZUZpbmFsUm91bmRzID0gcm91bmRzLmZpbHRlcigocikgPT4gci5yb3VuZC50eXBlID09PSAncmV2ZXJzZV9maW5hbCcpO1xuICBjb25zdCB0aGlyZFBsYWNlUm91bmRzID0gcm91bmRzLmZpbHRlcigocikgPT4gci5yb3VuZC50eXBlID09PSAndGhpcmRfcGxhY2UnKTtcblxuICByZXR1cm4gWy4uLndpbm5lclJvdW5kcywgLi4ubm9ybWFsUm91bmRzLCAuLi5maW5hbFJvdW5kcywgLi4ucmV2ZXJzZUZpbmFsUm91bmRzLCAuLi5sb3NlclJvdW5kcywgLi4udGhpcmRQbGFjZVJvdW5kc107XG59O1xuXG5leHBvcnQgY29uc3Qgb3JkZXJSb3VuZHNCeVJvdW5kTnVtYmVyID0gKHJvdW5kczogUm91bmRTdGFnZVN0cnVjdHVyZVdpdGhNYXRjaGVzVmlld1tdKSA9PiB7XG4gIHJldHVybiByb3VuZHMuc2xpY2UoMCkuc29ydCgoYSwgYikgPT4ge1xuICAgIGlmIChhLnJvdW5kLm51bWJlciA8IGIucm91bmQubnVtYmVyKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmIChhLnJvdW5kLm51bWJlciA+IGIucm91bmQubnVtYmVyKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IG5vcm1hbGl6ZVJvdW5kVHlwZSA9IChyb3VuZFR5cGU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpID0+IHtcbiAgaWYgKCFyb3VuZFR5cGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChcbiAgICByb3VuZFR5cGUgPT09ICdub3JtYWwnIHx8XG4gICAgcm91bmRUeXBlID09PSAnd2lubmVyX2JyYWNrZXQnIHx8XG4gICAgcm91bmRUeXBlID09PSAnZmluYWwnIHx8XG4gICAgcm91bmRUeXBlID09PSAncmV2ZXJzZV9maW5hbCdcbiAgKSB7XG4gICAgcmV0dXJuICd1cHBlcic7XG4gIH1cblxuICByZXR1cm4gJ2xvd2VyJztcbn07XG5cbmV4cG9ydCBjbGFzcyBCcmFja2V0IHtcbiAgZ2V0IHdpbm5lclJvdW5kcygpIHtcbiAgICByZXR1cm4gdGhpcy5fcm91bmRzV2l0aE1hdGNoZXMuZmlsdGVyKChyKSA9PiBpc1VwcGVyQnJhY2tldE1hdGNoKHIpKTtcbiAgfVxuXG4gIGdldCBsb3NlclJvdW5kcygpIHtcbiAgICByZXR1cm4gdGhpcy5fcm91bmRzV2l0aE1hdGNoZXMuZmlsdGVyKChyKSA9PiByLnJvdW5kLnR5cGUgPT09ICdsb3Nlcl9icmFja2V0Jyk7XG4gIH1cblxuICBnZXQgZmlyc3RXaW5uZXJSb3VuZCgpIHtcbiAgICByZXR1cm4gdGhpcy53aW5uZXJSb3VuZHNbMF0gPz8gbnVsbDtcbiAgfVxuXG4gIGdldCBmaXJzdExvc2VyUm91bmQoKSB7XG4gICAgcmV0dXJuIHRoaXMubG9zZXJSb3VuZHNbMF0gPz8gbnVsbDtcbiAgfVxuXG4gIGdldCB3aW5uZXJSb3VuZENvdW50KCkge1xuICAgIHJldHVybiB0aGlzLndpbm5lclJvdW5kcy5sZW5ndGg7XG4gIH1cblxuICBnZXQgbG9zZXJSb3VuZENvdW50KCkge1xuICAgIHJldHVybiB0aGlzLmxvc2VyUm91bmRzLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBicmFja2V0U2l6ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5maXJzdFdpbm5lclJvdW5kID8gdGhpcy5maXJzdFdpbm5lclJvdW5kLm1hdGNoZXMubGVuZ3RoICogMiA6IDA7XG4gIH1cblxuICBnZXQgYnJhY2tldFR5cGUoKSB7XG4gICAgcmV0dXJuICF0aGlzLmxvc2VyUm91bmRDb3VudCA/ICdzaW5nbGUnIDogJ2RvdWJsZSc7XG4gIH1cblxuICBnZXQgd2lubmVyQnJhY2tldFJvd0NvdW50KCkge1xuICAgIHJldHVybiB0aGlzLmZpcnN0V2lubmVyUm91bmQ/Lm1hdGNoZXMubGVuZ3RoID8/IDA7XG4gIH1cblxuICBnZXQgbG9zZXJCcmFja2V0Um93Q291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlyc3RMb3NlclJvdW5kPy5tYXRjaGVzLmxlbmd0aCA/PyAwO1xuICB9XG5cbiAgZ2V0IHRvdGFsUm93Q291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMud2lubmVyQnJhY2tldFJvd0NvdW50ICsgdGhpcy5sb3NlckJyYWNrZXRSb3dDb3VudCArIDE7XG4gIH1cblxuICBnZXQgdG90YWxDb2xDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5icmFja2V0VHlwZSA9PT0gJ3NpbmdsZSdcbiAgICAgID8gdGhpcy53aW5uZXJSb3VuZENvdW50XG4gICAgICA6IHRoaXMubG9zZXJSb3VuZENvdW50ICsgKHRoaXMud2lubmVyUm91bmRDb3VudCAtIHRoaXMubG9zZXJSb3VuZENvdW50IC8gMikgLSAxO1xuICB9XG5cbiAgZ2V0IHdpbm5lclJvd1N0YXJ0KCkge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgZ2V0IHdpbm5lclJvd0VuZCgpIHtcbiAgICByZXR1cm4gdGhpcy5icmFja2V0VHlwZSA9PT0gJ3NpbmdsZScgPyB0aGlzLnRvdGFsUm93Q291bnQgOiB0aGlzLnRvdGFsUm93Q291bnQgLSB0aGlzLndpbm5lckJyYWNrZXRSb3dDb3VudDtcbiAgfVxuXG4gIGdldCBsb3NlclJvd1N0YXJ0KCkge1xuICAgIHJldHVybiB0aGlzLndpbm5lckJyYWNrZXRSb3dDb3VudCArIDE7XG4gIH1cblxuICBnZXQgbG9zZXJSb3dFbmQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG90YWxSb3dDb3VudDtcbiAgfVxuXG4gIGdldCBpbmRleE9mTG9vc2VyUm91bmRTdGFydCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcm91bmRzV2l0aE1hdGNoZXMuZmluZEluZGV4KChyKSA9PiByLnJvdW5kLnR5cGUgPT09ICdsb3Nlcl9icmFja2V0Jyk7XG4gIH1cblxuICBnZXQgbG9vc2VyUm93QWRkaXRpb25hbFJvdW5kQ291bnQoKSB7XG4gICAgaWYgKHRoaXMuYnJhY2tldFR5cGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCB3aW5uZXJSb3VuZHMgPSB0aGlzLl9yb3VuZHNXaXRoTWF0Y2hlcy5maWx0ZXIoKHIpID0+IHIucm91bmQudHlwZSA9PT0gJ3dpbm5lcl9icmFja2V0Jyk7XG4gICAgY29uc3Qgd2lubmVyUm91bmRDb3VudCA9IHdpbm5lclJvdW5kcy5sZW5ndGg7XG4gICAgY29uc3QgbG9zZXJSb3VuZHMgPSB0aGlzLl9yb3VuZHNXaXRoTWF0Y2hlcy5maWx0ZXIoKHIpID0+IHIucm91bmQudHlwZSA9PT0gJ2xvc2VyX2JyYWNrZXQnKTtcbiAgICBjb25zdCBsb3NlclJvdW5kQ291bnQgPSBsb3NlclJvdW5kcy5sZW5ndGg7XG5cbiAgICByZXR1cm4gbG9zZXJSb3VuZENvdW50IC0gd2lubmVyUm91bmRDb3VudDtcbiAgfVxuXG4gIGdldCBpc1BhcnRpYWxEb3VibGVFbGltaW5hdGlvbigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5icmFja2V0VHlwZSA9PT0gJ2RvdWJsZScgJiYgdGhpcy5maXJzdFdpbm5lclJvdW5kPy5tYXRjaGVzLmxlbmd0aCA9PT0gdGhpcy5maXJzdExvc2VyUm91bmQ/Lm1hdGNoZXMubGVuZ3RoXG4gICAgKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGJyYWNrZXRSb3VuZHM6IEJyYWNrZXRSb3VuZFtdO1xuICByZWFkb25seSBpZCA9IGJyYWNrZXRJZCsrO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2JyYWNrZXRNYXRjaGVzOiBCcmFja2V0TWF0Y2hbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yb3VuZHNXaXRoTWF0Y2hlczogUm91bmRTdGFnZVN0cnVjdHVyZVdpdGhNYXRjaGVzVmlld1tdKSB7XG4gICAgdGhpcy5icmFja2V0Um91bmRzID0gdGhpcy5fY29tcHV0ZUJyYWNrZXQoX3JvdW5kc1dpdGhNYXRjaGVzKTtcblxuICAgIGNvbnN0IHJvdW5kcyA9IHRoaXMuYnJhY2tldFJvdW5kcy5tYXAoKHIpID0+IHIubWF0Y2hlcyk7XG4gICAgY29uc3QgZmxhdE1hdGNoZXM6IEJyYWNrZXRNYXRjaFtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHJvdW5kIG9mIHJvdW5kcykge1xuICAgICAgZm9yIChjb25zdCBtYXRjaCBvZiByb3VuZCkge1xuICAgICAgICBmbGF0TWF0Y2hlcy5wdXNoKG1hdGNoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9icmFja2V0TWF0Y2hlcyA9IGZsYXRNYXRjaGVzO1xuICB9XG5cbiAgZ2V0Um91bmRCeUlkKHJvdW5kSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmJyYWNrZXRSb3VuZHMuZmluZCgocikgPT4gci5kYXRhLmlkID09PSByb3VuZElkKTtcbiAgfVxuXG4gIGdldE1hdGNoQnlJZChtYXRjaElkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5fYnJhY2tldE1hdGNoZXMuZmluZCgobSkgPT4gbS5kYXRhLmlkID09PSBtYXRjaElkKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbXB1dGVCcmFja2V0KGRhdGE6IFJvdW5kU3RhZ2VTdHJ1Y3R1cmVXaXRoTWF0Y2hlc1ZpZXdbXSkge1xuICAgIGNvbnN0IHJvdW5kczogQnJhY2tldFJvdW5kW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgW2luZGV4LCByb3VuZF0gb2YgZGF0YS5lbnRyaWVzKCkpIHtcbiAgICAgIGxldCByZWxhdGl2ZUluZGV4ID0gaW5kZXg7XG5cbiAgICAgIGlmIChpbmRleCA9PT0gdGhpcy5pbmRleE9mTG9vc2VyUm91bmRTdGFydCB8fCBpbmRleCA+IHRoaXMuaW5kZXhPZkxvb3NlclJvdW5kU3RhcnQpIHtcbiAgICAgICAgcmVsYXRpdmVJbmRleCA9IGluZGV4IC0gdGhpcy5pbmRleE9mTG9vc2VyUm91bmRTdGFydDtcbiAgICAgIH1cblxuICAgICAgbGV0IHByZXZpb3VzUm91bmQ6IFJvdW5kU3RhZ2VTdHJ1Y3R1cmVXaXRoTWF0Y2hlc1ZpZXcgfCBudWxsID0gZGF0YVtpbmRleCAtIDFdID8/IG51bGw7XG4gICAgICBjb25zdCBuZXh0Um91bmQ6IFJvdW5kU3RhZ2VTdHJ1Y3R1cmVXaXRoTWF0Y2hlc1ZpZXcgfCBudWxsID0gZGF0YVtpbmRleCArIDFdID8/IG51bGw7XG5cbiAgICAgIC8vIFN3aXRjaGluZyB0byBsb3NlciBicmFja2V0IHNob3VsZCByZXNldCB0aGUgcHJldmlvdXNSb3VuZC5cbiAgICAgIGlmIChub3JtYWxpemVSb3VuZFR5cGUocHJldmlvdXNSb3VuZD8ucm91bmQudHlwZSkgIT09IG5vcm1hbGl6ZVJvdW5kVHlwZShyb3VuZC5yb3VuZC50eXBlKSkge1xuICAgICAgICBwcmV2aW91c1JvdW5kID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcm91bmRzLnB1c2godGhpcy5fdHJhbnNmb3JtUm91bmQocm91bmQsIHJlbGF0aXZlSW5kZXgsIHByZXZpb3VzUm91bmQsIG5leHRSb3VuZCkpO1xuICAgIH1cblxuICAgIHJldHVybiByb3VuZHM7XG4gIH1cblxuICBwcml2YXRlIF90cmFuc2Zvcm1Sb3VuZCA9IChcbiAgICBjdXJyZW50Um91bmQ6IFJvdW5kU3RhZ2VTdHJ1Y3R1cmVXaXRoTWF0Y2hlc1ZpZXcsXG4gICAgY3VycmVudFJvdW5kSW5kZXg6IG51bWJlcixcbiAgICBwcmV2aW91c1JvdW5kOiBSb3VuZFN0YWdlU3RydWN0dXJlV2l0aE1hdGNoZXNWaWV3IHwgbnVsbCxcbiAgICBuZXh0Um91bmQ6IFJvdW5kU3RhZ2VTdHJ1Y3R1cmVXaXRoTWF0Y2hlc1ZpZXcgfCBudWxsLFxuICApOiBCcmFja2V0Um91bmQgPT4ge1xuICAgIGNvbnN0IG1hdGNoQ291bnQgPSBjdXJyZW50Um91bmQubWF0Y2hlcy5sZW5ndGg7XG4gICAgY29uc3QgbmFtZSA9IGN1cnJlbnRSb3VuZC5yb3VuZC5uYW1lO1xuICAgIGNvbnN0IGlzV2lubmVyQnJhY2tldCA9IGlzVXBwZXJCcmFja2V0TWF0Y2goY3VycmVudFJvdW5kKTtcbiAgICBjb25zdCBpc0RvdWJsZUVsaW1pbmF0aW9uID0gdGhpcy5icmFja2V0VHlwZSA9PT0gJ2RvdWJsZSc7XG5cbiAgICBsZXQgY29sU3RhcnQgPSAwO1xuICAgIGxldCBjb2xFbmQgPSAwO1xuXG4gICAgbGV0IHJvd1N0YXJ0ID0gaXNXaW5uZXJCcmFja2V0ID8gdGhpcy53aW5uZXJSb3dTdGFydCA6IHRoaXMubG9zZXJSb3dTdGFydDtcbiAgICBsZXQgcm93RW5kID0gaXNXaW5uZXJCcmFja2V0ID8gdGhpcy53aW5uZXJSb3dFbmQgOiB0aGlzLmxvc2VyUm93RW5kO1xuICAgIGxldCBmaXJzdFJvdW5kTWF0Y2hDb3VudCA9IGlzV2lubmVyQnJhY2tldFxuICAgICAgPyB0aGlzLmZpcnN0V2lubmVyUm91bmQ/Lm1hdGNoZXMubGVuZ3RoXG4gICAgICA6IHRoaXMuZmlyc3RMb3NlclJvdW5kPy5tYXRjaGVzLmxlbmd0aDtcblxuICAgIGlmIChpc0RvdWJsZUVsaW1pbmF0aW9uKSB7XG4gICAgICBpZiAoaXNXaW5uZXJCcmFja2V0KSB7XG4gICAgICAgIGlmIChjdXJyZW50Um91bmRJbmRleCA9PT0gMCkge1xuICAgICAgICAgIC8vIFRoZSBmaXJzdCB3aW5uZXIgYnJhY2tldCByb3VuZCBpcyBhbHdheXMgMSBjb2wgd2lkZS5cbiAgICAgICAgICBjb2xTdGFydCA9IDE7XG4gICAgICAgICAgY29sRW5kID0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBjb2xTdGFydERvdWJsZSA9IGN1cnJlbnRSb3VuZEluZGV4ICogMjtcbiAgICAgICAgICBjb25zdCBjb2xFbmREb3VibGUgPSBjb2xTdGFydERvdWJsZSArIDE7XG4gICAgICAgICAgY29uc3QgaXNTZW1pRmluYWxSb3VuZCA9IGN1cnJlbnRSb3VuZC5yb3VuZC50eXBlID09PSAnd2lubmVyX2JyYWNrZXQnICYmIG1hdGNoQ291bnQgPT09IDE7XG5cbiAgICAgICAgICAvLyBJZiB0aGUgY29sIGVuZCBpcyBncmVhdGVyIHRoYW4gdGhlIHRvdGFsIGxvb3NlciByb3VuZHMsIHRoZW4gd2UgbmVlZCB0byBzcGFuIDIgY29scyxcbiAgICAgICAgICAvLyBzaW5jZSB0aGUgbG9zZXIgYnJhY2tldCB3aWxsIGFsd2F5cyBwbGF5IDIgcm91bmRzIHBlciB3aW5uZXIgYnJhY2tldCByb3VuZC5cbiAgICAgICAgICAvLyBXZSBhbHNvIG5lZWQgdG8gc3BhbiAyIGNvbCBpZiB0aGUgY3VycmVudCByb3VuZCBpcyB0aGUgc2VtaSBmaW5hbCByb3VuZCBBTkQgd2UgaGF2ZSBhbiBhc3luYyBzdGFydC5cbiAgICAgICAgICAvLyBBc3luYyBzdGFydCBtZWFucyB0aGF0IHRoZSBmaXJzdCB3aW5uZXIgcm91bmQncyBtYXRjaGVzIGxlbmd0aCBpcyBlcXVhbCB0byB0aGUgZmlyc3QgbG9zZXIgcm91bmQncyBtYXRjaGVzIGxlbmd0aC5cbiAgICAgICAgICAvLyBUaGlzIGlzIHByb2R1Y2VkIGJ5IG9ubHkgc2hvd2luZyBhIHBhcnQgKGVnLiB0aGUgbGFzdCA1IHJvdW5kcykgb2YgYSBtdWNoIGJpZ2dlciBicmFja2V0LlxuICAgICAgICAgIGlmIChjb2xFbmREb3VibGUgPCB0aGlzLmxvc2VyUm91bmRDb3VudCB8fCAoaXNTZW1pRmluYWxSb3VuZCAmJiB0aGlzLmlzUGFydGlhbERvdWJsZUVsaW1pbmF0aW9uKSkge1xuICAgICAgICAgICAgY29sU3RhcnQgPSBjb2xTdGFydERvdWJsZTtcblxuICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBhZGQgb25lIHRvIHRoZSBjb2wgdG8gY3JlYXRlIGEgYWN0dWFsIGdyaWQgc3BhblxuICAgICAgICAgICAgY29sRW5kID0gY29sRW5kRG91YmxlICsgMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSWYgdGhlIGNvbCBlbmQgaXMgZ3JlYXRlciB0aGFuIHRoZSB0b3RhbCBsb29zZXIgcm91bmRzLCB0aGVuIHdlIG5lZWQgdG8gZ28gYmFjayB0byAxIGNvbCB3aWRlLFxuICAgICAgICAgICAgLy8gc2luY2UgdGhpcyBpcyB0aGUgcG9pbnQgd2hlcmUgc2VtaSBmaW5hbHMsIGZpbmFscyAoYW5kIHNlY29uZCBjaGFuY2UgZmluYWwpIGFyZSBwbGF5ZWRcbiAgICAgICAgICAgIGNvbnN0IG92ZXJzaG9vdCA9IGNvbEVuZERvdWJsZSAtIHRoaXMubG9zZXJSb3VuZENvdW50O1xuICAgICAgICAgICAgbGV0IGRlbHRhID0gTWF0aC5mbG9vcihvdmVyc2hvb3QgLyAyKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNQYXJ0aWFsRG91YmxlRWxpbWluYXRpb24pIHtcbiAgICAgICAgICAgICAgZGVsdGEgPSBkZWx0YSAtIDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbFN0YXJ0ID0gY29sU3RhcnREb3VibGUgLSBkZWx0YTtcbiAgICAgICAgICAgIGNvbEVuZCA9IGNvbFN0YXJ0RG91YmxlIC0gZGVsdGE7XG5cbiAgICAgICAgICAgIC8vIElmIHRoZSBvdmVyc2hvb3QgaXMgYmlnZ2VyIHRoYW4gMSwgd2UgbmVlZCB0byBhZGp1c3QgdGhlIHJvdyBzdGFydCBhbmQgZW5kIHRvIHNwYW4gb3ZlciB0aGUgd2hvbGUgZ3JpZCxcbiAgICAgICAgICAgIC8vIHNpbmNlIHdlIGFyZSBpbiB0aGUgZmluYWwgcm91bmQocykuXG4gICAgICAgICAgICAvLyBPdmVyc2hvb3QgMSBtZWFucyB3ZSBhcmUgaW4gdGhlIHNlbWkgZmluYWwgcm91bmQgYW5kIHRoZXJlIGlzIGEgbG9zZXIgYnJhY2tldCByb3VuZCBpbiB0aGlzIHN0ZXAgKHRoZSBsYXN0IG9uZSkuXG4gICAgICAgICAgICBpZiAob3ZlcnNob290ID4gMSkge1xuICAgICAgICAgICAgICByb3dTdGFydCA9IDE7XG4gICAgICAgICAgICAgIHJvd0VuZCA9IHRoaXMudG90YWxSb3dDb3VudDtcbiAgICAgICAgICAgICAgZmlyc3RSb3VuZE1hdGNoQ291bnQgPSB0aGlzLnRvdGFsUm93Q291bnQgLSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjdXJyZW50Um91bmQucm91bmQudHlwZSA9PT0gJ3RoaXJkX3BsYWNlJykge1xuICAgICAgICBjb25zdCBoYXNTZWNvbmRDaGFuY2VGaW5hbCA9IHRoaXMuX3JvdW5kc1dpdGhNYXRjaGVzLnNvbWUoKHIpID0+IHIucm91bmQudHlwZSA9PT0gJ3JldmVyc2VfZmluYWwnKTtcblxuICAgICAgICAvLyBTcGFuIHRoZSB0aGlyZCBwbGFjZSBtYXRjaCBmb3JtIGZpbmFsIHRvIHNlY29uZCBjaGFuY2UgZmluYWxcbiAgICAgICAgaWYgKGhhc1NlY29uZENoYW5jZUZpbmFsKSB7XG4gICAgICAgICAgY29sU3RhcnQgPSBjdXJyZW50Um91bmRJbmRleCArIDE7XG4gICAgICAgICAgY29sRW5kID0gY3VycmVudFJvdW5kSW5kZXggKyAzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEtlZXAgdGhlIHRoaXJkIHBsYWNlIG1hdGNoIGluIHRoZSBzYW1lIGNvbCBhcyB0aGUgZmluYWxcbiAgICAgICAgICBjb2xTdGFydCA9IGN1cnJlbnRSb3VuZEluZGV4ICsgMTtcbiAgICAgICAgICBjb2xFbmQgPSBjdXJyZW50Um91bmRJbmRleCArIDE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIExvc2VyIGJyYWNrZXQgcm91bmRzIGFyZSBhbHdheXMgMSBjb2wgd2lkZS5cbiAgICAgICAgY29sU3RhcnQgPSBjdXJyZW50Um91bmRJbmRleCArIDE7XG4gICAgICAgIGNvbEVuZCA9IGN1cnJlbnRSb3VuZEluZGV4ICsgMTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGN1cnJlbnRSb3VuZC5yb3VuZC50eXBlID09PSAndGhpcmRfcGxhY2UnKSB7XG4gICAgICAgIC8vIFRoZSB0aGlyZCBwbGFjZSBtYXRjaCBpcyBhbHdheXMgaW4gdGhlIHNhbWUgY29sIGFzIHRoZSBmaW5hbFxuICAgICAgICBjb2xTdGFydCA9IGN1cnJlbnRSb3VuZEluZGV4IC0gMTtcbiAgICAgICAgY29sRW5kID0gY3VycmVudFJvdW5kSW5kZXggLSAxO1xuXG4gICAgICAgIGlmICh0aGlzLndpbm5lclJvd0VuZCAtIDEgPT09IDIpIHtcbiAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIDIgbWF0Y2ggYnJhY2tldHNcbiAgICAgICAgICByb3dTdGFydCA9IDI7XG4gICAgICAgICAgcm93RW5kID0gMjtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLndpbm5lclJvd0VuZCAtIDEgPT09IDQpIHtcbiAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIDQgbWF0Y2ggYnJhY2tldHNcbiAgICAgICAgICByb3dTdGFydCA9IDM7XG4gICAgICAgICAgcm93RW5kID0gMztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLndpbm5lclJvd0VuZCAtIDEgPiA0KSB7XG4gICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciA4KyBtYXRjaCBicmFja2V0cy4gVGhpcyB3aWxsIHJlc3VsdCBpbiBpdCBiZWluZyBpbiB0aGUgc2FtZSByb3cgYXMgdGhlIHNlY29uZCBzZW1pIGZpbmFsIG1hdGNoLlxuICAgICAgICAgIHJvd1N0YXJ0ID0gKHRoaXMud2lubmVyUm93RW5kIC0gMSkgLyAyICsgKHRoaXMud2lubmVyUm93RW5kIC0gMSkgLyAyIC8gMjtcbiAgICAgICAgICByb3dFbmQgPSB0aGlzLndpbm5lclJvd0VuZDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQWxsIG90aGVyIHNpbmdsZSBlbGltaW5hdGlvbiByb3VuZHMgYXJlIGFsd2F5cyAxIGNvbCB3aWRlLlxuICAgICAgICBjb2xTdGFydCA9IGN1cnJlbnRSb3VuZEluZGV4O1xuICAgICAgICBjb2xFbmQgPSBjdXJyZW50Um91bmRJbmRleDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBtYXRjaGVzID0gY3VycmVudFJvdW5kLm1hdGNoZXMubWFwKChtYXRjaCwgbWF0Y2hJbmRleCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybU1hdGNoKFxuICAgICAgICBtYXRjaCxcbiAgICAgICAgbWF0Y2hJbmRleCxcbiAgICAgICAgcm93U3RhcnQsXG4gICAgICAgIG1hdGNoQ291bnQsXG4gICAgICAgIGZpcnN0Um91bmRNYXRjaENvdW50ID8/IDAsXG4gICAgICAgIHByZXZpb3VzUm91bmQsXG4gICAgICAgIG5leHRSb3VuZCxcbiAgICAgICAgY3VycmVudFJvdW5kLFxuICAgICAgICBjdXJyZW50Um91bmRJbmRleCxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbWF0Y2hDb3VudCxcbiAgICAgIG5hbWUsXG4gICAgICBtYXRjaGVzLFxuICAgICAgZGF0YTogY3VycmVudFJvdW5kLnJvdW5kLFxuXG4gICAgICByb3c6IHtcbiAgICAgICAgc3RhcnQ6IHJvd1N0YXJ0LFxuICAgICAgICBlbmQ6IHJvd0VuZCxcbiAgICAgIH0sXG4gICAgICBjb2x1bW46IHtcbiAgICAgICAgc3RhcnQ6IGNvbFN0YXJ0LFxuICAgICAgICBlbmQ6IGNvbEVuZCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfTtcblxuICBwcml2YXRlIF90cmFuc2Zvcm1NYXRjaCA9IChcbiAgICBtYXRjaDogTWF0Y2hMaXN0VmlldyxcbiAgICBtYXRjaEluZGV4OiBudW1iZXIsXG4gICAgcm91bmRSb3dTdGFydDogbnVtYmVyLFxuICAgIG1hdGNoQ291bnQ6IG51bWJlcixcbiAgICBmaXJzdFJvdW5kTWF0Y2hDb3VudDogbnVtYmVyLFxuICAgIHByZXZpb3VzUm91bmQ6IFJvdW5kU3RhZ2VTdHJ1Y3R1cmVXaXRoTWF0Y2hlc1ZpZXcgfCBudWxsLFxuICAgIG5leHRSb3VuZDogUm91bmRTdGFnZVN0cnVjdHVyZVdpdGhNYXRjaGVzVmlldyB8IG51bGwsXG4gICAgY3VycmVudFJvdW5kOiBSb3VuZFN0YWdlU3RydWN0dXJlV2l0aE1hdGNoZXNWaWV3IHwgbnVsbCxcbiAgICBjdXJyZW50Um91bmRJbmRleDogbnVtYmVyLFxuICApOiBCcmFja2V0TWF0Y2ggPT4ge1xuICAgIGNvbnN0IGRpZmYgPSBmaXJzdFJvdW5kTWF0Y2hDb3VudCAvIG1hdGNoQ291bnQ7XG5cbiAgICBsZXQgcm93U3RhcnQgPSByb3VuZFJvd1N0YXJ0ICsgbWF0Y2hJbmRleCAqIGRpZmY7XG4gICAgbGV0IHJvd0VuZCA9IHJvd1N0YXJ0ICsgZGlmZjtcblxuICAgIGlmIChjdXJyZW50Um91bmQ/LnJvdW5kLnR5cGUgPT09ICd0aGlyZF9wbGFjZScgJiYgdGhpcy5icmFja2V0VHlwZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgOCsgc2luZ2xlIGVsaW1pbmF0aW9uIGJyYWNrZXRzLiBUaGlzIHdpbGwgcmVzdWx0IGluIHRoZSBjdXJyZW50IG1hdGNoIGJlaW5nIGluIHRoZSBzYW1lIHJvdyBhcyB0aGUgc2Vjb25kIHNlbWkgZmluYWwgbWF0Y2guXG4gICAgICBpZiAodGhpcy53aW5uZXJSb3dFbmQgLSAxID4gNCkge1xuICAgICAgICByb3dTdGFydCA9ICh0aGlzLndpbm5lclJvd0VuZCAtIDEpIC8gMjtcbiAgICAgICAgcm93RW5kID0gdGhpcy53aW5uZXJSb3dFbmQgLSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCByb3VuZHNTYW1lU2l6ZSA9IHByZXZpb3VzUm91bmQ/Lm1hdGNoZXMubGVuZ3RoID09PSBtYXRjaENvdW50O1xuICAgIGxldCBsb2dpY2FsTmV4dFJvdW5kOiBSb3VuZFN0YWdlU3RydWN0dXJlV2l0aE1hdGNoZXNWaWV3IHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAoXG4gICAgICAoY3VycmVudFJvdW5kPy5yb3VuZC50eXBlID09PSAnbG9zZXJfYnJhY2tldCcgJiYgIW5leHRSb3VuZCkgfHxcbiAgICAgIChjdXJyZW50Um91bmQ/LnJvdW5kLnR5cGUgPT09ICdsb3Nlcl9icmFja2V0JyAmJiBuZXh0Um91bmQ/LnJvdW5kLnR5cGUgPT09ICd0aGlyZF9wbGFjZScpXG4gICAgKSB7XG4gICAgICBjb25zdCBuZXh0ID0gdGhpcy5fcm91bmRzV2l0aE1hdGNoZXNbY3VycmVudFJvdW5kSW5kZXggLSB0aGlzLmxvb3NlclJvd0FkZGl0aW9uYWxSb3VuZENvdW50ICsgMV07XG5cbiAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgIC8vIFRyYW5zaXRpb24gZnJvbSBsYXN0IHJvdW5kIG9mIGxvb3NlciBicmFja2V0IHRvIHNlbWkgZmluYWwgcm91bmQgb2Ygd2lubmVyIGJyYWNrZXRcbiAgICAgICAgbG9naWNhbE5leHRSb3VuZCA9IG5leHQ7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICgoY3VycmVudFJvdW5kICYmIGlzVXBwZXJCcmFja2V0TWF0Y2goY3VycmVudFJvdW5kKSkgfHwgIWN1cnJlbnRSb3VuZD8ucm91bmQudHlwZSkgJiZcbiAgICAgIG5leHRSb3VuZD8ucm91bmQudHlwZSA9PT0gJ2xvc2VyX2JyYWNrZXQnXG4gICAgKSB7XG4gICAgICAvLyBUaGUgbGFzdCB3aW5uZXIgcm91bmQgKGZpbmFsKSBkb2VzIG5vdCBoYXZlIGEgbmV4dCByb3VuZCwgYnV0IHRoZSBuZXh0IHJvdW5kIGlzIHRoZSBmaXJzdCBsb29zZXIgcm91bmQuXG4gICAgICBsb2dpY2FsTmV4dFJvdW5kID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9naWNhbE5leHRSb3VuZCA9IG5leHRSb3VuZDtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aW91c01hdGNoQSA9XG4gICAgICAocm91bmRzU2FtZVNpemUgPyBwcmV2aW91c1JvdW5kPy5tYXRjaGVzW21hdGNoSW5kZXhdPy5pZCA6IHByZXZpb3VzUm91bmQ/Lm1hdGNoZXNbbWF0Y2hJbmRleCAqIDJdPy5pZCkgPz8gbnVsbDtcbiAgICBsZXQgcHJldmlvdXNNYXRjaEIgPSBwcmV2aW91c1JvdW5kPy5tYXRjaGVzW21hdGNoSW5kZXggKiAyICsgMV0/LmlkID8/IG51bGw7XG5cbiAgICAvLyBwcmV2aW91c01hdGNoQiBjb3VsZCBiZSB0aGUgbGFzdCBsb3NlciBicmFja2V0IG1hdGNoXG4gICAgaWYgKCFwcmV2aW91c01hdGNoQiAmJiBjdXJyZW50Um91bmQgJiYgaXNVcHBlckJyYWNrZXRNYXRjaChjdXJyZW50Um91bmQpKSB7XG4gICAgICBjb25zdCBtYXRjaEIgPSB0aGlzLmxvc2VyUm91bmRzW2N1cnJlbnRSb3VuZEluZGV4ICsgdGhpcy5sb29zZXJSb3dBZGRpdGlvbmFsUm91bmRDb3VudCAtIDFdPy5tYXRjaGVzWzBdO1xuXG4gICAgICBpZiAodGhpcy5sb3NlclJvdW5kcy5sZW5ndGggPT09IGN1cnJlbnRSb3VuZEluZGV4ICsgdGhpcy5sb29zZXJSb3dBZGRpdGlvbmFsUm91bmRDb3VudCAmJiBtYXRjaEIpIHtcbiAgICAgICAgcHJldmlvdXNNYXRjaEIgPSBtYXRjaEIuaWQ7XG4gICAgICAgIHJvdW5kc1NhbWVTaXplID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbmV4dE1hdGNoID0gbG9naWNhbE5leHRSb3VuZD8ubWF0Y2hlc1tNYXRoLmZsb29yKG1hdGNoSW5kZXggLyAyKV0/LmlkID8/IG51bGw7XG5cbiAgICBsZXQgcHJldmlvdXNSb3VuZE1hdGNoZXMgPSBudWxsO1xuXG4gICAgaWYgKHByZXZpb3VzUm91bmQpIHtcbiAgICAgIGlmIChyb3VuZHNTYW1lU2l6ZSAmJiBwcmV2aW91c01hdGNoQSkge1xuICAgICAgICAvLyAxIG1hdGNoIHRvIDEgbWF0Y2hcbiAgICAgICAgcHJldmlvdXNSb3VuZE1hdGNoZXMgPSB7XG4gICAgICAgICAgcm91bmRJZDogcHJldmlvdXNSb3VuZC5yb3VuZC5pZCxcbiAgICAgICAgICBtYXRjaElkczogW3ByZXZpb3VzTWF0Y2hBXSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNNYXRjaEEgJiYgcHJldmlvdXNNYXRjaEIpIHtcbiAgICAgICAgLy8gMiBtYXRjaGVzIHRvIDEgbWF0Y2hcbiAgICAgICAgcHJldmlvdXNSb3VuZE1hdGNoZXMgPSB7XG4gICAgICAgICAgcm91bmRJZDogcHJldmlvdXNSb3VuZC5yb3VuZC5pZCxcbiAgICAgICAgICBtYXRjaElkczogW3ByZXZpb3VzTWF0Y2hBLCBwcmV2aW91c01hdGNoQl0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbmV4dFJvdW5kTWF0Y2ggPVxuICAgICAgbmV4dE1hdGNoICYmIGxvZ2ljYWxOZXh0Um91bmRcbiAgICAgICAgPyB7XG4gICAgICAgICAgICByb3VuZElkOiBsb2dpY2FsTmV4dFJvdW5kLnJvdW5kLmlkLFxuICAgICAgICAgICAgbWF0Y2hJZDogbmV4dE1hdGNoLFxuICAgICAgICAgIH1cbiAgICAgICAgOiBudWxsO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJvdzoge1xuICAgICAgICBzdGFydDogcm93U3RhcnQsXG4gICAgICAgIGVuZDogcm93RW5kLFxuICAgICAgfSxcbiAgICAgIGRhdGE6IG1hdGNoLFxuXG4gICAgICBwcmV2aW91c01hdGNoZXM6IGN1cnJlbnRSb3VuZD8ucm91bmQudHlwZSAhPT0gJ3RoaXJkX3BsYWNlJyA/IHByZXZpb3VzUm91bmRNYXRjaGVzIDogbnVsbCxcbiAgICAgIG5leHRNYXRjaDogY3VycmVudFJvdW5kPy5yb3VuZC50eXBlICE9PSAndGhpcmRfcGxhY2UnID8gbmV4dFJvdW5kTWF0Y2ggOiBudWxsLFxuICAgIH07XG4gIH07XG59XG4iXX0=
339
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhY2tldC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9icmFja2V0L3V0aWxzL2JyYWNrZXQudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBRWxCLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBNEQsRUFBRSxFQUFFO0lBQ2xHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sQ0FDTCxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxnQkFBZ0I7UUFDckMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTztRQUM1QixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRO1FBQzdCLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLGVBQWU7UUFDcEMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDbEIsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQTRDLEVBQUUsRUFBRTtJQUMxRSxNQUFNLFlBQVksR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQy9GLE1BQU0sWUFBWSxHQUFHLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUN2RyxNQUFNLFdBQVcsR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDO0lBQ25FLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLENBQUM7SUFDbEYsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsQ0FBQztJQUU5RSxPQUFPLENBQUMsR0FBRyxZQUFZLEVBQUUsR0FBRyxZQUFZLEVBQUUsR0FBRyxXQUFXLEVBQUUsR0FBRyxrQkFBa0IsRUFBRSxHQUFHLFdBQVcsRUFBRSxHQUFHLGdCQUFnQixDQUFDLENBQUM7QUFDeEgsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxNQUE0QyxFQUFFLEVBQUU7SUFDdkYsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNuQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNaLENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEMsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsU0FBb0MsRUFBRSxFQUFFO0lBQ3pFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQ0UsU0FBUyxLQUFLLFFBQVE7UUFDdEIsU0FBUyxLQUFLLGdCQUFnQjtRQUM5QixTQUFTLEtBQUssT0FBTztRQUNyQixTQUFTLEtBQUssZUFBZSxFQUM3QixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVGLE1BQU0sT0FBTyxPQUFPO0lBQ2xCLElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixHQUFHLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFFBQVE7WUFDbEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0I7WUFDdkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUM5RyxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksdUJBQXVCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELElBQUksNkJBQTZCO1FBQy9CLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzlGLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUM3QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsQ0FBQztRQUM1RixNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBRTNDLE9BQU8sZUFBZSxHQUFHLGdCQUFnQixDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLDBCQUEwQjtRQUM1QixPQUFPLENBQ0wsSUFBSSxDQUFDLFdBQVcsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUNoSCxDQUFDO0lBQ0osQ0FBQztJQU9ELFlBQW9CLGtCQUF3RDtRQUF4RCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXNDO1FBSm5FLE9BQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQztRQW1EbEIsb0JBQWUsR0FBRyxDQUN4QixZQUFnRCxFQUNoRCxpQkFBeUIsRUFDekIsYUFBd0QsRUFDeEQsU0FBb0QsRUFDdEMsRUFBRTtZQUNoQixNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUMvQyxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUNyQyxNQUFNLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMxRCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxXQUFXLEtBQUssUUFBUSxDQUFDO1lBRTFELElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztZQUNqQixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFFZixJQUFJLFFBQVEsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDMUUsSUFBSSxNQUFNLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3BFLElBQUksb0JBQW9CLEdBQUcsZUFBZTtnQkFDeEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUV6QyxJQUFJLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3hCLElBQUksZUFBZSxFQUFFLENBQUM7b0JBQ3BCLElBQUksaUJBQWlCLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQzVCLHVEQUF1RDt3QkFDdkQsUUFBUSxHQUFHLENBQUMsQ0FBQzt3QkFDYixNQUFNLEdBQUcsQ0FBQyxDQUFDO29CQUNiLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixNQUFNLGNBQWMsR0FBRyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7d0JBQzdDLE1BQU0sWUFBWSxHQUFHLGNBQWMsR0FBRyxDQUFDLENBQUM7d0JBQ3hDLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLElBQUksVUFBVSxLQUFLLENBQUMsQ0FBQzt3QkFFMUYsdUZBQXVGO3dCQUN2Riw4RUFBOEU7d0JBQzlFLHNHQUFzRzt3QkFDdEcscUhBQXFIO3dCQUNySCw0RkFBNEY7d0JBQzVGLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDOzRCQUNqRyxRQUFRLEdBQUcsY0FBYyxDQUFDOzRCQUUxQiw2REFBNkQ7NEJBQzdELE1BQU0sR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDO3dCQUM1QixDQUFDOzZCQUFNLENBQUM7NEJBQ04saUdBQWlHOzRCQUNqRyx5RkFBeUY7NEJBQ3pGLE1BQU0sU0FBUyxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDOzRCQUN0RCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQzs0QkFFdEMsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztnQ0FDcEMsS0FBSyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7NEJBQ3BCLENBQUM7NEJBRUQsUUFBUSxHQUFHLGNBQWMsR0FBRyxLQUFLLENBQUM7NEJBQ2xDLE1BQU0sR0FBRyxjQUFjLEdBQUcsS0FBSyxDQUFDOzRCQUVoQywwR0FBMEc7NEJBQzFHLHNDQUFzQzs0QkFDdEMsbUhBQW1IOzRCQUNuSCxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQ0FDbEIsUUFBUSxHQUFHLENBQUMsQ0FBQztnQ0FDYixNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztnQ0FDNUIsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7NEJBQ2hELENBQUM7d0JBQ0gsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7cUJBQU0sSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxhQUFhLEVBQUUsQ0FBQztvQkFDckQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsQ0FBQztvQkFFbkcsK0RBQStEO29CQUMvRCxJQUFJLG9CQUFvQixFQUFFLENBQUM7d0JBQ3pCLFFBQVEsR0FBRyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7d0JBQ2pDLE1BQU0sR0FBRyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7b0JBQ2pDLENBQUM7eUJBQU0sQ0FBQzt3QkFDTiwwREFBMEQ7d0JBQzFELFFBQVEsR0FBRyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7d0JBQ2pDLE1BQU0sR0FBRyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7b0JBQ2pDLENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLDhDQUE4QztvQkFDOUMsUUFBUSxHQUFHLGlCQUFpQixHQUFHLENBQUMsQ0FBQztvQkFDakMsTUFBTSxHQUFHLGlCQUFpQixHQUFHLENBQUMsQ0FBQztnQkFDakMsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLGFBQWEsRUFBRSxDQUFDO29CQUM5QywrREFBK0Q7b0JBQy9ELFFBQVEsR0FBRyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7b0JBQ2pDLE1BQU0sR0FBRyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7b0JBRS9CLElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQ2hDLG9DQUFvQzt3QkFDcEMsUUFBUSxHQUFHLENBQUMsQ0FBQzt3QkFDYixNQUFNLEdBQUcsQ0FBQyxDQUFDO29CQUNiLENBQUM7eUJBQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQzt3QkFDdkMsb0NBQW9DO3dCQUNwQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO3dCQUNiLE1BQU0sR0FBRyxDQUFDLENBQUM7b0JBQ2IsQ0FBQzt5QkFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUNyQyxtSEFBbUg7d0JBQ25ILFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUN6RSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztvQkFDN0IsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sNkRBQTZEO29CQUM3RCxRQUFRLEdBQUcsaUJBQWlCLENBQUM7b0JBQzdCLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUM7WUFFRCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRTtnQkFDN0QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUN6QixLQUFLLEVBQ0wsVUFBVSxFQUNWLFFBQVEsRUFDUixVQUFVLEVBQ1Ysb0JBQW9CLElBQUksQ0FBQyxFQUN6QixhQUFhLEVBQ2IsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsQ0FDbEIsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTztnQkFDTCxVQUFVO2dCQUNWLElBQUk7Z0JBQ0osT0FBTztnQkFDUCxJQUFJLEVBQUUsWUFBWSxDQUFDLEtBQUs7Z0JBRXhCLEdBQUcsRUFBRTtvQkFDSCxLQUFLLEVBQUUsUUFBUTtvQkFDZixHQUFHLEVBQUUsTUFBTTtpQkFDWjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sS0FBSyxFQUFFLFFBQVE7b0JBQ2YsR0FBRyxFQUFFLE1BQU07aUJBQ1o7YUFDRixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBRU0sb0JBQWUsR0FBRyxDQUN4QixLQUFvQixFQUNwQixVQUFrQixFQUNsQixhQUFxQixFQUNyQixVQUFrQixFQUNsQixvQkFBNEIsRUFDNUIsYUFBd0QsRUFDeEQsU0FBb0QsRUFDcEQsWUFBdUQsRUFDdkQsaUJBQXlCLEVBQ1gsRUFBRTtZQUNoQixNQUFNLElBQUksR0FBRyxvQkFBb0IsR0FBRyxVQUFVLENBQUM7WUFFL0MsSUFBSSxRQUFRLEdBQUcsYUFBYSxHQUFHLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDakQsSUFBSSxNQUFNLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQztZQUU3QixJQUFJLFlBQVksRUFBRSxLQUFLLENBQUMsSUFBSSxLQUFLLGFBQWEsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNoRiwrSUFBK0k7Z0JBQy9JLElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzlCLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN2QyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7Z0JBQ2pDLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxjQUFjLEdBQUcsYUFBYSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDO1lBQ2xFLElBQUksZ0JBQWdCLEdBQThDLElBQUksQ0FBQztZQUV2RSxJQUNFLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxJQUFJLEtBQUssZUFBZSxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUM1RCxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsSUFBSSxLQUFLLGVBQWUsSUFBSSxTQUFTLEVBQUUsS0FBSyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsRUFDekYsQ0FBQztnQkFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUVqRyxJQUFJLElBQUksRUFBRSxDQUFDO29CQUNULHFGQUFxRjtvQkFDckYsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2dCQUMxQixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxJQUNMLENBQUMsQ0FBQyxZQUFZLElBQUksbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNsRixTQUFTLEVBQUUsS0FBSyxDQUFDLElBQUksS0FBSyxlQUFlLEVBQ3pDLENBQUM7Z0JBQ0QsMEdBQTBHO2dCQUMxRyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFDMUIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztZQUMvQixDQUFDO1lBRUQsTUFBTSxjQUFjLEdBQ2xCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDO1lBQ2pILElBQUksY0FBYyxHQUFHLGFBQWEsRUFBRSxPQUFPLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDO1lBRTVFLHVEQUF1RDtZQUN2RCxJQUFJLENBQUMsY0FBYyxJQUFJLFlBQVksSUFBSSxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUN6RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXhHLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssaUJBQWlCLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNqRyxjQUFjLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDM0IsY0FBYyxHQUFHLEtBQUssQ0FBQztnQkFDekIsQ0FBQztZQUNILENBQUM7WUFFRCxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDO1lBRXBGLElBQUksb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1lBRWhDLElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksY0FBYyxJQUFJLGNBQWMsRUFBRSxDQUFDO29CQUNyQyxxQkFBcUI7b0JBQ3JCLG9CQUFvQixHQUFHO3dCQUNyQixPQUFPLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUMvQixRQUFRLEVBQUUsQ0FBQyxjQUFjLENBQUM7cUJBQzNCLENBQUM7Z0JBQ0osQ0FBQztxQkFBTSxJQUFJLGNBQWMsSUFBSSxjQUFjLEVBQUUsQ0FBQztvQkFDNUMsdUJBQXVCO29CQUN2QixvQkFBb0IsR0FBRzt3QkFDckIsT0FBTyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRTt3QkFDL0IsUUFBUSxFQUFFLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQztxQkFDM0MsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztZQUVELE1BQU0sY0FBYyxHQUNsQixTQUFTLElBQUksZ0JBQWdCO2dCQUMzQixDQUFDLENBQUM7b0JBQ0UsT0FBTyxFQUFFLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNsQyxPQUFPLEVBQUUsU0FBUztpQkFDbkI7Z0JBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUVYLE9BQU87Z0JBQ0wsR0FBRyxFQUFFO29CQUNILEtBQUssRUFBRSxRQUFRO29CQUNmLEdBQUcsRUFBRSxNQUFNO2lCQUNaO2dCQUNELElBQUksRUFBRSxLQUFLO2dCQUVYLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUN6RixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUk7YUFDOUUsQ0FBQztRQUNKLENBQUMsQ0FBQztRQTNSQSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUU5RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELE1BQU0sV0FBVyxHQUFtQixFQUFFLENBQUM7UUFFdkMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUMzQixLQUFLLE1BQU0sS0FBSyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUMxQixXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUM7SUFDckMsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFlO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxZQUFZLENBQUMsT0FBZTtRQUMxQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU8sZUFBZSxDQUFDLElBQTBDO1FBQ2hFLE1BQU0sTUFBTSxHQUFtQixFQUFFLENBQUM7UUFFbEMsS0FBSyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQzVDLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztZQUUxQixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsdUJBQXVCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO2dCQUNuRixhQUFhLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztZQUN2RCxDQUFDO1lBRUQsSUFBSSxhQUFhLEdBQThDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO1lBQ3ZGLE1BQU0sU0FBUyxHQUE4QyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztZQUVyRiw2REFBNkQ7WUFDN0QsSUFBSSxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDM0YsYUFBYSxHQUFHLElBQUksQ0FBQztZQUN2QixDQUFDO1lBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDcEYsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FnUEYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYXRjaExpc3RWaWV3LCBSb3VuZFN0YWdlU3RydWN0dXJlV2l0aE1hdGNoZXNWaWV3IH0gZnJvbSAnQGV0aGxldGUvdHlwZXMnO1xuaW1wb3J0IHsgQnJhY2tldE1hdGNoLCBCcmFja2V0Um91bmQgfSBmcm9tICcuLi90eXBlcyc7XG5cbmxldCBicmFja2V0SWQgPSAwO1xuXG5leHBvcnQgY29uc3QgaXNVcHBlckJyYWNrZXRNYXRjaCA9IChtYXRjaDogUm91bmRTdGFnZVN0cnVjdHVyZVdpdGhNYXRjaGVzVmlldyB8IG51bGwgfCB1bmRlZmluZWQpID0+IHtcbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgbWF0Y2gucm91bmQudHlwZSA9PT0gJ3dpbm5lcl9icmFja2V0JyB8fFxuICAgIG1hdGNoLnJvdW5kLnR5cGUgPT09ICdmaW5hbCcgfHxcbiAgICBtYXRjaC5yb3VuZC50eXBlID09PSAnbm9ybWFsJyB8fFxuICAgIG1hdGNoLnJvdW5kLnR5cGUgPT09ICdyZXZlcnNlX2ZpbmFsJyB8fFxuICAgICFtYXRjaC5yb3VuZC50eXBlXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3Qgb3JkZXJSb3VuZHMgPSAocm91bmRzOiBSb3VuZFN0YWdlU3RydWN0dXJlV2l0aE1hdGNoZXNWaWV3W10pID0+IHtcbiAgY29uc3Qgbm9ybWFsUm91bmRzID0gb3JkZXJSb3VuZHNCeVJvdW5kTnVtYmVyKHJvdW5kcy5maWx0ZXIoKHIpID0+IHIucm91bmQudHlwZSA9PT0gJ25vcm1hbCcpKTtcbiAgY29uc3Qgd2lubmVyUm91bmRzID0gb3JkZXJSb3VuZHNCeVJvdW5kTnVtYmVyKHJvdW5kcy5maWx0ZXIoKHIpID0+IHIucm91bmQudHlwZSA9PT0gJ3dpbm5lcl9icmFja2V0JykpO1xuICBjb25zdCBsb3NlclJvdW5kcyA9IG9yZGVyUm91bmRzQnlSb3VuZE51bWJlcihyb3VuZHMuZmlsdGVyKChyKSA9PiByLnJvdW5kLnR5cGUgPT09ICdsb3Nlcl9icmFja2V0JykpO1xuICBjb25zdCBmaW5hbFJvdW5kcyA9IHJvdW5kcy5maWx0ZXIoKHIpID0+IHIucm91bmQudHlwZSA9PT0gJ2ZpbmFsJyk7XG4gIGNvbnN0IHJldmVyc2VGaW5hbFJvdW5kcyA9IHJvdW5kcy5maWx0ZXIoKHIpID0+IHIucm91bmQudHlwZSA9PT0gJ3JldmVyc2VfZmluYWwnKTtcbiAgY29uc3QgdGhpcmRQbGFjZVJvdW5kcyA9IHJvdW5kcy5maWx0ZXIoKHIpID0+IHIucm91bmQudHlwZSA9PT0gJ3RoaXJkX3BsYWNlJyk7XG5cbiAgcmV0dXJuIFsuLi53aW5uZXJSb3VuZHMsIC4uLm5vcm1hbFJvdW5kcywgLi4uZmluYWxSb3VuZHMsIC4uLnJldmVyc2VGaW5hbFJvdW5kcywgLi4ubG9zZXJSb3VuZHMsIC4uLnRoaXJkUGxhY2VSb3VuZHNdO1xufTtcblxuZXhwb3J0IGNvbnN0IG9yZGVyUm91bmRzQnlSb3VuZE51bWJlciA9IChyb3VuZHM6IFJvdW5kU3RhZ2VTdHJ1Y3R1cmVXaXRoTWF0Y2hlc1ZpZXdbXSkgPT4ge1xuICByZXR1cm4gcm91bmRzLnNsaWNlKDApLnNvcnQoKGEsIGIpID0+IHtcbiAgICBpZiAoYS5yb3VuZC5udW1iZXIgPCBiLnJvdW5kLm51bWJlcikge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBpZiAoYS5yb3VuZC5udW1iZXIgPiBiLnJvdW5kLm51bWJlcikge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBub3JtYWxpemVSb3VuZFR5cGUgPSAocm91bmRUeXBlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB7XG4gIGlmICghcm91bmRUeXBlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoXG4gICAgcm91bmRUeXBlID09PSAnbm9ybWFsJyB8fFxuICAgIHJvdW5kVHlwZSA9PT0gJ3dpbm5lcl9icmFja2V0JyB8fFxuICAgIHJvdW5kVHlwZSA9PT0gJ2ZpbmFsJyB8fFxuICAgIHJvdW5kVHlwZSA9PT0gJ3JldmVyc2VfZmluYWwnXG4gICkge1xuICAgIHJldHVybiAndXBwZXInO1xuICB9XG5cbiAgcmV0dXJuICdsb3dlcic7XG59O1xuXG5leHBvcnQgY2xhc3MgQnJhY2tldCB7XG4gIGdldCB3aW5uZXJSb3VuZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kc1dpdGhNYXRjaGVzLmZpbHRlcigocikgPT4gaXNVcHBlckJyYWNrZXRNYXRjaChyKSk7XG4gIH1cblxuICBnZXQgbG9zZXJSb3VuZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kc1dpdGhNYXRjaGVzLmZpbHRlcigocikgPT4gci5yb3VuZC50eXBlID09PSAnbG9zZXJfYnJhY2tldCcpO1xuICB9XG5cbiAgZ2V0IGZpcnN0V2lubmVyUm91bmQoKSB7XG4gICAgcmV0dXJuIHRoaXMud2lubmVyUm91bmRzWzBdID8/IG51bGw7XG4gIH1cblxuICBnZXQgZmlyc3RMb3NlclJvdW5kKCkge1xuICAgIHJldHVybiB0aGlzLmxvc2VyUm91bmRzWzBdID8/IG51bGw7XG4gIH1cblxuICBnZXQgd2lubmVyUm91bmRDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy53aW5uZXJSb3VuZHMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0IGxvc2VyUm91bmRDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5sb3NlclJvdW5kcy5sZW5ndGg7XG4gIH1cblxuICBnZXQgYnJhY2tldFNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlyc3RXaW5uZXJSb3VuZCA/IHRoaXMuZmlyc3RXaW5uZXJSb3VuZC5tYXRjaGVzLmxlbmd0aCAqIDIgOiAwO1xuICB9XG5cbiAgZ2V0IGJyYWNrZXRUeXBlKCkge1xuICAgIHJldHVybiAhdGhpcy5sb3NlclJvdW5kQ291bnQgPyAnc2luZ2xlJyA6ICdkb3VibGUnO1xuICB9XG5cbiAgZ2V0IHdpbm5lckJyYWNrZXRSb3dDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5maXJzdFdpbm5lclJvdW5kPy5tYXRjaGVzLmxlbmd0aCA/PyAwO1xuICB9XG5cbiAgZ2V0IGxvc2VyQnJhY2tldFJvd0NvdW50KCkge1xuICAgIHJldHVybiB0aGlzLmZpcnN0TG9zZXJSb3VuZD8ubWF0Y2hlcy5sZW5ndGggPz8gMDtcbiAgfVxuXG4gIGdldCB0b3RhbFJvd0NvdW50KCkge1xuICAgIHJldHVybiB0aGlzLndpbm5lckJyYWNrZXRSb3dDb3VudCArIHRoaXMubG9zZXJCcmFja2V0Um93Q291bnQgKyAxO1xuICB9XG5cbiAgZ2V0IHRvdGFsQ29sQ291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnJhY2tldFR5cGUgPT09ICdzaW5nbGUnXG4gICAgICA/IHRoaXMud2lubmVyUm91bmRDb3VudFxuICAgICAgOiB0aGlzLmxvc2VyUm91bmRDb3VudCArICh0aGlzLndpbm5lclJvdW5kQ291bnQgLSB0aGlzLmxvc2VyUm91bmRDb3VudCAvIDIpIC0gMTtcbiAgfVxuXG4gIGdldCB3aW5uZXJSb3dTdGFydCgpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGdldCB3aW5uZXJSb3dFbmQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnJhY2tldFR5cGUgPT09ICdzaW5nbGUnID8gdGhpcy50b3RhbFJvd0NvdW50IDogdGhpcy50b3RhbFJvd0NvdW50IC0gdGhpcy53aW5uZXJCcmFja2V0Um93Q291bnQ7XG4gIH1cblxuICBnZXQgbG9zZXJSb3dTdGFydCgpIHtcbiAgICByZXR1cm4gdGhpcy53aW5uZXJCcmFja2V0Um93Q291bnQgKyAxO1xuICB9XG5cbiAgZ2V0IGxvc2VyUm93RW5kKCkge1xuICAgIHJldHVybiB0aGlzLnRvdGFsUm93Q291bnQ7XG4gIH1cblxuICBnZXQgaW5kZXhPZkxvb3NlclJvdW5kU3RhcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kc1dpdGhNYXRjaGVzLmZpbmRJbmRleCgocikgPT4gci5yb3VuZC50eXBlID09PSAnbG9zZXJfYnJhY2tldCcpO1xuICB9XG5cbiAgZ2V0IGxvb3NlclJvd0FkZGl0aW9uYWxSb3VuZENvdW50KCkge1xuICAgIGlmICh0aGlzLmJyYWNrZXRUeXBlID09PSAnc2luZ2xlJykge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3Qgd2lubmVyUm91bmRzID0gdGhpcy5fcm91bmRzV2l0aE1hdGNoZXMuZmlsdGVyKChyKSA9PiByLnJvdW5kLnR5cGUgPT09ICd3aW5uZXJfYnJhY2tldCcpO1xuICAgIGNvbnN0IHdpbm5lclJvdW5kQ291bnQgPSB3aW5uZXJSb3VuZHMubGVuZ3RoO1xuICAgIGNvbnN0IGxvc2VyUm91bmRzID0gdGhpcy5fcm91bmRzV2l0aE1hdGNoZXMuZmlsdGVyKChyKSA9PiByLnJvdW5kLnR5cGUgPT09ICdsb3Nlcl9icmFja2V0Jyk7XG4gICAgY29uc3QgbG9zZXJSb3VuZENvdW50ID0gbG9zZXJSb3VuZHMubGVuZ3RoO1xuXG4gICAgcmV0dXJuIGxvc2VyUm91bmRDb3VudCAtIHdpbm5lclJvdW5kQ291bnQ7XG4gIH1cblxuICBnZXQgaXNQYXJ0aWFsRG91YmxlRWxpbWluYXRpb24oKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuYnJhY2tldFR5cGUgPT09ICdkb3VibGUnICYmIHRoaXMuZmlyc3RXaW5uZXJSb3VuZD8ubWF0Y2hlcy5sZW5ndGggPT09IHRoaXMuZmlyc3RMb3NlclJvdW5kPy5tYXRjaGVzLmxlbmd0aFxuICAgICk7XG4gIH1cblxuICByZWFkb25seSBicmFja2V0Um91bmRzOiBCcmFja2V0Um91bmRbXTtcbiAgcmVhZG9ubHkgaWQgPSBicmFja2V0SWQrKztcblxuICBwcml2YXRlIHJlYWRvbmx5IF9icmFja2V0TWF0Y2hlczogQnJhY2tldE1hdGNoW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcm91bmRzV2l0aE1hdGNoZXM6IFJvdW5kU3RhZ2VTdHJ1Y3R1cmVXaXRoTWF0Y2hlc1ZpZXdbXSkge1xuICAgIHRoaXMuYnJhY2tldFJvdW5kcyA9IHRoaXMuX2NvbXB1dGVCcmFja2V0KF9yb3VuZHNXaXRoTWF0Y2hlcyk7XG5cbiAgICBjb25zdCByb3VuZHMgPSB0aGlzLmJyYWNrZXRSb3VuZHMubWFwKChyKSA9PiByLm1hdGNoZXMpO1xuICAgIGNvbnN0IGZsYXRNYXRjaGVzOiBCcmFja2V0TWF0Y2hbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCByb3VuZCBvZiByb3VuZHMpIHtcbiAgICAgIGZvciAoY29uc3QgbWF0Y2ggb2Ygcm91bmQpIHtcbiAgICAgICAgZmxhdE1hdGNoZXMucHVzaChtYXRjaCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fYnJhY2tldE1hdGNoZXMgPSBmbGF0TWF0Y2hlcztcbiAgfVxuXG4gIGdldFJvdW5kQnlJZChyb3VuZElkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5icmFja2V0Um91bmRzLmZpbmQoKHIpID0+IHIuZGF0YS5pZCA9PT0gcm91bmRJZCk7XG4gIH1cblxuICBnZXRNYXRjaEJ5SWQobWF0Y2hJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX2JyYWNrZXRNYXRjaGVzLmZpbmQoKG0pID0+IG0uZGF0YS5pZCA9PT0gbWF0Y2hJZCk7XG4gIH1cblxuICBwcml2YXRlIF9jb21wdXRlQnJhY2tldChkYXRhOiBSb3VuZFN0YWdlU3RydWN0dXJlV2l0aE1hdGNoZXNWaWV3W10pIHtcbiAgICBjb25zdCByb3VuZHM6IEJyYWNrZXRSb3VuZFtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IFtpbmRleCwgcm91bmRdIG9mIGRhdGEuZW50cmllcygpKSB7XG4gICAgICBsZXQgcmVsYXRpdmVJbmRleCA9IGluZGV4O1xuXG4gICAgICBpZiAoaW5kZXggPT09IHRoaXMuaW5kZXhPZkxvb3NlclJvdW5kU3RhcnQgfHwgaW5kZXggPiB0aGlzLmluZGV4T2ZMb29zZXJSb3VuZFN0YXJ0KSB7XG4gICAgICAgIHJlbGF0aXZlSW5kZXggPSBpbmRleCAtIHRoaXMuaW5kZXhPZkxvb3NlclJvdW5kU3RhcnQ7XG4gICAgICB9XG5cbiAgICAgIGxldCBwcmV2aW91c1JvdW5kOiBSb3VuZFN0YWdlU3RydWN0dXJlV2l0aE1hdGNoZXNWaWV3IHwgbnVsbCA9IGRhdGFbaW5kZXggLSAxXSA/PyBudWxsO1xuICAgICAgY29uc3QgbmV4dFJvdW5kOiBSb3VuZFN0YWdlU3RydWN0dXJlV2l0aE1hdGNoZXNWaWV3IHwgbnVsbCA9IGRhdGFbaW5kZXggKyAxXSA/PyBudWxsO1xuXG4gICAgICAvLyBTd2l0Y2hpbmcgdG8gbG9zZXIgYnJhY2tldCBzaG91bGQgcmVzZXQgdGhlIHByZXZpb3VzUm91bmQuXG4gICAgICBpZiAobm9ybWFsaXplUm91bmRUeXBlKHByZXZpb3VzUm91bmQ/LnJvdW5kLnR5cGUpICE9PSBub3JtYWxpemVSb3VuZFR5cGUocm91bmQucm91bmQudHlwZSkpIHtcbiAgICAgICAgcHJldmlvdXNSb3VuZCA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJvdW5kcy5wdXNoKHRoaXMuX3RyYW5zZm9ybVJvdW5kKHJvdW5kLCByZWxhdGl2ZUluZGV4LCBwcmV2aW91c1JvdW5kLCBuZXh0Um91bmQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm91bmRzO1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJhbnNmb3JtUm91bmQgPSAoXG4gICAgY3VycmVudFJvdW5kOiBSb3VuZFN0YWdlU3RydWN0dXJlV2l0aE1hdGNoZXNWaWV3LFxuICAgIGN1cnJlbnRSb3VuZEluZGV4OiBudW1iZXIsXG4gICAgcHJldmlvdXNSb3VuZDogUm91bmRTdGFnZVN0cnVjdHVyZVdpdGhNYXRjaGVzVmlldyB8IG51bGwsXG4gICAgbmV4dFJvdW5kOiBSb3VuZFN0YWdlU3RydWN0dXJlV2l0aE1hdGNoZXNWaWV3IHwgbnVsbCxcbiAgKTogQnJhY2tldFJvdW5kID0+IHtcbiAgICBjb25zdCBtYXRjaENvdW50ID0gY3VycmVudFJvdW5kLm1hdGNoZXMubGVuZ3RoO1xuICAgIGNvbnN0IG5hbWUgPSBjdXJyZW50Um91bmQucm91bmQubmFtZTtcbiAgICBjb25zdCBpc1dpbm5lckJyYWNrZXQgPSBpc1VwcGVyQnJhY2tldE1hdGNoKGN1cnJlbnRSb3VuZCk7XG4gICAgY29uc3QgaXNEb3VibGVFbGltaW5hdGlvbiA9IHRoaXMuYnJhY2tldFR5cGUgPT09ICdkb3VibGUnO1xuXG4gICAgbGV0IGNvbFN0YXJ0ID0gMDtcbiAgICBsZXQgY29sRW5kID0gMDtcblxuICAgIGxldCByb3dTdGFydCA9IGlzV2lubmVyQnJhY2tldCA/IHRoaXMud2lubmVyUm93U3RhcnQgOiB0aGlzLmxvc2VyUm93U3RhcnQ7XG4gICAgbGV0IHJvd0VuZCA9IGlzV2lubmVyQnJhY2tldCA/IHRoaXMud2lubmVyUm93RW5kIDogdGhpcy5sb3NlclJvd0VuZDtcbiAgICBsZXQgZmlyc3RSb3VuZE1hdGNoQ291bnQgPSBpc1dpbm5lckJyYWNrZXRcbiAgICAgID8gdGhpcy5maXJzdFdpbm5lclJvdW5kPy5tYXRjaGVzLmxlbmd0aFxuICAgICAgOiB0aGlzLmZpcnN0TG9zZXJSb3VuZD8ubWF0Y2hlcy5sZW5ndGg7XG5cbiAgICBpZiAoaXNEb3VibGVFbGltaW5hdGlvbikge1xuICAgICAgaWYgKGlzV2lubmVyQnJhY2tldCkge1xuICAgICAgICBpZiAoY3VycmVudFJvdW5kSW5kZXggPT09IDApIHtcbiAgICAgICAgICAvLyBUaGUgZmlyc3Qgd2lubmVyIGJyYWNrZXQgcm91bmQgaXMgYWx3YXlzIDEgY29sIHdpZGUuXG4gICAgICAgICAgY29sU3RhcnQgPSAxO1xuICAgICAgICAgIGNvbEVuZCA9IDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgY29sU3RhcnREb3VibGUgPSBjdXJyZW50Um91bmRJbmRleCAqIDI7XG4gICAgICAgICAgY29uc3QgY29sRW5kRG91YmxlID0gY29sU3RhcnREb3VibGUgKyAxO1xuICAgICAgICAgIGNvbnN0IGlzU2VtaUZpbmFsUm91bmQgPSBjdXJyZW50Um91bmQucm91bmQudHlwZSA9PT0gJ3dpbm5lcl9icmFja2V0JyAmJiBtYXRjaENvdW50ID09PSAxO1xuXG4gICAgICAgICAgLy8gSWYgdGhlIGNvbCBlbmQgaXMgZ3JlYXRlciB0aGFuIHRoZSB0b3RhbCBsb29zZXIgcm91bmRzLCB0aGVuIHdlIG5lZWQgdG8gc3BhbiAyIGNvbHMsXG4gICAgICAgICAgLy8gc2luY2UgdGhlIGxvc2VyIGJyYWNrZXQgd2lsbCBhbHdheXMgcGxheSAyIHJvdW5kcyBwZXIgd2lubmVyIGJyYWNrZXQgcm91bmQuXG4gICAgICAgICAgLy8gV2UgYWxzbyBuZWVkIHRvIHNwYW4gMiBjb2wgaWYgdGhlIGN1cnJlbnQgcm91bmQgaXMgdGhlIHNlbWkgZmluYWwgcm91bmQgQU5EIHdlIGhhdmUgYW4gYXN5bmMgc3RhcnQuXG4gICAgICAgICAgLy8gQXN5bmMgc3RhcnQgbWVhbnMgdGhhdCB0aGUgZmlyc3Qgd2lubmVyIHJvdW5kJ3MgbWF0Y2hlcyBsZW5ndGggaXMgZXF1YWwgdG8gdGhlIGZpcnN0IGxvc2VyIHJvdW5kJ3MgbWF0Y2hlcyBsZW5ndGguXG4gICAgICAgICAgLy8gVGhpcyBpcyBwcm9kdWNlZCBieSBvbmx5IHNob3dpbmcgYSBwYXJ0IChlZy4gdGhlIGxhc3QgNSByb3VuZHMpIG9mIGEgbXVjaCBiaWdnZXIgYnJhY2tldC5cbiAgICAgICAgICBpZiAoY29sRW5kRG91YmxlIDwgdGhpcy5sb3NlclJvdW5kQ291bnQgfHwgKGlzU2VtaUZpbmFsUm91bmQgJiYgdGhpcy5pc1BhcnRpYWxEb3VibGVFbGltaW5hdGlvbikpIHtcbiAgICAgICAgICAgIGNvbFN0YXJ0ID0gY29sU3RhcnREb3VibGU7XG5cbiAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gYWRkIG9uZSB0byB0aGUgY29sIHRvIGNyZWF0ZSBhIGFjdHVhbCBncmlkIHNwYW5cbiAgICAgICAgICAgIGNvbEVuZCA9IGNvbEVuZERvdWJsZSArIDE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBjb2wgZW5kIGlzIGdyZWF0ZXIgdGhhbiB0aGUgdG90YWwgbG9vc2VyIHJvdW5kcywgdGhlbiB3ZSBuZWVkIHRvIGdvIGJhY2sgdG8gMSBjb2wgd2lkZSxcbiAgICAgICAgICAgIC8vIHNpbmNlIHRoaXMgaXMgdGhlIHBvaW50IHdoZXJlIHNlbWkgZmluYWxzLCBmaW5hbHMgKGFuZCBzZWNvbmQgY2hhbmNlIGZpbmFsKSBhcmUgcGxheWVkXG4gICAgICAgICAgICBjb25zdCBvdmVyc2hvb3QgPSBjb2xFbmREb3VibGUgLSB0aGlzLmxvc2VyUm91bmRDb3VudDtcbiAgICAgICAgICAgIGxldCBkZWx0YSA9IE1hdGguZmxvb3Iob3ZlcnNob290IC8gMik7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzUGFydGlhbERvdWJsZUVsaW1pbmF0aW9uKSB7XG4gICAgICAgICAgICAgIGRlbHRhID0gZGVsdGEgLSAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb2xTdGFydCA9IGNvbFN0YXJ0RG91YmxlIC0gZGVsdGE7XG4gICAgICAgICAgICBjb2xFbmQgPSBjb2xTdGFydERvdWJsZSAtIGRlbHRhO1xuXG4gICAgICAgICAgICAvLyBJZiB0aGUgb3ZlcnNob290IGlzIGJpZ2dlciB0aGFuIDEsIHdlIG5lZWQgdG8gYWRqdXN0IHRoZSByb3cgc3RhcnQgYW5kIGVuZCB0byBzcGFuIG92ZXIgdGhlIHdob2xlIGdyaWQsXG4gICAgICAgICAgICAvLyBzaW5jZSB3ZSBhcmUgaW4gdGhlIGZpbmFsIHJvdW5kKHMpLlxuICAgICAgICAgICAgLy8gT3ZlcnNob290IDEgbWVhbnMgd2UgYXJlIGluIHRoZSBzZW1pIGZpbmFsIHJvdW5kIGFuZCB0aGVyZSBpcyBhIGxvc2VyIGJyYWNrZXQgcm91bmQgaW4gdGhpcyBzdGVwICh0aGUgbGFzdCBvbmUpLlxuICAgICAgICAgICAgaWYgKG92ZXJzaG9vdCA+IDEpIHtcbiAgICAgICAgICAgICAgcm93U3RhcnQgPSAxO1xuICAgICAgICAgICAgICByb3dFbmQgPSB0aGlzLnRvdGFsUm93Q291bnQ7XG4gICAgICAgICAgICAgIGZpcnN0Um91bmRNYXRjaENvdW50ID0gdGhpcy50b3RhbFJvd0NvdW50IC0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY3VycmVudFJvdW5kLnJvdW5kLnR5cGUgPT09ICd0aGlyZF9wbGFjZScpIHtcbiAgICAgICAgY29uc3QgaGFzU2Vjb25kQ2hhbmNlRmluYWwgPSB0aGlzLl9yb3VuZHNXaXRoTWF0Y2hlcy5zb21lKChyKSA9PiByLnJvdW5kLnR5cGUgPT09ICdyZXZlcnNlX2ZpbmFsJyk7XG5cbiAgICAgICAgLy8gU3BhbiB0aGUgdGhpcmQgcGxhY2UgbWF0Y2ggZm9ybSBmaW5hbCB0byBzZWNvbmQgY2hhbmNlIGZpbmFsXG4gICAgICAgIGlmIChoYXNTZWNvbmRDaGFuY2VGaW5hbCkge1xuICAgICAgICAgIGNvbFN0YXJ0ID0gY3VycmVudFJvdW5kSW5kZXggKyAxO1xuICAgICAgICAgIGNvbEVuZCA9IGN1cnJlbnRSb3VuZEluZGV4ICsgMztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBLZWVwIHRoZSB0aGlyZCBwbGFjZSBtYXRjaCBpbiB0aGUgc2FtZSBjb2wgYXMgdGhlIGZpbmFsXG4gICAgICAgICAgY29sU3RhcnQgPSBjdXJyZW50Um91bmRJbmRleCArIDE7XG4gICAgICAgICAgY29sRW5kID0gY3VycmVudFJvdW5kSW5kZXggKyAxO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBMb3NlciBicmFja2V0IHJvdW5kcyBhcmUgYWx3YXlzIDEgY29sIHdpZGUuXG4gICAgICAgIGNvbFN0YXJ0ID0gY3VycmVudFJvdW5kSW5kZXggKyAxO1xuICAgICAgICBjb2xFbmQgPSBjdXJyZW50Um91bmRJbmRleCArIDE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjdXJyZW50Um91bmQucm91bmQudHlwZSA9PT0gJ3RoaXJkX3BsYWNlJykge1xuICAgICAgICAvLyBUaGUgdGhpcmQgcGxhY2UgbWF0Y2ggaXMgYWx3YXlzIGluIHRoZSBzYW1lIGNvbCBhcyB0aGUgZmluYWxcbiAgICAgICAgY29sU3RhcnQgPSBjdXJyZW50Um91bmRJbmRleCAtIDE7XG4gICAgICAgIGNvbEVuZCA9IGN1cnJlbnRSb3VuZEluZGV4IC0gMTtcblxuICAgICAgICBpZiAodGhpcy53aW5uZXJSb3dFbmQgLSAxID09PSAyKSB7XG4gICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciAyIG1hdGNoIGJyYWNrZXRzXG4gICAgICAgICAgcm93U3RhcnQgPSAyO1xuICAgICAgICAgIHJvd0VuZCA9IDI7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy53aW5uZXJSb3dFbmQgLSAxID09PSA0KSB7XG4gICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciA0IG1hdGNoIGJyYWNrZXRzXG4gICAgICAgICAgcm93U3RhcnQgPSAzO1xuICAgICAgICAgIHJvd0VuZCA9IDM7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy53aW5uZXJSb3dFbmQgLSAxID4gNCkge1xuICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgOCsgbWF0Y2ggYnJhY2tldHMuIFRoaXMgd2lsbCByZXN1bHQgaW4gaXQgYmVpbmcgaW4gdGhlIHNhbWUgcm93IGFzIHRoZSBzZWNvbmQgc2VtaSBmaW5hbCBtYXRjaC5cbiAgICAgICAgICByb3dTdGFydCA9ICh0aGlzLndpbm5lclJvd0VuZCAtIDEpIC8gMiArICh0aGlzLndpbm5lclJvd0VuZCAtIDEpIC8gMiAvIDI7XG4gICAgICAgICAgcm93RW5kID0gdGhpcy53aW5uZXJSb3dFbmQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFsbCBvdGhlciBzaW5nbGUgZWxpbWluYXRpb24gcm91bmRzIGFyZSBhbHdheXMgMSBjb2wgd2lkZS5cbiAgICAgICAgY29sU3RhcnQgPSBjdXJyZW50Um91bmRJbmRleDtcbiAgICAgICAgY29sRW5kID0gY3VycmVudFJvdW5kSW5kZXg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2hlcyA9IGN1cnJlbnRSb3VuZC5tYXRjaGVzLm1hcCgobWF0Y2gsIG1hdGNoSW5kZXgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1NYXRjaChcbiAgICAgICAgbWF0Y2gsXG4gICAgICAgIG1hdGNoSW5kZXgsXG4gICAgICAgIHJvd1N0YXJ0LFxuICAgICAgICBtYXRjaENvdW50LFxuICAgICAgICBmaXJzdFJvdW5kTWF0Y2hDb3VudCA/PyAwLFxuICAgICAgICBwcmV2aW91c1JvdW5kLFxuICAgICAgICBuZXh0Um91bmQsXG4gICAgICAgIGN1cnJlbnRSb3VuZCxcbiAgICAgICAgY3VycmVudFJvdW5kSW5kZXgsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG1hdGNoQ291bnQsXG4gICAgICBuYW1lLFxuICAgICAgbWF0Y2hlcyxcbiAgICAgIGRhdGE6IGN1cnJlbnRSb3VuZC5yb3VuZCxcblxuICAgICAgcm93OiB7XG4gICAgICAgIHN0YXJ0OiByb3dTdGFydCxcbiAgICAgICAgZW5kOiByb3dFbmQsXG4gICAgICB9LFxuICAgICAgY29sdW1uOiB7XG4gICAgICAgIHN0YXJ0OiBjb2xTdGFydCxcbiAgICAgICAgZW5kOiBjb2xFbmQsXG4gICAgICB9LFxuICAgIH07XG4gIH07XG5cbiAgcHJpdmF0ZSBfdHJhbnNmb3JtTWF0Y2ggPSAoXG4gICAgbWF0Y2g6IE1hdGNoTGlzdFZpZXcsXG4gICAgbWF0Y2hJbmRleDogbnVtYmVyLFxuICAgIHJvdW5kUm93U3RhcnQ6IG51bWJlcixcbiAgICBtYXRjaENvdW50OiBudW1iZXIsXG4gICAgZmlyc3RSb3VuZE1hdGNoQ291bnQ6IG51bWJlcixcbiAgICBwcmV2aW91c1JvdW5kOiBSb3VuZFN0YWdlU3RydWN0dXJlV2l0aE1hdGNoZXNWaWV3IHwgbnVsbCxcbiAgICBuZXh0Um91bmQ6IFJvdW5kU3RhZ2VTdHJ1Y3R1cmVXaXRoTWF0Y2hlc1ZpZXcgfCBudWxsLFxuICAgIGN1cnJlbnRSb3VuZDogUm91bmRTdGFnZVN0cnVjdHVyZVdpdGhNYXRjaGVzVmlldyB8IG51bGwsXG4gICAgY3VycmVudFJvdW5kSW5kZXg6IG51bWJlcixcbiAgKTogQnJhY2tldE1hdGNoID0+IHtcbiAgICBjb25zdCBkaWZmID0gZmlyc3RSb3VuZE1hdGNoQ291bnQgLyBtYXRjaENvdW50O1xuXG4gICAgbGV0IHJvd1N0YXJ0ID0gcm91bmRSb3dTdGFydCArIG1hdGNoSW5kZXggKiBkaWZmO1xuICAgIGxldCByb3dFbmQgPSByb3dTdGFydCArIGRpZmY7XG5cbiAgICBpZiAoY3VycmVudFJvdW5kPy5yb3VuZC50eXBlID09PSAndGhpcmRfcGxhY2UnICYmIHRoaXMuYnJhY2tldFR5cGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIDgrIHNpbmdsZSBlbGltaW5hdGlvbiBicmFja2V0cy4gVGhpcyB3aWxsIHJlc3VsdCBpbiB0aGUgY3VycmVudCBtYXRjaCBiZWluZyBpbiB0aGUgc2FtZSByb3cgYXMgdGhlIHNlY29uZCBzZW1pIGZpbmFsIG1hdGNoLlxuICAgICAgaWYgKHRoaXMud2lubmVyUm93RW5kIC0gMSA+IDQpIHtcbiAgICAgICAgcm93U3RhcnQgPSAodGhpcy53aW5uZXJSb3dFbmQgLSAxKSAvIDI7XG4gICAgICAgIHJvd0VuZCA9IHRoaXMud2lubmVyUm93RW5kIC0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcm91bmRzU2FtZVNpemUgPSBwcmV2aW91c1JvdW5kPy5tYXRjaGVzLmxlbmd0aCA9PT0gbWF0Y2hDb3VudDtcbiAgICBsZXQgbG9naWNhbE5leHRSb3VuZDogUm91bmRTdGFnZVN0cnVjdHVyZVdpdGhNYXRjaGVzVmlldyB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKFxuICAgICAgKGN1cnJlbnRSb3VuZD8ucm91bmQudHlwZSA9PT0gJ2xvc2VyX2JyYWNrZXQnICYmICFuZXh0Um91bmQpIHx8XG4gICAgICAoY3VycmVudFJvdW5kPy5yb3VuZC50eXBlID09PSAnbG9zZXJfYnJhY2tldCcgJiYgbmV4dFJvdW5kPy5yb3VuZC50eXBlID09PSAndGhpcmRfcGxhY2UnKVxuICAgICkge1xuICAgICAgY29uc3QgbmV4dCA9IHRoaXMuX3JvdW5kc1dpdGhNYXRjaGVzW2N1cnJlbnRSb3VuZEluZGV4IC0gdGhpcy5sb29zZXJSb3dBZGRpdGlvbmFsUm91bmRDb3VudCArIDFdO1xuXG4gICAgICBpZiAobmV4dCkge1xuICAgICAgICAvLyBUcmFuc2l0aW9uIGZyb20gbGFzdCByb3VuZCBvZiBsb29zZXIgYnJhY2tldCB0byBzZW1pIGZpbmFsIHJvdW5kIG9mIHdpbm5lciBicmFja2V0XG4gICAgICAgIGxvZ2ljYWxOZXh0Um91bmQgPSBuZXh0O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICAoKGN1cnJlbnRSb3VuZCAmJiBpc1VwcGVyQnJhY2tldE1hdGNoKGN1cnJlbnRSb3VuZCkpIHx8ICFjdXJyZW50Um91bmQ/LnJvdW5kLnR5cGUpICYmXG4gICAgICBuZXh0Um91bmQ/LnJvdW5kLnR5cGUgPT09ICdsb3Nlcl9icmFja2V0J1xuICAgICkge1xuICAgICAgLy8gVGhlIGxhc3Qgd2lubmVyIHJvdW5kIChmaW5hbCkgZG9lcyBub3QgaGF2ZSBhIG5leHQgcm91bmQsIGJ1dCB0aGUgbmV4dCByb3VuZCBpcyB0aGUgZmlyc3QgbG9vc2VyIHJvdW5kLlxuICAgICAgbG9naWNhbE5leHRSb3VuZCA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ2ljYWxOZXh0Um91bmQgPSBuZXh0Um91bmQ7XG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNNYXRjaEEgPVxuICAgICAgKHJvdW5kc1NhbWVTaXplID8gcHJldmlvdXNSb3VuZD8ubWF0Y2hlc1ttYXRjaEluZGV4XT8uaWQgOiBwcmV2aW91c1JvdW5kPy5tYXRjaGVzW21hdGNoSW5kZXggKiAyXT8uaWQpID8/IG51bGw7XG4gICAgbGV0IHByZXZpb3VzTWF0Y2hCID0gcHJldmlvdXNSb3VuZD8ubWF0Y2hlc1ttYXRjaEluZGV4ICogMiArIDFdPy5pZCA/PyBudWxsO1xuXG4gICAgLy8gcHJldmlvdXNNYXRjaEIgY291bGQgYmUgdGhlIGxhc3QgbG9zZXIgYnJhY2tldCBtYXRjaFxuICAgIGlmICghcHJldmlvdXNNYXRjaEIgJiYgY3VycmVudFJvdW5kICYmIGlzVXBwZXJCcmFja2V0TWF0Y2goY3VycmVudFJvdW5kKSkge1xuICAgICAgY29uc3QgbWF0Y2hCID0gdGhpcy5sb3NlclJvdW5kc1tjdXJyZW50Um91bmRJbmRleCArIHRoaXMubG9vc2VyUm93QWRkaXRpb25hbFJvdW5kQ291bnQgLSAxXT8ubWF0Y2hlc1swXTtcblxuICAgICAgaWYgKHRoaXMubG9zZXJSb3VuZHMubGVuZ3RoID09PSBjdXJyZW50Um91bmRJbmRleCArIHRoaXMubG9vc2VyUm93QWRkaXRpb25hbFJvdW5kQ291bnQgJiYgbWF0Y2hCKSB7XG4gICAgICAgIHByZXZpb3VzTWF0Y2hCID0gbWF0Y2hCLmlkO1xuICAgICAgICByb3VuZHNTYW1lU2l6ZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5leHRNYXRjaCA9IGxvZ2ljYWxOZXh0Um91bmQ/Lm1hdGNoZXNbTWF0aC5mbG9vcihtYXRjaEluZGV4IC8gMildPy5pZCA/PyBudWxsO1xuXG4gICAgbGV0IHByZXZpb3VzUm91bmRNYXRjaGVzID0gbnVsbDtcblxuICAgIGlmIChwcmV2aW91c1JvdW5kKSB7XG4gICAgICBpZiAocm91bmRzU2FtZVNpemUgJiYgcHJldmlvdXNNYXRjaEEpIHtcbiAgICAgICAgLy8gMSBtYXRjaCB0byAxIG1hdGNoXG4gICAgICAgIHByZXZpb3VzUm91bmRNYXRjaGVzID0ge1xuICAgICAgICAgIHJvdW5kSWQ6IHByZXZpb3VzUm91bmQucm91bmQuaWQsXG4gICAgICAgICAgbWF0Y2hJZHM6IFtwcmV2aW91c01hdGNoQV0sXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKHByZXZpb3VzTWF0Y2hBICYmIHByZXZpb3VzTWF0Y2hCKSB7XG4gICAgICAgIC8vIDIgbWF0Y2hlcyB0byAxIG1hdGNoXG4gICAgICAgIHByZXZpb3VzUm91bmRNYXRjaGVzID0ge1xuICAgICAgICAgIHJvdW5kSWQ6IHByZXZpb3VzUm91bmQucm91bmQuaWQsXG4gICAgICAgICAgbWF0Y2hJZHM6IFtwcmV2aW91c01hdGNoQSwgcHJldmlvdXNNYXRjaEJdLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5leHRSb3VuZE1hdGNoID1cbiAgICAgIG5leHRNYXRjaCAmJiBsb2dpY2FsTmV4dFJvdW5kXG4gICAgICAgID8ge1xuICAgICAgICAgICAgcm91bmRJZDogbG9naWNhbE5leHRSb3VuZC5yb3VuZC5pZCxcbiAgICAgICAgICAgIG1hdGNoSWQ6IG5leHRNYXRjaCxcbiAgICAgICAgICB9XG4gICAgICAgIDogbnVsbDtcblxuICAgIHJldHVybiB7XG4gICAgICByb3c6IHtcbiAgICAgICAgc3RhcnQ6IHJvd1N0YXJ0LFxuICAgICAgICBlbmQ6IHJvd0VuZCxcbiAgICAgIH0sXG4gICAgICBkYXRhOiBtYXRjaCxcblxuICAgICAgcHJldmlvdXNNYXRjaGVzOiBjdXJyZW50Um91bmQ/LnJvdW5kLnR5cGUgIT09ICd0aGlyZF9wbGFjZScgPyBwcmV2aW91c1JvdW5kTWF0Y2hlcyA6IG51bGwsXG4gICAgICBuZXh0TWF0Y2g6IGN1cnJlbnRSb3VuZD8ucm91bmQudHlwZSAhPT0gJ3RoaXJkX3BsYWNlJyA/IG5leHRSb3VuZE1hdGNoIDogbnVsbCxcbiAgICB9O1xuICB9O1xufVxuIl19