ngx-tethys 18.0.8 → 18.1.0-next.1

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 (607) hide show
  1. package/CHANGELOG.md +19 -1
  2. package/action/action.component.d.ts +1 -2
  3. package/affix/affix.component.d.ts +2 -4
  4. package/alert/alert.component.d.ts +11 -19
  5. package/anchor/anchor-link.component.d.ts +2 -4
  6. package/anchor/anchor.component.d.ts +2 -7
  7. package/arrow-switcher/arrow-switcher.component.d.ts +1 -2
  8. package/autocomplete/autocomplete.component.d.ts +1 -2
  9. package/autocomplete/autocomplete.trigger.directive.d.ts +3 -5
  10. package/autocomplete/overlay/autocomplete-container.component.d.ts +4 -4
  11. package/autocomplete/overlay/autocomplete.service.d.ts +3 -5
  12. package/avatar/avatar.component.d.ts +1 -3
  13. package/avatar/avatar.pipe.d.ts +0 -2
  14. package/back-top/back-top.component.d.ts +2 -4
  15. package/badge/badge.component.d.ts +2 -2
  16. package/breadcrumb/breadcrumb-item.component.d.ts +1 -2
  17. package/breadcrumb/breadcrumb.component.d.ts +1 -2
  18. package/button/button.component.d.ts +1 -2
  19. package/calendar/calendar-header.component.d.ts +1 -2
  20. package/calendar/calendar.component.d.ts +1 -2
  21. package/carousel/carousel-item.directive.d.ts +1 -2
  22. package/carousel/carousel.component.d.ts +1 -4
  23. package/carousel/carousel.service.d.ts +1 -2
  24. package/cascader/cascader.component.d.ts +4 -4
  25. package/checkbox/checkbox.component.d.ts +0 -2
  26. package/collapse/collapse-item.component.d.ts +2 -4
  27. package/color-picker/color-picker-panel.component.d.ts +2 -3
  28. package/color-picker/color-picker.component.d.ts +2 -4
  29. package/color-picker/coordinates.directive.d.ts +1 -2
  30. package/color-picker/parts/alpha/alpha.component.d.ts +1 -2
  31. package/color-picker/parts/hue/hue.component.d.ts +1 -2
  32. package/color-picker/parts/saturation/saturation.component.d.ts +1 -2
  33. package/copy/copy.directive.d.ts +0 -2
  34. package/core/click-positioner.d.ts +0 -2
  35. package/core/scroll.d.ts +1 -2
  36. package/core/update-host-class.service.d.ts +1 -2
  37. package/date-picker/abstract-picker.component.d.ts +1 -1
  38. package/date-picker/abstract-picker.directive.d.ts +2 -3
  39. package/date-picker/base-picker.component.d.ts +2 -3
  40. package/date-picker/date-picker.component.d.ts +2 -2
  41. package/date-picker/date-picker.directive.d.ts +1 -3
  42. package/date-picker/date-picker.service.d.ts +2 -2
  43. package/date-picker/index.d.ts +26 -27
  44. package/date-picker/lib/calendar/calendar-footer.component.d.ts +1 -2
  45. package/date-picker/lib/calendar/calendar-header.component.d.ts +0 -1
  46. package/date-picker/lib/date/date-header.component.d.ts +0 -3
  47. package/date-picker/lib/date/date-table-cell.component.d.ts +1 -1
  48. package/date-picker/lib/date/date-table.component.d.ts +1 -3
  49. package/date-picker/lib/date-carousel/date-carousel.component.d.ts +1 -2
  50. package/date-picker/lib/decade/decade-header.component.d.ts +1 -1
  51. package/date-picker/lib/month/month-header.component.d.ts +0 -3
  52. package/date-picker/lib/month/month-table.component.d.ts +1 -2
  53. package/date-picker/lib/popups/date-popup.component.d.ts +1 -4
  54. package/date-picker/lib/popups/inner-popup.component.d.ts +0 -2
  55. package/date-picker/lib/quarter/quarter-table.component.d.ts +1 -2
  56. package/date-picker/lib/year/year-header.component.d.ts +0 -1
  57. package/date-picker/month-picker.component.d.ts +2 -2
  58. package/date-picker/picker.component.d.ts +1 -3
  59. package/date-picker/picker.pipes.d.ts +0 -3
  60. package/date-picker/quarter-picker.component.d.ts +2 -2
  61. package/date-picker/range-picker.component.d.ts +2 -2
  62. package/date-picker/range-picker.directive.d.ts +2 -3
  63. package/date-picker/week-picker.component.d.ts +2 -2
  64. package/date-picker/year-picker.component.d.ts +2 -2
  65. package/date-range/date-range.component.d.ts +3 -11
  66. package/date-range/optional-dates/optional-dates.component.d.ts +0 -2
  67. package/dialog/body/dialog-body.component.d.ts +0 -2
  68. package/dialog/confirm/confirm.component.d.ts +2 -3
  69. package/dialog/dialog-container.component.d.ts +4 -5
  70. package/dialog/dialog.service.d.ts +4 -4
  71. package/dialog/footer/dialog-footer.component.d.ts +2 -2
  72. package/dialog/header/dialog-header.component.d.ts +2 -6
  73. package/divider/divider.component.d.ts +8 -2
  74. package/dot/dot.component.d.ts +1 -2
  75. package/drag-drop/drag-content.directive.d.ts +2 -3
  76. package/drag-drop/drag-handle.directive.d.ts +2 -3
  77. package/drag-drop/drag.directive.d.ts +4 -5
  78. package/drag-drop/drop-container.directive.d.ts +6 -3
  79. package/dropdown/dropdown-active.directive.d.ts +3 -4
  80. package/dropdown/dropdown-menu-item.directive.d.ts +1 -2
  81. package/dropdown/dropdown-submenu.component.d.ts +1 -3
  82. package/dropdown/dropdown.directive.d.ts +3 -5
  83. package/empty/empty.component.d.ts +6 -6
  84. package/esm2022/action/action.component.mjs +20 -21
  85. package/esm2022/affix/affix.component.mjs +11 -14
  86. package/esm2022/alert/alert.component.mjs +55 -81
  87. package/esm2022/anchor/anchor-link.component.mjs +23 -16
  88. package/esm2022/anchor/anchor.component.mjs +27 -24
  89. package/esm2022/arrow-switcher/arrow-switcher.component.mjs +25 -26
  90. package/esm2022/autocomplete/autocomplete.component.mjs +11 -11
  91. package/esm2022/autocomplete/autocomplete.trigger.directive.mjs +30 -37
  92. package/esm2022/autocomplete/overlay/autocomplete-container.component.mjs +11 -15
  93. package/esm2022/autocomplete/overlay/autocomplete.service.mjs +14 -21
  94. package/esm2022/avatar/avatar-list/avatar-list.component.mjs +4 -4
  95. package/esm2022/avatar/avatar.component.mjs +27 -28
  96. package/esm2022/avatar/avatar.pipe.mjs +6 -7
  97. package/esm2022/back-top/back-top.component.mjs +14 -18
  98. package/esm2022/badge/badge.component.mjs +8 -9
  99. package/esm2022/breadcrumb/breadcrumb-item.component.mjs +7 -7
  100. package/esm2022/breadcrumb/breadcrumb.component.mjs +15 -17
  101. package/esm2022/button/button-icon.component.mjs +4 -4
  102. package/esm2022/button/button.component.mjs +15 -15
  103. package/esm2022/calendar/calendar-header.component.mjs +15 -15
  104. package/esm2022/calendar/calendar.component.mjs +14 -15
  105. package/esm2022/card/header.component.mjs +4 -4
  106. package/esm2022/carousel/carousel-item.directive.mjs +7 -6
  107. package/esm2022/carousel/carousel.component.mjs +13 -15
  108. package/esm2022/carousel/carousel.service.mjs +7 -9
  109. package/esm2022/cascader/cascader-li.component.mjs +4 -4
  110. package/esm2022/cascader/cascader-search-option.component.mjs +4 -4
  111. package/esm2022/cascader/cascader.component.mjs +15 -22
  112. package/esm2022/checkbox/checkbox.component.mjs +11 -13
  113. package/esm2022/collapse/collapse-item.component.mjs +21 -24
  114. package/esm2022/color-picker/color-picker-panel.component.mjs +14 -15
  115. package/esm2022/color-picker/color-picker.component.mjs +10 -11
  116. package/esm2022/color-picker/coordinates.directive.mjs +10 -10
  117. package/esm2022/color-picker/parts/alpha/alpha.component.mjs +6 -6
  118. package/esm2022/color-picker/parts/hue/hue.component.mjs +6 -6
  119. package/esm2022/color-picker/parts/saturation/saturation.component.mjs +9 -9
  120. package/esm2022/comment/comment.component.mjs +4 -4
  121. package/esm2022/copy/copy.directive.mjs +8 -12
  122. package/esm2022/core/click-positioner.mjs +6 -7
  123. package/esm2022/core/scroll.mjs +7 -9
  124. package/esm2022/core/store/store.mjs +1 -1
  125. package/esm2022/core/update-host-class.service.mjs +6 -6
  126. package/esm2022/date-picker/abstract-picker.component.mjs +5 -5
  127. package/esm2022/date-picker/abstract-picker.directive.mjs +42 -44
  128. package/esm2022/date-picker/base-picker.component.mjs +26 -26
  129. package/esm2022/date-picker/date-picker.component.mjs +10 -11
  130. package/esm2022/date-picker/date-picker.directive.mjs +6 -8
  131. package/esm2022/date-picker/date-picker.service.mjs +6 -10
  132. package/esm2022/date-picker/index.mjs +27 -28
  133. package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +7 -8
  134. package/esm2022/date-picker/lib/calendar/calendar-header.component.mjs +6 -7
  135. package/esm2022/date-picker/lib/date/date-header.component.mjs +6 -12
  136. package/esm2022/date-picker/lib/date/date-table-cell.component.mjs +4 -4
  137. package/esm2022/date-picker/lib/date/date-table.component.mjs +10 -12
  138. package/esm2022/date-picker/lib/date-carousel/date-carousel.component.mjs +16 -16
  139. package/esm2022/date-picker/lib/decade/decade-header.component.mjs +8 -11
  140. package/esm2022/date-picker/lib/decade/decade-table.component.mjs +4 -4
  141. package/esm2022/date-picker/lib/month/month-header.component.mjs +6 -12
  142. package/esm2022/date-picker/lib/month/month-table.component.mjs +9 -10
  143. package/esm2022/date-picker/lib/popups/date-popup.component.mjs +14 -29
  144. package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +14 -20
  145. package/esm2022/date-picker/lib/quarter/quarter-table.component.mjs +9 -10
  146. package/esm2022/date-picker/lib/year/year-header.component.mjs +6 -12
  147. package/esm2022/date-picker/lib/year/year-table.component.mjs +4 -4
  148. package/esm2022/date-picker/month-picker.component.mjs +9 -11
  149. package/esm2022/date-picker/picker.component.mjs +24 -35
  150. package/esm2022/date-picker/picker.pipes.mjs +10 -11
  151. package/esm2022/date-picker/quarter-picker.component.mjs +9 -11
  152. package/esm2022/date-picker/range-picker.component.mjs +9 -11
  153. package/esm2022/date-picker/range-picker.directive.mjs +6 -8
  154. package/esm2022/date-picker/week-picker.component.mjs +9 -11
  155. package/esm2022/date-picker/year-picker.component.mjs +9 -11
  156. package/esm2022/date-range/date-range.component.mjs +17 -18
  157. package/esm2022/date-range/optional-dates/optional-dates.component.mjs +9 -13
  158. package/esm2022/dialog/body/dialog-body.component.mjs +11 -12
  159. package/esm2022/dialog/confirm/confirm.component.mjs +10 -14
  160. package/esm2022/dialog/dialog-container.component.mjs +13 -18
  161. package/esm2022/dialog/dialog.service.mjs +10 -17
  162. package/esm2022/dialog/footer/dialog-footer.component.mjs +10 -14
  163. package/esm2022/dialog/header/dialog-header.component.mjs +17 -22
  164. package/esm2022/divider/divider.component.mjs +21 -13
  165. package/esm2022/dot/dot.component.mjs +7 -7
  166. package/esm2022/drag-drop/drag-content.directive.mjs +7 -9
  167. package/esm2022/drag-drop/drag-handle.directive.mjs +7 -9
  168. package/esm2022/drag-drop/drag.directive.mjs +13 -16
  169. package/esm2022/drag-drop/drop-container.directive.mjs +13 -13
  170. package/esm2022/dropdown/dropdown-active.directive.mjs +9 -12
  171. package/esm2022/dropdown/dropdown-menu-item.directive.mjs +12 -12
  172. package/esm2022/dropdown/dropdown-menu.component.mjs +11 -7
  173. package/esm2022/dropdown/dropdown-submenu.component.mjs +9 -10
  174. package/esm2022/dropdown/dropdown.directive.mjs +12 -10
  175. package/esm2022/empty/empty.component.mjs +17 -20
  176. package/esm2022/flexible-text/flexible-text.component.mjs +16 -17
  177. package/esm2022/form/form-group-error/form-group-error.component.mjs +12 -15
  178. package/esm2022/form/form-group-label.directive.mjs +9 -10
  179. package/esm2022/form/form-group.component.mjs +18 -22
  180. package/esm2022/form/form-submit.directive.mjs +6 -7
  181. package/esm2022/form/form-validator-loader.mjs +1 -1
  182. package/esm2022/form/form-validator.service.mjs +12 -13
  183. package/esm2022/form/form.directive.mjs +11 -16
  184. package/esm2022/form/from-group-footer/form-group-footer.component.mjs +13 -19
  185. package/esm2022/form/validator/unique-validator.directive.mjs +7 -10
  186. package/esm2022/fullscreen/fullscreen.component.mjs +10 -11
  187. package/esm2022/fullscreen/fullscreen.service.mjs +7 -10
  188. package/esm2022/grid/thy-col.directive.mjs +9 -14
  189. package/esm2022/grid/thy-grid-item.component.mjs +8 -14
  190. package/esm2022/grid/thy-grid.component.mjs +7 -8
  191. package/esm2022/guider/guider-hint/guider-hint.component.mjs +4 -4
  192. package/esm2022/guider/guider.directive.mjs +8 -9
  193. package/esm2022/guider/guider.service.mjs +12 -19
  194. package/esm2022/icon/icon-registry.mjs +11 -16
  195. package/esm2022/icon/icon.component.mjs +8 -9
  196. package/esm2022/image/image-group.component.mjs +7 -7
  197. package/esm2022/image/image.directive.mjs +11 -12
  198. package/esm2022/image/image.service.mjs +8 -14
  199. package/esm2022/image/preview/image-preview.component.mjs +36 -41
  200. package/esm2022/input/input-count.component.mjs +7 -10
  201. package/esm2022/input/input-group.component.mjs +15 -16
  202. package/esm2022/input/input-search.component.mjs +9 -10
  203. package/esm2022/input/input.component.mjs +17 -17
  204. package/esm2022/input/input.directive.mjs +12 -17
  205. package/esm2022/input-number/input-number.component.mjs +6 -6
  206. package/esm2022/layout/header.component.mjs +4 -4
  207. package/esm2022/layout/sidebar-header.component.mjs +4 -4
  208. package/esm2022/layout/sidebar.component.mjs +125 -121
  209. package/esm2022/list/list-item-meta.component.mjs +4 -4
  210. package/esm2022/list/selection/selection-list.mjs +25 -25
  211. package/esm2022/loading/loading.component.mjs +10 -11
  212. package/esm2022/mention/mention.directive.mjs +9 -14
  213. package/esm2022/mention/suggestions/suggestions.component.mjs +11 -12
  214. package/esm2022/menu/group/menu-group.component.mjs +37 -38
  215. package/esm2022/menu/item/action/menu-item-action.component.mjs +15 -16
  216. package/esm2022/menu/item/menu-item.component.mjs +8 -9
  217. package/esm2022/message/abstract/abstract-message-container.component.mjs +5 -5
  218. package/esm2022/message/abstract/abstract-message.component.mjs +6 -6
  219. package/esm2022/message/message-container.component.mjs +21 -15
  220. package/esm2022/message/message-queue.service.mjs +6 -8
  221. package/esm2022/message/message.component.mjs +9 -10
  222. package/esm2022/message/message.service.mjs +10 -11
  223. package/esm2022/nav/icon-nav/icon-nav-link.directive.mjs +4 -5
  224. package/esm2022/nav/icon-nav/icon-nav.component.mjs +6 -6
  225. package/esm2022/nav/nav-ink-bar.directive.mjs +9 -14
  226. package/esm2022/nav/nav-item.directive.mjs +8 -11
  227. package/esm2022/nav/nav.component.mjs +35 -38
  228. package/esm2022/nav/nav.pipe.mjs +6 -7
  229. package/esm2022/notify/notify-container.component.mjs +11 -14
  230. package/esm2022/notify/notify-queue.service.mjs +6 -8
  231. package/esm2022/notify/notify.component.mjs +10 -10
  232. package/esm2022/notify/notify.service.mjs +11 -12
  233. package/esm2022/pagination/pagination.component.mjs +41 -46
  234. package/esm2022/pagination/pagination.pipe.mjs +6 -7
  235. package/esm2022/popover/header/popover-header.component.mjs +15 -17
  236. package/esm2022/popover/popover-container.component.mjs +11 -13
  237. package/esm2022/popover/popover.directive.mjs +13 -12
  238. package/esm2022/popover/popover.service.mjs +14 -26
  239. package/esm2022/progress/progress-circle.component.mjs +4 -7
  240. package/esm2022/progress/progress-strip.component.mjs +10 -13
  241. package/esm2022/progress/progress.component.mjs +5 -8
  242. package/esm2022/property/property-item.component.mjs +13 -16
  243. package/esm2022/property-operation/property-operation.component.mjs +27 -28
  244. package/esm2022/radio/button/radio-button.component.mjs +9 -15
  245. package/esm2022/radio/group/radio-group.component.mjs +17 -17
  246. package/esm2022/radio/radio.component.mjs +12 -18
  247. package/esm2022/rate/rate.component.mjs +10 -10
  248. package/esm2022/resizable/resizable.directive.mjs +10 -12
  249. package/esm2022/resizable/resizable.service.mjs +7 -9
  250. package/esm2022/resizable/resize-handle.component.mjs +16 -14
  251. package/esm2022/resizable/resize-handles.component.mjs +12 -5
  252. package/esm2022/result/result.component.mjs +4 -4
  253. package/esm2022/segment/segment-item.component.mjs +15 -18
  254. package/esm2022/segment/segment.component.mjs +29 -30
  255. package/esm2022/select/custom-select/custom-select.component.mjs +19 -35
  256. package/esm2022/select/native-select/native-select.component.mjs +10 -11
  257. package/esm2022/shared/base-form-check.component.mjs +7 -8
  258. package/esm2022/shared/directives/string-or-template-outlet.directive.mjs +7 -7
  259. package/esm2022/shared/directives/thy-autofocus.directive.mjs +10 -10
  260. package/esm2022/shared/directives/thy-contextmenu.directive.mjs +8 -8
  261. package/esm2022/shared/directives/thy-ctrl-enter.directive.mjs +8 -8
  262. package/esm2022/shared/directives/thy-enter.directive.mjs +8 -8
  263. package/esm2022/shared/directives/thy-scroll.directive.mjs +21 -21
  264. package/esm2022/shared/directives/thy-show.mjs +11 -11
  265. package/esm2022/shared/directives/thy-stop-propagation.directive.mjs +7 -5
  266. package/esm2022/shared/directives/view-outlet.directive.mjs +7 -7
  267. package/esm2022/shared/ng-transclude.directive.mjs +6 -5
  268. package/esm2022/shared/option/group/option-group.component.mjs +10 -10
  269. package/esm2022/shared/option/list-option/list-option.component.mjs +14 -22
  270. package/esm2022/shared/option/option.component.mjs +11 -22
  271. package/esm2022/shared/select/select-control/select-control.component.mjs +27 -27
  272. package/esm2022/skeleton/skeleton-circle.component.mjs +7 -15
  273. package/esm2022/skeleton/skeleton-rectangle.component.mjs +7 -15
  274. package/esm2022/skeleton/stylized/bullet-list.component.mjs +8 -9
  275. package/esm2022/skeleton/stylized/list.component.mjs +8 -9
  276. package/esm2022/skeleton/stylized/paragraph.component.mjs +8 -9
  277. package/esm2022/slide/drawer/drawer-container.directive.mjs +6 -6
  278. package/esm2022/slide/slide-container.component.mjs +12 -16
  279. package/esm2022/slide/slide-header/slide-header.component.mjs +13 -14
  280. package/esm2022/slide/slide-ref.service.mjs +1 -1
  281. package/esm2022/slide/slide.service.mjs +8 -12
  282. package/esm2022/slider/slider.component.mjs +8 -8
  283. package/esm2022/space/space.component.mjs +16 -16
  284. package/esm2022/statistic/statistic.component.mjs +23 -23
  285. package/esm2022/stepper/step.component.mjs +6 -11
  286. package/esm2022/stepper/stepper-button.directive.mjs +10 -11
  287. package/esm2022/stepper/stepper.component.mjs +5 -5
  288. package/esm2022/strength/strength.component.mjs +11 -12
  289. package/esm2022/switch/switch.component.mjs +11 -11
  290. package/esm2022/table/table-column.component.mjs +58 -63
  291. package/esm2022/table/table-skeleton.component.mjs +35 -38
  292. package/esm2022/table/table.component.mjs +19 -29
  293. package/esm2022/tabs/tab-content.component.mjs +9 -9
  294. package/esm2022/tabs/tabs.component.mjs +22 -25
  295. package/esm2022/tag/tag.component.mjs +22 -22
  296. package/esm2022/time-picker/inner/inner-time-picker.component.mjs +12 -12
  297. package/esm2022/time-picker/time-picker-panel.component.mjs +31 -34
  298. package/esm2022/time-picker/time-picker.component.mjs +33 -43
  299. package/esm2022/timeline/timeline-item.component.mjs +15 -16
  300. package/esm2022/timeline/timeline.component.mjs +15 -16
  301. package/esm2022/tooltip/tooltip.component.mjs +17 -17
  302. package/esm2022/tooltip/tooltip.directive.mjs +11 -10
  303. package/esm2022/tooltip/tooltip.service.mjs +9 -13
  304. package/esm2022/transfer/transfer-list.component.mjs +9 -9
  305. package/esm2022/transfer/transfer.component.mjs +4 -4
  306. package/esm2022/tree/tree-node.component.mjs +16 -20
  307. package/esm2022/tree/tree.component.mjs +90 -96
  308. package/esm2022/tree-select/tree-select.component.mjs +28 -36
  309. package/esm2022/typography/bg-color.directive.mjs +9 -9
  310. package/esm2022/typography/text/text.component.mjs +3 -4
  311. package/esm2022/typography/text-color.directive.mjs +9 -9
  312. package/esm2022/upload/file-drop.directive.mjs +1 -1
  313. package/esm2022/upload/file-select-base.mjs +5 -6
  314. package/esm2022/upload/file-select.component.mjs +4 -3
  315. package/esm2022/upload/upload.service.mjs +6 -7
  316. package/esm2022/version.mjs +2 -2
  317. package/esm2022/vote/vote.component.mjs +4 -4
  318. package/esm2022/watermark/watermark.directive.mjs +12 -12
  319. package/fesm2022/ngx-tethys-action.mjs +20 -20
  320. package/fesm2022/ngx-tethys-action.mjs.map +1 -1
  321. package/fesm2022/ngx-tethys-affix.mjs +12 -14
  322. package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
  323. package/fesm2022/ngx-tethys-alert.mjs +54 -80
  324. package/fesm2022/ngx-tethys-alert.mjs.map +1 -1
  325. package/fesm2022/ngx-tethys-anchor.mjs +48 -35
  326. package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
  327. package/fesm2022/ngx-tethys-arrow-switcher.mjs +25 -25
  328. package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
  329. package/fesm2022/ngx-tethys-autocomplete.mjs +63 -75
  330. package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
  331. package/fesm2022/ngx-tethys-avatar.mjs +32 -32
  332. package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
  333. package/fesm2022/ngx-tethys-back-top.mjs +15 -18
  334. package/fesm2022/ngx-tethys-back-top.mjs.map +1 -1
  335. package/fesm2022/ngx-tethys-badge.mjs +8 -8
  336. package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
  337. package/fesm2022/ngx-tethys-breadcrumb.mjs +19 -21
  338. package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
  339. package/fesm2022/ngx-tethys-button.mjs +16 -16
  340. package/fesm2022/ngx-tethys-button.mjs.map +1 -1
  341. package/fesm2022/ngx-tethys-calendar.mjs +26 -26
  342. package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
  343. package/fesm2022/ngx-tethys-card.mjs +3 -3
  344. package/fesm2022/ngx-tethys-card.mjs.map +1 -1
  345. package/fesm2022/ngx-tethys-carousel.mjs +23 -24
  346. package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
  347. package/fesm2022/ngx-tethys-cascader.mjs +19 -25
  348. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  349. package/fesm2022/ngx-tethys-checkbox.mjs +10 -11
  350. package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
  351. package/fesm2022/ngx-tethys-collapse.mjs +20 -22
  352. package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
  353. package/fesm2022/ngx-tethys-color-picker.mjs +47 -45
  354. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  355. package/fesm2022/ngx-tethys-comment.mjs +3 -3
  356. package/fesm2022/ngx-tethys-comment.mjs.map +1 -1
  357. package/fesm2022/ngx-tethys-copy.mjs +8 -12
  358. package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
  359. package/fesm2022/ngx-tethys-core.mjs +14 -16
  360. package/fesm2022/ngx-tethys-core.mjs.map +1 -1
  361. package/fesm2022/ngx-tethys-date-picker.mjs +2872 -2924
  362. package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
  363. package/fesm2022/ngx-tethys-date-range.mjs +24 -26
  364. package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
  365. package/fesm2022/ngx-tethys-dialog.mjs +61 -77
  366. package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
  367. package/fesm2022/ngx-tethys-divider.mjs +20 -12
  368. package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
  369. package/fesm2022/ngx-tethys-dot.mjs +6 -6
  370. package/fesm2022/ngx-tethys-dot.mjs.map +1 -1
  371. package/fesm2022/ngx-tethys-drag-drop.mjs +33 -37
  372. package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
  373. package/fesm2022/ngx-tethys-dropdown.mjs +49 -43
  374. package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
  375. package/fesm2022/ngx-tethys-empty.mjs +18 -18
  376. package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
  377. package/fesm2022/ngx-tethys-flexible-text.mjs +16 -17
  378. package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
  379. package/fesm2022/ngx-tethys-form.mjs +74 -89
  380. package/fesm2022/ngx-tethys-form.mjs.map +1 -1
  381. package/fesm2022/ngx-tethys-fullscreen.mjs +14 -17
  382. package/fesm2022/ngx-tethys-fullscreen.mjs.map +1 -1
  383. package/fesm2022/ngx-tethys-grid.mjs +20 -29
  384. package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
  385. package/fesm2022/ngx-tethys-guider.mjs +20 -26
  386. package/fesm2022/ngx-tethys-guider.mjs.map +1 -1
  387. package/fesm2022/ngx-tethys-icon.mjs +18 -22
  388. package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
  389. package/fesm2022/ngx-tethys-image.mjs +60 -65
  390. package/fesm2022/ngx-tethys-image.mjs.map +1 -1
  391. package/fesm2022/ngx-tethys-input-number.mjs +5 -5
  392. package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
  393. package/fesm2022/ngx-tethys-input.mjs +53 -60
  394. package/fesm2022/ngx-tethys-input.mjs.map +1 -1
  395. package/fesm2022/ngx-tethys-layout.mjs +129 -124
  396. package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
  397. package/fesm2022/ngx-tethys-list.mjs +27 -27
  398. package/fesm2022/ngx-tethys-list.mjs.map +1 -1
  399. package/fesm2022/ngx-tethys-loading.mjs +10 -10
  400. package/fesm2022/ngx-tethys-loading.mjs.map +1 -1
  401. package/fesm2022/ngx-tethys-mention.mjs +19 -24
  402. package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
  403. package/fesm2022/ngx-tethys-menu.mjs +56 -57
  404. package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
  405. package/fesm2022/ngx-tethys-message.mjs +47 -41
  406. package/fesm2022/ngx-tethys-message.mjs.map +1 -1
  407. package/fesm2022/ngx-tethys-nav.mjs +61 -72
  408. package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
  409. package/fesm2022/ngx-tethys-notify.mjs +31 -34
  410. package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
  411. package/fesm2022/ngx-tethys-pagination.mjs +46 -51
  412. package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
  413. package/fesm2022/ngx-tethys-popover.mjs +51 -57
  414. package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
  415. package/fesm2022/ngx-tethys-progress.mjs +15 -24
  416. package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
  417. package/fesm2022/ngx-tethys-property-operation.mjs +27 -27
  418. package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
  419. package/fesm2022/ngx-tethys-property.mjs +14 -14
  420. package/fesm2022/ngx-tethys-property.mjs.map +1 -1
  421. package/fesm2022/ngx-tethys-radio.mjs +33 -39
  422. package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
  423. package/fesm2022/ngx-tethys-rate.mjs +9 -9
  424. package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
  425. package/fesm2022/ngx-tethys-resizable.mjs +43 -34
  426. package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
  427. package/fesm2022/ngx-tethys-result.mjs +3 -3
  428. package/fesm2022/ngx-tethys-result.mjs.map +1 -1
  429. package/fesm2022/ngx-tethys-segment.mjs +41 -44
  430. package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
  431. package/fesm2022/ngx-tethys-select.mjs +28 -44
  432. package/fesm2022/ngx-tethys-select.mjs.map +1 -1
  433. package/fesm2022/ngx-tethys-shared.mjs +135 -150
  434. package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
  435. package/fesm2022/ngx-tethys-skeleton.mjs +33 -47
  436. package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
  437. package/fesm2022/ngx-tethys-slide.mjs +33 -37
  438. package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
  439. package/fesm2022/ngx-tethys-slider.mjs +7 -7
  440. package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
  441. package/fesm2022/ngx-tethys-space.mjs +16 -16
  442. package/fesm2022/ngx-tethys-space.mjs.map +1 -1
  443. package/fesm2022/ngx-tethys-statistic.mjs +22 -22
  444. package/fesm2022/ngx-tethys-statistic.mjs.map +1 -1
  445. package/fesm2022/ngx-tethys-stepper.mjs +17 -22
  446. package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
  447. package/fesm2022/ngx-tethys-strength.mjs +11 -11
  448. package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
  449. package/fesm2022/ngx-tethys-switch.mjs +10 -10
  450. package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
  451. package/fesm2022/ngx-tethys-table.mjs +107 -124
  452. package/fesm2022/ngx-tethys-table.mjs.map +1 -1
  453. package/fesm2022/ngx-tethys-tabs.mjs +29 -32
  454. package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
  455. package/fesm2022/ngx-tethys-tag.mjs +21 -21
  456. package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
  457. package/fesm2022/ngx-tethys-time-picker.mjs +70 -80
  458. package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
  459. package/fesm2022/ngx-tethys-timeline.mjs +26 -26
  460. package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
  461. package/fesm2022/ngx-tethys-tooltip.mjs +35 -36
  462. package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
  463. package/fesm2022/ngx-tethys-transfer.mjs +10 -10
  464. package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
  465. package/fesm2022/ngx-tethys-tree-select.mjs +29 -37
  466. package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
  467. package/fesm2022/ngx-tethys-tree.mjs +102 -110
  468. package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
  469. package/fesm2022/ngx-tethys-typography.mjs +18 -18
  470. package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
  471. package/fesm2022/ngx-tethys-upload.mjs +11 -12
  472. package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
  473. package/fesm2022/ngx-tethys-vote.mjs +3 -3
  474. package/fesm2022/ngx-tethys-vote.mjs.map +1 -1
  475. package/fesm2022/ngx-tethys-watermark.mjs +12 -12
  476. package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
  477. package/fesm2022/ngx-tethys.mjs +1 -1
  478. package/fesm2022/ngx-tethys.mjs.map +1 -1
  479. package/flexible-text/flexible-text.component.d.ts +1 -3
  480. package/form/form-group-error/form-group-error.component.d.ts +1 -3
  481. package/form/form-group-label.directive.d.ts +0 -2
  482. package/form/form-group.component.d.ts +1 -4
  483. package/form/form-submit.directive.d.ts +0 -2
  484. package/form/form-validator.service.d.ts +0 -2
  485. package/form/form.directive.d.ts +4 -4
  486. package/form/from-group-footer/form-group-footer.component.d.ts +2 -4
  487. package/form/validator/unique-validator.directive.d.ts +1 -4
  488. package/fullscreen/fullscreen.component.d.ts +0 -2
  489. package/fullscreen/fullscreen.service.d.ts +0 -2
  490. package/grid/thy-col.directive.d.ts +1 -2
  491. package/grid/thy-grid-item.component.d.ts +2 -4
  492. package/grid/thy-grid.component.d.ts +1 -3
  493. package/guider/guider.directive.d.ts +1 -3
  494. package/guider/guider.service.d.ts +0 -7
  495. package/icon/icon-registry.d.ts +1 -3
  496. package/icon/icon.component.d.ts +1 -3
  497. package/image/image-group.component.d.ts +1 -2
  498. package/image/image.directive.d.ts +1 -3
  499. package/image/image.service.d.ts +2 -2
  500. package/image/preview/image-preview.component.d.ts +1 -4
  501. package/input/input-count.component.d.ts +3 -4
  502. package/input/input-group.component.d.ts +1 -3
  503. package/input/input-search.component.d.ts +2 -2
  504. package/input/input.component.d.ts +1 -2
  505. package/input/input.directive.d.ts +2 -3
  506. package/input-number/input-number.component.d.ts +2 -2
  507. package/layout/sidebar.component.d.ts +44 -13
  508. package/list/selection/selection-list.d.ts +1 -2
  509. package/loading/loading.component.d.ts +0 -2
  510. package/loading/styles/loading.scss +3 -1
  511. package/mention/mention.directive.d.ts +4 -5
  512. package/mention/suggestions/suggestions.component.d.ts +2 -3
  513. package/menu/group/menu-group.component.d.ts +30 -8
  514. package/menu/item/action/menu-item-action.component.d.ts +2 -3
  515. package/menu/item/menu-item.component.d.ts +1 -2
  516. package/message/abstract/abstract-message-container.component.d.ts +1 -2
  517. package/message/abstract/abstract-message.component.d.ts +2 -2
  518. package/message/message-container.component.d.ts +1 -3
  519. package/message/message-queue.service.d.ts +1 -2
  520. package/message/message.component.d.ts +1 -3
  521. package/message/message.service.d.ts +3 -5
  522. package/nav/icon-nav/icon-nav.component.d.ts +2 -2
  523. package/nav/nav-ink-bar.directive.d.ts +2 -4
  524. package/nav/nav-item.directive.d.ts +3 -4
  525. package/nav/nav.component.d.ts +1 -3
  526. package/nav/nav.pipe.d.ts +0 -2
  527. package/notify/notify-container.component.d.ts +1 -3
  528. package/notify/notify-queue.service.d.ts +1 -2
  529. package/notify/notify.component.d.ts +2 -3
  530. package/notify/notify.service.d.ts +1 -4
  531. package/package.json +1 -1
  532. package/pagination/pagination.component.d.ts +2 -4
  533. package/pagination/pagination.pipe.d.ts +0 -2
  534. package/popover/header/popover-header.component.d.ts +0 -3
  535. package/popover/popover-container.component.d.ts +3 -4
  536. package/popover/popover.directive.d.ts +2 -5
  537. package/popover/popover.service.d.ts +4 -6
  538. package/progress/progress-circle.component.d.ts +0 -1
  539. package/progress/progress-strip.component.d.ts +0 -1
  540. package/progress/progress.component.d.ts +0 -1
  541. package/property/property-item.component.d.ts +6 -9
  542. package/property-operation/property-operation.component.d.ts +1 -3
  543. package/radio/button/radio-button.component.d.ts +2 -5
  544. package/radio/group/radio-group.component.d.ts +1 -2
  545. package/radio/radio.component.d.ts +2 -3
  546. package/rate/rate.component.d.ts +2 -2
  547. package/resizable/resizable.directive.d.ts +2 -4
  548. package/resizable/resizable.service.d.ts +2 -2
  549. package/resizable/resize-handle.component.d.ts +2 -7
  550. package/schematics/version.d.ts +1 -1
  551. package/schematics/version.js +1 -1
  552. package/segment/segment-item.component.d.ts +4 -5
  553. package/segment/segment.component.d.ts +2 -7
  554. package/select/custom-select/custom-select.component.d.ts +5 -5
  555. package/select/native-select/native-select.component.d.ts +1 -1
  556. package/shared/base-form-check.component.d.ts +1 -1
  557. package/shared/directives/string-or-template-outlet.directive.d.ts +1 -2
  558. package/shared/directives/thy-autofocus.directive.d.ts +0 -2
  559. package/shared/directives/thy-contextmenu.directive.d.ts +1 -2
  560. package/shared/directives/thy-ctrl-enter.directive.d.ts +1 -2
  561. package/shared/directives/thy-enter.directive.d.ts +1 -2
  562. package/shared/directives/thy-scroll.directive.d.ts +1 -2
  563. package/shared/directives/thy-show.d.ts +1 -2
  564. package/shared/directives/thy-stop-propagation.directive.d.ts +2 -2
  565. package/shared/directives/view-outlet.directive.d.ts +1 -2
  566. package/shared/ng-transclude.directive.d.ts +1 -1
  567. package/shared/option/group/option-group.component.d.ts +1 -2
  568. package/shared/option/list-option/list-option.component.d.ts +6 -7
  569. package/shared/option/option.component.d.ts +5 -5
  570. package/shared/select/select-control/select-control.component.d.ts +1 -2
  571. package/skeleton/skeleton-circle.component.d.ts +1 -4
  572. package/skeleton/skeleton-rectangle.component.d.ts +5 -5
  573. package/skeleton/stylized/bullet-list.component.d.ts +9 -1
  574. package/slide/drawer/drawer-container.directive.d.ts +1 -2
  575. package/slide/slide-container.component.d.ts +3 -4
  576. package/slide/slide-header/slide-header.component.d.ts +0 -2
  577. package/slide/slide.service.d.ts +3 -3
  578. package/slider/slider.component.d.ts +2 -2
  579. package/space/space.component.d.ts +1 -2
  580. package/statistic/statistic.component.d.ts +1 -2
  581. package/stepper/step.component.d.ts +1 -2
  582. package/stepper/stepper-button.directive.d.ts +0 -3
  583. package/strength/strength.component.d.ts +0 -1
  584. package/switch/switch.component.d.ts +1 -1
  585. package/table/table-column.component.d.ts +32 -8
  586. package/table/table-skeleton.component.d.ts +1 -3
  587. package/table/table.component.d.ts +3 -5
  588. package/tabs/tabs.component.d.ts +1 -3
  589. package/tag/tag.component.d.ts +7 -3
  590. package/time-picker/inner/inner-time-picker.component.d.ts +2 -4
  591. package/time-picker/time-picker-panel.component.d.ts +1 -3
  592. package/time-picker/time-picker.component.d.ts +1 -2
  593. package/timeline/timeline-item.component.d.ts +1 -3
  594. package/timeline/timeline.component.d.ts +1 -3
  595. package/tooltip/tooltip.component.d.ts +1 -2
  596. package/tooltip/tooltip.directive.d.ts +6 -9
  597. package/tooltip/tooltip.service.d.ts +2 -4
  598. package/transfer/transfer-list.component.d.ts +1 -2
  599. package/tree/tree-node.component.d.ts +5 -21
  600. package/tree/tree.component.d.ts +1 -2
  601. package/tree-select/tree-select.component.d.ts +5 -6
  602. package/typography/bg-color.directive.d.ts +0 -2
  603. package/typography/text-color.directive.d.ts +1 -2
  604. package/upload/file-select-base.d.ts +2 -3
  605. package/upload/file-select.component.d.ts +1 -0
  606. package/upload/upload.service.d.ts +0 -2
  607. package/watermark/watermark.directive.d.ts +1 -2
