igniteui-angular 16.0.0-beta.2 → 16.0.0-beta.3

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 (348) hide show
  1. package/esm2022/lib/accordion/accordion.component.mjs +4 -4
  2. package/esm2022/lib/accordion/accordion.module.mjs +5 -5
  3. package/esm2022/lib/action-strip/action-strip.component.mjs +7 -7
  4. package/esm2022/lib/action-strip/action-strip.module.mjs +5 -5
  5. package/esm2022/lib/action-strip/grid-actions/grid-action-button.component.mjs +4 -4
  6. package/esm2022/lib/action-strip/grid-actions/grid-actions-base.directive.mjs +4 -4
  7. package/esm2022/lib/action-strip/grid-actions/grid-editing-actions.component.mjs +4 -4
  8. package/esm2022/lib/action-strip/grid-actions/grid-pinning-actions.component.mjs +4 -4
  9. package/esm2022/lib/avatar/avatar.component.mjs +4 -4
  10. package/esm2022/lib/avatar/avatar.module.mjs +5 -5
  11. package/esm2022/lib/badge/badge.component.mjs +4 -4
  12. package/esm2022/lib/badge/badge.module.mjs +5 -5
  13. package/esm2022/lib/banner/banner.component.mjs +4 -4
  14. package/esm2022/lib/banner/banner.directives.mjs +4 -4
  15. package/esm2022/lib/banner/banner.module.mjs +5 -5
  16. package/esm2022/lib/buttonGroup/buttonGroup.component.mjs +4 -4
  17. package/esm2022/lib/buttonGroup/buttongroup.module.mjs +5 -5
  18. package/esm2022/lib/calendar/calendar-base.mjs +4 -4
  19. package/esm2022/lib/calendar/calendar.component.mjs +4 -4
  20. package/esm2022/lib/calendar/calendar.directives.mjs +16 -16
  21. package/esm2022/lib/calendar/calendar.module.mjs +5 -5
  22. package/esm2022/lib/calendar/days-view/day-item.component.mjs +4 -4
  23. package/esm2022/lib/calendar/days-view/days-view.component.mjs +4 -4
  24. package/esm2022/lib/calendar/days-view/daysview-navigation.service.mjs +4 -4
  25. package/esm2022/lib/calendar/month-picker/month-picker-base.mjs +4 -4
  26. package/esm2022/lib/calendar/month-picker/month-picker.component.mjs +4 -4
  27. package/esm2022/lib/calendar/months-view/months-view.component.mjs +4 -4
  28. package/esm2022/lib/calendar/months-view.pipe.mjs +7 -7
  29. package/esm2022/lib/calendar/years-view/years-view.component.mjs +7 -7
  30. package/esm2022/lib/card/card.component.mjs +28 -28
  31. package/esm2022/lib/card/card.module.mjs +5 -5
  32. package/esm2022/lib/carousel/carousel.component.mjs +7 -7
  33. package/esm2022/lib/carousel/carousel.directives.mjs +10 -10
  34. package/esm2022/lib/carousel/carousel.module.mjs +5 -5
  35. package/esm2022/lib/carousel/slide.component.mjs +4 -4
  36. package/esm2022/lib/checkbox/checkbox.component.mjs +4 -4
  37. package/esm2022/lib/checkbox/checkbox.module.mjs +5 -5
  38. package/esm2022/lib/chips/chip.component.mjs +4 -4
  39. package/esm2022/lib/chips/chips-area.component.mjs +4 -4
  40. package/esm2022/lib/chips/chips.module.mjs +5 -5
  41. package/esm2022/lib/combo/combo-add-item.component.mjs +4 -4
  42. package/esm2022/lib/combo/combo-dropdown.component.mjs +4 -4
  43. package/esm2022/lib/combo/combo-item.component.mjs +4 -4
  44. package/esm2022/lib/combo/combo.api.mjs +4 -4
  45. package/esm2022/lib/combo/combo.common.mjs +4 -4
  46. package/esm2022/lib/combo/combo.component.mjs +4 -4
  47. package/esm2022/lib/combo/combo.directives.mjs +25 -25
  48. package/esm2022/lib/combo/combo.module.mjs +5 -5
  49. package/esm2022/lib/combo/combo.pipes.mjs +7 -7
  50. package/esm2022/lib/core/density.mjs +4 -4
  51. package/esm2022/lib/core/navigation/directives.mjs +7 -7
  52. package/esm2022/lib/core/navigation/nav.service.mjs +4 -4
  53. package/esm2022/lib/core/selection.mjs +4 -4
  54. package/esm2022/lib/core/touch.mjs +4 -4
  55. package/esm2022/lib/core/utils.mjs +4 -4
  56. package/esm2022/lib/date-common/calendar-container/calendar-container.component.mjs +4 -4
  57. package/esm2022/lib/date-common/picker-base.directive.mjs +4 -4
  58. package/esm2022/lib/date-common/picker-icons.common.mjs +10 -10
  59. package/esm2022/lib/date-picker/date-picker.component.mjs +4 -4
  60. package/esm2022/lib/date-picker/date-picker.module.mjs +5 -5
  61. package/esm2022/lib/date-range-picker/date-range-picker-inputs.common.mjs +16 -16
  62. package/esm2022/lib/date-range-picker/date-range-picker.component.mjs +4 -4
  63. package/esm2022/lib/date-range-picker/date-range-picker.module.mjs +5 -5
  64. package/esm2022/lib/dialog/dialog.component.mjs +4 -4
  65. package/esm2022/lib/dialog/dialog.directives.mjs +7 -7
  66. package/esm2022/lib/dialog/dialog.module.mjs +5 -5
  67. package/esm2022/lib/directives/autocomplete/autocomplete.directive.mjs +4 -4
  68. package/esm2022/lib/directives/autocomplete/autocomplete.module.mjs +5 -5
  69. package/esm2022/lib/directives/button/button.directive.mjs +4 -4
  70. package/esm2022/lib/directives/button/button.module.mjs +5 -5
  71. package/esm2022/lib/directives/date-time-editor/date-time-editor.directive.mjs +4 -4
  72. package/esm2022/lib/directives/date-time-editor/date-time-editor.module.mjs +5 -5
  73. package/esm2022/lib/directives/divider/divider.directive.mjs +4 -4
  74. package/esm2022/lib/directives/divider/divider.module.mjs +5 -5
  75. package/esm2022/lib/directives/drag-drop/drag-drop.directive.mjs +13 -13
  76. package/esm2022/lib/directives/drag-drop/drag-drop.module.mjs +5 -5
  77. package/esm2022/lib/directives/filter/filter.directive.mjs +7 -7
  78. package/esm2022/lib/directives/filter/filter.module.mjs +5 -5
  79. package/esm2022/lib/directives/focus/focus.directive.mjs +4 -4
  80. package/esm2022/lib/directives/focus/focus.module.mjs +5 -5
  81. package/esm2022/lib/directives/focus-trap/focus-trap.directive.mjs +4 -4
  82. package/esm2022/lib/directives/focus-trap/focus-trap.module.mjs +5 -5
  83. package/esm2022/lib/directives/for-of/base.helper.component.mjs +4 -4
  84. package/esm2022/lib/directives/for-of/display.container.mjs +4 -4
  85. package/esm2022/lib/directives/for-of/for_of.directive.mjs +7 -7
  86. package/esm2022/lib/directives/for-of/for_of.module.mjs +5 -5
  87. package/esm2022/lib/directives/for-of/for_of.sync.service.mjs +7 -7
  88. package/esm2022/lib/directives/for-of/horizontal.virtual.helper.component.mjs +4 -4
  89. package/esm2022/lib/directives/for-of/virtual.helper.component.mjs +4 -4
  90. package/esm2022/lib/directives/form-control/form-control.directive.mjs +4 -4
  91. package/esm2022/lib/directives/form-control/form-control.module.mjs +5 -5
  92. package/esm2022/lib/directives/hint/hint.directive.mjs +4 -4
  93. package/esm2022/lib/directives/input/input.directive.mjs +4 -4
  94. package/esm2022/lib/directives/label/label.directive.mjs +4 -4
  95. package/esm2022/lib/directives/layout/layout.directive.mjs +7 -7
  96. package/esm2022/lib/directives/layout/layout.module.mjs +5 -5
  97. package/esm2022/lib/directives/mask/mask-parsing.service.mjs +4 -4
  98. package/esm2022/lib/directives/mask/mask.directive.mjs +4 -4
  99. package/esm2022/lib/directives/mask/mask.module.mjs +5 -5
  100. package/esm2022/lib/directives/notification/notifications.directive.mjs +4 -4
  101. package/esm2022/lib/directives/prefix/prefix.directive.mjs +4 -4
  102. package/esm2022/lib/directives/radio/radio-group.directive.mjs +4 -4
  103. package/esm2022/lib/directives/radio/radio-group.module.mjs +5 -5
  104. package/esm2022/lib/directives/ripple/ripple.directive.mjs +4 -4
  105. package/esm2022/lib/directives/ripple/ripple.module.mjs +5 -5
  106. package/esm2022/lib/directives/scroll-inertia/scroll_inertia.directive.mjs +4 -4
  107. package/esm2022/lib/directives/scroll-inertia/scroll_inertia.module.mjs +5 -5
  108. package/esm2022/lib/directives/suffix/suffix.directive.mjs +4 -4
  109. package/esm2022/lib/directives/template-outlet/template_outlet.directive.mjs +4 -4
  110. package/esm2022/lib/directives/text-highlight/text-highlight.directive.mjs +4 -4
  111. package/esm2022/lib/directives/text-highlight/text-highlight.module.mjs +5 -5
  112. package/esm2022/lib/directives/text-selection/text-selection.directive.mjs +4 -4
  113. package/esm2022/lib/directives/text-selection/text-selection.module.mjs +5 -5
  114. package/esm2022/lib/directives/toggle/toggle.directive.mjs +10 -10
  115. package/esm2022/lib/directives/toggle/toggle.module.mjs +5 -5
  116. package/esm2022/lib/directives/tooltip/tooltip-target.directive.mjs +4 -4
  117. package/esm2022/lib/directives/tooltip/tooltip.component.mjs +4 -4
  118. package/esm2022/lib/directives/tooltip/tooltip.directive.mjs +4 -4
  119. package/esm2022/lib/directives/tooltip/tooltip.module.mjs +5 -5
  120. package/esm2022/lib/drop-down/drop-down-group.component.mjs +4 -4
  121. package/esm2022/lib/drop-down/drop-down-item.base.mjs +4 -4
  122. package/esm2022/lib/drop-down/drop-down-item.component.mjs +4 -4
  123. package/esm2022/lib/drop-down/drop-down-navigation.directive.mjs +4 -4
  124. package/esm2022/lib/drop-down/drop-down.base.mjs +4 -4
  125. package/esm2022/lib/drop-down/drop-down.component.mjs +4 -4
  126. package/esm2022/lib/drop-down/drop-down.module.mjs +5 -5
  127. package/esm2022/lib/expansion-panel/expansion-panel-body.component.mjs +4 -4
  128. package/esm2022/lib/expansion-panel/expansion-panel-header.component.mjs +4 -4
  129. package/esm2022/lib/expansion-panel/expansion-panel.common.mjs +4 -4
  130. package/esm2022/lib/expansion-panel/expansion-panel.component.mjs +4 -4
  131. package/esm2022/lib/expansion-panel/expansion-panel.directives.mjs +10 -10
  132. package/esm2022/lib/expansion-panel/expansion-panel.module.mjs +5 -5
  133. package/esm2022/lib/expansion-panel/toggle-animation-component.mjs +4 -4
  134. package/esm2022/lib/grids/api.service.mjs +4 -4
  135. package/esm2022/lib/grids/cell.component.mjs +4 -4
  136. package/esm2022/lib/grids/column-actions/column-actions-base.directive.mjs +4 -4
  137. package/esm2022/lib/grids/column-actions/column-actions.component.mjs +13 -13
  138. package/esm2022/lib/grids/column-actions/column-hiding.directive.mjs +4 -4
  139. package/esm2022/lib/grids/column-actions/column-pinning.directive.mjs +4 -4
  140. package/esm2022/lib/grids/column-actions/public_api.mjs +13 -0
  141. package/esm2022/lib/grids/columns/column-group.component.mjs +4 -4
  142. package/esm2022/lib/grids/columns/column-layout.component.mjs +4 -4
  143. package/esm2022/lib/grids/columns/column.component.mjs +4 -4
  144. package/esm2022/lib/grids/columns/templates.directive.mjs +25 -25
  145. package/esm2022/lib/grids/columns/validators.directive.mjs +22 -22
  146. package/esm2022/lib/grids/common/crud.service.mjs +4 -4
  147. package/esm2022/lib/grids/common/pipes.mjs +55 -55
  148. package/esm2022/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.mjs +4 -4
  149. package/esm2022/lib/grids/filtering/base/grid-filtering-cell.component.mjs +4 -4
  150. package/esm2022/lib/grids/filtering/base/grid-filtering-row.component.mjs +4 -4
  151. package/esm2022/lib/grids/filtering/excel-style/base-filtering.component.mjs +4 -4
  152. package/esm2022/lib/grids/filtering/excel-style/excel-style-clear-filters.component.mjs +4 -4
  153. package/esm2022/lib/grids/filtering/excel-style/excel-style-conditional-filter.component.mjs +4 -4
  154. package/esm2022/lib/grids/filtering/excel-style/excel-style-custom-dialog.component.mjs +4 -4
  155. package/esm2022/lib/grids/filtering/excel-style/excel-style-date-expression.component.mjs +4 -4
  156. package/esm2022/lib/grids/filtering/excel-style/excel-style-default-expression.component.mjs +4 -4
  157. package/esm2022/lib/grids/filtering/excel-style/excel-style-filtering.component.mjs +10 -10
  158. package/esm2022/lib/grids/filtering/excel-style/excel-style-header.component.mjs +4 -4
  159. package/esm2022/lib/grids/filtering/excel-style/excel-style-hiding.component.mjs +4 -4
  160. package/esm2022/lib/grids/filtering/excel-style/excel-style-moving.component.mjs +4 -4
  161. package/esm2022/lib/grids/filtering/excel-style/excel-style-pinning.component.mjs +4 -4
  162. package/esm2022/lib/grids/filtering/excel-style/excel-style-search.component.mjs +7 -7
  163. package/esm2022/lib/grids/filtering/excel-style/excel-style-selecting.component.mjs +4 -4
  164. package/esm2022/lib/grids/filtering/excel-style/excel-style-sorting.component.mjs +4 -4
  165. package/esm2022/lib/grids/filtering/grid-filtering.service.mjs +4 -4
  166. package/esm2022/lib/grids/grid/expandable-cell.component.mjs +4 -4
  167. package/esm2022/lib/grids/grid/grid-api.service.mjs +4 -4
  168. package/esm2022/lib/grids/grid/grid-row.component.mjs +4 -4
  169. package/esm2022/lib/grids/grid/grid-validation.service.mjs +4 -4
  170. package/esm2022/lib/grids/grid/grid.component.mjs +4 -4
  171. package/esm2022/lib/grids/grid/grid.details.pipe.mjs +4 -4
  172. package/esm2022/lib/grids/grid/grid.directives.mjs +34 -34
  173. package/esm2022/lib/grids/grid/grid.module.mjs +27 -24
  174. package/esm2022/lib/grids/grid/grid.pipes.mjs +13 -13
  175. package/esm2022/lib/grids/grid/grid.summary.pipe.mjs +4 -4
  176. package/esm2022/lib/grids/grid/groupby-row.component.mjs +4 -4
  177. package/esm2022/lib/grids/grid-base.directive.mjs +4 -4
  178. package/esm2022/lib/grids/grid-footer/grid-footer.component.mjs +4 -4
  179. package/esm2022/lib/grids/grid-mrl-navigation.service.mjs +4 -4
  180. package/esm2022/lib/grids/grid-navigation.service.mjs +4 -4
  181. package/esm2022/lib/grids/grid.common.mjs +4 -4
  182. package/esm2022/lib/grids/grid.rowEdit.directive.mjs +16 -16
  183. package/esm2022/lib/grids/grouping/grid-group-by-area.component.mjs +4 -4
  184. package/esm2022/lib/grids/grouping/group-by-area.directive.mjs +7 -7
  185. package/esm2022/lib/grids/grouping/tree-grid-group-by-area.component.mjs +4 -4
  186. package/esm2022/lib/grids/headers/grid-header-group.component.mjs +4 -4
  187. package/esm2022/lib/grids/headers/grid-header-row.component.mjs +4 -4
  188. package/esm2022/lib/grids/headers/grid-header.component.mjs +4 -4
  189. package/esm2022/lib/grids/headers/pipes.mjs +10 -10
  190. package/esm2022/lib/grids/hierarchical-grid/hierarchical-cell.component.mjs +4 -4
  191. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-api.service.mjs +4 -4
  192. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.mjs +4 -4
  193. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-navigation.service.mjs +4 -4
  194. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +7 -7
  195. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.module.mjs +27 -24
  196. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.pipes.mjs +7 -7
  197. package/esm2022/lib/grids/hierarchical-grid/hierarchical-row.component.mjs +4 -4
  198. package/esm2022/lib/grids/hierarchical-grid/row-island-api.service.mjs +4 -4
  199. package/esm2022/lib/grids/hierarchical-grid/row-island.component.mjs +4 -4
  200. package/esm2022/lib/grids/moving/moving.drag.directive.mjs +4 -4
  201. package/esm2022/lib/grids/moving/moving.drop.directive.mjs +4 -4
  202. package/esm2022/lib/grids/moving/moving.service.mjs +4 -4
  203. package/esm2022/lib/grids/pivot-grid/pivot-data-selector.component.mjs +4 -4
  204. package/esm2022/lib/grids/pivot-grid/pivot-filtering.service.mjs +4 -4
  205. package/esm2022/lib/grids/pivot-grid/pivot-grid-navigation.service.mjs +4 -4
  206. package/esm2022/lib/grids/pivot-grid/pivot-grid.component.mjs +4 -4
  207. package/esm2022/lib/grids/pivot-grid/pivot-grid.directives.mjs +4 -4
  208. package/esm2022/lib/grids/pivot-grid/pivot-grid.module.mjs +27 -24
  209. package/esm2022/lib/grids/pivot-grid/pivot-grid.pipes.mjs +31 -31
  210. package/esm2022/lib/grids/pivot-grid/pivot-header-row.component.mjs +4 -4
  211. package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-content.component.mjs +4 -4
  212. package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-header-group.component.mjs +4 -4
  213. package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-header.component.mjs +4 -4
  214. package/esm2022/lib/grids/pivot-grid/pivot-row.component.mjs +4 -4
  215. package/esm2022/lib/grids/public_api.mjs +5 -2
  216. package/esm2022/lib/grids/resizing/pivot-grid/pivot-resize-handle.directive.mjs +4 -4
  217. package/esm2022/lib/grids/resizing/pivot-grid/pivot-resizer.component.mjs +4 -4
  218. package/esm2022/lib/grids/resizing/pivot-grid/pivot-resizing.service.mjs +4 -4
  219. package/esm2022/lib/grids/resizing/resize-handle.directive.mjs +4 -4
  220. package/esm2022/lib/grids/resizing/resizer.component.mjs +4 -4
  221. package/esm2022/lib/grids/resizing/resizer.directive.mjs +4 -4
  222. package/esm2022/lib/grids/resizing/resizing.service.mjs +4 -4
  223. package/esm2022/lib/grids/row-drag.directive.mjs +10 -10
  224. package/esm2022/lib/grids/row.directive.mjs +4 -4
  225. package/esm2022/lib/grids/selection/drag-select.directive.mjs +4 -4
  226. package/esm2022/lib/grids/selection/row-selectors.mjs +10 -10
  227. package/esm2022/lib/grids/selection/selection.service.mjs +4 -4
  228. package/esm2022/lib/grids/state.directive.mjs +4 -4
  229. package/esm2022/lib/grids/summaries/grid-root-summary.pipe.mjs +4 -4
  230. package/esm2022/lib/grids/summaries/grid-summary.service.mjs +4 -4
  231. package/esm2022/lib/grids/summaries/summary-cell.component.mjs +4 -4
  232. package/esm2022/lib/grids/summaries/summary-row.component.mjs +4 -4
  233. package/esm2022/lib/grids/toolbar/common.mjs +16 -16
  234. package/esm2022/lib/grids/toolbar/grid-toolbar-advanced-filtering.component.mjs +4 -4
  235. package/esm2022/lib/grids/toolbar/grid-toolbar-exporter.component.mjs +4 -4
  236. package/esm2022/lib/grids/toolbar/grid-toolbar-hiding.component.mjs +4 -4
  237. package/esm2022/lib/grids/toolbar/grid-toolbar-pinning.component.mjs +4 -4
  238. package/esm2022/lib/grids/toolbar/grid-toolbar.base.mjs +7 -7
  239. package/esm2022/lib/grids/toolbar/grid-toolbar.component.mjs +4 -4
  240. package/esm2022/lib/grids/tree-grid/public_api.mjs +4 -1
  241. package/esm2022/lib/grids/tree-grid/tree-cell.component.mjs +4 -4
  242. package/esm2022/lib/grids/tree-grid/tree-grid-api.service.mjs +4 -4
  243. package/esm2022/lib/grids/tree-grid/tree-grid-row.component.mjs +4 -4
  244. package/esm2022/lib/grids/tree-grid/tree-grid-selection.service.mjs +4 -4
  245. package/esm2022/lib/grids/tree-grid/tree-grid.component.mjs +4 -4
  246. package/esm2022/lib/grids/tree-grid/tree-grid.directives.mjs +4 -4
  247. package/esm2022/lib/grids/tree-grid/tree-grid.filtering.pipe.mjs +4 -4
  248. package/esm2022/lib/grids/tree-grid/tree-grid.grouping.pipe.mjs +4 -4
  249. package/esm2022/lib/grids/tree-grid/tree-grid.module.mjs +43 -39
  250. package/esm2022/lib/grids/tree-grid/tree-grid.pipes.mjs +22 -22
  251. package/esm2022/lib/grids/tree-grid/tree-grid.summary.pipe.mjs +4 -4
  252. package/esm2022/lib/icon/icon.component.mjs +4 -4
  253. package/esm2022/lib/icon/icon.module.mjs +5 -5
  254. package/esm2022/lib/icon/icon.service.mjs +4 -4
  255. package/esm2022/lib/input-group/input-group.component.mjs +4 -4
  256. package/esm2022/lib/input-group/input-group.module.mjs +5 -5
  257. package/esm2022/lib/list/list-item.component.mjs +4 -4
  258. package/esm2022/lib/list/list.common.mjs +16 -16
  259. package/esm2022/lib/list/list.component.mjs +19 -19
  260. package/esm2022/lib/list/list.module.mjs +5 -5
  261. package/esm2022/lib/navbar/navbar.component.mjs +10 -10
  262. package/esm2022/lib/navbar/navbar.module.mjs +5 -5
  263. package/esm2022/lib/navigation-drawer/navigation-drawer.component.mjs +4 -4
  264. package/esm2022/lib/navigation-drawer/navigation-drawer.directives.mjs +10 -10
  265. package/esm2022/lib/navigation-drawer/navigation-drawer.module.mjs +5 -5
  266. package/esm2022/lib/paginator/paginator-interfaces.mjs +4 -4
  267. package/esm2022/lib/paginator/paginator.component.mjs +13 -13
  268. package/esm2022/lib/paginator/paginator.module.mjs +5 -5
  269. package/esm2022/lib/progressbar/progressbar.common.mjs +7 -7
  270. package/esm2022/lib/progressbar/progressbar.component.mjs +10 -10
  271. package/esm2022/lib/progressbar/progressbar.module.mjs +5 -5
  272. package/esm2022/lib/query-builder/query-builder-header.component.mjs +4 -4
  273. package/esm2022/lib/query-builder/query-builder.component.mjs +7 -7
  274. package/esm2022/lib/query-builder/query-builder.module.mjs +5 -5
  275. package/esm2022/lib/radio/radio.component.mjs +4 -4
  276. package/esm2022/lib/select/select-group.component.mjs +4 -4
  277. package/esm2022/lib/select/select-item.component.mjs +4 -4
  278. package/esm2022/lib/select/select-navigation.directive.mjs +4 -4
  279. package/esm2022/lib/select/select.component.mjs +13 -13
  280. package/esm2022/lib/select/select.module.mjs +5 -5
  281. package/esm2022/lib/services/animation/angular-animation-service.mjs +4 -4
  282. package/esm2022/lib/services/csv/csv-exporter.mjs +4 -4
  283. package/esm2022/lib/services/direction/directionality.mjs +4 -4
  284. package/esm2022/lib/services/excel/excel-exporter.mjs +4 -4
  285. package/esm2022/lib/services/overlay/overlay.mjs +4 -4
  286. package/esm2022/lib/services/transaction/transaction-factory.service.mjs +7 -7
  287. package/esm2022/lib/simple-combo/simple-combo.component.mjs +4 -4
  288. package/esm2022/lib/simple-combo/simple-combo.module.mjs +5 -5
  289. package/esm2022/lib/slider/label/thumb-label.component.mjs +4 -4
  290. package/esm2022/lib/slider/slider.common.mjs +10 -10
  291. package/esm2022/lib/slider/slider.component.mjs +4 -4
  292. package/esm2022/lib/slider/slider.module.mjs +5 -5
  293. package/esm2022/lib/slider/thumb/thumb-slider.component.mjs +4 -4
  294. package/esm2022/lib/slider/ticks/tick.pipe.mjs +4 -4
  295. package/esm2022/lib/slider/ticks/ticks.component.mjs +4 -4
  296. package/esm2022/lib/snackbar/snackbar.component.mjs +4 -4
  297. package/esm2022/lib/snackbar/snackbar.module.mjs +5 -5
  298. package/esm2022/lib/splitter/splitter-pane/splitter-pane.component.mjs +4 -4
  299. package/esm2022/lib/splitter/splitter.component.mjs +7 -7
  300. package/esm2022/lib/splitter/splitter.module.mjs +5 -5
  301. package/esm2022/lib/stepper/step/step.component.mjs +4 -4
  302. package/esm2022/lib/stepper/stepper.component.mjs +4 -4
  303. package/esm2022/lib/stepper/stepper.directive.mjs +22 -22
  304. package/esm2022/lib/stepper/stepper.module.mjs +5 -5
  305. package/esm2022/lib/stepper/stepper.service.mjs +4 -4
  306. package/esm2022/lib/switch/switch.component.mjs +4 -4
  307. package/esm2022/lib/switch/switch.module.mjs +5 -5
  308. package/esm2022/lib/tabs/bottom-nav/bottom-nav-content.component.mjs +4 -4
  309. package/esm2022/lib/tabs/bottom-nav/bottom-nav-header.component.mjs +4 -4
  310. package/esm2022/lib/tabs/bottom-nav/bottom-nav-item.component.mjs +4 -4
  311. package/esm2022/lib/tabs/bottom-nav/bottom-nav.component.mjs +4 -4
  312. package/esm2022/lib/tabs/bottom-nav/bottom-nav.directives.mjs +7 -7
  313. package/esm2022/lib/tabs/bottom-nav/bottom-nav.module.mjs +5 -5
  314. package/esm2022/lib/tabs/tab-content.directive.mjs +4 -4
  315. package/esm2022/lib/tabs/tab-header.directive.mjs +4 -4
  316. package/esm2022/lib/tabs/tab-item.directive.mjs +4 -4
  317. package/esm2022/lib/tabs/tabs/tab-content.component.mjs +4 -4
  318. package/esm2022/lib/tabs/tabs/tab-header.component.mjs +4 -4
  319. package/esm2022/lib/tabs/tabs/tab-item.component.mjs +4 -4
  320. package/esm2022/lib/tabs/tabs/tabs.component.mjs +4 -4
  321. package/esm2022/lib/tabs/tabs/tabs.directives.mjs +7 -7
  322. package/esm2022/lib/tabs/tabs/tabs.module.mjs +5 -5
  323. package/esm2022/lib/tabs/tabs.directive.mjs +4 -4
  324. package/esm2022/lib/time-picker/time-picker.component.mjs +4 -4
  325. package/esm2022/lib/time-picker/time-picker.directives.mjs +7 -7
  326. package/esm2022/lib/time-picker/time-picker.module.mjs +5 -5
  327. package/esm2022/lib/time-picker/time-picker.pipes.mjs +7 -7
  328. package/esm2022/lib/toast/toast.component.mjs +4 -4
  329. package/esm2022/lib/toast/toast.module.mjs +5 -5
  330. package/esm2022/lib/tree/tree-navigation.service.mjs +4 -4
  331. package/esm2022/lib/tree/tree-node/tree-node.component.mjs +7 -7
  332. package/esm2022/lib/tree/tree-selection.service.mjs +4 -4
  333. package/esm2022/lib/tree/tree.component.mjs +10 -10
  334. package/esm2022/lib/tree/tree.module.mjs +5 -5
  335. package/esm2022/lib/tree/tree.service.mjs +4 -4
  336. package/fesm2022/igniteui-angular.mjs +2330 -2321
  337. package/fesm2022/igniteui-angular.mjs.map +1 -1
  338. package/lib/grids/column-actions/public_api.d.ts +7 -0
  339. package/lib/grids/grid/grid.module.d.ts +23 -20
  340. package/lib/grids/grid/public_api.d.ts +1 -1
  341. package/lib/grids/hierarchical-grid/hierarchical-grid.module.d.ts +23 -20
  342. package/lib/grids/hierarchical-grid/public_api.d.ts +1 -1
  343. package/lib/grids/pivot-grid/pivot-grid.module.d.ts +23 -20
  344. package/lib/grids/pivot-grid/public_api.d.ts +1 -1
  345. package/lib/grids/public_api.d.ts +2 -1
  346. package/lib/grids/tree-grid/public_api.d.ts +3 -1
  347. package/lib/grids/tree-grid/tree-grid.module.d.ts +39 -35
  348. package/package.json +6 -6
