@taiga-ui/kit 3.33.1 → 3.34.0-dev.main-23baa20

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 (333) hide show
  1. package/bundles/taiga-ui-kit-components-accordion.umd.js +0 -30
  2. package/bundles/taiga-ui-kit-components-accordion.umd.js.map +1 -1
  3. package/bundles/taiga-ui-kit-components-action.umd.js +0 -3
  4. package/bundles/taiga-ui-kit-components-action.umd.js.map +1 -1
  5. package/bundles/taiga-ui-kit-components-avatar.umd.js +0 -18
  6. package/bundles/taiga-ui-kit-components-avatar.umd.js.map +1 -1
  7. package/bundles/taiga-ui-kit-components-badge.umd.js +0 -327
  8. package/bundles/taiga-ui-kit-components-badge.umd.js.map +1 -1
  9. package/bundles/taiga-ui-kit-components-badged-content.umd.js +0 -330
  10. package/bundles/taiga-ui-kit-components-badged-content.umd.js.map +1 -1
  11. package/bundles/taiga-ui-kit-components-breadcrumbs.umd.js +29 -10
  12. package/bundles/taiga-ui-kit-components-breadcrumbs.umd.js.map +1 -1
  13. package/bundles/taiga-ui-kit-components-calendar-month.umd.js +0 -15
  14. package/bundles/taiga-ui-kit-components-calendar-month.umd.js.map +1 -1
  15. package/bundles/taiga-ui-kit-components-calendar-range.umd.js +0 -27
  16. package/bundles/taiga-ui-kit-components-calendar-range.umd.js.map +1 -1
  17. package/bundles/taiga-ui-kit-components-carousel.umd.js +0 -9
  18. package/bundles/taiga-ui-kit-components-carousel.umd.js.map +1 -1
  19. package/bundles/taiga-ui-kit-components-checkbox-block.umd.js +0 -9
  20. package/bundles/taiga-ui-kit-components-checkbox-block.umd.js.map +1 -1
  21. package/bundles/taiga-ui-kit-components-checkbox-labeled.umd.js +0 -3
  22. package/bundles/taiga-ui-kit-components-checkbox-labeled.umd.js.map +1 -1
  23. package/bundles/taiga-ui-kit-components-checkbox.umd.js +0 -3
  24. package/bundles/taiga-ui-kit-components-checkbox.umd.js.map +1 -1
  25. package/bundles/taiga-ui-kit-components-combo-box.umd.js +0 -18
  26. package/bundles/taiga-ui-kit-components-combo-box.umd.js.map +1 -1
  27. package/bundles/taiga-ui-kit-components-data-list-wrapper.umd.js +5 -20
  28. package/bundles/taiga-ui-kit-components-data-list-wrapper.umd.js.map +1 -1
  29. package/bundles/taiga-ui-kit-components-files.umd.js +0 -18
  30. package/bundles/taiga-ui-kit-components-files.umd.js.map +1 -1
  31. package/bundles/taiga-ui-kit-components-filter.umd.js +0 -15
  32. package/bundles/taiga-ui-kit-components-filter.umd.js.map +1 -1
  33. package/bundles/taiga-ui-kit-components-input-copy.umd.js +0 -6
  34. package/bundles/taiga-ui-kit-components-input-copy.umd.js.map +1 -1
  35. package/bundles/taiga-ui-kit-components-input-count.umd.js +6 -42
  36. package/bundles/taiga-ui-kit-components-input-count.umd.js.map +1 -1
  37. package/bundles/taiga-ui-kit-components-input-date-range.umd.js +0 -24
  38. package/bundles/taiga-ui-kit-components-input-date-range.umd.js.map +1 -1
  39. package/bundles/taiga-ui-kit-components-input-date-time.umd.js +0 -15
  40. package/bundles/taiga-ui-kit-components-input-date-time.umd.js.map +1 -1
  41. package/bundles/taiga-ui-kit-components-input-date.umd.js +0 -18
  42. package/bundles/taiga-ui-kit-components-input-date.umd.js.map +1 -1
  43. package/bundles/taiga-ui-kit-components-input-files.umd.js +0 -12
  44. package/bundles/taiga-ui-kit-components-input-files.umd.js.map +1 -1
  45. package/bundles/taiga-ui-kit-components-input-inline.umd.js +0 -3
  46. package/bundles/taiga-ui-kit-components-input-inline.umd.js.map +1 -1
  47. package/bundles/taiga-ui-kit-components-input-month-range.umd.js +0 -12
  48. package/bundles/taiga-ui-kit-components-input-month-range.umd.js.map +1 -1
  49. package/bundles/taiga-ui-kit-components-input-month.umd.js +0 -12
  50. package/bundles/taiga-ui-kit-components-input-month.umd.js.map +1 -1
  51. package/bundles/taiga-ui-kit-components-input-number.umd.js +67 -112
  52. package/bundles/taiga-ui-kit-components-input-number.umd.js.map +1 -1
  53. package/bundles/taiga-ui-kit-components-input-phone-international.umd.js +0 -3
  54. package/bundles/taiga-ui-kit-components-input-phone-international.umd.js.map +1 -1
  55. package/bundles/taiga-ui-kit-components-input-phone.umd.js +0 -12
  56. package/bundles/taiga-ui-kit-components-input-phone.umd.js.map +1 -1
  57. package/bundles/taiga-ui-kit-components-input-range.umd.js +0 -21
  58. package/bundles/taiga-ui-kit-components-input-range.umd.js.map +1 -1
  59. package/bundles/taiga-ui-kit-components-input-slider.umd.js +0 -24
  60. package/bundles/taiga-ui-kit-components-input-slider.umd.js.map +1 -1
  61. package/bundles/taiga-ui-kit-components-input-tag.umd.js +0 -33
  62. package/bundles/taiga-ui-kit-components-input-tag.umd.js.map +1 -1
  63. package/bundles/taiga-ui-kit-components-input-time.umd.js +0 -18
  64. package/bundles/taiga-ui-kit-components-input-time.umd.js.map +1 -1
  65. package/bundles/taiga-ui-kit-components-input-year.umd.js +0 -9
  66. package/bundles/taiga-ui-kit-components-input-year.umd.js.map +1 -1
  67. package/bundles/taiga-ui-kit-components-island.umd.js +4 -334
  68. package/bundles/taiga-ui-kit-components-island.umd.js.map +1 -1
  69. package/bundles/taiga-ui-kit-components-items-with-more.umd.js +0 -6
  70. package/bundles/taiga-ui-kit-components-items-with-more.umd.js.map +1 -1
  71. package/bundles/taiga-ui-kit-components-line-clamp.umd.js +0 -6
  72. package/bundles/taiga-ui-kit-components-line-clamp.umd.js.map +1 -1
  73. package/bundles/taiga-ui-kit-components-marker-icon.umd.js +0 -327
  74. package/bundles/taiga-ui-kit-components-marker-icon.umd.js.map +1 -1
  75. package/bundles/taiga-ui-kit-components-multi-select.umd.js +0 -30
  76. package/bundles/taiga-ui-kit-components-multi-select.umd.js.map +1 -1
  77. package/bundles/taiga-ui-kit-components-pagination.umd.js +0 -21
  78. package/bundles/taiga-ui-kit-components-pagination.umd.js.map +1 -1
  79. package/bundles/taiga-ui-kit-components-progress.umd.js +28 -52
  80. package/bundles/taiga-ui-kit-components-progress.umd.js.map +1 -1
  81. package/bundles/taiga-ui-kit-components-push.umd.js +42 -51
  82. package/bundles/taiga-ui-kit-components-push.umd.js.map +1 -1
  83. package/bundles/taiga-ui-kit-components-radio-block.umd.js +0 -15
  84. package/bundles/taiga-ui-kit-components-radio-block.umd.js.map +1 -1
  85. package/bundles/taiga-ui-kit-components-radio-group.umd.js +4 -325
  86. package/bundles/taiga-ui-kit-components-radio-group.umd.js.map +1 -1
  87. package/bundles/taiga-ui-kit-components-radio-labeled.umd.js +0 -9
  88. package/bundles/taiga-ui-kit-components-radio-labeled.umd.js.map +1 -1
  89. package/bundles/taiga-ui-kit-components-radio-list.umd.js +0 -15
  90. package/bundles/taiga-ui-kit-components-radio-list.umd.js.map +1 -1
  91. package/bundles/taiga-ui-kit-components-radio.umd.js +0 -12
  92. package/bundles/taiga-ui-kit-components-radio.umd.js.map +1 -1
  93. package/bundles/taiga-ui-kit-components-range.umd.js +0 -18
  94. package/bundles/taiga-ui-kit-components-range.umd.js.map +1 -1
  95. package/bundles/taiga-ui-kit-components-rating.umd.js +0 -12
  96. package/bundles/taiga-ui-kit-components-rating.umd.js.map +1 -1
  97. package/bundles/taiga-ui-kit-components-select.umd.js +0 -9
  98. package/bundles/taiga-ui-kit-components-select.umd.js.map +1 -1
  99. package/bundles/taiga-ui-kit-components-slider.umd.js +0 -9
  100. package/bundles/taiga-ui-kit-components-slider.umd.js.map +1 -1
  101. package/bundles/taiga-ui-kit-components-stepper.umd.js +0 -9
  102. package/bundles/taiga-ui-kit-components-stepper.umd.js.map +1 -1
  103. package/bundles/taiga-ui-kit-components-tabs.umd.js +64 -85
  104. package/bundles/taiga-ui-kit-components-tabs.umd.js.map +1 -1
  105. package/bundles/taiga-ui-kit-components-tag.umd.js +5 -356
  106. package/bundles/taiga-ui-kit-components-tag.umd.js.map +1 -1
  107. package/bundles/taiga-ui-kit-components-text-area.umd.js +0 -9
  108. package/bundles/taiga-ui-kit-components-text-area.umd.js.map +1 -1
  109. package/bundles/taiga-ui-kit-components-tiles.umd.js +0 -12
  110. package/bundles/taiga-ui-kit-components-tiles.umd.js.map +1 -1
  111. package/bundles/taiga-ui-kit-components-toggle.umd.js +0 -12
  112. package/bundles/taiga-ui-kit-components-toggle.umd.js.map +1 -1
  113. package/bundles/taiga-ui-kit-components-tree.umd.js +0 -330
  114. package/bundles/taiga-ui-kit-components-tree.umd.js.map +1 -1
  115. package/bundles/taiga-ui-kit-directives-highlight.umd.js +0 -321
  116. package/bundles/taiga-ui-kit-directives-highlight.umd.js.map +1 -1
  117. package/bundles/taiga-ui-kit-directives-mask.umd.js +5 -5
  118. package/bundles/taiga-ui-kit-directives-mask.umd.js.map +1 -1
  119. package/bundles/taiga-ui-kit-directives-project-class.umd.js +4 -325
  120. package/bundles/taiga-ui-kit-directives-project-class.umd.js.map +1 -1
  121. package/bundles/taiga-ui-kit-internal-primitive-calendar-range.umd.js +0 -339
  122. package/bundles/taiga-ui-kit-internal-primitive-calendar-range.umd.js.map +1 -1
  123. package/components/breadcrumbs/breadcrumbs.component.d.ts +6 -3
  124. package/components/breadcrumbs/breadcrumbs.options.d.ts +10 -0
  125. package/components/breadcrumbs/index.d.ts +1 -0
  126. package/components/input-count/input-count.component.d.ts +0 -3
  127. package/components/input-number/input-number.component.d.ts +7 -6
  128. package/components/input-number/input-number.module.d.ts +4 -4
  129. package/directives/mask/legacy-mask.d.ts +5 -5
  130. package/esm2015/components/accordion/accordion-item/accordion-item.component.js +2 -27
  131. package/esm2015/components/accordion/accordion.component.js +2 -9
  132. package/esm2015/components/action/action.component.js +2 -6
  133. package/esm2015/components/avatar/avatar.component.js +2 -20
  134. package/esm2015/components/badge/badge.component.js +2 -12
  135. package/esm2015/components/badged-content/badged-content.component.js +2 -15
  136. package/esm2015/components/breadcrumbs/breadcrumbs.component.js +15 -14
  137. package/esm2015/components/breadcrumbs/breadcrumbs.options.js +14 -0
  138. package/esm2015/components/breadcrumbs/index.js +2 -1
  139. package/esm2015/components/calendar-month/calendar-month.component.js +2 -17
  140. package/esm2015/components/calendar-range/calendar-range.component.js +2 -29
  141. package/esm2015/components/carousel/carousel.component.js +2 -11
  142. package/esm2015/components/checkbox/checkbox.component.js +2 -6
  143. package/esm2015/components/checkbox-block/checkbox-block.component.js +2 -12
  144. package/esm2015/components/checkbox-labeled/checkbox-labeled.component.js +2 -6
  145. package/esm2015/components/combo-box/combo-box-strict.directive.js +1 -6
  146. package/esm2015/components/combo-box/combo-box.component.js +2 -18
  147. package/esm2015/components/data-list-wrapper/data-list-group-wrapper.component.js +1 -9
  148. package/esm2015/components/data-list-wrapper/data-list-wrapper.component.js +1 -6
  149. package/esm2015/components/data-list-wrapper/data-list-wrapper.js +2 -9
  150. package/esm2015/components/files/file/file.component.js +2 -17
  151. package/esm2015/components/files/files.component.js +2 -6
  152. package/esm2015/components/filter/filter.component.js +2 -18
  153. package/esm2015/components/input-copy/input-copy.component.js +2 -8
  154. package/esm2015/components/input-count/input-count.component.js +6 -38
  155. package/esm2015/components/input-date/input-date.component.js +2 -20
  156. package/esm2015/components/input-date-range/input-date-range.component.js +2 -26
  157. package/esm2015/components/input-date-time/input-date-time.component.js +2 -17
  158. package/esm2015/components/input-files/input-files.component.js +2 -14
  159. package/esm2015/components/input-inline/input-inline.component.js +2 -6
  160. package/esm2015/components/input-month/input-month.component.js +2 -15
  161. package/esm2015/components/input-month-range/input-month-range.component.js +2 -15
  162. package/esm2015/components/input-number/input-number.component.js +45 -90
  163. package/esm2015/components/input-number/input-number.module.js +6 -9
  164. package/esm2015/components/input-phone/input-phone.component.js +2 -14
  165. package/esm2015/components/input-phone-international/input-phone-international.component.js +2 -5
  166. package/esm2015/components/input-range/input-range.component.js +2 -23
  167. package/esm2015/components/input-slider/input-slider.component.js +2 -26
  168. package/esm2015/components/input-tag/input-tag.component.js +2 -36
  169. package/esm2015/components/input-time/input-time.component.js +2 -20
  170. package/esm2015/components/input-year/input-year.component.js +2 -11
  171. package/esm2015/components/island/island.component.js +1 -15
  172. package/esm2015/components/items-with-more/items-with-more.directive.js +2 -9
  173. package/esm2015/components/line-clamp/line-clamp.component.js +2 -9
  174. package/esm2015/components/marker-icon/marker-icon.component.js +2 -12
  175. package/esm2015/components/multi-select/multi-select-group/multi-select-group.component.js +2 -5
  176. package/esm2015/components/multi-select/multi-select.component.js +2 -29
  177. package/esm2015/components/pagination/pagination.component.js +2 -24
  178. package/esm2015/components/progress/progress-bar/progress-bar.component.js +1 -6
  179. package/esm2015/components/progress/progress-circle/progress-circle.component.js +2 -15
  180. package/esm2015/components/progress/progress-segmented/progress-segmented.component.js +2 -12
  181. package/esm2015/components/push/push.component.js +2 -12
  182. package/esm2015/components/radio/radio.component.js +2 -15
  183. package/esm2015/components/radio-block/radio-block.component.js +2 -18
  184. package/esm2015/components/radio-group/radio-group.component.js +1 -6
  185. package/esm2015/components/radio-labeled/radio-labeled.component.js +2 -12
  186. package/esm2015/components/radio-list/radio-list.component.js +2 -18
  187. package/esm2015/components/range/range.component.js +2 -20
  188. package/esm2015/components/rating/rating.component.js +2 -15
  189. package/esm2015/components/select/select.component.js +2 -12
  190. package/esm2015/components/slider/helpers/slider-readonly.directive.js +2 -6
  191. package/esm2015/components/slider/slider.component.js +2 -8
  192. package/esm2015/components/stepper/step/step.component.js +2 -9
  193. package/esm2015/components/stepper/stepper.component.js +2 -5
  194. package/esm2015/components/tabs/tabs/tabs.component.js +2 -5
  195. package/esm2015/components/tabs/tabs-vertical/tabs-vertical.component.js +1 -6
  196. package/esm2015/components/tabs/tabs-with-more/tabs-with-more.component.js +2 -12
  197. package/esm2015/components/tabs/tabs.directive.js +2 -6
  198. package/esm2015/components/tabs/underline/underline.component.js +2 -6
  199. package/esm2015/components/tag/tag.component.js +1 -36
  200. package/esm2015/components/text-area/text-area.component.js +2 -12
  201. package/esm2015/components/tiles/tile.component.js +2 -9
  202. package/esm2015/components/tiles/tiles.component.js +2 -9
  203. package/esm2015/components/toggle/toggle.component.js +2 -15
  204. package/esm2015/components/tree/directives/tree-children.directive.js +2 -6
  205. package/esm2015/components/tree/directives/tree-controller.directive.js +2 -9
  206. package/esm2015/components/tree/directives/tree-item-controller.directive.js +1 -6
  207. package/esm2015/directives/highlight/highlight.directive.js +2 -6
  208. package/esm2015/directives/mask/legacy-mask.js +6 -6
  209. package/esm2015/directives/project-class/project-class.directive.js +1 -6
  210. package/esm2015/internal/primitive-calendar-range/primitive-calendar-range.component.js +2 -24
  211. package/fesm2015/taiga-ui-kit-components-accordion.js +1 -32
  212. package/fesm2015/taiga-ui-kit-components-accordion.js.map +1 -1
  213. package/fesm2015/taiga-ui-kit-components-action.js +1 -5
  214. package/fesm2015/taiga-ui-kit-components-action.js.map +1 -1
  215. package/fesm2015/taiga-ui-kit-components-avatar.js +1 -19
  216. package/fesm2015/taiga-ui-kit-components-avatar.js.map +1 -1
  217. package/fesm2015/taiga-ui-kit-components-badge.js +1 -11
  218. package/fesm2015/taiga-ui-kit-components-badge.js.map +1 -1
  219. package/fesm2015/taiga-ui-kit-components-badged-content.js +1 -14
  220. package/fesm2015/taiga-ui-kit-components-badged-content.js.map +1 -1
  221. package/fesm2015/taiga-ui-kit-components-breadcrumbs.js +27 -14
  222. package/fesm2015/taiga-ui-kit-components-breadcrumbs.js.map +1 -1
  223. package/fesm2015/taiga-ui-kit-components-calendar-month.js +1 -16
  224. package/fesm2015/taiga-ui-kit-components-calendar-month.js.map +1 -1
  225. package/fesm2015/taiga-ui-kit-components-calendar-range.js +1 -28
  226. package/fesm2015/taiga-ui-kit-components-calendar-range.js.map +1 -1
  227. package/fesm2015/taiga-ui-kit-components-carousel.js +1 -10
  228. package/fesm2015/taiga-ui-kit-components-carousel.js.map +1 -1
  229. package/fesm2015/taiga-ui-kit-components-checkbox-block.js +1 -11
  230. package/fesm2015/taiga-ui-kit-components-checkbox-block.js.map +1 -1
  231. package/fesm2015/taiga-ui-kit-components-checkbox-labeled.js +1 -5
  232. package/fesm2015/taiga-ui-kit-components-checkbox-labeled.js.map +1 -1
  233. package/fesm2015/taiga-ui-kit-components-checkbox.js +1 -5
  234. package/fesm2015/taiga-ui-kit-components-checkbox.js.map +1 -1
  235. package/fesm2015/taiga-ui-kit-components-combo-box.js +1 -20
  236. package/fesm2015/taiga-ui-kit-components-combo-box.js.map +1 -1
  237. package/fesm2015/taiga-ui-kit-components-data-list-wrapper.js +2 -18
  238. package/fesm2015/taiga-ui-kit-components-data-list-wrapper.js.map +1 -1
  239. package/fesm2015/taiga-ui-kit-components-files.js +1 -19
  240. package/fesm2015/taiga-ui-kit-components-files.js.map +1 -1
  241. package/fesm2015/taiga-ui-kit-components-filter.js +1 -17
  242. package/fesm2015/taiga-ui-kit-components-filter.js.map +1 -1
  243. package/fesm2015/taiga-ui-kit-components-input-copy.js +1 -7
  244. package/fesm2015/taiga-ui-kit-components-input-copy.js.map +1 -1
  245. package/fesm2015/taiga-ui-kit-components-input-count.js +5 -37
  246. package/fesm2015/taiga-ui-kit-components-input-count.js.map +1 -1
  247. package/fesm2015/taiga-ui-kit-components-input-date-range.js +1 -25
  248. package/fesm2015/taiga-ui-kit-components-input-date-range.js.map +1 -1
  249. package/fesm2015/taiga-ui-kit-components-input-date-time.js +1 -16
  250. package/fesm2015/taiga-ui-kit-components-input-date-time.js.map +1 -1
  251. package/fesm2015/taiga-ui-kit-components-input-date.js +1 -19
  252. package/fesm2015/taiga-ui-kit-components-input-date.js.map +1 -1
  253. package/fesm2015/taiga-ui-kit-components-input-files.js +1 -13
  254. package/fesm2015/taiga-ui-kit-components-input-files.js.map +1 -1
  255. package/fesm2015/taiga-ui-kit-components-input-inline.js +1 -5
  256. package/fesm2015/taiga-ui-kit-components-input-inline.js.map +1 -1
  257. package/fesm2015/taiga-ui-kit-components-input-month-range.js +1 -14
  258. package/fesm2015/taiga-ui-kit-components-input-month-range.js.map +1 -1
  259. package/fesm2015/taiga-ui-kit-components-input-month.js +1 -14
  260. package/fesm2015/taiga-ui-kit-components-input-month.js.map +1 -1
  261. package/fesm2015/taiga-ui-kit-components-input-number.js +49 -96
  262. package/fesm2015/taiga-ui-kit-components-input-number.js.map +1 -1
  263. package/fesm2015/taiga-ui-kit-components-input-phone-international.js +1 -4
  264. package/fesm2015/taiga-ui-kit-components-input-phone-international.js.map +1 -1
  265. package/fesm2015/taiga-ui-kit-components-input-phone.js +1 -13
  266. package/fesm2015/taiga-ui-kit-components-input-phone.js.map +1 -1
  267. package/fesm2015/taiga-ui-kit-components-input-range.js +1 -22
  268. package/fesm2015/taiga-ui-kit-components-input-range.js.map +1 -1
  269. package/fesm2015/taiga-ui-kit-components-input-slider.js +1 -25
  270. package/fesm2015/taiga-ui-kit-components-input-slider.js.map +1 -1
  271. package/fesm2015/taiga-ui-kit-components-input-tag.js +1 -35
  272. package/fesm2015/taiga-ui-kit-components-input-tag.js.map +1 -1
  273. package/fesm2015/taiga-ui-kit-components-input-time.js +1 -19
  274. package/fesm2015/taiga-ui-kit-components-input-time.js.map +1 -1
  275. package/fesm2015/taiga-ui-kit-components-input-year.js +1 -10
  276. package/fesm2015/taiga-ui-kit-components-input-year.js.map +1 -1
  277. package/fesm2015/taiga-ui-kit-components-island.js +0 -14
  278. package/fesm2015/taiga-ui-kit-components-island.js.map +1 -1
  279. package/fesm2015/taiga-ui-kit-components-items-with-more.js +1 -8
  280. package/fesm2015/taiga-ui-kit-components-items-with-more.js.map +1 -1
  281. package/fesm2015/taiga-ui-kit-components-line-clamp.js +1 -8
  282. package/fesm2015/taiga-ui-kit-components-line-clamp.js.map +1 -1
  283. package/fesm2015/taiga-ui-kit-components-marker-icon.js +1 -11
  284. package/fesm2015/taiga-ui-kit-components-marker-icon.js.map +1 -1
  285. package/fesm2015/taiga-ui-kit-components-multi-select.js +1 -31
  286. package/fesm2015/taiga-ui-kit-components-multi-select.js.map +1 -1
  287. package/fesm2015/taiga-ui-kit-components-pagination.js +1 -23
  288. package/fesm2015/taiga-ui-kit-components-pagination.js.map +1 -1
  289. package/fesm2015/taiga-ui-kit-components-progress.js +1 -25
  290. package/fesm2015/taiga-ui-kit-components-progress.js.map +1 -1
  291. package/fesm2015/taiga-ui-kit-components-push.js +1 -11
  292. package/fesm2015/taiga-ui-kit-components-push.js.map +1 -1
  293. package/fesm2015/taiga-ui-kit-components-radio-block.js +1 -17
  294. package/fesm2015/taiga-ui-kit-components-radio-block.js.map +1 -1
  295. package/fesm2015/taiga-ui-kit-components-radio-group.js +0 -5
  296. package/fesm2015/taiga-ui-kit-components-radio-group.js.map +1 -1
  297. package/fesm2015/taiga-ui-kit-components-radio-labeled.js +1 -11
  298. package/fesm2015/taiga-ui-kit-components-radio-labeled.js.map +1 -1
  299. package/fesm2015/taiga-ui-kit-components-radio-list.js +1 -17
  300. package/fesm2015/taiga-ui-kit-components-radio-list.js.map +1 -1
  301. package/fesm2015/taiga-ui-kit-components-radio.js +1 -14
  302. package/fesm2015/taiga-ui-kit-components-radio.js.map +1 -1
  303. package/fesm2015/taiga-ui-kit-components-range.js +1 -19
  304. package/fesm2015/taiga-ui-kit-components-range.js.map +1 -1
  305. package/fesm2015/taiga-ui-kit-components-rating.js +1 -14
  306. package/fesm2015/taiga-ui-kit-components-rating.js.map +1 -1
  307. package/fesm2015/taiga-ui-kit-components-select.js +1 -11
  308. package/fesm2015/taiga-ui-kit-components-select.js.map +1 -1
  309. package/fesm2015/taiga-ui-kit-components-slider.js +1 -10
  310. package/fesm2015/taiga-ui-kit-components-slider.js.map +1 -1
  311. package/fesm2015/taiga-ui-kit-components-stepper.js +2 -11
  312. package/fesm2015/taiga-ui-kit-components-stepper.js.map +1 -1
  313. package/fesm2015/taiga-ui-kit-components-tabs.js +2 -23
  314. package/fesm2015/taiga-ui-kit-components-tabs.js.map +1 -1
  315. package/fesm2015/taiga-ui-kit-components-tag.js +2 -36
  316. package/fesm2015/taiga-ui-kit-components-tag.js.map +1 -1
  317. package/fesm2015/taiga-ui-kit-components-text-area.js +1 -11
  318. package/fesm2015/taiga-ui-kit-components-text-area.js.map +1 -1
  319. package/fesm2015/taiga-ui-kit-components-tiles.js +1 -14
  320. package/fesm2015/taiga-ui-kit-components-tiles.js.map +1 -1
  321. package/fesm2015/taiga-ui-kit-components-toggle.js +1 -14
  322. package/fesm2015/taiga-ui-kit-components-toggle.js.map +1 -1
  323. package/fesm2015/taiga-ui-kit-components-tree.js +1 -14
  324. package/fesm2015/taiga-ui-kit-components-tree.js.map +1 -1
  325. package/fesm2015/taiga-ui-kit-directives-highlight.js +1 -5
  326. package/fesm2015/taiga-ui-kit-directives-highlight.js.map +1 -1
  327. package/fesm2015/taiga-ui-kit-directives-mask.js +5 -5
  328. package/fesm2015/taiga-ui-kit-directives-mask.js.map +1 -1
  329. package/fesm2015/taiga-ui-kit-directives-project-class.js +0 -5
  330. package/fesm2015/taiga-ui-kit-directives-project-class.js.map +1 -1
  331. package/fesm2015/taiga-ui-kit-internal-primitive-calendar-range.js +1 -23
  332. package/fesm2015/taiga-ui-kit-internal-primitive-calendar-range.js.map +1 -1
  333. package/package.json +11 -11