@@ -55,9 +55,9 @@ export class AbstractPickerComponent extends TabIndexDisabledControlValueAccesso
55
55
  initValue() {
56
56
  this.thyValue = this.isRange ? [] : null;
57
57
  }
58
- constructor(cdr) {
58
+ constructor() {
59
59
  super();
60
- this.cdr = cdr;
60
+ this.cdr = inject(ChangeDetectorRef);
61
61
  this._panelMode = 'date';
62
62
  this.datePickerConfigService = inject(ThyDatePickerConfigService);
63
63
  /**
@@ -251,12 +251,12 @@ export class AbstractPickerComponent extends TabIndexDisabledControlValueAccesso
251
251
  setValueByPrecision(value) {
252
252
  return setValueByTimestampPrecision(value, this.isRange, this.thyTimestampPrecision);
253
253
  }
254
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AbstractPickerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
254
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AbstractPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
255
255
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.0", type: AbstractPickerComponent, inputs: { thyMode: "thyMode", thyAllowClear: ["thyAllowClear", "thyAllowClear", coerceBooleanProperty], thyAutoFocus: ["thyAutoFocus", "thyAutoFocus", coerceBooleanProperty], thyOpen: ["thyOpen", "thyOpen", coerceBooleanProperty], thyDisabledDate: "thyDisabledDate", thyMinDate: "thyMinDate", thyMaxDate: "thyMaxDate", thyPlaceHolder: "thyPlaceHolder", thyReadonly: ["thyReadonly", "thyReadonly", coerceBooleanProperty], thyOriginClassName: "thyOriginClassName", thyPanelClassName: "thyPanelClassName", thySize: "thySize", thyTimestampPrecision: "thyTimestampPrecision", thyFormat: "thyFormat", thyAutoStartAndEnd: ["thyAutoStartAndEnd", "thyAutoStartAndEnd", coerceBooleanProperty], thyDefaultPickerValue: "thyDefaultPickerValue", thySuffixIcon: "thySuffixIcon", thyShowShortcut: ["thyShowShortcut", "thyShowShortcut", coerceBooleanProperty], thyShortcutPosition: "thyShortcutPosition", thyShortcutPresets: "thyShortcutPresets", thyDisabled: ["thyDisabled", "thyDisabled", coerceBooleanProperty] }, outputs: { thyDateChange: "thyDateChange", thyOpenChange: "thyOpenChange" }, viewQueries: [{ propertyName: "picker", first: true, predicate: ThyPicker, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
256
256
  }
257
257
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AbstractPickerComponent, decorators: [{
258
258
  type: Directive
259
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { thyMode: [{
259
+ }], ctorParameters: () => [], propDecorators: { thyMode: [{
260
260
  type: Input
261
261
  }], thyAllowClear: [{
262
262
  type: Input,
@@ -313,4 +313,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
313
313
  type: Input,
314
314
  args: [{ transform: coerceBooleanProperty }]
315
315
  }] } });
316
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRlLXBpY2tlci9hYnN0cmFjdC1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxxQkFBcUIsRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSw0QkFBNEIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVk1RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHbkU7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLHVCQUNsQixTQUFRLHlDQUF5QztJQVNqRDs7O09BR0c7SUFDSCxJQUFhLE9BQU8sQ0FBQyxLQUFtQjtRQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssSUFBSSxNQUFNLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBNkZEOzs7T0FHRztJQUNILElBQWEsbUJBQW1CLENBQUMsUUFBNkI7UUFDMUQsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO1FBQ3JDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gs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QUFDLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFO2dCQUtsQyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBS0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQU1HLE9BQU87c0JBQWYsS0FBSztnQkFNRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSztnQkFPdUMsa0JBQWtCO3NCQUE5RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFO2dCQU1sQyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBS0csYUFBYTtzQkFBckIsS0FBSztnQkFNdUMsZUFBZTtzQkFBM0QsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFNOUIsbUJBQW1CO3NCQUEvQixLQUFLO2dCQVVPLGtCQUFrQjtzQkFBOUIsS0FBSztnQkFPYSxhQUFhO3NCQUEvQixNQUFNO2dCQUVZLGFBQWE7c0JBQS9CLE1BQU07Z0JBRXdDLE1BQU07c0JBQXBELFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFPbEMsV0FBVztzQkFEZCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGFiSW5kZXhEaXNhYmxlZENvbnRyb2xWYWx1ZUFjY2Vzc29yTWl4aW4gfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBUaW55RGF0ZSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IENvbXBhdGlibGVWYWx1ZSwgUmFuZ2VBZHZhbmNlZFZhbHVlIH0gZnJvbSAnLi9pbm5lci10eXBlcyc7XG5pbXBvcnQgeyBUaHlQaWNrZXIgfSBmcm9tICcuL3BpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgbWFrZVZhbHVlLCBzZXRWYWx1ZUJ5VGltZXN0YW1wUHJlY2lzaW9uLCB0cmFuc2Zvcm1EYXRlVmFsdWUgfSBmcm9tICcuL3BpY2tlci51dGlsJztcbmltcG9ydCB7XG4gICAgQ29tcGF0aWJsZURhdGUsXG4gICAgRGF0ZUVudHJ5LFxuICAgIERpc2FibGVkRGF0ZUZuLFxuICAgIFRoeURhdGVSYW5nZUVudHJ5LFxuICAgIFRoeVBhbmVsTW9kZSxcbiAgICBUaHlTaG9ydGN1dFBvc2l0aW9uLFxuICAgIENvbXBhdGlibGVQcmVzZXRzLFxuICAgIFRoeURhdGVHcmFudWxhcml0eSxcbiAgICBUaHlEYXRlQ2hhbmdlRXZlbnRcbn0gZnJvbSAnLi9zdGFuZGFyZC10eXBlcyc7XG5pbXBvcnQgeyBUaHlEYXRlUGlja2VyQ29uZmlnU2VydmljZSB9IGZyb20gJy4vZGF0ZS1waWNrZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTYWZlQW55IH0gZnJvbSAnbmd4LXRldGh5cy90eXBlcyc7XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RQaWNrZXJDb21wb25lbnRcbiAgICBleHRlbmRzIFRhYkluZGV4RGlzYWJsZWRDb250cm9sVmFsdWVBY2Nlc3Nvck1peGluXG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3Nvclxue1xuICAgIHRoeVZhbHVlOiBDb21wYXRpYmxlVmFsdWUgfCBudWxsO1xuXG4gICAgX3BhbmVsTW9kZTogVGh5UGFuZWxNb2RlID0gJ2RhdGUnO1xuXG4gICAgcHJpdmF0ZSBkYXRlUGlja2VyQ29uZmlnU2VydmljZSA9IGluamVjdChUaHlEYXRlUGlja2VyQ29uZmlnU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDmqKHlvI9cbiAgICAgKiBAdHlwZSBkZWNhZGUgfCB5ZWFyIHwgbW9udGggfCBkYXRlIHwgd2VlayB8IGZsZXhpYmxlXG4gICAgICovXG4gICAgQElucHV0KCkgc2V0IHRoeU1vZGUodmFsdWU6IFRoeVBhbmVsTW9kZSkge1xuICAgICAgICB0aGlzLl9wYW5lbE1vZGUgPSB2YWx1ZSA/PyAnZGF0ZSc7XG4gICAgfVxuXG4gICAgZ2V0IHRoeU1vZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYW5lbE1vZGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5pi+56S65riF6Zmk5oyJ6ZKuXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5QWxsb3dDbGVhciA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKboh6rliqjojrflj5bnhKbngrlcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeUF1dG9Gb2N1cyA9IGZhbHNlO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5T3BlbjogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHRoeURpc2FibGVkRGF0ZTogRGlzYWJsZWREYXRlRm47XG5cbiAgICAvKipcbiAgICAgKiDmnIDlsI/lgLxcbiAgICAgKiBAdHlwZSBEYXRlIHwgbnVtYmVyXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5TWluRGF0ZTogRGF0ZSB8IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIOacgOWkp+WAvFxuICAgICAqIEB0eXBlIERhdGUgfCBudW1iZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlNYXhEYXRlOiBEYXRlIHwgbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICog6L6T5YWl5qGG5o+Q56S65paH5a2XXG4gICAgICogQHR5cGUgc3RyaW5nIHwgc3RyaW5nW11cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlQbGFjZUhvbGRlcjogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblj6ror7tcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeVJlYWRvbmx5OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog6YCJ5oup5ZmoIGNsYXNzTmFtZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeU9yaWdpbkNsYXNzTmFtZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog5by55Ye65bGCIGNsYXNzTmFtZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVBhbmVsQ2xhc3NOYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDovpPlhaXmoYbnmoTlpKflsI9cbiAgICAgKiBAdHlwZSB4cyB8IHNtIHwgbWQgfCBsZyB8IGRlZmF1bHRcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlTaXplOiAnbGcnIHwgJ21kJyB8ICdzbScgfCAneHMnIHwgJ2RlZmF1bHQnID0gJ2RlZmF1bHQnO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u5pe26Ze05oiz57K+5bqmXG4gICAgICogQGRlZmF1bHQgc2Vjb25kcyAxMOS9jVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVRpbWVzdGFtcFByZWNpc2lvbjogJ3NlY29uZHMnIHwgJ21pbGxpc2Vjb25kcycgPSB0aGlzLmRhdGVQaWNrZXJDb25maWdTZXJ2aWNlLmNvbmZpZz8udGltZXN0YW1wUHJlY2lzaW9uIHx8ICdzZWNvbmRzJztcblxuICAgIC8qKlxuICAgICAqIOWxleekuueahOaXpeacn+agvOW8j1xuICAgICAqIEBkZWZhdWx0IHl5eXktTU0tZGRcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlGb3JtYXQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbi5lbi11cyBvbmx5IGZvciByYW5nZSBwaWNrZXIsIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSB0YWtlIHRoZSBiZWdpbm5pbmcgYW5kIGVuZGluZyB1bml4VGltZSBvZiB0aGUgZGF5XG4gICAgICogQGRlc2NyaXB0aW9uLnpoLWNuIOaYr+WQpuWPluWAvOW8gOWni+aXpeacn+eahDAwOjAw5Lul5Y+K5oiq5q2i5pel5pyf55qEMjQ6MDBcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeUF1dG9TdGFydEFuZEVuZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog6Z2i5p2/6buY6K6k5pel5pyfXG4gICAgICogQHR5cGUgQ29tcGF0aWJsZURhdGUgfCBudW1iZXIgfCBudWxsXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5RGVmYXVsdFBpY2tlclZhbHVlOiBDb21wYXRpYmxlRGF0ZSB8IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICog6Ieq5a6a5LmJ55qE5ZCO57yA5Zu+5qCHXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5U3VmZml4SWNvbiA9ICdjYWxlbmRhcic7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblsZXnpLrlv6vmjbfpgInpobnpnaLmnb9cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeVNob3dTaG9ydGN1dDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOW/q+aNt+mAiemhuemdouadv+eahOaYvuekuuS9jee9rlxuICAgICAqIEB0eXBlIGxlZnQgfCBib3R0b21cbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgdGh5U2hvcnRjdXRQb3NpdGlvbihwb3NpdGlvbjogVGh5U2hvcnRjdXRQb3NpdGlvbikge1xuICAgICAgICBpZiAoISFwb3NpdGlvbikge1xuICAgICAgICAgICAgdGhpcy5zaG9ydGN1dFBvc2l0aW9uID0gcG9zaXRpb247XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDoh6rlrprkuYnlv6vmjbfpgInpoblcbiAgICAgKiBAdHlwZSBUaHlTaG9ydGN1dFByZXNldFtdXG4gICAgICovXG4gICAgQElucHV0KCkgc2V0IHRoeVNob3J0Y3V0UHJlc2V0cyhwcmVzZXRzOiBDb21wYXRpYmxlUHJlc2V0cykge1xuICAgICAgICB0aGlzLnNob3J0Y3V0UHJlc2V0cyA9IHByZXNldHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5pel5pyf5Y+Y5YyW55qE5Zue6LCDXG4gICAgICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHRoeURhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRoeURhdGVDaGFuZ2VFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKSByZWFkb25seSB0aHlPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgQFZpZXdDaGlsZChUaHlQaWNrZXIsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBwaWNrZXI6IFRoeVBpY2tlcjtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuemgeeUqFxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSlcbiAgICBzZXQgdGh5RGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgdGh5RGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkO1xuICAgIH1cblxuICAgIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBzaG9ydGN1dFBvc2l0aW9uOiBUaHlTaG9ydGN1dFBvc2l0aW9uID0gJ2xlZnQnO1xuXG4gICAgc2hvcnRjdXRQcmVzZXRzOiBDb21wYXRpYmxlUHJlc2V0cztcblxuICAgIGlzUmFuZ2U6IGJvb2xlYW47XG5cbiAgICB3aXRoVGltZTogYm9vbGVhbjtcblxuICAgIGZsZXhpYmxlOiBib29sZWFuO1xuXG4gICAgZmxleGlibGVEYXRlR3JhbnVsYXJpdHk6IFRoeURhdGVHcmFudWxhcml0eTtcblxuICAgIHByb3RlY3RlZCBkZXN0cm95ZWQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcm90ZWN0ZWQgaXNDdXN0b21QbGFjZUhvbGRlciA9IGZhbHNlO1xuICAgIHByaXZhdGUgb25seUVtaXREYXRlID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIG9yaWdpbldpdGhUaW1lOiBib29sZWFuO1xuXG4gICAgZ2V0IHJlYWxPcGVuU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBpY2tlci5yZWFsT3BlblN0YXRlO1xuICAgIH1cblxuICAgIGdldCBpc1Nob3dEYXRlUG9wdXAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBpY2tlci5pc1Nob3dEYXRlUG9wdXA7XG4gICAgfVxuXG4gICAgaW5pdFZhbHVlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRoeVZhbHVlID0gdGhpcy5pc1JhbmdlID8gW10gOiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFBsYWNlSG9sZGVyKCk7XG4gICAgICAgIHRoaXMuaW5pdFZhbHVlKCk7XG4gICAgICAgIHRoaXMuaXNGbGV4aWJsZSgpO1xuICAgIH1cblxuICAgIGlzRmxleGlibGUoKSB7XG4gICAgICAgIHRoaXMuZmxleGlibGUgPSB0aGlzLnRoeU1vZGUgPT09ICdmbGV4aWJsZSc7XG4gICAgfVxuXG4gICAgb25EYXRlVmFsdWVDaGFuZ2UoZXZlbnQ6IFRoeURhdGVDaGFuZ2VFdmVudCkge1xuICAgICAgICB0aGlzLnRoeURhdGVDaGFuZ2UuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy50aHlQbGFjZUhvbGRlciAmJiBjaGFuZ2VzLnRoeVBsYWNlSG9sZGVyLmZpcnN0Q2hhbmdlICYmIHR5cGVvZiB0aGlzLnRoeVBsYWNlSG9sZGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5pc0N1c3RvbVBsYWNlSG9sZGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBjbG9zZU92ZXJsYXkoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGlja2VyLmhpZGVPdmVybGF5KCk7XG4gICAgfVxuXG4gICAgZ2V0QXV0b1N0YXJ0QW5kRW5kVmFsdWUoYmVnaW46IFRpbnlEYXRlLCBlbmQ6IFRpbnlEYXRlKSB7XG4gICAgICAgIGxldCB2YWx1ZTogeyBiZWdpbjogbnVtYmVyOyBlbmQ6IG51bWJlciB9O1xuICAgICAgICBzd2l0Y2ggKHRoaXMudGh5TW9kZSkge1xuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiBiZWdpbi5zdGFydE9mRGF5KCkuZ2V0VW5peFRpbWUoKSxcbiAgICAgICAgICAgICAgICAgICAgZW5kOiBlbmQuZW5kT2ZEYXkoKS5nZXRVbml4VGltZSgpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICAgICAgICAgIHZhbHVlID0ge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogYmVnaW4uc3RhcnRPZldlZWsoKS5nZXRVbml4VGltZSgpLFxuICAgICAgICAgICAgICAgICAgICBlbmQ6IGVuZC5lbmRPZldlZWsoKS5nZXRVbml4VGltZSgpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IGJlZ2luLnN0YXJ0T2ZNb250aCgpLmdldFVuaXhUaW1lKCksXG4gICAgICAgICAgICAgICAgICAgIGVuZDogZW5kLmVuZE9mTW9udGgoKS5nZXRVbml4VGltZSgpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHZhbHVlID0ge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogYmVnaW4uc3RhcnRPZlllYXIoKS5nZXRVbml4VGltZSgpLFxuICAgICAgICAgICAgICAgICAgICBlbmQ6IGVuZC5lbmRPZlllYXIoKS5nZXRVbml4VGltZSgpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiBiZWdpbi5zdGFydE9mRGF5KCkuZ2V0VW5peFRpbWUoKSxcbiAgICAgICAgICAgICAgICAgICAgZW5kOiBlbmQuZW5kT2ZEYXkoKS5nZXRVbml4VGltZSgpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZShvcmlnaW5hbFZhbHVlOiBDb21wYXRpYmxlVmFsdWUgfCBSYW5nZUFkdmFuY2VkVmFsdWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRGb3JtYXRSdWxlKCk7XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIHdpdGhUaW1lLCBmbGV4aWJsZURhdGVHcmFudWxhcml0eSB9ID0gdHJhbnNmb3JtRGF0ZVZhbHVlKG9yaWdpbmFsVmFsdWUpO1xuICAgICAgICB0aGlzLmZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5ID0gZmxleGlibGVEYXRlR3JhbnVsYXJpdHk7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5pc1JhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCB2QXNSYW5nZTogYW55ID0gdGhpcy50aHlWYWx1ZTtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHsgYmVnaW46IG51bGwsIGVuZDogbnVsbCB9IGFzIFRoeURhdGVSYW5nZUVudHJ5O1xuICAgICAgICAgICAgaWYgKHZBc1JhbmdlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IFtiZWdpbiwgZW5kXSA9IHZBc1JhbmdlIGFzIFRpbnlEYXRlW107XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGh5QXV0b1N0YXJ0QW5kRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5nZXRBdXRvU3RhcnRBbmRFbmRWYWx1ZShiZWdpbiwgZW5kKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBiZWdpbi5nZXRVbml4VGltZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBlbmQuZ2V0VW5peFRpbWUoKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IFtiZWdpblVuaXhUaW1lLCBlbmRVbml4VGltZV0gPSB0aGlzLnNldFZhbHVlQnlQcmVjaXNpb24odmFsdWUpIGFzIG51bWJlcltdO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZUZuKFxuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oeyBiZWdpbjogYmVnaW5Vbml4VGltZSwgZW5kOiBlbmRVbml4VGltZSB9LCB0aGlzLmZsZXhpYmxlID8geyBncmFudWxhcml0eTogZmxleGlibGVEYXRlR3JhbnVsYXJpdHkgfSA6IHt9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0geyBkYXRlOiBudWxsLCB3aXRoX3RpbWU6IHRoaXMud2l0aFRpbWUgPyAxIDogMCB9IGFzIERhdGVFbnRyeTtcbiAgICAgICAgICAgIGlmICh0aGlzLnRoeVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUuZGF0ZSA9ICh0aGlzLnRoeVZhbHVlIGFzIFRpbnlEYXRlKS5nZXRVbml4VGltZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMub25seUVtaXREYXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZUZuKHRoaXMuc2V0VmFsdWVCeVByZWNpc2lvbih2YWx1ZS5kYXRlKSBhcyBudW1iZXIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlRm4oT2JqZWN0LmFzc2lnbih2YWx1ZSwgeyBkYXRlOiB0aGlzLnNldFZhbHVlQnlQcmVjaXNpb24odmFsdWUuZGF0ZSkgYXMgbnVtYmVyIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldEZvcm1hdFJ1bGUoKSB7XG4gICAgICAgIGlmICghdGhpcy50aHlGb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLndpdGhUaW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aHlGb3JtYXQgPSAneXl5eS1NTS1kZCBISDptbSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5vbmx5RW1pdERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aHlGb3JtYXQgPSAneXl5eS1NTS1kZCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PcGVuQ2hhbmdlKG9wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy50aHlPcGVuID0gb3BlbjtcbiAgICAgICAgdGhpcy50aHlPcGVuQ2hhbmdlLmVtaXQob3Blbik7XG4gICAgfVxuXG4gICAgb25DaGFuZ2VGbjogKHZhbDogQ29tcGF0aWJsZURhdGUgfCBEYXRlRW50cnkgfCBUaHlEYXRlUmFuZ2VFbnRyeSB8IG51bWJlciB8IG51bGwpID0+IHZvaWQgPSAoKSA9PiB2b2lkIDA7XG5cbiAgICB3cml0ZVZhbHVlKG9yaWdpbmFsVmFsdWU6IENvbXBhdGlibGVEYXRlIHwgVGh5RGF0ZVJhbmdlRW50cnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyB2YWx1ZSwgd2l0aFRpbWUsIGZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5IH0gPSB0cmFuc2Zvcm1EYXRlVmFsdWUob3JpZ2luYWxWYWx1ZSk7XG4gICAgICAgIHRoaXMuZmxleGlibGVEYXRlR3JhbnVsYXJpdHkgPSBmbGV4aWJsZURhdGVHcmFudWxhcml0eTtcbiAgICAgICAgaWYgKHRoaXMuZmxleGlibGUgJiYgdmFsdWUgJiYgKHZhbHVlIGFzIERhdGVbXSkubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZmxleGlibGVEYXRlR3JhbnVsYXJpdHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5ID0gJ2RheSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5zZXRUaW1lUGlja2VyU3RhdGUod2l0aFRpbWUpO1xuICAgICAgICB0aGlzLm9ubHlFbWl0RGF0ZSA9IHR5cGVvZiB3aXRoVGltZSA9PT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgIHRoaXMub3JpZ2luV2l0aFRpbWUgPSB3aXRoVGltZTtcbiAgICAgICAgdGhpcy5zZXRGb3JtYXRSdWxlKCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHNldFRpbWVQaWNrZXJTdGF0ZSh3aXRoVGltZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLndpdGhUaW1lID0gd2l0aFRpbWU7XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnRoeURpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGVmYXVsdFBsYWNlSG9sZGVyKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNDdXN0b21QbGFjZUhvbGRlcikge1xuICAgICAgICAgICAgdGhpcy50aHlQbGFjZUhvbGRlciA9IHRoaXMuaXNSYW5nZSA/IFsn5byA5aeL5pel5pyfJywgJ+e7k+adn+aXpeacnyddIDogJ+ivt+mAieaLqeaXpeacnyc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFZhbHVlKHZhbHVlOiBDb21wYXRpYmxlRGF0ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnRoeVZhbHVlID0gbWFrZVZhbHVlKHZhbHVlLCB0aGlzLmlzUmFuZ2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmFsdWVCeVByZWNpc2lvbih2YWx1ZTogQ29tcGF0aWJsZURhdGUgfCBudW1iZXIgfCBEYXRlIHwgRGF0ZUVudHJ5IHwgVGh5RGF0ZVJhbmdlRW50cnkgfCBTYWZlQW55KTogbnVtYmVyIHwgbnVtYmVyW10ge1xuICAgICAgICByZXR1cm4gc2V0VmFsdWVCeVRpbWVzdGFtcFByZWNpc2lvbih2YWx1ZSwgdGhpcy5pc1JhbmdlLCB0aGlzLnRoeVRpbWVzdGFtcFByZWNpc2lvbik7XG4gICAgfVxufVxuIl19
316
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRlLXBpY2tlci9hYnN0cmFjdC1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxxQkFBcUIsRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSw0QkFBNEIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVk1RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHbkU7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLHVCQUNsQixTQUFRLHlDQUF5QztJQVdqRDs7O09BR0c7SUFDSCxJQUFhLE9BQU8sQ0FBQyxLQUFtQjtRQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssSUFBSSxNQUFNLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBNkZEOzs7T0FHRztJQUNILElBQWEsbUJBQW1CLENBQUMsUUFBNkI7UUFDMUQsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO1FBQ3JDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gs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Szt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFLbEMsa0JBQWtCO3NCQUExQixLQUFLO2dCQUtHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFNRyxPQUFPO3NCQUFmLEtBQUs7Z0JBTUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQU1HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT3VDLGtCQUFrQjtzQkFBOUQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFNbEMscUJBQXFCO3NCQUE3QixLQUFLO2dCQUtHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBTXVDLGVBQWU7c0JBQTNELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7Z0JBTTlCLG1CQUFtQjtzQkFBL0IsS0FBSztnQkFVTyxrQkFBa0I7c0JBQTlCLEtBQUs7Z0JBT2EsYUFBYTtzQkFBL0IsTUFBTTtnQkFFWSxhQUFhO3NCQUEvQixNQUFNO2dCQUV3QyxNQUFNO3NCQUFwRCxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBT2xDLFdBQVc7c0JBRGQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhYkluZGV4RGlzYWJsZWRDb250cm9sVmFsdWVBY2Nlc3Nvck1peGluIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgVGlueURhdGUgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBDb21wYXRpYmxlVmFsdWUsIFJhbmdlQWR2YW5jZWRWYWx1ZSB9IGZyb20gJy4vaW5uZXItdHlwZXMnO1xuaW1wb3J0IHsgVGh5UGlja2VyIH0gZnJvbSAnLi9waWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IG1ha2VWYWx1ZSwgc2V0VmFsdWVCeVRpbWVzdGFtcFByZWNpc2lvbiwgdHJhbnNmb3JtRGF0ZVZhbHVlIH0gZnJvbSAnLi9waWNrZXIudXRpbCc7XG5pbXBvcnQge1xuICAgIENvbXBhdGlibGVEYXRlLFxuICAgIERhdGVFbnRyeSxcbiAgICBEaXNhYmxlZERhdGVGbixcbiAgICBUaHlEYXRlUmFuZ2VFbnRyeSxcbiAgICBUaHlQYW5lbE1vZGUsXG4gICAgVGh5U2hvcnRjdXRQb3NpdGlvbixcbiAgICBDb21wYXRpYmxlUHJlc2V0cyxcbiAgICBUaHlEYXRlR3JhbnVsYXJpdHksXG4gICAgVGh5RGF0ZUNoYW5nZUV2ZW50XG59IGZyb20gJy4vc3RhbmRhcmQtdHlwZXMnO1xuaW1wb3J0IHsgVGh5RGF0ZVBpY2tlckNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2RhdGUtcGlja2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2FmZUFueSB9IGZyb20gJ25neC10ZXRoeXMvdHlwZXMnO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0UGlja2VyQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBUYWJJbmRleERpc2FibGVkQ29udHJvbFZhbHVlQWNjZXNzb3JNaXhpblxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3JcbntcbiAgICBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgdGh5VmFsdWU6IENvbXBhdGlibGVWYWx1ZSB8IG51bGw7XG5cbiAgICBfcGFuZWxNb2RlOiBUaHlQYW5lbE1vZGUgPSAnZGF0ZSc7XG5cbiAgICBwcml2YXRlIGRhdGVQaWNrZXJDb25maWdTZXJ2aWNlID0gaW5qZWN0KFRoeURhdGVQaWNrZXJDb25maWdTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqIOaooeW8j1xuICAgICAqIEB0eXBlIGRlY2FkZSB8IHllYXIgfCBtb250aCB8IGRhdGUgfCB3ZWVrIHwgZmxleGlibGVcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgdGh5TW9kZSh2YWx1ZTogVGh5UGFuZWxNb2RlKSB7XG4gICAgICAgIHRoaXMuX3BhbmVsTW9kZSA9IHZhbHVlID8/ICdkYXRlJztcbiAgICB9XG5cbiAgICBnZXQgdGh5TW9kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhbmVsTW9kZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmmL7npLrmuIXpmaTmjInpkq5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlBbGxvd0NsZWFyID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuiHquWKqOiOt+WPlueEpueCuVxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5QXV0b0ZvY3VzID0gZmFsc2U7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlPcGVuOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgdGh5RGlzYWJsZWREYXRlOiBEaXNhYmxlZERhdGVGbjtcblxuICAgIC8qKlxuICAgICAqIOacgOWwj+WAvFxuICAgICAqIEB0eXBlIERhdGUgfCBudW1iZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlNaW5EYXRlOiBEYXRlIHwgbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICog5pyA5aSn5YC8XG4gICAgICogQHR5cGUgRGF0ZSB8IG51bWJlclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeU1heERhdGU6IERhdGUgfCBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDovpPlhaXmoYbmj5DnpLrmloflrZdcbiAgICAgKiBAdHlwZSBzdHJpbmcgfCBzdHJpbmdbXVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVBsYWNlSG9sZGVyOiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWPquivu1xuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5UmVhZG9ubHk6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDpgInmi6nlmaggY2xhc3NOYW1lXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5T3JpZ2luQ2xhc3NOYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDlvLnlh7rlsYIgY2xhc3NOYW1lXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5UGFuZWxDbGFzc05hbWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIOi+k+WFpeahhueahOWkp+Wwj1xuICAgICAqIEB0eXBlIHhzIHwgc20gfCBtZCB8IGxnIHwgZGVmYXVsdFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVNpemU6ICdsZycgfCAnbWQnIHwgJ3NtJyB8ICd4cycgfCAnZGVmYXVsdCcgPSAnZGVmYXVsdCc7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7ml7bpl7TmiLPnsr7luqZcbiAgICAgKiBAZGVmYXVsdCBzZWNvbmRzIDEw5L2NXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5VGltZXN0YW1wUHJlY2lzaW9uOiAnc2Vjb25kcycgfCAnbWlsbGlzZWNvbmRzJyA9IHRoaXMuZGF0ZVBpY2tlckNvbmZpZ1NlcnZpY2UuY29uZmlnPy50aW1lc3RhbXBQcmVjaXNpb24gfHwgJ3NlY29uZHMnO1xuXG4gICAgLyoqXG4gICAgICog5bGV56S655qE5pel5pyf5qC85byPXG4gICAgICogQGRlZmF1bHQgeXl5eS1NTS1kZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUZvcm1hdDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uLmVuLXVzIG9ubHkgZm9yIHJhbmdlIHBpY2tlciwgV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IHRha2UgdGhlIGJlZ2lubmluZyBhbmQgZW5kaW5nIHVuaXhUaW1lIG9mIHRoZSBkYXlcbiAgICAgKiBAZGVzY3JpcHRpb24uemgtY24g5piv5ZCm5Y+W5YC85byA5aeL5pel5pyf55qEMDA6MDDku6Xlj4rmiKrmraLml6XmnJ/nmoQyNDowMFxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5QXV0b1N0YXJ0QW5kRW5kID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDpnaLmnb/pu5jorqTml6XmnJ9cbiAgICAgKiBAdHlwZSBDb21wYXRpYmxlRGF0ZSB8IG51bWJlciB8IG51bGxcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlEZWZhdWx0UGlja2VyVmFsdWU6IENvbXBhdGlibGVEYXRlIHwgbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiDoh6rlrprkuYnnmoTlkI7nvIDlm77moIdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlTdWZmaXhJY29uID0gJ2NhbGVuZGFyJztcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWxleekuuW/q+aNt+mAiemhuemdouadv1xuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5U2hvd1Nob3J0Y3V0OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog5b+r5o236YCJ6aG56Z2i5p2/55qE5pi+56S65L2N572uXG4gICAgICogQHR5cGUgbGVmdCB8IGJvdHRvbVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCB0aHlTaG9ydGN1dFBvc2l0aW9uKHBvc2l0aW9uOiBUaHlTaG9ydGN1dFBvc2l0aW9uKSB7XG4gICAgICAgIGlmICghIXBvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNob3J0Y3V0UG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiHquWumuS5ieW/q+aNt+mAiemhuVxuICAgICAqIEB0eXBlIFRoeVNob3J0Y3V0UHJlc2V0W11cbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgdGh5U2hvcnRjdXRQcmVzZXRzKHByZXNldHM6IENvbXBhdGlibGVQcmVzZXRzKSB7XG4gICAgICAgIHRoaXMuc2hvcnRjdXRQcmVzZXRzID0gcHJlc2V0cztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDml6XmnJ/lj5jljJbnmoTlm57osINcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgdGh5RGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5RGF0ZUNoYW5nZUV2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHRoeU9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBAVmlld0NoaWxkKFRoeVBpY2tlciwgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIHBpY2tlcjogVGh5UGlja2VyO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm56aB55SoXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KVxuICAgIHNldCB0aHlEaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCB0aHlEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIHNob3J0Y3V0UG9zaXRpb246IFRoeVNob3J0Y3V0UG9zaXRpb24gPSAnbGVmdCc7XG5cbiAgICBzaG9ydGN1dFByZXNldHM6IENvbXBhdGlibGVQcmVzZXRzO1xuXG4gICAgaXNSYW5nZTogYm9vbGVhbjtcblxuICAgIHdpdGhUaW1lOiBib29sZWFuO1xuXG4gICAgZmxleGlibGU6IGJvb2xlYW47XG5cbiAgICBmbGV4aWJsZURhdGVHcmFudWxhcml0eTogVGh5RGF0ZUdyYW51bGFyaXR5O1xuXG4gICAgcHJvdGVjdGVkIGRlc3Ryb3llZCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuICAgIHByb3RlY3RlZCBpc0N1c3RvbVBsYWNlSG9sZGVyID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBvbmx5RW1pdERhdGUgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgb3JpZ2luV2l0aFRpbWU6IGJvb2xlYW47XG5cbiAgICBnZXQgcmVhbE9wZW5TdGF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGlja2VyLnJlYWxPcGVuU3RhdGU7XG4gICAgfVxuXG4gICAgZ2V0IGlzU2hvd0RhdGVQb3B1cCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGlja2VyLmlzU2hvd0RhdGVQb3B1cDtcbiAgICB9XG5cbiAgICBpbml0VmFsdWUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGh5VmFsdWUgPSB0aGlzLmlzUmFuZ2UgPyBbXSA6IG51bGw7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFBsYWNlSG9sZGVyKCk7XG4gICAgICAgIHRoaXMuaW5pdFZhbHVlKCk7XG4gICAgICAgIHRoaXMuaXNGbGV4aWJsZSgpO1xuICAgIH1cblxuICAgIGlzRmxleGlibGUoKSB7XG4gICAgICAgIHRoaXMuZmxleGlibGUgPSB0aGlzLnRoeU1vZGUgPT09ICdmbGV4aWJsZSc7XG4gICAgfVxuXG4gICAgb25EYXRlVmFsdWVDaGFuZ2UoZXZlbnQ6IFRoeURhdGVDaGFuZ2VFdmVudCkge1xuICAgICAgICB0aGlzLnRoeURhdGVDaGFuZ2UuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy50aHlQbGFjZUhvbGRlciAmJiBjaGFuZ2VzLnRoeVBsYWNlSG9sZGVyLmZpcnN0Q2hhbmdlICYmIHR5cGVvZiB0aGlzLnRoeVBsYWNlSG9sZGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5pc0N1c3RvbVBsYWNlSG9sZGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBjbG9zZU92ZXJsYXkoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGlja2VyLmhpZGVPdmVybGF5KCk7XG4gICAgfVxuXG4gICAgZ2V0QXV0b1N0YXJ0QW5kRW5kVmFsdWUoYmVnaW46IFRpbnlEYXRlLCBlbmQ6IFRpbnlEYXRlKSB7XG4gICAgICAgIGxldCB2YWx1ZTogeyBiZWdpbjogbnVtYmVyOyBlbmQ6IG51bWJlciB9O1xuICAgICAgICBzd2l0Y2ggKHRoaXMudGh5TW9kZSkge1xuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiBiZWdpbi5zdGFydE9mRGF5KCkuZ2V0VW5peFRpbWUoKSxcbiAgICAgICAgICAgICAgICAgICAgZW5kOiBlbmQuZW5kT2ZEYXkoKS5nZXRVbml4VGltZSgpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICAgICAgICAgIHZhbHVlID0ge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogYmVnaW4uc3RhcnRPZldlZWsoKS5nZXRVbml4VGltZSgpLFxuICAgICAgICAgICAgICAgICAgICBlbmQ6IGVuZC5lbmRPZldlZWsoKS5nZXRVbml4VGltZSgpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IGJlZ2luLnN0YXJ0T2ZNb250aCgpLmdldFVuaXhUaW1lKCksXG4gICAgICAgICAgICAgICAgICAgIGVuZDogZW5kLmVuZE9mTW9udGgoKS5nZXRVbml4VGltZSgpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHZhbHVlID0ge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogYmVnaW4uc3RhcnRPZlllYXIoKS5nZXRVbml4VGltZSgpLFxuICAgICAgICAgICAgICAgICAgICBlbmQ6IGVuZC5lbmRPZlllYXIoKS5nZXRVbml4VGltZSgpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiBiZWdpbi5zdGFydE9mRGF5KCkuZ2V0VW5peFRpbWUoKSxcbiAgICAgICAgICAgICAgICAgICAgZW5kOiBlbmQuZW5kT2ZEYXkoKS5nZXRVbml4VGltZSgpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZShvcmlnaW5hbFZhbHVlOiBDb21wYXRpYmxlVmFsdWUgfCBSYW5nZUFkdmFuY2VkVmFsdWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRGb3JtYXRSdWxlKCk7XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIHdpdGhUaW1lLCBmbGV4aWJsZURhdGVHcmFudWxhcml0eSB9ID0gdHJhbnNmb3JtRGF0ZVZhbHVlKG9yaWdpbmFsVmFsdWUpO1xuICAgICAgICB0aGlzLmZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5ID0gZmxleGlibGVEYXRlR3JhbnVsYXJpdHk7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5pc1JhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCB2QXNSYW5nZTogYW55ID0gdGhpcy50aHlWYWx1ZTtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHsgYmVnaW46IG51bGwsIGVuZDogbnVsbCB9IGFzIFRoeURhdGVSYW5nZUVudHJ5O1xuICAgICAgICAgICAgaWYgKHZBc1JhbmdlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IFtiZWdpbiwgZW5kXSA9IHZBc1JhbmdlIGFzIFRpbnlEYXRlW107XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGh5QXV0b1N0YXJ0QW5kRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5nZXRBdXRvU3RhcnRBbmRFbmRWYWx1ZShiZWdpbiwgZW5kKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBiZWdpbi5nZXRVbml4VGltZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBlbmQuZ2V0VW5peFRpbWUoKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IFtiZWdpblVuaXhUaW1lLCBlbmRVbml4VGltZV0gPSB0aGlzLnNldFZhbHVlQnlQcmVjaXNpb24odmFsdWUpIGFzIG51bWJlcltdO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZUZuKFxuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oeyBiZWdpbjogYmVnaW5Vbml4VGltZSwgZW5kOiBlbmRVbml4VGltZSB9LCB0aGlzLmZsZXhpYmxlID8geyBncmFudWxhcml0eTogZmxleGlibGVEYXRlR3JhbnVsYXJpdHkgfSA6IHt9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0geyBkYXRlOiBudWxsLCB3aXRoX3RpbWU6IHRoaXMud2l0aFRpbWUgPyAxIDogMCB9IGFzIERhdGVFbnRyeTtcbiAgICAgICAgICAgIGlmICh0aGlzLnRoeVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUuZGF0ZSA9ICh0aGlzLnRoeVZhbHVlIGFzIFRpbnlEYXRlKS5nZXRVbml4VGltZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMub25seUVtaXREYXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZUZuKHRoaXMuc2V0VmFsdWVCeVByZWNpc2lvbih2YWx1ZS5kYXRlKSBhcyBudW1iZXIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlRm4oT2JqZWN0LmFzc2lnbih2YWx1ZSwgeyBkYXRlOiB0aGlzLnNldFZhbHVlQnlQcmVjaXNpb24odmFsdWUuZGF0ZSkgYXMgbnVtYmVyIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldEZvcm1hdFJ1bGUoKSB7XG4gICAgICAgIGlmICghdGhpcy50aHlGb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLndpdGhUaW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aHlGb3JtYXQgPSAneXl5eS1NTS1kZCBISDptbSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5vbmx5RW1pdERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aHlGb3JtYXQgPSAneXl5eS1NTS1kZCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PcGVuQ2hhbmdlKG9wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy50aHlPcGVuID0gb3BlbjtcbiAgICAgICAgdGhpcy50aHlPcGVuQ2hhbmdlLmVtaXQob3Blbik7XG4gICAgfVxuXG4gICAgb25DaGFuZ2VGbjogKHZhbDogQ29tcGF0aWJsZURhdGUgfCBEYXRlRW50cnkgfCBUaHlEYXRlUmFuZ2VFbnRyeSB8IG51bWJlciB8IG51bGwpID0+IHZvaWQgPSAoKSA9PiB2b2lkIDA7XG5cbiAgICB3cml0ZVZhbHVlKG9yaWdpbmFsVmFsdWU6IENvbXBhdGlibGVEYXRlIHwgVGh5RGF0ZVJhbmdlRW50cnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyB2YWx1ZSwgd2l0aFRpbWUsIGZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5IH0gPSB0cmFuc2Zvcm1EYXRlVmFsdWUob3JpZ2luYWxWYWx1ZSk7XG4gICAgICAgIHRoaXMuZmxleGlibGVEYXRlR3JhbnVsYXJpdHkgPSBmbGV4aWJsZURhdGVHcmFudWxhcml0eTtcbiAgICAgICAgaWYgKHRoaXMuZmxleGlibGUgJiYgdmFsdWUgJiYgKHZhbHVlIGFzIERhdGVbXSkubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZmxleGlibGVEYXRlR3JhbnVsYXJpdHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5ID0gJ2RheSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5zZXRUaW1lUGlja2VyU3RhdGUod2l0aFRpbWUpO1xuICAgICAgICB0aGlzLm9ubHlFbWl0RGF0ZSA9IHR5cGVvZiB3aXRoVGltZSA9PT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgIHRoaXMub3JpZ2luV2l0aFRpbWUgPSB3aXRoVGltZTtcbiAgICAgICAgdGhpcy5zZXRGb3JtYXRSdWxlKCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHNldFRpbWVQaWNrZXJTdGF0ZSh3aXRoVGltZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLndpdGhUaW1lID0gd2l0aFRpbWU7XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnRoeURpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGVmYXVsdFBsYWNlSG9sZGVyKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNDdXN0b21QbGFjZUhvbGRlcikge1xuICAgICAgICAgICAgdGhpcy50aHlQbGFjZUhvbGRlciA9IHRoaXMuaXNSYW5nZSA/IFsn5byA5aeL5pel5pyfJywgJ+e7k+adn+aXpeacnyddIDogJ+ivt+mAieaLqeaXpeacnyc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFZhbHVlKHZhbHVlOiBDb21wYXRpYmxlRGF0ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnRoeVZhbHVlID0gbWFrZVZhbHVlKHZhbHVlLCB0aGlzLmlzUmFuZ2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmFsdWVCeVByZWNpc2lvbih2YWx1ZTogQ29tcGF0aWJsZURhdGUgfCBudW1iZXIgfCBEYXRlIHwgRGF0ZUVudHJ5IHwgVGh5RGF0ZVJhbmdlRW50cnkgfCBTYWZlQW55KTogbnVtYmVyIHwgbnVtYmVyW10ge1xuICAgICAgICByZXR1cm4gc2V0VmFsdWVCeVRpbWVzdGFtcFByZWNpc2lvbih2YWx1ZSwgdGhpcy5pc1JhbmdlLCB0aGlzLnRoeVRpbWVzdGFtcFByZWNpc2lvbik7XG4gICAgfVxufVxuIl19
@@ -3,16 +3,53 @@ import { warnDeprecation } from 'ngx-tethys/util';
3
3
  import { fromEvent, Subject } from 'rxjs';
4
4
  import { debounceTime, mapTo, takeUntil, tap } from 'rxjs/operators';
5
5
  import { coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';
6
- import { ChangeDetectorRef, Directive, ElementRef, EventEmitter, Input, Output, numberAttribute } from '@angular/core';
6
+ import { Directive, ElementRef, EventEmitter, Input, Output, numberAttribute, inject } from '@angular/core';
7
7
  import { AbstractPickerComponent } from './abstract-picker.component';
8
8
  import { DatePopup } from './lib/popups/date-popup.component';
9
9
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
10
10
  import * as i0 from "@angular/core";
11
- import * as i1 from "ngx-tethys/popover";
12
11
  /**
13
12
  * @private
14
13
  */
15
14
  export class PickerDirective extends AbstractPickerComponent {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.elementRef = inject(ElementRef);
18
+ this.thyPopover = inject(ThyPopover);
19
+ this.showWeek = false;
20
+ /**
21
+ * @type EventEmitter<ThyPanelMode | ThyPanelMode[]>
22
+ */
23
+ this.thyOnPanelChange = new EventEmitter();
24
+ /**
25
+ * @type EventEmitter<Date[]>
26
+ */
27
+ this.thyOnCalendarChange = new EventEmitter();
28
+ /**
29
+ * 是否展示时间(时、分)
30
+ * @default false
31
+ */
32
+ this.thyMustShowTime = false;
33
+ /**
34
+ * 弹出位置
35
+ * @type top | topLeft | topRight | bottom | bottomLeft | bottomRight | left | leftTop | leftBottom | right | rightTop | rightBottom
36
+ */
37
+ this.thyPlacement = 'bottom';
38
+ this.offset = 4;
39
+ this.hasBackdrop = true;
40
+ /**
41
+ * 是否阻止冒泡
42
+ */
43
+ this.thyStopPropagation = true;
44
+ this.destroy$ = new Subject();
45
+ this.el = this.elementRef.nativeElement;
46
+ this.$click = fromEvent(this.el, 'click').pipe(tap(e => {
47
+ if (this.thyStopPropagation) {
48
+ e.stopPropagation();
49
+ }
50
+ }), mapTo(true));
51
+ this.takeUntilDestroyed = takeUntilDestroyed();
52
+ }
16
53
  get thyShowTime() {
17
54
  return this._showTime;
18
55
  }
@@ -120,45 +157,6 @@ export class PickerDirective extends AbstractPickerComponent {
120
157
  }
121
158
  });