@@ -7,15 +7,15 @@ import * as i0 from "@angular/core";
7
7
  * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components
8
8
  */
9
9
  export class IgxRadioModule {
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxRadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxRadioModule, imports: [IgxRadioGroupDirective, IgxRadioComponent], exports: [IgxRadioGroupDirective, IgxRadioComponent] }); }
12
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxRadioModule }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxRadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxRadioModule, imports: [IgxRadioGroupDirective, IgxRadioComponent], exports: [IgxRadioGroupDirective, IgxRadioComponent] }); }
12
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxRadioModule }); }
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxRadioModule, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxRadioModule, decorators: [{
15
15
  type: NgModule,
16
16
  args: [{
17
17
  imports: [IgxRadioGroupDirective, IgxRadioComponent],
18
18
  exports: [IgxRadioGroupDirective, IgxRadioComponent]
19
19
  }]
20
20
  }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RpcmVjdGl2ZXMvcmFkaW8vcmFkaW8tZ3JvdXAubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBRWhFOzs7R0FHRztBQUtILE1BQU0sT0FBTyxjQUFjO21IQUFkLGNBQWM7b0hBQWQsY0FBYyxZQUhiLHNCQUFzQixFQUFFLGlCQUFpQixhQUN6QyxzQkFBc0IsRUFBRSxpQkFBaUI7b0hBRTFDLGNBQWM7O2dHQUFkLGNBQWM7a0JBSjFCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsaUJBQWlCLENBQUM7b0JBQ3BELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLGlCQUFpQixDQUFDO2lCQUN2RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hSYWRpb0dyb3VwRGlyZWN0aXZlIH0gZnJvbSAnLi9yYWRpby1ncm91cC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4UmFkaW9Db21wb25lbnQgfSBmcm9tICcuLi8uLi9yYWRpby9yYWRpby5jb21wb25lbnQnO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqIElNUE9SVEFOVDogVGhlIGZvbGxvd2luZyBpcyBOZ01vZHVsZSBleHBvcnRlZCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgYmVmb3JlIHN0YW5kYWxvbmUgY29tcG9uZW50c1xuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtJZ3hSYWRpb0dyb3VwRGlyZWN0aXZlLCBJZ3hSYWRpb0NvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW0lneFJhZGlvR3JvdXBEaXJlY3RpdmUsIElneFJhZGlvQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hSYWRpb01vZHVsZSB7fVxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RpcmVjdGl2ZXMvcmFkaW8vcmFkaW8tZ3JvdXAubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBRWhFOzs7R0FHRztBQUtILE1BQU0sT0FBTyxjQUFjOzhHQUFkLGNBQWM7K0dBQWQsY0FBYyxZQUhiLHNCQUFzQixFQUFFLGlCQUFpQixhQUN6QyxzQkFBc0IsRUFBRSxpQkFBaUI7K0dBRTFDLGNBQWM7OzJGQUFkLGNBQWM7a0JBSjFCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsaUJBQWlCLENBQUM7b0JBQ3BELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLGlCQUFpQixDQUFDO2lCQUN2RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hSYWRpb0dyb3VwRGlyZWN0aXZlIH0gZnJvbSAnLi9yYWRpby1ncm91cC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4UmFkaW9Db21wb25lbnQgfSBmcm9tICcuLi8uLi9yYWRpby9yYWRpby5jb21wb25lbnQnO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqIElNUE9SVEFOVDogVGhlIGZvbGxvd2luZyBpcyBOZ01vZHVsZSBleHBvcnRlZCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgYmVmb3JlIHN0YW5kYWxvbmUgY29tcG9uZW50c1xuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtJZ3hSYWRpb0dyb3VwRGlyZWN0aXZlLCBJZ3hSYWRpb0NvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW0lneFJhZGlvR3JvdXBEaXJlY3RpdmUsIElneFJhZGlvQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hSYWRpb01vZHVsZSB7fVxuIl19
@@ -128,10 +128,10 @@ export class IgxRippleDirective {
128
128
  });
129
129
  animation.play();
130
130
  }
131
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxRippleDirective, deps: [{ token: i1.AnimationBuilder }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
132
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-rc.4", type: IgxRippleDirective, isStandalone: true, selector: "[igxRipple]", inputs: { rippleTarget: ["igxRippleTarget", "rippleTarget"], rippleColor: ["igxRipple", "rippleColor"], rippleDuration: ["igxRippleDuration", "rippleDuration"], centered: ["igxRippleCentered", "centered"], rippleDisabled: ["igxRippleDisabled", "rippleDisabled"] }, host: { listeners: { "mousedown": "onMouseDown($event)" } }, ngImport: i0 }); }
131
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxRippleDirective, deps: [{ token: i1.AnimationBuilder }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
132
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: IgxRippleDirective, isStandalone: true, selector: "[igxRipple]", inputs: { rippleTarget: ["igxRippleTarget", "rippleTarget"], rippleColor: ["igxRipple", "rippleColor"], rippleDuration: ["igxRippleDuration", "rippleDuration"], centered: ["igxRippleCentered", "centered"], rippleDisabled: ["igxRippleDisabled", "rippleDisabled"] }, host: { listeners: { "mousedown": "onMouseDown($event)" } }, ngImport: i0 }); }
133
133
  }