@@ -3,7 +3,7 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostListener, In
3
3
  import { NgControl } from '@angular/forms';
4
4
  import { MASKITO_DEFAULT_OPTIONS } from '@maskito/core';
5
5
  import { maskitoDateRangeOptionsGenerator } from '@maskito/kit';
6
- import { AbstractTuiNullableControl, ALWAYS_FALSE_HANDLER, changeDateSeparator, DATE_FILLER_LENGTH, DATE_RANGE_FILLER_LENGTH, RANGE_SEPARATOR_CHAR, TUI_DATE_FORMAT, TUI_DATE_SEPARATOR, TUI_IS_MOBILE, tuiAsControl, tuiAsFocusableItemAccessor, TuiDayRange, tuiDefaultProp, tuiIsPresent, TuiMonth, tuiNullableSame, tuiPure, } from '@taiga-ui/cdk';
6
+ import { AbstractTuiNullableControl, ALWAYS_FALSE_HANDLER, changeDateSeparator, DATE_FILLER_LENGTH, DATE_RANGE_FILLER_LENGTH, RANGE_SEPARATOR_CHAR, TUI_DATE_FORMAT, TUI_DATE_SEPARATOR, TUI_IS_MOBILE, tuiAsControl, tuiAsFocusableItemAccessor, TuiDayRange, tuiIsPresent, TuiMonth, tuiNullableSame, tuiPure, } from '@taiga-ui/cdk';
7
7
  import { TUI_DEFAULT_MARKER_HANDLER, TUI_TEXTFIELD_SIZE, TuiDialogService, TuiPrimitiveTextfieldComponent, } from '@taiga-ui/core';
8
8
  import { MAX_DAY_RANGE_LENGTH_MAPPER, TUI_DATE_MODE_MASKITO_ADAPTER, } from '@taiga-ui/kit/constants';
9
9
  import { TUI_DATE_RANGE_VALUE_TRANSFORMER, TUI_DATE_TEXTS, TUI_INPUT_DATE_OPTIONS, TUI_MOBILE_CALENDAR, tuiDateStreamWithTransformer, } from '@taiga-ui/kit/tokens';
@@ -223,30 +223,6 @@ TuiInputDateRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
223
223
  tuiAsControl(TuiInputDateRangeComponent),
224
224
  tuiDateStreamWithTransformer(TUI_DATE_RANGE_VALUE_TRANSFORMER),