122
159
  }
123
- constructor(elementRef, cdr, thyPopover) {
124
- super(cdr);
125
- this.elementRef = elementRef;
126
- this.cdr = cdr;
127
- this.thyPopover = thyPopover;
128
- this.showWeek = false;
129
- /**
130
- * @type EventEmitter<ThyPanelMode | ThyPanelMode[]>
131
- */
132
- this.thyOnPanelChange = new EventEmitter();
133
- /**
134
- * @type EventEmitter<Date[]>
135
- */
136
- this.thyOnCalendarChange = new EventEmitter();
137
- /**
138
- * 是否展示时间(时、分)
139
- * @default false
140
- */
141
- this.thyMustShowTime = false;
142
- /**
143
- * 弹出位置
144
- * @type top | topLeft | topRight | bottom | bottomLeft | bottomRight | left | leftTop | leftBottom | right | rightTop | rightBottom
145
- */
146
- this.thyPlacement = 'bottom';
147
- this.offset = 4;
148
- this.hasBackdrop = true;
149
- /**
150
- * 是否阻止冒泡
151
- */
152
- this.thyStopPropagation = true;
153
- this.destroy$ = new Subject();
154
- this.el = this.elementRef.nativeElement;
155
- this.$click = fromEvent(this.el, 'click').pipe(tap(e => {
156
- if (this.thyStopPropagation) {
157
- e.stopPropagation();
158
- }
159
- }), mapTo(true));
160
- this.takeUntilDestroyed = takeUntilDestroyed();
161
- }
162
160
  ngAfterViewInit() {
163
161
  this.setDefaultTimePickerState();
164
162
  this.initActionSubscribe();
@@ -187,12 +185,12 @@ export class PickerDirective extends AbstractPickerComponent {
187
185
  onShowTimePickerChange(show) {
188
186
  this.withTime = show;
189
187
  }
190
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: PickerDirective, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.ThyPopover }], target: i0.ɵɵFactoryTarget.Directive }); }
188
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: PickerDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
191
189
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.0", type: PickerDirective, inputs: { thyDateRender: "thyDateRender", thyShowTime: "thyShowTime", thyMustShowTime: ["thyMustShowTime", "thyMustShowTime", coerceBooleanProperty], thyPlacement: "thyPlacement", thyOffset: ["thyOffset", "thyOffset", numberAttribute], thyHasBackdrop: ["thyHasBackdrop", "thyHasBackdrop", coerceBooleanProperty], thyPopoverOptions: "thyPopoverOptions", thyStopPropagation: ["thyStopPropagation", "thyStopPropagation", coerceBooleanProperty] }, outputs: { thyOnPanelChange: "thyOnPanelChange", thyOnCalendarChange: "thyOnCalendarChange" }, usesInheritance: true, ngImport: i0 }); }
192
190
  }