134
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxRippleDirective, decorators: [{
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxRippleDirective, decorators: [{
135
135
  type: Directive,
136
136
  args: [{
137
137
  selector: '[igxRipple]',
@@ -156,4 +156,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ng
156
156
  type: HostListener,
157
157
  args: ['mousedown', ['$event']]
158
158
  }] } });
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlwcGxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL3JpcHBsZS9yaXBwbGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFvQixLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQU12RSxNQUFNLE9BQU8sa0JBQWtCO0lBcUQzQjs7Ozs7OztPQU9HO0lBQ0gsSUFDVyxRQUFRLENBQUMsS0FBYztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzVDLENBQUM7SUFrQkQsSUFBYyxhQUFhO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFDekMsQ0FBQztJQU9ELFlBQ2MsT0FBeUIsRUFDekIsVUFBc0IsRUFDdEIsUUFBbUIsRUFDckIsSUFBWTtRQUhWLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQ3pCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNyQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBOUZ4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBa0JHO1FBRUksaUJBQVksR0FBRyxFQUFFLENBQUM7UUFnQnpCOzs7Ozs7Ozs7Ozs7O1dBYUc7UUFFSSxtQkFBYyxHQUFHLEdBQUcsQ0FBQztRQWE1Qjs7Ozs7Ozs7Ozs7OztXQWFHO1FBRUksbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFNdEIsdUJBQWtCLEdBQUcsbUJBQW1CLENBQUM7UUFDekMsb0JBQWUsR0FBRyxZQUFZLENBQUM7UUFDL0IsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNs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LFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBOZ1pvbmUsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5pbWF0aW9uQnVpbGRlciwgc3R5bGUsIGFuaW1hdGUgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4UmlwcGxlXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hSaXBwbGVEaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgcmlwcGxlIHRhcmdldC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGRpdiAgI3JpcHBsZUNvbnRhaW5lciBjbGFzcz1cImRpdi0xXCIgaWd4UmlwcGxlIFtpZ3hSaXBwbGVUYXJnZXRdID0gXCInLmRpdi0xJ1wiPjwvZGl2PlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKCdyaXBwbGVDb250YWluZXInLCB7cmVhZDogSWd4UmlwcGxlRGlyZWN0aXZlfSlcbiAgICAgKiBwdWJsaWMgcmlwcGxlOiBJZ3hSaXBwbGVEaXJlY3RpdmU7XG4gICAgICogbGV0IHJpcHBsZVRhcmdldCA9IHRoaXMucmlwcGxlLnJpcHBsZVRhcmdldDtcbiAgICAgKiBgYGBcbiAgICAgKiBDYW4gc2V0IHRoZSByaXBwbGUgdG8gYWN0aXZhdGUgb24gYSBjaGlsZCBlbGVtZW50IGluc2lkZSB0aGUgcGFyZW50IHdoZXJlIGlneFJpcHBsZSBpcyBkZWZpbmVkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8ZGl2ICNyaXBwbGVDb250YWluZXIgW2lneFJpcHBsZVRhcmdldF0gPSBcIicjY2hpbGRcIic+XG4gICAgICogIDxidXR0b24gaWQ9XCJjaGlsZFwiPkNsaWNrPC9idXR0b24+XG4gICAgICogPC9kaXY+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4UmlwcGxlRGlyZWN0aXZlXG4gICAgICovXG4gICAgQElucHV0KCdpZ3hSaXBwbGVUYXJnZXQnKVxuICAgIHB1YmxpYyByaXBwbGVUYXJnZXQgPSAnJztcbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIHJpcHBsZSBjb2xvci5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiAjcmlwcGxlQ29udGFpbmVyIFtpZ3hSaXBwbGVdID0gXCIncmVkJ1wiID48L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogQFZpZXdDaGlsZCgncmlwcGxlQ29udGFpbmVyJywge3JlYWQ6IElneFJpcHBsZURpcmVjdGl2ZX0pXG4gICAgICogcHVibGljIHJpcHBsZTogSWd4UmlwcGxlRGlyZWN0aXZlO1xuICAgICAqIGxldCByaXBwbGVDb2xvciA9IHRoaXMucmlwcGxlLnJpcHBsZUNvbG9yO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneFJpcHBsZURpcmVjdGl2ZVxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4UmlwcGxlJylcbiAgICBwdWJsaWMgcmlwcGxlQ29sb3I6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIHJpcHBsZSBkdXJhdGlvbihpbiBtaWxsaXNlY29uZHMpLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYDYwMGAuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gI3JpcHBsZUNvbnRhaW5lciBpZ3hSaXBwbGUgW2lneFJpcHBsZUR1cmF0aW9uXSA9IFwiODAwXCI+PC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoJ3JpcHBsZUNvbnRhaW5lcicsIHtyZWFkOiBJZ3hSaXBwbGVEaXJlY3RpdmV9KVxuICAgICAqIHB1YmxpYyByaXBwbGU6IElneFJpcHBsZURpcmVjdGl2ZTtcbiAgICAgKiBsZXQgcmlwcGxlRHVyYXRpb24gPSB0aGlzLnJpcHBsZS5yaXBwbGVEdXJhdGlvbjtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hSaXBwbGVEaXJlY3RpdmVcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneFJpcHBsZUR1cmF0aW9uJylcbiAgICBwdWJsaWMgcmlwcGxlRHVyYXRpb24gPSA2MDA7XG4gICAgLyoqXG4gICAgICogRW5hYmxlcy9kaXNhYmxlcyB0aGUgcmlwcGxlIHRvIGJlIGNlbnRlcmVkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uICNyaXBwbGVDb250YWluZXIgaWd4UmlwcGxlIFtpZ3hSaXBwbGVDZW50ZXJlZF0gPSBcInRydWVcIj48L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hSaXBwbGVEaXJlY3RpdmVcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneFJpcHBsZUNlbnRlcmVkJylcbiAgICBwdWJsaWMgc2V0IGNlbnRlcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2NlbnRlcmVkID0gdmFsdWUgfHwgdGhpcy5jZW50ZXJlZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHdoZXRoZXIgdGhlIHJpcHBsZSBpcyBkaXNhYmxlZC5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gI3JpcHBsZUNvbnRhaW5lciBpZ3hSaXBwbGUgW2lneFJpcHBsZURpc2FibGVkXSA9IFwidHJ1ZVwiPjwvYnV0dG9uPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKCdyaXBwbGVDb250YWluZXInLCB7cmVhZDogSWd4UmlwcGxlRGlyZWN0aXZlfSlcbiAgICAgKiBwdWJsaWMgcmlwcGxlOiBJZ3hSaXBwbGVEaXJlY3RpdmU7XG4gICAgICogbGV0IGlzUmlwcGxlRGlzYWJsZWQgPSB0aGlzLnJpcHBsZS5yaXBwbGVEaXNhYmxlZDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hSaXBwbGVEaXJlY3RpdmVcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneFJpcHBsZURpc2FibGVkJylcbiAgICBwdWJsaWMgcmlwcGxlRGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIHByb3RlY3RlZCBnZXQgbmF0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJpcHBsZUVsZW1lbnRDbGFzcyA9ICdpZ3gtcmlwcGxlX19pbm5lcic7XG4gICAgcHJpdmF0ZSByaXBwbGVIb3N0Q2xhc3MgPSAnaWd4LXJpcHBsZSc7XG4gICAgcHJpdmF0ZSBfY2VudGVyZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGFuaW1hdGlvblF1ZXVlID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGJ1aWxkZXI6IEFuaW1hdGlvbkJ1aWxkZXIsXG4gICAgICAgIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUpIHsgfVxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbk1vdXNlRG93bihldmVudCkge1xuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gdGhpcy5fcmlwcGxlKGV2ZW50KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTdHlsZXMocmlwcGxlRWxlbWVudDogSFRNTEVsZW1lbnQsIHN0eWxlUGFyYW1zOiBhbnkpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhyaXBwbGVFbGVtZW50LCB0aGlzLnJpcHBsZUVsZW1lbnRDbGFzcyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUocmlwcGxlRWxlbWVudCwgJ3dpZHRoJywgYCR7c3R5bGVQYXJhbXMucmFkaXVzfXB4YCk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUocmlwcGxlRWxlbWVudCwgJ2hlaWdodCcsIGAke3N0eWxlUGFyYW1zLnJhZGl1c31weGApO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHJpcHBsZUVsZW1lbnQsICd0b3AnLCBgJHtzdHlsZVBhcmFtcy50b3B9cHhgKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShyaXBwbGVFbGVtZW50LCAnbGVmdCcsIGAke3N0eWxlUGFyYW1zLmxlZnR9cHhgKTtcbiAgICAgICAgaWYgKHRoaXMucmlwcGxlQ29sb3IpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUocmlwcGxlRWxlbWVudCwgJ2JhY2tncm91bmQnLCB0aGlzLnJpcHBsZUNvbG9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3JpcHBsZShldmVudCkge1xuICAgICAgICBpZiAodGhpcy5yaXBwbGVEaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gKHRoaXMucmlwcGxlVGFyZ2V0ID8gdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5yaXBwbGVUYXJnZXQpIHx8IHRoaXMubmF0aXZlRWxlbWVudCA6IHRoaXMubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgY29uc3QgcmVjdEJvdW5kcyA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgcmFkaXVzID0gTWF0aC5tYXgocmVjdEJvdW5kcy53aWR0aCwgcmVjdEJvdW5kcy5oZWlnaHQpO1xuICAgICAgICBsZXQgbGVmdCA9IE1hdGgucm91bmQoZXZlbnQuY2xpZW50WCAtIHJlY3RCb3VuZHMubGVmdCAtIHJhZGl1cyAvIDIpO1xuICAgICAgICBsZXQgdG9wID0gTWF0aC5yb3VuZChldmVudC5jbGllbnRZIC0gcmVjdEJvdW5kcy50b3AgLSByYWRpdXMgLyAyKTtcblxuICAgICAgICBpZiAodGhpcy5fY2VudGVyZWQpIHtcbiAgICAgICAgICAgIGxlZnQgPSB0b3AgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGltZW5zaW9ucyA9IHtcbiAgICAgICAgICAgIHJhZGl1cyxcbiAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgIGxlZnRcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCByaXBwbGVFbGVtZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cbiAgICAgICAgdGhpcy5zZXRTdHlsZXMocmlwcGxlRWxlbWVudCwgZGltZW5zaW9ucyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGFyZ2V0LCB0aGlzLnJpcHBsZUhvc3RDbGFzcyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGFyZ2V0LCByaXBwbGVFbGVtZW50KTtcblxuICAgICAgICBjb25zdCBhbmltYXRpb24gPSB0aGlzLmJ1aWxkZXIuYnVpbGQoW1xuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjUsIHRyYW5zZm9ybTogJ3NjYWxlKC4zKScgfSksXG4gICAgICAgICAgICBhbmltYXRlKHRoaXMucmlwcGxlRHVyYXRpb24sIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2NhbGUoMiknIH0pKVxuICAgICAgICBdKS5jcmVhdGUocmlwcGxlRWxlbWVudCk7XG5cbiAgICAgICAgdGhpcy5hbmltYXRpb25RdWV1ZS5wdXNoKGFuaW1hdGlvbik7XG5cbiAgICAgICAgYW5pbWF0aW9uLm9uRG9uZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFuaW1hdGlvblF1ZXVlLnNwbGljZSh0aGlzLmFuaW1hdGlvblF1ZXVlLmluZGV4T2YoYW5pbWF0aW9uKSwgMSk7XG4gICAgICAgICAgICB0YXJnZXQucmVtb3ZlQ2hpbGQocmlwcGxlRWxlbWVudCk7XG4gICAgICAgICAgICBpZiAodGhpcy5hbmltYXRpb25RdWV1ZS5sZW5ndGggPCAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0YXJnZXQsIHRoaXMucmlwcGxlSG9zdENsYXNzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgYW5pbWF0aW9uLnBsYXkoKTtcblxuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cblxuIl19
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlwcGxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL3JpcHBsZS9yaXBwbGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFvQixLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQU12RSxNQUFNLE9BQU8sa0JBQWtCO0lBcUQzQjs7Ozs7OztPQU9HO0lBQ0gsSUFDVyxRQUFRLENBQUMsS0FBYztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzVDLENBQUM7SUFrQkQsSUFBYyxhQUFhO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFDekMsQ0FBQztJQU9ELFlBQ2MsT0FBeUIsRUFDekIsVUFBc0IsRUFDdEIsUUFBbUIsRUFDckIsSUFBWTtRQUhWLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQ3pCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNyQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBOUZ4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBa0JHO1FBRUksaUJBQVksR0FBRyxFQUFFLENBQUM7UUFnQnpCOzs7Ozs7Ozs7Ozs7O1dBYUc7UUFFSSxtQkFBYyxHQUFHLEdBQUcsQ0FBQztRQWE1Qjs7Ozs7Ozs7Ozs7OztXQWFHO1FBRUksbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFNdEIsdUJBQWtCLEdBQUcsbUJBQW1CLENBQUM7UUFDekMsb0JBQWUsR0FBRyxZQUFZLENBQUM7UUFDL0IsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNs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LFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBOZ1pvbmUsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5pbWF0aW9uQnVpbGRlciwgc3R5bGUsIGFuaW1hdGUgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4UmlwcGxlXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hSaXBwbGVEaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgcmlwcGxlIHRhcmdldC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGRpdiAgI3JpcHBsZUNvbnRhaW5lciBjbGFzcz1cImRpdi0xXCIgaWd4UmlwcGxlIFtpZ3hSaXBwbGVUYXJnZXRdID0gXCInLmRpdi0xJ1wiPjwvZGl2PlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKCdyaXBwbGVDb250YWluZXInLCB7cmVhZDogSWd4UmlwcGxlRGlyZWN0aXZlfSlcbiAgICAgKiBwdWJsaWMgcmlwcGxlOiBJZ3hSaXBwbGVEaXJlY3RpdmU7XG4gICAgICogbGV0IHJpcHBsZVRhcmdldCA9IHRoaXMucmlwcGxlLnJpcHBsZVRhcmdldDtcbiAgICAgKiBgYGBcbiAgICAgKiBDYW4gc2V0IHRoZSByaXBwbGUgdG8gYWN0aXZhdGUgb24gYSBjaGlsZCBlbGVtZW50IGluc2lkZSB0aGUgcGFyZW50IHdoZXJlIGlneFJpcHBsZSBpcyBkZWZpbmVkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8ZGl2ICNyaXBwbGVDb250YWluZXIgW2lneFJpcHBsZVRhcmdldF0gPSBcIicjY2hpbGRcIic+XG4gICAgICogIDxidXR0b24gaWQ9XCJjaGlsZFwiPkNsaWNrPC9idXR0b24+XG4gICAgICogPC9kaXY+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4UmlwcGxlRGlyZWN0aXZlXG4gICAgICovXG4gICAgQElucHV0KCdpZ3hSaXBwbGVUYXJnZXQnKVxuICAgIHB1YmxpYyByaXBwbGVUYXJnZXQgPSAnJztcbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIHJpcHBsZSBjb2xvci5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiAjcmlwcGxlQ29udGFpbmVyIFtpZ3hSaXBwbGVdID0gXCIncmVkJ1wiID48L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogQFZpZXdDaGlsZCgncmlwcGxlQ29udGFpbmVyJywge3JlYWQ6IElneFJpcHBsZURpcmVjdGl2ZX0pXG4gICAgICogcHVibGljIHJpcHBsZTogSWd4UmlwcGxlRGlyZWN0aXZlO1xuICAgICAqIGxldCByaXBwbGVDb2xvciA9IHRoaXMucmlwcGxlLnJpcHBsZUNvbG9yO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneFJpcHBsZURpcmVjdGl2ZVxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4UmlwcGxlJylcbiAgICBwdWJsaWMgcmlwcGxlQ29sb3I6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIHJpcHBsZSBkdXJhdGlvbihpbiBtaWxsaXNlY29uZHMpLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYDYwMGAuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gI3JpcHBsZUNvbnRhaW5lciBpZ3hSaXBwbGUgW2lneFJpcHBsZUR1cmF0aW9uXSA9IFwiODAwXCI+PC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoJ3JpcHBsZUNvbnRhaW5lcicsIHtyZWFkOiBJZ3hSaXBwbGVEaXJlY3RpdmV9KVxuICAgICAqIHB1YmxpYyByaXBwbGU6IElneFJpcHBsZURpcmVjdGl2ZTtcbiAgICAgKiBsZXQgcmlwcGxlRHVyYXRpb24gPSB0aGlzLnJpcHBsZS5yaXBwbGVEdXJhdGlvbjtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hSaXBwbGVEaXJlY3RpdmVcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneFJpcHBsZUR1cmF0aW9uJylcbiAgICBwdWJsaWMgcmlwcGxlRHVyYXRpb24gPSA2MDA7XG4gICAgLyoqXG4gICAgICogRW5hYmxlcy9kaXNhYmxlcyB0aGUgcmlwcGxlIHRvIGJlIGNlbnRlcmVkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uICNyaXBwbGVDb250YWluZXIgaWd4UmlwcGxlIFtpZ3hSaXBwbGVDZW50ZXJlZF0gPSBcInRydWVcIj48L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hSaXBwbGVEaXJlY3RpdmVcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneFJpcHBsZUNlbnRlcmVkJylcbiAgICBwdWJsaWMgc2V0IGNlbnRlcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2NlbnRlcmVkID0gdmFsdWUgfHwgdGhpcy5jZW50ZXJlZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHdoZXRoZXIgdGhlIHJpcHBsZSBpcyBkaXNhYmxlZC5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gI3JpcHBsZUNvbnRhaW5lciBpZ3hSaXBwbGUgW2lneFJpcHBsZURpc2FibGVkXSA9IFwidHJ1ZVwiPjwvYnV0dG9uPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKCdyaXBwbGVDb250YWluZXInLCB7cmVhZDogSWd4UmlwcGxlRGlyZWN0aXZlfSlcbiAgICAgKiBwdWJsaWMgcmlwcGxlOiBJZ3hSaXBwbGVEaXJlY3RpdmU7XG4gICAgICogbGV0IGlzUmlwcGxlRGlzYWJsZWQgPSB0aGlzLnJpcHBsZS5yaXBwbGVEaXNhYmxlZDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hSaXBwbGVEaXJlY3RpdmVcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneFJpcHBsZURpc2FibGVkJylcbiAgICBwdWJsaWMgcmlwcGxlRGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIHByb3RlY3RlZCBnZXQgbmF0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJpcHBsZUVsZW1lbnRDbGFzcyA9ICdpZ3gtcmlwcGxlX19pbm5lcic7XG4gICAgcHJpdmF0ZSByaXBwbGVIb3N0Q2xhc3MgPSAnaWd4LXJpcHBsZSc7XG4gICAgcHJpdmF0ZSBfY2VudGVyZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGFuaW1hdGlvblF1ZXVlID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGJ1aWxkZXI6IEFuaW1hdGlvbkJ1aWxkZXIsXG4gICAgICAgIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUpIHsgfVxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbk1vdXNlRG93bihldmVudCkge1xuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gdGhpcy5fcmlwcGxlKGV2ZW50KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTdHlsZXMocmlwcGxlRWxlbWVudDogSFRNTEVsZW1lbnQsIHN0eWxlUGFyYW1zOiBhbnkpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhyaXBwbGVFbGVtZW50LCB0aGlzLnJpcHBsZUVsZW1lbnRDbGFzcyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUocmlwcGxlRWxlbWVudCwgJ3dpZHRoJywgYCR7c3R5bGVQYXJhbXMucmFkaXVzfXB4YCk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUocmlwcGxlRWxlbWVudCwgJ2hlaWdodCcsIGAke3N0eWxlUGFyYW1zLnJhZGl1c31weGApO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHJpcHBsZUVsZW1lbnQsICd0b3AnLCBgJHtzdHlsZVBhcmFtcy50b3B9cHhgKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShyaXBwbGVFbGVtZW50LCAnbGVmdCcsIGAke3N0eWxlUGFyYW1zLmxlZnR9cHhgKTtcbiAgICAgICAgaWYgKHRoaXMucmlwcGxlQ29sb3IpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUocmlwcGxlRWxlbWVudCwgJ2JhY2tncm91bmQnLCB0aGlzLnJpcHBsZUNvbG9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3JpcHBsZShldmVudCkge1xuICAgICAgICBpZiAodGhpcy5yaXBwbGVEaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gKHRoaXMucmlwcGxlVGFyZ2V0ID8gdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5yaXBwbGVUYXJnZXQpIHx8IHRoaXMubmF0aXZlRWxlbWVudCA6IHRoaXMubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgY29uc3QgcmVjdEJvdW5kcyA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgcmFkaXVzID0gTWF0aC5tYXgocmVjdEJvdW5kcy53aWR0aCwgcmVjdEJvdW5kcy5oZWlnaHQpO1xuICAgICAgICBsZXQgbGVmdCA9IE1hdGgucm91bmQoZXZlbnQuY2xpZW50WCAtIHJlY3RCb3VuZHMubGVmdCAtIHJhZGl1cyAvIDIpO1xuICAgICAgICBsZXQgdG9wID0gTWF0aC5yb3VuZChldmVudC5jbGllbnRZIC0gcmVjdEJvdW5kcy50b3AgLSByYWRpdXMgLyAyKTtcblxuICAgICAgICBpZiAodGhpcy5fY2VudGVyZWQpIHtcbiAgICAgICAgICAgIGxlZnQgPSB0b3AgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGltZW5zaW9ucyA9IHtcbiAgICAgICAgICAgIHJhZGl1cyxcbiAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgIGxlZnRcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCByaXBwbGVFbGVtZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cbiAgICAgICAgdGhpcy5zZXRTdHlsZXMocmlwcGxlRWxlbWVudCwgZGltZW5zaW9ucyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGFyZ2V0LCB0aGlzLnJpcHBsZUhvc3RDbGFzcyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGFyZ2V0LCByaXBwbGVFbGVtZW50KTtcblxuICAgICAgICBjb25zdCBhbmltYXRpb24gPSB0aGlzLmJ1aWxkZXIuYnVpbGQoW1xuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjUsIHRyYW5zZm9ybTogJ3NjYWxlKC4zKScgfSksXG4gICAgICAgICAgICBhbmltYXRlKHRoaXMucmlwcGxlRHVyYXRpb24sIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2NhbGUoMiknIH0pKVxuICAgICAgICBdKS5jcmVhdGUocmlwcGxlRWxlbWVudCk7XG5cbiAgICAgICAgdGhpcy5hbmltYXRpb25RdWV1ZS5wdXNoKGFuaW1hdGlvbik7XG5cbiAgICAgICAgYW5pbWF0aW9uLm9uRG9uZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFuaW1hdGlvblF1ZXVlLnNwbGljZSh0aGlzLmFuaW1hdGlvblF1ZXVlLmluZGV4T2YoYW5pbWF0aW9uKSwgMSk7XG4gICAgICAgICAgICB0YXJnZXQucmVtb3ZlQ2hpbGQocmlwcGxlRWxlbWVudCk7XG4gICAgICAgICAgICBpZiAodGhpcy5hbmltYXRpb25RdWV1ZS5sZW5ndGggPCAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0YXJnZXQsIHRoaXMucmlwcGxlSG9zdENsYXNzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgYW5pbWF0aW9uLnBsYXkoKTtcblxuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cblxuIl19
@@ -6,15 +6,15 @@ import * as i0 from "@angular/core";
6
6
  * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components
7
7
  */
8
8
  export class IgxRippleModule {
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxRippleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxRippleModule, imports: [IgxRippleDirective], exports: [IgxRippleDirective] }); }
11
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxRippleModule }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxRippleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxRippleModule, imports: [IgxRippleDirective], exports: [IgxRippleDirective] }); }
11
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxRippleModule }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxRippleModule, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxRippleModule, decorators: [{
14
14
  type: NgModule,
15
15
  args: [{
16
16
  imports: [IgxRippleDirective],
17
17
  exports: [IgxRippleDirective]
18
18
  }]
19
19
  }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlwcGxlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL3JpcHBsZS9yaXBwbGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRXhEOzs7R0FHRztBQUtILE1BQU0sT0FBTyxlQUFlO21IQUFmLGVBQWU7b0hBQWYsZUFBZSxZQUhkLGtCQUFrQixhQUNsQixrQkFBa0I7b0hBRW5CLGVBQWU7O2dHQUFmLGVBQWU7a0JBSjNCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hSaXBwbGVEaXJlY3RpdmUgfSBmcm9tICcuL3JpcHBsZS5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqIElNUE9SVEFOVDogVGhlIGZvbGxvd2luZyBpcyBOZ01vZHVsZSBleHBvcnRlZCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgYmVmb3JlIHN0YW5kYWxvbmUgY29tcG9uZW50c1xuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtJZ3hSaXBwbGVEaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtJZ3hSaXBwbGVEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIElneFJpcHBsZU1vZHVsZSB7IH1cbiJdfQ==
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlwcGxlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL3JpcHBsZS9yaXBwbGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRXhEOzs7R0FHRztBQUtILE1BQU0sT0FBTyxlQUFlOzhHQUFmLGVBQWU7K0dBQWYsZUFBZSxZQUhkLGtCQUFrQixhQUNsQixrQkFBa0I7K0dBRW5CLGVBQWU7OzJGQUFmLGVBQWU7a0JBSjNCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hSaXBwbGVEaXJlY3RpdmUgfSBmcm9tICcuL3JpcHBsZS5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqIElNUE9SVEFOVDogVGhlIGZvbGxvd2luZyBpcyBOZ01vZHVsZSBleHBvcnRlZCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgYmVmb3JlIHN0YW5kYWxvbmUgY29tcG9uZW50c1xuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtJZ3hSaXBwbGVEaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtJZ3hSaXBwbGVEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIElneFJpcHBsZU1vZHVsZSB7IH1cbiJdfQ==
@@ -376,10 +376,10 @@ export class IgxScrollInertiaDirective {
376
376
  _scrollToY(dest) {
377
377
  this.IgxScrollInertiaScrollContainer.scrollTop = dest;
378
378
  }
379
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxScrollInertiaDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
380
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-rc.4", type: IgxScrollInertiaDirective, isStandalone: true, selector: "[igxScrollInertia]", inputs: { IgxScrollInertiaDirection: "IgxScrollInertiaDirection", IgxScrollInertiaScrollContainer: "IgxScrollInertiaScrollContainer", wheelStep: "wheelStep", inertiaStep: "inertiaStep", smoothingStep: "smoothingStep", smoothingDuration: "smoothingDuration", swipeToleranceX: "swipeToleranceX", inertiaDeltaY: "inertiaDeltaY", inertiaDeltaX: "inertiaDeltaX", inertiaDuration: "inertiaDuration" }, ngImport: i0 }); }
379
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxScrollInertiaDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
380
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: IgxScrollInertiaDirective, isStandalone: true, selector: "[igxScrollInertia]", inputs: { IgxScrollInertiaDirection: "IgxScrollInertiaDirection", IgxScrollInertiaScrollContainer: "IgxScrollInertiaScrollContainer", wheelStep: "wheelStep", inertiaStep: "inertiaStep", smoothingStep: "smoothingStep", smoothingDuration: "smoothingDuration", swipeToleranceX: "swipeToleranceX", inertiaDeltaY: "inertiaDeltaY", inertiaDeltaX: "inertiaDeltaX", inertiaDuration: "inertiaDuration" }, ngImport: i0 }); }
381
381
  }