225
225
  ], viewQueries: [{ propertyName: "textfield", first: true, predicate: TuiPrimitiveTextfieldComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<tui-hosted-dropdown\n class=\"t-hosted\"\n [canOpen]=\"canOpen\"\n [content]=\"dropdown\"\n [open]=\"open && canOpen\"\n (openChange)=\"onOpenChange($event)\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-primitive-textfield\n *tuiLet=\"dateFiller$ | async as dateFiller\"\n automation-id=\"tui-input-date-range__textfield\"\n tuiValueAccessor\n class=\"t-textfield\"\n [tuiTextfieldIcon]=\"calendarIcon && iconContent\"\n [tuiTextfieldFiller]=\"getComputedRangeFiller(dateFiller || '')\"\n [pseudoFocus]=\"innerPseudoFocused\"\n [pseudoHover]=\"pseudoHover\"\n [pseudoActive]=\"pseudoActive\"\n [invalid]=\"computedInvalid\"\n [nativeId]=\"nativeId\"\n [readOnly]=\"readOnly\"\n [disabled]=\"computedDisabled\"\n [maskito]=\"computedMask\"\n [value]=\"computedValue\"\n (valueChange)=\"onValueChange($event)\"\n >\n <ng-content></ng-content>\n <ng-content\n select=\"input\"\n ngProjectAs=\"input\"\n ></ng-content>\n\n <div\n *ngIf=\"showValueTemplate\"\n ngProjectAs=\"tuiContent\"\n class=\"t-value\"\n >\n <ng-container *polymorpheusOutlet=\"computedContent as text; context: {$implicit: value}\">\n {{ text }}\n </ng-container>\n </div>\n </tui-primitive-textfield>\n\n <ng-template #iconContent>\n <tui-svg\n *polymorpheusOutlet=\"calendarIcon as src; context: {$implicit: size}\"\n tuiWrapper\n appearance=\"icon\"\n automation-id=\"tui-input-date-range__icon\"\n [class.t-icon]=\"!computedDisabled\"\n [src]=\"src\"\n (click)=\"onIconClick()\"\n ></tui-svg>\n </ng-template>\n\n <ng-template #dropdown>\n <tui-calendar-range\n [defaultViewedMonth]=\"defaultViewedMonth\"\n [disabledItemHandler]=\"disabledItemHandler\"\n [items]=\"items\"\n [min]=\"min\"\n [max]=\"max\"\n [markerHandler]=\"markerHandler\"\n [minLength]=\"minLength\"\n [maxLength]=\"maxLength\"\n [value]=\"value\"\n (valueChange)=\"onRangeChange($event)\"\n ></tui-calendar-range>\n </ng-template>\n</tui-hosted-dropdown>\n", styles: [":host{display:block;border-radius:var(--tui-radius-m);text-align:left}:host._disabled{pointer-events:none}.t-hosted{display:block;border-radius:inherit}.t-textfield{border-radius:inherit;text-align:inherit}.t-icon{pointer-events:auto}.t-value{display:flex;width:100%;align-items:center}\n"], components: [{ type: i1.TuiHostedDropdownComponent, selector: "tui-hosted-dropdown", inputs: ["content", "sided", "canOpen", "open"], outputs: ["openChange", "focusedChange"] }, { type: i1.TuiPrimitiveTextfieldComponent, selector: "tui-primitive-textfield", inputs: ["editable", "filler", "iconCleaner", "readOnly", "invalid", "disabled", "prefix", "postfix", "value"], outputs: ["valueChange"] }, { type: i1.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { type: i2.TuiCalendarRangeComponent, selector: "tui-calendar-range", inputs: ["defaultViewedMonth", "disabledItemHandler", "markerHandler", "items", "min", "max", "minLength", "maxLength", "value"], outputs: ["valueChange"] }], directives: [{ type: i3.TuiActiveZoneDirective, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { type: i3.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { type: i1.TuiPrimitiveTextfieldDirective, selector: "tui-primitive-textfield" }, { type: i4.TuiValueAccessorDirective, selector: "[tuiValueAccessor]" }, { type: i1.TuiTextfieldIconDirective, selector: "[tuiTextfieldIcon]", inputs: ["tuiTextfieldIcon"] }, { type: i1.TuiTextfieldFillerDirective, selector: "[tuiTextfieldFiller]", inputs: ["tuiTextfieldFiller"] }, { type: i5.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { type: i1.TuiWrapperDirective, selector: "[tuiWrapper]", inputs: ["disabled", "readOnly", "hover", "active", "focus", "invalid", "appearance"] }], pipes: { "async": i6.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
226
- __decorate([
227
- tuiDefaultProp()
228
- ], TuiInputDateRangeComponent.prototype, "disabledItemHandler", void 0);
229
- __decorate([
230
- tuiDefaultProp()
231
- ], TuiInputDateRangeComponent.prototype, "markerHandler", void 0);
232
- __decorate([
233
- tuiDefaultProp()
234
- ], TuiInputDateRangeComponent.prototype, "defaultViewedMonth", void 0);
235
- __decorate([
236
- tuiDefaultProp()
237
- ], TuiInputDateRangeComponent.prototype, "items", void 0);
238
- __decorate([
239
- tuiDefaultProp()
240
- ], TuiInputDateRangeComponent.prototype, "min", void 0);
241
- __decorate([
242
- tuiDefaultProp()
243
- ], TuiInputDateRangeComponent.prototype, "max", void 0);
244
- __decorate([
245
- tuiDefaultProp()
246
- ], TuiInputDateRangeComponent.prototype, "minLength", void 0);
247
- __decorate([
248
- tuiDefaultProp()
249
- ], TuiInputDateRangeComponent.prototype, "maxLength", void 0);
250
226
  __decorate([
251
227
  tuiPure
252
228
  ], TuiInputDateRangeComponent.prototype, "calculateMask", null);
@@ -330,4 +306,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
330
306
  type: HostListener,
331
307
  args: ['click']
332
308
  }], calculateMask: [] } });
333
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC1kYXRlLXJhbmdlL2lucHV0LWRhdGUtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZGF0ZS1yYW5nZS9pbnB1dC1kYXRlLXJhbmdlLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsUUFBUSxFQUNSLElBQUksRUFFSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyx1QkFBdUIsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzlELE9BQU8sRUFDSCwwQkFBMEIsRUFFMUIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixZQUFZLEVBQ1osMEJBQTBCLEVBSzFCLFdBQVcsRUFDWCxjQUFjLEVBRWQsWUFBWSxFQUVaLFFBQVEsRUFDUixlQUFlLEVBQ2YsT0FBTyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCwwQkFBMEIsRUFDMUIsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUVoQiw4QkFBOEIsR0FLakMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0gsMkJBQTJCLEVBQzNCLDZCQUE2QixHQUNoQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFDSCxnQ0FBZ0MsRUFDaEMsY0FBYyxFQUNkLHNCQUFzQixFQUN0QixtQkFBbUIsRUFDbkIsNEJBQTRCLEdBRS9CLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFDLHFCQUFxQixFQUFzQixNQUFNLDBCQUEwQixDQUFDO0FBRXBGLE9BQU8sRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBYTlDLE1BQU0sT0FBTywwQkFDVCxTQUFRLDBCQUF1QztJQStDL0MsWUFJSSxPQUF5QixFQUNFLEdBQXNCLEVBQ2QsUUFBa0IsRUFDYixRQUFpQixFQUNkLE9BQXlCLEVBR25ELGNBQWdELEVBRWhELGFBQXdDLEVBQ3ZCLFVBQXVCLEVBQ3BCLGFBQXFCLEVBRWpELFVBQW1ELEVBRzFDLGdCQUF3RSxFQUV6RSxPQUE0QjtRQUU3QyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBbEJILGFBQVEsR0FBUixRQUFRLENBQVU7UUFDYixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2QsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFHbkQsbUJBQWMsR0FBZCxjQUFjLENBQWtDO1FBRWhELGtCQUFhLEdBQWIsYUFBYSxDQUEyQjtRQUN2QixlQUFVLEdBQVYsVUFBVSxDQUFhO1FBQ3BCLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBRWpELGVBQVUsR0FBVixVQUFVLENBQXlDO1FBRzFDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBd0Q7UUFFekUsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUE3RGpELHdCQUFtQixHQUE4QixvQkFBb0IsQ0FBQztRQUl0RSxrQkFBYSxHQUFxQiwwQkFBMEIsQ0FBQztRQUk3RCx1QkFBa0IsR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7UUFJN0MsVUFBSyxHQUFpQyxFQUFFLENBQUM7UUFJekMsUUFBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBSXZCLFFBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUl2QixjQUFTLEdBQXNCLElBQUksQ0FBQztRQUlwQyxjQUFTLEdBQXNCLElBQUksQ0FBQztRQUVwQyxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBRUosb0JBQWUsR0FBOEIsMkJBQTJCLENBQUM7UUFDekUsZ0JBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDdkMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQ1osbUJBQW1CLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQ3RFLENBQ0osQ0FBQztJQTJCRixDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDekUsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQUksY0FBYztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7O1FBQ25CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLENBQUMsQ0FBQyxDQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxzQkFBc0IsMENBQUUsV0FBVyxLQUFJLEVBQUU7WUFDM0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNiLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxZQUFZO1lBQ3BCLENBQUMsQ0FBQyx1QkFBdUI7WUFDekIsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQ2QsSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFJLENBQUMsYUFBYSxFQUNsQixJQUFJLENBQUMsR0FBRyxFQUNSLElBQUksQ0FBQyxHQUFHLEVBQ1IsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsU0FBUyxDQUNqQixDQUFDO0lBQ1osQ0FBQztJQUVELElBQUksWUFBWTtRQUNaLE9BQU8sQ0FDSCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNuQixlQUFlLENBQ1gsSUFBSSxDQUFDLEtBQUssRUFDVixJQUFJLENBQUMsS0FBSyxFQUNWLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ0wsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDdEQsQ0FDSixJQUFJLElBQUksQ0FDWixDQUFDO0lBQ04sQ0FBQztJQUVELElBQUksYUFBYTtRQUNiLE1BQU0sRUFBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBQyxHQUFHLElBQUksQ0FBQztRQUVoRCxJQUFJLFlBQVksRUFBRTtZQUNkLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQy9CO1FBRUQsT0FBTyxLQUFLO1lBQ1IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDakUsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDakIsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxlQUFlOztRQUNmLE9BQU8sQ0FBQSxNQUFBLElBQUksQ0FBQyxZQUFZLDBDQUFFLE9BQU8sS0FBSSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNsQixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssS0FBSyxFQUFFO1lBQzVCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDbkMsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2hGLENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDOUIsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDbkMsQ0FBQztJQUdELE9BQU87UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDakI7SUFDTCxDQUFDO0lBRUQsc0JBQXNCLENBQUMsVUFBa0I7UUFDckMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUM5QyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsT0FBTzthQUNQLElBQUksQ0FDRCxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUM3RDtZQUNJLElBQUksRUFBRSxZQUFZO1lBQ2xCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLElBQUksRUFBRTtnQkFDRixNQUFNLEVBQUUsS0FBSztnQkFDYixHQUFHLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FDckIsSUFBSSxDQUFDLEdBQUcsRUFDUixJQUFJLENBQUMsS0FBSyxFQUNWLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUNQO2dCQUNELEdBQUcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUNyQixJQUFJLENBQUMsR0FBRyxFQUNSLElBQUksQ0FBQyxLQUFLLEVBQ1YsSUFBSSxDQUFDLFNBQVMsRUFDZCxLQUFLLENBQ1I7Z0JBQ0QsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjthQUNoRDtTQUNKLENBQ0o7YUFDQSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBYTtRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWE7UUFDdkIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO1NBQzNEO1FBRUQsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0I7UUFFRCxJQUFJLENBQUMsS0FBSztZQUNOLEtBQUssQ0FBQyxNQUFNLEtBQUssd0JBQXdCO2dCQUNyQyxDQUFDLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDcEQsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQXlCO1FBQ25DLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNkLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1IsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7U0FDekI7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQWdDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNkLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXJELE9BQU87U0FDVjtRQUVELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUU7WUFDNUIsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFnQjtRQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTVCLElBQ0ksQ0FBQyxPQUFPO1lBQ1IsQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUNsQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLGtCQUFrQjtnQkFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNO29CQUNuQixrQkFBa0IsR0FBRyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsRUFDM0Q7WUFDRSxJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDOUU7SUFDTCxDQUFDO0lBRVEsVUFBVSxDQUFDLEtBQXlCO1FBQ3pDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRWtCLHdCQUF3QixDQUN2QyxRQUE0QixFQUM1QixRQUE0QjtRQUU1QixPQUFPLGVBQWUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFHTyxhQUFhLENBQ2pCLFVBQXVCLEVBQ3ZCLFNBQWlCLEVBQ2pCLEdBQVcsRUFDWCxHQUFXLEVBQ1gsU0FBNEIsRUFDNUIsU0FBNEI7UUFFNUIsT0FBTyxnQ0FBZ0MsQ0FBQztZQUNwQyxTQUFTO1lBQ1QsSUFBSSxFQUFFLDZCQUE2QixDQUFDLFVBQVUsQ0FBQztZQUMvQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGlCQUFpQixFQUFFO1lBQzVCLEdBQUcsRUFBRSxHQUFHLENBQUMsaUJBQWlCLEVBQUU7WUFDNUIsU0FBUyxFQUFFLFNBQVMsSUFBSSxFQUFFO1lBQzFCLFNBQVMsRUFBRSxTQUFTLElBQUksRUFBRTtTQUM3QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsSUFBWSxZQUFZO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFTyxNQUFNO1FBQ1YsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVPLFVBQVUsQ0FBQyxnQkFBeUIsS0FBSztRQUM3QyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUM3QixJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLEVBQUMsYUFBYSxFQUFDLENBQUMsQ0FBQztTQUN0RDtJQUNMLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxVQUFrQjtRQUN6QyxPQUFPLEdBQUcsVUFBVSxHQUFHLG9CQUFvQixHQUFHLFVBQVUsRUFBRSxDQUFDO0lBQy9ELENBQUM7O3dIQTNVUSwwQkFBMEIsa0JBbUR2QixTQUFTLHlDQUVULGlCQUFpQixhQUNqQixRQUFRLGFBQ1IsYUFBYSxhQUNiLGdCQUFnQixhQUVoQixtQkFBbUIsNkJBRW5CLGtCQUFrQixhQUVsQixlQUFlLGFBQ2Ysa0JBQWtCLGFBQ2xCLGNBQWMsYUFHZCxnQ0FBZ0MsNkJBRWhDLHNCQUFzQjs0R0FyRXpCLDBCQUEwQix3VEFOeEI7UUFDUCwwQkFBMEIsQ0FBQywwQkFBMEIsQ0FBQztRQUN0RCxZQUFZLENBQUMsMEJBQTBCLENBQUM7UUFDeEMsNEJBQTRCLENBQUMsZ0NBQWdDLENBQUM7S0FDakUscUVBTVUsOEJBQThCLHVFQ3JGN0MsaTNFQXNFQTtBRG9CSTtJQURDLGNBQWMsRUFBRTt1RUFDcUQ7QUFJdEU7SUFEQyxjQUFjLEVBQUU7aUVBQzRDO0FBSTdEO0lBREMsY0FBYyxFQUFFO3NFQUM0QjtBQUk3QztJQURDLGNBQWMsRUFBRTt5REFDd0I7QUFJekM7SUFEQyxjQUFjLEVBQUU7dURBQ007QUFJdkI7SUFEQyxjQUFjLEVBQUU7dURBQ007QUFJdkI7SUFEQyxjQUFjLEVBQUU7NkRBQ21CO0FBSXBDO0lBREMsY0FBYyxFQUFFOzZEQUNtQjtBQW9RcEM7SUFEQyxPQUFPOytEQWlCUDs0RkF6VFEsMEJBQTBCO2tCQVh0QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFdBQVcsRUFBRSxrQ0FBa0M7b0JBQy9DLFNBQVMsRUFBRSxDQUFDLCtCQUErQixDQUFDO29CQUM1QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNQLDBCQUEwQiw0QkFBNEI7d0JBQ3RELFlBQVksNEJBQTRCO3dCQUN4Qyw0QkFBNEIsQ0FBQyxnQ0FBZ0MsQ0FBQztxQkFDakU7aUJBQ0o7OzBCQWtEUSxRQUFROzswQkFDUixJQUFJOzswQkFDSixNQUFNOzJCQUFDLFNBQVM7OzBCQUVoQixNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQ3hCLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsTUFBTTsyQkFBQyxhQUFhOzswQkFDcEIsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUN2QixRQUFROzswQkFDUixNQUFNOzJCQUFDLG1CQUFtQjs7MEJBRTFCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFFekIsTUFBTTsyQkFBQyxlQUFlOzswQkFDdEIsTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUN6QixNQUFNOzJCQUFDLGNBQWM7OzBCQUVyQixRQUFROzswQkFDUixNQUFNOzJCQUFDLGdDQUFnQzs7MEJBRXZDLE1BQU07MkJBQUMsc0JBQXNCOzRDQWhFakIsU0FBUztzQkFEekIsU0FBUzt1QkFBQyw4QkFBOEI7Z0JBS3pDLG1CQUFtQjtzQkFGbEIsS0FBSztnQkFNTixhQUFhO3NCQUZaLEtBQUs7Z0JBTU4sa0JBQWtCO3NCQUZqQixLQUFLO2dCQU1OLEtBQUs7c0JBRkosS0FBSztnQkFNTixHQUFHO3NCQUZGLEtBQUs7Z0JBTU4sR0FBRztzQkFGRixLQUFLO2dCQU1OLFNBQVM7c0JBRlIsS0FBSztnQkFNTixTQUFTO3NCQUZSLEtBQUs7Z0JBOElOLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPO2dCQXlIYixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmLFxuICAgIFR5cGUsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01BU0tJVE9fREVGQVVMVF9PUFRJT05TLCBNYXNraXRvT3B0aW9uc30gZnJvbSAnQG1hc2tpdG8vY29yZSc7XG5pbXBvcnQge21hc2tpdG9EYXRlUmFuZ2VPcHRpb25zR2VuZXJhdG9yfSBmcm9tICdAbWFza2l0by9raXQnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbCxcbiAgICBBYnN0cmFjdFR1aVZhbHVlVHJhbnNmb3JtZXIsXG4gICAgQUxXQVlTX0ZBTFNFX0hBTkRMRVIsXG4gICAgY2hhbmdlRGF0ZVNlcGFyYXRvcixcbiAgICBEQVRFX0ZJTExFUl9MRU5HVEgsXG4gICAgREFURV9SQU5HRV9GSUxMRVJfTEVOR1RILFxuICAgIFJBTkdFX1NFUEFSQVRPUl9DSEFSLFxuICAgIFRVSV9EQVRFX0ZPUk1BVCxcbiAgICBUVUlfREFURV9TRVBBUkFUT1IsXG4gICAgVFVJX0lTX01PQklMRSxcbiAgICB0dWlBc0NvbnRyb2wsXG4gICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IsXG4gICAgVHVpQm9vbGVhbkhhbmRsZXIsXG4gICAgVHVpRGF0ZU1vZGUsXG4gICAgVHVpRGF5LFxuICAgIFR1aURheUxpa2UsXG4gICAgVHVpRGF5UmFuZ2UsXG4gICAgdHVpRGVmYXVsdFByb3AsXG4gICAgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yLFxuICAgIHR1aUlzUHJlc2VudCxcbiAgICBUdWlNYXBwZXIsXG4gICAgVHVpTW9udGgsXG4gICAgdHVpTnVsbGFibGVTYW1lLFxuICAgIHR1aVB1cmUsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBUVUlfREVGQVVMVF9NQVJLRVJfSEFORExFUixcbiAgICBUVUlfVEVYVEZJRUxEX1NJWkUsXG4gICAgVHVpRGlhbG9nU2VydmljZSxcbiAgICBUdWlNYXJrZXJIYW5kbGVyLFxuICAgIFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudCxcbiAgICBUdWlTaXplTCxcbiAgICBUdWlTaXplUyxcbiAgICBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxuICAgIFR1aVdpdGhPcHRpb25hbE1pbk1heCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtUdWlEYXlSYW5nZVBlcmlvZH0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jbGFzc2VzJztcbmltcG9ydCB7XG4gICAgTUFYX0RBWV9SQU5HRV9MRU5HVEhfTUFQUEVSLFxuICAgIFRVSV9EQVRFX01PREVfTUFTS0lUT19BREFQVEVSLFxufSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICAgIFRVSV9EQVRFX1JBTkdFX1ZBTFVFX1RSQU5TRk9STUVSLFxuICAgIFRVSV9EQVRFX1RFWFRTLFxuICAgIFRVSV9JTlBVVF9EQVRFX09QVElPTlMsXG4gICAgVFVJX01PQklMRV9DQUxFTkRBUixcbiAgICB0dWlEYXRlU3RyZWFtV2l0aFRyYW5zZm9ybWVyLFxuICAgIFR1aUlucHV0RGF0ZU9wdGlvbnMsXG59IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29tcG9uZW50LCBQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtZGF0ZS1yYW5nZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWRhdGUtcmFuZ2UudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtZGF0ZS1yYW5nZS5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yKFR1aUlucHV0RGF0ZVJhbmdlQ29tcG9uZW50KSxcbiAgICAgICAgdHVpQXNDb250cm9sKFR1aUlucHV0RGF0ZVJhbmdlQ29tcG9uZW50KSxcbiAgICAgICAgdHVpRGF0ZVN0cmVhbVdpdGhUcmFuc2Zvcm1lcihUVUlfREFURV9SQU5HRV9WQUxVRV9UUkFOU0ZPUk1FUiksXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXREYXRlUmFuZ2VDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0VHVpTnVsbGFibGVDb250cm9sPFR1aURheVJhbmdlPlxuICAgIGltcGxlbWVudHMgVHVpV2l0aE9wdGlvbmFsTWluTWF4PFR1aURheT4sIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3Nvclxue1xuICAgIEBWaWV3Q2hpbGQoVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGV4dGZpZWxkPzogVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50O1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT4gPSBBTFdBWVNfRkFMU0VfSEFORExFUjtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBtYXJrZXJIYW5kbGVyOiBUdWlNYXJrZXJIYW5kbGVyID0gVFVJX0RFRkFVTFRfTUFSS0VSX0hBTkRMRVI7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgZGVmYXVsdFZpZXdlZE1vbnRoID0gVHVpTW9udGguY3VycmVudExvY2FsKCk7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgaXRlbXM6IHJlYWRvbmx5IFR1aURheVJhbmdlUGVyaW9kW10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBtaW4gPSB0aGlzLm9wdGlvbnMubWluO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1heCA9IHRoaXMub3B0aW9ucy5tYXg7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgbWluTGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgbWF4TGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBvcGVuID0gZmFsc2U7XG5cbiAgICByZWFkb25seSBtYXhMZW5ndGhNYXBwZXI6IFR1aU1hcHBlcjxUdWlEYXksIFR1aURheT4gPSBNQVhfREFZX1JBTkdFX0xFTkdUSF9NQVBQRVI7XG4gICAgcmVhZG9ubHkgZGF0ZUZpbGxlciQgPSB0aGlzLmRhdGVUZXh0cyQucGlwZShcbiAgICAgICAgbWFwKGRhdGVUZXh0cyA9PlxuICAgICAgICAgICAgY2hhbmdlRGF0ZVNlcGFyYXRvcihkYXRlVGV4dHNbdGhpcy5kYXRlRm9ybWF0XSwgdGhpcy5kYXRlU2VwYXJhdG9yKSxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgQEluamVjdChOZ0NvbnRyb2wpXG4gICAgICAgIGNvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoSW5qZWN0b3IpIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBASW5qZWN0KFRVSV9JU19NT0JJTEUpIHByaXZhdGUgcmVhZG9ubHkgaXNNb2JpbGU6IGJvb2xlYW4sXG4gICAgICAgIEBJbmplY3QoVHVpRGlhbG9nU2VydmljZSkgcHJpdmF0ZSByZWFkb25seSBkaWFsb2dzOiBUdWlEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFRVSV9NT0JJTEVfQ0FMRU5EQVIpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbW9iaWxlQ2FsZW5kYXI6IFR5cGU8UmVjb3JkPHN0cmluZywgYW55Pj4gfCBudWxsLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfU0laRSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGRTaXplOiBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxuICAgICAgICBASW5qZWN0KFRVSV9EQVRFX0ZPUk1BVCkgcmVhZG9ubHkgZGF0ZUZvcm1hdDogVHVpRGF0ZU1vZGUsXG4gICAgICAgIEBJbmplY3QoVFVJX0RBVEVfU0VQQVJBVE9SKSByZWFkb25seSBkYXRlU2VwYXJhdG9yOiBzdHJpbmcsXG4gICAgICAgIEBJbmplY3QoVFVJX0RBVEVfVEVYVFMpXG4gICAgICAgIHJlYWRvbmx5IGRhdGVUZXh0cyQ6IE9ic2VydmFibGU8UmVjb3JkPFR1aURhdGVNb2RlLCBzdHJpbmc+PixcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChUVUlfREFURV9SQU5HRV9WQUxVRV9UUkFOU0ZPUk1FUilcbiAgICAgICAgb3ZlcnJpZGUgcmVhZG9ubHkgdmFsdWVUcmFuc2Zvcm1lcjogQWJzdHJhY3RUdWlWYWx1ZVRyYW5zZm9ybWVyPFR1aURheVJhbmdlIHwgbnVsbD4gfCBudWxsLFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9EQVRFX09QVElPTlMpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogVHVpSW5wdXREYXRlT3B0aW9ucyxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2RyLCB2YWx1ZVRyYW5zZm9ybWVyKTtcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRm9jdXNhYmxlRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRmaWVsZCA/IHRoaXMudGV4dGZpZWxkLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgOiBudWxsO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnRleHRmaWVsZCAmJiB0aGlzLnRleHRmaWVsZC5mb2N1c2VkO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZE1vYmlsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgJiYgISF0aGlzLm1vYmlsZUNhbGVuZGFyO1xuICAgIH1cblxuICAgIGdldCBjYWxlbmRhckljb24oKTogVHVpSW5wdXREYXRlT3B0aW9uc1snaWNvbiddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pY29uO1xuICAgIH1cblxuICAgIGdldCBjYW5PcGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcmFjdGl2ZSAmJiAhdGhpcy5jb21wdXRlZE1vYmlsZTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRFeGFtcGxlVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5sZW5ndGhcbiAgICAgICAgICAgID8gdGhpcy50ZXh0ZmllbGQ/Lm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQ/LnBsYWNlaG9sZGVyIHx8ICcnXG4gICAgICAgICAgICA6ICcnO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZE1hc2soKTogTWFza2l0b09wdGlvbnMge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVQZXJpb2RcbiAgICAgICAgICAgID8gTUFTS0lUT19ERUZBVUxUX09QVElPTlNcbiAgICAgICAgICAgIDogdGhpcy5jYWxjdWxhdGVNYXNrKFxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU2VwYXJhdG9yLFxuICAgICAgICAgICAgICAgICAgdGhpcy5taW4sXG4gICAgICAgICAgICAgICAgICB0aGlzLm1heCxcbiAgICAgICAgICAgICAgICAgIHRoaXMubWluTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgdGhpcy5tYXhMZW5ndGgsXG4gICAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGFjdGl2ZVBlcmlvZCgpOiBUdWlEYXlSYW5nZVBlcmlvZCB8IG51bGwge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5pdGVtcy5maW5kKGl0ZW0gPT5cbiAgICAgICAgICAgICAgICB0dWlOdWxsYWJsZVNhbWUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucmFuZ2UsXG4gICAgICAgICAgICAgICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgYS5mcm9tLmRheVNhbWUoYi5mcm9tLmRheUxpbWl0KHRoaXMubWluLCB0aGlzLm1heCkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBhLnRvLmRheVNhbWUoYi50by5kYXlMaW1pdCh0aGlzLm1pbiwgdGhpcy5tYXgpKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSB8fCBudWxsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qge3ZhbHVlLCBuYXRpdmVWYWx1ZSwgYWN0aXZlUGVyaW9kfSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKGFjdGl2ZVBlcmlvZCkge1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhhY3RpdmVQZXJpb2QpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICA/IHZhbHVlLmdldEZvcm1hdHRlZERheVJhbmdlKHRoaXMuZGF0ZUZvcm1hdCwgdGhpcy5kYXRlU2VwYXJhdG9yKVxuICAgICAgICAgICAgOiBuYXRpdmVWYWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgc2hvd1ZhbHVlVGVtcGxhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0dWlJc1ByZXNlbnQodGhpcy52YWx1ZSkgJiYgIXRoaXMuZm9jdXNlZDtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRDb250ZW50KCk6IFBvbHltb3JwaGV1c0NvbnRlbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVQZXJpb2Q/LmNvbnRlbnQgfHwgdGhpcy5jb21wdXRlZFZhbHVlO1xuICAgIH1cblxuICAgIGdldCBpbm5lclBzZXVkb0ZvY3VzZWQoKTogYm9vbGVhbiB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5wc2V1ZG9Gb2N1cyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wZW4gfHwgdGhpcy5jb21wdXRlZEZvY3VzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZVZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgOiAnJztcbiAgICB9XG5cbiAgICBzZXQgbmF0aXZlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAoIXRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHNpemUoKTogVHVpU2l6ZUwgfCBUdWlTaXplUyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRmaWVsZFNpemUuc2l6ZTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0Q29tcHV0ZWRSYW5nZUZpbGxlcihkYXRlRmlsbGVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVQZXJpb2QgPyAnJyA6IHRoaXMuZ2V0RGF0ZVJhbmdlRmlsbGVyKGRhdGVGaWxsZXIpO1xuICAgIH1cblxuICAgIG9uSWNvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuY29tcHV0ZWRNb2JpbGUgfHwgIXRoaXMubW9iaWxlQ2FsZW5kYXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlhbG9nc1xuICAgICAgICAgICAgLm9wZW48VHVpRGF5UmFuZ2U+KFxuICAgICAgICAgICAgICAgIG5ldyBQb2x5bW9ycGhldXNDb21wb25lbnQodGhpcy5tb2JpbGVDYWxlbmRhciwgdGhpcy5pbmplY3RvciksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzaXplOiAnZnVsbHNjcmVlbicsXG4gICAgICAgICAgICAgICAgICAgIGNsb3NlYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW46IHRoaXMubWF4TGVuZ3RoTWFwcGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWluLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXhMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMubWF4TGVuZ3RoTWFwcGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWF4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXhMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRJdGVtSGFuZGxlcjogdGhpcy5kaXNhYmxlZEl0ZW1IYW5kbGVyLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbk9wZW5DaGFuZ2Uob3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBvcGVuO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5vbk9wZW5DaGFuZ2UodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlID1cbiAgICAgICAgICAgIHZhbHVlLmxlbmd0aCA9PT0gREFURV9SQU5HRV9GSUxMRVJfTEVOR1RIXG4gICAgICAgICAgICAgICAgPyBUdWlEYXlSYW5nZS5ub3JtYWxpemVQYXJzZSh2YWx1ZSwgdGhpcy5kYXRlRm9ybWF0KVxuICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBvblJhbmdlQ2hhbmdlKHJhbmdlOiBUdWlEYXlSYW5nZSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG5cbiAgICAgICAgaWYgKCFyYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHJhbmdlO1xuICAgIH1cblxuICAgIG9uSXRlbVNlbGVjdChpdGVtOiBUdWlEYXlSYW5nZVBlcmlvZCB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcblxuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gaXRlbS5yYW5nZS5kYXlMaW1pdCh0aGlzLm1pbiwgdGhpcy5tYXgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY3RpdmVQZXJpb2QgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgb25BY3RpdmVab25lKGZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFmb2N1c2VkICYmXG4gICAgICAgICAgICAhdGhpcy5pdGVtU2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICh0aGlzLm5hdGl2ZVZhbHVlLmxlbmd0aCA9PT0gREFURV9GSUxMRVJfTEVOR1RIIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZS5sZW5ndGggPT09XG4gICAgICAgICAgICAgICAgICAgIERBVEVfRklMTEVSX0xFTkdUSCArIFJBTkdFX1NFUEFSQVRPUl9DSEFSLmxlbmd0aClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gVHVpRGF5UmFuZ2Uubm9ybWFsaXplUGFyc2UodGhpcy5uYXRpdmVWYWx1ZSwgdGhpcy5kYXRlRm9ybWF0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IHZhbHVlID8gdGhpcy5jb21wdXRlZFZhbHVlIDogJyc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHZhbHVlSWRlbnRpY2FsQ29tcGFyYXRvcihcbiAgICAgICAgb2xkVmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCxcbiAgICAgICAgbmV3VmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCxcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR1aU51bGxhYmxlU2FtZShvbGRWYWx1ZSwgbmV3VmFsdWUsIChhLCBiKSA9PiBhLmRheVNhbWUoYikpO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVNYXNrKFxuICAgICAgICBkYXRlRm9ybWF0OiBUdWlEYXRlTW9kZSxcbiAgICAgICAgc2VwYXJhdG9yOiBzdHJpbmcsXG4gICAgICAgIG1pbjogVHVpRGF5LFxuICAgICAgICBtYXg6IFR1aURheSxcbiAgICAgICAgbWluTGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCxcbiAgICAgICAgbWF4TGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCxcbiAgICApOiBNYXNraXRvT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiBtYXNraXRvRGF0ZVJhbmdlT3B0aW9uc0dlbmVyYXRvcih7XG4gICAgICAgICAgICBzZXBhcmF0b3IsXG4gICAgICAgICAgICBtb2RlOiBUVUlfREFURV9NT0RFX01BU0tJVE9fQURBUFRFUltkYXRlRm9ybWF0XSxcbiAgICAgICAgICAgIG1pbjogbWluLnRvTG9jYWxOYXRpdmVEYXRlKCksXG4gICAgICAgICAgICBtYXg6IG1heC50b0xvY2FsTmF0aXZlRGF0ZSgpLFxuICAgICAgICAgICAgbWluTGVuZ3RoOiBtaW5MZW5ndGggfHwge30sXG4gICAgICAgICAgICBtYXhMZW5ndGg6IG1heExlbmd0aCB8fCB7fSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXRlbVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBTdHJpbmcoaXRlbSkgPT09IHRoaXMubmF0aXZlVmFsdWUpICE9PSAtMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzSW5wdXQocHJldmVudFNjcm9sbDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudC5mb2N1cyh7cHJldmVudFNjcm9sbH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREYXRlUmFuZ2VGaWxsZXIoZGF0ZUZpbGxlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2RhdGVGaWxsZXJ9JHtSQU5HRV9TRVBBUkFUT1JfQ0hBUn0ke2RhdGVGaWxsZXJ9YDtcbiAgICB9XG59XG4iLCI8dHVpLWhvc3RlZC1kcm9wZG93blxuICAgIGNsYXNzPVwidC1ob3N0ZWRcIlxuICAgIFtjYW5PcGVuXT1cImNhbk9wZW5cIlxuICAgIFtjb250ZW50XT1cImRyb3Bkb3duXCJcbiAgICBbb3Blbl09XCJvcGVuICYmIGNhbk9wZW5cIlxuICAgIChvcGVuQ2hhbmdlKT1cIm9uT3BlbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAodHVpQWN0aXZlWm9uZUNoYW5nZSk9XCJvbkFjdGl2ZVpvbmUoJGV2ZW50KVwiXG4+XG4gICAgPHR1aS1wcmltaXRpdmUtdGV4dGZpZWxkXG4gICAgICAgICp0dWlMZXQ9XCJkYXRlRmlsbGVyJCB8IGFzeW5jIGFzIGRhdGVGaWxsZXJcIlxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWRhdGUtcmFuZ2VfX3RleHRmaWVsZFwiXG4gICAgICAgIHR1aVZhbHVlQWNjZXNzb3JcbiAgICAgICAgY2xhc3M9XCJ0LXRleHRmaWVsZFwiXG4gICAgICAgIFt0dWlUZXh0ZmllbGRJY29uXT1cImNhbGVuZGFySWNvbiAmJiBpY29uQ29udGVudFwiXG4gICAgICAgIFt0dWlUZXh0ZmllbGRGaWxsZXJdPVwiZ2V0Q29tcHV0ZWRSYW5nZUZpbGxlcihkYXRlRmlsbGVyIHx8ICcnKVwiXG4gICAgICAgIFtwc2V1ZG9Gb2N1c109XCJpbm5lclBzZXVkb0ZvY3VzZWRcIlxuICAgICAgICBbcHNldWRvSG92ZXJdPVwicHNldWRvSG92ZXJcIlxuICAgICAgICBbcHNldWRvQWN0aXZlXT1cInBzZXVkb0FjdGl2ZVwiXG4gICAgICAgIFtpbnZhbGlkXT1cImNvbXB1dGVkSW52YWxpZFwiXG4gICAgICAgIFtuYXRpdmVJZF09XCJuYXRpdmVJZFwiXG4gICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgW21hc2tpdG9dPVwiY29tcHV0ZWRNYXNrXCJcbiAgICAgICAgW3ZhbHVlXT1cImNvbXB1dGVkVmFsdWVcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICAgIHNlbGVjdD1cImlucHV0XCJcbiAgICAgICAgICAgIG5nUHJvamVjdEFzPVwiaW5wdXRcIlxuICAgICAgICA+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1ZhbHVlVGVtcGxhdGVcIlxuICAgICAgICAgICAgbmdQcm9qZWN0QXM9XCJ0dWlDb250ZW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwidC12YWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cImNvbXB1dGVkQ29udGVudCBhcyB0ZXh0OyBjb250ZXh0OiB7JGltcGxpY2l0OiB2YWx1ZX1cIj5cbiAgICAgICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC90dWktcHJpbWl0aXZlLXRleHRmaWVsZD5cblxuICAgIDxuZy10ZW1wbGF0ZSAjaWNvbkNvbnRlbnQ+XG4gICAgICAgIDx0dWktc3ZnXG4gICAgICAgICAgICAqcG9seW1vcnBoZXVzT3V0bGV0PVwiY2FsZW5kYXJJY29uIGFzIHNyYzsgY29udGV4dDogeyRpbXBsaWNpdDogc2l6ZX1cIlxuICAgICAgICAgICAgdHVpV3JhcHBlclxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cImljb25cIlxuICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1kYXRlLXJhbmdlX19pY29uXCJcbiAgICAgICAgICAgIFtjbGFzcy50LWljb25dPVwiIWNvbXB1dGVkRGlzYWJsZWRcIlxuICAgICAgICAgICAgW3NyY109XCJzcmNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSWNvbkNsaWNrKClcIlxuICAgICAgICA+PC90dWktc3ZnPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duPlxuICAgICAgICA8dHVpLWNhbGVuZGFyLXJhbmdlXG4gICAgICAgICAgICBbZGVmYXVsdFZpZXdlZE1vbnRoXT1cImRlZmF1bHRWaWV3ZWRNb250aFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJkaXNhYmxlZEl0ZW1IYW5kbGVyXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJpdGVtc1wiXG4gICAgICAgICAgICBbbWluXT1cIm1pblwiXG4gICAgICAgICAgICBbbWF4XT1cIm1heFwiXG4gICAgICAgICAgICBbbWFya2VySGFuZGxlcl09XCJtYXJrZXJIYW5kbGVyXCJcbiAgICAgICAgICAgIFttaW5MZW5ndGhdPVwibWluTGVuZ3RoXCJcbiAgICAgICAgICAgIFttYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25SYW5nZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvdHVpLWNhbGVuZGFyLXJhbmdlPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L3R1aS1ob3N0ZWQtZHJvcGRvd24+XG4iXX0=
309
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC1kYXRlLXJhbmdlL2lucHV0LWRhdGUtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZGF0ZS1yYW5nZS9pbnB1dC1kYXRlLXJhbmdlLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsUUFBUSxFQUNSLElBQUksRUFFSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyx1QkFBdUIsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzlELE9BQU8sRUFDSCwwQkFBMEIsRUFFMUIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixZQUFZLEVBQ1osMEJBQTBCLEVBSzFCLFdBQVcsRUFFWCxZQUFZLEVBRVosUUFBUSxFQUNSLGVBQWUsRUFDZixPQUFPLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILDBCQUEwQixFQUMxQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBRWhCLDhCQUE4QixHQUtqQyxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDSCwyQkFBMkIsRUFDM0IsNkJBQTZCLEdBQ2hDLE1BQU0seUJBQXlC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O29CQUMvQyxTQUFTLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztvQkFDNUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFNBQVMsRUFBRTt3QkFDUCwwQkFBMEIsNEJBQTRCO3dCQUN0RCxZQUFZLDRCQUE0Qjt3QkFDeEMsNEJBQTRCLENBQUMsZ0NBQWdDLENBQUM7cUJBQ2pFO2lCQUNKOzswQkEwQ1EsUUFBUTs7MEJBQ1IsSUFBSTs7MEJBQ0osTUFBTTsyQkFBQyxTQUFTOzswQkFFaEIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLFFBQVE7OzBCQUNmLE1BQU07MkJBQUMsYUFBYTs7MEJBQ3BCLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDdkIsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUUxQixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBRXpCLE1BQU07MkJBQUMsZUFBZTs7MEJBQ3RCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFDekIsTUFBTTsyQkFBQyxjQUFjOzswQkFFckIsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxnQ0FBZ0M7OzBCQUV2QyxNQUFNOzJCQUFDLHNCQUFzQjs0Q0F4RGpCLFNBQVM7c0JBRHpCLFNBQVM7dUJBQUMsOEJBQThCO2dCQUl6QyxtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sR0FBRztzQkFERixLQUFLO2dCQUlOLEdBQUc7c0JBREYsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQTZJTixPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTztnQkF5SGIsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBUeXBlLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtNQVNLSVRPX0RFRkFVTFRfT1BUSU9OUywgTWFza2l0b09wdGlvbnN9IGZyb20gJ0BtYXNraXRvL2NvcmUnO1xuaW1wb3J0IHttYXNraXRvRGF0ZVJhbmdlT3B0aW9uc0dlbmVyYXRvcn0gZnJvbSAnQG1hc2tpdG8va2l0JztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2wsXG4gICAgQWJzdHJhY3RUdWlWYWx1ZVRyYW5zZm9ybWVyLFxuICAgIEFMV0FZU19GQUxTRV9IQU5ETEVSLFxuICAgIGNoYW5nZURhdGVTZXBhcmF0b3IsXG4gICAgREFURV9GSUxMRVJfTEVOR1RILFxuICAgIERBVEVfUkFOR0VfRklMTEVSX0xFTkdUSCxcbiAgICBSQU5HRV9TRVBBUkFUT1JfQ0hBUixcbiAgICBUVUlfREFURV9GT1JNQVQsXG4gICAgVFVJX0RBVEVfU0VQQVJBVE9SLFxuICAgIFRVSV9JU19NT0JJTEUsXG4gICAgdHVpQXNDb250cm9sLFxuICAgIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yLFxuICAgIFR1aUJvb2xlYW5IYW5kbGVyLFxuICAgIFR1aURhdGVNb2RlLFxuICAgIFR1aURheSxcbiAgICBUdWlEYXlMaWtlLFxuICAgIFR1aURheVJhbmdlLFxuICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvcixcbiAgICB0dWlJc1ByZXNlbnQsXG4gICAgVHVpTWFwcGVyLFxuICAgIFR1aU1vbnRoLFxuICAgIHR1aU51bGxhYmxlU2FtZSxcbiAgICB0dWlQdXJlLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7XG4gICAgVFVJX0RFRkFVTFRfTUFSS0VSX0hBTkRMRVIsXG4gICAgVFVJX1RFWFRGSUVMRF9TSVpFLFxuICAgIFR1aURpYWxvZ1NlcnZpY2UsXG4gICAgVHVpTWFya2VySGFuZGxlcixcbiAgICBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQsXG4gICAgVHVpU2l6ZUwsXG4gICAgVHVpU2l6ZVMsXG4gICAgVHVpVGV4dGZpZWxkU2l6ZURpcmVjdGl2ZSxcbiAgICBUdWlXaXRoT3B0aW9uYWxNaW5NYXgsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7VHVpRGF5UmFuZ2VQZXJpb2R9IGZyb20gJ0B0YWlnYS11aS9raXQvY2xhc3Nlcyc7XG5pbXBvcnQge1xuICAgIE1BWF9EQVlfUkFOR0VfTEVOR1RIX01BUFBFUixcbiAgICBUVUlfREFURV9NT0RFX01BU0tJVE9fQURBUFRFUixcbn0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgICBUVUlfREFURV9SQU5HRV9WQUxVRV9UUkFOU0ZPUk1FUixcbiAgICBUVUlfREFURV9URVhUUyxcbiAgICBUVUlfSU5QVVRfREFURV9PUFRJT05TLFxuICAgIFRVSV9NT0JJTEVfQ0FMRU5EQVIsXG4gICAgdHVpRGF0ZVN0cmVhbVdpdGhUcmFuc2Zvcm1lcixcbiAgICBUdWlJbnB1dERhdGVPcHRpb25zLFxufSBmcm9tICdAdGFpZ2EtdWkva2l0L3Rva2Vucyc7XG5pbXBvcnQge1BvbHltb3JwaGV1c0NvbXBvbmVudCwgUG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHVpLWlucHV0LWRhdGUtcmFuZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1kYXRlLXJhbmdlLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LWRhdGUtcmFuZ2Uuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcihUdWlJbnB1dERhdGVSYW5nZUNvbXBvbmVudCksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dERhdGVSYW5nZUNvbXBvbmVudCksXG4gICAgICAgIHR1aURhdGVTdHJlYW1XaXRoVHJhbnNmb3JtZXIoVFVJX0RBVEVfUkFOR0VfVkFMVUVfVFJBTlNGT1JNRVIpLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0RGF0ZVJhbmdlQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbDxUdWlEYXlSYW5nZT5cbiAgICBpbXBsZW1lbnRzIFR1aVdpdGhPcHRpb25hbE1pbk1heDxUdWlEYXk+LCBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3JcbntcbiAgICBAVmlld0NoaWxkKFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRmaWVsZD86IFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWRJdGVtSGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXI8VHVpRGF5PiA9IEFMV0FZU19GQUxTRV9IQU5ETEVSO1xuXG4gICAgQElucHV0KClcbiAgICBtYXJrZXJIYW5kbGVyOiBUdWlNYXJrZXJIYW5kbGVyID0gVFVJX0RFRkFVTFRfTUFSS0VSX0hBTkRMRVI7XG5cbiAgICBASW5wdXQoKVxuICAgIGRlZmF1bHRWaWV3ZWRNb250aCA9IFR1aU1vbnRoLmN1cnJlbnRMb2NhbCgpO1xuXG4gICAgQElucHV0KClcbiAgICBpdGVtczogcmVhZG9ubHkgVHVpRGF5UmFuZ2VQZXJpb2RbXSA9IFtdO1xuXG4gICAgQElucHV0KClcbiAgICBtaW4gPSB0aGlzLm9wdGlvbnMubWluO1xuXG4gICAgQElucHV0KClcbiAgICBtYXggPSB0aGlzLm9wdGlvbnMubWF4O1xuXG4gICAgQElucHV0KClcbiAgICBtaW5MZW5ndGg6IFR1aURheUxpa2UgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgbWF4TGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBvcGVuID0gZmFsc2U7XG5cbiAgICByZWFkb25seSBtYXhMZW5ndGhNYXBwZXI6IFR1aU1hcHBlcjxUdWlEYXksIFR1aURheT4gPSBNQVhfREFZX1JBTkdFX0xFTkdUSF9NQVBQRVI7XG4gICAgcmVhZG9ubHkgZGF0ZUZpbGxlciQgPSB0aGlzLmRhdGVUZXh0cyQucGlwZShcbiAgICAgICAgbWFwKGRhdGVUZXh0cyA9PlxuICAgICAgICAgICAgY2hhbmdlRGF0ZVNlcGFyYXRvcihkYXRlVGV4dHNbdGhpcy5kYXRlRm9ybWF0XSwgdGhpcy5kYXRlU2VwYXJhdG9yKSxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgQEluamVjdChOZ0NvbnRyb2wpXG4gICAgICAgIGNvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoSW5qZWN0b3IpIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBASW5qZWN0KFRVSV9JU19NT0JJTEUpIHByaXZhdGUgcmVhZG9ubHkgaXNNb2JpbGU6IGJvb2xlYW4sXG4gICAgICAgIEBJbmplY3QoVHVpRGlhbG9nU2VydmljZSkgcHJpdmF0ZSByZWFkb25seSBkaWFsb2dzOiBUdWlEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFRVSV9NT0JJTEVfQ0FMRU5EQVIpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbW9iaWxlQ2FsZW5kYXI6IFR5cGU8UmVjb3JkPHN0cmluZywgYW55Pj4gfCBudWxsLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfU0laRSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGRTaXplOiBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxuICAgICAgICBASW5qZWN0KFRVSV9EQVRFX0ZPUk1BVCkgcmVhZG9ubHkgZGF0ZUZvcm1hdDogVHVpRGF0ZU1vZGUsXG4gICAgICAgIEBJbmplY3QoVFVJX0RBVEVfU0VQQVJBVE9SKSByZWFkb25seSBkYXRlU2VwYXJhdG9yOiBzdHJpbmcsXG4gICAgICAgIEBJbmplY3QoVFVJX0RBVEVfVEVYVFMpXG4gICAgICAgIHJlYWRvbmx5IGRhdGVUZXh0cyQ6IE9ic2VydmFibGU8UmVjb3JkPFR1aURhdGVNb2RlLCBzdHJpbmc+PixcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChUVUlfREFURV9SQU5HRV9WQUxVRV9UUkFOU0ZPUk1FUilcbiAgICAgICAgb3ZlcnJpZGUgcmVhZG9ubHkgdmFsdWVUcmFuc2Zvcm1lcjogQWJzdHJhY3RUdWlWYWx1ZVRyYW5zZm9ybWVyPFR1aURheVJhbmdlIHwgbnVsbD4gfCBudWxsLFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9EQVRFX09QVElPTlMpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogVHVpSW5wdXREYXRlT3B0aW9ucyxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2RyLCB2YWx1ZVRyYW5zZm9ybWVyKTtcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRm9jdXNhYmxlRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRmaWVsZCA/IHRoaXMudGV4dGZpZWxkLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgOiBudWxsO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnRleHRmaWVsZCAmJiB0aGlzLnRleHRmaWVsZC5mb2N1c2VkO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZE1vYmlsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgJiYgISF0aGlzLm1vYmlsZUNhbGVuZGFyO1xuICAgIH1cblxuICAgIGdldCBjYWxlbmRhckljb24oKTogVHVpSW5wdXREYXRlT3B0aW9uc1snaWNvbiddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pY29uO1xuICAgIH1cblxuICAgIGdldCBjYW5PcGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcmFjdGl2ZSAmJiAhdGhpcy5jb21wdXRlZE1vYmlsZTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRFeGFtcGxlVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5sZW5ndGhcbiAgICAgICAgICAgID8gdGhpcy50ZXh0ZmllbGQ/Lm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQ/LnBsYWNlaG9sZGVyIHx8ICcnXG4gICAgICAgICAgICA6ICcnO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZE1hc2soKTogTWFza2l0b09wdGlvbnMge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVQZXJpb2RcbiAgICAgICAgICAgID8gTUFTS0lUT19ERUZBVUxUX09QVElPTlNcbiAgICAgICAgICAgIDogdGhpcy5jYWxjdWxhdGVNYXNrKFxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU2VwYXJhdG9yLFxuICAgICAgICAgICAgICAgICAgdGhpcy5taW4sXG4gICAgICAgICAgICAgICAgICB0aGlzLm1heCxcbiAgICAgICAgICAgICAgICAgIHRoaXMubWluTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgdGhpcy5tYXhMZW5ndGgsXG4gICAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGFjdGl2ZVBlcmlvZCgpOiBUdWlEYXlSYW5nZVBlcmlvZCB8IG51bGwge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5pdGVtcy5maW5kKGl0ZW0gPT5cbiAgICAgICAgICAgICAgICB0dWlOdWxsYWJsZVNhbWUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucmFuZ2UsXG4gICAgICAgICAgICAgICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgYS5mcm9tLmRheVNhbWUoYi5mcm9tLmRheUxpbWl0KHRoaXMubWluLCB0aGlzLm1heCkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBhLnRvLmRheVNhbWUoYi50by5kYXlMaW1pdCh0aGlzLm1pbiwgdGhpcy5tYXgpKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSB8fCBudWxsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qge3ZhbHVlLCBuYXRpdmVWYWx1ZSwgYWN0aXZlUGVyaW9kfSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKGFjdGl2ZVBlcmlvZCkge1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhhY3RpdmVQZXJpb2QpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICA/IHZhbHVlLmdldEZvcm1hdHRlZERheVJhbmdlKHRoaXMuZGF0ZUZvcm1hdCwgdGhpcy5kYXRlU2VwYXJhdG9yKVxuICAgICAgICAgICAgOiBuYXRpdmVWYWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgc2hvd1ZhbHVlVGVtcGxhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0dWlJc1ByZXNlbnQodGhpcy52YWx1ZSkgJiYgIXRoaXMuZm9jdXNlZDtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRDb250ZW50KCk6IFBvbHltb3JwaGV1c0NvbnRlbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVQZXJpb2Q/LmNvbnRlbnQgfHwgdGhpcy5jb21wdXRlZFZhbHVlO1xuICAgIH1cblxuICAgIGdldCBpbm5lclBzZXVkb0ZvY3VzZWQoKTogYm9vbGVhbiB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5wc2V1ZG9Gb2N1cyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wZW4gfHwgdGhpcy5jb21wdXRlZEZvY3VzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZVZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgOiAnJztcbiAgICB9XG5cbiAgICBzZXQgbmF0aXZlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAoIXRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHNpemUoKTogVHVpU2l6ZUwgfCBUdWlTaXplUyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRmaWVsZFNpemUuc2l6ZTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0Q29tcHV0ZWRSYW5nZUZpbGxlcihkYXRlRmlsbGVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVQZXJpb2QgPyAnJyA6IHRoaXMuZ2V0RGF0ZVJhbmdlRmlsbGVyKGRhdGVGaWxsZXIpO1xuICAgIH1cblxuICAgIG9uSWNvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuY29tcHV0ZWRNb2JpbGUgfHwgIXRoaXMubW9iaWxlQ2FsZW5kYXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlhbG9nc1xuICAgICAgICAgICAgLm9wZW48VHVpRGF5UmFuZ2U+KFxuICAgICAgICAgICAgICAgIG5ldyBQb2x5bW9ycGhldXNDb21wb25lbnQodGhpcy5tb2JpbGVDYWxlbmRhciwgdGhpcy5pbmplY3RvciksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzaXplOiAnZnVsbHNjcmVlbicsXG4gICAgICAgICAgICAgICAgICAgIGNsb3NlYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW46IHRoaXMubWF4TGVuZ3RoTWFwcGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWluLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXhMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMubWF4TGVuZ3RoTWFwcGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWF4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXhMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRJdGVtSGFuZGxlcjogdGhpcy5kaXNhYmxlZEl0ZW1IYW5kbGVyLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbk9wZW5DaGFuZ2Uob3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBvcGVuO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5vbk9wZW5DaGFuZ2UodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlID1cbiAgICAgICAgICAgIHZhbHVlLmxlbmd0aCA9PT0gREFURV9SQU5HRV9GSUxMRVJfTEVOR1RIXG4gICAgICAgICAgICAgICAgPyBUdWlEYXlSYW5nZS5ub3JtYWxpemVQYXJzZSh2YWx1ZSwgdGhpcy5kYXRlRm9ybWF0KVxuICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBvblJhbmdlQ2hhbmdlKHJhbmdlOiBUdWlEYXlSYW5nZSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG5cbiAgICAgICAgaWYgKCFyYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHJhbmdlO1xuICAgIH1cblxuICAgIG9uSXRlbVNlbGVjdChpdGVtOiBUdWlEYXlSYW5nZVBlcmlvZCB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcblxuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gaXRlbS5yYW5nZS5kYXlMaW1pdCh0aGlzLm1pbiwgdGhpcy5tYXgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY3RpdmVQZXJpb2QgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgb25BY3RpdmVab25lKGZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFmb2N1c2VkICYmXG4gICAgICAgICAgICAhdGhpcy5pdGVtU2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICh0aGlzLm5hdGl2ZVZhbHVlLmxlbmd0aCA9PT0gREFURV9GSUxMRVJfTEVOR1RIIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZS5sZW5ndGggPT09XG4gICAgICAgICAgICAgICAgICAgIERBVEVfRklMTEVSX0xFTkdUSCArIFJBTkdFX1NFUEFSQVRPUl9DSEFSLmxlbmd0aClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gVHVpRGF5UmFuZ2Uubm9ybWFsaXplUGFyc2UodGhpcy5uYXRpdmVWYWx1ZSwgdGhpcy5kYXRlRm9ybWF0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IHZhbHVlID8gdGhpcy5jb21wdXRlZFZhbHVlIDogJyc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHZhbHVlSWRlbnRpY2FsQ29tcGFyYXRvcihcbiAgICAgICAgb2xkVmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCxcbiAgICAgICAgbmV3VmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCxcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR1aU51bGxhYmxlU2FtZShvbGRWYWx1ZSwgbmV3VmFsdWUsIChhLCBiKSA9PiBhLmRheVNhbWUoYikpO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVNYXNrKFxuICAgICAgICBkYXRlRm9ybWF0OiBUdWlEYXRlTW9kZSxcbiAgICAgICAgc2VwYXJhdG9yOiBzdHJpbmcsXG4gICAgICAgIG1pbjogVHVpRGF5LFxuICAgICAgICBtYXg6IFR1aURheSxcbiAgICAgICAgbWluTGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCxcbiAgICAgICAgbWF4TGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCxcbiAgICApOiBNYXNraXRvT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiBtYXNraXRvRGF0ZVJhbmdlT3B0aW9uc0dlbmVyYXRvcih7XG4gICAgICAgICAgICBzZXBhcmF0b3IsXG4gICAgICAgICAgICBtb2RlOiBUVUlfREFURV9NT0RFX01BU0tJVE9fQURBUFRFUltkYXRlRm9ybWF0XSxcbiAgICAgICAgICAgIG1pbjogbWluLnRvTG9jYWxOYXRpdmVEYXRlKCksXG4gICAgICAgICAgICBtYXg6IG1heC50b0xvY2FsTmF0aXZlRGF0ZSgpLFxuICAgICAgICAgICAgbWluTGVuZ3RoOiBtaW5MZW5ndGggfHwge30sXG4gICAgICAgICAgICBtYXhMZW5ndGg6IG1heExlbmd0aCB8fCB7fSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXRlbVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBTdHJpbmcoaXRlbSkgPT09IHRoaXMubmF0aXZlVmFsdWUpICE9PSAtMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzSW5wdXQocHJldmVudFNjcm9sbDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudC5mb2N1cyh7cHJldmVudFNjcm9sbH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREYXRlUmFuZ2VGaWxsZXIoZGF0ZUZpbGxlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2RhdGVGaWxsZXJ9JHtSQU5HRV9TRVBBUkFUT1JfQ0hBUn0ke2RhdGVGaWxsZXJ9YDtcbiAgICB9XG59XG4iLCI8dHVpLWhvc3RlZC1kcm9wZG93blxuICAgIGNsYXNzPVwidC1ob3N0ZWRcIlxuICAgIFtjYW5PcGVuXT1cImNhbk9wZW5cIlxuICAgIFtjb250ZW50XT1cImRyb3Bkb3duXCJcbiAgICBbb3Blbl09XCJvcGVuICYmIGNhbk9wZW5cIlxuICAgIChvcGVuQ2hhbmdlKT1cIm9uT3BlbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAodHVpQWN0aXZlWm9uZUNoYW5nZSk9XCJvbkFjdGl2ZVpvbmUoJGV2ZW50KVwiXG4+XG4gICAgPHR1aS1wcmltaXRpdmUtdGV4dGZpZWxkXG4gICAgICAgICp0dWlMZXQ9XCJkYXRlRmlsbGVyJCB8IGFzeW5jIGFzIGRhdGVGaWxsZXJcIlxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWRhdGUtcmFuZ2VfX3RleHRmaWVsZFwiXG4gICAgICAgIHR1aVZhbHVlQWNjZXNzb3JcbiAgICAgICAgY2xhc3M9XCJ0LXRleHRmaWVsZFwiXG4gICAgICAgIFt0dWlUZXh0ZmllbGRJY29uXT1cImNhbGVuZGFySWNvbiAmJiBpY29uQ29udGVudFwiXG4gICAgICAgIFt0dWlUZXh0ZmllbGRGaWxsZXJdPVwiZ2V0Q29tcHV0ZWRSYW5nZUZpbGxlcihkYXRlRmlsbGVyIHx8ICcnKVwiXG4gICAgICAgIFtwc2V1ZG9Gb2N1c109XCJpbm5lclBzZXVkb0ZvY3VzZWRcIlxuICAgICAgICBbcHNldWRvSG92ZXJdPVwicHNldWRvSG92ZXJcIlxuICAgICAgICBbcHNldWRvQWN0aXZlXT1cInBzZXVkb0FjdGl2ZVwiXG4gICAgICAgIFtpbnZhbGlkXT1cImNvbXB1dGVkSW52YWxpZFwiXG4gICAgICAgIFtuYXRpdmVJZF09XCJuYXRpdmVJZFwiXG4gICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgW21hc2tpdG9dPVwiY29tcHV0ZWRNYXNrXCJcbiAgICAgICAgW3ZhbHVlXT1cImNvbXB1dGVkVmFsdWVcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICAgIHNlbGVjdD1cImlucHV0XCJcbiAgICAgICAgICAgIG5nUHJvamVjdEFzPVwiaW5wdXRcIlxuICAgICAgICA+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1ZhbHVlVGVtcGxhdGVcIlxuICAgICAgICAgICAgbmdQcm9qZWN0QXM9XCJ0dWlDb250ZW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwidC12YWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cImNvbXB1dGVkQ29udGVudCBhcyB0ZXh0OyBjb250ZXh0OiB7JGltcGxpY2l0OiB2YWx1ZX1cIj5cbiAgICAgICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC90dWktcHJpbWl0aXZlLXRleHRmaWVsZD5cblxuICAgIDxuZy10ZW1wbGF0ZSAjaWNvbkNvbnRlbnQ+XG4gICAgICAgIDx0dWktc3ZnXG4gICAgICAgICAgICAqcG9seW1vcnBoZXVzT3V0bGV0PVwiY2FsZW5kYXJJY29uIGFzIHNyYzsgY29udGV4dDogeyRpbXBsaWNpdDogc2l6ZX1cIlxuICAgICAgICAgICAgdHVpV3JhcHBlclxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cImljb25cIlxuICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1kYXRlLXJhbmdlX19pY29uXCJcbiAgICAgICAgICAgIFtjbGFzcy50LWljb25dPVwiIWNvbXB1dGVkRGlzYWJsZWRcIlxuICAgICAgICAgICAgW3NyY109XCJzcmNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSWNvbkNsaWNrKClcIlxuICAgICAgICA+PC90dWktc3ZnPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duPlxuICAgICAgICA8dHVpLWNhbGVuZGFyLXJhbmdlXG4gICAgICAgICAgICBbZGVmYXVsdFZpZXdlZE1vbnRoXT1cImRlZmF1bHRWaWV3ZWRNb250aFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJkaXNhYmxlZEl0ZW1IYW5kbGVyXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJpdGVtc1wiXG4gICAgICAgICAgICBbbWluXT1cIm1pblwiXG4gICAgICAgICAgICBbbWF4XT1cIm1heFwiXG4gICAgICAgICAgICBbbWFya2VySGFuZGxlcl09XCJtYXJrZXJIYW5kbGVyXCJcbiAgICAgICAgICAgIFttaW5MZW5ndGhdPVwibWluTGVuZ3RoXCJcbiAgICAgICAgICAgIFttYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25SYW5nZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvdHVpLWNhbGVuZGFyLXJhbmdlPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L3R1aS1ob3N0ZWQtZHJvcGRvd24+XG4iXX0=
@@ -2,7 +2,7 @@ import { __decorate } from "tslib";
2
2
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostListener, Inject, Input, Optional, Self, ViewChild, } from '@angular/core';
3
3
  import { NgControl } from '@angular/forms';
4
4
  import { maskitoDateTimeOptionsGenerator } from '@maskito/kit';
5
- import { AbstractTuiControl, ALWAYS_FALSE_HANDLER, changeDateSeparator, DATE_FILLER_LENGTH, TUI_DATE_FORMAT, TUI_DATE_SEPARATOR, TUI_IS_IOS, TUI_IS_MOBILE, tuiAsControl, tuiAsFocusableItemAccessor, tuiClamp, tuiDateClamp, TuiDay, tuiDefaultProp, TuiMonth, tuiNullableSame, tuiPure, TuiTime, } from '@taiga-ui/cdk';
5
+ import { AbstractTuiControl, ALWAYS_FALSE_HANDLER, changeDateSeparator, DATE_FILLER_LENGTH, TUI_DATE_FORMAT, TUI_DATE_SEPARATOR, TUI_IS_IOS, TUI_IS_MOBILE, tuiAsControl, tuiAsFocusableItemAccessor, tuiClamp, tuiDateClamp, TuiDay, TuiMonth, tuiNullableSame, tuiPure, TuiTime, } from '@taiga-ui/cdk';
6
6
  import { TUI_TEXTFIELD_SIZE, TuiPrimitiveTextfieldComponent, } from '@taiga-ui/core';
7
7
  import { DATE_TIME_SEPARATOR, TUI_DATE_MODE_MASKITO_ADAPTER, } from '@taiga-ui/kit/constants';
8
8
  import { TUI_DATE_TEXTS, TUI_DATE_TIME_VALUE_TRANSFORMER, TUI_INPUT_DATE_OPTIONS, TUI_TIME_TEXTS, tuiDateStreamWithTransformer, } from '@taiga-ui/kit/tokens';
@@ -215,21 +215,6 @@ TuiInputDateTimeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
215
215
  tuiAsControl(TuiInputDateTimeComponent),
216
216
  tuiDateStreamWithTransformer(TUI_DATE_TIME_VALUE_TRANSFORMER),
217
217
  ], viewQueries: [{ propertyName: "textfield", first: true, predicate: TuiPrimitiveTextfieldComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<tui-hosted-dropdown\n class=\"t-hosted\"\n [canOpen]=\"interactive && !showNativePicker\"\n [content]=\"dropdown\"\n [open]=\"open && interactive\"\n (openChange)=\"onOpenChange($event)\"\n>\n <tui-primitive-textfield\n automation-id=\"tui-input-date-time__textfield\"\n tuiValueAccessor\n class=\"t-textfield\"\n [tuiTextfieldIcon]=\"calendarIcon && iconContent\"\n [tuiTextfieldFiller]=\"(filler$ | async) || ''\"\n [pseudoFocus]=\"pseudoFocus\"\n [pseudoHover]=\"pseudoHover\"\n [invalid]=\"computedInvalid\"\n [nativeId]=\"nativeId\"\n [readOnly]=\"readOnly\"\n [disabled]=\"computedDisabled\"\n [maskito]=\"maskOptions\"\n [value]=\"computedValue\"\n (valueChange)=\"onValueChange($event)\"\n (focusedChange)=\"onFocused($event)\"\n >\n <ng-content></ng-content>\n <ng-content\n select=\"input\"\n ngProjectAs=\"input\"\n ></ng-content>\n </tui-primitive-textfield>\n\n <ng-template #iconContent>\n <tui-svg\n *polymorpheusOutlet=\"calendarIcon as src; context: {$implicit: size}\"\n tuiWrapper\n appearance=\"icon\"\n [class.t-icon]=\"!computedDisabled\"\n [src]=\"src\"\n ></tui-svg>\n <input\n *ngIf=\"showNativePicker\"\n tuiDateTime\n class=\"t-native-input\"\n />\n </ng-template>\n\n <ng-template\n #dropdown=\"polymorpheus\"\n [polymorpheus]=\"type\"\n >\n <tui-calendar\n tuiPreventDefault=\"mousedown\"\n automation-id=\"tui-input-date-time__calendar\"\n [min]=\"calendarMinDay\"\n [max]=\"calendarMaxDay\"\n [disabledItemHandler]=\"disabledItemHandler\"\n [month]=\"computedActiveYearMonth\"\n [value]=\"calendarValue\"\n (dayClick)=\"onDayClick($event)\"\n (monthChange)=\"onMonthChange($event)\"\n ></tui-calendar>\n </ng-template>\n</tui-hosted-dropdown>\n", styles: [":host{display:block;border-radius:var(--tui-radius-m);text-align:left}.t-hosted{display:block;border-radius:inherit}.t-textfield{border-radius:inherit;text-align:inherit}.t-icon{pointer-events:auto}.t-button{display:flex;height:2.75rem;justify-content:center;box-shadow:inset 0 1px var(--tui-base-03)}.t-native-input{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;pointer-events:auto;font-size:2rem}\n"], components: [{ type: i1.TuiHostedDropdownComponent, selector: "tui-hosted-dropdown", inputs: ["content", "sided", "canOpen", "open"], outputs: ["openChange", "focusedChange"] }, { type: i1.TuiPrimitiveTextfieldComponent, selector: "tui-primitive-textfield", inputs: ["editable", "filler", "iconCleaner", "readOnly", "invalid", "disabled", "prefix", "postfix", "value"], outputs: ["valueChange"] }, { type: i1.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { type: i1.TuiCalendarComponent, selector: "tui-calendar", inputs: ["month", "disabledItemHandler", "min", "max", "minViewedMonth", "maxViewedMonth", "hoveredItem", "showAdjacent", "markerHandler", "value"], outputs: ["dayClick", "monthChange", "hoveredItemChange"] }], directives: [{ type: i1.TuiPrimitiveTextfieldDirective, selector: "tui-primitive-textfield" }, { type: i2.TuiValueAccessorDirective, selector: "[tuiValueAccessor]" }, { type: i1.TuiTextfieldIconDirective, selector: "[tuiTextfieldIcon]", inputs: ["tuiTextfieldIcon"] }, { type: i1.TuiTextfieldFillerDirective, selector: "[tuiTextfieldFiller]", inputs: ["tuiTextfieldFiller"] }, { type: i3.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { type: i4.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { type: i1.TuiWrapperDirective, selector: "[tuiWrapper]", inputs: ["disabled", "readOnly", "hover", "active", "focus", "invalid", "appearance"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.TuiNativeDateTimeDirective, selector: "input[tuiDateTime]" }, { type: i4.PolymorpheusTemplate, selector: "ng-template[polymorpheus]", inputs: ["polymorpheus"], exportAs: ["polymorpheus"] }, { type: i7.TuiPreventDefaultDirective, selector: "[tuiPreventDefault]", inputs: ["tuiPreventDefault"] }], pipes: { "async": i5.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
218
- __decorate([
219
- tuiDefaultProp()
220
- ], TuiInputDateTimeComponent.prototype, "min", void 0);
221
- __decorate([
222
- tuiDefaultProp()
223
- ], TuiInputDateTimeComponent.prototype, "max", void 0);
224
- __decorate([
225
- tuiDefaultProp()
226
- ], TuiInputDateTimeComponent.prototype, "disabledItemHandler", void 0);
227
- __decorate([
228
- tuiDefaultProp()
229
- ], TuiInputDateTimeComponent.prototype, "defaultActiveYearMonth", void 0);
230
- __decorate([
231
- tuiDefaultProp()
232
- ], TuiInputDateTimeComponent.prototype, "timeMode", void 0);
233
218
  __decorate([
234
219
  tuiPure
235
220
  ], TuiInputDateTimeComponent.prototype, "calculateMask", null);
@@ -305,4 +290,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
305
290
  type: HostListener,
306
291
  args: ['click']
307
292
  }], calculateMask: [], getDateTimeString: [] } });
308
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS10aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LWRhdGUtdGltZS9pbnB1dC1kYXRlLXRpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZGF0ZS10aW1lL2lucHV0LWRhdGUtdGltZS50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLElBQUksRUFDSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUM3RCxPQUFPLEVBQ0gsa0JBQWtCLEVBRWxCLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLGFBQWEsRUFFYixZQUFZLEVBQ1osMEJBQTBCLEVBRTFCLFFBQVEsRUFFUixZQUFZLEVBRVosTUFBTSxFQUNOLGNBQWMsRUFFZCxRQUFRLEVBQ1IsZUFBZSxFQUNmLE9BQU8sRUFDUCxPQUFPLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGtCQUFrQixFQUNsQiw4QkFBOEIsR0FLakMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLDZCQUE2QixHQUNoQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFDSCxjQUFjLEVBQ2QsK0JBQStCLEVBQy9CLHNCQUFzQixFQUN0QixjQUFjLEVBQ2QsNEJB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QU1OLEdBQUc7c0JBRkYsS0FBSztnQkFNTixtQkFBbUI7c0JBRmxCLEtBQUs7Z0JBTU4sc0JBQXNCO3NCQUZyQixLQUFLO2dCQU1OLFFBQVE7c0JBRlAsS0FBSztnQkFtSU4sT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU87Z0JBcUdiLGFBQWEsTUFpQmIsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtNYXNraXRvT3B0aW9uc30gZnJvbSAnQG1hc2tpdG8vY29yZSc7XG5pbXBvcnQge21hc2tpdG9EYXRlVGltZU9wdGlvbnNHZW5lcmF0b3J9IGZyb20gJ0BtYXNraXRvL2tpdCc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpQ29udHJvbCxcbiAgICBBYnN0cmFjdFR1aVZhbHVlVHJhbnNmb3JtZXIsXG4gICAgQUxXQVlTX0ZBTFNFX0hBTkRMRVIsXG4gICAgY2hhbmdlRGF0ZVNlcGFyYXRvcixcbiAgICBEQVRFX0ZJTExFUl9MRU5HVEgsXG4gICAgVFVJX0RBVEVfRk9STUFULFxuICAgIFRVSV9EQVRFX1NFUEFSQVRPUixcbiAgICBUVUlfSVNfSU9TLFxuICAgIFRVSV9JU19NT0JJTEUsXG4gICAgVHVpQWN0aXZlWm9uZURpcmVjdGl2ZSxcbiAgICB0dWlBc0NvbnRyb2wsXG4gICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IsXG4gICAgVHVpQm9vbGVhbkhhbmRsZXIsXG4gICAgdHVpQ2xhbXAsXG4gICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdCxcbiAgICB0dWlEYXRlQ2xhbXAsXG4gICAgVHVpRGF0ZU1vZGUsXG4gICAgVHVpRGF5LFxuICAgIHR1aURlZmF1bHRQcm9wLFxuICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvcixcbiAgICBUdWlNb250aCxcbiAgICB0dWlOdWxsYWJsZVNhbWUsXG4gICAgdHVpUHVyZSxcbiAgICBUdWlUaW1lLFxuICAgIFR1aVRpbWVNb2RlLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7XG4gICAgVFVJX1RFWFRGSUVMRF9TSVpFLFxuICAgIFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudCxcbiAgICBUdWlTaXplTCxcbiAgICBUdWlTaXplUyxcbiAgICBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxuICAgIFR1aVdpdGhPcHRpb25hbE1pbk1heCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBEQVRFX1RJTUVfU0VQQVJBVE9SLFxuICAgIFRVSV9EQVRFX01PREVfTUFTS0lUT19BREFQVEVSLFxufSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICAgIFRVSV9EQVRFX1RFWFRTLFxuICAgIFRVSV9EQVRFX1RJTUVfVkFMVUVfVFJBTlNGT1JNRVIsXG4gICAgVFVJX0lOUFVUX0RBVEVfT1BUSU9OUyxcbiAgICBUVUlfVElNRV9URVhUUyxcbiAgICB0dWlEYXRlU3RyZWFtV2l0aFRyYW5zZm9ybWVyLFxuICAgIFR1aUlucHV0RGF0ZU9wdGlvbnMsXG59IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1kYXRlLXRpbWUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1kYXRlLXRpbWUudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtZGF0ZS10aW1lLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IoVHVpSW5wdXREYXRlVGltZUNvbXBvbmVudCksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dERhdGVUaW1lQ29tcG9uZW50KSxcbiAgICAgICAgdHVpRGF0ZVN0cmVhbVdpdGhUcmFuc2Zvcm1lcihUVUlfREFURV9USU1FX1ZBTFVFX1RSQU5TRk9STUVSKSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dERhdGVUaW1lQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aUNvbnRyb2w8W1R1aURheSB8IG51bGwsIFR1aVRpbWUgfCBudWxsXT5cbiAgICBpbXBsZW1lbnRzXG4gICAgICAgIFR1aVdpdGhPcHRpb25hbE1pbk1heDxUdWlEYXkgfCBbVHVpRGF5LCBUdWlUaW1lXT4sXG4gICAgICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3Nvclxue1xuICAgIEBWaWV3Q2hpbGQoVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGV4dGZpZWxkPzogVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50O1xuXG4gICAgcHJpdmF0ZSBtb250aDogVHVpTW9udGggfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBtaW46IFR1aURheSB8IFtUdWlEYXksIFR1aVRpbWVdID0gdGhpcy5vcHRpb25zLm1pbjtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBtYXg6IFR1aURheSB8IFtUdWlEYXksIFR1aVRpbWVdID0gdGhpcy5vcHRpb25zLm1heDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBkaXNhYmxlZEl0ZW1IYW5kbGVyOiBUdWlCb29sZWFuSGFuZGxlcjxUdWlEYXk+ID0gQUxXQVlTX0ZBTFNFX0hBTkRMRVI7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgZGVmYXVsdEFjdGl2ZVllYXJNb250aCA9IFR1aU1vbnRoLmN1cnJlbnRMb2NhbCgpO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHRpbWVNb2RlOiBUdWlUaW1lTW9kZSA9ICdISDpNTSc7XG5cbiAgICBvcGVuID0gZmFsc2U7XG5cbiAgICByZWFkb25seSB0eXBlITogVHVpQ29udGV4dFdpdGhJbXBsaWNpdDxUdWlBY3RpdmVab25lRGlyZWN0aXZlPjtcblxuICAgIHJlYWRvbmx5IGZpbGxlciQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmRhdGVUZXh0cyQucGlwZShcbiAgICAgICAgICAgIG1hcChkYXRlVGV4dHMgPT5cbiAgICAgICAgICAgICAgICBjaGFuZ2VEYXRlU2VwYXJhdG9yKGRhdGVUZXh0c1t0aGlzLmRhdGVGb3JtYXRdLCB0aGlzLmRhdGVTZXBhcmF0b3IpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy50aW1lVGV4dHMkLnBpcGUobWFwKHRleHRzID0+IHRleHRzW3RoaXMudGltZU1vZGVdKSksXG4gICAgXSkucGlwZShtYXAoZmlsbGVycyA9PiB0aGlzLmdldERhdGVUaW1lU3RyaW5nKC4uLmZpbGxlcnMpKSk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChUVUlfVEVYVEZJRUxEX1NJWkUpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdGV4dGZpZWxkU2l6ZTogVHVpVGV4dGZpZWxkU2l6ZURpcmVjdGl2ZSxcbiAgICAgICAgQEluamVjdChUVUlfREFURV9GT1JNQVQpIHJlYWRvbmx5IGRhdGVGb3JtYXQ6IFR1aURhdGVNb2RlLFxuICAgICAgICBASW5qZWN0KFRVSV9EQVRFX1NFUEFSQVRPUikgcmVhZG9ubHkgZGF0ZVNlcGFyYXRvcjogc3RyaW5nLFxuICAgICAgICBASW5qZWN0KFRVSV9USU1FX1RFWFRTKVxuICAgICAgICByZWFkb25seSB0aW1lVGV4dHMkOiBPYnNlcnZhYmxlPFJlY29yZDxUdWlUaW1lTW9kZSwgc3RyaW5nPj4sXG4gICAgICAgIEBJbmplY3QoVFVJX0RBVEVfVEVYVFMpXG4gICAgICAgIHJlYWRvbmx5IGRhdGVUZXh0cyQ6IE9ic2VydmFibGU8UmVjb3JkPFR1aURhdGVNb2RlLCBzdHJpbmc+PixcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChUVUlfREFURV9USU1FX1ZBTFVFX1RSQU5TRk9STUVSKVxuICAgICAgICBvdmVycmlkZSByZWFkb25seSB2YWx1ZVRyYW5zZm9ybWVyOiBBYnN0cmFjdFR1aVZhbHVlVHJhbnNmb3JtZXI8XG4gICAgICAgICAgICBbVHVpRGF5IHwgbnVsbCwgVHVpVGltZSB8IG51bGxdXG4gICAgICAgID4gfCBudWxsLFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9EQVRFX09QVElPTlMpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogVHVpSW5wdXREYXRlT3B0aW9ucyxcbiAgICAgICAgQEluamVjdChUVUlfSVNfTU9CSUxFKSByZWFkb25seSBpc01vYmlsZTogYm9vbGVhbixcbiAgICAgICAgQEluamVjdChUVUlfSVNfSU9TKSByZWFkb25seSBpc0lvczogYm9vbGVhbixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2RyLCB2YWx1ZVRyYW5zZm9ybWVyKTtcbiAgICB9XG5cbiAgICBnZXQgZmlsbGVyTGVuZ3RoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBEQVRFX0ZJTExFUl9MRU5HVEggKyBEQVRFX1RJTUVfU0VQQVJBVE9SLmxlbmd0aCArIHRoaXMudGltZU1vZGUubGVuZ3RoO1xuICAgIH1cblxuICAgIGdldCBtYXNrT3B0aW9ucygpOiBNYXNraXRvT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZU1hc2soXG4gICAgICAgICAgICB0aGlzLm1pbixcbiAgICAgICAgICAgIHRoaXMubWF4LFxuICAgICAgICAgICAgdGhpcy50aW1lTW9kZSxcbiAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdCxcbiAgICAgICAgICAgIHRoaXMuZGF0ZVNlcGFyYXRvcixcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRm9jdXNhYmxlRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRmaWVsZCA/IHRoaXMudGV4dGZpZWxkLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgOiBudWxsO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnRleHRmaWVsZCAmJiB0aGlzLnRleHRmaWVsZC5mb2N1c2VkO1xuICAgIH1cblxuICAgIGdldCBjYWxlbmRhckljb24oKTogVHVpSW5wdXREYXRlT3B0aW9uc1snaWNvbiddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pY29uO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IG5hdGl2ZVBpY2tlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5vcHRpb25zLm5hdGl2ZVBpY2tlciAmJiB0aGlzLmlzTW9iaWxlO1xuICAgIH1cblxuICAgIGdldCBzaG93TmF0aXZlUGlja2VyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVQaWNrZXIgJiYgdGhpcy50aW1lTW9kZSA9PT0gJ0hIOk1NJztcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB7dmFsdWUsIG5hdGl2ZVZhbHVlLCB0aW1lTW9kZX0gPSB0aGlzO1xuICAgICAgICBjb25zdCBbZGF0ZSwgdGltZV0gPSB2YWx1ZTtcbiAgICAgICAgY29uc3QgaGFzVGltZUlucHV0Q2hhcnMgPSBuYXRpdmVWYWx1ZS5sZW5ndGggPiBEQVRFX0ZJTExFUl9MRU5HVEg7XG5cbiAgICAgICAgaWYgKCFkYXRlIHx8ICghdGltZSAmJiBoYXNUaW1lSW5wdXRDaGFycykpIHtcbiAgICAgICAgICAgIHJldHVybiBuYXRpdmVWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmdldERhdGVUaW1lU3RyaW5nKGRhdGUsIHRpbWUsIHRpbWVNb2RlKTtcbiAgICB9XG5cbiAgICBnZXQgY2FsZW5kYXJWYWx1ZSgpOiBUdWlEYXkgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVbMF07XG4gICAgfVxuXG4gICAgZ2V0IGNhbGVuZGFyTWluRGF5KCk6IFR1aURheSB7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMubWluKSA/IHRoaXMubWluWzBdIDogdGhpcy5taW47XG4gICAgfVxuXG4gICAgZ2V0IGNhbGVuZGFyTWF4RGF5KCk6IFR1aURheSB7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMubWF4KSA/IHRoaXMubWF4WzBdIDogdGhpcy5tYXg7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkQWN0aXZlWWVhck1vbnRoKCk6IFR1aU1vbnRoIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMubW9udGggfHxcbiAgICAgICAgICAgIHRoaXMudmFsdWVbMF0gfHxcbiAgICAgICAgICAgIHR1aURhdGVDbGFtcChcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRBY3RpdmVZZWFyTW9udGgsXG4gICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheSh0aGlzLm1pbikgPyB0aGlzLm1pblswXSA6IHRoaXMubWluLFxuICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkodGhpcy5tYXgpID8gdGhpcy5tYXhbMF0gOiB0aGlzLm1heCxcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCA/IHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudC52YWx1ZSA6ICcnO1xuICAgIH1cblxuICAgIHNldCBuYXRpdmVWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgc2l6ZSgpOiBUdWlTaXplTCB8IFR1aVNpemVTIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dGZpZWxkU2l6ZS5zaXplO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm9uT3BlbkNoYW5nZSh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPCBEQVRFX0ZJTExFUl9MRU5HVEgpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBbbnVsbCwgbnVsbF07XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IFtkYXRlLCB0aW1lXSA9IHZhbHVlLnNwbGl0KERBVEVfVElNRV9TRVBBUkFUT1IpO1xuICAgICAgICBjb25zdCBwYXJzZWREYXRlID0gVHVpRGF5Lm5vcm1hbGl6ZVBhcnNlKGRhdGUsIHRoaXMuZGF0ZUZvcm1hdCk7XG4gICAgICAgIGNvbnN0IHBhcnNlZFRpbWUgPVxuICAgICAgICAgICAgdGltZSAmJiB0aW1lLmxlbmd0aCA9PT0gdGhpcy50aW1lTW9kZS5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IFR1aVRpbWUuZnJvbVN0cmluZyh0aW1lKVxuICAgICAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IFtwYXJzZWREYXRlLCBwYXJzZWRUaW1lXTtcbiAgICB9XG5cbiAgICBvbkRheUNsaWNrKGRheTogVHVpRGF5KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1vZGlmaWVkVGltZSA9IHRoaXMudmFsdWVbMV0gJiYgdGhpcy5jbGFtcFRpbWUodGhpcy52YWx1ZVsxXSwgZGF5KTtcblxuICAgICAgICB0aGlzLnZhbHVlID0gW2RheSwgbW9kaWZpZWRUaW1lXTtcbiAgICAgICAgdGhpcy51cGRhdGVOYXRpdmVWYWx1ZShkYXkpO1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbk1vbnRoQ2hhbmdlKG1vbnRoOiBUdWlNb250aCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vbnRoID0gbW9udGg7XG4gICAgfVxuXG4gICAgb25PcGVuQ2hhbmdlKG9wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gb3BlbjtcbiAgICB9XG5cbiAgICBvbkZvY3VzZWQoZm9jdXNlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUZvY3VzZWQoZm9jdXNlZCk7XG5cbiAgICAgICAgaWYgKGZvY3VzZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IHRoaXMudHJpbVRyYWlsaW5nU2VwYXJhdG9yKHRoaXMubmF0aXZlVmFsdWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnZhbHVlWzBdID09PSBudWxsIHx8XG4gICAgICAgICAgICB0aGlzLnZhbHVlWzFdICE9PSBudWxsIHx8XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlLmxlbmd0aCA8PSB0aGlzLmZpbGxlckxlbmd0aCArIERBVEVfVElNRV9TRVBBUkFUT1IubGVuZ3RoIHx8XG4gICAgICAgICAgICB0aGlzLnRpbWVNb2RlID09PSAnSEg6TU0nXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgWywgdGltZV0gPSB0aGlzLm5hdGl2ZVZhbHVlLnNwbGl0KERBVEVfVElNRV9TRVBBUkFUT1IpO1xuXG4gICAgICAgIGlmICghdGltZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyc2VkVGltZSA9IFR1aVRpbWUuZnJvbVN0cmluZyh0aW1lKTtcblxuICAgICAgICB0aGlzLnZhbHVlID0gW3RoaXMudmFsdWVbMF0sIHBhcnNlZFRpbWVdO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIHNldERpc2FibGVkU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLnNldERpc2FibGVkU3RhdGUoKTtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogW1R1aURheSB8IG51bGwsIFR1aVRpbWUgfCBudWxsXSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9XG4gICAgICAgICAgICB0aGlzLnZhbHVlICYmICh0aGlzLnZhbHVlWzBdIHx8IHRoaXMudmFsdWVbMV0pID8gdGhpcy5jb21wdXRlZFZhbHVlIDogJyc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZhbGxiYWNrVmFsdWUoKTogW1R1aURheSB8IG51bGwsIFR1aVRpbWUgfCBudWxsXSB7XG4gICAgICAgIHJldHVybiBbbnVsbCwgbnVsbF07XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHZhbHVlSWRlbnRpY2FsQ29tcGFyYXRvcihcbiAgICAgICAgb2xkVmFsdWU6IFtUdWlEYXkgfCBudWxsLCBUdWlUaW1lIHwgbnVsbF0sXG4gICAgICAgIG5ld1ZhbHVlOiBbVHVpRGF5IHwgbnVsbCwgVHVpVGltZSB8IG51bGxdLFxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdHVpTnVsbGFibGVTYW1lKG9sZFZhbHVlWzBdLCBuZXdWYWx1ZVswXSwgKGEsIGIpID0+IGEuZGF5U2FtZShiKSkgJiZcbiAgICAgICAgICAgIHR1aU51bGxhYmxlU2FtZShvbGRWYWx1ZVsxXSwgbmV3VmFsdWVbMV0sIChhLCBiKSA9PiBTdHJpbmcoYSkgPT09IFN0cmluZyhiKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIHByaXZhdGUgY2FsY3VsYXRlTWFzayhcbiAgICAgICAgbWluOiBUdWlEYXkgfCBbVHVpRGF5LCBUdWlUaW1lXSxcbiAgICAgICAgbWF4OiBUdWlEYXkgfCBbVHVpRGF5LCBUdWlUaW1lXSxcbiAgICAgICAgdGltZU1vZGU6IFR1aVRpbWVNb2RlLFxuICAgICAgICBkYXRlRm9ybWF0OiBUdWlEYXRlTW9kZSxcbiAgICAgICAgZGF0ZVNlcGFyYXRvcjogc3RyaW5nLFxuICAgICk6IE1hc2tpdG9PcHRpb25zIHtcbiAgICAgICAgcmV0dXJuIG1hc2tpdG9EYXRlVGltZU9wdGlvbnNHZW5lcmF0b3Ioe1xuICAgICAgICAgICAgdGltZU1vZGUsXG4gICAgICAgICAgICBkYXRlU2VwYXJhdG9yLFxuICAgICAgICAgICAgZGF0ZU1vZGU6IFRVSV9EQVRFX01PREVfTUFTS0lUT19BREFQVEVSW2RhdGVGb3JtYXRdLFxuICAgICAgICAgICAgbWluOiB0aGlzLnRvTmF0aXZlRGF0ZShtaW4pLFxuICAgICAgICAgICAgbWF4OiB0aGlzLnRvTmF0aXZlRGF0ZShtYXgpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIHByaXZhdGUgZ2V0RGF0ZVRpbWVTdHJpbmcoXG4gICAgICAgIGRhdGU6IFR1aURheSB8IHN0cmluZyxcbiAgICAgICAgdGltZTogVHVpVGltZSB8IHN0cmluZyB8IG51bGwsXG4gICAgICAgIHRpbWVNb2RlOiBUdWlUaW1lTW9kZSA9ICdISDpNTScsXG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZGF0ZVN0cmluZyA9XG4gICAgICAgICAgICBkYXRlIGluc3RhbmNlb2YgVHVpRGF5XG4gICAgICAgICAgICAgICAgPyBkYXRlLnRvU3RyaW5nKHRoaXMuZGF0ZUZvcm1hdCwgdGhpcy5kYXRlU2VwYXJhdG9yKVxuICAgICAgICAgICAgICAgIDogZGF0ZTtcbiAgICAgICAgY29uc3QgdGltZVN0cmluZyA9IHRpbWUgaW5zdGFuY2VvZiBUdWlUaW1lID8gdGltZS50b1N0cmluZyh0aW1lTW9kZSkgOiB0aW1lIHx8ICcnO1xuXG4gICAgICAgIHJldHVybiB0aW1lU3RyaW5nXG4gICAgICAgICAgICA/IGAke2RhdGVTdHJpbmd9JHtEQVRFX1RJTUVfU0VQQVJBVE9SfSR7dGltZVN0cmluZ31gXG4gICAgICAgICAgICA6IGRhdGVTdHJpbmc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVOYXRpdmVWYWx1ZShkYXk6IFR1aURheSk6IHZvaWQge1xuICAgICAgICBjb25zdCB0aW1lID0gdGhpcy5uYXRpdmVWYWx1ZS5zcGxpdChEQVRFX1RJTUVfU0VQQVJBVE9SKVsxXSB8fCAnJztcblxuICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gdGhpcy5nZXREYXRlVGltZVN0cmluZyhkYXksIHRpbWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xhbXBUaW1lKHRpbWU6IFR1aVRpbWUsIGRheTogVHVpRGF5KTogVHVpVGltZSB7XG4gICAgICAgIGNvbnN0IG1zID0gdGltZS50b0Fic29sdXRlTWlsbGlzZWNvbmRzKCk7XG4gICAgICAgIGNvbnN0IG1pbiA9XG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KHRoaXMubWluKSAmJiBkYXkuZGF5U2FtZSh0aGlzLmNhbGVuZGFyTWluRGF5KVxuICAgICAgICAgICAgICAgID8gdGhpcy5taW5bMV0udG9BYnNvbHV0ZU1pbGxpc2Vjb25kcygpXG4gICAgICAgICAgICAgICAgOiAtSW5maW5pdHk7XG4gICAgICAgIGNvbnN0IG1heCA9XG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KHRoaXMubWF4KSAmJiBkYXkuZGF5U2FtZSh0aGlzLmNhbGVuZGFyTWF4RGF5KVxuICAgICAgICAgICAgICAgID8gdGhpcy5tYXhbMV0udG9BYnNvbHV0ZU1pbGxpc2Vjb25kcygpXG4gICAgICAgICAgICAgICAgOiBJbmZpbml0eTtcblxuICAgICAgICByZXR1cm4gVHVpVGltZS5mcm9tQWJzb2x1dGVNaWxsaXNlY29uZHModHVpQ2xhbXAobXMsIG1pbiwgbWF4KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmltVHJhaWxpbmdTZXBhcmF0b3IodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKFxuICAgICAgICAgICAgbmV3IFJlZ0V4cChgKFxcXFwke3RoaXMuZGF0ZVNlcGFyYXRvcn18JHtEQVRFX1RJTUVfU0VQQVJBVE9SfXxcXFxcLikkYCksXG4gICAgICAgICAgICAnJyxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvTmF0aXZlRGF0ZSh2YWx1ZTogVHVpRGF5IHwgW1R1aURheSwgVHVpVGltZV0pOiBEYXRlIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvTG9jYWxOYXRpdmVEYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBbe3llYXIsIG1vbnRoLCBkYXl9LCB7aG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1zfV0gPSB2YWx1ZTtcblxuICAgICAgICByZXR1cm4gbmV3IERhdGUoeWVhciwgbW9udGgsIGRheSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1zKTtcbiAgICB9XG59XG4iLCI8dHVpLWhvc3RlZC1kcm9wZG93blxuICAgIGNsYXNzPVwidC1ob3N0ZWRcIlxuICAgIFtjYW5PcGVuXT1cImludGVyYWN0aXZlICYmICFzaG93TmF0aXZlUGlja2VyXCJcbiAgICBbY29udGVudF09XCJkcm9wZG93blwiXG4gICAgW29wZW5dPVwib3BlbiAmJiBpbnRlcmFjdGl2ZVwiXG4gICAgKG9wZW5DaGFuZ2UpPVwib25PcGVuQ2hhbmdlKCRldmVudClcIlxuPlxuICAgIDx0dWktcHJpbWl0aXZlLXRleHRmaWVsZFxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWRhdGUtdGltZV9fdGV4dGZpZWxkXCJcbiAgICAgICAgdHVpVmFsdWVBY2Nlc3NvclxuICAgICAgICBjbGFzcz1cInQtdGV4dGZpZWxkXCJcbiAgICAgICAgW3R1aVRleHRmaWVsZEljb25dPVwiY2FsZW5kYXJJY29uICYmIGljb25Db250ZW50XCJcbiAgICAgICAgW3R1aVRleHRmaWVsZEZpbGxlcl09XCIoZmlsbGVyJCB8IGFzeW5jKSB8fCAnJ1wiXG4gICAgICAgIFtwc2V1ZG9Gb2N1c109XCJwc2V1ZG9Gb2N1c1wiXG4gICAgICAgIFtwc2V1ZG9Ib3Zlcl09XCJwc2V1ZG9Ib3ZlclwiXG4gICAgICAgIFtpbnZhbGlkXT1cImNvbXB1dGVkSW52YWxpZFwiXG4gICAgICAgIFtuYXRpdmVJZF09XCJuYXRpdmVJZFwiXG4gICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgW21hc2tpdG9dPVwibWFza09wdGlvbnNcIlxuICAgICAgICBbdmFsdWVdPVwiY29tcHV0ZWRWYWx1ZVwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAoZm9jdXNlZENoYW5nZSk9XCJvbkZvY3VzZWQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxuZy1jb250ZW50XG4gICAgICAgICAgICBzZWxlY3Q9XCJpbnB1dFwiXG4gICAgICAgICAgICBuZ1Byb2plY3RBcz1cImlucHV0XCJcbiAgICAgICAgPjwvbmctY29udGVudD5cbiAgICA8L3R1aS1wcmltaXRpdmUtdGV4dGZpZWxkPlxuXG4gICAgPG5nLXRlbXBsYXRlICNpY29uQ29udGVudD5cbiAgICAgICAgPHR1aS1zdmdcbiAgICAgICAgICAgICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJjYWxlbmRhckljb24gYXMgc3JjOyBjb250ZXh0OiB7JGltcGxpY2l0OiBzaXplfVwiXG4gICAgICAgICAgICB0dWlXcmFwcGVyXG4gICAgICAgICAgICBhcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgICAgICBbY2xhc3MudC1pY29uXT1cIiFjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgICAgIFtzcmNdPVwic3JjXCJcbiAgICAgICAgPjwvdHVpLXN2Zz5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAqbmdJZj1cInNob3dOYXRpdmVQaWNrZXJcIlxuICAgICAgICAgICAgdHVpRGF0ZVRpbWVcbiAgICAgICAgICAgIGNsYXNzPVwidC1uYXRpdmUtaW5wdXRcIlxuICAgICAgICAvPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgI2Ryb3Bkb3duPVwicG9seW1vcnBoZXVzXCJcbiAgICAgICAgW3BvbHltb3JwaGV1c109XCJ0eXBlXCJcbiAgICA+XG4gICAgICAgIDx0dWktY2FsZW5kYXJcbiAgICAgICAgICAgIHR1aVByZXZlbnREZWZhdWx0PVwibW91c2Vkb3duXCJcbiAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtZGF0ZS10aW1lX19jYWxlbmRhclwiXG4gICAgICAgICAgICBbbWluXT1cImNhbGVuZGFyTWluRGF5XCJcbiAgICAgICAgICAgIFttYXhdPVwiY2FsZW5kYXJNYXhEYXlcIlxuICAgICAgICAgICAgW2Rpc2FibGVkSXRlbUhhbmRsZXJdPVwiZGlzYWJsZWRJdGVtSGFuZGxlclwiXG4gICAgICAgICAgICBbbW9udGhdPVwiY29tcHV0ZWRBY3RpdmVZZWFyTW9udGhcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImNhbGVuZGFyVmFsdWVcIlxuICAgICAgICAgICAgKGRheUNsaWNrKT1cIm9uRGF5Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAobW9udGhDaGFuZ2UpPVwib25Nb250aENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvdHVpLWNhbGVuZGFyPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L3R1aS1ob3N0ZWQtZHJvcGRvd24+XG4iXX0=
293
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS10aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LWRhdGUtdGltZS9pbnB1dC1kYXRlLXRpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZGF0ZS10aW1lL2lucHV0LWRhdGUtdGltZS50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLElBQUksRUFDSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUM3RCxPQUFPLEVBQ0gsa0JBQWtCLEVBRWxCLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLGFBQWEsRUFFYixZQUFZLEVBQ1osMEJBQTBCLEVBRTFCLFFBQVEsRUFFUixZQUFZLEVBRVosTUFBTSxFQUVOLFFBQVEsRUFDUixlQUFlLEVBQ2YsT0FBTyxFQUNQLE9BQU8sR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLDhCQUE4QixHQUtqQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsNkJBQTZCLEdBQ2hDLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNILGNBQWMsRUFDZCwrQkFBK0IsRUFDL0Isc0JBQXNCLEVBQ3RCLGNBQWMsRUFDZCw0QkFBNEIsR0FFL0Is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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtNYXNraXRvT3B0aW9uc30gZnJvbSAnQG1hc2tpdG8vY29yZSc7XG5pbXBvcnQge21hc2tpdG9EYXRlVGltZU9wdGlvbnNHZW5lcmF0b3J9IGZyb20gJ0BtYXNraXRvL2tpdCc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpQ29udHJvbCxcbiAgICBBYnN0cmFjdFR1aVZhbHVlVHJhbnNmb3JtZXIsXG4gICAgQUxXQVlTX0ZBTFNFX0hBTkRMRVIsXG4gICAgY2hhbmdlRGF0ZVNlcGFyYXRvcixcbiAgICBEQVRFX0ZJTExFUl9MRU5HVEgsXG4gICAgVFVJX0RBVEVfRk9STUFULFxuICAgIFRVSV9EQVRFX1NFUEFSQVRPUixcbiAgICBUVUlfSVNfSU9TLFxuICAgIFRVSV9JU19NT0JJTEUsXG4gICAgVHVpQWN0aXZlWm9uZURpcmVjdGl2ZSxcbiAgICB0dWlBc0NvbnRyb2wsXG4gICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IsXG4gICAgVHVpQm9vbGVhbkhhbmRsZXIsXG4gICAgdHVpQ2xhbXAsXG4gICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdCxcbiAgICB0dWlEYXRlQ2xhbXAsXG4gICAgVHVpRGF0ZU1vZGUsXG4gICAgVHVpRGF5LFxuICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvcixcbiAgICBUdWlNb250aCxcbiAgICB0dWlOdWxsYWJsZVNhbWUsXG4gICAgdHVpUHVyZSxcbiAgICBUdWlUaW1lLFxuICAgIFR1aVRpbWVNb2RlLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7XG4gICAgVFVJX1RFWFRGSUVMRF9TSVpFLFxuICAgIFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudCxcbiAgICBUdWlTaXplTCxcbiAgICBUdWlTaXplUyxcbiAgICBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxuICAgIFR1aVdpdGhPcHRpb25hbE1pbk1heCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBEQVRFX1RJTUVfU0VQQVJBVE9SLFxuICAgIFRVSV9EQVRFX01PREVfTUFTS0lUT19BREFQVEVSLFxufSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICAgIFRVSV9EQVRFX1RFWFRTLFxuICAgIFRVSV9EQVRFX1RJTUVfVkFMVUVfVFJBTlNGT1JNRVIsXG4gICAgVFVJX0lOUFVUX0RBVEVfT1BUSU9OUyxcbiAgICBUVUlfVElNRV9URVhUUyxcbiAgICB0dWlEYXRlU3RyZWFtV2l0aFRyYW5zZm9ybWVyLFxuICAgIFR1aUlucHV0RGF0ZU9wdGlvbnMsXG59IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1kYXRlLXRpbWUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1kYXRlLXRpbWUudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtZGF0ZS10aW1lLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IoVHVpSW5wdXREYXRlVGltZUNvbXBvbmVudCksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dERhdGVUaW1lQ29tcG9uZW50KSxcbiAgICAgICAgdHVpRGF0ZVN0cmVhbVdpdGhUcmFuc2Zvcm1lcihUVUlfREFURV9USU1FX1ZBTFVFX1RSQU5TRk9STUVSKSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dERhdGVUaW1lQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aUNvbnRyb2w8W1R1aURheSB8IG51bGwsIFR1aVRpbWUgfCBudWxsXT5cbiAgICBpbXBsZW1lbnRzXG4gICAgICAgIFR1aVdpdGhPcHRpb25hbE1pbk1heDxUdWlEYXkgfCBbVHVpRGF5LCBUdWlUaW1lXT4sXG4gICAgICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3Nvclxue1xuICAgIEBWaWV3Q2hpbGQoVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGV4dGZpZWxkPzogVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50O1xuXG4gICAgcHJpdmF0ZSBtb250aDogVHVpTW9udGggfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgbWluOiBUdWlEYXkgfCBbVHVpRGF5LCBUdWlUaW1lXSA9IHRoaXMub3B0aW9ucy5taW47XG5cbiAgICBASW5wdXQoKVxuICAgIG1heDogVHVpRGF5IHwgW1R1aURheSwgVHVpVGltZV0gPSB0aGlzLm9wdGlvbnMubWF4O1xuXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlZEl0ZW1IYW5kbGVyOiBUdWlCb29sZWFuSGFuZGxlcjxUdWlEYXk+ID0gQUxXQVlTX0ZBTFNFX0hBTkRMRVI7XG5cbiAgICBASW5wdXQoKVxuICAgIGRlZmF1bHRBY3RpdmVZZWFyTW9udGggPSBUdWlNb250aC5jdXJyZW50TG9jYWwoKTtcblxuICAgIEBJbnB1dCgpXG4gICAgdGltZU1vZGU6IFR1aVRpbWVNb2RlID0gJ0hIOk1NJztcblxuICAgIG9wZW4gPSBmYWxzZTtcblxuICAgIHJlYWRvbmx5IHR5cGUhOiBUdWlDb250ZXh0V2l0aEltcGxpY2l0PFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmU+O1xuXG4gICAgcmVhZG9ubHkgZmlsbGVyJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZGF0ZVRleHRzJC5waXBlKFxuICAgICAgICAgICAgbWFwKGRhdGVUZXh0cyA9PlxuICAgICAgICAgICAgICAgIGNoYW5nZURhdGVTZXBhcmF0b3IoZGF0ZVRleHRzW3RoaXMuZGF0ZUZvcm1hdF0sIHRoaXMuZGF0ZVNlcGFyYXRvciksXG4gICAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgICB0aGlzLnRpbWVUZXh0cyQucGlwZShtYXAodGV4dHMgPT4gdGV4dHNbdGhpcy50aW1lTW9kZV0pKSxcbiAgICBdKS5waXBlKG1hcChmaWxsZXJzID0+IHRoaXMuZ2V0RGF0ZVRpbWVTdHJpbmcoLi4uZmlsbGVycykpKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfU0laRSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGRTaXplOiBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxuICAgICAgICBASW5qZWN0KFRVSV9EQVRFX0ZPUk1BVCkgcmVhZG9ubHkgZGF0ZUZvcm1hdDogVHVpRGF0ZU1vZGUsXG4gICAgICAgIEBJbmplY3QoVFVJX0RBVEVfU0VQQVJBVE9SKSByZWFkb25seSBkYXRlU2VwYXJhdG9yOiBzdHJpbmcsXG4gICAgICAgIEBJbmplY3QoVFVJX1RJTUVfVEVYVFMpXG4gICAgICAgIHJlYWRvbmx5IHRpbWVUZXh0cyQ6IE9ic2VydmFibGU8UmVjb3JkPFR1aVRpbWVNb2RlLCBzdHJpbmc+PixcbiAgICAgICAgQEluamVjdChUVUlfREFURV9URVhUUylcbiAgICAgICAgcmVhZG9ubHkgZGF0ZVRleHRzJDogT2JzZXJ2YWJsZTxSZWNvcmQ8VHVpRGF0ZU1vZGUsIHN0cmluZz4+LFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFRVSV9EQVRFX1RJTUVfVkFMVUVfVFJBTlNGT1JNRVIpXG4gICAgICAgIG92ZXJyaWRlIHJlYWRvbmx5IHZhbHVlVHJhbnNmb3JtZXI6IEFic3RyYWN0VHVpVmFsdWVUcmFuc2Zvcm1lcjxcbiAgICAgICAgICAgIFtUdWlEYXkgfCBudWxsLCBUdWlUaW1lIHwgbnVsbF1cbiAgICAgICAgPiB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoVFVJX0lOUFVUX0RBVEVfT1BUSU9OUylcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBUdWlJbnB1dERhdGVPcHRpb25zLFxuICAgICAgICBASW5qZWN0KFRVSV9JU19NT0JJTEUpIHJlYWRvbmx5IGlzTW9iaWxlOiBib29sZWFuLFxuICAgICAgICBASW5qZWN0KFRVSV9JU19JT1MpIHJlYWRvbmx5IGlzSW9zOiBib29sZWFuLFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjZHIsIHZhbHVlVHJhbnNmb3JtZXIpO1xuICAgIH1cblxuICAgIGdldCBmaWxsZXJMZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIERBVEVfRklMTEVSX0xFTkdUSCArIERBVEVfVElNRV9TRVBBUkFUT1IubGVuZ3RoICsgdGhpcy50aW1lTW9kZS5sZW5ndGg7XG4gICAgfVxuXG4gICAgZ2V0IG1hc2tPcHRpb25zKCk6IE1hc2tpdG9PcHRpb25zIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlTWFzayhcbiAgICAgICAgICAgIHRoaXMubWluLFxuICAgICAgICAgICAgdGhpcy5tYXgsXG4gICAgICAgICAgICB0aGlzLnRpbWVNb2RlLFxuICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICAgICAgdGhpcy5kYXRlU2VwYXJhdG9yLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dGZpZWxkID8gdGhpcy50ZXh0ZmllbGQubmF0aXZlRm9jdXNhYmxlRWxlbWVudCA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMudGV4dGZpZWxkICYmIHRoaXMudGV4dGZpZWxkLmZvY3VzZWQ7XG4gICAgfVxuXG4gICAgZ2V0IGNhbGVuZGFySWNvbigpOiBUdWlJbnB1dERhdGVPcHRpb25zWydpY29uJ10ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmljb247XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgbmF0aXZlUGlja2VyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLm9wdGlvbnMubmF0aXZlUGlja2VyICYmIHRoaXMuaXNNb2JpbGU7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dOYXRpdmVQaWNrZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZVBpY2tlciAmJiB0aGlzLnRpbWVNb2RlID09PSAnSEg6TU0nO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZFZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHt2YWx1ZSwgbmF0aXZlVmFsdWUsIHRpbWVNb2RlfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IFtkYXRlLCB0aW1lXSA9IHZhbHVlO1xuICAgICAgICBjb25zdCBoYXNUaW1lSW5wdXRDaGFycyA9IG5hdGl2ZVZhbHVlLmxlbmd0aCA+IERBVEVfRklMTEVSX0xFTkdUSDtcblxuICAgICAgICBpZiAoIWRhdGUgfHwgKCF0aW1lICYmIGhhc1RpbWVJbnB1dENoYXJzKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5hdGl2ZVZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0ZVRpbWVTdHJpbmcoZGF0ZSwgdGltZSwgdGltZU1vZGUpO1xuICAgIH1cblxuICAgIGdldCBjYWxlbmRhclZhbHVlKCk6IFR1aURheSB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZVswXTtcbiAgICB9XG5cbiAgICBnZXQgY2FsZW5kYXJNaW5EYXkoKTogVHVpRGF5IHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5taW4pID8gdGhpcy5taW5bMF0gOiB0aGlzLm1pbjtcbiAgICB9XG5cbiAgICBnZXQgY2FsZW5kYXJNYXhEYXkoKTogVHVpRGF5IHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5tYXgpID8gdGhpcy5tYXhbMF0gOiB0aGlzLm1heDtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRBY3RpdmVZZWFyTW9udGgoKTogVHVpTW9udGgge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5tb250aCB8fFxuICAgICAgICAgICAgdGhpcy52YWx1ZVswXSB8fFxuICAgICAgICAgICAgdHVpRGF0ZUNsYW1wKFxuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEFjdGl2ZVllYXJNb250aCxcbiAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KHRoaXMubWluKSA/IHRoaXMubWluWzBdIDogdGhpcy5taW4sXG4gICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheSh0aGlzLm1heCkgPyB0aGlzLm1heFswXSA6IHRoaXMubWF4LFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50ID8gdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LnZhbHVlIDogJyc7XG4gICAgfVxuXG4gICAgc2V0IG5hdGl2ZVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBzaXplKCk6IFR1aVNpemVMIHwgVHVpU2l6ZVMge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0ZmllbGRTaXplLnNpemU7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMub25PcGVuQ2hhbmdlKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA8IERBVEVfRklMTEVSX0xFTkdUSCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IFtudWxsLCBudWxsXTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgW2RhdGUsIHRpbWVdID0gdmFsdWUuc3BsaXQoREFURV9USU1FX1NFUEFSQVRPUik7XG4gICAgICAgIGNvbnN0IHBhcnNlZERhdGUgPSBUdWlEYXkubm9ybWFsaXplUGFyc2UoZGF0ZSwgdGhpcy5kYXRlRm9ybWF0KTtcbiAgICAgICAgY29uc3QgcGFyc2VkVGltZSA9XG4gICAgICAgICAgICB0aW1lICYmIHRpbWUubGVuZ3RoID09PSB0aGlzLnRpbWVNb2RlLmxlbmd0aFxuICAgICAgICAgICAgICAgID8gVHVpVGltZS5mcm9tU3RyaW5nKHRpbWUpXG4gICAgICAgICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLnZhbHVlID0gW3BhcnNlZERhdGUsIHBhcnNlZFRpbWVdO1xuICAgIH1cblxuICAgIG9uRGF5Q2xpY2soZGF5OiBUdWlEYXkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbW9kaWZpZWRUaW1lID0gdGhpcy52YWx1ZVsxXSAmJiB0aGlzLmNsYW1wVGltZSh0aGlzLnZhbHVlWzFdLCBkYXkpO1xuXG4gICAgICAgIHRoaXMudmFsdWUgPSBbZGF5LCBtb2RpZmllZFRpbWVdO1xuICAgICAgICB0aGlzLnVwZGF0ZU5hdGl2ZVZhbHVlKGRheSk7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uTW9udGhDaGFuZ2UobW9udGg6IFR1aU1vbnRoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW9udGggPSBtb250aDtcbiAgICB9XG5cbiAgICBvbk9wZW5DaGFuZ2Uob3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBvcGVuO1xuICAgIH1cblxuICAgIG9uRm9jdXNlZChmb2N1c2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlRm9jdXNlZChmb2N1c2VkKTtcblxuICAgICAgICBpZiAoZm9jdXNlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gdGhpcy50cmltVHJhaWxpbmdTZXBhcmF0b3IodGhpcy5uYXRpdmVWYWx1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMudmFsdWVbMF0gPT09IG51bGwgfHxcbiAgICAgICAgICAgIHRoaXMudmFsdWVbMV0gIT09IG51bGwgfHxcbiAgICAgICAgICAgIHRoaXMubmF0aXZlVmFsdWUubGVuZ3RoIDw9IHRoaXMuZmlsbGVyTGVuZ3RoICsgREFURV9USU1FX1NFUEFSQVRPUi5sZW5ndGggfHxcbiAgICAgICAgICAgIHRoaXMudGltZU1vZGUgPT09ICdISDpNTSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBbLCB0aW1lXSA9IHRoaXMubmF0aXZlVmFsdWUuc3BsaXQoREFURV9USU1FX1NFUEFSQVRPUik7XG5cbiAgICAgICAgaWYgKCF0aW1lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJzZWRUaW1lID0gVHVpVGltZS5mcm9tU3RyaW5nKHRpbWUpO1xuXG4gICAgICAgIHRoaXMudmFsdWUgPSBbdGhpcy52YWx1ZVswXSwgcGFyc2VkVGltZV07XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgc2V0RGlzYWJsZWRTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuc2V0RGlzYWJsZWRTdGF0ZSgpO1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBbVHVpRGF5IHwgbnVsbCwgVHVpVGltZSB8IG51bGxdIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcblxuICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID1cbiAgICAgICAgICAgIHRoaXMudmFsdWUgJiYgKHRoaXMudmFsdWVbMF0gfHwgdGhpcy52YWx1ZVsxXSkgPyB0aGlzLmNvbXB1dGVkVmFsdWUgOiAnJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RmFsbGJhY2tWYWx1ZSgpOiBbVHVpRGF5IHwgbnVsbCwgVHVpVGltZSB8IG51bGxdIHtcbiAgICAgICAgcmV0dXJuIFtudWxsLCBudWxsXTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdmFsdWVJZGVudGljYWxDb21wYXJhdG9yKFxuICAgICAgICBvbGRWYWx1ZTogW1R1aURheSB8IG51bGwsIFR1aVRpbWUgfCBudWxsXSxcbiAgICAgICAgbmV3VmFsdWU6IFtUdWlEYXkgfCBudWxsLCBUdWlUaW1lIHwgbnVsbF0sXG4gICAgKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0dWlOdWxsYWJsZVNhbWUob2xkVmFsdWVbMF0sIG5ld1ZhbHVlWzBdLCAoYSwgYikgPT4gYS5kYXlTYW1lKGIpKSAmJlxuICAgICAgICAgICAgdHVpTnVsbGFibGVTYW1lKG9sZFZhbHVlWzFdLCBuZXdWYWx1ZVsxXSwgKGEsIGIpID0+IFN0cmluZyhhKSA9PT0gU3RyaW5nKGIpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVNYXNrKFxuICAgICAgICBtaW46IFR1aURheSB8IFtUdWlEYXksIFR1aVRpbWVdLFxuICAgICAgICBtYXg6IFR1aURheSB8IFtUdWlEYXksIFR1aVRpbWVdLFxuICAgICAgICB0aW1lTW9kZTogVHVpVGltZU1vZGUsXG4gICAgICAgIGRhdGVGb3JtYXQ6IFR1aURhdGVNb2RlLFxuICAgICAgICBkYXRlU2VwYXJhdG9yOiBzdHJpbmcsXG4gICAgKTogTWFza2l0b09wdGlvbnMge1xuICAgICAgICByZXR1cm4gbWFza2l0b0RhdGVUaW1lT3B0aW9uc0dlbmVyYXRvcih7XG4gICAgICAgICAgICB0aW1lTW9kZSxcbiAgICAgICAgICAgIGRhdGVTZXBhcmF0b3IsXG4gICAgICAgICAgICBkYXRlTW9kZTogVFVJX0RBVEVfTU9ERV9NQVNLSVRPX0FEQVBURVJbZGF0ZUZvcm1hdF0sXG4gICAgICAgICAgICBtaW46IHRoaXMudG9OYXRpdmVEYXRlKG1pbiksXG4gICAgICAgICAgICBtYXg6IHRoaXMudG9OYXRpdmVEYXRlKG1heCksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBnZXREYXRlVGltZVN0cmluZyhcbiAgICAgICAgZGF0ZTogVHVpRGF5IHwgc3RyaW5nLFxuICAgICAgICB0aW1lOiBUdWlUaW1lIHwgc3RyaW5nIHwgbnVsbCxcbiAgICAgICAgdGltZU1vZGU6IFR1aVRpbWVNb2RlID0gJ0hIOk1NJyxcbiAgICApOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkYXRlU3RyaW5nID1cbiAgICAgICAgICAgIGRhdGUgaW5zdGFuY2VvZiBUdWlEYXlcbiAgICAgICAgICAgICAgICA/IGRhdGUudG9TdHJpbmcodGhpcy5kYXRlRm9ybWF0LCB0aGlzLmRhdGVTZXBhcmF0b3IpXG4gICAgICAgICAgICAgICAgOiBkYXRlO1xuICAgICAgICBjb25zdCB0aW1lU3RyaW5nID0gdGltZSBpbnN0YW5jZW9mIFR1aVRpbWUgPyB0aW1lLnRvU3RyaW5nKHRpbWVNb2RlKSA6IHRpbWUgfHwgJyc7XG5cbiAgICAgICAgcmV0dXJuIHRpbWVTdHJpbmdcbiAgICAgICAgICAgID8gYCR7ZGF0ZVN0cmluZ30ke0RBVEVfVElNRV9TRVBBUkFUT1J9JHt0aW1lU3RyaW5nfWBcbiAgICAgICAgICAgIDogZGF0ZVN0cmluZztcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZU5hdGl2ZVZhbHVlKGRheTogVHVpRGF5KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLm5hdGl2ZVZhbHVlLnNwbGl0KERBVEVfVElNRV9TRVBBUkFUT1IpWzFdIHx8ICcnO1xuXG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSB0aGlzLmdldERhdGVUaW1lU3RyaW5nKGRheSwgdGltZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGFtcFRpbWUodGltZTogVHVpVGltZSwgZGF5OiBUdWlEYXkpOiBUdWlUaW1lIHtcbiAgICAgICAgY29uc3QgbXMgPSB0aW1lLnRvQWJzb2x1dGVNaWxsaXNlY29uZHMoKTtcbiAgICAgICAgY29uc3QgbWluID1cbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkodGhpcy5taW4pICYmIGRheS5kYXlTYW1lKHRoaXMuY2FsZW5kYXJNaW5EYXkpXG4gICAgICAgICAgICAgICAgPyB0aGlzLm1pblsxXS50b0Fic29sdXRlTWlsbGlzZWNvbmRzKClcbiAgICAgICAgICAgICAgICA6IC1JbmZpbml0eTtcbiAgICAgICAgY29uc3QgbWF4ID1cbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkodGhpcy5tYXgpICYmIGRheS5kYXlTYW1lKHRoaXMuY2FsZW5kYXJNYXhEYXkpXG4gICAgICAgICAgICAgICAgPyB0aGlzLm1heFsxXS50b0Fic29sdXRlTWlsbGlzZWNvbmRzKClcbiAgICAgICAgICAgICAgICA6IEluZmluaXR5O1xuXG4gICAgICAgIHJldHVybiBUdWlUaW1lLmZyb21BYnNvbHV0ZU1pbGxpc2Vjb25kcyh0dWlDbGFtcChtcywgbWluLCBtYXgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyaW1UcmFpbGluZ1NlcGFyYXRvcih2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoXG4gICAgICAgICAgICBuZXcgUmVnRXhwKGAoXFxcXCR7dGhpcy5kYXRlU2VwYXJhdG9yfXwke0RBVEVfVElNRV9TRVBBUkFUT1J9fFxcXFwuKSRgKSxcbiAgICAgICAgICAgICcnLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9OYXRpdmVEYXRlKHZhbHVlOiBUdWlEYXkgfCBbVHVpRGF5LCBUdWlUaW1lXSk6IERhdGUge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUudG9Mb2NhbE5hdGl2ZURhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IFt7eWVhciwgbW9udGgsIGRheX0sIHtob3VycywgbWludXRlcywgc2Vjb25kcywgbXN9XSA9IHZhbHVlO1xuXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5LCBob3VycywgbWludXRlcywgc2Vjb25kcywgbXMpO1xuICAgIH1cbn1cbiIsIjx0dWktaG9zdGVkLWRyb3Bkb3duXG4gICAgY2xhc3M9XCJ0LWhvc3RlZFwiXG4gICAgW2Nhbk9wZW5dPVwiaW50ZXJhY3RpdmUgJiYgIXNob3dOYXRpdmVQaWNrZXJcIlxuICAgIFtjb250ZW50XT1cImRyb3Bkb3duXCJcbiAgICBbb3Blbl09XCJvcGVuICYmIGludGVyYWN0aXZlXCJcbiAgICAob3BlbkNoYW5nZSk9XCJvbk9wZW5DaGFuZ2UoJGV2ZW50KVwiXG4+XG4gICAgPHR1aS1wcmltaXRpdmUtdGV4dGZpZWxkXG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtZGF0ZS10aW1lX190ZXh0ZmllbGRcIlxuICAgICAgICB0dWlWYWx1ZUFjY2Vzc29yXG4gICAgICAgIGNsYXNzPVwidC10ZXh0ZmllbGRcIlxuICAgICAgICBbdHVpVGV4dGZpZWxkSWNvbl09XCJjYWxlbmRhckljb24gJiYgaWNvbkNvbnRlbnRcIlxuICAgICAgICBbdHVpVGV4dGZpZWxkRmlsbGVyXT1cIihmaWxsZXIkIHwgYXN5bmMpIHx8ICcnXCJcbiAgICAgICAgW3BzZXVkb0ZvY3VzXT1cInBzZXVkb0ZvY3VzXCJcbiAgICAgICAgW3BzZXVkb0hvdmVyXT1cInBzZXVkb0hvdmVyXCJcbiAgICAgICAgW2ludmFsaWRdPVwiY29tcHV0ZWRJbnZhbGlkXCJcbiAgICAgICAgW25hdGl2ZUlkXT1cIm5hdGl2ZUlkXCJcbiAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImNvbXB1dGVkRGlzYWJsZWRcIlxuICAgICAgICBbbWFza2l0b109XCJtYXNrT3B0aW9uc1wiXG4gICAgICAgIFt2YWx1ZV09XCJjb21wdXRlZFZhbHVlXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChmb2N1c2VkQ2hhbmdlKT1cIm9uRm9jdXNlZCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICAgIHNlbGVjdD1cImlucHV0XCJcbiAgICAgICAgICAgIG5nUHJvamVjdEFzPVwiaW5wdXRcIlxuICAgICAgICA+PC9uZy1jb250ZW50PlxuICAgIDwvdHVpLXByaW1pdGl2ZS10ZXh0ZmllbGQ+XG5cbiAgICA8bmctdGVtcGxhdGUgI2ljb25Db250ZW50PlxuICAgICAgICA8dHVpLXN2Z1xuICAgICAgICAgICAgKnBvbHltb3JwaGV1c091dGxldD1cImNhbGVuZGFySWNvbiBhcyBzcmM7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHNpemV9XCJcbiAgICAgICAgICAgIHR1aVdyYXBwZXJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJpY29uXCJcbiAgICAgICAgICAgIFtjbGFzcy50LWljb25dPVwiIWNvbXB1dGVkRGlzYWJsZWRcIlxuICAgICAgICAgICAgW3NyY109XCJzcmNcIlxuICAgICAgICA+PC90dWktc3ZnPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd05hdGl2ZVBpY2tlclwiXG4gICAgICAgICAgICB0dWlEYXRlVGltZVxuICAgICAgICAgICAgY2xhc3M9XCJ0LW5hdGl2ZS1pbnB1dFwiXG4gICAgICAgIC8+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAjZHJvcGRvd249XCJwb2x5bW9ycGhldXNcIlxuICAgICAgICBbcG9seW1vcnBoZXVzXT1cInR5cGVcIlxuICAgID5cbiAgICAgICAgPHR1aS1jYWxlbmRhclxuICAgICAgICAgICAgdHVpUHJldmVudERlZmF1bHQ9XCJtb3VzZWRvd25cIlxuICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1kYXRlLXRpbWVfX2NhbGVuZGFyXCJcbiAgICAgICAgICAgIFttaW5dPVwiY2FsZW5kYXJNaW5EYXlcIlxuICAgICAgICAgICAgW21heF09XCJjYWxlbmRhck1heERheVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJkaXNhYmxlZEl0ZW1IYW5kbGVyXCJcbiAgICAgICAgICAgIFttb250aF09XCJjb21wdXRlZEFjdGl2ZVllYXJNb250aFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiY2FsZW5kYXJWYWx1ZVwiXG4gICAgICAgICAgICAoZGF5Q2xpY2spPVwib25EYXlDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIChtb250aENoYW5nZSk9XCJvbk1vbnRoQ2hhbmdlKCRldmVudClcIlxuICAgICAgICA+PC90dWktY2FsZW5kYXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvdHVpLWhvc3RlZC1kcm9wZG93bj5cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, EventEmitter, forwardRef, HostListener, Inject, Input, Optional, Output, Self, TemplateRef, ViewChild, ViewEncapsulation, } from '@angular/core';
3
3
  import { NgControl } from '@angular/forms';
4
- import { AbstractTuiNullableControl, EMPTY_ARRAY, TUI_IS_MOBILE, tuiAsFocusableItemAccessor, tuiDefaultProp, tuiIsNativeFocused, tuiPure, } from '@taiga-ui/cdk';
4
+ import { AbstractTuiNullableControl, EMPTY_ARRAY, TUI_IS_MOBILE, tuiAsFocusableItemAccessor, tuiIsNativeFocused, tuiPure, } from '@taiga-ui/cdk';
5
5
  import { MODE_PROVIDER } from '@taiga-ui/core';
6
6
  import { TUI_INPUT_FILE_TEXTS } from '@taiga-ui/kit/tokens';
7
7
  import { tuiGetAcceptArray } from '@taiga-ui/kit/utils/files';
@@ -165,18 +165,6 @@ export class TuiInputFilesComponent extends AbstractTuiNullableControl {
165
165
  }
166
166
  TuiInputFilesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputFilesComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token: TUI_IS_MOBILE }, { token: TUI_INPUT_FILE_TEXTS }, { token: TUI_INPUT_FILES_OPTIONS }], target: i0.ɵɵFactoryTarget.Component });