193
191
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: PickerDirective, decorators: [{
194
192
  type: Directive
195
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.ThyPopover }], propDecorators: { thyDateRender: [{
193
+ }], propDecorators: { thyDateRender: [{
196
194
  type: Input
197
195
  }], thyOnPanelChange: [{
198
196
  type: Output
@@ -217,4 +215,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
217
215
  type: Input,
218
216
  args: [{ transform: coerceBooleanProperty }]
219
217
  }] } });
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtcGlja2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRlLXBpY2tlci9hYnN0cmFjdC1waWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0UsT0FBTyxFQUVILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLGVBQWUsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFFaEU7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLGVBQWdCLFNBQVEsdUJBQXVCO0lBa0JqRSxJQUFhLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLFdBQVcsQ0FBQyxLQUF1QjtRQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FB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LEtBQUs7Z0JBS3VDLGtCQUFrQjtzQkFBOUQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRoeVBsYWNlbWVudCB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaHlQb3BvdmVyLCBUaHlQb3BvdmVyQ29uZmlnIH0gZnJvbSAnbmd4LXRldGh5cy9wb3BvdmVyJztcbmltcG9ydCB7IEZ1bmN0aW9uUHJvcCwgd2FybkRlcHJlY2F0aW9uIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXBUbywgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGNvZXJjZUFycmF5LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIG51bWJlckF0dHJpYnV0ZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWJzdHJhY3RQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2Fic3RyYWN0LXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZVBvcHVwIH0gZnJvbSAnLi9saWIvcG9wdXBzL2RhdGUtcG9wdXAuY29tcG9uZW50JztcbmltcG9ydCB7IFRoeURhdGVDaGFuZ2VFdmVudCwgVGh5UGFuZWxNb2RlIH0gZnJvbSAnLi9zdGFuZGFyZC10eXBlcyc7XG5pbXBvcnQgeyBDb21wYXRpYmxlVmFsdWUgfSBmcm9tICcuL2lubmVyLXR5cGVzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQaWNrZXJEaXJlY3RpdmUgZXh0ZW5kcyBBYnN0cmFjdFBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAgIHNob3dXZWVrID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSB0aHlEYXRlUmVuZGVyOiBGdW5jdGlvblByb3A8VGVtcGxhdGVSZWY8RGF0ZT4gfCBzdHJpbmc+O1xuXG4gICAgcGFuZWxNb2RlOiBUaHlQYW5lbE1vZGUgfCBUaHlQYW5lbE1vZGVbXTtcblxuICAgIC8qKlxuICAgICAqIEB0eXBlIEV2ZW50RW1pdHRlcjxUaHlQYW5lbE1vZGUgfCBUaHlQYW5lbE1vZGVbXT5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgdGh5T25QYW5lbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5UGFuZWxNb2RlIHwgVGh5UGFuZWxNb2RlW10+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAdHlwZSBFdmVudEVtaXR0ZXI8RGF0ZVtdPlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSB0aHlPbkNhbGVuZGFyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlW10+KCk7XG5cbiAgICBwcml2YXRlIF9zaG93VGltZTogb2JqZWN0IHwgYm9vbGVhbjtcbiAgICBASW5wdXQoKSBnZXQgdGh5U2hvd1RpbWUoKTogb2JqZWN0IHwgYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaG93VGltZTtcbiAgICB9XG4gICAgc2V0IHRoeVNob3dUaW1lKHZhbHVlOiBvYmplY3QgfCBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Nob3dUaW1lID0gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/IHZhbHVlIDogY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblsZXnpLrml7bpl7Qo5pe244CB5YiGKVxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5TXVzdFNob3dUaW1lID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDlvLnlh7rkvY3nva5cbiAgICAgKiBAdHlwZSB0b3AgfCB0b3BMZWZ0IHwgdG9wUmlnaHQgfCBib3R0b20gfCBib3R0b21MZWZ0IHwgYm90dG9tUmlnaHQgfCBsZWZ0IHwgbGVmdFRvcCB8IGxlZnRCb3R0b20gfCByaWdodCB8IHJpZ2h0VG9wIHwgcmlnaHRCb3R0b21cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlQbGFjZW1lbnQ6IFRoeVBsYWNlbWVudCA9ICdib3R0b20nO1xuXG4gICAgcHJpdmF0ZSBvZmZzZXQgPSA0O1xuXG4gICAgLyoqXG4gICAgICog5by55Ye6IERhdGVQaWNrZXIg55qE5YGP56e76YePXG4gICAgICogQGRlZmF1bHQgNFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gICAgc2V0IHRoeU9mZnNldCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpIHtcbiAgICAgICAgICAgIHdhcm5EZXByZWNhdGlvbihgdGh5T2Zmc2V0IHBhcmFtZXRlciB3aWxsIGJlIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgdGh5UG9wb3Zlck9wdGlvbnMgaW5zdGVhZC5gKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9mZnNldCA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzQmFja2Ryb3AgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5pyJ5bmV5biDXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pXG4gICAgc2V0IHRoeUhhc0JhY2tkcm9wKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpIHtcbiAgICAgICAgICAgIHdhcm5EZXByZWNhdGlvbihgdGh5SGFzQmFja2Ryb3AgcGFyYW1ldGVyIHdpbGwgYmUgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSB0aHlQb3BvdmVyT3B0aW9ucyBpbnN0ZWFkLmApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGFzQmFja2Ryb3AgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBwb3BvdmVyIOeahOWFtuWug+WPguaVsFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVBvcG92ZXJPcHRpb25zOiBUaHlQb3BvdmVyQ29uZmlnO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm6Zi75q2i5YaS5rOhXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5U3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgZWw6IEhUTUxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcmVhZG9ubHkgJGNsaWNrOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gZnJvbUV2ZW50KHRoaXMuZWwsICdjbGljaycpLnBpcGUoXG4gICAgICAgIHRhcChlID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRoeVN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBtYXBUbyh0cnVlKVxuICAgICk7XG5cbiAgICB0YWtlVW50aWxEZXN0cm95ZWQgPSB0YWtlVW50aWxEZXN0cm95ZWQoKTtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmdldEluaXRpYWxTdGF0ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SW5pdGlhbFN0YXRlKCkge1xuICAgICAgICB0aGlzLnRoeU1vZGUgPSB0aGlzLnRoeU1vZGUgfHwgJ2RhdGUnO1xuICAgICAgICB0aGlzLmZsZXhpYmxlID0gdGhpcy50aHlNb2RlID09PSAnZmxleGlibGUnO1xuXG4gICAgICAgIGlmICh0aGlzLmlzUmFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMucGFuZWxNb2RlID0gdGhpcy5mbGV4aWJsZSA/IFsnZGF0ZScsICdkYXRlJ10gOiBbdGhpcy50aHlNb2RlLCB0aGlzLnRoeU1vZGVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wYW5lbE1vZGUgPSB0aGlzLnRoeU1vZGU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zaG93V2VlayA9IHRoaXMudGh5TW9kZSA9PT0gJ3dlZWsnO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3Blbk92ZXJsYXkoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ2V0SW5pdGlhbFN0YXRlKCk7XG4gICAgICAgIGNvbnN0IHBvcG92ZXJSZWYgPSB0aGlzLnRoeVBvcG92ZXIub3BlbihcbiAgICAgICAgICAgIERhdGVQb3B1cCxcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW46IHRoaXMuZWwsXG4gICAgICAgICAgICAgICAgICAgIGhhc0JhY2tkcm9wOiB0aGlzLmhhc0JhY2tkcm9wLFxuICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcENsYXNzOiAndGh5LW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBvdXRzaWRlQ2xvc2FibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNSYW5nZTogdGhpcy5pc1JhbmdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxNb2RlOiB0aGlzLnBhbmVsTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dXZWVrOiB0aGlzLnNob3dXZWVrLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudGh5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93VGltZTogdGhpcy50aHlTaG93VGltZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11c3RTaG93VGltZTogdGhpcy53aXRoVGltZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogdGhpcy50aHlGb3JtYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlUmVuZGVyOiB0aGlzLnRoeURhdGVSZW5kZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZERhdGU6IHRoaXMudGh5RGlzYWJsZWREYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudGh5UGxhY2VIb2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHRoaXMudGh5UGFuZWxDbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0UGlja2VyVmFsdWU6IHRoaXMudGh5RGVmYXVsdFBpY2tlclZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWluRGF0ZTogdGhpcy50aHlNaW5EYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4RGF0ZTogdGhpcy50aHlNYXhEYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1Nob3J0Y3V0OiB0aGlzLnRoeVNob3dTaG9ydGN1dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0Y3V0UHJlc2V0czogdGhpcy5zaG9ydGN1dFByZXNldHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG9ydGN1dFBvc2l0aW9uOiB0aGlzLnNob3J0Y3V0UG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBmbGV4aWJsZTogdGhpcy5mbGV4aWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5OiB0aGlzLmZsZXhpYmxlRGF0ZUdyYW51bGFyaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wUHJlY2lzaW9uOiB0aGlzLnRoeVRpbWVzdGFtcFByZWNpc2lvblxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6IHRoaXMudGh5UGxhY2VtZW50XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0aGlzLnRoeVBvcG92ZXJPcHRpb25zXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGlmIChwb3BvdmVyUmVmKSB7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRJbnN0YW5jZSA9IHBvcG92ZXJSZWYuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgICAgICAgICBjb21wb25lbnRJbnN0YW5jZS52YWx1ZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldmVudDogQ29tcGF0aWJsZVZhbHVlKSA9PiB0aGlzLm9uVmFsdWVDaGFuZ2UoZXZlbnQpKTtcbiAgICAgICAgICAgIGNvbXBvbmVudEluc3RhbmNlLmNhbGVuZGFyQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2ZW50OiBDb21wYXRpYmxlVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByYW5nZVZhbHVlID0gY29lcmNlQXJyYXkoZXZlbnQpLm1hcCh4ID0+IHgubmF0aXZlRGF0ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy50aHlPbkNhbGVuZGFyQ2hhbmdlLmVtaXQocmFuZ2VWYWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbXBvbmVudEluc3RhbmNlLnNob3dUaW1lUGlja2VyQ2hhbmdlXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBib29sZWFuKSA9PiB0aGlzLm9uU2hvd1RpbWVQaWNrZXJDaGFuZ2UoZXZlbnQpKTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgICAgICBjb21wb25lbnRJbnN0YW5jZS5uZ09uQ2hhbmdlcyh7IHZhbHVlOiB7fSBhcyBTaW1wbGVDaGFuZ2UgfSk7IC8vIGR5bmFtaWNhbGx5IGNyZWF0ZWQgY29tcG9uZW50cyBkb24ndCBjYWxsIG5nT25DaGFuZ2VzLCBtYW51YWwgY2FsbFxuICAgICAgICAgICAgY29tcG9uZW50SW5zdGFuY2UuZGF0ZVZhbHVlQ2hhbmdlPy5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveWVkKS5zdWJzY3JpYmUoKGV2ZW50OiBUaHlEYXRlQ2hhbmdlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRoeURhdGVDaGFuZ2UuZW1pdChldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHBvcG92ZXJSZWZcbiAgICAgICAgICAgICAgICAuYWZ0ZXJPcGVuZWQoKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMudGh5T3BlbkNoYW5nZS5lbWl0KHRydWUpKTtcbiAgICAgICAgICAgIHBvcG92ZXJSZWZcbiAgICAgICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMudGh5T3BlbkNoYW5nZS5lbWl0KGZhbHNlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbG9zZU92ZXJsYXkoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGh5UG9wb3Zlci5jbG9zZSgpO1xuICAgIH1cblxuICAgIGluaXRBY3Rpb25TdWJzY3JpYmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuJGNsaWNrLnBpcGUoZGVib3VuY2VUaW1lKDUwKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnRoeURpc2FibGVkICYmICF0aGlzLnRoeVJlYWRvbmx5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuT3ZlcmxheSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHRoeVBvcG92ZXI6IFRoeVBvcG92ZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY2RyKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFRpbWVQaWNrZXJTdGF0ZSgpO1xuICAgICAgICB0aGlzLmluaXRBY3Rpb25TdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvblZhbHVlQ2hhbmdlKHZhbHVlOiBDb21wYXRpYmxlVmFsdWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXN0b3JlVGltZVBpY2tlclN0YXRlKHZhbHVlKTtcbiAgICAgICAgc3VwZXIub25WYWx1ZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIGlmICghdGhpcy5mbGV4aWJsZSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZU92ZXJsYXkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIERpc3BsYXlzIHRoZSB0aW1lIGRpcmVjdGx5IHdoZW4gdGhlIHRpbWUgbXVzdCBiZSBkaXNwbGF5ZWQgYnkgZGVmYXVsdFxuICAgIHNldERlZmF1bHRUaW1lUGlja2VyU3RhdGUoKSB7XG4gICAgICAgIHRoaXMud2l0aFRpbWUgPSB0aGlzLnRoeU11c3RTaG93VGltZTtcbiAgICB9XG5cbiAgICAvLyBSZXN0b3JlIGFmdGVyIGNsZWFyaW5nIHRpbWUgdG8gc2VsZWN0IHdoZXRoZXIgdGhlIG9yaWdpbmFsIHBpY2tlciB0aW1lIGlzIGRpc3BsYXllZCBvciBub3RcbiAgICByZXN0b3JlVGltZVBpY2tlclN0YXRlKHZhbHVlOiBDb21wYXRpYmxlVmFsdWUgfCBudWxsKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMud2l0aFRpbWUgPSB0aGlzLnRoeU11c3RTaG93VGltZSB8fCB0aGlzLm9yaWdpbldpdGhUaW1lO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uU2hvd1RpbWVQaWNrZXJDaGFuZ2Uoc2hvdzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLndpdGhUaW1lID0gc2hvdztcbiAgICB9XG59XG4iXX0=
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtcGlja2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRlLXBpY2tlci9hYnN0cmFjdC1waWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0UsT0FBTyxFQUdILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBR04sZUFBZSxFQUNmLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRWhFOztHQUVHO0FBRUgsTUFBTSxPQUFnQixlQUFnQixTQUFRLHVCQUF1QjtJQURyRTs7UUFFSSxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXhCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFeEMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQU1qQjs7V0FFRztRQUNnQixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBaUMsQ0FBQztRQUV4Rjs7V0FFRztRQUNn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c0NvbnRlbnQiOlsiaW1wb3J0IHsgVGh5UGxhY2VtZW50IH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IFRoeVBvcG92ZXIsIFRoeVBvcG92ZXJDb25maWcgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgRnVuY3Rpb25Qcm9wLCB3YXJuRGVwcmVjYXRpb24gfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcFRvLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgY29lcmNlQXJyYXksIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2UsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgbnVtYmVyQXR0cmlidXRlLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWJzdHJhY3RQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2Fic3RyYWN0LXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZVBvcHVwIH0gZnJvbSAnLi9saWIvcG9wdXBzL2RhdGUtcG9wdXAuY29tcG9uZW50JztcbmltcG9ydCB7IFRoeURhdGVDaGFuZ2VFdmVudCwgVGh5UGFuZWxNb2RlIH0gZnJvbSAnLi9zdGFuZGFyZC10eXBlcyc7XG5pbXBvcnQgeyBDb21wYXRpYmxlVmFsdWUgfSBmcm9tICcuL2lubmVyLXR5cGVzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQaWNrZXJEaXJlY3RpdmUgZXh0ZW5kcyBBYnN0cmFjdFBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAgIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gICAgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgICBwcml2YXRlIHRoeVBvcG92ZXIgPSBpbmplY3QoVGh5UG9wb3Zlcik7XG5cbiAgICBzaG93V2VlayA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgdGh5RGF0ZVJlbmRlcjogRnVuY3Rpb25Qcm9wPFRlbXBsYXRlUmVmPERhdGU+IHwgc3RyaW5nPjtcblxuICAgIHBhbmVsTW9kZTogVGh5UGFuZWxNb2RlIHwgVGh5UGFuZWxNb2RlW107XG5cbiAgICAvKipcbiAgICAgKiBAdHlwZSBFdmVudEVtaXR0ZXI8VGh5UGFuZWxNb2RlIHwgVGh5UGFuZWxNb2RlW10+XG4gICAgICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHRoeU9uUGFuZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRoeVBhbmVsTW9kZSB8IFRoeVBhbmVsTW9kZVtdPigpO1xuXG4gICAgLyoqXG4gICAgICogQHR5cGUgRXZlbnRFbWl0dGVyPERhdGVbXT5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgdGh5T25DYWxlbmRhckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZVtdPigpO1xuXG4gICAgcHJpdmF0ZSBfc2hvd1RpbWU6IG9iamVjdCB8IGJvb2xlYW47XG4gICAgQElucHV0KCkgZ2V0IHRoeVNob3dUaW1lKCk6IG9iamVjdCB8IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2hvd1RpbWU7XG4gICAgfVxuICAgIHNldCB0aHlTaG93VGltZSh2YWx1ZTogb2JqZWN0IHwgYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zaG93VGltZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyB2YWx1ZSA6IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5bGV56S65pe26Ze0KOaXtuOAgeWIhilcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeU11c3RTaG93VGltZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5by55Ye65L2N572uXG4gICAgICogQHR5cGUgdG9wIHwgdG9wTGVmdCB8IHRvcFJpZ2h0IHwgYm90dG9tIHwgYm90dG9tTGVmdCB8IGJvdHRvbVJpZ2h0IHwgbGVmdCB8IGxlZnRUb3AgfCBsZWZ0Qm90dG9tIHwgcmlnaHQgfCByaWdodFRvcCB8IHJpZ2h0Qm90dG9tXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5UGxhY2VtZW50OiBUaHlQbGFjZW1lbnQgPSAnYm90dG9tJztcblxuICAgIHByaXZhdGUgb2Zmc2V0ID0gNDtcblxuICAgIC8qKlxuICAgICAqIOW8ueWHuiBEYXRlUGlja2VyIOeahOWBj+enu+mHj1xuICAgICAqIEBkZWZhdWx0IDRcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICAgIHNldCB0aHlPZmZzZXQodmFsdWU6IG51bWJlcikge1xuICAgICAgICBpZiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSB7XG4gICAgICAgICAgICB3YXJuRGVwcmVjYXRpb24oYHRoeU9mZnNldCBwYXJhbWV0ZXIgd2lsbCBiZSBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIHRoeVBvcG92ZXJPcHRpb25zIGluc3RlYWQuYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vZmZzZXQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc0JhY2tkcm9wID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuacieW5leW4g1xuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KVxuICAgIHNldCB0aHlIYXNCYWNrZHJvcCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSB7XG4gICAgICAgICAgICB3YXJuRGVwcmVjYXRpb24oYHRoeUhhc0JhY2tkcm9wIHBhcmFtZXRlciB3aWxsIGJlIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgdGh5UG9wb3Zlck9wdGlvbnMgaW5zdGVhZC5gKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhc0JhY2tkcm9wID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcG9wb3ZlciDnmoTlhbblroPlj4LmlbBcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlQb3BvdmVyT3B0aW9uczogVGh5UG9wb3ZlckNvbmZpZztcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpumYu+atouWGkuazoVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeVN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIGVsOiBIVE1MRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIHJlYWRvbmx5ICRjbGljazogT2JzZXJ2YWJsZTxib29sZWFuPiA9IGZyb21FdmVudCh0aGlzLmVsLCAnY2xpY2snKS5waXBlKFxuICAgICAgICB0YXAoZSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy50aHlTdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgbWFwVG8odHJ1ZSlcbiAgICApO1xuXG4gICAgdGFrZVVudGlsRGVzdHJveWVkID0gdGFrZVVudGlsRGVzdHJveWVkKCk7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5nZXRJbml0aWFsU3RhdGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEluaXRpYWxTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy50aHlNb2RlID0gdGhpcy50aHlNb2RlIHx8ICdkYXRlJztcbiAgICAgICAgdGhpcy5mbGV4aWJsZSA9IHRoaXMudGh5TW9kZSA9PT0gJ2ZsZXhpYmxlJztcblxuICAgICAgICBpZiAodGhpcy5pc1JhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnBhbmVsTW9kZSA9IHRoaXMuZmxleGlibGUgPyBbJ2RhdGUnLCAnZGF0ZSddIDogW3RoaXMudGh5TW9kZSwgdGhpcy50aHlNb2RlXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucGFuZWxNb2RlID0gdGhpcy50aHlNb2RlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2hvd1dlZWsgPSB0aGlzLnRoeU1vZGUgPT09ICd3ZWVrJztcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5PdmVybGF5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdldEluaXRpYWxTdGF0ZSgpO1xuICAgICAgICBjb25zdCBwb3BvdmVyUmVmID0gdGhpcy50aHlQb3BvdmVyLm9wZW4oXG4gICAgICAgICAgICBEYXRlUG9wdXAsXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luOiB0aGlzLmVsLFxuICAgICAgICAgICAgICAgICAgICBoYXNCYWNrZHJvcDogdGhpcy5oYXNCYWNrZHJvcCxcbiAgICAgICAgICAgICAgICAgICAgYmFja2Ryb3BDbGFzczogJ3RoeS1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgb3V0c2lkZUNsb3NhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUmFuZ2U6IHRoaXMuaXNSYW5nZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsTW9kZTogdGhpcy5wYW5lbE1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93V2VlazogdGhpcy5zaG93V2VlayxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnRoeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1RpbWU6IHRoaXMudGh5U2hvd1RpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdXN0U2hvd1RpbWU6IHRoaXMud2l0aFRpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMudGh5Rm9ybWF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZVJlbmRlcjogdGhpcy50aHlEYXRlUmVuZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWREYXRlOiB0aGlzLnRoeURpc2FibGVkRGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRoeVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0aGlzLnRoeVBhbmVsQ2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFBpY2tlclZhbHVlOiB0aGlzLnRoeURlZmF1bHRQaWNrZXJWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbkRhdGU6IHRoaXMudGh5TWluRGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heERhdGU6IHRoaXMudGh5TWF4RGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dTaG9ydGN1dDogdGhpcy50aHlTaG93U2hvcnRjdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG9ydGN1dFByZXNldHM6IHRoaXMuc2hvcnRjdXRQcmVzZXRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRjdXRQb3NpdGlvbjogdGhpcy5zaG9ydGN1dFBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmxleGlibGU6IHRoaXMuZmxleGlibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmbGV4aWJsZURhdGVHcmFudWxhcml0eTogdGhpcy5mbGV4aWJsZURhdGVHcmFudWxhcml0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcFByZWNpc2lvbjogdGhpcy50aHlUaW1lc3RhbXBQcmVjaXNpb25cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50OiB0aGlzLnRoeVBsYWNlbWVudFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGhpcy50aHlQb3BvdmVyT3B0aW9uc1xuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBpZiAocG9wb3ZlclJlZikge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50SW5zdGFuY2UgPSBwb3BvdmVyUmVmLmNvbXBvbmVudEluc3RhbmNlO1xuICAgICAgICAgICAgY29tcG9uZW50SW5zdGFuY2UudmFsdWVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQ6IENvbXBhdGlibGVWYWx1ZSkgPT4gdGhpcy5vblZhbHVlQ2hhbmdlKGV2ZW50KSk7XG4gICAgICAgICAgICBjb21wb25lbnRJbnN0YW5jZS5jYWxlbmRhckNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldmVudDogQ29tcGF0aWJsZVZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmFuZ2VWYWx1ZSA9IGNvZXJjZUFycmF5KGV2ZW50KS5tYXAoeCA9PiB4Lm5hdGl2ZURhdGUpO1xuICAgICAgICAgICAgICAgIHRoaXMudGh5T25DYWxlbmRhckNoYW5nZS5lbWl0KHJhbmdlVmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb21wb25lbnRJbnN0YW5jZS5zaG93VGltZVBpY2tlckNoYW5nZVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogYm9vbGVhbikgPT4gdGhpcy5vblNob3dUaW1lUGlja2VyQ2hhbmdlKGV2ZW50KSk7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICAgICAgY29tcG9uZW50SW5zdGFuY2UubmdPbkNoYW5nZXMoeyB2YWx1ZToge30gYXMgU2ltcGxlQ2hhbmdlIH0pOyAvLyBkeW5hbWljYWxseSBjcmVhdGVkIGNvbXBvbmVudHMgZG9uJ3QgY2FsbCBuZ09uQ2hhbmdlcywgbWFudWFsIGNhbGxcbiAgICAgICAgICAgIGNvbXBvbmVudEluc3RhbmNlLmRhdGVWYWx1ZUNoYW5nZT8ucGlwZSh0aGlzLnRha2VVbnRpbERlc3Ryb3llZCkuc3Vic2NyaWJlKChldmVudDogVGh5RGF0ZUNoYW5nZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50aHlEYXRlQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBwb3BvdmVyUmVmXG4gICAgICAgICAgICAgICAgLmFmdGVyT3BlbmVkKClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRoeU9wZW5DaGFuZ2UuZW1pdCh0cnVlKSk7XG4gICAgICAgICAgICBwb3BvdmVyUmVmXG4gICAgICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRoeU9wZW5DaGFuZ2UuZW1pdChmYWxzZSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2VPdmVybGF5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRoeVBvcG92ZXIuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBpbml0QWN0aW9uU3Vic2NyaWJlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLiRjbGljay5waXBlKGRlYm91bmNlVGltZSg1MCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy50aHlEaXNhYmxlZCAmJiAhdGhpcy50aHlSZWFkb25seSkge1xuICAgICAgICAgICAgICAgIHRoaXMub3Blbk92ZXJsYXkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldERlZmF1bHRUaW1lUGlja2VyU3RhdGUoKTtcbiAgICAgICAgdGhpcy5pbml0QWN0aW9uU3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZSh2YWx1ZTogQ29tcGF0aWJsZVZhbHVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzdG9yZVRpbWVQaWNrZXJTdGF0ZSh2YWx1ZSk7XG4gICAgICAgIHN1cGVyLm9uVmFsdWVDaGFuZ2UodmFsdWUpO1xuICAgICAgICBpZiAoIXRoaXMuZmxleGlibGUpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VPdmVybGF5KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEaXNwbGF5cyB0aGUgdGltZSBkaXJlY3RseSB3aGVuIHRoZSB0aW1lIG11c3QgYmUgZGlzcGxheWVkIGJ5IGRlZmF1bHRcbiAgICBzZXREZWZhdWx0VGltZVBpY2tlclN0YXRlKCkge1xuICAgICAgICB0aGlzLndpdGhUaW1lID0gdGhpcy50aHlNdXN0U2hvd1RpbWU7XG4gICAgfVxuXG4gICAgLy8gUmVzdG9yZSBhZnRlciBjbGVhcmluZyB0aW1lIHRvIHNlbGVjdCB3aGV0aGVyIHRoZSBvcmlnaW5hbCBwaWNrZXIgdGltZSBpcyBkaXNwbGF5ZWQgb3Igbm90XG4gICAgcmVzdG9yZVRpbWVQaWNrZXJTdGF0ZSh2YWx1ZTogQ29tcGF0aWJsZVZhbHVlIHwgbnVsbCkge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLndpdGhUaW1lID0gdGhpcy50aHlNdXN0U2hvd1RpbWUgfHwgdGhpcy5vcmlnaW5XaXRoVGltZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvblNob3dUaW1lUGlja2VyQ2hhbmdlKHNob3c6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy53aXRoVGltZSA9IHNob3c7XG4gICAgfVxufVxuIl19
@@ -1,6 +1,6 @@
1
1
  import { ThyClickDispatcher } from 'ngx-tethys/core';