382
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxScrollInertiaDirective, decorators: [{
382
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxScrollInertiaDirective, decorators: [{
383
383
  type: Directive,
384
384
  args: [{
385
385
  selector: '[igxScrollInertia]',
@@ -406,4 +406,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ng
406
406
  }], inertiaDuration: [{
407
407
  type: Input
408
408
  }] } });
409
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsX2luZXJ0aWEuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RpcmVjdGl2ZXMvc2Nyb2xsLWluZXJ0aWEvc2Nyb2xsX2luZXJ0aWEuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF5QyxNQUFNLGVBQWUsQ0FBQzs7QUFFeEY7O0dBRUc7QUFLSCxNQUFNLE9BQU8seUJBQXlCO0lBcURsQyxZQUFvQixPQUFtQixFQUFVLEtBQWE7UUFBMUMsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQVE7UUE1Q3ZELGNBQVMsR0FBRyxFQUFFLENBQUM7UUFHZixnQkFBVyxHQUFHLEdBQUcsQ0FBQztRQUdsQixrQkFBYSxHQUFHLEdBQUcsQ0FBQztRQUdwQixzQkFBaUIsR0FBRyxHQUFHLENBQUM7UUFHeEIsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFHckIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFHbEIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFHbEIsb0JBQWUsR0FBRyxHQUFHLENBQUM7UUFVckIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFVbkIsd0JBQW1CLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUM5QiwyQkFBc0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRTBCLENBQUM7SUFFNUQsUUFBUTtRQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztZQUN2RyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEs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SUMsZUFBZTtzQkFEckIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsZUFBZTtzQkFEckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIEVsZW1lbnRSZWYsIE5nWm9uZSwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneFNjcm9sbEluZXJ0aWFdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneFNjcm9sbEluZXJ0aWFEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBJZ3hTY3JvbGxJbmVydGlhRGlyZWN0aW9uOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBJZ3hTY3JvbGxJbmVydGlhU2Nyb2xsQ29udGFpbmVyOiBhbnk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB3aGVlbFN0ZXAgPSA1MDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGluZXJ0aWFTdGVwID0gMS41O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc21vb3RoaW5nU3RlcCA9IDEuNTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNtb290aGluZ0R1cmF0aW9uID0gMC41O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc3dpcGVUb2xlcmFuY2VYID0gMjA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpbmVydGlhRGVsdGFZID0gMztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGluZXJ0aWFEZWx0YVggPSAyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaW5lcnRpYUR1cmF0aW9uID0gMC41O1xuXG4gICAgcHJpdmF0ZSBfdG91Y2hJbmVydGlhQW5pbUlEO1xuICAgIHByaXZhdGUgX3N0YXJ0WDtcbiAgICBwcml2YXRlIF9zdGFydFk7XG4gICAgcHJpdmF0ZSBfdG91Y2hTdGFydFg7XG4gICAgcHJpdmF0ZSBfdG91Y2hTdGFydFk7XG4gICAgcHJpdmF0ZSBfbGFzdFRvdWNoRW5kO1xuICAgIHByaXZhdGUgX2xhc3RUb3VjaFg7XG4gICAgcHJpdmF0ZSBfbGFzdFRvdWNoWTtcbiAgICBwcml2YXRlIF9zYXZlZFNwZWVkc1ggPSBbXTtcbiAgICBwcml2YXRlIF9zYXZlZFNwZWVkc1k7XG4gICAgcHJpdmF0ZSBfdG90YWxNb3ZlZFg7XG4gICAgcHJpdmF0ZSBfb2Zmc2V0UmVjb3JkZWQ7XG4gICAgcHJpdmF0ZSBfb2Zmc2V0RGlyZWN0aW9uO1xuICAgIHByaXZhdGUgX2xhc3RNb3ZlZFg7XG4gICAgcHJpdmF0ZSBfbGFzdE1vdmVkWTtcbiAgICBwcml2YXRlIF9uZXh0WDtcbiAgICBwcml2YXRlIF9uZXh0WTtcbiAgICBwcml2YXRlIHBhcmVudEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBiYXNlRGVsdGFNdWx0aXBsaWVyID0gMSAvIDEyMDtcbiAgICBwcml2YXRlIGZpcmVmb3hEZWx0YU11bHRpcGxpZXIgPSAxIC8gMzA7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgX3pvbmU6IE5nWm9uZSkgeyB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCB8fCB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRFbGVtID0gdGhpcy5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgdGFyZ2V0RWxlbS5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIHRoaXMub25XaGVlbC5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAgIHRhcmdldEVsZW0uYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMub25Ub3VjaFN0YXJ0LmJpbmQodGhpcykpO1xuICAgICAgICAgICAgdGFyZ2V0RWxlbS5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLm9uVG91Y2hNb3ZlLmJpbmQodGhpcykpO1xuICAgICAgICAgICAgdGFyZ2V0RWxlbS5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRoaXMub25Ub3VjaEVuZC5iaW5kKHRoaXMpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldEVsZW0gPSB0aGlzLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoIXRhcmdldEVsZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXJnZXRFbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgdGhpcy5vbldoZWVsKTtcbiAgICAgICAgICAgIHRhcmdldEVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMub25Ub3VjaFN0YXJ0KTtcbiAgICAgICAgICAgIHRhcmdldEVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5vblRvdWNoTW92ZSk7XG4gICAgICAgICAgICB0YXJnZXRFbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5vblRvdWNoRW5kKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gc2Nyb2xsaW5nIHdpdGggdGhlIG1vdXNlIHdoZWVsIG9yIHVzaW5nIHRvdWNocGFkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9uV2hlZWwoZXZ0KSB7XG4gICAgICAgIC8vIGlmIG5vIHNjcm9sbGJhciByZXR1cm5cbiAgICAgICAgaWYgKCF0aGlzLklneFNjcm9sbEluZXJ0aWFTY3JvbGxDb250YWluZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiBjdHJsIGtleSBpcyBwcmVzc2VkIGFuZCB0aGUgdXNlciB3YW50IHRvIHpvb20gaW4vb3V0IHRoZSBwYWdlXG4gICAgICAgIGlmIChldnQuY3RybEtleSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzY3JvbGxEZWx0YVg7XG4gICAgICAgIGxldCBzY3JvbGxEZWx0YVk7XG4gICAgICAgIGNvbnN0IHNjcm9sbFN0ZXAgPSB0aGlzLndoZWVsU3RlcDtcbiAgICAgICAgY29uc3QgbWluV2hlZWxTdGVwID0gMSAvIHRoaXMud2hlZWxTdGVwO1xuICAgICAgICBjb25zdCBzbW9vdGhpbmcgPSB0aGlzLnNtb290aGluZ0R1cmF0aW9uICE9PSAwO1xuXG4gICAgICAgIHRoaXMuX3N0YXJ0WCA9IHRoaXMuSWd4U2Nyb2xsSW5lcnRpYVNjcm9sbENvbnRhaW5lci5zY3JvbGxMZWZ0O1xuICAgICAgICB0aGlzLl9zdGFydFkgPSB0aGlzLklneFNjcm9sbEluZXJ0aWFTY3JvbGxDb250YWluZXIuc2Nyb2xsVG9wO1xuXG4gICAgICAgIGlmIChldnQud2hlZWxEZWx0YVgpIHtcbiAgICAgICAgICAgIC8qIE9wdGlvbiBzdXBwb3J0ZWQgb24gQ2hyb21lLCBTYWZhcmksIE9wZXJhLlxuICAgICAgICAgICAgLyogMTIwIGlzIGRlZmF1bHQgZm9yIG1vdXNld2hlZWwgb24gdGhlc2UgYnJvd3NlcnMuIE90aGVyIHZhbHVlcyBhcmUgZm9yIHRyYWNrcGFkcyAqL1xuICAgICAgICAgICAgc2Nyb2xsRGVsdGFYID0gLWV2dC53aGVlbERlbHRhWCAqIHRoaXMuYmFzZURlbHRhTXVsdGlwbGllcjtcblxuICAgICAgICAgICAgaWYgKC1taW5XaGVlbFN0ZXAgPCBzY3JvbGxEZWx0YVggJiYgc2Nyb2xsRGVsdGFYIDwgbWluV2hlZWxTdGVwKSB7XG4gICAgICAgICAgICAgICAgc2Nyb2xsRGVsdGFYID0gTWF0aC5zaWduKHNjcm9sbERlbHRhWCkgKiBtaW5XaGVlbFN0ZXA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZXZ0LmRlbHRhWCkge1xuICAgICAgICAgICAgLyogRm9yIG90aGVyIGJyb3dzZXJzIHRoYXQgZG9uJ3QgcHJvdmlkZSB3aGVlbERlbHRhLCB1c2UgdGhlIGRlbHRhWSB0byBkZXRlcm1pbmUgZGlyZWN0aW9uIGFuZCBwYXNzIGRlZmF1bHQgdmFsdWVzLiAqL1xuICAgICAgICAgICAgY29uc3QgZGVsdGFTY2FsZWRYID0gZXZ0LmRlbHRhWCAqIChldnQuZGVsdGFNb2RlID09PSAwID8gdGhpcy5maXJlZm94RGVsdGFNdWx0aXBsaWVyIDogMSk7XG4gICAgICAgICAgICBzY3JvbGxEZWx0YVggPSB0aGlzLmNhbGNBeGlzQ29vcmRzKGRlbHRhU2NhbGVkWCwgLTEsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqIEdldCBkZWx0YSBmb3IgdGhlIFkgYXhpcyAqL1xuICAgICAgICBpZiAoZXZ0LndoZWVsRGVsdGFZKSB7XG4gICAgICAgICAgICAvKiBPcHRpb24gc3VwcG9ydGVkIG9uIENocm9tZSwgU2FmYXJpLCBPcGVyYS5cbiAgICAgICAgICAgIC8qIDEyMCBpcyBkZWZhdWx0IGZvciBtb3VzZXdoZWVsIG9uIHRoZXNlIGJyb3dzZXJzLiBPdGhlciB2YWx1ZXMgYXJlIGZvciB0cmFja3BhZHMgKi9cbiAgICAgICAgICAgIHNjcm9sbERlbHRhWSA9IC1ldnQud2hlZWxEZWx0YVkgKiB0aGlzLmJhc2VEZWx0YU11bHRpcGxpZXI7XG5cbiAgICAgICAgICAgIGlmICgtbWluV2hlZWxTdGVwIDwgc2Nyb2xsRGVsdGFZICYmIHNjcm9sbERlbHRhWSA8IG1pbldoZWVsU3RlcCkge1xuICAgICAgICAgICAgICAgIHNjcm9sbERlbHRhWSA9IE1hdGguc2lnbihzY3JvbGxEZWx0YVkpICogbWluV2hlZWxTdGVwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGV2dC5kZWx0YVkpIHtcbiAgICAgICAgICAgIC8qIEZvciBvdGhlciBicm93c2VycyB0aGF0IGRvbid0IHByb3ZpZGUgd2hlZWxEZWx0YSwgdXNlIHRoZSBkZWx0YVkgdG8gZGV0ZXJtaW5lIGRpcmVjdGlvbiBhbmQgcGFzcyBkZWZhdWx0IHZhbHVlcy4gKi9cbiAgICAgICAgICAgIGNvbnN0IGRlbHRhU2NhbGVkWSA9IGV2dC5kZWx0YVkgKiAoZXZ0LmRlbHRhTW9kZSA9PT0gMCA/IHRoaXMuZmlyZWZveERlbHRhTXVsdGlwbGllciA6IDEpO1xuICAgICAgICAgICAgc2Nyb2xsRGVsdGFZID0gdGhpcy5jYWxjQXhpc0Nvb3JkcyhkZWx0YVNjYWxlZFksIC0xLCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldnQuY29tcG9zZWRQYXRoICYmIHRoaXMuZGlkQ2hpbGRTY3JvbGwoZXZ0LCBzY3JvbGxEZWx0YVgsIHNjcm9sbERlbHRhWSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzY3JvbGxEZWx0YVggJiYgdGhpcy5JZ3hTY3JvbGxJbmVydGlhRGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRMZWZ0ID0gdGhpcy5fc3RhcnRYICsgc2Nyb2xsRGVsdGFYICogc2Nyb2xsU3RlcDtcbiAgICAgICAgICAgIGlmICghc21vb3RoaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9YKG5leHRMZWZ0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc21vb3RoV2hlZWxTY3JvbGwoc2Nyb2xsRGVsdGFYKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1heFNjcm9sbExlZnQgPSBwYXJzZUludCh0aGlzLklneFNjcm9sbEluZXJ0aWFTY3JvbGxDb250YWluZXIuY2hpbGRyZW5bMF0uc3R5bGUud2lkdGgsIDEwKTtcbiAgICAgICAgICAgIGlmICgwIDwgbmV4dExlZnQgJiYgbmV4dExlZnQgPCBtYXhTY3JvbGxMZWZ0KSB7XG4gICAgICAgICAgICAgICAgLy8gUHJldmVudCBuYXZpZ2F0aW5nIHRocm91Z2ggcGFnZXMgd2hlbiBzY3JvbGxpbmcgb24gTWFjXG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZXZ0LnNoaWZ0S2V5ICYmIHNjcm9sbERlbHRhWSAmJiB0aGlzLklneFNjcm9sbEluZXJ0aWFEaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykge1xuICAgICAgICAgICAgaWYgKCFzbW9vdGhpbmcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5fc3RhcnRYICsgc2Nyb2xsRGVsdGFZICogc2Nyb2xsU3RlcDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zY3JvbGxUb1goc3RlcCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Ntb290aFdoZWVsU2Nyb2xsKHNjcm9sbERlbHRhWSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWV2dC5zaGlmdEtleSAmJiBzY3JvbGxEZWx0YVkgJiYgdGhpcy5JZ3hTY3JvbGxJbmVydGlhRGlyZWN0aW9uID09PSAndmVydGljYWwnKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0VG9wID0gdGhpcy5fc3RhcnRZICsgc2Nyb2xsRGVsdGFZICogc2Nyb2xsU3RlcDtcbiAgICAgICAgICAgIGlmICghc21vb3RoaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9ZKG5leHRUb3ApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zbW9vdGhXaGVlbFNjcm9sbChzY3JvbGxEZWx0YVkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wcmV2ZW50UGFyZW50U2Nyb2xsKGV2dCwgdHJ1ZSwgbmV4dFRvcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogV2hlbiB0aGVyZSBpcyBzdGlsbCByb29tIHRvIHNjcm9sbCB1cC9kb3duIHByZXZlbnQgdGhlIHBhcmVudCBlbGVtZW50cyBmcm9tIHNjcm9sbGluZyB0b28uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHByZXZlbnRQYXJlbnRTY3JvbGwoZXZ0LCBwcmV2ZW50RGVmYXVsdCwgbmV4dFRvcCA9IDApIHtcbiAgICAgICAgY29uc3QgY3VyU2Nyb2xsVG9wID0gbmV4dFRvcCA9PT0gMCA/IHRoaXMuSWd4U2Nyb2xsSW5lcnRpYVNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgOiBuZXh0VG9wO1xuICAgICAgICBjb25zdCBtYXhTY3JvbGxUb3AgPSB0aGlzLklneFNjcm9sbEluZXJ0aWFTY3JvbGxDb250YWluZXIuY2hpbGRyZW5bMF0uc2Nyb2xsSGVpZ2h0IC1cbiAgICAgICAgICAgIHRoaXMuSWd4U2Nyb2xsSW5lcnRpYVNjcm9sbENvbnRhaW5lci5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGlmICgwIDwgY3VyU2Nyb2xsVG9wICYmIGN1clNjcm9sbFRvcCA8IG1heFNjcm9sbFRvcCkge1xuICAgICAgICAgICAgaWYgKHByZXZlbnREZWZhdWx0KSB7XG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXZ0LnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICAgICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDaGVja3MgaWYgdGhlIHdoZWVsIGV2ZW50IHdvdWxkIGhhdmUgc2Nyb2xsZWQgYW4gZWxlbWVudCB1bmRlciB0aGUgZGlzcGxheSBjb250YWluZXJcbiAgICAgKiBpbiBET00gdHJlZSBzbyB0aGF0IGl0IGNhbiBjb3JyZWN0bHkgYmUgaWdub3JlZCB1bnRpbCB0aGF0IGVsZW1lbnQgY2FuIG5vIGxvbmdlciBiZSBzY3JvbGxlZC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZGlkQ2hpbGRTY3JvbGwoZXZ0LCBzY3JvbGxEZWx0YVgsIHNjcm9sbERlbHRhWSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBwYXRoID0gZXZ0LmNvbXBvc2VkUGF0aCgpO1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIHdoaWxlIChpIDwgcGF0aC5sZW5ndGggJiYgcGF0aFtpXS5sb2NhbE5hbWUgIT09ICdpZ3gtZGlzcGxheS1jb250YWluZXInKSB7XG4gICAgICAgICAgICBjb25zdCBlID0gcGF0aFtpKytdO1xuICAgICAgICAgICAgaWYgKGUuc2Nyb2xsSGVpZ2h0ID4gZS5jbGllbnRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvdmVyZmxvd1kgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKVsnb3ZlcmZsb3cteSddO1xuICAgICAgICAgICAgICAgIGlmIChvdmVyZmxvd1kgPT09ICdhdXRvJyB8fCBvdmVyZmxvd1kgPT09ICdzY3JvbGwnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzY3JvbGxEZWx0YVkgPiAwICYmIGUuc2Nyb2xsSGVpZ2h0IC0gTWF0aC5hYnMoTWF0aC5yb3VuZChlLnNjcm9sbFRvcCkpICE9PSBlLmNsaWVudEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbERlbHRhWSA8IDAgJiYgZS5zY3JvbGxUb3AgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUuc2Nyb2xsV2lkdGggPiBlLmNsaWVudFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3ZlcmZsb3dYID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZSlbJ292ZXJmbG93LXgnXTtcbiAgICAgICAgICAgICAgICBpZiAob3ZlcmZsb3dYID09PSAnYXV0bycgfHwgb3ZlcmZsb3dYID09PSAnc2Nyb2xsJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsRGVsdGFYID4gMCAmJiBlLnNjcm9sbFdpZHRoIC0gTWF0aC5hYnMoTWF0aC5yb3VuZChlLnNjcm9sbExlZnQpKSAhPT0gZS5jbGllbnRXaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbERlbHRhWCA8IDAgJiYgZS5zY3JvbGxMZWZ0ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHRoZSBmaXJzdCBtb21lbnQgd2Ugc3RhcnQgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgY29udGVudCBvbiBhIHRvdWNoIGRldmljZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblRvdWNoU3RhcnQoZXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLklneFNjcm9sbEluZXJ0aWFTY3JvbGxDb250YWluZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHN0b3BzIGFueSBjdXJyZW50IG9uZ29pbmcgaW5lcnRpYVxuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl90b3VjaEluZXJ0aWFBbmltSUQpO1xuXG4gICAgICAgIGNvbnN0IHRvdWNoID0gZXZlbnQudG91Y2hlc1swXTtcblxuICAgICAgICB0aGlzLl9zdGFydFggPSB0aGlzLklneFNjcm9sbEluZXJ0aWFTY3JvbGxDb250YWluZXIuc2Nyb2xsTGVmdDtcblxuICAgICAgICB0aGlzLl9zdGFydFkgPSB0aGlzLklneFNjcm9sbEluZXJ0aWFTY3JvbGxDb250YWluZXIuc2Nyb2xsVG9wO1xuXG4gICAgICAgIHRoaXMuX3RvdWNoU3RhcnRYID0gdG91Y2gucGFnZVg7XG4gICAgICAgIHRoaXMuX3RvdWNoU3RhcnRZID0gdG91Y2gucGFnZVk7XG5cbiAgICAgICAgdGhpcy5fbGFzdFRvdWNoRW5kID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIHRoaXMuX2xhc3RUb3VjaFggPSB0b3VjaC5wYWdlWDtcbiAgICAgICAgdGhpcy5fbGFzdFRvdWNoWSA9IHRvdWNoLnBhZ2VZO1xuICAgICAgICB0aGlzLl9zYXZlZFNwZWVkc1ggPSBbXTtcbiAgICAgICAgdGhpcy5fc2F2ZWRTcGVlZHNZID0gW107XG5cbiAgICAgICAgLy8gVmFycyByZWdhcmRpbmcgc3dpcGUgb2Zmc2V0XG4gICAgICAgIHRoaXMuX3RvdGFsTW92ZWRYID0gMDtcbiAgICAgICAgdGhpcy5fb2Zmc2V0UmVjb3JkZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fb2Zmc2V0RGlyZWN0aW9uID0gMDtcblxuICAgICAgICBpZiAodGhpcy5JZ3hTY3JvbGxJbmVydGlhRGlyZWN0aW9uID09PSAndmVydGljYWwnKSB7XG4gICAgICAgICAgICB0aGlzLnByZXZlbnRQYXJlbnRTY3JvbGwoZXZlbnQsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBGdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHdlIG5lZWQgdG8gc2Nyb2xsIHRoZSBjb250ZW50IGJhc2VkIG9uIHRvdWNoIGludGVyYWN0aW9uc1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblRvdWNoTW92ZShldmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuSWd4U2Nyb2xsSW5lcnRpYVNjcm9sbENvbnRhaW5lcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdG91Y2ggPSBldmVudC50b3VjaGVzWzBdO1xuICAgICAgICBjb25zdCBkZXN0WCA9IHRoaXMuX3N0YXJ0WCArICh0aGlzLl90b3VjaFN0YXJ0WCAtIHRvdWNoLnBhZ2VYKSAqIE1hdGguc2lnbih0aGlzLmluZXJ0aWFTdGVwKTtcbiAgICAgICAgY29uc3QgZGVzdFkgPSB0aGlzLl9zdGFydFkgKyAodGhpcy5fdG91Y2hTdGFydFkgLSB0b3VjaC5wYWdlWSkgKiBNYXRoLnNpZ24odGhpcy5pbmVydGlhU3RlcCk7XG5cbiAgICAgICAgLyogSGFuZGxlIGNvbXBsZXggdG91Y2htb3ZlcyB3aGVuIHN3aXBlIHN0b3BzIGJ1dCB0aGUgdG9jaCBkb2Vzbid0IGVuZCBhbmQgdGhlbiBhIHN3aXBlIGlzIGluaXRpYXRlZCBhZ2FpbiAqL1xuICAgICAgICAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cbiAgICAgICAgY29uc3QgdGltZUZyb21MYXN0VG91Y2ggPSAobmV3IERhdGUoKS5nZXRUaW1lKCkpIC0gdGhpcy5fbGFzdFRvdWNoRW5kO1xuICAgICAgICBpZiAodGltZUZyb21MYXN0VG91Y2ggIT09IDAgJiYgdGltZUZyb21MYXN0VG91Y2ggPCAxMDApIHtcbiAgICAgICAgICAgIGNvbnN0IHNwZWVkWCA9ICh0aGlzLl9sYXN0VG91Y2hYIC0gdG91Y2gucGFnZVgpIC8gdGltZUZyb21MYXN0VG91Y2g7XG4gICAgICAgICAgICBjb25zdCBzcGVlZFkgPSAodGhpcy5fbGFzdFRvdWNoWSAtIHRvdWNoLnBhZ2VZKSAvIHRpbWVGcm9tTGFzdFRvdWNoO1xuXG4gICAgICAgICAgICAvLyBTYXZlIHRoZSBsYXN0IDUgc3BlZWRzIGJldHdlZW4gdHdvIHRvdWNobW92ZXMgb24gWCBheGlzXG4gICAgICAgICAgICBpZiAodGhpcy5fc2F2ZWRTcGVlZHNYLmxlbmd0aCA8IDUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZlZFNwZWVkc1gucHVzaChzcGVlZFgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZlZFNwZWVkc1guc2hpZnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZlZFNwZWVkc1gucHVzaChzcGVlZFgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTYXZlIHRoZSBsYXN0IDUgc3BlZWRzIGJldHdlZW4gdHdvIHRvdWNobW92ZXMgb24gWSBheGlzXG4gICAgICAgICAgICBpZiAodGhpcy5fc2F2ZWRTcGVlZHNZLmxlbmd0aCA8IDUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZlZFNwZWVkc1kucHVzaChzcGVlZFkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZlZFNwZWVkc1kuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZlZFNwZWVkc1kucHVzaChzcGVlZFkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2xhc3RUb3VjaEVuZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICB0aGlzLl9sYXN0TW92ZWRYID0gdGhpcy5fbGFzdFRvdWNoWCAtIHRvdWNoLnBhZ2VYO1xuICAgICAgICB0aGlzLl9sYXN0TW92ZWRZID0gdGhpcy5fbGFzdFRvdWNoWSAtIHRvdWNoLnBhZ2VZO1xuICAgICAgICB0aGlzLl9sYXN0VG91Y2hYID0gdG91Y2gucGFnZVg7XG4gICAgICAgIHRoaXMuX2xhc3RUb3VjaFkgPSB0b3VjaC5wYWdlWTtcblxuICAgICAgICB0aGlzLl90b3RhbE1vdmVkWCArPSB0aGlzLl9sYXN0TW92ZWRYO1xuXG4gICAgICAgIC8qXHREbyBub3Qgc2Nyb2xsIHVzaW5nIHRvdWNoIHVudGlsbCBvdXQgb2YgdGhlIHN3aXBlVG9sZXJhbmNlWCBib3VuZHMgKi9cbiAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMuX3RvdGFsTW92ZWRYKSA8IHRoaXMuc3dpcGVUb2xlcmFuY2VYICYmICF0aGlzLl9vZmZzZXRSZWNvcmRlZCkge1xuICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG8odGhpcy5fc3RhcnRYLCBkZXN0WSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKlx0UmVjb3JkIHRoZSBkaXJlY3Rpb24gdGhlIGZpcnN0IHRpbWUgd2UgYXJlIG91dCBvZiB0aGUgc3dpcGVUb2xlcmFuY2VYIGJvdW5kcy5cbiAgICAgICAgICAgICpcdFRoYXQgd2F5IHdlIGtub3cgd2hpY2ggZGlyZWN0aW9uIHdlIGFwcGx5IHRoZSBvZmZzZXQgc28gaXQgZG9lc24ndCBoaWNrdXAgd2hlbiBtb3Zpbmcgb3V0IG9mIHRoZSBzd2lwZVRvbGVyYW5jZVggYm91bmRzICovXG4gICAgICAgICAgICBpZiAoIXRoaXMuX29mZnNldFJlY29yZGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb2Zmc2V0RGlyZWN0aW9uID0gTWF0aC5zaWduKGRlc3RYIC0gdGhpcy5fc3RhcnRYKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9vZmZzZXRSZWNvcmRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8qXHRTY3JvbGwgd2l0aCBvZmZzZXQgYW1tb3V0IG9mIHN3aXBlVG9sZXJhbmNlWCBpbiB0aGUgZGlyZWN0aW9uIHdlIGhhdmUgZXhpdGVkIHRoZSBib3VuZHMgYW5kXG4gICAgICAgICAgICBkb24ndCBjaGFuZ2UgaXQgYWZ0ZXIgdGhhdCBldmVyIHVudGlsIHRvdWNoZW5kIGFuZCBhZ2FpbiB0b3VjaHN0YXJ0ICovXG4gICAgICAgICAgICB0aGlzLl9zY3JvbGxUbyhkZXN0WCAtIHRoaXMuX29mZnNldERpcmVjdGlvbiAqIHRoaXMuc3dpcGVUb2xlcmFuY2VYLCBkZXN0WSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbiBTYWZhcmkgcHJldmVudGluZyB0aGUgdG91Y2htb3ZlIHdvdWxkIHByZXZlbnQgZGVmYXVsdCBwYWdlIHNjcm9sbCBiZWhhdmlvdXIgZXZlbiBpZiB0aGVyZSBpcyB0aGUgZWxlbWVudCBkb2Vzbid0IGhhdmUgb3ZlcmZsb3dcbiAgICAgICAgaWYgKHRoaXMuSWd4U2Nyb2xsSW5lcnRpYURpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgICAgICAgdGhpcy5wcmV2ZW50UGFyZW50U2Nyb2xsKGV2ZW50LCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblRvdWNoRW5kKGV2ZW50KSB7XG4gICAgICAgIGxldCBzcGVlZFggPSAwO1xuICAgICAgICBsZXQgc3BlZWRZID0gMDtcblxuICAgICAgICAvLyBzYXZlZFNwZWVkc1ggYW5kIHNhdmVkU3BlZWRzWSBoYXZlIHNhbWUgbGVuZ3RoXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fc2F2ZWRTcGVlZHNYLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBzcGVlZFggKz0gdGhpcy5fc2F2ZWRTcGVlZHNYW2ldO1xuICAgICAgICAgICAgc3BlZWRZICs9IHRoaXMuX3NhdmVkU3BlZWRzWVtpXTtcbiAgICAgICAgfVxuICAgICAgICBzcGVlZFggPSB0aGlzLl9zYXZlZFNwZWVkc1gubGVuZ3RoID8gc3BlZWRYIC8gdGhpcy5fc2F2ZWRTcGVlZHNYLmxlbmd0aCA6IDA7XG4gICAgICAgIHNwZWVkWSA9IHRoaXMuX3NhdmVkU3BlZWRzWC5sZW5ndGggPyBzcGVlZFkgLyB0aGlzLl9zYXZlZFNwZWVkc1kubGVuZ3RoIDogMDtcblxuICAgICAgICAvLyBVc2UgdGhlIGxhc3RNb3ZlZFggYW5kIGxhc3RNb3ZlZFkgdG8gZGV0ZXJtaW5lIGlmIHRoZSBzd2lwZSBzdG9wcyB3aXRob3V0IGxpZnRpbmcgdGhlIGZpbmdlciBzbyB3ZSBkb24ndCBzdGFydCBpbmVydGlhXG4gICAgICAgIGlmICgoTWF0aC5hYnMoc3BlZWRYKSA+IDAuMSB8fCBNYXRoLmFicyhzcGVlZFkpID4gMC4xKSAmJlxuICAgICAgICAgICAgKE1hdGguYWJzKHRoaXMuX2xhc3RNb3ZlZFgpID4gMiB8fCBNYXRoLmFicyh0aGlzLl9sYXN0TW92ZWRZKSA+IDIpKSB7XG4gICAgICAgICAgICB0aGlzLl9pbmVydGlhSW5pdChzcGVlZFgsIHNwZWVkWSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuSWd4U2Nyb2xsSW5lcnRpYURpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgICAgICAgdGhpcy5wcmV2ZW50UGFyZW50U2Nyb2xsKGV2ZW50LCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Ntb290aFdoZWVsU2Nyb2xsKGRlbHRhKSB7XG4gICAgICAgIHRoaXMuX25leHRZID0gdGhpcy5JZ3hTY3JvbGxJbmVydGlhU2Nyb2xsQ29udGFpbmVyLnNjcm9sbFRvcDtcbiAgICAgICAgdGhpcy5fbmV4dFggPSB0aGlzLklneFNjcm9sbEluZXJ0aWFTY3JvbGxDb250YWluZXIuc2Nyb2xsTGVmdDtcbiAgICAgICAgbGV0IHggPSAtMTtcbiAgICAgICAgbGV0IHdoZWVsSW5lcnRpYWxBbmltYXRpb24gPSBudWxsO1xuICAgICAgICBjb25zdCBpbmVydGlhV2hlZWxTdGVwID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHggPiAxKSB7XG4gICAgICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUod2hlZWxJbmVydGlhbEFuaW1hdGlvbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbmV4dFNjcm9sbCA9ICgoLTMgKiB4ICogeCArIDMpICogZGVsdGEgKiAyKSAqIHRoaXMuc21vb3RoaW5nU3RlcDtcbiAgICAgICAgICAgIGlmICh0aGlzLklneFNjcm9sbEluZXJ0aWFEaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9uZXh0WSArPSBuZXh0U2Nyb2xsO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvWSh0aGlzLl9uZXh0WSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX25leHRYICs9IG5leHRTY3JvbGw7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9YKHRoaXMuX25leHRYKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vY29udGludWUgdGhlIGluZXJ0aWFcbiAgICAgICAgICAgIHggKz0gMC4wOCAqICgxIC8gdGhpcy5zbW9vdGhpbmdEdXJhdGlvbik7XG4gICAgICAgICAgICB3aGVlbEluZXJ0aWFsQW5pbWF0aW9uID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGluZXJ0aWFXaGVlbFN0ZXApO1xuICAgICAgICB9O1xuICAgICAgICB3aGVlbEluZXJ0aWFsQW5pbWF0aW9uID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGluZXJ0aWFXaGVlbFN0ZXApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5lcnRpYUluaXQoc3BlZWRYLCBzcGVlZFkpIHtcbiAgICAgICAgY29uc3Qgc3RlcE1vZGlmZXIgPSB0aGlzLmluZXJ0aWFTdGVwO1xuICAgICAgICBjb25zdCBpbmVydGlhRHVyYXRpb24gPSB0aGlzLmluZXJ0aWFEdXJhdGlvbjtcbiAgICAgICAgbGV0IHggPSAwO1xuICAgICAgICB0aGlzLl9uZXh0WCA9IHRoaXMuSWd4U2Nyb2xsSW5lcnRpYVNjcm9sbENvbnRhaW5lci5zY3JvbGxMZWZ0O1xuICAgICAgICB0aGlzLl9uZXh0WSA9IHRoaXMuSWd4U2Nyb2xsSW5lcnRpYVNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3A7XG5cbiAgICAgICAgLy8gU2V0cyB0aW1lb3V0IHVudGlsIGV4ZWN1dGluZyBuZXh0IG1vdmVtZW50IGl0ZXJhdGlvbiBvZiB0aGUgaW5lcnRpYVxuICAgICAgICBjb25zdCBpbmVydGlhU3RlcCA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmICh4ID4gNikge1xuICAgICAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3RvdWNoSW5lcnRpYUFuaW1JRCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoTWF0aC5hYnMoc3BlZWRYKSA+IE1hdGguYWJzKHNwZWVkWSkpIHtcbiAgICAgICAgICAgICAgICB4ICs9IDAuMDUgLyAoMSAqIGluZXJ0aWFEdXJhdGlvbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHggKz0gMC4wNSAvICgxICogaW5lcnRpYUR1cmF0aW9uKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHggPD0gMSkge1xuICAgICAgICAgICAgICAgIC8vIFdlIHVzZSBjb25zdGFudCBxdWF0aW9uIHRvIGRldGVybWluZSB0aGUgb2Zmc2V0IHdpdGhvdXQgc3BlZWQgZmFsbG9mZiBiZWZvciB4IHJlYWNoZXMgMVxuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhzcGVlZFkpIDw9IE1hdGguYWJzKHNwZWVkWCkgKiB0aGlzLmluZXJ0aWFEZWx0YVkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbmV4dFggKz0gMSAqIHNwZWVkWCAqIDE1ICogc3RlcE1vZGlmZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhzcGVlZFkpID49IE1hdGguYWJzKHNwZWVkWCkgKiB0aGlzLmluZXJ0aWFEZWx0YVgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbmV4dFkgKz0gMSAqIHNwZWVkWSAqIDE1ICogc3RlcE1vZGlmZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBXZSB1c2UgdGhlIHF1YXRpb24gXCJ5ID0gMiAvICh4ICsgMC41NSkgLSAwLjNcIiB0byBkZXRlcm1pbmUgdGhlIG9mZnNldFxuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhzcGVlZFkpIDw9IE1hdGguYWJzKHNwZWVkWCkgKiB0aGlzLmluZXJ0aWFEZWx0YVkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbmV4dFggKz0gTWF0aC5hYnMoMiAvICh4ICsgMC41NSkgLSAwLjMpICogc3BlZWRYICogMTUgKiBzdGVwTW9kaWZlcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHNwZWVkWSkgPj0gTWF0aC5hYnMoc3BlZWRYKSAqIHRoaXMuaW5lcnRpYURlbHRhWCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9uZXh0WSArPSBNYXRoLmFicygyIC8gKHggKyAwLjU1KSAtIDAuMykgKiBzcGVlZFkgKiAxNSAqIHN0ZXBNb2RpZmVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBtaXhlZCBlbnZpcm9ubWVudCB3ZSB1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLiBpLmUuIHRvdWNoc2NyZWVuICsgbW91c2VcbiAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvKHRoaXMuX25leHRYLCB0aGlzLl9uZXh0WSk7XG5cbiAgICAgICAgICAgIHRoaXMuX3RvdWNoSW5lcnRpYUFuaW1JRCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShpbmVydGlhU3RlcCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gU3RhcnQgaW5lcnRpYSBhbmQgY29udGludWUgaXQgcmVjdXJzaXZlbHlcbiAgICAgICAgdGhpcy5fdG91Y2hJbmVydGlhQW5pbUlEID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGluZXJ0aWFTdGVwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGNBeGlzQ29vcmRzKHRhcmdldCwgbWluLCBtYXgpIHtcbiAgICAgICAgaWYgKHRhcmdldCA9PT0gdW5kZWZpbmVkIHx8IHRhcmdldCA8IG1pbikge1xuICAgICAgICAgICAgdGFyZ2V0ID0gbWluO1xuICAgICAgICB9IGVsc2UgaWYgKHRhcmdldCA+IG1heCkge1xuICAgICAgICAgICAgdGFyZ2V0ID0gbWF4O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zY3JvbGxUbyhkZXN0WCwgZGVzdFkpIHtcbiAgICAgICAgLy8gVE9ETyBUcmlnZ2VyIHNjcm9sbGluZyBldmVudD9cbiAgICAgICAgY29uc3Qgc2Nyb2xsZWRYID0gdGhpcy5fc2Nyb2xsVG9YKGRlc3RYKTtcbiAgICAgICAgY29uc3Qgc2Nyb2xsZWRZID0gdGhpcy5fc2Nyb2xsVG9ZKGRlc3RZKTtcblxuICAgICAgICByZXR1cm4geyB4OiBzY3JvbGxlZFgsIHk6IHNjcm9sbGVkWSB9O1xuICAgIH1cbiAgICBwcml2YXRlIF9zY3JvbGxUb1goZGVzdCkge1xuICAgICAgICB0aGlzLklneFNjcm9sbEluZXJ0aWFTY3JvbGxDb250YWluZXIuc2Nyb2xsTGVmdCA9IGRlc3Q7XG4gICAgfVxuICAgIHByaXZhdGUgX3Njcm9sbFRvWShkZXN0KSB7XG4gICAgICAgIHRoaXMuSWd4U2Nyb2xsSW5lcnRpYVNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgPSBkZXN0O1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cblxuXG4iXX0=
409
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsX2luZXJ0aWEuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RpcmVjdGl2ZXMvc2Nyb2xsLWluZXJ0aWEvc2Nyb2xsX2luZXJ0aWEuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF5QyxNQUFNLGVBQWUsQ0FBQzs7QUFFeEY7O0dBRUc7QUFLSCxNQUFNLE9BQU8seUJBQXlCO0lBcURsQyxZQUFvQixPQUFtQixFQUFVLEtBQWE7UUFBMUMsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQVE7UUE1Q3ZELGNBQVMsR0FBRyxFQUFFLENBQUM7UUFHZixnQkFBVyxHQUFHLEdBQUcsQ0FBQztRQUdsQixrQkFBYSxHQUFHLEdBQUcsQ0FBQztRQUdwQixzQkFBaUIsR0FBRyxHQUFHLENBQUM7UUFHeEIsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFHckIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFHbEIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFHbEIsb0JBQWUsR0FBRyxHQUFHLENBQUM7UUFVckIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFVbkIsd0JBQW1CLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUM5QiwyQkFBc0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRTBCLENBQUM7SUFFNUQsUUFBUTtRQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztZQUN2RyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEs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SUMsZUFBZTtzQkFEckIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsZUFBZTtzQkFEckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIEVsZW1lbnRSZWYsIE5nWm9uZSwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneFNjcm9sbEluZXJ0aWFdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneFNjcm9sbEluZXJ0aWFEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBJZ3hTY3JvbGxJbmVydGlhRGlyZWN0aW9uOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBJZ3hTY3JvbGxJbmVydGlhU2Nyb2xsQ29udGFpbmVyOiBhbnk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB3aGVlbFN0ZXAgPSA1MDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGluZXJ0aWFTdGVwID0gMS41O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc21vb3RoaW5nU3RlcCA9IDEuNTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNtb290aGluZ0R1cmF0aW9uID0gMC41O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc3dpcGVUb2xlcmFuY2VYID0gMjA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpbmVydGlhRGVsdGFZID0gMztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGluZXJ0aWFEZWx0YVggPSAyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaW5lcnRpYUR1cmF0aW9uID0gMC41O1xuXG4gICAgcHJpdmF0ZSBfdG91Y2hJbmVydGlhQW5pbUlEO1xuICAgIHByaXZhdGUgX3N0YXJ0WDtcbiAgICBwcml2YXRlIF9zdGFydFk7XG4gICAgcHJpdmF0ZSBfdG91Y2hTdGFydFg7XG4gICAgcHJpdmF0ZSBfdG91Y2hTdGFydFk7XG4gICAgcHJpdmF0ZSBfbGFzdFRvdWNoRW5kO1xuICAgIHByaXZhdGUgX2xhc3RUb3VjaFg7XG4gICAgcHJpdmF0ZSBfbGFzdFRvdWNoWTtcbiAgICBwcml2YXRlIF9zYXZlZFNwZWVkc1ggPSBbXTtcbiAgICBwcml2YXRlIF9zYXZlZFNwZWVkc1k7XG4gICAgcHJpdmF0ZSBfdG90YWxNb3ZlZFg7XG4gICAgcHJpdmF0ZSBfb2Zmc2V0UmVjb3JkZWQ7XG4gICAgcHJpdmF0ZSBfb2Zmc2V0RGlyZWN0aW9uO1xuICAgIHByaXZhdGUgX2xhc3RNb3ZlZFg7XG4gICAgcHJpdmF0ZSBfbGFzdE1vdmVkWTtcbiAgICBwcml2YXRlIF9uZXh0WDtcbiAgICBwcml2YXRlIF9uZXh0WTtcbiAgICBwcml2YXRlIHBhcmVudEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBiYXNlRGVsdGFNdWx0aXBsaWVyID0gMSAvIDEyMDtcbiAgICBwcml2YXRlIGZpcmVmb3hEZWx0YU11bHRpcGxpZXIgPSAxIC8gMzA7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgX3pvbmU6IE5nWm9uZSkgeyB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCB8fCB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRFbGVtID0gdGhpcy5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgdGFyZ2V0RWxlbS5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIHRoaXMub25XaGVlbC5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAgIHRhcmdldEVsZW0uYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMub25Ub3VjaFN0YXJ0LmJpbmQodGhpcykpO1xuICAgICAgICAgICAgdGFyZ2V0RWxlbS5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLm9uVG91Y2hNb3ZlLmJpbmQodGhpcykpO1xuICAgICAgICAgICAgdGFyZ2V0RWxlbS5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRoaXMub25Ub3VjaEVuZC5iaW5kKHRoaXMpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldEVsZW0gPSB0aGlzLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoIXRhcmdldEVsZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXJnZXRFbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgdGhpcy5vbldoZWVsKTtcbiAgICAgICAgICAgIHRhcmdldEVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMub25Ub3VjaFN0YXJ0KTtcbiAgICAgICAgICAgIHRhcmdldEVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5vblRvdWNoTW92ZSk7XG4gICAgICAgICAgICB0YXJnZXRFbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5vblRvdWNoRW5kKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gc2Nyb2xsaW5nIHdpdGggdGhlIG1vdXNlIHdoZWVsIG9yIHVzaW5nIHRvdWNocGFkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9uV2hlZWwoZXZ0KSB7XG4gICAgICAgIC8vIGlmIG5vIHNjcm9sbGJhciByZXR1cm5cbiAgICAgICAgaWYgKCF0aGlzLklneFNjcm9sbEluZXJ0aWFTY3JvbGxDb250YWluZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiBjdHJsIGtleSBpcyBwcmVzc2VkIGFuZCB0aGUgdXNlciB3YW50IHRvIHpvb20gaW4vb3V0IHRoZSBwYWdlXG4gICAgICAgIGlmIChldnQuY3RybEtleSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzY3JvbGxEZWx0YVg7XG4gICAgICAgIGxldCBzY3JvbGxEZWx0YVk7XG4gICAgICAgIGNvbnN0IHNjcm9sbFN0ZXAgPSB0aGlzLndoZWVsU3RlcDtcbiAgICAgICAgY29uc3QgbWluV2hlZWxTdGVwID0gMSAvIHRoaXMud2hlZWxTdGVwO1xuICAgICAgICBjb25zdCBzbW9vdGhpbmcgPSB0aGlzLnNtb290aGluZ0R1cmF0aW9uICE9PSAwO1xuXG4gICAgICAgIHRoaXMuX3N0YXJ0WCA9IHRoaXMuSWd4U2Nyb2xsSW5lcnRpYVNjcm9sbENvbnRhaW5lci5zY3JvbGxMZWZ0O1xuICAgICAgICB0aGlzLl9zdGFydFkgPSB0aGlzLklneFNjcm9sbEluZXJ0aWFTY3JvbGxDb250YWluZXIuc2Nyb2xsVG9wO1xuXG4gICAgICAgIGlmIChldnQud2hlZWxEZWx0YVgpIHtcbiAgICAgICAgICAgIC8qIE9wdGlvbiBzdXBwb3J0ZWQgb24gQ2hyb21lLCBTYWZhcmksIE9wZXJhLlxuICAgICAgICAgICAgLyogMTIwIGlzIGRlZmF1bHQgZm9yIG1vdXNld2hlZWwgb24gdGhlc2UgYnJvd3NlcnMuIE90aGVyIHZhbHVlcyBhcmUgZm9yIHRyYWNrcGFkcyAqL1xuICAgICAgICAgICAgc2Nyb2xsRGVsdGFYID0gLWV2dC53aGVlbERlbHRhWCAqIHRoaXMuYmFzZURlbHRhTXVsdGlwbGllcjtcblxuICAgICAgICAgICAgaWYgKC1taW5XaGVlbFN0ZXAgPCBzY3JvbGxEZWx0YVggJiYgc2Nyb2xsRGVsdGFYIDwgbWluV2hlZWxTdGVwKSB7XG4gICAgICAgICAgICAgICAgc2Nyb2xsRGVsdGFYID0gTWF0aC5zaWduKHNjcm9sbERlbHRhWCkgKiBtaW5XaGVlbFN0ZXA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZXZ0LmRlbHRhWCkge1xuICAgICAgICAgICAgLyogRm9yIG90aGVyIGJyb3dzZXJzIHRoYXQgZG9uJ3QgcHJvdmlkZSB3aGVlbERlbHRhLCB1c2UgdGhlIGRlbHRhWSB0byBkZXRlcm1pbmUgZGlyZWN0aW9uIGFuZCBwYXNzIGRlZmF1bHQgdmFsdWVzLiAqL1xuICAgICAgICAgICAgY29uc3QgZGVsdGFTY2FsZWRYID0gZXZ0LmRlbHRhWCAqIChldnQuZGVsdGFNb2RlID09PSAwID8gdGhpcy5maXJlZm94RGVsdGFNdWx0aXBsaWVyIDogMSk7XG4gICAgICAgICAgICBzY3JvbGxEZWx0YVggPSB0aGlzLmNhbGNBeGlzQ29vcmRzKGRlbHRhU2NhbGVkWCwgLTEsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqIEdldCBkZWx0YSBmb3IgdGhlIFkgYXhpcyAqL1xuICAgICAgICBpZiAoZXZ0LndoZWVsRGVsdGFZKSB7XG4gICAgICAgICAgICAvKiBPcHRpb24gc3VwcG9ydGVkIG9uIENocm9tZSwgU2FmYXJpLCBPcGVyYS5cbiAgICAgICAgICAgIC8qIDEyMCBpcyBkZWZhdWx0IGZvciBtb3VzZXdoZWVsIG9uIHRoZXNlIGJyb3dzZXJzLiBPdGhlciB2YWx1ZXMgYXJlIGZvciB0cmFja3BhZHMgKi9cbiAgICAgICAgICAgIHNjcm9sbERlbHRhWSA9IC1ldnQud2hlZWxEZWx0YVkgKiB0aGlzLmJhc2VEZWx0YU11bHRpcGxpZXI7XG5cbiAgICAgICAgICAgIGlmICgtbWluV2hlZWxTdGVwIDwgc2Nyb2xsRGVsdGFZICYmIHNjcm9sbERlbHRhWSA8IG1pbldoZWVsU3RlcCkge1xuICAgICAgICAgICAgICAgIHNjcm9sbERlbHRhWSA9IE1hdGguc2lnbihzY3JvbGxEZWx0YVkpICogbWluV2hlZWxTdGVwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGV2dC5kZWx0YVkpIHtcbiAgICAgICAgICAgIC8qIEZvciBvdGhlciBicm93c2VycyB0aGF0IGRvbid0IHByb3ZpZGUgd2hlZWxEZWx0YSwgdXNlIHRoZSBkZWx0YVkgdG8gZGV0ZXJtaW5lIGRpcmVjdGlvbiBhbmQgcGFzcyBkZWZhdWx0IHZhbHVlcy4gKi9cbiAgICAgICAgICAgIGNvbnN0IGRlbHRhU2NhbGVkWSA9IGV2dC5kZWx0YVkgKiAoZXZ0LmRlbHRhTW9kZSA9PT0gMCA/IHRoaXMuZmlyZWZveERlbHRhTXVsdGlwbGllciA6IDEpO1xuICAgICAgICAgICAgc2Nyb2xsRGVsdGFZID0gdGhpcy5jYWxjQXhpc0Nvb3JkcyhkZWx0YVNjYWxlZFksIC0xLCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldnQuY29tcG9zZWRQYXRoICYmIHRoaXMuZGlkQ2hpbGRTY3JvbGwoZXZ0LCBzY3JvbGxEZWx0YVgsIHNjcm9sbERlbHRhWSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzY3JvbGxEZWx0YVggJiYgdGhpcy5JZ3hTY3JvbGxJbmVydGlhRGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRMZWZ0ID0gdGhpcy5fc3RhcnRYICsgc2Nyb2xsRGVsdGFYICogc2Nyb2xsU3RlcDtcbiAgICAgICAgICAgIGlmICghc21vb3RoaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9YKG5leHRMZWZ0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc21vb3RoV2hlZWxTY3JvbGwoc2Nyb2xsRGVsdGFYKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1heFNjcm9sbExlZnQgPSBwYXJzZUludCh0aGlzLklneFNjcm9sbEluZXJ0aWFTY3JvbGxDb250YWluZXIuY2hpbGRyZW5bMF0uc3R5bGUud2lkdGgsIDEwKTtcbiAgICAgICAgICAgIGlmICgwIDwgbmV4dExlZnQgJiYgbmV4dExlZnQgPCBtYXhTY3JvbGxMZWZ0KSB7XG4gICAgICAgICAgICAgICAgLy8gUHJldmVudCBuYXZpZ2F0aW5nIHRocm91Z2ggcGFnZXMgd2hlbiBzY3JvbGxpbmcgb24gTWFjXG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZXZ0LnNoaWZ0S2V5ICYmIHNjcm9sbERlbHRhWSAmJiB0aGlzLklneFNjcm9sbEluZXJ0aWFEaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykge1xuICAgICAgICAgICAgaWYgKCFzbW9vdGhpbmcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5fc3RhcnRYICsgc2Nyb2xsRGVsdGFZICogc2Nyb2xsU3RlcDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zY3JvbGxUb1goc3RlcCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Ntb290aFdoZWVsU2Nyb2xsKHNjcm9sbERlbHRhWSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWV2dC5zaGlmdEtleSAmJiBzY3JvbGxEZWx0YVkgJiYgdGhpcy5JZ3hTY3JvbGxJbmVydGlhRGlyZWN0aW9uID09PSAndmVydGljYWwnKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0VG9wID0gdGhpcy5fc3RhcnRZICsgc2Nyb2xsRGVsdGFZICogc2Nyb2xsU3RlcDtcbiAgICAgICAgICAgIGlmICghc21vb3RoaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9ZKG5leHRUb3ApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zbW9vdGhXaGVlbFNjcm9sbChzY3JvbGxEZWx0YVkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wcmV2ZW50UGFyZW50U2Nyb2xsKGV2dCwgdHJ1ZSwgbmV4dFRvcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogV2hlbiB0aGVyZSBpcyBzdGlsbCByb29tIHRvIHNjcm9sbCB1cC9kb3duIHByZXZlbnQgdGhlIHBhcmVudCBlbGVtZW50cyBmcm9tIHNjcm9sbGluZyB0b28uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHByZXZlbnRQYXJlbnRTY3JvbGwoZXZ0LCBwcmV2ZW50RGVmYXVsdCwgbmV4dFRvcCA9IDApIHtcbiAgICAgICAgY29uc3QgY3VyU2Nyb2xsVG9wID0gbmV4dFRvcCA9PT0gMCA/IHRoaXMuSWd4U2Nyb2xsSW5lcnRpYVNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgOiBuZXh0VG9wO1xuICAgICAgICBjb25zdCBtYXhTY3JvbGxUb3AgPSB0aGlzLklneFNjcm9sbEluZXJ0aWFTY3JvbGxDb250YWluZXIuY2hpbGRyZW5bMF0uc2Nyb2xsSGVpZ2h0IC1cbiAgICAgICAgICAgIHRoaXMuSWd4U2Nyb2xsSW5lcnRpYVNjcm9sbENvbnRhaW5lci5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGlmICgwIDwgY3VyU2Nyb2xsVG9wICYmIGN1clNjcm9sbFRvcCA8IG1heFNjcm9sbFRvcCkge1xuICAgICAgICAgICAgaWYgKHByZXZlbnREZWZhdWx0KSB7XG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXZ0LnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICAgICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDaGVja3MgaWYgdGhlIHdoZWVsIGV2ZW50IHdvdWxkIGhhdmUgc2Nyb2xsZWQgYW4gZWxlbWVudCB1bmRlciB0aGUgZGlzcGxheSBjb250YWluZXJcbiAgICAgKiBpbiBET00gdHJlZSBzbyB0aGF0IGl0IGNhbiBjb3JyZWN0bHkgYmUgaWdub3JlZCB1bnRpbCB0aGF0IGVsZW1lbnQgY2FuIG5vIGxvbmdlciBiZSBzY3JvbGxlZC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZGlkQ2hpbGRTY3JvbGwoZXZ0LCBzY3JvbGxEZWx0YVgsIHNjcm9sbERlbHRhWSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBwYXRoID0gZXZ0LmNvbXBvc2VkUGF0aCgpO1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIHdoaWxlIChpIDwgcGF0aC5sZW5ndGggJiYgcGF0aFtpXS5sb2NhbE5hbWUgIT09ICdpZ3gtZGlzcGxheS1jb250YWluZXInKSB7XG4gICAgICAgICAgICBjb25zdCBlID0gcGF0aFtpKytdO1xuICAgICAgICAgICAgaWYgKGUuc2Nyb2xsSGVpZ2h0ID4gZS5jbGllbnRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvdmVyZmxvd1kgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKVsnb3ZlcmZsb3cteSddO1xuICAgICAgICAgICAgICAgIGlmIChvdmVyZmxvd1kgPT09ICdhdXRvJyB8fCBvdmVyZmxvd1kgPT09ICdzY3JvbGwnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzY3JvbGxEZWx0YVkgPiAwICYmIGUuc2Nyb2xsSGVpZ2h0IC0gTWF0aC5hYnMoTWF0aC5yb3VuZChlLnNjcm9sbFRvcCkpICE9PSBlLmNsaWVudEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbERlbHRhWSA8IDAgJiYgZS5zY3JvbGxUb3AgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUuc2Nyb2xsV2lkdGggPiBlLmNsaWVudFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3ZlcmZsb3dYID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZSlbJ292ZXJmbG93LXgnXTtcbiAgICAgICAgICAgICAgICBpZiAob3ZlcmZsb3dYID09PSAnYXV0bycgfHwgb3ZlcmZsb3dYID09PSAnc2Nyb2xsJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsRGVsdGFYID4gMCAmJiBlLnNjcm9sbFdpZHRoIC0gTWF0aC5hYnMoTWF0aC5yb3VuZChlLnNjcm9sbExlZnQpKSAhPT0gZS5jbGllbnRXaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbERlbHRhWCA8IDAgJiYgZS5zY3JvbGxMZWZ0ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHRoZSBmaXJzdCBtb21lbnQgd2Ugc3RhcnQgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgY29udGVudCBvbiBhIHRvdWNoIGRldmljZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblRvdWNoU3RhcnQoZXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLklneFNjcm9sbEluZXJ0aWFTY3JvbGxDb250YWluZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHN0b3BzIGFueSBjdXJyZW50IG9uZ29pbmcgaW5lcnRpYVxuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl90b3VjaEluZXJ0aWFBbmltSUQpO1xuXG4gICAgICAgIGNvbnN0IHRvdWNoID0gZXZlbnQudG91Y2hlc1swXTtcblxuICAgICAgICB0aGlzLl9zdGFydFggPSB0aGlzLklneFNjcm9sbEluZXJ0aWFTY3JvbGxDb250YWluZXIuc2Nyb2xsTGVmdDtcblxuICAgICAgICB0aGlzLl9zdGFydFkgPSB0aGlzLklneFNjcm9sbEluZXJ0aWFTY3JvbGxDb250YWluZXIuc2Nyb2xsVG9wO1xuXG4gICAgICAgIHRoaXMuX3RvdWNoU3RhcnRYID0gdG91Y2gucGFnZVg7XG4gICAgICAgIHRoaXMuX3RvdWNoU3RhcnRZID0gdG91Y2gucGFnZVk7XG5cbiAgICAgICAgdGhpcy5fbGFzdFRvdWNoRW5kID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIHRoaXMuX2xhc3RUb3VjaFggPSB0b3VjaC5wYWdlWDtcbiAgICAgICAgdGhpcy5fbGFzdFRvdWNoWSA9IHRvdWNoLnBhZ2VZO1xuICAgICAgICB0aGlzLl9zYXZlZFNwZWVkc1ggPSBbXTtcbiAgICAgICAgdGhpcy5fc2F2ZWRTcGVlZHNZID0gW107XG5cbiAgICAgICAgLy8gVmFycyByZWdhcmRpbmcgc3dpcGUgb2Zmc2V0XG4gICAgICAgIHRoaXMuX3RvdGFsTW92ZWRYID0gMDtcbiAgICAgICAgdGhpcy5fb2Zmc2V0UmVjb3JkZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fb2Zmc2V0RGlyZWN0aW9uID0gMDtcblxuICAgICAgICBpZiAodGhpcy5JZ3hTY3JvbGxJbmVydGlhRGlyZWN0aW9uID09PSAndmVydGljYWwnKSB7XG4gICAgICAgICAgICB0aGlzLnByZXZlbnRQYXJlbnRTY3JvbGwoZXZlbnQsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBGdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHdlIG5lZWQgdG8gc2Nyb2xsIHRoZSBjb250ZW50IGJhc2VkIG9uIHRvdWNoIGludGVyYWN0aW9uc1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblRvdWNoTW92ZShldmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuSWd4U2Nyb2xsSW5lcnRpYVNjcm9sbENvbnRhaW5lcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdG91Y2ggPSBldmVudC50b3VjaGVzWzBdO1xuICAgICAgICBjb25zdCBkZXN0WCA9IHRoaXMuX3N0YXJ0WCArICh0aGlzLl90b3VjaFN0YXJ0WCAtIHRvdWNoLnBhZ2VYKSAqIE1hdGguc2lnbih0aGlzLmluZXJ0aWFTdGVwKTtcbiAgICAgICAgY29uc3QgZGVzdFkgPSB0aGlzLl9zdGFydFkgKyAodGhpcy5fdG91Y2hTdGFydFkgLSB0b3VjaC5wYWdlWSkgKiBNYXRoLnNpZ24odGhpcy5pbmVydGlhU3RlcCk7XG5cbiAgICAgICAgLyogSGFuZGxlIGNvbXBsZXggdG91Y2htb3ZlcyB3aGVuIHN3aXBlIHN0b3BzIGJ1dCB0aGUgdG9jaCBkb2Vzbid0IGVuZCBhbmQgdGhlbiBhIHN3aXBlIGlzIGluaXRpYXRlZCBhZ2FpbiAqL1xuICAgICAgICAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cbiAgICAgICAgY29uc3QgdGltZUZyb21MYXN0VG91Y2ggPSAobmV3IERhdGUoKS5nZXRUaW1lKCkpIC0gdGhpcy5fbGFzdFRvdWNoRW5kO1xuICAgICAgICBpZiAodGltZUZyb21MYXN0VG91Y2ggIT09IDAgJiYgdGltZUZyb21MYXN0VG91Y2ggPCAxMDApIHtcbiAgICAgICAgICAgIGNvbnN0IHNwZWVkWCA9ICh0aGlzLl9sYXN0VG91Y2hYIC0gdG91Y2gucGFnZVgpIC8gdGltZUZyb21MYXN0VG91Y2g7XG4gICAgICAgICAgICBjb25zdCBzcGVlZFkgPSAodGhpcy5fbGFzdFRvdWNoWSAtIHRvdWNoLnBhZ2VZKSAvIHRpbWVGcm9tTGFzdFRvdWNoO1xuXG4gICAgICAgICAgICAvLyBTYXZlIHRoZSBsYXN0IDUgc3BlZWRzIGJldHdlZW4gdHdvIHRvdWNobW92ZXMgb24gWCBheGlzXG4gICAgICAgICAgICBpZiAodGhpcy5fc2F2ZWRTcGVlZHNYLmxlbmd0aCA8IDUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZlZFNwZWVkc1gucHVzaChzcGVlZFgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZlZFNwZWVkc1guc2hpZnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZlZFNwZWVkc1gucHVzaChzcGVlZFgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTYXZlIHRoZSBsYXN0IDUgc3BlZWRzIGJldHdlZW4gdHdvIHRvdWNobW92ZXMgb24gWSBheGlzXG4gICAgICAgICAgICBpZiAodGhpcy5fc2F2ZWRTcGVlZHNZLmxlbmd0aCA8IDUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZlZFNwZWVkc1kucHVzaChzcGVlZFkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZlZFNwZWVkc1kuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZlZFNwZWVkc1kucHVzaChzcGVlZFkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2xhc3RUb3VjaEVuZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICB0aGlzLl9sYXN0TW92ZWRYID0gdGhpcy5fbGFzdFRvdWNoWCAtIHRvdWNoLnBhZ2VYO1xuICAgICAgICB0aGlzLl9sYXN0TW92ZWRZID0gdGhpcy5fbGFzdFRvdWNoWSAtIHRvdWNoLnBhZ2VZO1xuICAgICAgICB0aGlzLl9sYXN0VG91Y2hYID0gdG91Y2gucGFnZVg7XG4gICAgICAgIHRoaXMuX2xhc3RUb3VjaFkgPSB0b3VjaC5wYWdlWTtcblxuICAgICAgICB0aGlzLl90b3RhbE1vdmVkWCArPSB0aGlzLl9sYXN0TW92ZWRYO1xuXG4gICAgICAgIC8qXHREbyBub3Qgc2Nyb2xsIHVzaW5nIHRvdWNoIHVudGlsbCBvdXQgb2YgdGhlIHN3aXBlVG9sZXJhbmNlWCBib3VuZHMgKi9cbiAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMuX3RvdGFsTW92ZWRYKSA8IHRoaXMuc3dpcGVUb2xlcmFuY2VYICYmICF0aGlzLl9vZmZzZXRSZWNvcmRlZCkge1xuICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG8odGhpcy5fc3RhcnRYLCBkZXN0WSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKlx0UmVjb3JkIHRoZSBkaXJlY3Rpb24gdGhlIGZpcnN0IHRpbWUgd2UgYXJlIG91dCBvZiB0aGUgc3dpcGVUb2xlcmFuY2VYIGJvdW5kcy5cbiAgICAgICAgICAgICpcdFRoYXQgd2F5IHdlIGtub3cgd2hpY2ggZGlyZWN0aW9uIHdlIGFwcGx5IHRoZSBvZmZzZXQgc28gaXQgZG9lc24ndCBoaWNrdXAgd2hlbiBtb3Zpbmcgb3V0IG9mIHRoZSBzd2lwZVRvbGVyYW5jZVggYm91bmRzICovXG4gICAgICAgICAgICBpZiAoIXRoaXMuX29mZnNldFJlY29yZGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb2Zmc2V0RGlyZWN0aW9uID0gTWF0aC5zaWduKGRlc3RYIC0gdGhpcy5fc3RhcnRYKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9vZmZzZXRSZWNvcmRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8qXHRTY3JvbGwgd2l0aCBvZmZzZXQgYW1tb3V0IG9mIHN3aXBlVG9sZXJhbmNlWCBpbiB0aGUgZGlyZWN0aW9uIHdlIGhhdmUgZXhpdGVkIHRoZSBib3VuZHMgYW5kXG4gICAgICAgICAgICBkb24ndCBjaGFuZ2UgaXQgYWZ0ZXIgdGhhdCBldmVyIHVudGlsIHRvdWNoZW5kIGFuZCBhZ2FpbiB0b3VjaHN0YXJ0ICovXG4gICAgICAgICAgICB0aGlzLl9zY3JvbGxUbyhkZXN0WCAtIHRoaXMuX29mZnNldERpcmVjdGlvbiAqIHRoaXMuc3dpcGVUb2xlcmFuY2VYLCBkZXN0WSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbiBTYWZhcmkgcHJldmVudGluZyB0aGUgdG91Y2htb3ZlIHdvdWxkIHByZXZlbnQgZGVmYXVsdCBwYWdlIHNjcm9sbCBiZWhhdmlvdXIgZXZlbiBpZiB0aGVyZSBpcyB0aGUgZWxlbWVudCBkb2Vzbid0IGhhdmUgb3ZlcmZsb3dcbiAgICAgICAgaWYgKHRoaXMuSWd4U2Nyb2xsSW5lcnRpYURpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgICAgICAgdGhpcy5wcmV2ZW50UGFyZW50U2Nyb2xsKGV2ZW50LCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblRvdWNoRW5kKGV2ZW50KSB7XG4gICAgICAgIGxldCBzcGVlZFggPSAwO1xuICAgICAgICBsZXQgc3BlZWRZID0gMDtcblxuICAgICAgICAvLyBzYXZlZFNwZWVkc1ggYW5kIHNhdmVkU3BlZWRzWSBoYXZlIHNhbWUgbGVuZ3RoXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fc2F2ZWRTcGVlZHNYLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBzcGVlZFggKz0gdGhpcy5fc2F2ZWRTcGVlZHNYW2ldO1xuICAgICAgICAgICAgc3BlZWRZICs9IHRoaXMuX3NhdmVkU3BlZWRzWVtpXTtcbiAgICAgICAgfVxuICAgICAgICBzcGVlZFggPSB0aGlzLl9zYXZlZFNwZWVkc1gubGVuZ3RoID8gc3BlZWRYIC8gdGhpcy5fc2F2ZWRTcGVlZHNYLmxlbmd0aCA6IDA7XG4gICAgICAgIHNwZWVkWSA9IHRoaXMuX3NhdmVkU3BlZWRzWC5sZW5ndGggPyBzcGVlZFkgLyB0aGlzLl9zYXZlZFNwZWVkc1kubGVuZ3RoIDogMDtcblxuICAgICAgICAvLyBVc2UgdGhlIGxhc3RNb3ZlZFggYW5kIGxhc3RNb3ZlZFkgdG8gZGV0ZXJtaW5lIGlmIHRoZSBzd2lwZSBzdG9wcyB3aXRob3V0IGxpZnRpbmcgdGhlIGZpbmdlciBzbyB3ZSBkb24ndCBzdGFydCBpbmVydGlhXG4gICAgICAgIGlmICgoTWF0aC5hYnMoc3BlZWRYKSA+IDAuMSB8fCBNYXRoLmFicyhzcGVlZFkpID4gMC4xKSAmJlxuICAgICAgICAgICAgKE1hdGguYWJzKHRoaXMuX2xhc3RNb3ZlZFgpID4gMiB8fCBNYXRoLmFicyh0aGlzLl9sYXN0TW92ZWRZKSA+IDIpKSB7XG4gICAgICAgICAgICB0aGlzLl9pbmVydGlhSW5pdChzcGVlZFgsIHNwZWVkWSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuSWd4U2Nyb2xsSW5lcnRpYURpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgICAgICAgdGhpcy5wcmV2ZW50UGFyZW50U2Nyb2xsKGV2ZW50LCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Ntb290aFdoZWVsU2Nyb2xsKGRlbHRhKSB7XG4gICAgICAgIHRoaXMuX25leHRZID0gdGhpcy5JZ3hTY3JvbGxJbmVydGlhU2Nyb2xsQ29udGFpbmVyLnNjcm9sbFRvcDtcbiAgICAgICAgdGhpcy5fbmV4dFggPSB0aGlzLklneFNjcm9sbEluZXJ0aWFTY3JvbGxDb250YWluZXIuc2Nyb2xsTGVmdDtcbiAgICAgICAgbGV0IHggPSAtMTtcbiAgICAgICAgbGV0IHdoZWVsSW5lcnRpYWxBbmltYXRpb24gPSBudWxsO1xuICAgICAgICBjb25zdCBpbmVydGlhV2hlZWxTdGVwID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHggPiAxKSB7XG4gICAgICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUod2hlZWxJbmVydGlhbEFuaW1hdGlvbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbmV4dFNjcm9sbCA9ICgoLTMgKiB4ICogeCArIDMpICogZGVsdGEgKiAyKSAqIHRoaXMuc21vb3RoaW5nU3RlcDtcbiAgICAgICAgICAgIGlmICh0aGlzLklneFNjcm9sbEluZXJ0aWFEaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9uZXh0WSArPSBuZXh0U2Nyb2xsO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvWSh0aGlzLl9uZXh0WSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX25leHRYICs9IG5leHRTY3JvbGw7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9YKHRoaXMuX25leHRYKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vY29udGludWUgdGhlIGluZXJ0aWFcbiAgICAgICAgICAgIHggKz0gMC4wOCAqICgxIC8gdGhpcy5zbW9vdGhpbmdEdXJhdGlvbik7XG4gICAgICAgICAgICB3aGVlbEluZXJ0aWFsQW5pbWF0aW9uID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGluZXJ0aWFXaGVlbFN0ZXApO1xuICAgICAgICB9O1xuICAgICAgICB3aGVlbEluZXJ0aWFsQW5pbWF0aW9uID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGluZXJ0aWFXaGVlbFN0ZXApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5lcnRpYUluaXQoc3BlZWRYLCBzcGVlZFkpIHtcbiAgICAgICAgY29uc3Qgc3RlcE1vZGlmZXIgPSB0aGlzLmluZXJ0aWFTdGVwO1xuICAgICAgICBjb25zdCBpbmVydGlhRHVyYXRpb24gPSB0aGlzLmluZXJ0aWFEdXJhdGlvbjtcbiAgICAgICAgbGV0IHggPSAwO1xuICAgICAgICB0aGlzLl9uZXh0WCA9IHRoaXMuSWd4U2Nyb2xsSW5lcnRpYVNjcm9sbENvbnRhaW5lci5zY3JvbGxMZWZ0O1xuICAgICAgICB0aGlzLl9uZXh0WSA9IHRoaXMuSWd4U2Nyb2xsSW5lcnRpYVNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3A7XG5cbiAgICAgICAgLy8gU2V0cyB0aW1lb3V0IHVudGlsIGV4ZWN1dGluZyBuZXh0IG1vdmVtZW50IGl0ZXJhdGlvbiBvZiB0aGUgaW5lcnRpYVxuICAgICAgICBjb25zdCBpbmVydGlhU3RlcCA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmICh4ID4gNikge1xuICAgICAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3RvdWNoSW5lcnRpYUFuaW1JRCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoTWF0aC5hYnMoc3BlZWRYKSA+IE1hdGguYWJzKHNwZWVkWSkpIHtcbiAgICAgICAgICAgICAgICB4ICs9IDAuMDUgLyAoMSAqIGluZXJ0aWFEdXJhdGlvbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHggKz0gMC4wNSAvICgxICogaW5lcnRpYUR1cmF0aW9uKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHggPD0gMSkge1xuICAgICAgICAgICAgICAgIC8vIFdlIHVzZSBjb25zdGFudCBxdWF0aW9uIHRvIGRldGVybWluZSB0aGUgb2Zmc2V0IHdpdGhvdXQgc3BlZWQgZmFsbG9mZiBiZWZvciB4IHJlYWNoZXMgMVxuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhzcGVlZFkpIDw9IE1hdGguYWJzKHNwZWVkWCkgKiB0aGlzLmluZXJ0aWFEZWx0YVkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbmV4dFggKz0gMSAqIHNwZWVkWCAqIDE1ICogc3RlcE1vZGlmZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhzcGVlZFkpID49IE1hdGguYWJzKHNwZWVkWCkgKiB0aGlzLmluZXJ0aWFEZWx0YVgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbmV4dFkgKz0gMSAqIHNwZWVkWSAqIDE1ICogc3RlcE1vZGlmZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBXZSB1c2UgdGhlIHF1YXRpb24gXCJ5ID0gMiAvICh4ICsgMC41NSkgLSAwLjNcIiB0byBkZXRlcm1pbmUgdGhlIG9mZnNldFxuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhzcGVlZFkpIDw9IE1hdGguYWJzKHNwZWVkWCkgKiB0aGlzLmluZXJ0aWFEZWx0YVkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbmV4dFggKz0gTWF0aC5hYnMoMiAvICh4ICsgMC41NSkgLSAwLjMpICogc3BlZWRYICogMTUgKiBzdGVwTW9kaWZlcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHNwZWVkWSkgPj0gTWF0aC5hYnMoc3BlZWRYKSAqIHRoaXMuaW5lcnRpYURlbHRhWCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9uZXh0WSArPSBNYXRoLmFicygyIC8gKHggKyAwLjU1KSAtIDAuMykgKiBzcGVlZFkgKiAxNSAqIHN0ZXBNb2RpZmVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBtaXhlZCBlbnZpcm9ubWVudCB3ZSB1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLiBpLmUuIHRvdWNoc2NyZWVuICsgbW91c2VcbiAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvKHRoaXMuX25leHRYLCB0aGlzLl9uZXh0WSk7XG5cbiAgICAgICAgICAgIHRoaXMuX3RvdWNoSW5lcnRpYUFuaW1JRCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShpbmVydGlhU3RlcCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gU3RhcnQgaW5lcnRpYSBhbmQgY29udGludWUgaXQgcmVjdXJzaXZlbHlcbiAgICAgICAgdGhpcy5fdG91Y2hJbmVydGlhQW5pbUlEID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGluZXJ0aWFTdGVwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGNBeGlzQ29vcmRzKHRhcmdldCwgbWluLCBtYXgpIHtcbiAgICAgICAgaWYgKHRhcmdldCA9PT0gdW5kZWZpbmVkIHx8IHRhcmdldCA8IG1pbikge1xuICAgICAgICAgICAgdGFyZ2V0ID0gbWluO1xuICAgICAgICB9IGVsc2UgaWYgKHRhcmdldCA+IG1heCkge1xuICAgICAgICAgICAgdGFyZ2V0ID0gbWF4O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zY3JvbGxUbyhkZXN0WCwgZGVzdFkpIHtcbiAgICAgICAgLy8gVE9ETyBUcmlnZ2VyIHNjcm9sbGluZyBldmVudD9cbiAgICAgICAgY29uc3Qgc2Nyb2xsZWRYID0gdGhpcy5fc2Nyb2xsVG9YKGRlc3RYKTtcbiAgICAgICAgY29uc3Qgc2Nyb2xsZWRZID0gdGhpcy5fc2Nyb2xsVG9ZKGRlc3RZKTtcblxuICAgICAgICByZXR1cm4geyB4OiBzY3JvbGxlZFgsIHk6IHNjcm9sbGVkWSB9O1xuICAgIH1cbiAgICBwcml2YXRlIF9zY3JvbGxUb1goZGVzdCkge1xuICAgICAgICB0aGlzLklneFNjcm9sbEluZXJ0aWFTY3JvbGxDb250YWluZXIuc2Nyb2xsTGVmdCA9IGRlc3Q7XG4gICAgfVxuICAgIHByaXZhdGUgX3Njcm9sbFRvWShkZXN0KSB7XG4gICAgICAgIHRoaXMuSWd4U2Nyb2xsSW5lcnRpYVNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgPSBkZXN0O1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cblxuXG4iXX0=
@@ -6,15 +6,15 @@ import * as i0 from "@angular/core";
6
6
  * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components
7
7
  */
8
8
  export class IgxScrollInertiaModule {
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxScrollInertiaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxScrollInertiaModule, imports: [IgxScrollInertiaDirective], exports: [IgxScrollInertiaDirective] }); }
11
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxScrollInertiaModule }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxScrollInertiaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxScrollInertiaModule, imports: [IgxScrollInertiaDirective], exports: [IgxScrollInertiaDirective] }); }
11
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxScrollInertiaModule }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxScrollInertiaModule, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxScrollInertiaModule, decorators: [{
14
14
  type: NgModule,
15
15
  args: [{
16
16
  imports: [IgxScrollInertiaDirective],
17
17
  exports: [IgxScrollInertiaDirective]
18
18
  }]
19
19
  }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsX2luZXJ0aWEubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RpcmVjdGl2ZXMvc2Nyb2xsLWluZXJ0aWEvc2Nyb2xsX2luZXJ0aWEubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRXZFOzs7R0FHRztBQUtILE1BQU0sT0FBTyxzQkFBc0I7bUhBQXRCLHNCQUFzQjtvSEFBdEIsc0JBQXNCLFlBSHJCLHlCQUF5QixhQUN6Qix5QkFBeUI7b0hBRTFCLHNCQUFzQjs7Z0dBQXRCLHNCQUFzQjtrQkFKbEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMseUJBQXlCLENBQUM7aUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneFNjcm9sbEluZXJ0aWFEaXJlY3RpdmUgfSBmcm9tICcuL3Njcm9sbF9pbmVydGlhLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogQGhpZGRlblxuICogSU1QT1JUQU5UOiBUaGUgZm9sbG93aW5nIGlzIE5nTW9kdWxlIGV4cG9ydGVkIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBiZWZvcmUgc3RhbmRhbG9uZSBjb21wb25lbnRzXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0lneFNjcm9sbEluZXJ0aWFEaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtJZ3hTY3JvbGxJbmVydGlhRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hTY3JvbGxJbmVydGlhTW9kdWxlIHtcbn1cbiJdfQ==
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsX2luZXJ0aWEubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RpcmVjdGl2ZXMvc2Nyb2xsLWluZXJ0aWEvc2Nyb2xsX2luZXJ0aWEubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRXZFOzs7R0FHRztBQUtILE1BQU0sT0FBTyxzQkFBc0I7OEdBQXRCLHNCQUFzQjsrR0FBdEIsc0JBQXNCLFlBSHJCLHlCQUF5QixhQUN6Qix5QkFBeUI7K0dBRTFCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFKbEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMseUJBQXlCLENBQUM7aUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneFNjcm9sbEluZXJ0aWFEaXJlY3RpdmUgfSBmcm9tICcuL3Njcm9sbF9pbmVydGlhLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogQGhpZGRlblxuICogSU1QT1JUQU5UOiBUaGUgZm9sbG93aW5nIGlzIE5nTW9kdWxlIGV4cG9ydGVkIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBiZWZvcmUgc3RhbmRhbG9uZSBjb21wb25lbnRzXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0lneFNjcm9sbEluZXJ0aWFEaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtJZ3hTY3JvbGxJbmVydGlhRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hTY3JvbGxJbmVydGlhTW9kdWxlIHtcbn1cbiJdfQ==
@@ -4,14 +4,14 @@ import * as i0 from "@angular/core";
4
4
  * @hidden
5
5
  */
6
6
  export class IgxSuffixDirective {
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxSuffixDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-rc.4", type: IgxSuffixDirective, isStandalone: true, selector: "igx-suffix,[igxSuffix],[igxEnd]", ngImport: i0 }); }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxSuffixDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: IgxSuffixDirective, isStandalone: true, selector: "igx-suffix,[igxSuffix],[igxEnd]", ngImport: i0 }); }
9
9
  }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxSuffixDirective, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxSuffixDirective, decorators: [{
11
11
  type: Directive,
12
12
  args: [{
13
13
  selector: 'igx-suffix,[igxSuffix],[igxEnd]',
14
14
  standalone: true
15
15
  }]
16
16
  }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VmZml4LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL3N1ZmZpeC9zdWZmaXguZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTFDOztHQUVHO0FBS0gsTUFBTSxPQUFPLGtCQUFrQjttSEFBbEIsa0JBQWtCO3VHQUFsQixrQkFBa0I7O2dHQUFsQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlDQUFpQztvQkFDM0MsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2lneC1zdWZmaXgsW2lneFN1ZmZpeF0sW2lneEVuZF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4U3VmZml4RGlyZWN0aXZlIHsgfVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuXG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VmZml4LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL3N1ZmZpeC9zdWZmaXguZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTFDOztHQUVHO0FBS0gsTUFBTSxPQUFPLGtCQUFrQjs4R0FBbEIsa0JBQWtCO2tHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlDQUFpQztvQkFDM0MsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2lneC1zdWZmaXgsW2lneFN1ZmZpeF0sW2lneEVuZF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4U3VmZml4RGlyZWN0aXZlIHsgfVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuXG4iXX0=
@@ -175,10 +175,10 @@ export class IgxTemplateOutletDirective {
175
175
  return TemplateOutletAction.UpdateViewContext;
176
176
  }
177
177
  }
178
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxTemplateOutletDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
179
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-rc.4", type: IgxTemplateOutletDirective, isStandalone: true, selector: "[igxTemplateOutlet]", inputs: { igxTemplateOutletContext: "igxTemplateOutletContext", igxTemplateOutlet: "igxTemplateOutlet" }, outputs: { viewCreated: "viewCreated", viewMoved: "viewMoved", cachedViewLoaded: "cachedViewLoaded", beforeViewDetach: "beforeViewDetach" }, usesOnChanges: true, ngImport: i0 }); }
178
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxTemplateOutletDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
179
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: IgxTemplateOutletDirective, isStandalone: true, selector: "[igxTemplateOutlet]", inputs: { igxTemplateOutletContext: "igxTemplateOutletContext", igxTemplateOutlet: "igxTemplateOutlet" }, outputs: { viewCreated: "viewCreated", viewMoved: "viewMoved", cachedViewLoaded: "cachedViewLoaded", beforeViewDetach: "beforeViewDetach" }, usesOnChanges: true, ngImport: i0 }); }
180
180
  }