167
167
  TuiInputFilesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiInputFilesComponent, selector: "tui-input-files", inputs: { link: "link", label: "label", accept: "accept", multiple: "multiple", size: "size", maxFileSize: "maxFileSize" }, outputs: { reject: "reject" }, host: { listeners: { "focusin": "onFocused(true)", "focusout": "onFocused(false)", "change": "onFilesSelected()" } }, providers: [MODE_PROVIDER, tuiAsFocusableItemAccessor(TuiInputFilesComponent)], queries: [{ propertyName: "nativeInput", first: true, predicate: i0.forwardRef(function () { return TuiInputFilesDirective; }), descendants: true }, { propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "formatRejection", first: true, predicate: ["formatRejection"], descendants: true }, { propertyName: "maxSizeRejection", first: true, predicate: ["maxSizeRejection"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n tuiWrapper\n appearance=\"input-file\"\n class=\"t-wrapper\"\n [class._mobile]=\"isMobile\"\n [focus]=\"computedFocused\"\n [hover]=\"pseudoHover || fileDragged || null\"\n [active]=\"pseudoActive\"\n [disabled]=\"computedDisabled\"\n>\n <label\n automation-id=\"tui-input-file__label\"\n class=\"t-label\"\n (tuiDroppableDropped)=\"onDropped($event)\"\n (tuiDroppableDragOverChange)=\"onDragOver($event)\"\n (mousedown.prevent.silent)=\"(0)\"\n >\n <div class=\"t-description\">\n <ng-container *ngTemplateOutlet=\"template || null; context: {$implicit: fileDragged}\"></ng-container>\n <div *ngIf=\"!template\">\n <a tuiLink>\n <ng-container *polymorpheusOutlet=\"computedLink$ | async as text\">\n {{ text }}\n </ng-container>\n </a>\n <span\n *polymorpheusOutlet=\"computedLabel$ | async as text\"\n [textContent]=\"text\"\n ></span>\n </div>\n </div>\n <ng-container *ngIf=\"!readOnly && !computedDisabled\">\n <ng-content select=\"input\"></ng-content>\n <input\n #input\n type=\"file\"\n title=\"\"\n class=\"t-native\"\n [id]=\"id\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n [tuiFocusable]=\"focusable\"\n />\n </ng-container>\n </label>\n</div>\n\n<ng-template #formatRejection>\n {{ (inputFileTexts$ | async)?.formatRejectionReason || '' }}\n</ng-template>\n\n<ng-template #maxSizeRejection>\n {{ maxFileSize | tuiMaxSizeRejectionError | async }}\n</ng-template>\n", styles: ["tui-input-files{display:block;min-height:var(--tui-height-l);border-radius:var(--tui-radius-m);font:var(--tui-font-text-m)}tui-input-files .t-native{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}tui-input-files .t-native::-webkit-file-upload-button{display:none}tui-input-files .t-native+.t-native{display:none}tui-input-files .t-label{width:100%;text-align:center}tui-input-files .t-description{display:flex;justify-content:center;align-items:center;height:100%;padding:1rem 0;box-sizing:border-box}[tuiWrapper][data-appearance=input-file]{background:transparent;word-wrap:break-word;color:var(--tui-text-02);min-height:inherit;border-radius:inherit;padding:0 .5rem;box-sizing:border-box}[tuiWrapper][data-appearance=input-file]:after{border:1px dashed;color:var(--tui-link)}[tuiWrapper][data-appearance=input-file]._mobile:after{border:1px solid}[tuiWrapper][data-appearance=input-file]:disabled:disabled:after,[tuiWrapper][data-appearance=input-file][data-state=disabled][data-state=disabled]:after{color:var(--tui-text-03)}[tuiWrapper][data-appearance=input-file]:focus-visible:focus-visible:after{border-style:solid;border-width:2px;color:var(--tui-focus)}[tuiWrapper][data-appearance=input-file]._focused._focused:after{border-style:solid;border-width:2px;color:var(--tui-focus)}[tuiWrapper][data-appearance=input-file][data-mode=onDark]{color:var(--tui-text-01-night)}[tuiWrapper][data-appearance=input-file][data-mode=onDark]:after{color:var(--tui-text-01-night)}[tuiWrapper][data-appearance=input-file][data-mode=onDark]:focus-visible:focus-visible:after{color:var(--tui-text-01-night)}[tuiWrapper][data-appearance=input-file][data-mode=onDark]._focused._focused:after{color:var(--tui-text-01-night)}@media (hover: hover){[tuiWrapper][data-appearance=input-file][data-mode=onDark]:hover:not(._no-hover),[tuiWrapper][data-appearance=input-file][data-mode=onDark][data-state=hover]{background:var(--tui-clear-inverse-hover)}[tuiWrapper][data-appearance=input-file][data-mode=onDark]:hover:not(._no-hover):after,[tuiWrapper][data-appearance=input-file][data-mode=onDark][data-state=hover]:after{color:var(--tui-text-03-night)}}[tuiWrapper][data-appearance=input-file][data-mode=onDark]:active:not(._no-active),[tuiWrapper][data-appearance=input-file][data-mode=onDark][data-state=active],[tuiWrapper][data-appearance=input-file][data-mode=onDark][data-state=active]:hover{background:var(--tui-clear-inverse-active)}[tuiWrapper][data-appearance=input-file][data-mode=onDark]:active:not(._no-active):after,[tuiWrapper][data-appearance=input-file][data-mode=onDark][data-state=active]:after,[tuiWrapper][data-appearance=input-file][data-mode=onDark][data-state=active]:hover:after{color:var(--tui-text-03-night)}[tuiWrapper][data-appearance=input-file][data-mode=onLight]{color:var(--tui-text-01)}[tuiWrapper][data-appearance=input-file][data-mode=onLight]:after{color:var(--tui-text-01)}@media (hover: hover){[tuiWrapper][data-appearance=input-file][data-mode=onLight]:hover:not(._no-hover),[tuiWrapper][data-appearance=input-file][data-mode=onLight][data-state=hover]{background:var(--tui-clear-hover)}[tuiWrapper][data-appearance=input-file][data-mode=onLight]:hover:not(._no-hover):after,[tuiWrapper][data-appearance=input-file][data-mode=onLight][data-state=hover]:after{color:var(--tui-text-03)}}[tuiWrapper][data-appearance=input-file][data-mode=onLight]:active:not(._no-active),[tuiWrapper][data-appearance=input-file][data-mode=onLight][data-state=active],[tuiWrapper][data-appearance=input-file][data-mode=onLight][data-state=active]:hover{background:var(--tui-clear-active)}[tuiWrapper][data-appearance=input-file][data-mode=onLight]:active:not(._no-active):after,[tuiWrapper][data-appearance=input-file][data-mode=onLight][data-state=active]:after,[tuiWrapper][data-appearance=input-file][data-mode=onLight][data-state=active]:hover:after{color:var(--tui-text-03)}@media (hover: hover){[tuiWrapper][data-appearance=input-file]:hover:not(._no-hover),[tuiWrapper][data-appearance=input-file][data-state=hover]{background:var(--tui-secondary)}[tuiWrapper][data-appearance=input-file]:hover:not(._no-hover):after,[tuiWrapper][data-appearance=input-file][data-state=hover]:after{color:var(--tui-link-hover)}}[tuiWrapper][data-appearance=input-file]:active:not(._no-active),[tuiWrapper][data-appearance=input-file][data-state=active],[tuiWrapper][data-appearance=input-file][data-state=active]:hover{background:var(--tui-secondary-hover)}\n"], components: [{ type: i1.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }], directives: [{ type: i1.TuiWrapperDirective, selector: "[tuiWrapper]", inputs: ["disabled", "readOnly", "hover", "active", "focus", "invalid", "appearance"] }, { type: i2.TuiDroppableDirective, selector: "[tuiDroppableDropped], [tuiDroppableDragOverChange]", outputs: ["tuiDroppableDropped", "tuiDroppableDragOverChange"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { type: i2.TuiFocusableDirective, selector: "[tuiFocusable]", inputs: ["tuiFocusable"] }], pipes: { "async": i3.AsyncPipe, "tuiMaxSizeRejectionError": i5.TuiMaxSizeRejectionErrorPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
168
- __decorate([
169
- tuiDefaultProp()
170
- ], TuiInputFilesComponent.prototype, "accept", void 0);
171
- __decorate([
172
- tuiDefaultProp()
173
- ], TuiInputFilesComponent.prototype, "multiple", void 0);
174
- __decorate([
175
- tuiDefaultProp()
176
- ], TuiInputFilesComponent.prototype, "size", void 0);
177
- __decorate([
178
- tuiDefaultProp()
179
- ], TuiInputFilesComponent.prototype, "maxFileSize", void 0);
180
168
  __decorate([
181
169
  tuiPure
182
170
  ], TuiInputFilesComponent.prototype, "computeLink$", null);
@@ -254,4 +242,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
254
242
  type: HostListener,
255
243
  args: ['change']
256
244
  }], computeLink$: [], computeLabel$: [], getValueArray: [] } });
257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZmlsZXMvaW5wdXQtZmlsZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZmlsZXMvaW5wdXQtZmlsZXMudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNKLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsMEJBQTBCLEVBQzFCLFdBQVcsRUFDWCxhQUFhLEVBQ2IsMEJBQTBCLEVBRTFCLGNBQWMsRUFFZCxrQkFBa0IsRUFFbEIsT0FBTyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxhQUFhLEVBQVcsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RCxPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQywyQ0FBMkM7QUFDM0MsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFDLHVCQUF1QixFQUF1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QUZWLEtBQUs7Z0JBS0csTUFBTTtzQkFEZCxNQUFNO2dCQTJFUCxTQUFTO3NCQUZSLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDOztzQkFDaEMsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUM7Z0JBTW5DLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxRQUFRO2dCQTRCZCxZQUFZLE1BaUJaLGFBQWEsTUEwQmIsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpTnVsbGFibGVDb250cm9sLFxuICAgIEVNUFRZX0FSUkFZLFxuICAgIFRVSV9JU19NT0JJTEUsXG4gICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IsXG4gICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdCxcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgdHVpSXNOYXRpdmVGb2N1c2VkLFxuICAgIFR1aU5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQsXG4gICAgdHVpUHVyZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge01PREVfUFJPVklERVIsIFR1aVNpemVMfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1R1aUZpbGVMaWtlfSBmcm9tICdAdGFpZ2EtdWkva2l0L2ludGVyZmFjZXMnO1xuaW1wb3J0IHtUVUlfSU5QVVRfRklMRV9URVhUU30gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHt0dWlHZXRBY2NlcHRBcnJheX0gZnJvbSAnQHRhaWdhLXVpL2tpdC91dGlscy9maWxlcyc7XG5pbXBvcnQge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5pbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tY3ljbGVcbmltcG9ydCB7VHVpSW5wdXRGaWxlc0RpcmVjdGl2ZX0gZnJvbSAnLi9pbnB1dC1maWxlcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHtUVUlfSU5QVVRfRklMRVNfT1BUSU9OUywgVHVpSW5wdXRGaWxlc09wdGlvbnN9IGZyb20gJy4vaW5wdXQtZmlsZXMub3B0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHVpLWlucHV0LWZpbGVzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtZmlsZXMudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtZmlsZXMuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbTU9ERV9QUk9WSURFUiwgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IoVHVpSW5wdXRGaWxlc0NvbXBvbmVudCldLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dEZpbGVzQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbDxUdWlGaWxlTGlrZSB8IHJlYWRvbmx5IFR1aUZpbGVMaWtlW10+XG4gICAgaW1wbGVtZW50cyBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3JcbntcbiAgICBAVmlld0NoaWxkKCdpbnB1dCcpXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dD86IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBwcml2YXRlIGRhdGFUcmFuc2ZlcjogRGF0YVRyYW5zZmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gVHVpSW5wdXRGaWxlc0RpcmVjdGl2ZSkpXG4gICAgcmVhZG9ubHkgbmF0aXZlSW5wdXQ/OiBUdWlJbnB1dEZpbGVzRGlyZWN0aXZlO1xuXG4gICAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZilcbiAgICByZWFkb25seSB0ZW1wbGF0ZT86IFRlbXBsYXRlUmVmPFR1aUNvbnRleHRXaXRoSW1wbGljaXQ8Ym9vbGVhbj4+O1xuXG4gICAgQFZpZXdDaGlsZCgnZm9ybWF0UmVqZWN0aW9uJylcbiAgICByZWFkb25seSBmb3JtYXRSZWplY3Rpb24hOiBQb2x5bW9ycGhldXNDb250ZW50O1xuXG4gICAgQFZpZXdDaGlsZCgnbWF4U2l6ZVJlamVjdGlvbicpXG4gICAgcmVhZG9ubHkgbWF4U2l6ZVJlamVjdGlvbiE6IFBvbHltb3JwaGV1c0NvbnRlbnQ7XG5cbiAgICBASW5wdXQoKVxuICAgIGxpbms6IFBvbHltb3JwaGV1c0NvbnRlbnQ7XG5cbiAgICBASW5wdXQoKVxuICAgIGxhYmVsOiBQb2x5bW9ycGhldXNDb250ZW50O1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQ6IHVzZSBgPGlucHV0IHR1aUlucHV0RmlsZXMgYWNjZXB0PVwiaW1hZ2UvKlwiIC8+YFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBhY2NlcHQgPSB0aGlzLm9wdGlvbnMuYWNjZXB0cztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkOiB1c2UgYDxpbnB1dCB0dWlJbnB1dEZpbGVzIG11bHRpcGxlIC8+YFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBtdWx0aXBsZSA9IHRoaXMub3B0aW9ucy5tdWx0aXBsZTtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBzaXplOiBUdWlTaXplTCA9IHRoaXMub3B0aW9ucy5zaXplO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1heEZpbGVTaXplID0gdGhpcy5vcHRpb25zLm1heEZpbGVTaXplO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgcmVqZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxUdWlGaWxlTGlrZSB8IHJlYWRvbmx5IFR1aUZpbGVMaWtlW10+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZilcbiAgICAgICAgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChUVUlfSVNfTU9CSUxFKVxuICAgICAgICByZWFkb25seSBpc01vYmlsZTogYm9vbGVhbixcbiAgICAgICAgQEluamVjdChUVUlfSU5QVVRfRklMRV9URVhUUylcbiAgICAgICAgcmVhZG9ubHkgaW5wdXRGaWxlVGV4dHMkOiBPYnNlcnZhYmxlPFxuICAgICAgICAgICAgUmVjb3JkPFxuICAgICAgICAgICAgICAgIHwgJ2RlZmF1bHRMYWJlbE11bHRpcGxlJ1xuICAgICAgICAgICAgICAgIHwgJ2RlZmF1bHRMYWJlbFNpbmdsZSdcbiAgICAgICAgICAgICAgICB8ICdkZWZhdWx0TGlua011bHRpcGxlJ1xuICAgICAgICAgICAgICAgIHwgJ2RlZmF1bHRMaW5rU2luZ2xlJ1xuICAgICAgICAgICAgICAgIHwgJ2Ryb3AnXG4gICAgICAgICAgICAgICAgfCAnZHJvcE11bHRpcGxlJ1xuICAgICAgICAgICAgICAgIHwgJ2Zvcm1hdFJlamVjdGlvblJlYXNvbidcbiAgICAgICAgICAgICAgICB8ICdtYXhTaXplUmVqZWN0aW9uUmVhc29uJyxcbiAgICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgID5cbiAgICAgICAgPixcbiAgICAgICAgQEluamVjdChUVUlfSU5QVVRfRklMRVNfT1BUSU9OUylcbiAgICAgICAgcmVhZG9ubHkgb3B0aW9uczogVHVpSW5wdXRGaWxlc09wdGlvbnMsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGNvbnRyb2wsIGNkcik7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkTXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUlucHV0Py5tdWx0aXBsZSA/PyB0aGlzLm11bHRpcGxlO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZEFjY2VwdCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVJbnB1dD8uYWNjZXB0ID8/IHRoaXMuYWNjZXB0O1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IFR1aU5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQgfHwgbnVsbDtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR1aUlzTmF0aXZlRm9jdXNlZCh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZFBzZXVkb0hvdmVyZWQoKTogYm9vbGVhbiB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5wc2V1ZG9Ib3ZlciA/PyAodGhpcy5maWxlRHJhZ2dlZCB8fCBudWxsKTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRMaW5rJCgpOiBPYnNlcnZhYmxlPFBvbHltb3JwaGV1c0NvbnRlbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcHV0ZUxpbmskKHRoaXMuZmlsZURyYWdnZWQsIHRoaXMuY29tcHV0ZWRNdWx0aXBsZSwgdGhpcy5saW5rKTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRMYWJlbCQoKTogT2JzZXJ2YWJsZTxQb2x5bW9ycGhldXNDb250ZW50PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXB1dGVMYWJlbCQoXG4gICAgICAgICAgICB0aGlzLmlzTW9iaWxlLFxuICAgICAgICAgICAgdGhpcy5maWxlRHJhZ2dlZCxcbiAgICAgICAgICAgIHRoaXMuY29tcHV0ZWRNdWx0aXBsZSxcbiAgICAgICAgICAgIHRoaXMubGFiZWwsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGZpbGVEcmFnZ2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmRhdGFUcmFuc2Zlcj8udHlwZXMuaW5jbHVkZXMoJ0ZpbGVzJyk7XG4gICAgfVxuXG4gICAgZ2V0IGFycmF5VmFsdWUoKTogcmVhZG9ubHkgVHVpRmlsZUxpa2VbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlQXJyYXkodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXNpbicsIFsndHJ1ZSddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgWydmYWxzZSddKVxuICAgIG9uRm9jdXNlZChmb2N1c2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlRm9jdXNlZChmb2N1c2VkKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjaGFuZ2UnKVxuICAgIG9uRmlsZXNTZWxlY3RlZCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLm5hdGl2ZUlucHV0Py5pbnB1dCA/PyB0aGlzLmlucHV0Py5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGlmICghaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJvY2Vzc1NlbGVjdGVkRmlsZXMoaW5wdXQuZmlsZXMpO1xuXG4gICAgICAgIGlucHV0LnZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgb25Ecm9wcGVkKGV2ZW50OiBEYXRhVHJhbnNmZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzU2VsZWN0ZWRGaWxlcyhldmVudC5maWxlcyk7XG4gICAgfVxuXG4gICAgb25EcmFnT3ZlcihkYXRhVHJhbnNmZXI6IERhdGFUcmFuc2ZlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhVHJhbnNmZXIgPSBkYXRhVHJhbnNmZXI7XG4gICAgfVxuXG4gICAgcmVtb3ZlRmlsZShyZW1vdmVkRmlsZTogVHVpRmlsZUxpa2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY29tcHV0ZWRNdWx0aXBsZVxuICAgICAgICAgICAgPyB0aGlzLmFycmF5VmFsdWUuZmlsdGVyKGZpbGUgPT4gZmlsZSAhPT0gcmVtb3ZlZEZpbGUpXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGNvbXB1dGVMaW5rJChcbiAgICAgICAgZmlsZURyYWdnZWQ6IGJvb2xlYW4sXG4gICAgICAgIG11bHRpcGxlOiBib29sZWFuLFxuICAgICAgICBsaW5rOiBQb2x5bW9ycGhldXNDb250ZW50LFxuICAgICk6IE9ic2VydmFibGU8UG9seW1vcnBoZXVzQ29udGVudD4ge1xuICAgICAgICByZXR1cm4gZmlsZURyYWdnZWRcbiAgICAgICAgICAgID8gb2YoJycpXG4gICAgICAgICAgICA6IHRoaXMuaW5wdXRGaWxlVGV4dHMkLnBpcGUoXG4gICAgICAgICAgICAgICAgICBtYXAodGV4dHMgPT5cbiAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSAmJiAhbGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRleHRzLmRlZmF1bHRMaW5rTXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsaW5rIHx8IHRleHRzLmRlZmF1bHRMaW5rU2luZ2xlLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIHByaXZhdGUgY29tcHV0ZUxhYmVsJChcbiAgICAgICAgaXNNb2JpbGU6IGJvb2xlYW4sXG4gICAgICAgIGZpbGVEcmFnZ2VkOiBib29sZWFuLFxuICAgICAgICBtdWx0aXBsZTogYm9vbGVhbixcbiAgICAgICAgbGFiZWw6IFBvbHltb3JwaGV1c0NvbnRlbnQsXG4gICAgKTogT2JzZXJ2YWJsZTxQb2x5bW9ycGhldXNDb250ZW50PiB7XG4gICAgICAgIGlmIChpc01vYmlsZSkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKCcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlRHJhZ2dlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRGaWxlVGV4dHMkLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHRleHRzID0+IChtdWx0aXBsZSA/IHRleHRzLmRyb3BNdWx0aXBsZSA6IHRleHRzLmRyb3ApKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dEZpbGVUZXh0cyQucGlwZShcbiAgICAgICAgICAgIG1hcCh0ZXh0cyA9PlxuICAgICAgICAgICAgICAgIG11bHRpcGxlICYmICFsYWJlbFxuICAgICAgICAgICAgICAgICAgICA/IHRleHRzLmRlZmF1bHRMYWJlbE11bHRpcGxlXG4gICAgICAgICAgICAgICAgICAgIDogbGFiZWwgfHwgdGV4dHMuZGVmYXVsdExhYmVsU2luZ2xlLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIHByaXZhdGUgZ2V0VmFsdWVBcnJheShcbiAgICAgICAgdmFsdWU6IFR1aUZpbGVMaWtlIHwgcmVhZG9ubHkgVHVpRmlsZUxpa2VbXSB8IG51bGwsXG4gICAgKTogcmVhZG9ubHkgVHVpRmlsZUxpa2VbXSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBFTVBUWV9BUlJBWTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NTZWxlY3RlZEZpbGVzKGZpbGVzOiBGaWxlTGlzdCB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgLy8gSUUxMSBhZnRlciBzZWxlY3RpbmcgYSBmaWxlIHRocm91Z2ggdGhlIG9wZW4gZGlhbG9nIGdlbmVyYXRlcyBhIHNlY29uZCBldmVudCBwYXNzaW5nIGFuIGVtcHR5IEZpbGVMaXN0LlxuICAgICAgICBpZiAoIWZpbGVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVycm9yczogUmVjb3JkPFxuICAgICAgICAgICAgJ2Zvcm1hdFJlamVjdGlvbicgfCAnbWF4U2l6ZVJlamVjdGlvbicsXG4gICAgICAgICAgICBQb2x5bW9ycGhldXNDb250ZW50XG4gICAgICAgID4gPSB7XG4gICAgICAgICAgICBmb3JtYXRSZWplY3Rpb246IHRoaXMuZm9ybWF0UmVqZWN0aW9uLFxuICAgICAgICAgICAgbWF4U2l6ZVJlamVjdGlvbjogdGhpcy5tYXhTaXplUmVqZWN0aW9uLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IG5ld0ZpbGVzID0gdGhpcy5jb21wdXRlZE11bHRpcGxlID8gQXJyYXkuZnJvbShmaWxlcykgOiBbZmlsZXNbMF1dO1xuICAgICAgICBjb25zdCB0b29CaWdGaWxlcyA9IG5ld0ZpbGVzLmZpbHRlcihmaWxlID0+IGZpbGUuc2l6ZSA+IHRoaXMubWF4RmlsZVNpemUpO1xuICAgICAgICBjb25zdCB3cm9uZ0Zvcm1hdEZpbGVzID0gbmV3RmlsZXMuZmlsdGVyKFxuICAgICAgICAgICAgZmlsZSA9PiAhdGhpcy5pc0Zvcm1hdEFjY2VwdGFibGUoZmlsZSkgJiYgIXRvb0JpZ0ZpbGVzLmluY2x1ZGVzKGZpbGUpLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBhY2NlcHRlZEZpbGVzID0gbmV3RmlsZXMuZmlsdGVyKFxuICAgICAgICAgICAgZmlsZSA9PiAhdG9vQmlnRmlsZXMuaW5jbHVkZXMoZmlsZSkgJiYgIXdyb25nRm9ybWF0RmlsZXMuaW5jbHVkZXMoZmlsZSksXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRvb0JpZ0ZpbGVzLmxlbmd0aCB8fCB3cm9uZ0Zvcm1hdEZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5yZWplY3RGaWxlcyhbXG4gICAgICAgICAgICAgICAgLi4udG9vQmlnRmlsZXMubWFwKGZpbGUgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBmaWxlLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgIHNpemU6IGZpbGUuc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogZXJyb3JzLm1heFNpemVSZWplY3Rpb24sXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgIC4uLndyb25nRm9ybWF0RmlsZXMubWFwKGZpbGUgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBmaWxlLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgIHNpemU6IGZpbGUuc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogZXJyb3JzLmZvcm1hdFJlamVjdGlvbixcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvbXB1dGVkTXVsdGlwbGVcbiAgICAgICAgICAgID8gWy4uLnRoaXMuYXJyYXlWYWx1ZSwgLi4uYWNjZXB0ZWRGaWxlc11cbiAgICAgICAgICAgIDogYWNjZXB0ZWRGaWxlc1swXSB8fCBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGb3JtYXRBY2NlcHRhYmxlKGZpbGU6IEZpbGUpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbXB1dGVkQWNjZXB0KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IGAuJHsoZmlsZS5uYW1lLnNwbGl0KCcuJykucG9wKCkgfHwgJycpLnRvTG93ZXJDYXNlKCl9YDtcblxuICAgICAgICByZXR1cm4gdHVpR2V0QWNjZXB0QXJyYXkodGhpcy5jb21wdXRlZEFjY2VwdCkuc29tZShcbiAgICAgICAgICAgIGZvcm1hdCA9PlxuICAgICAgICAgICAgICAgIGZvcm1hdCA9PT0gZXh0ZW5zaW9uIHx8XG4gICAgICAgICAgICAgICAgZm9ybWF0ID09PSBmaWxlLnR5cGUgfHxcbiAgICAgICAgICAgICAgICAoZm9ybWF0LnNwbGl0KCcvJylbMV0gPT09ICcqJyAmJlxuICAgICAgICAgICAgICAgICAgICBmaWxlLnR5cGUuc3BsaXQoJy8nKVswXSA9PT0gZm9ybWF0LnNwbGl0KCcvJylbMF0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVqZWN0RmlsZXMocmVqZWN0ZWRGaWxlczogcmVhZG9ubHkgVHVpRmlsZUxpa2VbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlamVjdC5lbWl0KHRoaXMuY29tcHV0ZWRNdWx0aXBsZSA/IHJlamVjdGVkRmlsZXMgOiByZWplY3RlZEZpbGVzWzBdKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgdHVpV3JhcHBlclxuICAgIGFwcGVhcmFuY2U9XCJpbnB1dC1maWxlXCJcbiAgICBjbGFzcz1cInQtd3JhcHBlclwiXG4gICAgW2NsYXNzLl9tb2JpbGVdPVwiaXNNb2JpbGVcIlxuICAgIFtmb2N1c109XCJjb21wdXRlZEZvY3VzZWRcIlxuICAgIFtob3Zlcl09XCJwc2V1ZG9Ib3ZlciB8fCBmaWxlRHJhZ2dlZCB8fCBudWxsXCJcbiAgICBbYWN0aXZlXT1cInBzZXVkb0FjdGl2ZVwiXG4gICAgW2Rpc2FibGVkXT1cImNvbXB1dGVkRGlzYWJsZWRcIlxuPlxuICAgIDxsYWJlbFxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWZpbGVfX2xhYmVsXCJcbiAgICAgICAgY2xhc3M9XCJ0LWxhYmVsXCJcbiAgICAgICAgKHR1aURyb3BwYWJsZURyb3BwZWQpPVwib25Ecm9wcGVkKCRldmVudClcIlxuICAgICAgICAodHVpRHJvcHBhYmxlRHJhZ092ZXJDaGFuZ2UpPVwib25EcmFnT3ZlcigkZXZlbnQpXCJcbiAgICAgICAgKG1vdXNlZG93bi5wcmV2ZW50LnNpbGVudCk9XCIoMClcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInQtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZSB8fCBudWxsOyBjb250ZXh0OiB7JGltcGxpY2l0OiBmaWxlRHJhZ2dlZH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhdGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8YSB0dWlMaW5rPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJjb21wdXRlZExpbmskIHwgYXN5bmMgYXMgdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgdGV4dCB9fVxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgKnBvbHltb3JwaGV1c091dGxldD1cImNvbXB1dGVkTGFiZWwkIHwgYXN5bmMgYXMgdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJlYWRPbmx5ICYmICFjb21wdXRlZERpc2FibGVkXCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpbnB1dFwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIlwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LW5hdGl2ZVwiXG4gICAgICAgICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICAgICAgICBbYWNjZXB0XT1cImFjY2VwdFwiXG4gICAgICAgICAgICAgICAgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgICAgICBbdHVpRm9jdXNhYmxlXT1cImZvY3VzYWJsZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2xhYmVsPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZm9ybWF0UmVqZWN0aW9uPlxuICAgIHt7IChpbnB1dEZpbGVUZXh0cyQgfCBhc3luYyk/LmZvcm1hdFJlamVjdGlvblJlYXNvbiB8fCAnJyB9fVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtYXhTaXplUmVqZWN0aW9uPlxuICAgIHt7IG1heEZpbGVTaXplIHwgdHVpTWF4U2l6ZVJlamVjdGlvbkVycm9yIHwgYXN5bmMgfX1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
245
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZmlsZXMvaW5wdXQtZmlsZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZmlsZXMvaW5wdXQtZmlsZXMudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNKLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsMEJBQTBCLEVBQzFCLFdBQVcsRUFDWCxhQUFhLEVBQ2IsMEJBQTBCLEVBRzFCLGtCQUFrQixFQUVsQixPQUFPLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGFBQWEsRUFBVyxNQUFNLGdCQUFnQixDQUFDO0FBRXZELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRTVELE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLDJDQUEyQztBQUMzQyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsdUJBQXVCLEVBQXVCLE1BQU0sdUJB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TyxDQUFDO2dCQU1uQyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsUUFBUTtnQkE0QmQsWUFBWSxNQWlCWixhQUFhLE1BMEJiLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbCxcbiAgICBFTVBUWV9BUlJBWSxcbiAgICBUVUlfSVNfTU9CSUxFLFxuICAgIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yLFxuICAgIFR1aUNvbnRleHRXaXRoSW1wbGljaXQsXG4gICAgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yLFxuICAgIHR1aUlzTmF0aXZlRm9jdXNlZCxcbiAgICBUdWlOYXRpdmVGb2N1c2FibGVFbGVtZW50LFxuICAgIHR1aVB1cmUsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtNT0RFX1BST1ZJREVSLCBUdWlTaXplTH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtUdWlGaWxlTGlrZX0gZnJvbSAnQHRhaWdhLXVpL2tpdC9pbnRlcmZhY2VzJztcbmltcG9ydCB7VFVJX0lOUFVUX0ZJTEVfVEVYVFN9IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7dHVpR2V0QWNjZXB0QXJyYXl9IGZyb20gJ0B0YWlnYS11aS9raXQvdXRpbHMvZmlsZXMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWN5Y2xlXG5pbXBvcnQge1R1aUlucHV0RmlsZXNEaXJlY3RpdmV9IGZyb20gJy4vaW5wdXQtZmlsZXMuZGlyZWN0aXZlJztcbmltcG9ydCB7VFVJX0lOUFVUX0ZJTEVTX09QVElPTlMsIFR1aUlucHV0RmlsZXNPcHRpb25zfSBmcm9tICcuL2lucHV0LWZpbGVzLm9wdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1maWxlcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWZpbGVzLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LWZpbGVzLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW01PREVfUFJPVklERVIsIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yKFR1aUlucHV0RmlsZXNDb21wb25lbnQpXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRGaWxlc0NvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2w8VHVpRmlsZUxpa2UgfCByZWFkb25seSBUdWlGaWxlTGlrZVtdPlxuICAgIGltcGxlbWVudHMgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXQ/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgcHJpdmF0ZSBkYXRhVHJhbnNmZXI6IERhdGFUcmFuc2ZlciB8IG51bGwgPSBudWxsO1xuXG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IFR1aUlucHV0RmlsZXNEaXJlY3RpdmUpKVxuICAgIHJlYWRvbmx5IG5hdGl2ZUlucHV0PzogVHVpSW5wdXRGaWxlc0RpcmVjdGl2ZTtcblxuICAgIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpXG4gICAgcmVhZG9ubHkgdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxUdWlDb250ZXh0V2l0aEltcGxpY2l0PGJvb2xlYW4+PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2Zvcm1hdFJlamVjdGlvbicpXG4gICAgcmVhZG9ubHkgZm9ybWF0UmVqZWN0aW9uITogUG9seW1vcnBoZXVzQ29udGVudDtcblxuICAgIEBWaWV3Q2hpbGQoJ21heFNpemVSZWplY3Rpb24nKVxuICAgIHJlYWRvbmx5IG1heFNpemVSZWplY3Rpb24hOiBQb2x5bW9ycGhldXNDb250ZW50O1xuXG4gICAgQElucHV0KClcbiAgICBsaW5rOiBQb2x5bW9ycGhldXNDb250ZW50O1xuXG4gICAgQElucHV0KClcbiAgICBsYWJlbDogUG9seW1vcnBoZXVzQ29udGVudDtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkOiB1c2UgYDxpbnB1dCB0dWlJbnB1dEZpbGVzIGFjY2VwdD1cImltYWdlLypcIiAvPmBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFjY2VwdCA9IHRoaXMub3B0aW9ucy5hY2NlcHRzO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQ6IHVzZSBgPGlucHV0IHR1aUlucHV0RmlsZXMgbXVsdGlwbGUgLz5gXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtdWx0aXBsZSA9IHRoaXMub3B0aW9ucy5tdWx0aXBsZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2l6ZTogVHVpU2l6ZUwgPSB0aGlzLm9wdGlvbnMuc2l6ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgbWF4RmlsZVNpemUgPSB0aGlzLm9wdGlvbnMubWF4RmlsZVNpemU7XG5cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSByZWplY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFR1aUZpbGVMaWtlIHwgcmVhZG9ubHkgVHVpRmlsZUxpa2VbXT4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKVxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9JU19NT0JJTEUpXG4gICAgICAgIHJlYWRvbmx5IGlzTW9iaWxlOiBib29sZWFuLFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9GSUxFX1RFWFRTKVxuICAgICAgICByZWFkb25seSBpbnB1dEZpbGVUZXh0cyQ6IE9ic2VydmFibGU8XG4gICAgICAgICAgICBSZWNvcmQ8XG4gICAgICAgICAgICAgICAgfCAnZGVmYXVsdExhYmVsTXVsdGlwbGUnXG4gICAgICAgICAgICAgICAgfCAnZGVmYXVsdExhYmVsU2luZ2xlJ1xuICAgICAgICAgICAgICAgIHwgJ2RlZmF1bHRMaW5rTXVsdGlwbGUnXG4gICAgICAgICAgICAgICAgfCAnZGVmYXVsdExpbmtTaW5nbGUnXG4gICAgICAgICAgICAgICAgfCAnZHJvcCdcbiAgICAgICAgICAgICAgICB8ICdkcm9wTXVsdGlwbGUnXG4gICAgICAgICAgICAgICAgfCAnZm9ybWF0UmVqZWN0aW9uUmVhc29uJ1xuICAgICAgICAgICAgICAgIHwgJ21heFNpemVSZWplY3Rpb25SZWFzb24nLFxuICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgPlxuICAgICAgICA+LFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9GSUxFU19PUFRJT05TKVxuICAgICAgICByZWFkb25seSBvcHRpb25zOiBUdWlJbnB1dEZpbGVzT3B0aW9ucyxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2RyKTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRNdWx0aXBsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlSW5wdXQ/Lm11bHRpcGxlID8/IHRoaXMubXVsdGlwbGU7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkQWNjZXB0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUlucHV0Py5hY2NlcHQgPz8gdGhpcy5hY2NlcHQ7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogVHVpTmF0aXZlRm9jdXNhYmxlRWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudCB8fCBudWxsO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHVpSXNOYXRpdmVGb2N1c2VkKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkUHNldWRvSG92ZXJlZCgpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnBzZXVkb0hvdmVyID8/ICh0aGlzLmZpbGVEcmFnZ2VkIHx8IG51bGwpO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZExpbmskKCk6IE9ic2VydmFibGU8UG9seW1vcnBoZXVzQ29udGVudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wdXRlTGluayQodGhpcy5maWxlRHJhZ2dlZCwgdGhpcy5jb21wdXRlZE11bHRpcGxlLCB0aGlzLmxpbmspO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZExhYmVsJCgpOiBPYnNlcnZhYmxlPFBvbHltb3JwaGV1c0NvbnRlbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcHV0ZUxhYmVsJChcbiAgICAgICAgICAgIHRoaXMuaXNNb2JpbGUsXG4gICAgICAgICAgICB0aGlzLmZpbGVEcmFnZ2VkLFxuICAgICAgICAgICAgdGhpcy5jb21wdXRlZE11bHRpcGxlLFxuICAgICAgICAgICAgdGhpcy5sYWJlbCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgZmlsZURyYWdnZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZGF0YVRyYW5zZmVyPy50eXBlcy5pbmNsdWRlcygnRmlsZXMnKTtcbiAgICB9XG5cbiAgICBnZXQgYXJyYXlWYWx1ZSgpOiByZWFkb25seSBUdWlGaWxlTGlrZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWVBcnJheSh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdmb2N1c2luJywgWyd0cnVlJ10pXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXNvdXQnLCBbJ2ZhbHNlJ10pXG4gICAgb25Gb2N1c2VkKGZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NoYW5nZScpXG4gICAgb25GaWxlc1NlbGVjdGVkKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMubmF0aXZlSW5wdXQ/LmlucHV0ID8/IHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKCFpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcm9jZXNzU2VsZWN0ZWRGaWxlcyhpbnB1dC5maWxlcyk7XG5cbiAgICAgICAgaW5wdXQudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBvbkRyb3BwZWQoZXZlbnQ6IERhdGFUcmFuc2Zlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnByb2Nlc3NTZWxlY3RlZEZpbGVzKGV2ZW50LmZpbGVzKTtcbiAgICB9XG5cbiAgICBvbkRyYWdPdmVyKGRhdGFUcmFuc2ZlcjogRGF0YVRyYW5zZmVyIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGFUcmFuc2ZlciA9IGRhdGFUcmFuc2ZlcjtcbiAgICB9XG5cbiAgICByZW1vdmVGaWxlKHJlbW92ZWRGaWxlOiBUdWlGaWxlTGlrZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5jb21wdXRlZE11bHRpcGxlXG4gICAgICAgICAgICA/IHRoaXMuYXJyYXlWYWx1ZS5maWx0ZXIoZmlsZSA9PiBmaWxlICE9PSByZW1vdmVkRmlsZSlcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIHByaXZhdGUgY29tcHV0ZUxpbmskKFxuICAgICAgICBmaWxlRHJhZ2dlZDogYm9vbGVhbixcbiAgICAgICAgbXVsdGlwbGU6IGJvb2xlYW4sXG4gICAgICAgIGxpbms6IFBvbHltb3JwaGV1c0NvbnRlbnQsXG4gICAgKTogT2JzZXJ2YWJsZTxQb2x5bW9ycGhldXNDb250ZW50PiB7XG4gICAgICAgIHJldHVybiBmaWxlRHJhZ2dlZFxuICAgICAgICAgICAgPyBvZignJylcbiAgICAgICAgICAgIDogdGhpcy5pbnB1dEZpbGVUZXh0cyQucGlwZShcbiAgICAgICAgICAgICAgICAgIG1hcCh0ZXh0cyA9PlxuICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlICYmICFsaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gdGV4dHMuZGVmYXVsdExpbmtNdWx0aXBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxpbmsgfHwgdGV4dHMuZGVmYXVsdExpbmtTaW5nbGUsXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBjb21wdXRlTGFiZWwkKFxuICAgICAgICBpc01vYmlsZTogYm9vbGVhbixcbiAgICAgICAgZmlsZURyYWdnZWQ6IGJvb2xlYW4sXG4gICAgICAgIG11bHRpcGxlOiBib29sZWFuLFxuICAgICAgICBsYWJlbDogUG9seW1vcnBoZXVzQ29udGVudCxcbiAgICApOiBPYnNlcnZhYmxlPFBvbHltb3JwaGV1c0NvbnRlbnQ+IHtcbiAgICAgICAgaWYgKGlzTW9iaWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbGVEcmFnZ2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dEZpbGVUZXh0cyQucGlwZShcbiAgICAgICAgICAgICAgICBtYXAodGV4dHMgPT4gKG11bHRpcGxlID8gdGV4dHMuZHJvcE11bHRpcGxlIDogdGV4dHMuZHJvcCkpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0RmlsZVRleHRzJC5waXBlKFxuICAgICAgICAgICAgbWFwKHRleHRzID0+XG4gICAgICAgICAgICAgICAgbXVsdGlwbGUgJiYgIWxhYmVsXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHMuZGVmYXVsdExhYmVsTXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgOiBsYWJlbCB8fCB0ZXh0cy5kZWZhdWx0TGFiZWxTaW5nbGUsXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBnZXRWYWx1ZUFycmF5KFxuICAgICAgICB2YWx1ZTogVHVpRmlsZUxpa2UgfCByZWFkb25seSBUdWlGaWxlTGlrZVtdIHwgbnVsbCxcbiAgICApOiByZWFkb25seSBUdWlGaWxlTGlrZVtdIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIEVNUFRZX0FSUkFZO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1NlbGVjdGVkRmlsZXMoZmlsZXM6IEZpbGVMaXN0IHwgbnVsbCk6IHZvaWQge1xuICAgICAgICAvLyBJRTExIGFmdGVyIHNlbGVjdGluZyBhIGZpbGUgdGhyb3VnaCB0aGUgb3BlbiBkaWFsb2cgZ2VuZXJhdGVzIGEgc2Vjb25kIGV2ZW50IHBhc3NpbmcgYW4gZW1wdHkgRmlsZUxpc3QuXG4gICAgICAgIGlmICghZmlsZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXJyb3JzOiBSZWNvcmQ8XG4gICAgICAgICAgICAnZm9ybWF0UmVqZWN0aW9uJyB8ICdtYXhTaXplUmVqZWN0aW9uJyxcbiAgICAgICAgICAgIFBvbHltb3JwaGV1c0NvbnRlbnRcbiAgICAgICAgPiA9IHtcbiAgICAgICAgICAgIGZvcm1hdFJlamVjdGlvbjogdGhpcy5mb3JtYXRSZWplY3Rpb24sXG4gICAgICAgICAgICBtYXhTaXplUmVqZWN0aW9uOiB0aGlzLm1heFNpemVSZWplY3Rpb24sXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgbmV3RmlsZXMgPSB0aGlzLmNvbXB1dGVkTXVsdGlwbGUgPyBBcnJheS5mcm9tKGZpbGVzKSA6IFtmaWxlc1swXV07XG4gICAgICAgIGNvbnN0IHRvb0JpZ0ZpbGVzID0gbmV3RmlsZXMuZmlsdGVyKGZpbGUgPT4gZmlsZS5zaXplID4gdGhpcy5tYXhGaWxlU2l6ZSk7XG4gICAgICAgIGNvbnN0IHdyb25nRm9ybWF0RmlsZXMgPSBuZXdGaWxlcy5maWx0ZXIoXG4gICAgICAgICAgICBmaWxlID0+ICF0aGlzLmlzRm9ybWF0QWNjZXB0YWJsZShmaWxlKSAmJiAhdG9vQmlnRmlsZXMuaW5jbHVkZXMoZmlsZSksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGFjY2VwdGVkRmlsZXMgPSBuZXdGaWxlcy5maWx0ZXIoXG4gICAgICAgICAgICBmaWxlID0+ICF0b29CaWdGaWxlcy5pbmNsdWRlcyhmaWxlKSAmJiAhd3JvbmdGb3JtYXRGaWxlcy5pbmNsdWRlcyhmaWxlKSxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodG9vQmlnRmlsZXMubGVuZ3RoIHx8IHdyb25nRm9ybWF0RmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnJlamVjdEZpbGVzKFtcbiAgICAgICAgICAgICAgICAuLi50b29CaWdGaWxlcy5tYXAoZmlsZSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IGZpbGUudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogZmlsZS5zaXplLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBlcnJvcnMubWF4U2l6ZVJlamVjdGlvbixcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgLi4ud3JvbmdGb3JtYXRGaWxlcy5tYXAoZmlsZSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IGZpbGUudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogZmlsZS5zaXplLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBlcnJvcnMuZm9ybWF0UmVqZWN0aW9uLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY29tcHV0ZWRNdWx0aXBsZVxuICAgICAgICAgICAgPyBbLi4udGhpcy5hcnJheVZhbHVlLCAuLi5hY2NlcHRlZEZpbGVzXVxuICAgICAgICAgICAgOiBhY2NlcHRlZEZpbGVzWzBdIHx8IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0Zvcm1hdEFjY2VwdGFibGUoZmlsZTogRmlsZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuY29tcHV0ZWRBY2NlcHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gYC4keyhmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKSB8fCAnJykudG9Mb3dlckNhc2UoKX1gO1xuXG4gICAgICAgIHJldHVybiB0dWlHZXRBY2NlcHRBcnJheSh0aGlzLmNvbXB1dGVkQWNjZXB0KS5zb21lKFxuICAgICAgICAgICAgZm9ybWF0ID0+XG4gICAgICAgICAgICAgICAgZm9ybWF0ID09PSBleHRlbnNpb24gfHxcbiAgICAgICAgICAgICAgICBmb3JtYXQgPT09IGZpbGUudHlwZSB8fFxuICAgICAgICAgICAgICAgIChmb3JtYXQuc3BsaXQoJy8nKVsxXSA9PT0gJyonICYmXG4gICAgICAgICAgICAgICAgICAgIGZpbGUudHlwZS5zcGxpdCgnLycpWzBdID09PSBmb3JtYXQuc3BsaXQoJy8nKVswXSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWplY3RGaWxlcyhyZWplY3RlZEZpbGVzOiByZWFkb25seSBUdWlGaWxlTGlrZVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVqZWN0LmVtaXQodGhpcy5jb21wdXRlZE11bHRpcGxlID8gcmVqZWN0ZWRGaWxlcyA6IHJlamVjdGVkRmlsZXNbMF0pO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICB0dWlXcmFwcGVyXG4gICAgYXBwZWFyYW5jZT1cImlucHV0LWZpbGVcIlxuICAgIGNsYXNzPVwidC13cmFwcGVyXCJcbiAgICBbY2xhc3MuX21vYmlsZV09XCJpc01vYmlsZVwiXG4gICAgW2ZvY3VzXT1cImNvbXB1dGVkRm9jdXNlZFwiXG4gICAgW2hvdmVyXT1cInBzZXVkb0hvdmVyIHx8IGZpbGVEcmFnZ2VkIHx8IG51bGxcIlxuICAgIFthY3RpdmVdPVwicHNldWRvQWN0aXZlXCJcbiAgICBbZGlzYWJsZWRdPVwiY29tcHV0ZWREaXNhYmxlZFwiXG4+XG4gICAgPGxhYmVsXG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtZmlsZV9fbGFiZWxcIlxuICAgICAgICBjbGFzcz1cInQtbGFiZWxcIlxuICAgICAgICAodHVpRHJvcHBhYmxlRHJvcHBlZCk9XCJvbkRyb3BwZWQoJGV2ZW50KVwiXG4gICAgICAgICh0dWlEcm9wcGFibGVEcmFnT3ZlckNoYW5nZSk9XCJvbkRyYWdPdmVyKCRldmVudClcIlxuICAgICAgICAobW91c2Vkb3duLnByZXZlbnQuc2lsZW50KT1cIigwKVwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidC1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlIHx8IG51bGw7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGZpbGVEcmFnZ2VkfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiF0ZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxhIHR1aUxpbms+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cImNvbXB1dGVkTGluayQgfCBhc3luYyBhcyB0ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAqcG9seW1vcnBoZXVzT3V0bGV0PVwiY29tcHV0ZWRMYWJlbCQgfCBhc3luYyBhcyB0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgW3RleHRDb250ZW50XT1cInRleHRcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcmVhZE9ubHkgJiYgIWNvbXB1dGVkRGlzYWJsZWRcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlucHV0XCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwiXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtbmF0aXZlXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICAgICAgICAgIFthY2NlcHRdPVwiYWNjZXB0XCJcbiAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgIFt0dWlGb2N1c2FibGVdPVwiZm9jdXNhYmxlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbGFiZWw+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNmb3JtYXRSZWplY3Rpb24+XG4gICAge3sgKGlucHV0RmlsZVRleHRzJCB8IGFzeW5jKT8uZm9ybWF0UmVqZWN0aW9uUmVhc29uIHx8ICcnIH19XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21heFNpemVSZWplY3Rpb24+XG4gICAge3sgbWF4RmlsZVNpemUgfCB0dWlNYXhTaXplUmVqZWN0aW9uRXJyb3IgfCBhc3luYyB9fVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==