2
2
  import { elementMatchClosest, TinyDate } from 'ngx-tethys/util';
3
- import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, NgZone, Output, PLATFORM_ID, ViewChild, inject } from '@angular/core';
3
+ import { Component, ElementRef, EventEmitter, Input, NgZone, Output, PLATFORM_ID, ViewChild, inject } from '@angular/core';
4
4
  import { AbstractPickerComponent } from './abstract-picker.component';
5
5
  import { ThyPicker } from './picker.component';
6
6
  import { hasTimeInStringDate, isValidStringDate, parseStringDate, transformDateValue } from './picker.util';
@@ -12,28 +12,9 @@ import * as i0 from "@angular/core";
12
12
  * @private
13
13
  */
14
14
  export class BasePicker extends AbstractPickerComponent {
15
- set thyMode(value) {
16
- this._panelMode = value ?? 'date';
17
- if (this.initialized) {
18
- this.setDefaultTimePickerState(this._panelMode);
19
- }
20
- }
21
- get thyMode() {
22
- return this._panelMode;
23
- }
24
- /**
25
- * 增加时间选择功能
26
- * @default false
27
- */
28
- get thyShowTime() {
29
- return this._showTime;
30
- }
31
- set thyShowTime(value) {
32
- this._showTime = typeof value === 'object' ? value : coerceBooleanProperty(value);
33
- }
34
- constructor(cdr, element) {
35
- super(cdr);
36
- this.element = element;
15
+ constructor() {
16
+ super(...arguments);
17
+ this.element = inject(ElementRef);
37
18
  this.showWeek = false;
38
19
  /**
39
20
  * 是否有幕布
@@ -67,6 +48,25 @@ export class BasePicker extends AbstractPickerComponent {
67
48
  this.platformId = inject(PLATFORM_ID);
68
49
  this.ngZone = inject(NgZone);
69
50
  }
51
+ set thyMode(value) {
52
+ this._panelMode = value ?? 'date';
53
+ if (this.initialized) {
54
+ this.setDefaultTimePickerState(this._panelMode);
55
+ }
56
+ }
57
+ get thyMode() {
58
+ return this._panelMode;
59
+ }
60
+ /**
61
+ * 增加时间选择功能
62
+ * @default false
63
+ */
64
+ get thyShowTime() {
65
+ return this._showTime;
66
+ }
67
+ set thyShowTime(value) {
68
+ this._showTime = typeof value === 'object' ? value : coerceBooleanProperty(value);
69
+ }
70
70
  ngOnInit() {
71
71
  super.ngOnInit();
72
72
  this.setDefaultTimePickerState(this._panelMode);
@@ -208,7 +208,7 @@ export class BasePicker extends AbstractPickerComponent {
208
208
  (!maxDate || date.startOfDay().nativeDate <= maxDate.startOfDay().nativeDate) &&
209
209
  !disable);
210
210
  }
211
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: BasePicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
211
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: BasePicker, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
212
212
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.0", type: BasePicker, isStandalone: true, selector: "ng-component", inputs: { thyDateRender: "thyDateRender", thyMode: "thyMode", thyHasBackdrop: ["thyHasBackdrop", "thyHasBackdrop", coerceBooleanProperty], thyShowTime: "thyShowTime", thyMustShowTime: ["thyMustShowTime", "thyMustShowTime", coerceBooleanProperty], thyPlacement: "thyPlacement" }, outputs: { thyOnPanelChange: "thyOnPanelChange", thyOnCalendarChange: "thyOnCalendarChange", thyOnOk: "thyOnOk" }, host: { listeners: { "focus": "onFocus($event)", "blur": "onBlur($event)" }, properties: { "attr.tabindex": "tabIndex" } }, viewQueries: [{ propertyName: "thyPicker", first: true, predicate: ["thyPicker"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: ``, isInline: true }); }
213
213
  }
214
214
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: BasePicker, decorators: [{
@@ -222,7 +222,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
222
222
  '(blur)': 'onBlur($event)'
223
223
  }
224
224
  }]
225
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { thyPicker: [{
225
+ }], propDecorators: { thyPicker: [{
226
226
  type: ViewChild,
227
227
  args: ['thyPicker', { static: true }]
228
228
  }], thyDateRender: [{
@@ -246,4 +246,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
246
246
  }], thyOnOk: [{
247
247
  type: Output
248
248
  }] } });
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RhdGUtcGlja2VyL2Jhc2UtcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQWdCLE1BQU0saUJBQWlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFnQixRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5RSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBR04sTUFBTSxFQUNOLFdBQVcsRUFFWCxTQUFTLEVBQ1QsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUU5RDs7R0FFRztBQVVILE1BQU0sT0FBTyxVQUFXLFNBQVEsdUJBQXVCO0lBYW5ELElBQWEsT0FBTyxDQUFDLEtBQW1CO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxJQUFJLE1BQU0sQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BE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QkFBdkIsS0FBSztnQkFXdUMsZUFBZTtzQkFBM0QsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFNbEMsWUFBWTtzQkFBcEIsS0FBSztnQkFLYSxPQUFPO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGh5Q2xpY2tEaXNwYXRjaGVyLCBUaHlQbGFjZW1lbnQgfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuaW1wb3J0IHsgZWxlbWVudE1hdGNoQ2xvc2VzdCwgRnVuY3Rpb25Qcm9wLCBUaW55RGF0ZSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5cbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBQTEFURk9STV9JRCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdFBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vYWJzdHJhY3QtcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wYXRpYmxlVmFsdWUsIFJhbmdlQWR2YW5jZWRWYWx1ZSB9IGZyb20gJy4vaW5uZXItdHlwZXMnO1xuaW1wb3J0IHsgQ29tcGF0aWJsZURhdGUsIFRoeVBhbmVsTW9kZSB9IGZyb20gJy4vc3RhbmRhcmQtdHlwZXMnO1xuaW1wb3J0IHsgVGh5UGlja2VyIH0gZnJvbSAnLi9waWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IGhhc1RpbWVJblN0cmluZ0RhdGUsIGlzVmFsaWRTdHJpbmdEYXRlLCBwYXJzZVN0cmluZ0RhdGUsIHRyYW5zZm9ybURhdGVWYWx1ZSB9IGZyb20gJy4vcGlja2VyLnV0aWwnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZTogYGAsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiBgdGFiSW5kZXhgLFxuICAgICAgICAnKGZvY3VzKSc6ICdvbkZvY3VzKCRldmVudCknLFxuICAgICAgICAnKGJsdXIpJzogJ29uQmx1cigkZXZlbnQpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQmFzZVBpY2tlciBleHRlbmRzIEFic3RyYWN0UGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIHNob3dXZWVrID0gZmFsc2U7XG5cbiAgICBwYW5lbE1vZGU6IFRoeVBhbmVsTW9kZSB8IFRoeVBhbmVsTW9kZVtdO1xuXG4gICAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG5cbiAgICBwcml2YXRlIGlubmVyUHJldmlvdXNEYXRlOiBzdHJpbmc7XG5cbiAgICBAVmlld0NoaWxkKCd0aHlQaWNrZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSB0aHlQaWNrZXI6IFRoeVBpY2tlcjtcblxuICAgIEBJbnB1dCgpIHRoeURhdGVSZW5kZXI6IEZ1bmN0aW9uUHJvcDxUZW1wbGF0ZVJlZjxEYXRlPiB8IHN0cmluZz47XG5cbiAgICBASW5wdXQoKSBzZXQgdGh5TW9kZSh2YWx1ZTogVGh5UGFuZWxNb2RlKSB7XG4gICAgICAgIHRoaXMuX3BhbmVsTW9kZSA9IHZhbHVlID8/ICdkYXRlJztcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdFRpbWVQaWNrZXJTdGF0ZSh0aGlzLl9wYW5lbE1vZGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHRoeU1vZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYW5lbE1vZGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5pyJ5bmV5biDXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeUhhc0JhY2tkcm9wID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEB0eXBlIEV2ZW50RW1pdHRlcjxUaHlQYW5lbE1vZGUgfCBUaHlQYW5lbE1vZGVbXT5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgdGh5T25QYW5lbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5UGFuZWxNb2RlIHwgVGh5UGFuZWxNb2RlW10+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAdHlwZSBFdmVudEVtaXR0ZXI8RGF0ZVtdPlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSB0aHlPbkNhbGVuZGFyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlW10+KCk7XG5cbiAgICBwcml2YXRlIF9zaG93VGltZTogb2JqZWN0IHwgYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOWinuWKoOaXtumXtOmAieaLqeWKn+iDvVxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IHRoeVNob3dUaW1lKCk6IG9iamVjdCB8IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2hvd1RpbWU7XG4gICAgfVxuICAgIHNldCB0aHlTaG93VGltZSh2YWx1ZTogb2JqZWN0IHwgYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zaG93VGltZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyB2YWx1ZSA6IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5bGV56S65pe26Ze0KOaXtuOAgeWIhilcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeU11c3RTaG93VGltZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5by55Ye65L2N572uXG4gICAgICogQHR5cGUgdG9wIHwgdG9wTGVmdCB8IHRvcFJpZ2h0IHwgYm90dG9tIHwgYm90dG9tTGVmdCB8IGJvdHRvbVJpZ2h0IHwgbGVmdCB8IGxlZnRUb3AgfCBsZWZ0Qm90dG9tIHwgcmlnaHQgfCByaWdodFRvcCB8IHJpZ2h0Qm90dG9tXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5UGxhY2VtZW50OiBUaHlQbGFjZW1lbnQgPSAnYm90dG9tTGVmdCc7XG5cbiAgICAvKipcbiAgICAgKiBAdHlwZSBFdmVudEVtaXR0ZXI8Q29tcGF0aWJsZURhdGUgfCBudWxsPlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSB0aHlPbk9rID0gbmV3IEV2ZW50RW1pdHRlcjxDb21wYXRpYmxlRGF0ZSB8IG51bGw+KCk7XG5cbiAgICB0YWtlVW50aWxEZXN0cm95ZWQgPSB0YWtlVW50aWxEZXN0cm95ZWQoKTtcblxuICAgIHRoeUNsaWNrRGlzcGF0Y2hlciA9IGluamVjdChUaHlDbGlja0Rpc3BhdGNoZXIpO1xuXG4gICAgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgICBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcm90ZWN0ZWQgZWxlbWVudDogRWxlbWVudFJlZlxuICAgICkge1xuICAgICAgICBzdXBlcihjZHIpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnNldERlZmF1bHRUaW1lUGlja2VyU3RhdGUodGhpcy5fcGFuZWxNb2RlKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHRoaXMudGh5Q2xpY2tEaXNwYXRjaGVyXG4gICAgICAgICAgICAgICAgLmNsaWNrZWQoMClcbiAgICAgICAgICAgICAgICAucGlwZSh0aGlzLnRha2VVbnRpbERlc3Ryb3llZClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLnRoeVBpY2tlcj8ub3ZlcmxheUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhbE9wZW5TdGF0ZVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZU92ZXJsYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblZhbHVlQ2hhbmdlKHZhbHVlOiBDb21wYXRpYmxlVmFsdWUgfCBSYW5nZUFkdmFuY2VkVmFsdWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50aHlQaWNrZXIuZW50ZXJpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZXN0b3JlVGltZVBpY2tlclN0YXRlKHZhbHVlIGFzIENvbXBhdGlibGVWYWx1ZSk7XG4gICAgICAgIHN1cGVyLm9uVmFsdWVDaGFuZ2UodmFsdWUpO1xuICAgICAgICBpZiAoIXRoaXMuZmxleGlibGUpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VPdmVybGF5KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbm5lclByZXZpb3VzRGF0ZSA9IHRoaXMudGh5UGlja2VyLmdldFJlYWRhYmxlVmFsdWUodGhpcy50aHlWYWx1ZSk7XG4gICAgfVxuXG4gICAgb25JbnB1dFZhbHVlQ2hhbmdlKGZvcm1hdERhdGU6IHN0cmluZyB8IG51bGwgfCBBcnJheTxudWxsPikge1xuICAgICAgICBpZiAoIWZvcm1hdERhdGUgfHwgIWZvcm1hdERhdGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBjb21wYXRpYmxlVmFsdWUgPSBmb3JtYXREYXRlID8gKGZvcm1hdERhdGUgYXMgQ29tcGF0aWJsZVZhbHVlKSA6IG51bGw7XG4gICAgICAgICAgICB0aGlzLnJlc3RvcmVUaW1lUGlja2VyU3RhdGUoY29tcGF0aWJsZVZhbHVlKTtcbiAgICAgICAgICAgIHN1cGVyLm9uVmFsdWVDaGFuZ2UoY29tcGF0aWJsZVZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdmFsdWUgPSBmb3JtYXREYXRlIGFzIHN0cmluZztcbiAgICAgICAgY29uc3QgdmFsdWVWYWxpZCA9IGlzVmFsaWRTdHJpbmdEYXRlKHZhbHVlKTtcbiAgICAgICAgY29uc3QgdmFsdWVMaW1pdFZhbGlkID0gdmFsdWVWYWxpZCA/IHRoaXMuaXNWYWxpZERhdGVMaW1pdChwYXJzZVN0cmluZ0RhdGUodmFsdWUpKSA6IGZhbHNlO1xuICAgICAgICBpZiAodmFsdWVWYWxpZCAmJiB2YWx1ZUxpbWl0VmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5uZXJQcmV2aW91c0RhdGUgPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy5pbm5lclByZXZpb3VzRGF0ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0aW55RGF0ZSA9IHZhbHVlID8gKHRoaXMudGh5U2hvd1RpbWUgPyBwYXJzZVN0cmluZ0RhdGUodmFsdWUpIDogcGFyc2VTdHJpbmdEYXRlKHZhbHVlKS5zdGFydE9mRGF5KCkpIDogbnVsbDtcbiAgICAgICAgdGhpcy5yZXN0b3JlVGltZVBpY2tlclN0YXRlKHRpbnlEYXRlKTtcbiAgICAgICAgc3VwZXIub25WYWx1ZUNoYW5nZSh0aW55RGF0ZSk7XG4gICAgfVxuXG4gICAgLy8gRGlzcGxheXMgdGhlIHRpbWUgZGlyZWN0bHkgd2hlbiB0aGUgdGltZSBtdXN0IGJlIGRpc3BsYXllZCBieSBkZWZhdWx0XG4gICAgc2V0RGVmYXVsdFRpbWVQaWNrZXJTdGF0ZSh2YWx1ZTogVGh5UGFuZWxNb2RlKSB7XG4gICAgICAgIHRoaXMud2l0aFRpbWUgPSB0aGlzLnRoeU11c3RTaG93VGltZTtcbiAgICAgICAgaWYgKHRoaXMuaXNSYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5wYW5lbE1vZGUgPSB0aGlzLmZsZXhpYmxlID8gWydkYXRlJywgJ2RhdGUnXSA6IFt2YWx1ZSwgdmFsdWVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wYW5lbE1vZGUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNob3dXZWVrID0gdmFsdWUgPT09ICd3ZWVrJztcbiAgICAgICAgaWYgKCF0aGlzLnRoeUZvcm1hdCkge1xuICAgICAgICAgICAgY29uc3QgaW5wdXRGb3JtYXRzOiB7IFtrZXkgaW4gVGh5UGFuZWxNb2RlXT86IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgICAgIHllYXI6ICd5eXl5JyxcbiAgICAgICAgICAgICAgICBxdWFydGVyOiAneXl5eS1xcXEnLFxuICAgICAgICAgICAgICAgIG1vbnRoOiAneXl5eS1NTScsXG4gICAgICAgICAgICAgICAgd2VlazogJ3l5eXktd3flkagnLFxuICAgICAgICAgICAgICAgIGRhdGU6IHRoaXMudGh5U2hvd1RpbWUgPyAneXl5eS1NTS1kZCBISDptbScgOiAneXl5eS1NTS1kZCdcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnRoeUZvcm1hdCA9IHRoaXMuZmxleGlibGUgPyBpbnB1dEZvcm1hdHNbJ2RhdGUnXSA6IGlucHV0Rm9ybWF0c1t2YWx1ZV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXN0b3JlIGFmdGVyIGNsZWFyaW5nIHRpbWUgdG8gc2VsZWN0IHdoZXRoZXIgdGhlIG9yaWdpbmFsIHBpY2tlciB0aW1lIGlzIGRpc3BsYXllZCBvciBub3RcbiAgICByZXN0b3JlVGltZVBpY2tlclN0YXRlKHZhbHVlOiBDb21wYXRpYmxlVmFsdWUgfCBudWxsKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMud2l0aFRpbWUgPSB0aGlzLnRoeU11c3RTaG93VGltZSB8fCB0aGlzLm9yaWdpbldpdGhUaW1lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRW1pdCB0aHlPbkNhbGVuZGFyQ2hhbmdlIHdoZW4gc2VsZWN0IGRhdGUgYnkgdGh5LXJhbmdlLXBpY2tlclxuICAgIG9uQ2FsZW5kYXJDaGFuZ2UodmFsdWU6IFRpbnlEYXRlW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNSYW5nZSkge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2VWYWx1ZSA9IHZhbHVlLm1hcCh4ID0+IHgubmF0aXZlRGF0ZSk7XG4gICAgICAgICAgICB0aGlzLnRoeU9uQ2FsZW5kYXJDaGFuZ2UuZW1pdChyYW5nZVZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2hvd1RpbWVQaWNrZXJDaGFuZ2Uoc2hvdzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLndpdGhUaW1lID0gc2hvdztcbiAgICB9XG5cbiAgICBvblJlc3VsdE9rKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc1JhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudGh5VmFsdWUgYXMgVGlueURhdGVbXTtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRoeU9uT2suZW1pdChbdmFsdWVbMF0ubmF0aXZlRGF0ZSwgdmFsdWVbMV0ubmF0aXZlRGF0ZV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRoeU9uT2suZW1pdChbXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy50aHlWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudGh5T25Pay5lbWl0KCh0aGlzLnRoeVZhbHVlIGFzIFRpbnlEYXRlKS5uYXRpdmVEYXRlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aHlPbk9rLmVtaXQobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbG9zZU92ZXJsYXkoKTtcbiAgICB9XG5cbiAgICBvbk9wZW5DaGFuZ2Uob3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnRoeU9wZW5DaGFuZ2UuZW1pdChvcGVuKTtcbiAgICAgICAgaWYgKCFvcGVuKSB7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkZvY3VzKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLnBpY2tlci5mb2N1cygpO1xuICAgIH1cblxuICAgIG9uQmx1cihldmVudD86IEZvY3VzRXZlbnQpIHtcbiAgICAgICAgLy8gVGFiIOiBmueEpuWQjuiHquWKqOiBmueEpuWIsCBpbnB1dCDovpPlhaXmoYbvvIzmraTliIbmlK/kuIvnm7TmjqXov5Tlm57vvIzml6DpnIDop6blj5Egb25Ub3VjaGVkRm5cbiAgICAgICAgaWYgKGVsZW1lbnRNYXRjaENsb3Nlc3QoZXZlbnQ/LnJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQsIFsnZGF0ZS1wb3B1cCcsICd0aHktcGlja2VyJ10pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgIH1cblxuICAgIG9uSW5wdXREYXRlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlICYmIGlzVmFsaWRTdHJpbmdEYXRlKHZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMudGh5U2hvd1RpbWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLndpdGhUaW1lID0gaGFzVGltZUluU3RyaW5nRGF0ZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRoeVZhbHVlID0gcGFyc2VTdHJpbmdEYXRlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZERhdGVMaW1pdChkYXRlOiBUaW55RGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgZGlzYWJsZSA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy50aHlEaXNhYmxlZERhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZGlzYWJsZSA9IHRoaXMudGh5RGlzYWJsZWREYXRlKGRhdGUubmF0aXZlRGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWluRGF0ZSA9IHRoaXMudGh5TWluRGF0ZSA/IG5ldyBUaW55RGF0ZSh0cmFuc2Zvcm1EYXRlVmFsdWUodGhpcy50aHlNaW5EYXRlKS52YWx1ZSBhcyBEYXRlKSA6IG51bGw7XG4gICAgICAgIGNvbnN0IG1heERhdGUgPSB0aGlzLnRoeU1heERhdGUgPyBuZXcgVGlueURhdGUodHJhbnNmb3JtRGF0ZVZhbHVlKHRoaXMudGh5TWF4RGF0ZSkudmFsdWUgYXMgRGF0ZSkgOiBudWxsO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKCFtaW5EYXRlIHx8IGRhdGUuc3RhcnRPZkRheSgpLm5hdGl2ZURhdGUgPj0gbWluRGF0ZS5zdGFydE9mRGF5KCkubmF0aXZlRGF0ZSkgJiZcbiAgICAgICAgICAgICghbWF4RGF0ZSB8fCBkYXRlLnN0YXJ0T2ZEYXkoKS5uYXRpdmVEYXRlIDw9IG1heERhdGUuc3RhcnRPZkRheSgpLm5hdGl2ZURhdGUpICYmXG4gICAgICAgICAgICAhZGlzYWJsZVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RhdGUtcGlja2VyL2Jhc2UtcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQWdCLE1BQU0saUJBQWlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFnQixRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5RSxPQUFPLEVBRUgsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFHTixNQUFNLEVBQ04sV0FBVyxFQUVYLFNBQVMsRUFDVCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBRTlEOztHQUVHO0FBVUgsTUFBTSxPQUFPLFVBQVcsU0FBUSx1QkFBdUI7SUFUdkQ7O1FBVWMsWUFBTyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV2QyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBdUJqQjs7O1dBR0c7UUFDMEMsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFFbkU7O1dBRUc7UUFDZ0IscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQWlDLENBQUM7UUFFeEY7O1dBRUc7UUFD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RSxxQkFBcUIsRUFBRTtnQkFNbEMsWUFBWTtzQkFBcEIsS0FBSztnQkFLYSxPQUFPO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGh5Q2xpY2tEaXNwYXRjaGVyLCBUaHlQbGFjZW1lbnQgfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuaW1wb3J0IHsgZWxlbWVudE1hdGNoQ2xvc2VzdCwgRnVuY3Rpb25Qcm9wLCBUaW55RGF0ZSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5cbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBQTEFURk9STV9JRCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdFBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vYWJzdHJhY3QtcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wYXRpYmxlVmFsdWUsIFJhbmdlQWR2YW5jZWRWYWx1ZSB9IGZyb20gJy4vaW5uZXItdHlwZXMnO1xuaW1wb3J0IHsgQ29tcGF0aWJsZURhdGUsIFRoeVBhbmVsTW9kZSB9IGZyb20gJy4vc3RhbmRhcmQtdHlwZXMnO1xuaW1wb3J0IHsgVGh5UGlja2VyIH0gZnJvbSAnLi9waWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IGhhc1RpbWVJblN0cmluZ0RhdGUsIGlzVmFsaWRTdHJpbmdEYXRlLCBwYXJzZVN0cmluZ0RhdGUsIHRyYW5zZm9ybURhdGVWYWx1ZSB9IGZyb20gJy4vcGlja2VyLnV0aWwnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZTogYGAsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiBgdGFiSW5kZXhgLFxuICAgICAgICAnKGZvY3VzKSc6ICdvbkZvY3VzKCRldmVudCknLFxuICAgICAgICAnKGJsdXIpJzogJ29uQmx1cigkZXZlbnQpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQmFzZVBpY2tlciBleHRlbmRzIEFic3RyYWN0UGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIHByb3RlY3RlZCBlbGVtZW50ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgc2hvd1dlZWsgPSBmYWxzZTtcblxuICAgIHBhbmVsTW9kZTogVGh5UGFuZWxNb2RlIHwgVGh5UGFuZWxNb2RlW107XG5cbiAgICBpbml0aWFsaXplZDogYm9vbGVhbjtcblxuICAgIHByaXZhdGUgaW5uZXJQcmV2aW91c0RhdGU6IHN0cmluZztcblxuICAgIEBWaWV3Q2hpbGQoJ3RoeVBpY2tlcicsIHsgc3RhdGljOiB0cnVlIH0pIHRoeVBpY2tlcjogVGh5UGlja2VyO1xuXG4gICAgQElucHV0KCkgdGh5RGF0ZVJlbmRlcjogRnVuY3Rpb25Qcm9wPFRlbXBsYXRlUmVmPERhdGU+IHwgc3RyaW5nPjtcblxuICAgIEBJbnB1dCgpIHNldCB0aHlNb2RlKHZhbHVlOiBUaHlQYW5lbE1vZGUpIHtcbiAgICAgICAgdGhpcy5fcGFuZWxNb2RlID0gdmFsdWUgPz8gJ2RhdGUnO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0VGltZVBpY2tlclN0YXRlKHRoaXMuX3BhbmVsTW9kZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgdGh5TW9kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhbmVsTW9kZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmnInluZXluINcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5SGFzQmFja2Ryb3AgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQHR5cGUgRXZlbnRFbWl0dGVyPFRoeVBhbmVsTW9kZSB8IFRoeVBhbmVsTW9kZVtdPlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSB0aHlPblBhbmVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlQYW5lbE1vZGUgfCBUaHlQYW5lbE1vZGVbXT4oKTtcblxuICAgIC8qKlxuICAgICAqIEB0eXBlIEV2ZW50RW1pdHRlcjxEYXRlW10+XG4gICAgICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHRoeU9uQ2FsZW5kYXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGVbXT4oKTtcblxuICAgIHByaXZhdGUgX3Nob3dUaW1lOiBvYmplY3QgfCBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog5aKe5Yqg5pe26Ze06YCJ5oup5Yqf6IO9XG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKSBnZXQgdGh5U2hvd1RpbWUoKTogb2JqZWN0IHwgYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaG93VGltZTtcbiAgICB9XG4gICAgc2V0IHRoeVNob3dUaW1lKHZhbHVlOiBvYmplY3QgfCBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Nob3dUaW1lID0gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/IHZhbHVlIDogY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblsZXnpLrml7bpl7Qo5pe244CB5YiGKVxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5TXVzdFNob3dUaW1lID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDlvLnlh7rkvY3nva5cbiAgICAgKiBAdHlwZSB0b3AgfCB0b3BMZWZ0IHwgdG9wUmlnaHQgfCBib3R0b20gfCBib3R0b21MZWZ0IHwgYm90dG9tUmlnaHQgfCBsZWZ0IHwgbGVmdFRvcCB8IGxlZnRCb3R0b20gfCByaWdodCB8IHJpZ2h0VG9wIHwgcmlnaHRCb3R0b21cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlQbGFjZW1lbnQ6IFRoeVBsYWNlbWVudCA9ICdib3R0b21MZWZ0JztcblxuICAgIC8qKlxuICAgICAqIEB0eXBlIEV2ZW50RW1pdHRlcjxDb21wYXRpYmxlRGF0ZSB8IG51bGw+XG4gICAgICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHRoeU9uT2sgPSBuZXcgRXZlbnRFbWl0dGVyPENvbXBhdGlibGVEYXRlIHwgbnVsbD4oKTtcblxuICAgIHRha2VVbnRpbERlc3Ryb3llZCA9IHRha2VVbnRpbERlc3Ryb3llZCgpO1xuXG4gICAgdGh5Q2xpY2tEaXNwYXRjaGVyID0gaW5qZWN0KFRoeUNsaWNrRGlzcGF0Y2hlcik7XG5cbiAgICBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcblxuICAgIG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFRpbWVQaWNrZXJTdGF0ZSh0aGlzLl9wYW5lbE1vZGUpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy50aHlDbGlja0Rpc3BhdGNoZXJcbiAgICAgICAgICAgICAgICAuY2xpY2tlZCgwKVxuICAgICAgICAgICAgICAgIC5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveWVkKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMudGh5UGlja2VyPy5vdmVybGF5Q29udGFpbmVyPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFsT3BlblN0YXRlXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlT3ZlcmxheSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2UodmFsdWU6IENvbXBhdGlibGVWYWx1ZSB8IFJhbmdlQWR2YW5jZWRWYWx1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnRoeVBpY2tlci5lbnRlcmluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlc3RvcmVUaW1lUGlja2VyU3RhdGUodmFsdWUgYXMgQ29tcGF0aWJsZVZhbHVlKTtcbiAgICAgICAgc3VwZXIub25WYWx1ZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIGlmICghdGhpcy5mbGV4aWJsZSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZU92ZXJsYXkoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlubmVyUHJldmlvdXNEYXRlID0gdGhpcy50aHlQaWNrZXIuZ2V0UmVhZGFibGVWYWx1ZSh0aGlzLnRoeVZhbHVlKTtcbiAgICB9XG5cbiAgICBvbklucHV0VmFsdWVDaGFuZ2UoZm9ybWF0RGF0ZTogc3RyaW5nIHwgbnVsbCB8IEFycmF5PG51bGw+KSB7XG4gICAgICAgIGlmICghZm9ybWF0RGF0ZSB8fCAhZm9ybWF0RGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBhdGlibGVWYWx1ZSA9IGZvcm1hdERhdGUgPyAoZm9ybWF0RGF0ZSBhcyBDb21wYXRpYmxlVmFsdWUpIDogbnVsbDtcbiAgICAgICAgICAgIHRoaXMucmVzdG9yZVRpbWVQaWNrZXJTdGF0ZShjb21wYXRpYmxlVmFsdWUpO1xuICAgICAgICAgICAgc3VwZXIub25WYWx1ZUNoYW5nZShjb21wYXRpYmxlVmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCB2YWx1ZSA9IGZvcm1hdERhdGUgYXMgc3RyaW5nO1xuICAgICAgICBjb25zdCB2YWx1ZVZhbGlkID0gaXNWYWxpZFN0cmluZ0RhdGUodmFsdWUpO1xuICAgICAgICBjb25zdCB2YWx1ZUxpbWl0VmFsaWQgPSB2YWx1ZVZhbGlkID8gdGhpcy5pc1ZhbGlkRGF0ZUxpbWl0KHBhcnNlU3RyaW5nRGF0ZSh2YWx1ZSkpIDogZmFsc2U7XG4gICAgICAgIGlmICh2YWx1ZVZhbGlkICYmIHZhbHVlTGltaXRWYWxpZCkge1xuICAgICAgICAgICAgdGhpcy5pbm5lclByZXZpb3VzRGF0ZSA9IHZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmlubmVyUHJldmlvdXNEYXRlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRpbnlEYXRlID0gdmFsdWUgPyAodGhpcy50aHlTaG93VGltZSA/IHBhcnNlU3RyaW5nRGF0ZSh2YWx1ZSkgOiBwYXJzZVN0cmluZ0RhdGUodmFsdWUpLnN0YXJ0T2ZEYXkoKSkgOiBudWxsO1xuICAgICAgICB0aGlzLnJlc3RvcmVUaW1lUGlja2VyU3RhdGUodGlueURhdGUpO1xuICAgICAgICBzdXBlci5vblZhbHVlQ2hhbmdlKHRpbnlEYXRlKTtcbiAgICB9XG5cbiAgICAvLyBEaXNwbGF5cyB0aGUgdGltZSBkaXJlY3RseSB3aGVuIHRoZSB0aW1lIG11c3QgYmUgZGlzcGxheWVkIGJ5IGRlZmF1bHRcbiAgICBzZXREZWZhdWx0VGltZVBpY2tlclN0YXRlKHZhbHVlOiBUaHlQYW5lbE1vZGUpIHtcbiAgICAgICAgdGhpcy53aXRoVGltZSA9IHRoaXMudGh5TXVzdFNob3dUaW1lO1xuICAgICAgICBpZiAodGhpcy5pc1JhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnBhbmVsTW9kZSA9IHRoaXMuZmxleGlibGUgPyBbJ2RhdGUnLCAnZGF0ZSddIDogW3ZhbHVlLCB2YWx1ZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBhbmVsTW9kZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2hvd1dlZWsgPSB2YWx1ZSA9PT0gJ3dlZWsnO1xuICAgICAgICBpZiAoIXRoaXMudGh5Rm9ybWF0KSB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dEZvcm1hdHM6IHsgW2tleSBpbiBUaHlQYW5lbE1vZGVdPzogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAgICAgeWVhcjogJ3l5eXknLFxuICAgICAgICAgICAgICAgIHF1YXJ0ZXI6ICd5eXl5LXFxcScsXG4gICAgICAgICAgICAgICAgbW9udGg6ICd5eXl5LU1NJyxcbiAgICAgICAgICAgICAgICB3ZWVrOiAneXl5eS13d+WRqCcsXG4gICAgICAgICAgICAgICAgZGF0ZTogdGhpcy50aHlTaG93VGltZSA/ICd5eXl5LU1NLWRkIEhIOm1tJyA6ICd5eXl5LU1NLWRkJ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMudGh5Rm9ybWF0ID0gdGhpcy5mbGV4aWJsZSA/IGlucHV0Rm9ybWF0c1snZGF0ZSddIDogaW5wdXRGb3JtYXRzW3ZhbHVlXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc3RvcmUgYWZ0ZXIgY2xlYXJpbmcgdGltZSB0byBzZWxlY3Qgd2hldGhlciB0aGUgb3JpZ2luYWwgcGlja2VyIHRpbWUgaXMgZGlzcGxheWVkIG9yIG5vdFxuICAgIHJlc3RvcmVUaW1lUGlja2VyU3RhdGUodmFsdWU6IENvbXBhdGlibGVWYWx1ZSB8IG51bGwpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy53aXRoVGltZSA9IHRoaXMudGh5TXVzdFNob3dUaW1lIHx8IHRoaXMub3JpZ2luV2l0aFRpbWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFbWl0IHRoeU9uQ2FsZW5kYXJDaGFuZ2Ugd2hlbiBzZWxlY3QgZGF0ZSBieSB0aHktcmFuZ2UtcGlja2VyXG4gICAgb25DYWxlbmRhckNoYW5nZSh2YWx1ZTogVGlueURhdGVbXSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc1JhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCByYW5nZVZhbHVlID0gdmFsdWUubWFwKHggPT4geC5uYXRpdmVEYXRlKTtcbiAgICAgICAgICAgIHRoaXMudGh5T25DYWxlbmRhckNoYW5nZS5lbWl0KHJhbmdlVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TaG93VGltZVBpY2tlckNoYW5nZShzaG93OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMud2l0aFRpbWUgPSBzaG93O1xuICAgIH1cblxuICAgIG9uUmVzdWx0T2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzUmFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy50aHlWYWx1ZSBhcyBUaW55RGF0ZVtdO1xuICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMudGh5T25Pay5lbWl0KFt2YWx1ZVswXS5uYXRpdmVEYXRlLCB2YWx1ZVsxXS5uYXRpdmVEYXRlXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudGh5T25Pay5lbWl0KFtdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRoeVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aHlPbk9rLmVtaXQoKHRoaXMudGh5VmFsdWUgYXMgVGlueURhdGUpLm5hdGl2ZURhdGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRoeU9uT2suZW1pdChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsb3NlT3ZlcmxheSgpO1xuICAgIH1cblxuICAgIG9uT3BlbkNoYW5nZShvcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGh5T3BlbkNoYW5nZS5lbWl0KG9wZW4pO1xuICAgICAgICBpZiAoIW9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkRm4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRm9jdXMoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMucGlja2VyLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgb25CbHVyKGV2ZW50PzogRm9jdXNFdmVudCkge1xuICAgICAgICAvLyBUYWIg6IGa54Sm5ZCO6Ieq5Yqo6IGa54Sm5YiwIGlucHV0IOi+k+WFpeahhu+8jOatpOWIhuaUr+S4i+ebtOaOpei/lOWbnu+8jOaXoOmcgOinpuWPkSBvblRvdWNoZWRGblxuICAgICAgICBpZiAoZWxlbWVudE1hdGNoQ2xvc2VzdChldmVudD8ucmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudCwgWydkYXRlLXBvcHVwJywgJ3RoeS1waWNrZXInXSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgfVxuXG4gICAgb25JbnB1dERhdGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUgJiYgaXNWYWxpZFN0cmluZ0RhdGUodmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50aHlTaG93VGltZSkge1xuICAgICAgICAgICAgICAgIHRoaXMud2l0aFRpbWUgPSBoYXNUaW1lSW5TdHJpbmdEYXRlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudGh5VmFsdWUgPSBwYXJzZVN0cmluZ0RhdGUodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1ZhbGlkRGF0ZUxpbWl0KGRhdGU6IFRpbnlEYXRlKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBkaXNhYmxlID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnRoeURpc2FibGVkRGF0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkaXNhYmxlID0gdGhpcy50aHlEaXNhYmxlZERhdGUoZGF0ZS5uYXRpdmVEYXRlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtaW5EYXRlID0gdGhpcy50aHlNaW5EYXRlID8gbmV3IFRpbnlEYXRlKHRyYW5zZm9ybURhdGVWYWx1ZSh0aGlzLnRoeU1pbkRhdGUpLnZhbHVlIGFzIERhdGUpIDogbnVsbDtcbiAgICAgICAgY29uc3QgbWF4RGF0ZSA9IHRoaXMudGh5TWF4RGF0ZSA/IG5ldyBUaW55RGF0ZSh0cmFuc2Zvcm1EYXRlVmFsdWUodGhpcy50aHlNYXhEYXRlKS52YWx1ZSBhcyBEYXRlKSA6IG51bGw7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoIW1pbkRhdGUgfHwgZGF0ZS5zdGFydE9mRGF5KCkubmF0aXZlRGF0ZSA+PSBtaW5EYXRlLnN0YXJ0T2ZEYXkoKS5uYXRpdmVEYXRlKSAmJlxuICAgICAgICAgICAgKCFtYXhEYXRlIHx8IGRhdGUuc3RhcnRPZkRheSgpLm5hdGl2ZURhdGUgPD0gbWF4RGF0ZS5zdGFydE9mRGF5KCkubmF0aXZlRGF0ZSkgJiZcbiAgICAgICAgICAgICFkaXNhYmxlXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19