181
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxTemplateOutletDirective, decorators: [{
181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxTemplateOutletDirective, decorators: [{
182
182
  type: Directive,
183
183
  args: [{
184
184
  selector: '[igxTemplateOutlet]',
@@ -204,4 +204,4 @@ var TemplateOutletAction;
204
204
  TemplateOutletAction[TemplateOutletAction["UseCachedView"] = 2] = "UseCachedView";
205
205
  TemplateOutletAction[TemplateOutletAction["UpdateViewContext"] = 3] = "UpdateViewContext";
206
206
  })(TemplateOutletAction || (TemplateOutletAction = {}));
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVfb3V0bGV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL3RlbXBsYXRlLW91dGxldC90ZW1wbGF0ZV9vdXRsZXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQW1CLEtBQUssRUFDbUMsTUFBTSxFQUFFLFlBQVksRUFDM0YsTUFBTSxlQUFlLENBQUM7O0FBSXZCOztHQUVHO0FBS0gsTUFBTSxPQUFPLDBCQUEwQjtJQTBCbkMsWUFBbUIsaUJBQW1DLEVBQVUsS0FBYSxFQUFTLEdBQXNCO1FBQXpGLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQVMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFwQnJHLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFHdkQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO1FBR3JELHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUE4QixDQUFDO1FBR2xFLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO1FBSW5FOzs7O1dBSUc7UUFDSyxzQkFBaUIsR0FBZ0QsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUduRixDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNCO1FBQ3JDLE1BQU0sVUFBVSxHQUF5QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RFLFFBQVEsVUFBVSxFQUFFO1lBQ2hCLEtBQUssb0JBQW9CLENBQUMsVUFBVTtnQkFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQUMsTUFBTTtZQUNsRSxLQUFLLG9CQUFvQixDQUFDLFFBQVE7Z0JBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUFDLE1BQU07WUFDNUQsS0FBSyxvQkFBb0IsQ0FBQyxhQUFhO2dCQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFBQyxNQUFNO1lBQ3RFLEtBQUssb0JBQW9CLENBQUMsaUJBQWlCO2dCQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztnQkFBQyxNQUFNO1NBQ2xIO0lBQ0wsQ0FBQztJQUVNLFVBQVU7UUFDYixJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDMUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDakIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2lCQUNsQjtZQUNMLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDSixVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVNLFNBQVMsQ0FBQyxNQUFNO1FBQ25CLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEUsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsRCxJQUFJLE9BQU8sRUFBRTtZQUNULE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzdEO0lBQ0wsQ0FBQztJQUVPLGFBQWE7UUFDakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLDRCQUE0QjtRQUM1QixJQUFJLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQztZQUN6RyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzVDO1FBQ0QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQ3JELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUM7WUFDcEcsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzNELElBQUksTUFBTSxFQUFFO2dCQUNSLDJHQUEyRztnQkFDM0csa0VBQWtFO2dCQUNsRSxnR0FBZ0c7Z0JBQ2hHLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuRyxNQUFNLEdBQUcsR0FBRyxhQUFhLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDL0UsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDTixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLEVBQ3ZFLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDbkY7YUFDSjtTQUNKO0lBQ0wsQ0FBQztJQUVPLFNBQVM7UUFDYix3REFBd0Q7UUFDeEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3hCLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDOUMsbUVBQW1FO2dCQUNuRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQztnQkFDekcsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDekU7WUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3ZFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7YUFDaEY7WUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO1NBQ3JHO2FBQU07WUFDSCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7U0FDOUQ7SUFDTCxDQUFDO0lBQ08sY0FBYztRQUNsQix1RUFBdUU7UUFDdkUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzNELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUM7UUFDVCwyR0FBMkc7UUFDM0csNEVBQTRFO1FBQzVFLGlDQUFpQztRQUNqQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO1lBQ3pHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUNoRjtRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3pILENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxPQUFzQjtRQUM5QyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUN0RCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRU8sdUJBQXVCLENBQUMsU0FBdUI7UUFDbkQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUU5RCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUMzQyxLQUFLLE1BQU0sUUFBUSxJQUFJLFdBQVcsRUFBRTtnQkFDaEMsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO29CQUN0QyxPQUFPLElBQUksQ0FBQztpQkFDZjthQUNKO1lBQ0QsT0FBTyxLQUFLLENBQUM7U0FDaEI7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDTCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsR0FBUTtRQUNuQyxLQUFLLE1BQU0sUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzdFO0lBQ0wsQ0FBQztJQUVPLGFBQWEsQ0FBQyxHQUFRO1FBQzFCLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNqQixLQUFLLE1BQU0sUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDckMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNuQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxjQUFjLENBQUMsT0FBc0I7UUFDekMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMzRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDO1FBQ1QsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pELElBQUksU0FBUyxFQUFFO1lBQ1gscUNBQXFDO1lBQ3JDLE9BQU8sb0JBQW9CLENBQUMsUUFBUSxDQUFDO1NBQ3hDO2FBQU0sSUFBSSxjQUFjLElBQUksVUFBVSxFQUFFO1lBQ3JDLHlGQUF5RjtZQUN6RixPQUFPLG9CQUFvQixDQUFDLGFBQWEsQ0FBQztTQUM3QzthQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLGNBQWMsRUFBRTtZQUN6Qyw2QkFBNkI7WUFDN0IsT0FBTyxvQkFBb0IsQ0FBQyxVQUFVLENBQUM7U0FDMUM7YUFBTSxJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUN0Qyw4QkFBOEI7WUFDOUIsT0FBTyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQztTQUNqRDtJQUNMLENBQUM7bUhBeExRLDBCQUEwQjt1R0FBMUIsMEJBQTBCOztnR0FBMUIsMEJBQTBCO2tCQUp0QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs0SkFFbUIsd0JBQXdCO3NCQUF2QyxLQUFLO2dCQUVVLGlCQUFpQjtzQkFBaEMsS0FBSztnQkFHQyxXQUFXO3NCQURqQixNQUFNO2dCQUlBLFNBQVM7c0JBRGYsTUFBTTtnQkFJQSxnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBSUEsZ0JBQWdCO3NCQUR0QixNQUFNOztBQTRLWCxJQUFLLG9CQUtKO0FBTEQsV0FBSyxvQkFBb0I7SUFDckIsMkVBQVUsQ0FBQTtJQUNWLHVFQUFRLENBQUE7SUFDUixpRkFBYSxDQUFBO0lBQ2IseUZBQWlCLENBQUE7QUFDckIsQ0FBQyxFQUxJLG9CQUFvQixLQUFwQixvQkFBb0IsUUFLeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERpcmVjdGl2ZSwgRW1iZWRkZWRWaWV3UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBTaW1wbGVDaGFuZ2UsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmLCBOZ1pvbmUsIE91dHB1dCwgRXZlbnRFbWl0dGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBJQmFzZUV2ZW50QXJncyB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4VGVtcGxhdGVPdXRsZXRdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneFRlbXBsYXRlT3V0bGV0RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKSBwdWJsaWMgaWd4VGVtcGxhdGVPdXRsZXRDb250ZXh0ICE6IGFueTtcblxuICAgIEBJbnB1dCgpIHB1YmxpYyBpZ3hUZW1wbGF0ZU91dGxldCAhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZpZXdDcmVhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxJVmlld0NoYW5nZUV2ZW50QXJncz4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB2aWV3TW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElWaWV3Q2hhbmdlRXZlbnRBcmdzPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNhY2hlZFZpZXdMb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElDYWNoZWRWaWV3TG9hZGVkRXZlbnRBcmdzPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGJlZm9yZVZpZXdEZXRhY2ggPSBuZXcgRXZlbnRFbWl0dGVyPElWaWV3Q2hhbmdlRXZlbnRBcmdzPigpO1xuXG4gICAgcHJpdmF0ZSBfdmlld1JlZiAhOiBFbWJlZGRlZFZpZXdSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBlbWJlZGRlZCB2aWV3cyBjYWNoZS4gQ29sbGVjdGlvbiBpcyBrZXktdmFsdWUgcGFpcmVkLlxuICAgICAqIEtleSBpcyB0aGUgdGVtcGxhdGUgdHlwZSwgdmFsdWUgaXMgYW5vdGhlciBrZXktdmFsdWUgcGFpcmVkIGNvbGxlY3Rpb25cbiAgICAgKiB3aGVyZSB0aGUga2V5IGlzIHRoZSB0ZW1wbGF0ZSBpZCBhbmQgdmFsdWUgaXMgdGhlIGVtYmVkZGVkIHZpZXcgZm9yIHRoZSByZWxhdGVkIHRlbXBsYXRlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2VtYmVkZGVkVmlld3NNYXA6IE1hcDxzdHJpbmcsIE1hcDxhbnksIEVtYmVkZGVkVmlld1JlZjxhbnk+Pj4gPSBuZXcgTWFwKCk7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIHByaXZhdGUgX3pvbmU6IE5nWm9uZSwgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBhY3Rpb25UeXBlOiBUZW1wbGF0ZU91dGxldEFjdGlvbiA9IHRoaXMuX2dldEFjdGlvblR5cGUoY2hhbmdlcyk7XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBUZW1wbGF0ZU91dGxldEFjdGlvbi5DcmVhdGVWaWV3OiB0aGlzLl9yZWNyZWF0ZVZpZXcoKTsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFRlbXBsYXRlT3V0bGV0QWN0aW9uLk1vdmVWaWV3OiB0aGlzLl9tb3ZlVmlldygpOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgVGVtcGxhdGVPdXRsZXRBY3Rpb24uVXNlQ2FjaGVkVmlldzogdGhpcy5fdXNlQ2FjaGVkVmlldygpOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgVGVtcGxhdGVPdXRsZXRBY3Rpb24uVXBkYXRlVmlld0NvbnRleHQ6IHRoaXMuX3VwZGF0ZUV4aXN0aW5nQ29udGV4dCh0aGlzLmlneFRlbXBsYXRlT3V0bGV0Q29udGV4dCk7IGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFuQ2FjaGUoKSB7XG4gICAgICAgIHRoaXMuX2VtYmVkZGVkVmlld3NNYXAuZm9yRWFjaCgoY29sbGVjdGlvbikgPT4ge1xuICAgICAgICAgICAgY29sbGVjdGlvbi5mb3JFYWNoKChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW0uZGVzdHJveWVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIGNvbGxlY3Rpb24uY2xlYXIoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2VtYmVkZGVkVmlld3NNYXAuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYW5WaWV3KHRtcGxJRCkge1xuICAgICAgICBjb25zdCBlbWJWaWV3Q29sbGVjdGlvbiA9IHRoaXMuX2VtYmVkZGVkVmlld3NNYXAuZ2V0KHRtcGxJRC50eXBlKTtcbiAgICAgICAgY29uc3QgZW1iVmlldyA9IGVtYlZpZXdDb2xsZWN0aW9uPy5nZXQodG1wbElELmlkKTtcbiAgICAgICAgaWYgKGVtYlZpZXcpIHtcbiAgICAgICAgICAgIGVtYlZpZXcuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5fZW1iZWRkZWRWaWV3c01hcC5nZXQodG1wbElELnR5cGUpLmRlbGV0ZSh0bXBsSUQuaWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVjcmVhdGVWaWV3KCkge1xuICAgICAgICBjb25zdCBwcmV2SW5kZXggPSB0aGlzLl92aWV3UmVmID8gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5pbmRleE9mKHRoaXMuX3ZpZXdSZWYpIDogLTE7XG4gICAgICAgIC8vIGRldGFjaCBvbGQgYW5kIGNyZWF0ZSBuZXdcbiAgICAgICAgaWYgKHByZXZJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuYmVmb3JlVmlld0RldGFjaC5lbWl0KHsgb3duZXI6IHRoaXMsIHZpZXc6IHRoaXMuX3ZpZXdSZWYsIGNvbnRleHQ6IHRoaXMuaWd4VGVtcGxhdGVPdXRsZXRDb250ZXh0IH0pO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZi5kZXRhY2gocHJldkluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pZ3hUZW1wbGF0ZU91dGxldCkge1xuICAgICAgICAgICAgdGhpcy5fdmlld1JlZiA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KFxuICAgICAgICAgICAgICAgIHRoaXMuaWd4VGVtcGxhdGVPdXRsZXQsIHRoaXMuaWd4VGVtcGxhdGVPdXRsZXRDb250ZXh0KTtcbiAgICAgICAgICAgIHRoaXMudmlld0NyZWF0ZWQuZW1pdCh7IG93bmVyOiB0aGlzLCB2aWV3OiB0aGlzLl92aWV3UmVmLCBjb250ZXh0OiB0aGlzLmlneFRlbXBsYXRlT3V0bGV0Q29udGV4dCB9KTtcbiAgICAgICAgICAgIGNvbnN0IHRtcGxJZCA9IHRoaXMuaWd4VGVtcGxhdGVPdXRsZXRDb250ZXh0Wyd0ZW1wbGF0ZUlEJ107XG4gICAgICAgICAgICBpZiAodG1wbElkKSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgY29udGV4dCBjb250YWlucyBhIHRlbXBsYXRlIGlkLCBjaGVjayBpZiB3ZSBoYXZlIGEgdmlldyBmb3IgdGhhdCB0ZW1wbGF0ZSBhbHJlYWR5IHN0b3JlZCBpbiB0aGUgY2FjaGVcbiAgICAgICAgICAgICAgICAvLyBpZiBub3QgY3JlYXRlIGEgY29weSBhbmQgYWRkIGl0IHRvIHRoZSBjYWNoZSBpbiBkZXRhY2hlZCBzdGF0ZS5cbiAgICAgICAgICAgICAgICAvLyBOb3RlOiBWaWV3cyBpbiBkZXRhY2hlZCBzdGF0ZSBkbyBub3QgYXBwZWFyIGluIHRoZSBET00sIGhvd2V2ZXIgdGhleSByZW1haW4gc3RvcmVkIGluIG1lbW9yeS5cbiAgICAgICAgICAgICAgICBjb25zdCByZXNDb2xsZWN0aW9uID0gdGhpcy5fZW1iZWRkZWRWaWV3c01hcC5nZXQodGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHRbJ3RlbXBsYXRlSUQnXS50eXBlKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSByZXNDb2xsZWN0aW9uPy5nZXQodGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHRbJ3RlbXBsYXRlSUQnXS5pZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1iZWRkZWRWaWV3c01hcC5zZXQodGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHRbJ3RlbXBsYXRlSUQnXS50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE1hcChbW3RoaXMuaWd4VGVtcGxhdGVPdXRsZXRDb250ZXh0Wyd0ZW1wbGF0ZUlEJ10uaWQsIHRoaXMuX3ZpZXdSZWZdXSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX21vdmVWaWV3KCkge1xuICAgICAgICAvLyB1c2luZyBleHRlcm5hbCB2aWV3IGFuZCBpbnNlcnRpbmcgaXQgaW4gY3VycmVudCB2aWV3LlxuICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHRbJ21vdmVWaWV3J107XG4gICAgICAgIGNvbnN0IG93bmVyID0gdGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHRbJ293bmVyJ107XG4gICAgICAgIGlmICh2aWV3ICE9PSB0aGlzLl92aWV3UmVmKSB7XG4gICAgICAgICAgICBpZiAob3duZXIuX3ZpZXdDb250YWluZXJSZWYuaW5kZXhPZih2aWV3KSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAvLyBkZXRhY2ggaW4gY2FzZSB2aWV3IGl0IGlzIGF0dGFjaGVkIHNvbWV3aGVyZSBlbHNlIGF0IHRoZSBtb21lbnQuXG4gICAgICAgICAgICAgICAgdGhpcy5iZWZvcmVWaWV3RGV0YWNoLmVtaXQoeyBvd25lcjogdGhpcywgdmlldzogdGhpcy5fdmlld1JlZiwgY29udGV4dDogdGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHQgfSk7XG4gICAgICAgICAgICAgICAgb3duZXIuX3ZpZXdDb250YWluZXJSZWYuZGV0YWNoKG93bmVyLl92aWV3Q29udGFpbmVyUmVmLmluZGV4T2YodmlldykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuX3ZpZXdSZWYgJiYgdGhpcy5fdmlld0NvbnRhaW5lclJlZi5pbmRleE9mKHRoaXMuX3ZpZXdSZWYpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVmb3JlVmlld0RldGFjaC5lbWl0KHsgb3duZXI6IHRoaXMsIHZpZXc6IHRoaXMuX3ZpZXdSZWYsIGNvbnRleHQ6IHRoaXMuaWd4VGVtcGxhdGVPdXRsZXRDb250ZXh0IH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYuZGV0YWNoKHRoaXMuX3ZpZXdDb250YWluZXJSZWYuaW5kZXhPZih0aGlzLl92aWV3UmVmKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl92aWV3UmVmID0gdmlldztcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYuaW5zZXJ0KHZpZXcsIDApO1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlRXhpc3RpbmdDb250ZXh0KHRoaXMuaWd4VGVtcGxhdGVPdXRsZXRDb250ZXh0KTtcbiAgICAgICAgICAgIHRoaXMudmlld01vdmVkLmVtaXQoeyBvd25lcjogdGhpcywgdmlldzogdGhpcy5fdmlld1JlZiwgY29udGV4dDogdGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHQgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVFeGlzdGluZ0NvbnRleHQodGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgX3VzZUNhY2hlZFZpZXcoKSB7XG4gICAgICAgIC8vIHVzZSB2aWV3IGZvciBzcGVjaWZpYyB0ZW1wbGF0ZSBjYWNoZWQgaW4gdGhlIGN1cnJlbnQgdGVtcGxhdGUgb3V0bGV0XG4gICAgICAgIGNvbnN0IHRtcGxJRCA9IHRoaXMuaWd4VGVtcGxhdGVPdXRsZXRDb250ZXh0Wyd0ZW1wbGF0ZUlEJ107XG4gICAgICAgIGNvbnN0IGNhY2hlZFZpZXcgPSB0bXBsSUQgP1xuICAgICAgICAgICAgdGhpcy5fZW1iZWRkZWRWaWV3c01hcC5nZXQodG1wbElELnR5cGUpPy5nZXQodG1wbElELmlkKSA6XG4gICAgICAgICAgICBudWxsO1xuICAgICAgICAvLyBpZiB2aWV3IGV4aXN0cywgYnV0IHRlbXBsYXRlIGhhcyBiZWVuIGNoYW5nZWQgYW5kIHRoZXJlIGlzIGEgdmlldyBpbiB0aGUgY2FjaGUgd2l0aCB0aGUgcmVsYXRlZCB0ZW1wbGF0ZVxuICAgICAgICAvLyB0aGVuIGRldGFjaCBvbGQgdmlldyBhbmQgaW5zZXJ0IHRoZSBzdG9yZWQgb25lIHdpdGggdGhlIG1hdGNoaW5nIHRlbXBsYXRlXG4gICAgICAgIC8vIGFmdGVyIHRoYXQgdXBkYXRlIGl0cyBjb250ZXh0LlxuICAgICAgICBpZiAodGhpcy5fdmlld0NvbnRhaW5lclJlZi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmJlZm9yZVZpZXdEZXRhY2guZW1pdCh7IG93bmVyOiB0aGlzLCB2aWV3OiB0aGlzLl92aWV3UmVmLCBjb250ZXh0OiB0aGlzLmlneFRlbXBsYXRlT3V0bGV0Q29udGV4dCB9KTtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYuZGV0YWNoKHRoaXMuX3ZpZXdDb250YWluZXJSZWYuaW5kZXhPZih0aGlzLl92aWV3UmVmKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl92aWV3UmVmID0gY2FjaGVkVmlldztcbiAgICAgICAgY29uc3Qgb2xkQ29udGV4dCA9IHRoaXMuX2Nsb25lQ29udGV4dChjYWNoZWRWaWV3LmNvbnRleHQpO1xuICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmluc2VydCh0aGlzLl92aWV3UmVmLCAwKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlRXhpc3RpbmdDb250ZXh0KHRoaXMuaWd4VGVtcGxhdGVPdXRsZXRDb250ZXh0KTtcbiAgICAgICAgdGhpcy5jYWNoZWRWaWV3TG9hZGVkLmVtaXQoeyBvd25lcjogdGhpcywgdmlldzogdGhpcy5fdmlld1JlZiwgY29udGV4dDogdGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHQsIG9sZENvbnRleHQgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2hvdWxkUmVjcmVhdGVWaWV3KGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY3R4Q2hhbmdlID0gY2hhbmdlc1snaWd4VGVtcGxhdGVPdXRsZXRDb250ZXh0J107XG4gICAgICAgIHJldHVybiAhIWNoYW5nZXNbJ2lneFRlbXBsYXRlT3V0bGV0J10gfHwgKGN0eENoYW5nZSAmJiB0aGlzLl9oYXNDb250ZXh0U2hhcGVDaGFuZ2VkKGN0eENoYW5nZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2hhc0NvbnRleHRTaGFwZUNoYW5nZWQoY3R4Q2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgcHJldkN0eEtleXMgPSBPYmplY3Qua2V5cyhjdHhDaGFuZ2UucHJldmlvdXNWYWx1ZSB8fCB7fSk7XG4gICAgICAgIGNvbnN0IGN1cnJDdHhLZXlzID0gT2JqZWN0LmtleXMoY3R4Q2hhbmdlLmN1cnJlbnRWYWx1ZSB8fCB7fSk7XG5cbiAgICAgICAgaWYgKHByZXZDdHhLZXlzLmxlbmd0aCA9PT0gY3VyckN0eEtleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHByb3BOYW1lIG9mIGN1cnJDdHhLZXlzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZDdHhLZXlzLmluZGV4T2YocHJvcE5hbWUpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3VwZGF0ZUV4aXN0aW5nQ29udGV4dChjdHg6IGFueSk6IHZvaWQge1xuICAgICAgICBmb3IgKGNvbnN0IHByb3BOYW1lIG9mIE9iamVjdC5rZXlzKGN0eCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdSZWYuY29udGV4dFtwcm9wTmFtZV0gPSB0aGlzLmlneFRlbXBsYXRlT3V0bGV0Q29udGV4dFtwcm9wTmFtZV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9jbG9uZUNvbnRleHQoY3R4OiBhbnkpOiBhbnkge1xuICAgICAgICBjb25zdCBjbG9uZSA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IHByb3BOYW1lIG9mIE9iamVjdC5rZXlzKGN0eCkpIHtcbiAgICAgICAgICAgIGNsb25lW3Byb3BOYW1lXSA9IGN0eFtwcm9wTmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNsb25lO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldEFjdGlvblR5cGUoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBtb3ZlZFZpZXcgPSB0aGlzLmlneFRlbXBsYXRlT3V0bGV0Q29udGV4dFsnbW92ZVZpZXcnXTtcbiAgICAgICAgY29uc3QgdG1wbElEID0gdGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHRbJ3RlbXBsYXRlSUQnXTtcbiAgICAgICAgY29uc3QgY2FjaGVkVmlldyA9IHRtcGxJRCA/XG4gICAgICAgICAgICB0aGlzLl9lbWJlZGRlZFZpZXdzTWFwLmdldCh0bXBsSUQudHlwZSk/LmdldCh0bXBsSUQuaWQpIDpcbiAgICAgICAgICAgIG51bGw7XG4gICAgICAgIGNvbnN0IHNob3VsZFJlY3JlYXRlID0gdGhpcy5fc2hvdWxkUmVjcmVhdGVWaWV3KGNoYW5nZXMpO1xuICAgICAgICBpZiAobW92ZWRWaWV3KSB7XG4gICAgICAgICAgICAvLyB2aWV3IGlzIG1vdmVkIGZyb20gZXh0ZXJuYWwgc291cmNlXG4gICAgICAgICAgICByZXR1cm4gVGVtcGxhdGVPdXRsZXRBY3Rpb24uTW92ZVZpZXc7XG4gICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkUmVjcmVhdGUgJiYgY2FjaGVkVmlldykge1xuICAgICAgICAgICAgLy8gc2hvdWxkIHJlY3JlYXRlICh0ZW1wbGF0ZSBvciBjb250ZXh0IGNoYW5nZSkgYW5kIHRoZXJlIGlzIGEgbWF0Y2hpbmcgdGVtcGxhdGUgaW4gY2FjaGVcbiAgICAgICAgICAgIHJldHVybiBUZW1wbGF0ZU91dGxldEFjdGlvbi5Vc2VDYWNoZWRWaWV3O1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLl92aWV3UmVmIHx8IHNob3VsZFJlY3JlYXRlKSB7XG4gICAgICAgICAgICAvLyBubyB2aWV3IG9yIHNob3VsZCByZWNyZWF0ZVxuICAgICAgICAgICAgcmV0dXJuIFRlbXBsYXRlT3V0bGV0QWN0aW9uLkNyZWF0ZVZpZXc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHQpIHtcbiAgICAgICAgICAgIC8vIGhhcyBjb250ZXh0LCB1cGRhdGUgY29udGV4dFxuICAgICAgICAgICAgcmV0dXJuIFRlbXBsYXRlT3V0bGV0QWN0aW9uLlVwZGF0ZVZpZXdDb250ZXh0O1xuICAgICAgICB9XG4gICAgfVxufVxuZW51bSBUZW1wbGF0ZU91dGxldEFjdGlvbiB7XG4gICAgQ3JlYXRlVmlldyxcbiAgICBNb3ZlVmlldyxcbiAgICBVc2VDYWNoZWRWaWV3LFxuICAgIFVwZGF0ZVZpZXdDb250ZXh0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVZpZXdDaGFuZ2VFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgb3duZXI6IElneFRlbXBsYXRlT3V0bGV0RGlyZWN0aXZlO1xuICAgIHZpZXc6IEVtYmVkZGVkVmlld1JlZjxhbnk+O1xuICAgIGNvbnRleHQ6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ2FjaGVkVmlld0xvYWRlZEV2ZW50QXJncyBleHRlbmRzIElWaWV3Q2hhbmdlRXZlbnRBcmdzIHtcbiAgICBvbGRDb250ZXh0OiBhbnk7XG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5cbiJdfQ==
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVfb3V0bGV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL3RlbXBsYXRlLW91dGxldC90ZW1wbGF0ZV9vdXRsZXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQW1CLEtBQUssRUFDbUMsTUFBTSxFQUFFLFlBQVksRUFDM0YsTUFBTSxlQUFlLENBQUM7O0FBSXZCOztHQUVHO0FBS0gsTUFBTSxPQUFPLDBCQUEwQjtJQTBCbkMsWUFBbUIsaUJBQW1DLEVBQVUsS0FBYSxFQUFTLEdBQXNCO1FBQXpGLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQVMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFwQnJHLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFHdkQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO1FBR3JELHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUE4QixDQUFDO1FBR2xFLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO1FBSW5FOzs7O1dBSUc7UUFDSyxzQkFBaUIsR0FBZ0QsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUduRixDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNCO1FBQ3JDLE1BQU0sVUFBVSxHQUF5QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RFLFFBQVEsVUFBVSxFQUFFO1lBQ2hCLEtBQUssb0JBQW9CLENBQUMsVUFBVTtnQkFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQUMsTUFBTTtZQUNsRSxLQUFLLG9CQUFvQixDQUFDLFFBQVE7Z0JBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUFDLE1BQU07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QUxJLG9CQUFvQixLQUFwQixvQkFBb0IsUUFLeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERpcmVjdGl2ZSwgRW1iZWRkZWRWaWV3UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBTaW1wbGVDaGFuZ2UsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmLCBOZ1pvbmUsIE91dHB1dCwgRXZlbnRFbWl0dGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBJQmFzZUV2ZW50QXJncyB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4VGVtcGxhdGVPdXRsZXRdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneFRlbXBsYXRlT3V0bGV0RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKSBwdWJsaWMgaWd4VGVtcGxhdGVPdXRsZXRDb250ZXh0ICE6IGFueTtcblxuICAgIEBJbnB1dCgpIHB1YmxpYyBpZ3hUZW1wbGF0ZU91dGxldCAhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZpZXdDcmVhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxJVmlld0NoYW5nZUV2ZW50QXJncz4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB2aWV3TW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElWaWV3Q2hhbmdlRXZlbnRBcmdzPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNhY2hlZFZpZXdMb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElDYWNoZWRWaWV3TG9hZGVkRXZlbnRBcmdzPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGJlZm9yZVZpZXdEZXRhY2ggPSBuZXcgRXZlbnRFbWl0dGVyPElWaWV3Q2hhbmdlRXZlbnRBcmdzPigpO1xuXG4gICAgcHJpdmF0ZSBfdmlld1JlZiAhOiBFbWJlZGRlZFZpZXdSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBlbWJlZGRlZCB2aWV3cyBjYWNoZS4gQ29sbGVjdGlvbiBpcyBrZXktdmFsdWUgcGFpcmVkLlxuICAgICAqIEtleSBpcyB0aGUgdGVtcGxhdGUgdHlwZSwgdmFsdWUgaXMgYW5vdGhlciBrZXktdmFsdWUgcGFpcmVkIGNvbGxlY3Rpb25cbiAgICAgKiB3aGVyZSB0aGUga2V5IGlzIHRoZSB0ZW1wbGF0ZSBpZCBhbmQgdmFsdWUgaXMgdGhlIGVtYmVkZGVkIHZpZXcgZm9yIHRoZSByZWxhdGVkIHRlbXBsYXRlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2VtYmVkZGVkVmlld3NNYXA6IE1hcDxzdHJpbmcsIE1hcDxhbnksIEVtYmVkZGVkVmlld1JlZjxhbnk+Pj4gPSBuZXcgTWFwKCk7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIHByaXZhdGUgX3pvbmU6IE5nWm9uZSwgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBhY3Rpb25UeXBlOiBUZW1wbGF0ZU91dGxldEFjdGlvbiA9IHRoaXMuX2dldEFjdGlvblR5cGUoY2hhbmdlcyk7XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBUZW1wbGF0ZU91dGxldEFjdGlvbi5DcmVhdGVWaWV3OiB0aGlzLl9yZWNyZWF0ZVZpZXcoKTsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFRlbXBsYXRlT3V0bGV0QWN0aW9uLk1vdmVWaWV3OiB0aGlzLl9tb3ZlVmlldygpOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgVGVtcGxhdGVPdXRsZXRBY3Rpb24uVXNlQ2FjaGVkVmlldzogdGhpcy5fdXNlQ2FjaGVkVmlldygpOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgVGVtcGxhdGVPdXRsZXRBY3Rpb24uVXBkYXRlVmlld0NvbnRleHQ6IHRoaXMuX3VwZGF0ZUV4aXN0aW5nQ29udGV4dCh0aGlzLmlneFRlbXBsYXRlT3V0bGV0Q29udGV4dCk7IGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFuQ2FjaGUoKSB7XG4gICAgICAgIHRoaXMuX2VtYmVkZGVkVmlld3NNYXAuZm9yRWFjaCgoY29sbGVjdGlvbikgPT4ge1xuICAgICAgICAgICAgY29sbGVjdGlvbi5mb3JFYWNoKChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW0uZGVzdHJveWVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIGNvbGxlY3Rpb24uY2xlYXIoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2VtYmVkZGVkVmlld3NNYXAuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYW5WaWV3KHRtcGxJRCkge1xuICAgICAgICBjb25zdCBlbWJWaWV3Q29sbGVjdGlvbiA9IHRoaXMuX2VtYmVkZGVkVmlld3NNYXAuZ2V0KHRtcGxJRC50eXBlKTtcbiAgICAgICAgY29uc3QgZW1iVmlldyA9IGVtYlZpZXdDb2xsZWN0aW9uPy5nZXQodG1wbElELmlkKTtcbiAgICAgICAgaWYgKGVtYlZpZXcpIHtcbiAgICAgICAgICAgIGVtYlZpZXcuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5fZW1iZWRkZWRWaWV3c01hcC5nZXQodG1wbElELnR5cGUpLmRlbGV0ZSh0bXBsSUQuaWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVjcmVhdGVWaWV3KCkge1xuICAgICAgICBjb25zdCBwcmV2SW5kZXggPSB0aGlzLl92aWV3UmVmID8gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5pbmRleE9mKHRoaXMuX3ZpZXdSZWYpIDogLTE7XG4gICAgICAgIC8vIGRldGFjaCBvbGQgYW5kIGNyZWF0ZSBuZXdcbiAgICAgICAgaWYgKHByZXZJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuYmVmb3JlVmlld0RldGFjaC5lbWl0KHsgb3duZXI6IHRoaXMsIHZpZXc6IHRoaXMuX3ZpZXdSZWYsIGNvbnRleHQ6IHRoaXMuaWd4VGVtcGxhdGVPdXRsZXRDb250ZXh0IH0pO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZi5kZXRhY2gocHJldkluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pZ3hUZW1wbGF0ZU91dGxldCkge1xuICAgICAgICAgICAgdGhpcy5fdmlld1JlZiA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KFxuICAgICAgICAgICAgICAgIHRoaXMuaWd4VGVtcGxhdGVPdXRsZXQsIHRoaXMuaWd4VGVtcGxhdGVPdXRsZXRDb250ZXh0KTtcbiAgICAgICAgICAgIHRoaXMudmlld0NyZWF0ZWQuZW1pdCh7IG93bmVyOiB0aGlzLCB2aWV3OiB0aGlzLl92aWV3UmVmLCBjb250ZXh0OiB0aGlzLmlneFRlbXBsYXRlT3V0bGV0Q29udGV4dCB9KTtcbiAgICAgICAgICAgIGNvbnN0IHRtcGxJZCA9IHRoaXMuaWd4VGVtcGxhdGVPdXRsZXRDb250ZXh0Wyd0ZW1wbGF0ZUlEJ107XG4gICAgICAgICAgICBpZiAodG1wbElkKSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgY29udGV4dCBjb250YWlucyBhIHRlbXBsYXRlIGlkLCBjaGVjayBpZiB3ZSBoYXZlIGEgdmlldyBmb3IgdGhhdCB0ZW1wbGF0ZSBhbHJlYWR5IHN0b3JlZCBpbiB0aGUgY2FjaGVcbiAgICAgICAgICAgICAgICAvLyBpZiBub3QgY3JlYXRlIGEgY29weSBhbmQgYWRkIGl0IHRvIHRoZSBjYWNoZSBpbiBkZXRhY2hlZCBzdGF0ZS5cbiAgICAgICAgICAgICAgICAvLyBOb3RlOiBWaWV3cyBpbiBkZXRhY2hlZCBzdGF0ZSBkbyBub3QgYXBwZWFyIGluIHRoZSBET00sIGhvd2V2ZXIgdGhleSByZW1haW4gc3RvcmVkIGluIG1lbW9yeS5cbiAgICAgICAgICAgICAgICBjb25zdCByZXNDb2xsZWN0aW9uID0gdGhpcy5fZW1iZWRkZWRWaWV3c01hcC5nZXQodGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHRbJ3RlbXBsYXRlSUQnXS50eXBlKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSByZXNDb2xsZWN0aW9uPy5nZXQodGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHRbJ3RlbXBsYXRlSUQnXS5pZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1iZWRkZWRWaWV3c01hcC5zZXQodGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHRbJ3RlbXBsYXRlSUQnXS50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE1hcChbW3RoaXMuaWd4VGVtcGxhdGVPdXRsZXRDb250ZXh0Wyd0ZW1wbGF0ZUlEJ10uaWQsIHRoaXMuX3ZpZXdSZWZdXSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX21vdmVWaWV3KCkge1xuICAgICAgICAvLyB1c2luZyBleHRlcm5hbCB2aWV3IGFuZCBpbnNlcnRpbmcgaXQgaW4gY3VycmVudCB2aWV3LlxuICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHRbJ21vdmVWaWV3J107XG4gICAgICAgIGNvbnN0IG93bmVyID0gdGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHRbJ293bmVyJ107XG4gICAgICAgIGlmICh2aWV3ICE9PSB0aGlzLl92aWV3UmVmKSB7XG4gICAgICAgICAgICBpZiAob3duZXIuX3ZpZXdDb250YWluZXJSZWYuaW5kZXhPZih2aWV3KSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAvLyBkZXRhY2ggaW4gY2FzZSB2aWV3IGl0IGlzIGF0dGFjaGVkIHNvbWV3aGVyZSBlbHNlIGF0IHRoZSBtb21lbnQuXG4gICAgICAgICAgICAgICAgdGhpcy5iZWZvcmVWaWV3RGV0YWNoLmVtaXQoeyBvd25lcjogdGhpcywgdmlldzogdGhpcy5fdmlld1JlZiwgY29udGV4dDogdGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHQgfSk7XG4gICAgICAgICAgICAgICAgb3duZXIuX3ZpZXdDb250YWluZXJSZWYuZGV0YWNoKG93bmVyLl92aWV3Q29udGFpbmVyUmVmLmluZGV4T2YodmlldykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuX3ZpZXdSZWYgJiYgdGhpcy5fdmlld0NvbnRhaW5lclJlZi5pbmRleE9mKHRoaXMuX3ZpZXdSZWYpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVmb3JlVmlld0RldGFjaC5lbWl0KHsgb3duZXI6IHRoaXMsIHZpZXc6IHRoaXMuX3ZpZXdSZWYsIGNvbnRleHQ6IHRoaXMuaWd4VGVtcGxhdGVPdXRsZXRDb250ZXh0IH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYuZGV0YWNoKHRoaXMuX3ZpZXdDb250YWluZXJSZWYuaW5kZXhPZih0aGlzLl92aWV3UmVmKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl92aWV3UmVmID0gdmlldztcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYuaW5zZXJ0KHZpZXcsIDApO1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlRXhpc3RpbmdDb250ZXh0KHRoaXMuaWd4VGVtcGxhdGVPdXRsZXRDb250ZXh0KTtcbiAgICAgICAgICAgIHRoaXMudmlld01vdmVkLmVtaXQoeyBvd25lcjogdGhpcywgdmlldzogdGhpcy5fdmlld1JlZiwgY29udGV4dDogdGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHQgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVFeGlzdGluZ0NvbnRleHQodGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgX3VzZUNhY2hlZFZpZXcoKSB7XG4gICAgICAgIC8vIHVzZSB2aWV3IGZvciBzcGVjaWZpYyB0ZW1wbGF0ZSBjYWNoZWQgaW4gdGhlIGN1cnJlbnQgdGVtcGxhdGUgb3V0bGV0XG4gICAgICAgIGNvbnN0IHRtcGxJRCA9IHRoaXMuaWd4VGVtcGxhdGVPdXRsZXRDb250ZXh0Wyd0ZW1wbGF0ZUlEJ107XG4gICAgICAgIGNvbnN0IGNhY2hlZFZpZXcgPSB0bXBsSUQgP1xuICAgICAgICAgICAgdGhpcy5fZW1iZWRkZWRWaWV3c01hcC5nZXQodG1wbElELnR5cGUpPy5nZXQodG1wbElELmlkKSA6XG4gICAgICAgICAgICBudWxsO1xuICAgICAgICAvLyBpZiB2aWV3IGV4aXN0cywgYnV0IHRlbXBsYXRlIGhhcyBiZWVuIGNoYW5nZWQgYW5kIHRoZXJlIGlzIGEgdmlldyBpbiB0aGUgY2FjaGUgd2l0aCB0aGUgcmVsYXRlZCB0ZW1wbGF0ZVxuICAgICAgICAvLyB0aGVuIGRldGFjaCBvbGQgdmlldyBhbmQgaW5zZXJ0IHRoZSBzdG9yZWQgb25lIHdpdGggdGhlIG1hdGNoaW5nIHRlbXBsYXRlXG4gICAgICAgIC8vIGFmdGVyIHRoYXQgdXBkYXRlIGl0cyBjb250ZXh0LlxuICAgICAgICBpZiAodGhpcy5fdmlld0NvbnRhaW5lclJlZi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmJlZm9yZVZpZXdEZXRhY2guZW1pdCh7IG93bmVyOiB0aGlzLCB2aWV3OiB0aGlzLl92aWV3UmVmLCBjb250ZXh0OiB0aGlzLmlneFRlbXBsYXRlT3V0bGV0Q29udGV4dCB9KTtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYuZGV0YWNoKHRoaXMuX3ZpZXdDb250YWluZXJSZWYuaW5kZXhPZih0aGlzLl92aWV3UmVmKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl92aWV3UmVmID0gY2FjaGVkVmlldztcbiAgICAgICAgY29uc3Qgb2xkQ29udGV4dCA9IHRoaXMuX2Nsb25lQ29udGV4dChjYWNoZWRWaWV3LmNvbnRleHQpO1xuICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmluc2VydCh0aGlzLl92aWV3UmVmLCAwKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlRXhpc3RpbmdDb250ZXh0KHRoaXMuaWd4VGVtcGxhdGVPdXRsZXRDb250ZXh0KTtcbiAgICAgICAgdGhpcy5jYWNoZWRWaWV3TG9hZGVkLmVtaXQoeyBvd25lcjogdGhpcywgdmlldzogdGhpcy5fdmlld1JlZiwgY29udGV4dDogdGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHQsIG9sZENvbnRleHQgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2hvdWxkUmVjcmVhdGVWaWV3KGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY3R4Q2hhbmdlID0gY2hhbmdlc1snaWd4VGVtcGxhdGVPdXRsZXRDb250ZXh0J107XG4gICAgICAgIHJldHVybiAhIWNoYW5nZXNbJ2lneFRlbXBsYXRlT3V0bGV0J10gfHwgKGN0eENoYW5nZSAmJiB0aGlzLl9oYXNDb250ZXh0U2hhcGVDaGFuZ2VkKGN0eENoYW5nZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2hhc0NvbnRleHRTaGFwZUNoYW5nZWQoY3R4Q2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgcHJldkN0eEtleXMgPSBPYmplY3Qua2V5cyhjdHhDaGFuZ2UucHJldmlvdXNWYWx1ZSB8fCB7fSk7XG4gICAgICAgIGNvbnN0IGN1cnJDdHhLZXlzID0gT2JqZWN0LmtleXMoY3R4Q2hhbmdlLmN1cnJlbnRWYWx1ZSB8fCB7fSk7XG5cbiAgICAgICAgaWYgKHByZXZDdHhLZXlzLmxlbmd0aCA9PT0gY3VyckN0eEtleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHByb3BOYW1lIG9mIGN1cnJDdHhLZXlzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZDdHhLZXlzLmluZGV4T2YocHJvcE5hbWUpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3VwZGF0ZUV4aXN0aW5nQ29udGV4dChjdHg6IGFueSk6IHZvaWQge1xuICAgICAgICBmb3IgKGNvbnN0IHByb3BOYW1lIG9mIE9iamVjdC5rZXlzKGN0eCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdSZWYuY29udGV4dFtwcm9wTmFtZV0gPSB0aGlzLmlneFRlbXBsYXRlT3V0bGV0Q29udGV4dFtwcm9wTmFtZV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9jbG9uZUNvbnRleHQoY3R4OiBhbnkpOiBhbnkge1xuICAgICAgICBjb25zdCBjbG9uZSA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IHByb3BOYW1lIG9mIE9iamVjdC5rZXlzKGN0eCkpIHtcbiAgICAgICAgICAgIGNsb25lW3Byb3BOYW1lXSA9IGN0eFtwcm9wTmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNsb25lO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldEFjdGlvblR5cGUoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBtb3ZlZFZpZXcgPSB0aGlzLmlneFRlbXBsYXRlT3V0bGV0Q29udGV4dFsnbW92ZVZpZXcnXTtcbiAgICAgICAgY29uc3QgdG1wbElEID0gdGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHRbJ3RlbXBsYXRlSUQnXTtcbiAgICAgICAgY29uc3QgY2FjaGVkVmlldyA9IHRtcGxJRCA/XG4gICAgICAgICAgICB0aGlzLl9lbWJlZGRlZFZpZXdzTWFwLmdldCh0bXBsSUQudHlwZSk/LmdldCh0bXBsSUQuaWQpIDpcbiAgICAgICAgICAgIG51bGw7XG4gICAgICAgIGNvbnN0IHNob3VsZFJlY3JlYXRlID0gdGhpcy5fc2hvdWxkUmVjcmVhdGVWaWV3KGNoYW5nZXMpO1xuICAgICAgICBpZiAobW92ZWRWaWV3KSB7XG4gICAgICAgICAgICAvLyB2aWV3IGlzIG1vdmVkIGZyb20gZXh0ZXJuYWwgc291cmNlXG4gICAgICAgICAgICByZXR1cm4gVGVtcGxhdGVPdXRsZXRBY3Rpb24uTW92ZVZpZXc7XG4gICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkUmVjcmVhdGUgJiYgY2FjaGVkVmlldykge1xuICAgICAgICAgICAgLy8gc2hvdWxkIHJlY3JlYXRlICh0ZW1wbGF0ZSBvciBjb250ZXh0IGNoYW5nZSkgYW5kIHRoZXJlIGlzIGEgbWF0Y2hpbmcgdGVtcGxhdGUgaW4gY2FjaGVcbiAgICAgICAgICAgIHJldHVybiBUZW1wbGF0ZU91dGxldEFjdGlvbi5Vc2VDYWNoZWRWaWV3O1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLl92aWV3UmVmIHx8IHNob3VsZFJlY3JlYXRlKSB7XG4gICAgICAgICAgICAvLyBubyB2aWV3IG9yIHNob3VsZCByZWNyZWF0ZVxuICAgICAgICAgICAgcmV0dXJuIFRlbXBsYXRlT3V0bGV0QWN0aW9uLkNyZWF0ZVZpZXc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pZ3hUZW1wbGF0ZU91dGxldENvbnRleHQpIHtcbiAgICAgICAgICAgIC8vIGhhcyBjb250ZXh0LCB1cGRhdGUgY29udGV4dFxuICAgICAgICAgICAgcmV0dXJuIFRlbXBsYXRlT3V0bGV0QWN0aW9uLlVwZGF0ZVZpZXdDb250ZXh0O1xuICAgICAgICB9XG4gICAgfVxufVxuZW51bSBUZW1wbGF0ZU91dGxldEFjdGlvbiB7XG4gICAgQ3JlYXRlVmlldyxcbiAgICBNb3ZlVmlldyxcbiAgICBVc2VDYWNoZWRWaWV3LFxuICAgIFVwZGF0ZVZpZXdDb250ZXh0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVZpZXdDaGFuZ2VFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgb3duZXI6IElneFRlbXBsYXRlT3V0bGV0RGlyZWN0aXZlO1xuICAgIHZpZXc6IEVtYmVkZGVkVmlld1JlZjxhbnk+O1xuICAgIGNvbnRleHQ6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ2FjaGVkVmlld0xvYWRlZEV2ZW50QXJncyBleHRlbmRzIElWaWV3Q2hhbmdlRXZlbnRBcmdzIHtcbiAgICBvbGRDb250ZXh0OiBhbnk7XG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5cbiJdfQ==