@taiga-ui/kit 3.9.0 → 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/bundles/taiga-ui-kit-components-accordion.umd.js +1 -1
  2. package/bundles/taiga-ui-kit-components-accordion.umd.js.map +1 -1
  3. package/bundles/taiga-ui-kit-components-action.umd.js +1 -1
  4. package/bundles/taiga-ui-kit-components-action.umd.js.map +1 -1
  5. package/bundles/taiga-ui-kit-components-avatar.umd.js +1 -1
  6. package/bundles/taiga-ui-kit-components-avatar.umd.js.map +1 -1
  7. package/bundles/taiga-ui-kit-components-badge.umd.js +2 -4
  8. package/bundles/taiga-ui-kit-components-badge.umd.js.map +1 -1
  9. package/bundles/taiga-ui-kit-components-badged-content.umd.js +1 -1
  10. package/bundles/taiga-ui-kit-components-badged-content.umd.js.map +1 -1
  11. package/bundles/taiga-ui-kit-components-breadcrumbs.umd.js +1 -1
  12. package/bundles/taiga-ui-kit-components-breadcrumbs.umd.js.map +1 -1
  13. package/bundles/taiga-ui-kit-components-calendar-month.umd.js +2 -2
  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 +2 -2
  16. package/bundles/taiga-ui-kit-components-calendar-range.umd.js.map +1 -1
  17. package/bundles/taiga-ui-kit-components-carousel.umd.js +2 -5
  18. package/bundles/taiga-ui-kit-components-carousel.umd.js.map +1 -1
  19. package/bundles/taiga-ui-kit-components-checkbox-block.umd.js +1 -1
  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 +1 -1
  22. package/bundles/taiga-ui-kit-components-checkbox-labeled.umd.js.map +1 -1
  23. package/bundles/taiga-ui-kit-components-checkbox.umd.js +1 -1
  24. package/bundles/taiga-ui-kit-components-checkbox.umd.js.map +1 -1
  25. package/bundles/taiga-ui-kit-components-combo-box.umd.js +2 -2
  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 +23 -12
  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 +1 -1
  30. package/bundles/taiga-ui-kit-components-files.umd.js.map +1 -1
  31. package/bundles/taiga-ui-kit-components-filter.umd.js +1 -1
  32. package/bundles/taiga-ui-kit-components-filter.umd.js.map +1 -1
  33. package/bundles/taiga-ui-kit-components-input-copy.umd.js +1 -1
  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 +3 -3
  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 +4 -5
  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 +5 -3
  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 +7 -6
  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 +247 -70
  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 +1 -1
  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 +17 -3
  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 +18 -4
  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 +4 -4
  52. package/bundles/taiga-ui-kit-components-input-number.umd.js.map +1 -1
  53. package/bundles/taiga-ui-kit-components-input-password.umd.js +1 -1
  54. package/bundles/taiga-ui-kit-components-input-password.umd.js.map +1 -1
  55. package/bundles/taiga-ui-kit-components-input-phone-international.umd.js +2 -2
  56. package/bundles/taiga-ui-kit-components-input-phone-international.umd.js.map +1 -1
  57. package/bundles/taiga-ui-kit-components-input-phone.umd.js +4 -4
  58. package/bundles/taiga-ui-kit-components-input-phone.umd.js.map +1 -1
  59. package/bundles/taiga-ui-kit-components-input-range.umd.js +1 -1
  60. package/bundles/taiga-ui-kit-components-input-range.umd.js.map +1 -1
  61. package/bundles/taiga-ui-kit-components-input-slider.umd.js +1 -1
  62. package/bundles/taiga-ui-kit-components-input-slider.umd.js.map +1 -1
  63. package/bundles/taiga-ui-kit-components-input-tag.umd.js +2 -2
  64. package/bundles/taiga-ui-kit-components-input-tag.umd.js.map +1 -1
  65. package/bundles/taiga-ui-kit-components-input-time.umd.js +2 -2
  66. package/bundles/taiga-ui-kit-components-input-time.umd.js.map +1 -1
  67. package/bundles/taiga-ui-kit-components-input-year.umd.js +2 -2
  68. package/bundles/taiga-ui-kit-components-input-year.umd.js.map +1 -1
  69. package/bundles/taiga-ui-kit-components-input.umd.js +2 -2
  70. package/bundles/taiga-ui-kit-components-input.umd.js.map +1 -1
  71. package/bundles/taiga-ui-kit-components-island.umd.js +1 -1
  72. package/bundles/taiga-ui-kit-components-island.umd.js.map +1 -1
  73. package/bundles/taiga-ui-kit-components-line-clamp.umd.js +1 -1
  74. package/bundles/taiga-ui-kit-components-line-clamp.umd.js.map +1 -1
  75. package/bundles/taiga-ui-kit-components-marker-icon.umd.js +1 -1
  76. package/bundles/taiga-ui-kit-components-marker-icon.umd.js.map +1 -1
  77. package/bundles/taiga-ui-kit-components-multi-select-option.umd.js +10 -6
  78. package/bundles/taiga-ui-kit-components-multi-select-option.umd.js.map +1 -1
  79. package/bundles/taiga-ui-kit-components-multi-select.umd.js +2 -2
  80. package/bundles/taiga-ui-kit-components-multi-select.umd.js.map +1 -1
  81. package/bundles/taiga-ui-kit-components-pagination.umd.js +1 -1
  82. package/bundles/taiga-ui-kit-components-pagination.umd.js.map +1 -1
  83. package/bundles/taiga-ui-kit-components-pdf-viewer.umd.js +1 -1
  84. package/bundles/taiga-ui-kit-components-pdf-viewer.umd.js.map +1 -1
  85. package/bundles/taiga-ui-kit-components-progress.umd.js +1 -1
  86. package/bundles/taiga-ui-kit-components-progress.umd.js.map +1 -1
  87. package/bundles/taiga-ui-kit-components-push.umd.js +1 -1
  88. package/bundles/taiga-ui-kit-components-push.umd.js.map +1 -1
  89. package/bundles/taiga-ui-kit-components-radio-block.umd.js +1 -1
  90. package/bundles/taiga-ui-kit-components-radio-block.umd.js.map +1 -1
  91. package/bundles/taiga-ui-kit-components-radio-group.umd.js +1 -1
  92. package/bundles/taiga-ui-kit-components-radio-group.umd.js.map +1 -1
  93. package/bundles/taiga-ui-kit-components-radio-labeled.umd.js +1 -1
  94. package/bundles/taiga-ui-kit-components-radio-labeled.umd.js.map +1 -1
  95. package/bundles/taiga-ui-kit-components-radio-list.umd.js +1 -1
  96. package/bundles/taiga-ui-kit-components-radio-list.umd.js.map +1 -1
  97. package/bundles/taiga-ui-kit-components-radio.umd.js +1 -1
  98. package/bundles/taiga-ui-kit-components-radio.umd.js.map +1 -1
  99. package/bundles/taiga-ui-kit-components-range.umd.js +1 -1
  100. package/bundles/taiga-ui-kit-components-range.umd.js.map +1 -1
  101. package/bundles/taiga-ui-kit-components-rating.umd.js +1 -1
  102. package/bundles/taiga-ui-kit-components-rating.umd.js.map +1 -1
  103. package/bundles/taiga-ui-kit-components-select-option.umd.js +8 -2
  104. package/bundles/taiga-ui-kit-components-select-option.umd.js.map +1 -1
  105. package/bundles/taiga-ui-kit-components-select.umd.js +2 -2
  106. package/bundles/taiga-ui-kit-components-select.umd.js.map +1 -1
  107. package/bundles/taiga-ui-kit-components-slider.umd.js +1 -1
  108. package/bundles/taiga-ui-kit-components-slider.umd.js.map +1 -1
  109. package/bundles/taiga-ui-kit-components-stepper.umd.js +21 -14
  110. package/bundles/taiga-ui-kit-components-stepper.umd.js.map +1 -1
  111. package/bundles/taiga-ui-kit-components-tabs.umd.js +2 -2
  112. package/bundles/taiga-ui-kit-components-tabs.umd.js.map +1 -1
  113. package/bundles/taiga-ui-kit-components-tag.umd.js +1 -1
  114. package/bundles/taiga-ui-kit-components-tag.umd.js.map +1 -1
  115. package/bundles/taiga-ui-kit-components-text-area.umd.js +1 -1
  116. package/bundles/taiga-ui-kit-components-text-area.umd.js.map +1 -1
  117. package/bundles/taiga-ui-kit-components-tiles.umd.js +619 -0
  118. package/bundles/taiga-ui-kit-components-tiles.umd.js.map +1 -0
  119. package/bundles/taiga-ui-kit-components-toggle.umd.js +1 -1
  120. package/bundles/taiga-ui-kit-components-toggle.umd.js.map +1 -1
  121. package/bundles/taiga-ui-kit-components-tree.umd.js +1 -1
  122. package/bundles/taiga-ui-kit-components-tree.umd.js.map +1 -1
  123. package/bundles/taiga-ui-kit-components.umd.js +10 -4
  124. package/bundles/taiga-ui-kit-components.umd.js.map +1 -1
  125. package/bundles/taiga-ui-kit-constants.umd.js +1 -1
  126. package/bundles/taiga-ui-kit-constants.umd.js.map +1 -1
  127. package/bundles/taiga-ui-kit-directives-data-list-dropdown-manager.umd.js +1 -1
  128. package/bundles/taiga-ui-kit-directives-data-list-dropdown-manager.umd.js.map +1 -1
  129. package/bundles/taiga-ui-kit-directives-highlight.umd.js +1 -1
  130. package/bundles/taiga-ui-kit-directives-highlight.umd.js.map +1 -1
  131. package/bundles/taiga-ui-kit-directives-lazy-loading.umd.js +1 -1
  132. package/bundles/taiga-ui-kit-directives-lazy-loading.umd.js.map +1 -1
  133. package/bundles/taiga-ui-kit-directives-project-class.umd.js +1 -1
  134. package/bundles/taiga-ui-kit-directives-project-class.umd.js.map +1 -1
  135. package/bundles/taiga-ui-kit-internal-primitive-calendar-range.umd.js +1 -1
  136. package/bundles/taiga-ui-kit-internal-primitive-calendar-range.umd.js.map +1 -1
  137. package/bundles/taiga-ui-kit-pipes-field-error.umd.js +1 -1
  138. package/bundles/taiga-ui-kit-pipes-field-error.umd.js.map +1 -1
  139. package/bundles/taiga-ui-kit-pipes-filter-by-input.umd.js +1 -1
  140. package/bundles/taiga-ui-kit-pipes-filter-by-input.umd.js.map +1 -1
  141. package/bundles/taiga-ui-kit-utils-format.umd.js +1 -1
  142. package/bundles/taiga-ui-kit-utils-format.umd.js.map +1 -1
  143. package/bundles/taiga-ui-kit-utils-mask.umd.js +1 -1
  144. package/bundles/taiga-ui-kit-utils-mask.umd.js.map +1 -1
  145. package/bundles/taiga-ui-kit-utils-math.umd.js +1 -1
  146. package/bundles/taiga-ui-kit-utils-math.umd.js.map +1 -1
  147. package/bundles/taiga-ui-kit-utils-miscellaneous.umd.js +1 -1
  148. package/bundles/taiga-ui-kit-utils-miscellaneous.umd.js.map +1 -1
  149. package/components/data-list-wrapper/data-list-group-wrapper.component.d.ts +3 -2
  150. package/components/data-list-wrapper/data-list-wrapper.component.d.ts +3 -2
  151. package/components/data-list-wrapper/data-list-wrapper.d.ts +2 -1
  152. package/components/index.d.ts +1 -0
  153. package/components/input-date/input-date.component.d.ts +2 -2
  154. package/components/input-date-range/input-date-range.component.d.ts +3 -3
  155. package/components/input-files/index.d.ts +2 -0
  156. package/components/input-files/input-files.component.d.ts +19 -5
  157. package/components/input-files/input-files.directive.d.ts +20 -0
  158. package/components/input-files/input-files.module.d.ts +8 -7
  159. package/components/input-files/input-files.options.d.ts +17 -0
  160. package/components/input-month/input-month.component.d.ts +4 -2
  161. package/components/input-month-range/input-month-range.component.d.ts +4 -2
  162. package/components/select-option/select-option.component.d.ts +4 -3
  163. package/components/stepper/stepper.component.d.ts +3 -2
  164. package/components/tiles/index.d.ts +4 -0
  165. package/components/tiles/package.json +10 -0
  166. package/components/tiles/taiga-ui-kit-components-tiles.d.ts +5 -0
  167. package/components/tiles/tile-handle.directive.d.ts +13 -0
  168. package/components/tiles/tile.component.d.ts +30 -0
  169. package/components/tiles/tiles.component.d.ts +12 -0
  170. package/components/tiles/tiles.module.d.ts +10 -0
  171. package/esm2015/components/badge/badge.component.js +2 -4
  172. package/esm2015/components/calendar-month/calendar-month.component.js +1 -1
  173. package/esm2015/components/calendar-range/calendar-range.component.js +1 -1
  174. package/esm2015/components/carousel/carousel.component.js +2 -5
  175. package/esm2015/components/combo-box/combo-box.component.js +2 -2
  176. package/esm2015/components/data-list-wrapper/data-list-group-wrapper.component.js +12 -7
  177. package/esm2015/components/data-list-wrapper/data-list-wrapper.component.js +12 -7
  178. package/esm2015/components/data-list-wrapper/data-list-wrapper.js +5 -4
  179. package/esm2015/components/index.js +2 -1
  180. package/esm2015/components/input/input.component.js +2 -2
  181. package/esm2015/components/input-count/input-count.component.js +3 -3
  182. package/esm2015/components/input-date/input-date.component.js +8 -7
  183. package/esm2015/components/input-date-range/input-date-range.component.js +7 -8
  184. package/esm2015/components/input-date-time/input-date-time.component.js +6 -4
  185. package/esm2015/components/input-files/index.js +3 -1
  186. package/esm2015/components/input-files/input-files.component.js +75 -26
  187. package/esm2015/components/input-files/input-files.directive.js +77 -0
  188. package/esm2015/components/input-files/input-files.module.js +12 -3
  189. package/esm2015/components/input-files/input-files.options.js +16 -0
  190. package/esm2015/components/input-month/input-month.component.js +15 -5
  191. package/esm2015/components/input-month-range/input-month-range.component.js +14 -4
  192. package/esm2015/components/input-number/input-number.component.js +4 -4
  193. package/esm2015/components/input-phone/input-phone.component.js +4 -4
  194. package/esm2015/components/input-phone-international/input-phone-international.component.js +2 -2
  195. package/esm2015/components/input-tag/input-tag.component.js +2 -2
  196. package/esm2015/components/input-time/input-time.component.js +2 -2
  197. package/esm2015/components/input-year/input-year.component.js +1 -1
  198. package/esm2015/components/multi-select/multi-select.component.js +2 -2
  199. package/esm2015/components/multi-select-option/multi-select-option.component.js +6 -3
  200. package/esm2015/components/select/select.component.js +2 -2
  201. package/esm2015/components/select-option/select-option.component.js +11 -5
  202. package/esm2015/components/stepper/step/step.component.js +1 -1
  203. package/esm2015/components/stepper/stepper.component.js +12 -9
  204. package/esm2015/components/tabs/tabs-with-more/tabs-with-more.component.js +1 -1
  205. package/esm2015/components/tiles/index.js +5 -0
  206. package/esm2015/components/tiles/taiga-ui-kit-components-tiles.js +5 -0
  207. package/esm2015/components/tiles/tile-handle.directive.js +53 -0
  208. package/esm2015/components/tiles/tile.component.js +101 -0
  209. package/esm2015/components/tiles/tiles.component.js +77 -0
  210. package/esm2015/components/tiles/tiles.module.js +20 -0
  211. package/esm2015/pipes/filter-by-input/filter-by-input.base.js +1 -2
  212. package/esm2015/utils/format/string-hash-to-hsl.js +2 -2
  213. package/fesm2015/taiga-ui-kit-components-badge.js +1 -3
  214. package/fesm2015/taiga-ui-kit-components-badge.js.map +1 -1
  215. package/fesm2015/taiga-ui-kit-components-calendar-month.js +1 -1
  216. package/fesm2015/taiga-ui-kit-components-calendar-range.js +1 -1
  217. package/fesm2015/taiga-ui-kit-components-calendar-range.js.map +1 -1
  218. package/fesm2015/taiga-ui-kit-components-carousel.js +1 -4
  219. package/fesm2015/taiga-ui-kit-components-carousel.js.map +1 -1
  220. package/fesm2015/taiga-ui-kit-components-combo-box.js +1 -1
  221. package/fesm2015/taiga-ui-kit-components-combo-box.js.map +1 -1
  222. package/fesm2015/taiga-ui-kit-components-data-list-wrapper.js +24 -13
  223. package/fesm2015/taiga-ui-kit-components-data-list-wrapper.js.map +1 -1
  224. package/fesm2015/taiga-ui-kit-components-input-count.js +2 -2
  225. package/fesm2015/taiga-ui-kit-components-input-count.js.map +1 -1
  226. package/fesm2015/taiga-ui-kit-components-input-date-range.js +6 -7
  227. package/fesm2015/taiga-ui-kit-components-input-date-range.js.map +1 -1
  228. package/fesm2015/taiga-ui-kit-components-input-date-time.js +5 -3
  229. package/fesm2015/taiga-ui-kit-components-input-date-time.js.map +1 -1
  230. package/fesm2015/taiga-ui-kit-components-input-date.js +7 -6
  231. package/fesm2015/taiga-ui-kit-components-input-date.js.map +1 -1
  232. package/fesm2015/taiga-ui-kit-components-input-files.js +167 -29
  233. package/fesm2015/taiga-ui-kit-components-input-files.js.map +1 -1
  234. package/fesm2015/taiga-ui-kit-components-input-month-range.js +13 -3
  235. package/fesm2015/taiga-ui-kit-components-input-month-range.js.map +1 -1
  236. package/fesm2015/taiga-ui-kit-components-input-month.js +14 -4
  237. package/fesm2015/taiga-ui-kit-components-input-month.js.map +1 -1
  238. package/fesm2015/taiga-ui-kit-components-input-number.js +3 -3
  239. package/fesm2015/taiga-ui-kit-components-input-number.js.map +1 -1
  240. package/fesm2015/taiga-ui-kit-components-input-phone-international.js +1 -1
  241. package/fesm2015/taiga-ui-kit-components-input-phone-international.js.map +1 -1
  242. package/fesm2015/taiga-ui-kit-components-input-phone.js +3 -3
  243. package/fesm2015/taiga-ui-kit-components-input-phone.js.map +1 -1
  244. package/fesm2015/taiga-ui-kit-components-input-tag.js +1 -1
  245. package/fesm2015/taiga-ui-kit-components-input-tag.js.map +1 -1
  246. package/fesm2015/taiga-ui-kit-components-input-time.js +1 -1
  247. package/fesm2015/taiga-ui-kit-components-input-time.js.map +1 -1
  248. package/fesm2015/taiga-ui-kit-components-input-year.js +1 -1
  249. package/fesm2015/taiga-ui-kit-components-input-year.js.map +1 -1
  250. package/fesm2015/taiga-ui-kit-components-input.js +1 -1
  251. package/fesm2015/taiga-ui-kit-components-input.js.map +1 -1
  252. package/fesm2015/taiga-ui-kit-components-multi-select-option.js +7 -3
  253. package/fesm2015/taiga-ui-kit-components-multi-select-option.js.map +1 -1
  254. package/fesm2015/taiga-ui-kit-components-multi-select.js +1 -1
  255. package/fesm2015/taiga-ui-kit-components-multi-select.js.map +1 -1
  256. package/fesm2015/taiga-ui-kit-components-select-option.js +10 -4
  257. package/fesm2015/taiga-ui-kit-components-select-option.js.map +1 -1
  258. package/fesm2015/taiga-ui-kit-components-select.js +1 -1
  259. package/fesm2015/taiga-ui-kit-components-select.js.map +1 -1
  260. package/fesm2015/taiga-ui-kit-components-stepper.js +12 -9
  261. package/fesm2015/taiga-ui-kit-components-stepper.js.map +1 -1
  262. package/fesm2015/taiga-ui-kit-components-tabs.js +1 -1
  263. package/fesm2015/taiga-ui-kit-components-tabs.js.map +1 -1
  264. package/fesm2015/taiga-ui-kit-components-tiles.js +241 -0
  265. package/fesm2015/taiga-ui-kit-components-tiles.js.map +1 -0
  266. package/fesm2015/taiga-ui-kit-components.js +1 -0
  267. package/fesm2015/taiga-ui-kit-components.js.map +1 -1
  268. package/fesm2015/taiga-ui-kit-pipes-filter-by-input.js.map +1 -1
  269. package/fesm2015/taiga-ui-kit-utils-format.js +1 -1
  270. package/fesm2015/taiga-ui-kit-utils-format.js.map +1 -1
  271. package/package.json +4 -4
@@ -134,7 +134,7 @@ TuiInputPhoneInternationalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion
134
134
  TuiInputPhoneInternationalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TuiInputPhoneInternationalComponent, selector: "tui-input-phone-international", inputs: { isoCode: ["countryIsoCode", "isoCode"], countries: "countries" }, outputs: { countryIsoCodeChange: "countryIsoCodeChange" }, host: { listeners: { "paste.capture.prevent.stop": "onPaste($event)", "drop.capture.prevent.stop": "onPaste($event)" } }, providers: [
135
135
  tuiAsFocusableItemAccessor(TuiInputPhoneInternationalComponent),
136
136
  tuiAsControl(TuiInputPhoneInternationalComponent),
137
- ], viewQueries: [{ propertyName: "inputPhoneComponent", first: true, predicate: TuiInputPhoneComponent, descendants: true }, { propertyName: "primitiveTextfield", first: true, predicate: TuiPrimitiveTextfieldComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<tui-hosted-dropdown\n *ngIf=\"countriesNames$ | async as countriesNames\"\n class=\"t-hosted-dropdown\"\n [content]=\"dropdown\"\n [canOpen]=\"!readOnly\"\n [(open)]=\"open\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <div tuiGroup>\n <tui-primitive-textfield\n tuiHintContent=\"\"\n class=\"t-country-select tui-group__auto-width-item\"\n [tuiTextfieldCustomContent]=\"countryValueContent\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldIcon]=\"arrow\"\n [disabled]=\"disabled\"\n [focusable]=\"focusable\"\n [editable]=\"false\"\n [pseudoFocus]=\"open || null\"\n [readOnly]=\"readOnly\"\n ></tui-primitive-textfield>\n <tui-input-phone\n class=\"t-input-phone tui-group__auto-width-item\"\n [ngModel]=\"value\"\n [disabled]=\"disabled\"\n [focusable]=\"focusable\"\n [countryCode]=\"inputPhoneCountryCode\"\n [phoneMaskAfterCountryCode]=\"phoneMaskAfterCountryCode\"\n [readOnly]=\"readOnly\"\n [pseudoInvalid]=\"computedInvalid\"\n [pseudoFocus]=\"pseudoFocus\"\n [pseudoHover]=\"pseudoHover\"\n (ngModelChange)=\"onModelChange($event)\"\n >\n <ng-content></ng-content>\n <input\n tuiTextfield\n autocomplete=\"off\"\n />\n </tui-input-phone>\n </div>\n\n <ng-template #dropdown>\n <tui-data-list>\n <button\n *ngFor=\"let item of countries\"\n tuiOption\n (click)=\"onItemClick(item)\"\n >\n <img\n alt=\"\"\n class=\"t-country-item-flag\"\n [src]=\"getFlagPath(item)\"\n />\n <span class=\"t-country-item-name\">\n {{ countriesNames[item] }}\n </span>\n <span class=\"t-country-item-code\">\n {{ item | tuiMapper: isoToCountryCodeMapper }}\n </span>\n </button>\n </tui-data-list>\n </ng-template>\n\n <ng-template #countryValueContent>\n <img\n class=\"t-flag\"\n [alt]=\"countriesNames[countryIsoCode]\"\n [src]=\"countryFlagPath\"\n />\n </ng-template>\n</tui-hosted-dropdown>\n", styles: [":host{display:block}:host._disabled{pointer-events:none}.t-hosted-dropdown{display:block}.t-country-select{width:5.625rem}.t-country-select:not(._readonly) ::ng-deep input:not(:disabled){cursor:pointer}.t-country-select._readonly ::ng-deep input{cursor:default}.t-arrow-icon{transition-property:all;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;color:var(--tui-text-03);position:relative;box-sizing:border-box;cursor:pointer;transition-property:color,transform}.t-arrow-icon:hover{color:var(--tui-text-02)}:host._readonly .t-arrow-icon,:host._disabled .t-arrow-icon{pointer-events:none}:host[data-mode=onDark] .t-arrow-icon{color:var(--tui-text-03-night)}:host[data-mode=onDark] .t-arrow-icon:hover{color:var(--tui-text-01-night)}.t-arrow-icon_open{transform:rotate(180deg)}.t-input-phone{flex:1}.t-flag{width:1.75rem;height:1.25rem;margin-left:-.5rem}.t-country-item-flag{width:1.75rem;height:1.25rem}.t-country-item-name{margin-left:.75rem;margin-right:auto}.t-country-item-code{color:var(--tui-text-02);margin-right:.25rem}\n"], components: [{ type: i1.TuiHostedDropdownComponent, selector: "tui-hosted-dropdown", inputs: ["content", "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: i2.TuiInputPhoneComponent, selector: "tui-input-phone", inputs: ["countryCode", "phoneMaskAfterCountryCode", "allowText", "search"], outputs: ["searchChange"] }, { type: i1.TuiTextfieldComponent, selector: "input[tuiTextfield], textarea[tuiTextfield]" }, { type: i1.TuiDataListComponent, selector: "tui-data-list", inputs: ["role", "emptyContent"] }, { type: i1.TuiOptionComponent, selector: "button[tuiOption], a[tuiOption]", inputs: ["size", "role", "disabled", "value"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.TuiActiveZoneDirective, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { type: i1.TuiGroupDirective, selector: "[tuiGroup]:not(ng-container)", inputs: ["orientation", "adaptive", "collapsed", "rounded", "size"] }, { type: i1.TuiPrimitiveTextfieldDirective, selector: "tui-primitive-textfield" }, { type: i1.TuiHintOptionsDirective, selector: "[tuiHintContent]", inputs: ["tuiHintContent", "tuiHintDirection", "tuiHintAppearance", "tuiHintShowDelay", "tuiHintHideDelay"] }, { type: i1.TuiTextfieldCustomContentDirective, selector: "[tuiTextfieldCustomContent]", inputs: ["tuiTextfieldCustomContent"] }, { type: i1.TuiTextfieldLabelOutsideDirective, selector: "[tuiTextfieldLabelOutside]", inputs: ["tuiTextfieldLabelOutside"] }, { type: i1.TuiTextfieldIconDirective, selector: "[tuiTextfieldIcon]", inputs: ["tuiTextfieldIcon"] }, { type: i2.TuiInputPhoneDirective, selector: "tui-input-phone" }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i3.AsyncPipe, "tuiMapper": i4.TuiMapperPipe }, viewProviders: [FIXED_DROPDOWN_CONTROLLER_PROVIDER], changeDetection: i0.ChangeDetectionStrategy.OnPush });
137
+ ], viewQueries: [{ propertyName: "inputPhoneComponent", first: true, predicate: TuiInputPhoneComponent, descendants: true }, { propertyName: "primitiveTextfield", first: true, predicate: TuiPrimitiveTextfieldComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<tui-hosted-dropdown\n *ngIf=\"countriesNames$ | async as countriesNames\"\n class=\"t-hosted-dropdown\"\n [content]=\"dropdown\"\n [canOpen]=\"!readOnly\"\n [(open)]=\"open\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <div tuiGroup>\n <tui-primitive-textfield\n tuiHintContent=\"\"\n class=\"t-country-select tui-group__auto-width-item\"\n [tuiTextfieldCustomContent]=\"countryValueContent\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldIcon]=\"arrow\"\n [disabled]=\"disabled\"\n [focusable]=\"focusable\"\n [editable]=\"false\"\n [pseudoFocus]=\"open || null\"\n [readOnly]=\"readOnly\"\n ></tui-primitive-textfield>\n <tui-input-phone\n class=\"t-input-phone tui-group__auto-width-item\"\n [ngModel]=\"value\"\n [disabled]=\"disabled\"\n [focusable]=\"focusable\"\n [countryCode]=\"inputPhoneCountryCode\"\n [phoneMaskAfterCountryCode]=\"phoneMaskAfterCountryCode\"\n [readOnly]=\"readOnly\"\n [pseudoInvalid]=\"computedInvalid\"\n [pseudoFocus]=\"pseudoFocus\"\n [pseudoHover]=\"pseudoHover\"\n (ngModelChange)=\"onModelChange($event)\"\n >\n <ng-content></ng-content>\n <input\n tuiTextfield\n autocomplete=\"off\"\n />\n </tui-input-phone>\n </div>\n\n <ng-template #dropdown>\n <tui-data-list>\n <button\n *ngFor=\"let item of countries\"\n tuiOption\n (click)=\"onItemClick(item)\"\n >\n <img\n alt=\"\"\n class=\"t-country-item-flag\"\n [src]=\"getFlagPath(item)\"\n />\n <span class=\"t-country-item-name\">\n {{ countriesNames[item] }}\n </span>\n <span class=\"t-country-item-code\">\n {{ item | tuiMapper: isoToCountryCodeMapper }}\n </span>\n </button>\n </tui-data-list>\n </ng-template>\n\n <ng-template #countryValueContent>\n <img\n class=\"t-flag\"\n [alt]=\"countriesNames[countryIsoCode]\"\n [src]=\"countryFlagPath\"\n />\n </ng-template>\n</tui-hosted-dropdown>\n", styles: [":host{display:block}:host._disabled{pointer-events:none}.t-hosted-dropdown{display:block}.t-country-select{width:5.625rem}.t-country-select:not(._readonly) ::ng-deep input:not(:disabled){cursor:pointer}.t-country-select._readonly ::ng-deep input{cursor:default}.t-arrow-icon{transition-property:all;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;color:var(--tui-text-03);position:relative;box-sizing:border-box;cursor:pointer;transition-property:color,transform}.t-arrow-icon:hover{color:var(--tui-text-02)}:host._readonly .t-arrow-icon,:host._disabled .t-arrow-icon{pointer-events:none}:host[data-mode=onDark] .t-arrow-icon{color:var(--tui-text-03-night)}:host[data-mode=onDark] .t-arrow-icon:hover{color:var(--tui-text-01-night)}.t-arrow-icon_open{transform:rotate(180deg)}.t-input-phone{flex:1}.t-flag{width:1.75rem;height:1.25rem;margin-left:-.5rem}.t-country-item-flag{width:1.75rem;height:1.25rem}.t-country-item-name{margin-left:.75rem;margin-right:auto}.t-country-item-code{color:var(--tui-text-02);margin-right:.25rem}\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: i2.TuiInputPhoneComponent, selector: "tui-input-phone", inputs: ["countryCode", "phoneMaskAfterCountryCode", "allowText", "search"], outputs: ["searchChange"] }, { type: i1.TuiTextfieldComponent, selector: "input[tuiTextfield], textarea[tuiTextfield]" }, { type: i1.TuiDataListComponent, selector: "tui-data-list", inputs: ["role", "emptyContent", "size"] }, { type: i1.TuiOptionComponent, selector: "button[tuiOption], a[tuiOption]", inputs: ["size", "role", "disabled", "value"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.TuiActiveZoneDirective, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { type: i1.TuiGroupDirective, selector: "[tuiGroup]:not(ng-container)", inputs: ["orientation", "adaptive", "collapsed", "rounded", "size"] }, { type: i1.TuiPrimitiveTextfieldDirective, selector: "tui-primitive-textfield" }, { type: i1.TuiHintOptionsDirective, selector: "[tuiHintContent]", inputs: ["tuiHintContent", "tuiHintDirection", "tuiHintAppearance", "tuiHintShowDelay", "tuiHintHideDelay"] }, { type: i1.TuiTextfieldCustomContentDirective, selector: "[tuiTextfieldCustomContent]", inputs: ["tuiTextfieldCustomContent"] }, { type: i1.TuiTextfieldLabelOutsideDirective, selector: "[tuiTextfieldLabelOutside]", inputs: ["tuiTextfieldLabelOutside"] }, { type: i1.TuiTextfieldIconDirective, selector: "[tuiTextfieldIcon]", inputs: ["tuiTextfieldIcon"] }, { type: i2.TuiInputPhoneDirective, selector: "tui-input-phone" }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i3.AsyncPipe, "tuiMapper": i4.TuiMapperPipe }, viewProviders: [FIXED_DROPDOWN_CONTROLLER_PROVIDER], changeDetection: i0.ChangeDetectionStrategy.OnPush });
138
138
  __decorate([
139
139
  tuiDefaultProp()
140
140
  ], TuiInputPhoneInternationalComponent.prototype, "isoCode", null);
@@ -196,4 +196,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
196
196
  type: HostListener,
197
197
  args: [`drop.capture.prevent.stop`, [`$event`]]
198
198
  }], calculateMaskAfterCountryCode: [] } });
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsL2lucHV0LXBob25lLWludGVybmF0aW9uYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxZQUFZLEVBQ1osMEJBQTBCLEVBRTFCLGNBQWMsRUFHZCxPQUFPLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGNBQWMsRUFDZCx1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLDhCQUE4QixHQUlqQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1B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LCtCQUErQjtvQkFDekMsV0FBVyxFQUFFLDJDQUEyQztvQkFDeEQsU0FBUyxFQUFFLENBQUMsd0NBQXdDLENBQUM7b0JBQ3JELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxTQUFTLEVBQUU7d0JBQ1AsMEJBQTBCLHFDQUFxQzt3QkFDL0QsWUFBWSxxQ0FBcUM7cUJBQ3BEO29CQUNELGFBQWEsRUFBRSxDQUFDLGtDQUFrQyxDQUFDO2lCQUN0RDs7MEJBbUNRLFFBQVE7OzBCQUNSLElBQUk7OzBCQUNKLE1BQU07MkJBQUMsU0FBUzs7MEJBRWhCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDeEIsTUFBTTsyQkFBQyxjQUFjOzswQkFFckIsTUFBTTsyQkFBQyxhQUFhOzswQkFFcEIsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUUxQixNQUFNOzJCQUFDLHFDQUFxQzs0Q0F4Q2hDLG1CQUFtQjtzQkFEbkMsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBSWhCLGtCQUFrQjtzQkFEbEMsU0FBUzt1QkFBQyw4QkFBOEI7Z0JBT3JDLE9BQU87c0JBRlYsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBUXZCLFNBQVM7c0JBRFIsS0FBSztnQkFJRyxvQkFBb0I7c0JBRDVCLE1BQU07Z0JBK0RQLE9BQU87c0JBRk4sWUFBWTt1QkFBQyw0QkFBNEIsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3JELFlBQVk7dUJBQUMsMkJBQTJCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBcUU3Qyw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RUdWlDb250cm9sLFxuICAgIENIQVJfUExVUyxcbiAgICB0dWlBc0NvbnRyb2wsXG4gICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IsXG4gICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdCxcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgVHVpTWFwcGVyLFxuICAgIHR1aVB1cmUsXG4gICAgVHVpU3RyaW5nSGFuZGxlcixcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFRVSV9JQ09OU19QQVRILFxuICAgIFRVSV9NQVNLX1NZTUJPTFNfUkVHRVhQLFxuICAgIFRVSV9OT05fRElHSVRTX1JFR0VYUCxcbiAgICBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQsXG4gICAgVHVpU2l6ZUwsXG4gICAgVHVpU2l6ZU0sXG4gICAgVHVpU2l6ZVMsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7VHVpQ291bnRyeUlzb0NvZGV9IGZyb20gJ0B0YWlnYS11aS9pMThuJztcbmltcG9ydCB7VFVJX0FSUk9XfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvYXJyb3cnO1xuaW1wb3J0IHtUdWlJbnB1dFBob25lQ29tcG9uZW50fSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUnO1xuaW1wb3J0IHtGSVhFRF9EUk9QRE9XTl9DT05UUk9MTEVSX1BST1ZJREVSfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Byb3ZpZGVycyc7XG5pbXBvcnQge1RVSV9DT1VOVFJJRVN9IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7TUFTS19BRlRFUl9DT0RFX1JFR0VYUH0gZnJvbSAnLi9jb25zdC9tYXNrLWFmdGVyLWNvZGUtcmVnZXhwJztcbmltcG9ydCB7XG4gICAgVFVJX0lOUFVUX1BIT05FX0lOVEVSTkFUSU9OQUxfT1BUSU9OUyxcbiAgICBUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbE9wdGlvbnMsXG59IGZyb20gJy4vaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5vcHRpb25zJztcbmltcG9ydCB7VFVJX0NPVU5UUklFU19NQVNLU30gZnJvbSAnLi90b2tlbnMvY291bnRyaWVzLW1hc2tzJztcbmltcG9ydCB7dHVpRXh0cmFjdFZhbHVlRnJvbUV2ZW50fSBmcm9tICcuL3V0aWxzL2V4dHJhY3QtdmFsdWUtZnJvbS1ldmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBgdHVpLWlucHV0LXBob25lLWludGVybmF0aW9uYWxgLFxuICAgIHRlbXBsYXRlVXJsOiBgLi9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsLnRlbXBsYXRlLmh0bWxgLFxuICAgIHN0eWxlVXJsczogW2AuL2lucHV0LXBob25lLWludGVybmF0aW9uYWwuc3R5bGUubGVzc2BdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcihUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbENvbXBvbmVudCksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbENvbXBvbmVudCksXG4gICAgXSxcbiAgICB2aWV3UHJvdmlkZXJzOiBbRklYRURfRFJPUERPV05fQ09OVFJPTExFUl9QUk9WSURFUl0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aUNvbnRyb2w8c3RyaW5nPlxuICAgIGltcGxlbWVudHMgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZChUdWlJbnB1dFBob25lQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRQaG9uZUNvbXBvbmVudD86IFR1aUlucHV0UGhvbmVDb21wb25lbnQ7XG5cbiAgICBAVmlld0NoaWxkKFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByaW1pdGl2ZVRleHRmaWVsZD86IFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudDtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhdGljUGF0aDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoYGNvdW50cnlJc29Db2RlYClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHNldCBpc29Db2RlKGNvZGU6IFR1aUNvdW50cnlJc29Db2RlKSB7XG4gICAgICAgIHRoaXMuaW5wdXRQaG9uZUNvbXBvbmVudD8ud3JpdGVWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5jb3VudHJ5SXNvQ29kZSA9IGNvZGU7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBjb3VudHJpZXMgPSB0aGlzLm9wdGlvbnMuY291bnRyaWVzO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgY291bnRyeUlzb0NvZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFR1aUNvdW50cnlJc29Db2RlPigpO1xuXG4gICAgY291bnRyeUlzb0NvZGUgPSB0aGlzLm9wdGlvbnMuY291bnRyeUlzb0NvZGU7XG5cbiAgICBvcGVuID0gZmFsc2U7XG5cbiAgICByZWFkb25seSBhcnJvdzogUG9seW1vcnBoZXVzQ29udGVudDxcbiAgICAgICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdDxUdWlTaXplUyB8IFR1aVNpemVNIHwgVHVpU2l6ZUw+XG4gICAgPiA9IFRVSV9BUlJPVztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoVFVJX0lDT05TX1BBVEgpXG4gICAgICAgIGljb25zUGF0aDogVHVpU3RyaW5nSGFuZGxlcjxzdHJpbmc+LFxuICAgICAgICBASW5qZWN0KFRVSV9DT1VOVFJJRVMpXG4gICAgICAgIHJlYWRvbmx5IGNvdW50cmllc05hbWVzJDogT2JzZXJ2YWJsZTxSZWNvcmQ8VHVpQ291bnRyeUlzb0NvZGUsIHN0cmluZz4+LFxuICAgICAgICBASW5qZWN0KFRVSV9DT1VOVFJJRVNfTUFTS1MpXG4gICAgICAgIHJlYWRvbmx5IGNvdW50cmllc01hc2tzOiBSZWNvcmQ8VHVpQ291bnRyeUlzb0NvZGUsIHN0cmluZz4sXG4gICAgICAgIEBJbmplY3QoVFVJX0lOUFVUX1BIT05FX0lOVEVSTkFUSU9OQUxfT1BUSU9OUylcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbE9wdGlvbnMsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGNvbnRyb2wsIGNoYW5nZURldGVjdG9yUmVmKTtcblxuICAgICAgICB0aGlzLnN0YXRpY1BhdGggPSBpY29uc1BhdGgoYHR1aUljb25gKS5yZXBsYWNlKGB0dWlJY29uLnN2ZyN0dWlJY29uYCwgYGApO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0UGhvbmVDb21wb25lbnQgJiYgIXRoaXMuY29tcHV0ZWREaXNhYmxlZFxuICAgICAgICAgICAgPyB0aGlzLmlucHV0UGhvbmVDb21wb25lbnQubmF0aXZlRm9jdXNhYmxlRWxlbWVudFxuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKCEhdGhpcy5wcmltaXRpdmVUZXh0ZmllbGQgJiYgdGhpcy5wcmltaXRpdmVUZXh0ZmllbGQuZm9jdXNlZCkgfHxcbiAgICAgICAgICAgICghIXRoaXMuaW5wdXRQaG9uZUNvbXBvbmVudCAmJiB0aGlzLmlucHV0UGhvbmVDb21wb25lbnQuZm9jdXNlZClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgaW5wdXRQaG9uZUNvdW50cnlDb2RlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzb1RvQ291bnRyeUNvZGUodGhpcy5jb3VudHJ5SXNvQ29kZSk7XG4gICAgfVxuXG4gICAgZ2V0IHBob25lTWFza0FmdGVyQ291bnRyeUNvZGUoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgY291bnRyeUNvZGUgPSB0aGlzLmlzb1RvQ291bnRyeUNvZGUodGhpcy5jb3VudHJ5SXNvQ29kZSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlTWFza0FmdGVyQ291bnRyeUNvZGUoXG4gICAgICAgICAgICB0aGlzLmNvdW50cmllc01hc2tzW3RoaXMuY291bnRyeUlzb0NvZGVdLFxuICAgICAgICAgICAgY291bnRyeUNvZGUsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGNvdW50cnlGbGFnUGF0aCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRGbGFnUGF0aCh0aGlzLmNvdW50cnlJc29Db2RlKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKGBwYXN0ZS5jYXB0dXJlLnByZXZlbnQuc3RvcGAsIFtgJGV2ZW50YF0pXG4gICAgQEhvc3RMaXN0ZW5lcihgZHJvcC5jYXB0dXJlLnByZXZlbnQuc3RvcGAsIFtgJGV2ZW50YF0pXG4gICAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQgfCBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdHVpRXh0cmFjdFZhbHVlRnJvbUV2ZW50KGV2ZW50KS5yZXBsYWNlKFRVSV9OT05fRElHSVRTX1JFR0VYUCwgYGApO1xuICAgICAgICBjb25zdCBjb3VudHJ5SXNvQ29kZSA9IHRoaXMuZXh0cmFjdENvdW50cnlDb2RlKHZhbHVlKTtcblxuICAgICAgICBpZiAoIWNvdW50cnlJc29Db2RlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKFxuICAgICAgICAgICAgICAgIGAke3RoaXMuaW5wdXRQaG9uZUNvdW50cnlDb2RlfSR7dmFsdWV9YFxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShUVUlfTUFTS19TWU1CT0xTX1JFR0VYUCwgYGApXG4gICAgICAgICAgICAgICAgICAgIC5zbGljZSgwLCB0aGlzLmdldE1heEFsbG93ZWRMZW5ndGgodGhpcy5jb3VudHJ5SXNvQ29kZSkpLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvdW50cnlJc29Db2RlID09PSBUdWlDb3VudHJ5SXNvQ29kZS5SVSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9eOC8sIGA3YCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUNvdW50cnlJc29Db2RlKGNvdW50cnlJc29Db2RlKTtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShgJHtDSEFSX1BMVVN9JHt2YWx1ZX1gKTtcbiAgICB9XG5cbiAgICByZWFkb25seSBpc29Ub0NvdW50cnlDb2RlTWFwcGVyOiBUdWlNYXBwZXI8VHVpQ291bnRyeUlzb0NvZGUsIHN0cmluZz4gPSBpdGVtID0+XG4gICAgICAgIHRoaXMuaXNvVG9Db3VudHJ5Q29kZShpdGVtKTtcblxuICAgIGdldEZsYWdQYXRoKGNvZGU6IFR1aUNvdW50cnlJc29Db2RlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuc3RhdGljUGF0aH0ke2NvZGV9LnBuZ2A7XG4gICAgfVxuXG4gICAgb25JdGVtQ2xpY2soaXNvQ29kZTogVHVpQ291bnRyeUlzb0NvZGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMudXBkYXRlQ291bnRyeUlzb0NvZGUoaXNvQ29kZSk7XG4gICAgICAgIC8vIHJlY2FsY3VsYXRlcyBtYXNrIGluc2lkZSBpbnB1dFBob25lIHRvIHByZXZlbnQgaXNvQ29kZSBjb25mbGljdFxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICBjb25zdCBtYXhMZW5ndGggPSB0aGlzLmdldE1heEFsbG93ZWRMZW5ndGgoaXNvQ29kZSk7XG5cbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMudmFsdWUuc2xpY2UoMCwgbWF4TGVuZ3RoKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG92ZXJyaWRlIHNldERpc2FibGVkU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLnNldERpc2FibGVkU3RhdGUoKTtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cblxuICAgIGlzb1RvQ291bnRyeUNvZGUoaXNvQ29kZTogVHVpQ291bnRyeUlzb0NvZGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jb3VudHJpZXNNYXNrc1tpc29Db2RlXS5yZXBsYWNlKE1BU0tfQUZURVJfQ09ERV9SRUdFWFAsIGBgKTtcbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgb25BY3RpdmVab25lKGFjdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUZvY3VzZWQoYWN0aXZlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RmFsbGJhY2tWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYGA7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGNhbGN1bGF0ZU1hc2tBZnRlckNvdW50cnlDb2RlKG1hc2s6IHN0cmluZywgY291bnRyeUNvZGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBtYXNrLnJlcGxhY2UoY291bnRyeUNvZGUsIGBgKS50cmltKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNYXhBbGxvd2VkTGVuZ3RoKGlzb0NvZGU6IFR1aUNvdW50cnlJc29Db2RlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRyaWVzTWFza3NbaXNvQ29kZV0ucmVwbGFjZSgvWygpXFwtIF0vZywgYGApLmxlbmd0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUNvdW50cnlJc29Db2RlKGNvZGU6IFR1aUNvdW50cnlJc29Db2RlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY291bnRyeUlzb0NvZGUgPSBjb2RlO1xuICAgICAgICB0aGlzLmNvdW50cnlJc29Db2RlQ2hhbmdlLmVtaXQoY29kZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRyYWN0Q291bnRyeUNvZGUodmFsdWU6IHN0cmluZyk6IFR1aUNvdW50cnlJc29Db2RlIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRyaWVzLmZpbmQoY291bnRyeUlzb0NvZGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVDb2RlVGVzdCA9XG4gICAgICAgICAgICAgICAgY291bnRyeUlzb0NvZGUgPT09IFR1aUNvdW50cnlJc29Db2RlLlJVICYmXG4gICAgICAgICAgICAgICAgL15bNyB8IDhdLy50ZXN0KHZhbHVlKSAmJlxuICAgICAgICAgICAgICAgIC9eKD8hODgwWzEtOSBdKS8udGVzdCh2YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICB2YWx1ZS5sZW5ndGggKyAxID09PSB0aGlzLmdldE1heEFsbG93ZWRMZW5ndGgoVHVpQ291bnRyeUlzb0NvZGUuUlUpO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHJ1Q29kZVRlc3QgfHxcbiAgICAgICAgICAgICAgICAodmFsdWUuc3RhcnRzV2l0aChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc29Ub0NvdW50cnlDb2RlKGNvdW50cnlJc29Db2RlKS5yZXBsYWNlKENIQVJfUExVUywgYGApLFxuICAgICAgICAgICAgICAgICkgJiZcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUubGVuZ3RoICsgMSA9PT0gdGhpcy5nZXRNYXhBbGxvd2VkTGVuZ3RoKGNvdW50cnlJc29Db2RlKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjx0dWktaG9zdGVkLWRyb3Bkb3duXG4gICAgKm5nSWY9XCJjb3VudHJpZXNOYW1lcyQgfCBhc3luYyBhcyBjb3VudHJpZXNOYW1lc1wiXG4gICAgY2xhc3M9XCJ0LWhvc3RlZC1kcm9wZG93blwiXG4gICAgW2NvbnRlbnRdPVwiZHJvcGRvd25cIlxuICAgIFtjYW5PcGVuXT1cIiFyZWFkT25seVwiXG4gICAgWyhvcGVuKV09XCJvcGVuXCJcbiAgICAodHVpQWN0aXZlWm9uZUNoYW5nZSk9XCJvbkFjdGl2ZVpvbmUoJGV2ZW50KVwiXG4+XG4gICAgPGRpdiB0dWlHcm91cD5cbiAgICAgICAgPHR1aS1wcmltaXRpdmUtdGV4dGZpZWxkXG4gICAgICAgICAgICB0dWlIaW50Q29udGVudD1cIlwiXG4gICAgICAgICAgICBjbGFzcz1cInQtY291bnRyeS1zZWxlY3QgdHVpLWdyb3VwX19hdXRvLXdpZHRoLWl0ZW1cIlxuICAgICAgICAgICAgW3R1aVRleHRmaWVsZEN1c3RvbUNvbnRlbnRdPVwiY291bnRyeVZhbHVlQ29udGVudFwiXG4gICAgICAgICAgICBbdHVpVGV4dGZpZWxkTGFiZWxPdXRzaWRlXT1cInRydWVcIlxuICAgICAgICAgICAgW3R1aVRleHRmaWVsZEljb25dPVwiYXJyb3dcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtmb2N1c2FibGVdPVwiZm9jdXNhYmxlXCJcbiAgICAgICAgICAgIFtlZGl0YWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICBbcHNldWRvRm9jdXNdPVwib3BlbiB8fCBudWxsXCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgID48L3R1aS1wcmltaXRpdmUtdGV4dGZpZWxkPlxuICAgICAgICA8dHVpLWlucHV0LXBob25lXG4gICAgICAgICAgICBjbGFzcz1cInQtaW5wdXQtcGhvbmUgdHVpLWdyb3VwX19hdXRvLXdpZHRoLWl0ZW1cIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtmb2N1c2FibGVdPVwiZm9jdXNhYmxlXCJcbiAgICAgICAgICAgIFtjb3VudHJ5Q29kZV09XCJpbnB1dFBob25lQ291bnRyeUNvZGVcIlxuICAgICAgICAgICAgW3Bob25lTWFza0FmdGVyQ291bnRyeUNvZGVdPVwicGhvbmVNYXNrQWZ0ZXJDb3VudHJ5Q29kZVwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICAgICAgW3BzZXVkb0ludmFsaWRdPVwiY29tcHV0ZWRJbnZhbGlkXCJcbiAgICAgICAgICAgIFtwc2V1ZG9Gb2N1c109XCJwc2V1ZG9Gb2N1c1wiXG4gICAgICAgICAgICBbcHNldWRvSG92ZXJdPVwicHNldWRvSG92ZXJcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHVpVGV4dGZpZWxkXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvdHVpLWlucHV0LXBob25lPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLXRlbXBsYXRlICNkcm9wZG93bj5cbiAgICAgICAgPHR1aS1kYXRhLWxpc3Q+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY291bnRyaWVzXCJcbiAgICAgICAgICAgICAgICB0dWlPcHRpb25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWNvdW50cnktaXRlbS1mbGFnXCJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJnZXRGbGFnUGF0aChpdGVtKVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInQtY291bnRyeS1pdGVtLW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgY291bnRyaWVzTmFtZXNbaXRlbV0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0LWNvdW50cnktaXRlbS1jb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfCB0dWlNYXBwZXI6IGlzb1RvQ291bnRyeUNvZGVNYXBwZXIgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC90dWktZGF0YS1saXN0PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2NvdW50cnlWYWx1ZUNvbnRlbnQ+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAgIGNsYXNzPVwidC1mbGFnXCJcbiAgICAgICAgICAgIFthbHRdPVwiY291bnRyaWVzTmFtZXNbY291bnRyeUlzb0NvZGVdXCJcbiAgICAgICAgICAgIFtzcmNdPVwiY291bnRyeUZsYWdQYXRoXCJcbiAgICAgICAgLz5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC90dWktaG9zdGVkLWRyb3Bkb3duPlxuIl19
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsL2lucHV0LXBob25lLWludGVybmF0aW9uYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxZQUFZLEVBQ1osMEJBQTBCLEVBRTFCLGNBQWMsRUFHZCxPQUFPLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGNBQWMsRUFDZCx1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLDhCQUE4QixHQUlqQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1B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LCtCQUErQjtvQkFDekMsV0FBVyxFQUFFLDJDQUEyQztvQkFDeEQsU0FBUyxFQUFFLENBQUMsd0NBQXdDLENBQUM7b0JBQ3JELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxTQUFTLEVBQUU7d0JBQ1AsMEJBQTBCLHFDQUFxQzt3QkFDL0QsWUFBWSxxQ0FBcUM7cUJBQ3BEO29CQUNELGFBQWEsRUFBRSxDQUFDLGtDQUFrQyxDQUFDO2lCQUN0RDs7MEJBbUNRLFFBQVE7OzBCQUNSLElBQUk7OzBCQUNKLE1BQU07MkJBQUMsU0FBUzs7MEJBRWhCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDeEIsTUFBTTsyQkFBQyxjQUFjOzswQkFFckIsTUFBTTsyQkFBQyxhQUFhOzswQkFFcEIsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUUxQixNQUFNOzJCQUFDLHFDQUFxQzs0Q0F4Q2hDLG1CQUFtQjtzQkFEbkMsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBSWhCLGtCQUFrQjtzQkFEbEMsU0FBUzt1QkFBQyw4QkFBOEI7Z0JBT3JDLE9BQU87c0JBRlYsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBUXZCLFNBQVM7c0JBRFIsS0FBSztnQkFJRyxvQkFBb0I7c0JBRDVCLE1BQU07Z0JBK0RQLE9BQU87c0JBRk4sWUFBWTt1QkFBQyw0QkFBNEIsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3JELFlBQVk7dUJBQUMsMkJBQTJCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBcUU3Qyw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RUdWlDb250cm9sLFxuICAgIENIQVJfUExVUyxcbiAgICB0dWlBc0NvbnRyb2wsXG4gICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IsXG4gICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdCxcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgVHVpTWFwcGVyLFxuICAgIHR1aVB1cmUsXG4gICAgVHVpU3RyaW5nSGFuZGxlcixcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFRVSV9JQ09OU19QQVRILFxuICAgIFRVSV9NQVNLX1NZTUJPTFNfUkVHRVhQLFxuICAgIFRVSV9OT05fRElHSVRTX1JFR0VYUCxcbiAgICBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQsXG4gICAgVHVpU2l6ZUwsXG4gICAgVHVpU2l6ZU0sXG4gICAgVHVpU2l6ZVMsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7VHVpQ291bnRyeUlzb0NvZGV9IGZyb20gJ0B0YWlnYS11aS9pMThuJztcbmltcG9ydCB7VFVJX0FSUk9XfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvYXJyb3cnO1xuaW1wb3J0IHtUdWlJbnB1dFBob25lQ29tcG9uZW50fSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUnO1xuaW1wb3J0IHtGSVhFRF9EUk9QRE9XTl9DT05UUk9MTEVSX1BST1ZJREVSfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Byb3ZpZGVycyc7XG5pbXBvcnQge1RVSV9DT1VOVFJJRVN9IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7TUFTS19BRlRFUl9DT0RFX1JFR0VYUH0gZnJvbSAnLi9jb25zdC9tYXNrLWFmdGVyLWNvZGUtcmVnZXhwJztcbmltcG9ydCB7XG4gICAgVFVJX0lOUFVUX1BIT05FX0lOVEVSTkFUSU9OQUxfT1BUSU9OUyxcbiAgICBUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbE9wdGlvbnMsXG59IGZyb20gJy4vaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5vcHRpb25zJztcbmltcG9ydCB7VFVJX0NPVU5UUklFU19NQVNLU30gZnJvbSAnLi90b2tlbnMvY291bnRyaWVzLW1hc2tzJztcbmltcG9ydCB7dHVpRXh0cmFjdFZhbHVlRnJvbUV2ZW50fSBmcm9tICcuL3V0aWxzL2V4dHJhY3QtdmFsdWUtZnJvbS1ldmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBgdHVpLWlucHV0LXBob25lLWludGVybmF0aW9uYWxgLFxuICAgIHRlbXBsYXRlVXJsOiBgLi9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsLnRlbXBsYXRlLmh0bWxgLFxuICAgIHN0eWxlVXJsczogW2AuL2lucHV0LXBob25lLWludGVybmF0aW9uYWwuc3R5bGUubGVzc2BdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcihUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbENvbXBvbmVudCksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbENvbXBvbmVudCksXG4gICAgXSxcbiAgICB2aWV3UHJvdmlkZXJzOiBbRklYRURfRFJPUERPV05fQ09OVFJPTExFUl9QUk9WSURFUl0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aUNvbnRyb2w8c3RyaW5nPlxuICAgIGltcGxlbWVudHMgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZChUdWlJbnB1dFBob25lQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRQaG9uZUNvbXBvbmVudD86IFR1aUlucHV0UGhvbmVDb21wb25lbnQ7XG5cbiAgICBAVmlld0NoaWxkKFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByaW1pdGl2ZVRleHRmaWVsZD86IFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudDtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhdGljUGF0aDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoYGNvdW50cnlJc29Db2RlYClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHNldCBpc29Db2RlKGNvZGU6IFR1aUNvdW50cnlJc29Db2RlKSB7XG4gICAgICAgIHRoaXMuaW5wdXRQaG9uZUNvbXBvbmVudD8ud3JpdGVWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5jb3VudHJ5SXNvQ29kZSA9IGNvZGU7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBjb3VudHJpZXMgPSB0aGlzLm9wdGlvbnMuY291bnRyaWVzO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgY291bnRyeUlzb0NvZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFR1aUNvdW50cnlJc29Db2RlPigpO1xuXG4gICAgY291bnRyeUlzb0NvZGUgPSB0aGlzLm9wdGlvbnMuY291bnRyeUlzb0NvZGU7XG5cbiAgICBvcGVuID0gZmFsc2U7XG5cbiAgICByZWFkb25seSBhcnJvdzogUG9seW1vcnBoZXVzQ29udGVudDxcbiAgICAgICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdDxUdWlTaXplUyB8IFR1aVNpemVNIHwgVHVpU2l6ZUw+XG4gICAgPiA9IFRVSV9BUlJPVztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoVFVJX0lDT05TX1BBVEgpXG4gICAgICAgIGljb25zUGF0aDogVHVpU3RyaW5nSGFuZGxlcjxzdHJpbmc+LFxuICAgICAgICBASW5qZWN0KFRVSV9DT1VOVFJJRVMpXG4gICAgICAgIHJlYWRvbmx5IGNvdW50cmllc05hbWVzJDogT2JzZXJ2YWJsZTxSZWNvcmQ8VHVpQ291bnRyeUlzb0NvZGUsIHN0cmluZz4+LFxuICAgICAgICBASW5qZWN0KFRVSV9DT1VOVFJJRVNfTUFTS1MpXG4gICAgICAgIHJlYWRvbmx5IGNvdW50cmllc01hc2tzOiBSZWNvcmQ8VHVpQ291bnRyeUlzb0NvZGUsIHN0cmluZz4sXG4gICAgICAgIEBJbmplY3QoVFVJX0lOUFVUX1BIT05FX0lOVEVSTkFUSU9OQUxfT1BUSU9OUylcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbE9wdGlvbnMsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGNvbnRyb2wsIGNoYW5nZURldGVjdG9yUmVmKTtcblxuICAgICAgICB0aGlzLnN0YXRpY1BhdGggPSBpY29uc1BhdGgoYHR1aUljb25gKS5yZXBsYWNlKGB0dWlJY29uLnN2ZyN0dWlJY29uYCwgYGApO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0UGhvbmVDb21wb25lbnQgJiYgIXRoaXMuY29tcHV0ZWREaXNhYmxlZFxuICAgICAgICAgICAgPyB0aGlzLmlucHV0UGhvbmVDb21wb25lbnQubmF0aXZlRm9jdXNhYmxlRWxlbWVudFxuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKCEhdGhpcy5wcmltaXRpdmVUZXh0ZmllbGQgJiYgdGhpcy5wcmltaXRpdmVUZXh0ZmllbGQuZm9jdXNlZCkgfHxcbiAgICAgICAgICAgICghIXRoaXMuaW5wdXRQaG9uZUNvbXBvbmVudCAmJiB0aGlzLmlucHV0UGhvbmVDb21wb25lbnQuZm9jdXNlZClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgaW5wdXRQaG9uZUNvdW50cnlDb2RlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzb1RvQ291bnRyeUNvZGUodGhpcy5jb3VudHJ5SXNvQ29kZSk7XG4gICAgfVxuXG4gICAgZ2V0IHBob25lTWFza0FmdGVyQ291bnRyeUNvZGUoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgY291bnRyeUNvZGUgPSB0aGlzLmlzb1RvQ291bnRyeUNvZGUodGhpcy5jb3VudHJ5SXNvQ29kZSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlTWFza0FmdGVyQ291bnRyeUNvZGUoXG4gICAgICAgICAgICB0aGlzLmNvdW50cmllc01hc2tzW3RoaXMuY291bnRyeUlzb0NvZGVdLFxuICAgICAgICAgICAgY291bnRyeUNvZGUsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGNvdW50cnlGbGFnUGF0aCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRGbGFnUGF0aCh0aGlzLmNvdW50cnlJc29Db2RlKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKGBwYXN0ZS5jYXB0dXJlLnByZXZlbnQuc3RvcGAsIFtgJGV2ZW50YF0pXG4gICAgQEhvc3RMaXN0ZW5lcihgZHJvcC5jYXB0dXJlLnByZXZlbnQuc3RvcGAsIFtgJGV2ZW50YF0pXG4gICAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQgfCBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdHVpRXh0cmFjdFZhbHVlRnJvbUV2ZW50KGV2ZW50KS5yZXBsYWNlKFRVSV9OT05fRElHSVRTX1JFR0VYUCwgYGApO1xuICAgICAgICBjb25zdCBjb3VudHJ5SXNvQ29kZSA9IHRoaXMuZXh0cmFjdENvdW50cnlDb2RlKHZhbHVlKTtcblxuICAgICAgICBpZiAoIWNvdW50cnlJc29Db2RlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKFxuICAgICAgICAgICAgICAgIGAke3RoaXMuaW5wdXRQaG9uZUNvdW50cnlDb2RlfSR7dmFsdWV9YFxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShUVUlfTUFTS19TWU1CT0xTX1JFR0VYUCwgYGApXG4gICAgICAgICAgICAgICAgICAgIC5zbGljZSgwLCB0aGlzLmdldE1heEFsbG93ZWRMZW5ndGgodGhpcy5jb3VudHJ5SXNvQ29kZSkpLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvdW50cnlJc29Db2RlID09PSBUdWlDb3VudHJ5SXNvQ29kZS5SVSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9eOC8sIGA3YCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUNvdW50cnlJc29Db2RlKGNvdW50cnlJc29Db2RlKTtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShgJHtDSEFSX1BMVVN9JHt2YWx1ZX1gKTtcbiAgICB9XG5cbiAgICByZWFkb25seSBpc29Ub0NvdW50cnlDb2RlTWFwcGVyOiBUdWlNYXBwZXI8VHVpQ291bnRyeUlzb0NvZGUsIHN0cmluZz4gPSBpdGVtID0+XG4gICAgICAgIHRoaXMuaXNvVG9Db3VudHJ5Q29kZShpdGVtKTtcblxuICAgIGdldEZsYWdQYXRoKGNvZGU6IFR1aUNvdW50cnlJc29Db2RlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuc3RhdGljUGF0aH0ke2NvZGV9LnBuZ2A7XG4gICAgfVxuXG4gICAgb25JdGVtQ2xpY2soaXNvQ29kZTogVHVpQ291bnRyeUlzb0NvZGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMudXBkYXRlQ291bnRyeUlzb0NvZGUoaXNvQ29kZSk7XG4gICAgICAgIC8vIHJlY2FsY3VsYXRlcyBtYXNrIGluc2lkZSBpbnB1dFBob25lIHRvIHByZXZlbnQgaXNvQ29kZSBjb25mbGljdFxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICBjb25zdCBtYXhMZW5ndGggPSB0aGlzLmdldE1heEFsbG93ZWRMZW5ndGgoaXNvQ29kZSk7XG5cbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMudmFsdWUuc2xpY2UoMCwgbWF4TGVuZ3RoKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG92ZXJyaWRlIHNldERpc2FibGVkU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLnNldERpc2FibGVkU3RhdGUoKTtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cblxuICAgIGlzb1RvQ291bnRyeUNvZGUoaXNvQ29kZTogVHVpQ291bnRyeUlzb0NvZGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jb3VudHJpZXNNYXNrc1tpc29Db2RlXS5yZXBsYWNlKE1BU0tfQUZURVJfQ09ERV9SRUdFWFAsIGBgKTtcbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgb25BY3RpdmVab25lKGFjdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUZvY3VzZWQoYWN0aXZlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RmFsbGJhY2tWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYGA7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGNhbGN1bGF0ZU1hc2tBZnRlckNvdW50cnlDb2RlKG1hc2s6IHN0cmluZywgY291bnRyeUNvZGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBtYXNrLnJlcGxhY2UoY291bnRyeUNvZGUsIGBgKS50cmltKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNYXhBbGxvd2VkTGVuZ3RoKGlzb0NvZGU6IFR1aUNvdW50cnlJc29Db2RlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRyaWVzTWFza3NbaXNvQ29kZV0ucmVwbGFjZSgvWygpXFwtIF0vZywgYGApLmxlbmd0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUNvdW50cnlJc29Db2RlKGNvZGU6IFR1aUNvdW50cnlJc29Db2RlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY291bnRyeUlzb0NvZGUgPSBjb2RlO1xuICAgICAgICB0aGlzLmNvdW50cnlJc29Db2RlQ2hhbmdlLmVtaXQoY29kZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRyYWN0Q291bnRyeUNvZGUodmFsdWU6IHN0cmluZyk6IFR1aUNvdW50cnlJc29Db2RlIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRyaWVzLmZpbmQoY291bnRyeUlzb0NvZGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVDb2RlVGVzdCA9XG4gICAgICAgICAgICAgICAgY291bnRyeUlzb0NvZGUgPT09IFR1aUNvdW50cnlJc29Db2RlLlJVICYmXG4gICAgICAgICAgICAgICAgL15bNyB8IDhdLy50ZXN0KHZhbHVlKSAmJlxuICAgICAgICAgICAgICAgIC9eKD8hODgwWzEtOSBdKS8udGVzdCh2YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICB2YWx1ZS5sZW5ndGggKyAxID09PSB0aGlzLmdldE1heEFsbG93ZWRMZW5ndGgoVHVpQ291bnRyeUlzb0NvZGUuUlUpO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHJ1Q29kZVRlc3QgfHxcbiAgICAgICAgICAgICAgICAodmFsdWUuc3RhcnRzV2l0aChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc29Ub0NvdW50cnlDb2RlKGNvdW50cnlJc29Db2RlKS5yZXBsYWNlKENIQVJfUExVUywgYGApLFxuICAgICAgICAgICAgICAgICkgJiZcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUubGVuZ3RoICsgMSA9PT0gdGhpcy5nZXRNYXhBbGxvd2VkTGVuZ3RoKGNvdW50cnlJc29Db2RlKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjx0dWktaG9zdGVkLWRyb3Bkb3duXG4gICAgKm5nSWY9XCJjb3VudHJpZXNOYW1lcyQgfCBhc3luYyBhcyBjb3VudHJpZXNOYW1lc1wiXG4gICAgY2xhc3M9XCJ0LWhvc3RlZC1kcm9wZG93blwiXG4gICAgW2NvbnRlbnRdPVwiZHJvcGRvd25cIlxuICAgIFtjYW5PcGVuXT1cIiFyZWFkT25seVwiXG4gICAgWyhvcGVuKV09XCJvcGVuXCJcbiAgICAodHVpQWN0aXZlWm9uZUNoYW5nZSk9XCJvbkFjdGl2ZVpvbmUoJGV2ZW50KVwiXG4+XG4gICAgPGRpdiB0dWlHcm91cD5cbiAgICAgICAgPHR1aS1wcmltaXRpdmUtdGV4dGZpZWxkXG4gICAgICAgICAgICB0dWlIaW50Q29udGVudD1cIlwiXG4gICAgICAgICAgICBjbGFzcz1cInQtY291bnRyeS1zZWxlY3QgdHVpLWdyb3VwX19hdXRvLXdpZHRoLWl0ZW1cIlxuICAgICAgICAgICAgW3R1aVRleHRmaWVsZEN1c3RvbUNvbnRlbnRdPVwiY291bnRyeVZhbHVlQ29udGVudFwiXG4gICAgICAgICAgICBbdHVpVGV4dGZpZWxkTGFiZWxPdXRzaWRlXT1cInRydWVcIlxuICAgICAgICAgICAgW3R1aVRleHRmaWVsZEljb25dPVwiYXJyb3dcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtmb2N1c2FibGVdPVwiZm9jdXNhYmxlXCJcbiAgICAgICAgICAgIFtlZGl0YWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICBbcHNldWRvRm9jdXNdPVwib3BlbiB8fCBudWxsXCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgID48L3R1aS1wcmltaXRpdmUtdGV4dGZpZWxkPlxuICAgICAgICA8dHVpLWlucHV0LXBob25lXG4gICAgICAgICAgICBjbGFzcz1cInQtaW5wdXQtcGhvbmUgdHVpLWdyb3VwX19hdXRvLXdpZHRoLWl0ZW1cIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtmb2N1c2FibGVdPVwiZm9jdXNhYmxlXCJcbiAgICAgICAgICAgIFtjb3VudHJ5Q29kZV09XCJpbnB1dFBob25lQ291bnRyeUNvZGVcIlxuICAgICAgICAgICAgW3Bob25lTWFza0FmdGVyQ291bnRyeUNvZGVdPVwicGhvbmVNYXNrQWZ0ZXJDb3VudHJ5Q29kZVwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICAgICAgW3BzZXVkb0ludmFsaWRdPVwiY29tcHV0ZWRJbnZhbGlkXCJcbiAgICAgICAgICAgIFtwc2V1ZG9Gb2N1c109XCJwc2V1ZG9Gb2N1c1wiXG4gICAgICAgICAgICBbcHNldWRvSG92ZXJdPVwicHNldWRvSG92ZXJcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHVpVGV4dGZpZWxkXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvdHVpLWlucHV0LXBob25lPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLXRlbXBsYXRlICNkcm9wZG93bj5cbiAgICAgICAgPHR1aS1kYXRhLWxpc3Q+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY291bnRyaWVzXCJcbiAgICAgICAgICAgICAgICB0dWlPcHRpb25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWNvdW50cnktaXRlbS1mbGFnXCJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJnZXRGbGFnUGF0aChpdGVtKVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInQtY291bnRyeS1pdGVtLW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgY291bnRyaWVzTmFtZXNbaXRlbV0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0LWNvdW50cnktaXRlbS1jb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfCB0dWlNYXBwZXI6IGlzb1RvQ291bnRyeUNvZGVNYXBwZXIgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC90dWktZGF0YS1saXN0PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2NvdW50cnlWYWx1ZUNvbnRlbnQ+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAgIGNsYXNzPVwidC1mbGFnXCJcbiAgICAgICAgICAgIFthbHRdPVwiY291bnRyaWVzTmFtZXNbY291bnRyeUlzb0NvZGVdXCJcbiAgICAgICAgICAgIFtzcmNdPVwiY291bnRyeUZsYWdQYXRoXCJcbiAgICAgICAgLz5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC90dWktaG9zdGVkLWRyb3Bkb3duPlxuIl19
@@ -306,7 +306,7 @@ TuiInputTagComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
306
306
  tuiAsDataListHost(TuiInputTagComponent),
307
307
  TEXTFIELD_CONTROLLER_PROVIDER,
308
308
  MODE_PROVIDER,
309
- ], queries: [{ propertyName: "datalist", first: true, predicate: TuiDataListDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "hostedDropdown", first: true, predicate: TuiHostedDropdownComponent, descendants: true }, { propertyName: "focusableElement", first: true, predicate: ["focusableElement"], descendants: true }, { propertyName: "tagsContainer", first: true, predicate: ["tagsContainer"], descendants: true }, { propertyName: "cleanerSvg", first: true, predicate: ["cleaner"], descendants: true, read: ElementRef }, { propertyName: "scrollBar", first: true, predicate: TuiScrollbarComponent, descendants: true, read: ElementRef }, { propertyName: "errorIconTemplate", first: true, predicate: ["errorIcon"], descendants: true }, { propertyName: "scrollerSetter", first: true, predicate: TuiScrollbarComponent, descendants: true }, { propertyName: "tags", predicate: ["tag"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"hintOptions?.change$ | async\"></ng-container>\n<tui-hosted-dropdown\n class=\"t-hosted\"\n [canOpen]=\"canOpen\"\n [content]=\"datalist || ''\"\n [(open)]=\"open\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <div\n tuiWrapper\n [appearance]=\"appearance\"\n [readOnly]=\"readOnly\"\n [focus]=\"computedFocused\"\n [hover]=\"pseudoHover\"\n [disabled]=\"computedDisabled\"\n [invalid]=\"computedInvalid\"\n (mousedown)=\"onMouseDown($event)\"\n >\n <div class=\"t-content\">\n <div\n *ngIf=\"iconLeft\"\n class=\"t-icons t-icons_left\"\n >\n <tui-svg\n *polymorpheusOutlet=\"iconLeft as src; context: {$implicit: size}\"\n class=\"t-icon\"\n [src]=\"src\"\n ></tui-svg>\n </div>\n <div class=\"t-wrapper\">\n <div class=\"t-absolute-wrapper\">\n <div\n *ngIf=\"hasPlaceholder\"\n automation-id=\"tui-input-tag__placeholder\"\n class=\"t-placeholder\"\n [class.t-placeholder_raised]=\"placeholderRaised\"\n >\n <ng-content></ng-content>\n </div>\n </div>\n <tui-scrollbar\n *ngIf=\"!expandable; else items\"\n class=\"t-scrollbar\"\n [hidden]=\"true\"\n >\n <ng-container [ngTemplateOutlet]=\"items\"></ng-container>\n </tui-scrollbar>\n <ng-template #items>\n <div\n #tagsContainer\n class=\"t-tags\"\n >\n <ng-container *ngIf=\"labelOutside; else text\">\n <tui-tag\n *ngFor=\"let item of value; index as index; trackBy: trackByFn\"\n #tag\n automation-id=\"tui-input-tag__tag\"\n class=\"t-tag\"\n [status]=\"(status$ | async)!\"\n [leftContent]=\"getLeftContent(item)\"\n [tuiFocusable]=\"false\"\n [disabled]=\"computedDisabled || disabledItemHandler(item)\"\n [editable]=\"editable && !readOnly\"\n [hoverable]=\"!readOnly\"\n [removable]=\"!readOnly\"\n [separator]=\"separator\"\n [maxLength]=\"maxLength\"\n [size]=\"controller.size\"\n [value]=\"item.toString()\"\n (edited)=\"onTagEdited($event, index)\"\n (keydown.arrowLeft.prevent)=\"onTagKeyDownArrowLeft(index)\"\n (keydown.arrowRight.prevent)=\"onTagKeyDownArrowRight(index)\"\n ></tui-tag>\n </ng-container>\n <ng-template #text>\n <span\n *ngFor=\"let item of value\"\n class=\"t-text\"\n [class.t-text_disabled]=\"disabledItemHandler(item)\"\n [class.t-text_error]=\"!tagValidator(item)\"\n [textContent]=\"item\"\n ></span>\n </ng-template>\n <div\n class=\"t-input-wrapper\"\n [class.t-input-wrapper_collapsed]=\"computedDisabled || readOnly || inputHidden\"\n >\n <div class=\"t-ghost\">{{ search }}</div>\n <input\n #focusableElement\n type=\"text\"\n automation-id=\"tui-input-tag__native\"\n class=\"t-native\"\n [placeholder]=\"placeholder\"\n [class.t-native_hidden]=\"inputHidden\"\n [attr.maxLength]=\"maxLength\"\n [id]=\"id\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly || inputHidden\"\n [tuiFocusable]=\"computedFocusable\"\n [ngModel]=\"search\"\n (ngModelChange)=\"onInput($event)\"\n (paste.prevent)=\"onPaste($event)\"\n (drop.prevent)=\"onDrop($any($event))\"\n (keydown.arrowLeft)=\"onFieldKeyDownArrowLeft($event)\"\n (keydown.backspace)=\"onFieldKeyDownBackspace($event)\"\n (keydown.enter.prevent)=\"onFieldKeyDownEnter()\"\n />\n </div>\n </div>\n </ng-template>\n </div>\n <div\n *ngIf=\"hasRightIcons\"\n class=\"t-icons t-icons_right\"\n >\n <tui-svg\n *ngIf=\"hasCleaner\"\n #cleaner\n automation-id=\"tui-input-tag__cleaner\"\n src=\"tuiIconCloseLarge\"\n class=\"t-cleaner\"\n (click.stop)=\"onCleanerClick()\"\n ></tui-svg>\n <tui-tooltip\n *ngIf=\"hintOptions && hintOptions.content && !computedDisabled\"\n automation-id=\"tui-input-tag__tooltip\"\n describeId=\"placeholer_until_accesibility_is_added\"\n class=\"t-tooltip\"\n [direction]=\"hintOptions.direction\"\n [appearance]=\"hintOptions.appearance\"\n [content]=\"hintOptions.content\"\n [showDelay]=\"hintOptions.showDelay\"\n [hideDelay]=\"hintOptions.hideDelay\"\n ></tui-tooltip>\n <div *ngIf=\"icon\">\n <tui-svg\n *polymorpheusOutlet=\"icon as src; context: {$implicit: size}\"\n class=\"t-icon\"\n [src]=\"src\"\n ></tui-svg>\n </div>\n </div>\n </div>\n <ng-template #errorIcon>\n <tui-svg\n src=\"tuiIconAttention\"\n class=\"t-error-icon\"\n ></tui-svg>\n </ng-template>\n </div>\n</tui-hosted-dropdown>\n", styles: [":host{font:var(--tui-font-text-s);color:var(--tui-text-01);position:relative;display:block;border-radius:var(--tui-radius-m);text-align:left}:host[data-size=s]{height:var(--tui-height-s);min-height:var(--tui-height-s);max-height:var(--tui-height-s)}:host[data-size=m]{height:var(--tui-height-m);min-height:var(--tui-height-m);max-height:var(--tui-height-m)}:host[data-size=l]{height:var(--tui-height-l);min-height:var(--tui-height-l);max-height:var(--tui-height-l);font:var(--tui-font-text-m);line-height:1.25rem}.t-input{font:var(--tui-font-text-s);color:var(--tui-text-01);padding:0;margin:0;border:0;border-radius:inherit;background:none;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;position:absolute;top:0;left:0;width:100%;height:100%;padding:0 var(--tui-padding-m);border:solid transparent;border-width:0 var(--border-end, 0) 0 var(--border-start, 0);border-inline-start-width:var(--border-start, 0);border-inline-end-width:var(--border-end, 0);text-indent:var(--text-indent);text-align:inherit;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-transform:inherit;resize:none}.t-input:-webkit-autofill,.t-input:-webkit-autofill:hover,.t-input:-webkit-autofill:focus{caret-color:var(--tui-base-09);border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 100rem var(--tui-autofill) inset!important}:host[data-mode=onDark] .t-input:-webkit-autofill,.t-input :host-context(tui-primitive-textfield[data-mode=\"onDark\"]):-webkit-autofill,.t-input :host-context(tui-text-area[data-mode=\"onDark\"]):-webkit-autofill,:host[data-mode=onDark] .t-input:-webkit-autofill:hover,.t-input :host-context(tui-primitive-textfield[data-mode=\"onDark\"]):-webkit-autofill:hover,.t-input :host-context(tui-text-area[data-mode=\"onDark\"]):-webkit-autofill:hover,:host[data-mode=onDark] .t-input:-webkit-autofill:focus,.t-input :host-context(tui-primitive-textfield[data-mode=\"onDark\"]):-webkit-autofill:focus,.t-input :host-context(tui-text-area[data-mode=\"onDark\"]):-webkit-autofill:focus{caret-color:var(--tui-base-09);border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01-night)!important;border-color:var(--tui-autofill-night);-webkit-box-shadow:0 0 0 100rem var(--tui-autofill-night) inset!important}:host[data-size=s] .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"s\"]):not(tui-primitive-textfield),.t-input :host-context(tui-text-area[data-size=\"s\"]):not(tui-text-area){padding:0 var(--tui-padding-s)}:host[data-size=l] .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"l\"]):not(tui-primitive-textfield),.t-input :host-context(tui-text-area[data-size=\"l\"]):not(tui-text-area){padding:0 var(--tui-padding-l)}:host._disabled .t-input,.t-input :host-context(tui-primitive-textfield._disabled),.t-input :host-context(tui-text-area._disabled){pointer-events:none}:host[data-size=l]:not(._label-outside) .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"l\"]:not(._label-outside)):not(tui-primitive-textfield){padding-top:1.25rem}:host[data-size=l]:not(._label-outside) .t-input:-webkit-autofill+.t-content .t-placeholder,.t-input :host-context(tui-primitive-textfield[data-size=\"l\"]:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.t-content .t-placeholder{font-size:.8156rem;transform:translateY(-.625rem)}:host[data-size=m]:not(._label-outside) .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"m\"]:not(._label-outside)):not(tui-primitive-textfield){padding-top:1.125rem}:host[data-size=m]:not(._label-outside) .t-input:-webkit-autofill+.t-content .t-placeholder,.t-input :host-context(tui-primitive-textfield[data-size=\"m\"]:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.t-content .t-placeholder{font-size:.69rem;transform:translateY(-.5rem)}:host._hidden input.t-input,.t-input :host-context(tui-primitive-textfield._hidden){opacity:0;text-indent:-10em;-webkit-user-select:none}.t-content{display:flex;height:100%;width:100%;padding:0 var(--tui-padding-m);box-sizing:border-box;align-items:center;overflow:hidden}:host[data-size=s] .t-content{padding:0 var(--tui-padding-s)}:host[data-size=l] .t-content{padding:0 var(--tui-padding-l)}.t-content:after{content:\"\";margin-right:-.25rem}:host[data-size=m] .t-content:after{display:none}.t-wrapper{flex:1;min-width:0;padding-right:.25rem;-webkit-padding-end:.25rem;padding-inline-end:.25rem;-webkit-padding-start:0;padding-inline-start:0}.t-placeholder{transition-property:transform,font-size,color,letter-spacing;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;font:var(--tui-font-text-s);color:var(--tui-text-01);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;width:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:var(--tui-text-02);pointer-events:none;will-change:transform;transform:translateY(0)}.t-placeholder_raised{transform:translateY(-.625rem)}:host[data-size=m] .t-placeholder_raised{font:var(--tui-font-text-xs);transform:translateY(-.5rem);letter-spacing:.025rem}:host._invalid:not(._focused) .t-placeholder_raised,:host._invalid:not(._focused):hover .t-placeholder_raised{color:var(--tui-error-fill)}:host[data-mode=onDark]._invalid:not(._focused) .t-placeholder_raised,:host[data-mode=onDark]._invalid:not(._focused):hover .t-placeholder_raised{color:var(--tui-error-fill-night)}:host._focused .t-placeholder,:host[data-size=m]._focused._label-outside .t-placeholder,:host[data-size=l]._focused._label-outside .t-placeholder{color:var(--tui-text-03)}:host[data-size=l] .t-placeholder{font-size:.9375rem}:host[data-size=l] .t-placeholder_raised{font-size:.8156rem}:host[data-size=m]._focused:not(._label-outside) .t-placeholder,:host[data-size=l]._focused:not(._label-outside) .t-placeholder{color:var(--tui-text-01)}:host[data-mode=onDark] .t-placeholder{color:var(--tui-text-02-night)}:host[data-size=m][data-mode=onDark]._focused:not(._label-outside) .t-placeholder,:host[data-size=l][data-mode=onDark]._focused:not(._label-outside) .t-placeholder{color:var(--tui-text-01-night)}:host[data-mode=onDark]._focused .t-placeholder,:host[data-size=m][data-mode=onDark]._focused._label-outside .t-placeholder,:host[data-size=l][data-mode=onDark]._focused._label-outside .t-placeholder{color:var(--tui-text-02-night)}@supports (-webkit-hyphens: none){.t-placeholder{will-change:unset;transition-property:transform,color,letter-spacing}}.t-cleaner{transition-property:all;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;color:var(--tui-text-03);position:relative;box-sizing:border-box;cursor:pointer;transition-property:color,transform}.t-cleaner:hover{color:var(--tui-text-02)}:host._readonly .t-cleaner,:host._disabled .t-cleaner{pointer-events:none}:host[data-mode=onDark] .t-cleaner{color:var(--tui-text-03-night)}:host[data-mode=onDark] .t-cleaner:hover{color:var(--tui-text-01-night)}.t-icon{display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;color:var(--tui-text-03)}:host[data-mode=onDark] .t-icon{color:var(--tui-text-03-night)}.t-icon_left{margin:0 .5rem 0 -.25rem;-webkit-margin-start:-.25rem;margin-inline-start:-.25rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}:host[data-size=s] .t-icon_left{margin-right:.25rem;-webkit-margin-end:.25rem;margin-inline-end:.25rem}:host{cursor:text}:host._expandable{height:auto;max-height:none}:host._disabled{pointer-events:none}:host._readonly{cursor:default}.t-hosted{display:block;border-radius:inherit}.t-scrollbar{margin:0 -.25rem;padding:0 .25rem}.t-tags{display:flex;align-items:center;box-sizing:border-box}:host._expandable .t-tags{flex-wrap:wrap;white-space:normal}:host._readonly .t-tags{pointer-events:none}:host[data-size=s] .t-tags{min-height:var(--tui-height-s);padding:.25rem .25rem .25rem 0}:host[data-size=m] .t-tags{min-height:var(--tui-height-m);padding:.5rem .25rem .5rem 0}:host[data-size=l] .t-tags{min-height:var(--tui-height-l);padding:.625rem .25rem .625rem 0}:host[data-size=m]:not(._label-outside) .t-tags{padding:1.1875rem 1rem 0 0}:host[data-size=l]:not(._label-outside) .t-tags{padding:1.6875rem 1rem .5625rem 0}.t-tags :host[data-size]{-webkit-padding-start:0;padding-inline-start:0;-webkit-padding-end:.25rem;padding-inline-end:.25rem}:host[data-size]:not(._label-outside) .t-tags{-webkit-padding-end:1rem;padding-inline-end:1rem}.t-content{align-items:flex-start}.t-icons{display:flex;align-items:center;padding:0 0 0 .75rem;-webkit-padding-start:.75rem;padding-inline-start:.75rem;-webkit-padding-end:0;padding-inline-end:0}.t-icons_left{padding:0;margin:0 .5rem 0 -.25rem;-webkit-margin-start:-.25rem;margin-inline-start:-.25rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}:host._expandable .t-icons_right{margin:0 0 0 -.625rem;-webkit-margin-start:-.625rem;margin-inline-start:-.625rem;-webkit-margin-end:0;margin-inline-end:0}:host[data-size=s] .t-icons{height:var(--tui-height-s)}:host[data-size=m] .t-icons{height:var(--tui-height-m)}:host[data-size=l] .t-icons{height:var(--tui-height-l)}.t-absolute-wrapper{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center}:host[data-size=m] .t-absolute-wrapper{height:var(--tui-height-m)}:host[data-size=l] .t-absolute-wrapper{height:var(--tui-height-l)}.t-wrapper{position:relative;padding:0}.t-tag{margin:.125rem .5rem .125rem -.25rem;-webkit-margin-start:-.25rem;margin-inline-start:-.25rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem;max-width:100%;flex-shrink:0}.t-text:after{content:\",\\a0\"}.t-text_disabled{color:var(--tui-text-03)}.t-text_error{color:var(--tui-negative)}:host:not(._expandable) .t-text{white-space:nowrap}:host:not(._focused) .t-text:last-of-type:after{content:\"\"}.t-input-wrapper{position:relative;flex:1;max-width:100%}.t-input-wrapper_collapsed{flex:0;margin:0 0 0 -.5rem;-webkit-margin-start:-.5rem;margin-inline-start:-.5rem;-webkit-margin-end:0;margin-inline-end:0}:host[data-size=s] .t-input-wrapper{min-height:1.5rem}:host[data-size=m] .t-input-wrapper{min-height:calc(var(--tui-height-xs) + 2 * .125rem)}:host[data-size=l] .t-input-wrapper{min-height:calc(var(--tui-height-s) + 2 * .125rem)}:host:not(._label-outside) .t-input-wrapper{min-height:1.25rem}.t-ghost{visibility:hidden;white-space:pre;text-overflow:clip;min-width:.125rem}:host:not(._expandable) .t-ghost{min-width:2rem}.t-native{margin:0;border:0;border-radius:inherit;background:none;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;position:absolute;top:0;left:0;width:100%;height:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box;padding:0;cursor:inherit}.t-native:-webkit-autofill,.t-native:-webkit-autofill:hover,.t-native:-webkit-autofill:focus{caret-color:var(--tui-base-09);border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 100rem var(--tui-autofill) inset!important}.t-native_hidden{opacity:0;text-indent:-10em}.t-native::-ms-input-placeholder{color:var(--tui-text-03);opacity:0}.t-native::placeholder{color:var(--tui-text-03);opacity:0}:host[data-mode=onDark] .t-native::-ms-input-placeholder{color:var(--tui-text-03-night)}:host[data-mode=onDark] .t-native::placeholder{color:var(--tui-text-03-night)}:host._focused .t-native:not(:read-only)::-ms-input-placeholder{opacity:1}:host._focused .t-native:not(:-moz-read-only)::placeholder{opacity:1}:host._focused .t-native:not(:read-only)::placeholder{opacity:1}.t-error-icon{display:block;color:var(--tui-error-fill);width:1rem;height:1rem}\n"], components: [{ type: i1.TuiHostedDropdownComponent, selector: "tui-hosted-dropdown", inputs: ["content", "canOpen", "open"], outputs: ["openChange", "focusedChange"] }, { type: i1.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { type: i1.TuiScrollbarComponent, selector: "tui-scrollbar", inputs: ["hidden"] }, { type: i2.TuiTagComponent, selector: "tui-tag, a[tuiTag]", inputs: ["value", "editable", "separator", "maxLength", "size", "showLoader", "status", "hoverable", "removable", "disabled", "autoColor", "leftContent"], outputs: ["edited"] }, { type: i1.TuiTooltipComponent, selector: "tui-tooltip", inputs: ["content", "direction", "appearance", "showDelay", "hideDelay", "describeId"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.TuiActiveZoneDirective, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { type: i1.TuiWrapperDirective, selector: "[tuiWrapper]", inputs: ["disabled", "readOnly", "hover", "active", "focus", "invalid", "appearance"] }, { type: i5.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.TuiFocusableDirective, selector: "[tuiFocusable]", inputs: ["tuiFocusable"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "async": i3.AsyncPipe }, viewProviders: [FIXED_DROPDOWN_CONTROLLER_PROVIDER], changeDetection: i0.ChangeDetectionStrategy.OnPush });
309
+ ], queries: [{ propertyName: "datalist", first: true, predicate: TuiDataListDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "hostedDropdown", first: true, predicate: TuiHostedDropdownComponent, descendants: true }, { propertyName: "focusableElement", first: true, predicate: ["focusableElement"], descendants: true }, { propertyName: "tagsContainer", first: true, predicate: ["tagsContainer"], descendants: true }, { propertyName: "cleanerSvg", first: true, predicate: ["cleaner"], descendants: true, read: ElementRef }, { propertyName: "scrollBar", first: true, predicate: TuiScrollbarComponent, descendants: true, read: ElementRef }, { propertyName: "errorIconTemplate", first: true, predicate: ["errorIcon"], descendants: true }, { propertyName: "scrollerSetter", first: true, predicate: TuiScrollbarComponent, descendants: true }, { propertyName: "tags", predicate: ["tag"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"hintOptions?.change$ | async\"></ng-container>\n<tui-hosted-dropdown\n class=\"t-hosted\"\n [canOpen]=\"canOpen\"\n [content]=\"datalist || ''\"\n [(open)]=\"open\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <div\n tuiWrapper\n [appearance]=\"appearance\"\n [readOnly]=\"readOnly\"\n [focus]=\"computedFocused\"\n [hover]=\"pseudoHover\"\n [disabled]=\"computedDisabled\"\n [invalid]=\"computedInvalid\"\n (mousedown)=\"onMouseDown($event)\"\n >\n <div class=\"t-content\">\n <div\n *ngIf=\"iconLeft\"\n class=\"t-icons t-icons_left\"\n >\n <tui-svg\n *polymorpheusOutlet=\"iconLeft as src; context: {$implicit: size}\"\n class=\"t-icon\"\n [src]=\"src\"\n ></tui-svg>\n </div>\n <div class=\"t-wrapper\">\n <div class=\"t-absolute-wrapper\">\n <div\n *ngIf=\"hasPlaceholder\"\n automation-id=\"tui-input-tag__placeholder\"\n class=\"t-placeholder\"\n [class.t-placeholder_raised]=\"placeholderRaised\"\n >\n <ng-content></ng-content>\n </div>\n </div>\n <tui-scrollbar\n *ngIf=\"!expandable; else items\"\n class=\"t-scrollbar\"\n [hidden]=\"true\"\n >\n <ng-container [ngTemplateOutlet]=\"items\"></ng-container>\n </tui-scrollbar>\n <ng-template #items>\n <div\n #tagsContainer\n class=\"t-tags\"\n >\n <ng-container *ngIf=\"labelOutside; else text\">\n <tui-tag\n *ngFor=\"let item of value; index as index; trackBy: trackByFn\"\n #tag\n automation-id=\"tui-input-tag__tag\"\n class=\"t-tag\"\n [status]=\"(status$ | async)!\"\n [leftContent]=\"getLeftContent(item)\"\n [tuiFocusable]=\"false\"\n [disabled]=\"computedDisabled || disabledItemHandler(item)\"\n [editable]=\"editable && !readOnly\"\n [hoverable]=\"!readOnly\"\n [removable]=\"!readOnly\"\n [separator]=\"separator\"\n [maxLength]=\"maxLength\"\n [size]=\"controller.size\"\n [value]=\"item.toString()\"\n (edited)=\"onTagEdited($event, index)\"\n (keydown.arrowLeft.prevent)=\"onTagKeyDownArrowLeft(index)\"\n (keydown.arrowRight.prevent)=\"onTagKeyDownArrowRight(index)\"\n ></tui-tag>\n </ng-container>\n <ng-template #text>\n <span\n *ngFor=\"let item of value\"\n class=\"t-text\"\n [class.t-text_disabled]=\"disabledItemHandler(item)\"\n [class.t-text_error]=\"!tagValidator(item)\"\n [textContent]=\"item\"\n ></span>\n </ng-template>\n <div\n class=\"t-input-wrapper\"\n [class.t-input-wrapper_collapsed]=\"computedDisabled || readOnly || inputHidden\"\n >\n <div class=\"t-ghost\">{{ search }}</div>\n <input\n #focusableElement\n type=\"text\"\n automation-id=\"tui-input-tag__native\"\n class=\"t-native\"\n [placeholder]=\"placeholder\"\n [class.t-native_hidden]=\"inputHidden\"\n [attr.maxLength]=\"maxLength\"\n [id]=\"id\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly || inputHidden\"\n [tuiFocusable]=\"computedFocusable\"\n [ngModel]=\"search\"\n (ngModelChange)=\"onInput($event)\"\n (paste.prevent)=\"onPaste($event)\"\n (drop.prevent)=\"onDrop($any($event))\"\n (keydown.arrowLeft)=\"onFieldKeyDownArrowLeft($event)\"\n (keydown.backspace)=\"onFieldKeyDownBackspace($event)\"\n (keydown.enter.prevent)=\"onFieldKeyDownEnter()\"\n />\n </div>\n </div>\n </ng-template>\n </div>\n <div\n *ngIf=\"hasRightIcons\"\n class=\"t-icons t-icons_right\"\n >\n <tui-svg\n *ngIf=\"hasCleaner\"\n #cleaner\n automation-id=\"tui-input-tag__cleaner\"\n src=\"tuiIconCloseLarge\"\n class=\"t-cleaner\"\n (click.stop)=\"onCleanerClick()\"\n ></tui-svg>\n <tui-tooltip\n *ngIf=\"hintOptions && hintOptions.content && !computedDisabled\"\n automation-id=\"tui-input-tag__tooltip\"\n describeId=\"placeholer_until_accesibility_is_added\"\n class=\"t-tooltip\"\n [direction]=\"hintOptions.direction\"\n [appearance]=\"hintOptions.appearance\"\n [content]=\"hintOptions.content\"\n [showDelay]=\"hintOptions.showDelay\"\n [hideDelay]=\"hintOptions.hideDelay\"\n ></tui-tooltip>\n <div *ngIf=\"icon\">\n <tui-svg\n *polymorpheusOutlet=\"icon as src; context: {$implicit: size}\"\n class=\"t-icon\"\n [src]=\"src\"\n ></tui-svg>\n </div>\n </div>\n </div>\n <ng-template #errorIcon>\n <tui-svg\n src=\"tuiIconAttention\"\n class=\"t-error-icon\"\n ></tui-svg>\n </ng-template>\n </div>\n</tui-hosted-dropdown>\n", styles: [":host{font:var(--tui-font-text-s);color:var(--tui-text-01);position:relative;display:block;border-radius:var(--tui-radius-m);text-align:left}:host[data-size=s]{height:var(--tui-height-s);min-height:var(--tui-height-s);max-height:var(--tui-height-s)}:host[data-size=m]{height:var(--tui-height-m);min-height:var(--tui-height-m);max-height:var(--tui-height-m)}:host[data-size=l]{height:var(--tui-height-l);min-height:var(--tui-height-l);max-height:var(--tui-height-l);font:var(--tui-font-text-m);line-height:1.25rem}.t-input{font:var(--tui-font-text-s);color:var(--tui-text-01);padding:0;margin:0;border:0;border-radius:inherit;background:none;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;position:absolute;top:0;left:0;width:100%;height:100%;padding:0 var(--tui-padding-m);border:solid transparent;border-width:0 var(--border-end, 0) 0 var(--border-start, 0);border-inline-start-width:var(--border-start, 0);border-inline-end-width:var(--border-end, 0);text-indent:var(--text-indent);text-align:inherit;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-transform:inherit;resize:none}.t-input:-webkit-autofill,.t-input:-webkit-autofill:hover,.t-input:-webkit-autofill:focus{caret-color:var(--tui-base-09);border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 100rem var(--tui-autofill) inset!important}:host[data-mode=onDark] .t-input:-webkit-autofill,.t-input :host-context(tui-primitive-textfield[data-mode=\"onDark\"]):-webkit-autofill,.t-input :host-context(tui-text-area[data-mode=\"onDark\"]):-webkit-autofill,:host[data-mode=onDark] .t-input:-webkit-autofill:hover,.t-input :host-context(tui-primitive-textfield[data-mode=\"onDark\"]):-webkit-autofill:hover,.t-input :host-context(tui-text-area[data-mode=\"onDark\"]):-webkit-autofill:hover,:host[data-mode=onDark] .t-input:-webkit-autofill:focus,.t-input :host-context(tui-primitive-textfield[data-mode=\"onDark\"]):-webkit-autofill:focus,.t-input :host-context(tui-text-area[data-mode=\"onDark\"]):-webkit-autofill:focus{caret-color:var(--tui-base-09);border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01-night)!important;border-color:var(--tui-autofill-night);-webkit-box-shadow:0 0 0 100rem var(--tui-autofill-night) inset!important}:host[data-size=s] .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"s\"]):not(tui-primitive-textfield),.t-input :host-context(tui-text-area[data-size=\"s\"]):not(tui-text-area){padding:0 var(--tui-padding-s)}:host[data-size=l] .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"l\"]):not(tui-primitive-textfield),.t-input :host-context(tui-text-area[data-size=\"l\"]):not(tui-text-area){padding:0 var(--tui-padding-l)}:host._disabled .t-input,.t-input :host-context(tui-primitive-textfield._disabled),.t-input :host-context(tui-text-area._disabled){pointer-events:none}:host[data-size=l]:not(._label-outside) .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"l\"]:not(._label-outside)):not(tui-primitive-textfield){padding-top:1.25rem}:host[data-size=l]:not(._label-outside) .t-input:-webkit-autofill+.t-content .t-placeholder,.t-input :host-context(tui-primitive-textfield[data-size=\"l\"]:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.t-content .t-placeholder{font-size:.8156rem;transform:translateY(-.625rem)}:host[data-size=m]:not(._label-outside) .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"m\"]:not(._label-outside)):not(tui-primitive-textfield){padding-top:1.125rem}:host[data-size=m]:not(._label-outside) .t-input:-webkit-autofill+.t-content .t-placeholder,.t-input :host-context(tui-primitive-textfield[data-size=\"m\"]:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.t-content .t-placeholder{font-size:.69rem;transform:translateY(-.5rem)}:host._hidden input.t-input,.t-input :host-context(tui-primitive-textfield._hidden){opacity:0;text-indent:-10em;-webkit-user-select:none}.t-content{display:flex;height:100%;width:100%;padding:0 var(--tui-padding-m);box-sizing:border-box;align-items:center;overflow:hidden}:host[data-size=s] .t-content{padding:0 var(--tui-padding-s)}:host[data-size=l] .t-content{padding:0 var(--tui-padding-l)}.t-content:after{content:\"\";margin-right:-.25rem}:host[data-size=m] .t-content:after{display:none}.t-wrapper{flex:1;min-width:0;padding-right:.25rem;-webkit-padding-end:.25rem;padding-inline-end:.25rem;-webkit-padding-start:0;padding-inline-start:0}.t-placeholder{transition-property:transform,font-size,color,letter-spacing;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;font:var(--tui-font-text-s);color:var(--tui-text-01);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;width:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:var(--tui-text-02);pointer-events:none;will-change:transform;transform:translateY(0)}.t-placeholder_raised{transform:translateY(-.625rem)}:host[data-size=m] .t-placeholder_raised{font:var(--tui-font-text-xs);transform:translateY(-.5rem);letter-spacing:.025rem}:host._invalid:not(._focused) .t-placeholder_raised,:host._invalid:not(._focused):hover .t-placeholder_raised{color:var(--tui-error-fill)}:host[data-mode=onDark]._invalid:not(._focused) .t-placeholder_raised,:host[data-mode=onDark]._invalid:not(._focused):hover .t-placeholder_raised{color:var(--tui-error-fill-night)}:host._focused .t-placeholder,:host[data-size=m]._focused._label-outside .t-placeholder,:host[data-size=l]._focused._label-outside .t-placeholder{color:var(--tui-text-03)}:host[data-size=l] .t-placeholder{font-size:.9375rem}:host[data-size=l] .t-placeholder_raised{font-size:.8156rem}:host[data-size=m]._focused:not(._label-outside) .t-placeholder,:host[data-size=l]._focused:not(._label-outside) .t-placeholder{color:var(--tui-text-01)}:host[data-mode=onDark] .t-placeholder{color:var(--tui-text-02-night)}:host[data-size=m][data-mode=onDark]._focused:not(._label-outside) .t-placeholder,:host[data-size=l][data-mode=onDark]._focused:not(._label-outside) .t-placeholder{color:var(--tui-text-01-night)}:host[data-mode=onDark]._focused .t-placeholder,:host[data-size=m][data-mode=onDark]._focused._label-outside .t-placeholder,:host[data-size=l][data-mode=onDark]._focused._label-outside .t-placeholder{color:var(--tui-text-02-night)}@supports (-webkit-hyphens: none){.t-placeholder{will-change:unset;transition-property:transform,color,letter-spacing}}.t-cleaner{transition-property:all;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;color:var(--tui-text-03);position:relative;box-sizing:border-box;cursor:pointer;transition-property:color,transform}.t-cleaner:hover{color:var(--tui-text-02)}:host._readonly .t-cleaner,:host._disabled .t-cleaner{pointer-events:none}:host[data-mode=onDark] .t-cleaner{color:var(--tui-text-03-night)}:host[data-mode=onDark] .t-cleaner:hover{color:var(--tui-text-01-night)}.t-icon{display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;color:var(--tui-text-03)}:host[data-mode=onDark] .t-icon{color:var(--tui-text-03-night)}.t-icon_left{margin:0 .5rem 0 -.25rem;-webkit-margin-start:-.25rem;margin-inline-start:-.25rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}:host[data-size=s] .t-icon_left{margin-right:.25rem;-webkit-margin-end:.25rem;margin-inline-end:.25rem}:host{cursor:text}:host._expandable{height:auto;max-height:none}:host._disabled{pointer-events:none}:host._readonly{cursor:default}.t-hosted{display:block;border-radius:inherit}.t-scrollbar{margin:0 -.25rem;padding:0 .25rem}.t-tags{display:flex;align-items:center;box-sizing:border-box}:host._expandable .t-tags{flex-wrap:wrap;white-space:normal}:host._readonly .t-tags{pointer-events:none}:host[data-size=s] .t-tags{min-height:var(--tui-height-s);padding:.25rem .25rem .25rem 0}:host[data-size=m] .t-tags{min-height:var(--tui-height-m);padding:.5rem .25rem .5rem 0}:host[data-size=l] .t-tags{min-height:var(--tui-height-l);padding:.625rem .25rem .625rem 0}:host[data-size=m]:not(._label-outside) .t-tags{padding:1.1875rem 1rem 0 0}:host[data-size=l]:not(._label-outside) .t-tags{padding:1.6875rem 1rem .5625rem 0}.t-tags :host[data-size]{-webkit-padding-start:0;padding-inline-start:0;-webkit-padding-end:.25rem;padding-inline-end:.25rem}:host[data-size]:not(._label-outside) .t-tags{-webkit-padding-end:1rem;padding-inline-end:1rem}.t-content{align-items:flex-start}.t-icons{display:flex;align-items:center;padding:0 0 0 .75rem;-webkit-padding-start:.75rem;padding-inline-start:.75rem;-webkit-padding-end:0;padding-inline-end:0}.t-icons_left{padding:0;margin:0 .5rem 0 -.25rem;-webkit-margin-start:-.25rem;margin-inline-start:-.25rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}:host._expandable .t-icons_right{margin:0 0 0 -.625rem;-webkit-margin-start:-.625rem;margin-inline-start:-.625rem;-webkit-margin-end:0;margin-inline-end:0}:host[data-size=s] .t-icons{height:var(--tui-height-s)}:host[data-size=m] .t-icons{height:var(--tui-height-m)}:host[data-size=l] .t-icons{height:var(--tui-height-l)}.t-absolute-wrapper{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center}:host[data-size=m] .t-absolute-wrapper{height:var(--tui-height-m)}:host[data-size=l] .t-absolute-wrapper{height:var(--tui-height-l)}.t-wrapper{position:relative;padding:0}.t-tag{margin:.125rem .5rem .125rem -.25rem;-webkit-margin-start:-.25rem;margin-inline-start:-.25rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem;max-width:100%;flex-shrink:0}.t-text:after{content:\",\\a0\"}.t-text_disabled{color:var(--tui-text-03)}.t-text_error{color:var(--tui-negative)}:host:not(._expandable) .t-text{white-space:nowrap}:host:not(._focused) .t-text:last-of-type:after{content:\"\"}.t-input-wrapper{position:relative;flex:1;max-width:100%}.t-input-wrapper_collapsed{flex:0;margin:0 0 0 -.5rem;-webkit-margin-start:-.5rem;margin-inline-start:-.5rem;-webkit-margin-end:0;margin-inline-end:0}:host[data-size=s] .t-input-wrapper{min-height:1.5rem}:host[data-size=m] .t-input-wrapper{min-height:calc(var(--tui-height-xs) + 2 * .125rem)}:host[data-size=l] .t-input-wrapper{min-height:calc(var(--tui-height-s) + 2 * .125rem)}:host:not(._label-outside) .t-input-wrapper{min-height:1.25rem}.t-ghost{visibility:hidden;white-space:pre;text-overflow:clip;min-width:.125rem}:host:not(._expandable) .t-ghost{min-width:2rem}.t-native{margin:0;border:0;border-radius:inherit;background:none;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;position:absolute;top:0;left:0;width:100%;height:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box;padding:0;cursor:inherit}.t-native:-webkit-autofill,.t-native:-webkit-autofill:hover,.t-native:-webkit-autofill:focus{caret-color:var(--tui-base-09);border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 100rem var(--tui-autofill) inset!important}.t-native_hidden{opacity:0;text-indent:-10em}.t-native::-ms-input-placeholder{color:var(--tui-text-03);opacity:0}.t-native::placeholder{color:var(--tui-text-03);opacity:0}:host[data-mode=onDark] .t-native::-ms-input-placeholder{color:var(--tui-text-03-night)}:host[data-mode=onDark] .t-native::placeholder{color:var(--tui-text-03-night)}:host._focused .t-native:not(:read-only)::-ms-input-placeholder{opacity:1}:host._focused .t-native:not(:-moz-read-only)::placeholder{opacity:1}:host._focused .t-native:not(:read-only)::placeholder{opacity:1}.t-error-icon{display:block;color:var(--tui-error-fill);width:1rem;height:1rem}\n"], components: [{ type: i1.TuiHostedDropdownComponent, selector: "tui-hosted-dropdown", inputs: ["content", "sided", "canOpen", "open"], outputs: ["openChange", "focusedChange"] }, { type: i1.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { type: i1.TuiScrollbarComponent, selector: "tui-scrollbar", inputs: ["hidden"] }, { type: i2.TuiTagComponent, selector: "tui-tag, a[tuiTag]", inputs: ["value", "editable", "separator", "maxLength", "size", "showLoader", "status", "hoverable", "removable", "disabled", "autoColor", "leftContent"], outputs: ["edited"] }, { type: i1.TuiTooltipComponent, selector: "tui-tooltip", inputs: ["content", "direction", "appearance", "showDelay", "hideDelay", "describeId"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.TuiActiveZoneDirective, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { type: i1.TuiWrapperDirective, selector: "[tuiWrapper]", inputs: ["disabled", "readOnly", "hover", "active", "focus", "invalid", "appearance"] }, { type: i5.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.TuiFocusableDirective, selector: "[tuiFocusable]", inputs: ["tuiFocusable"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "async": i3.AsyncPipe }, viewProviders: [FIXED_DROPDOWN_CONTROLLER_PROVIDER], changeDetection: i0.ChangeDetectionStrategy.OnPush });
310
310
  __decorate([
311
311
  tuiDefaultProp()
312
312
  ], TuiInputTagComponent.prototype, "separator", void 0);
@@ -458,4 +458,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
458
458
  type: HostBinding,
459
459
  args: [`class._label-outside`]
460
460
  }] } });
461
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LXRhZy9pbnB1dC10YWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtdGFnL2lucHV0LXRhZy50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFFTixJQUFJLEVBQ0osV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFDSCwwQkFBMEIsRUFDMUIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixXQUFXLEVBRVgsY0FBYyxFQUNkLFlBQVksRUFDWiwwQkFBMEIsRUFHMUIsY0FBYyxFQUVkLGtCQUFrQixFQUNsQix1QkFBdUIsRUFDdkIsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsYUFBYSxFQUNiLDZCQUE2QixFQUM3QixRQUFRLEVBQ1Isd0JBQXdCLEVBQ3hCLGdDQUFnQyxFQUNoQyxpQkFBaUIsRUFFakIsb0JBQW9CLEVBRXBCLHVCQUF1QixFQUN2QiwwQkFBMEIsRUFDMUIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixHQUl4QixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLHlCQUF5QixDQUFD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QUR6QixTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQztnQkFRcEQsU0FBUztzQkFGUixLQUFLO2dCQU1OLE1BQU07c0JBRkwsS0FBSztnQkFNTixRQUFRO3NCQUZQLEtBQUs7Z0JBTU4sWUFBWTtzQkFGWCxLQUFLO2dCQU9OLFVBQVU7c0JBSFQsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxtQkFBbUI7Z0JBTWhDLFdBQVc7c0JBRlYsS0FBSztnQkFNTixVQUFVO3NCQUZULEtBQUs7Z0JBTU4sU0FBUztzQkFGUixLQUFLO2dCQU1OLFdBQVc7c0JBRlYsS0FBSztnQkFNTixtQkFBbUI7c0JBRmxCLEtBQUs7Z0JBTUYsbUJBQW1CO3NCQUR0QixLQUFLO3VCQUFDLGVBQWU7Z0JBVWIsWUFBWTtzQkFEcEIsTUFBTTtnQkFJRSxRQUFRO3NCQURoQixZQUFZO3VCQUFDLG9CQUFvQixFQUFFLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBQztnQkFJOUMsaUJBQWlCO3NCQUR6QixTQUFTO3VCQUFDLFdBQVc7Z0JBSWxCLGNBQWM7c0JBRGpCLFNBQVM7dUJBQUMscUJBQXFCO2dCQW1ENUIsSUFBSTtzQkFEUCxXQUFXO3VCQUFDLGdCQUFnQjtnQkFNekIsWUFBWTtzQkFEZixXQUFXO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTZWxmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RUdWlNdWx0aXBsZUNvbnRyb2wsXG4gICAgQUxXQVlTX0ZBTFNFX0hBTkRMRVIsXG4gICAgQUxXQVlTX1RSVUVfSEFORExFUixcbiAgICBFTVBUWV9RVUVSWSxcbiAgICBUdWlBY3RpdmVab25lRGlyZWN0aXZlLFxuICAgIHR1aUFycmF5UmVtb3ZlLFxuICAgIHR1aUFzQ29udHJvbCxcbiAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcixcbiAgICBUdWlCb29sZWFuSGFuZGxlcixcbiAgICBUdWlDb250ZXh0V2l0aEltcGxpY2l0LFxuICAgIHR1aURlZmF1bHRQcm9wLFxuICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvcixcbiAgICB0dWlHZXRBY3R1YWxUYXJnZXQsXG4gICAgdHVpR2V0Q2xpcGJvYXJkRGF0YVRleHQsXG4gICAgdHVpSXNFbGVtZW50LFxuICAgIHR1aUlzTmF0aXZlRm9jdXNlZEluLFxuICAgIHR1aVByZXZlbnREZWZhdWx0LFxuICAgIFR1aVNjcm9sbFNlcnZpY2UsXG4gICAgdHVpVHlwZWRGcm9tRXZlbnQsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBNT0RFX1BST1ZJREVSLFxuICAgIFRFWFRGSUVMRF9DT05UUk9MTEVSX1BST1ZJREVSLFxuICAgIFRVSV9NT0RFLFxuICAgIFRVSV9URVhURklFTERfQVBQRUFSQU5DRSxcbiAgICBUVUlfVEVYVEZJRUxEX1dBVENIRURfQ09OVFJPTExFUixcbiAgICB0dWlBc0RhdGFMaXN0SG9zdCxcbiAgICBUdWlCcmlnaHRuZXNzLFxuICAgIFR1aURhdGFMaXN0RGlyZWN0aXZlLFxuICAgIFR1aURhdGFMaXN0SG9zdCxcbiAgICBUdWlIaW50T3B0aW9uc0RpcmVjdGl2ZSxcbiAgICBUdWlIb3N0ZWREcm9wZG93bkNvbXBvbmVudCxcbiAgICBUdWlNb2RlRGlyZWN0aXZlLFxuICAgIFR1aVNjcm9sbGJhckNvbXBvbmVudCxcbiAgICBUdWlTaXplTCxcbiAgICBUdWlTaXplUyxcbiAgICBUdWlUZXh0ZmllbGRDb250cm9sbGVyLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1R1aVN0cmluZ2lmaWFibGVJdGVtfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NsYXNzZXMnO1xuaW1wb3J0IHtGSVhFRF9EUk9QRE9XTl9DT05UUk9MTEVSX1BST1ZJREVSfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Byb3ZpZGVycyc7XG5pbXBvcnQge1R1aVN0YXR1c30gZnJvbSAnQHRhaWdhLXVpL2tpdC90eXBlcyc7XG5pbXBvcnQge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5pbXBvcnQge21lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIG1hcFRvLCBzd2l0Y2hNYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1RVSV9JTlBVVF9UQUdfT1BUSU9OUywgVHVpSW5wdXRUYWdPcHRpb25zfSBmcm9tICcuL2lucHV0LXRhZy1vcHRpb25zJztcblxuY29uc3QgRVZFTlRfWV9UT19YX0NPRUZGSUNJRU5UID0gMztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IGB0dWktaW5wdXQtdGFnYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICB0ZW1wbGF0ZVVybDogYC4vaW5wdXQtdGFnLnRlbXBsYXRlLmh0bWxgLFxuICAgIHN0eWxlVXJsczogW2AuL2lucHV0LXRhZy5zdHlsZS5sZXNzYF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yKFR1aUlucHV0VGFnQ29tcG9uZW50KSxcbiAgICAgICAgdHVpQXNDb250cm9sKFR1aUlucHV0VGFnQ29tcG9uZW50KSxcbiAgICAgICAgdHVpQXNEYXRhTGlzdEhvc3QoVHVpSW5wdXRUYWdDb21wb25lbnQpLFxuICAgICAgICBURVhURklFTERfQ09OVFJPTExFUl9QUk9WSURFUixcbiAgICAgICAgTU9ERV9QUk9WSURFUixcbiAgICBdLFxuICAgIHZpZXdQcm92aWRlcnM6IFtGSVhFRF9EUk9QRE9XTl9DT05UUk9MTEVSX1BST1ZJREVSXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRUYWdDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0VHVpTXVsdGlwbGVDb250cm9sPHN0cmluZz5cbiAgICBpbXBsZW1lbnRzIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvciwgVHVpRGF0YUxpc3RIb3N0PHN0cmluZz5cbntcbiAgICBAVmlld0NoaWxkKFR1aUhvc3RlZERyb3Bkb3duQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgaG9zdGVkRHJvcGRvd24/OiBUdWlIb3N0ZWREcm9wZG93bkNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoYGZvY3VzYWJsZUVsZW1lbnRgKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9jdXNhYmxlRWxlbWVudD86IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKGB0YWdzQ29udGFpbmVyYClcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhZ3NDb250YWluZXI/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIEBWaWV3Q2hpbGRyZW4oYHRhZ2AsIHtyZWFkOiBFbGVtZW50UmVmfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhZ3M6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4gPSBFTVBUWV9RVUVSWTtcblxuICAgIEBWaWV3Q2hpbGQoYGNsZWFuZXJgLCB7cmVhZDogRWxlbWVudFJlZn0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBjbGVhbmVyU3ZnPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKFR1aVNjcm9sbGJhckNvbXBvbmVudCwge3JlYWQ6IEVsZW1lbnRSZWZ9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Nyb2xsQmFyPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcm9sbFRvU3RhcnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcm9sbFRvRW5kJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgc2VwYXJhdG9yOiBzdHJpbmcgfCBSZWdFeHAgPSB0aGlzLm9wdGlvbnMuc2VwYXJhdG9yO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHNlYXJjaCA9IGBgO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGVkaXRhYmxlID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICB0YWdWYWxpZGF0b3I6IFR1aUJvb2xlYW5IYW5kbGVyPHN0cmluZz4gPSBBTFdBWVNfVFJVRV9IQU5ETEVSO1xuXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoYGNsYXNzLl9leHBhbmRhYmxlYClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGV4cGFuZGFibGUgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGlucHV0SGlkZGVuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgdW5pcXVlVGFncyA9IHRoaXMub3B0aW9ucy51bmlxdWVUYWdzO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1heExlbmd0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgcGxhY2Vob2xkZXIgPSBgYDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBkaXNhYmxlZEl0ZW1IYW5kbGVyOiBUdWlCb29sZWFuSGFuZGxlcjxzdHJpbmcgfCBUdWlTdHJpbmdpZmlhYmxlSXRlbTxhbnk+PiA9XG4gICAgICAgIEFMV0FZU19GQUxTRV9IQU5ETEVSO1xuXG4gICAgQElucHV0KGBwc2V1ZG9Gb2N1c2VkYClcbiAgICBzZXQgcHNldWRvRm9jdXNlZFNldHRlcih2YWx1ZTogYm9vbGVhbiB8IG51bGwpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSAmJiAhdGhpcy5mb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvU3RhcnQkLm5leHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHNldWRvRm9jdXMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBzZWFyY2hDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIEBDb250ZW50Q2hpbGQoVHVpRGF0YUxpc3REaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZn0pXG4gICAgcmVhZG9ubHkgZGF0YWxpc3Q/OiBUZW1wbGF0ZVJlZjxUdWlDb250ZXh0V2l0aEltcGxpY2l0PFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmU+PjtcblxuICAgIEBWaWV3Q2hpbGQoYGVycm9ySWNvbmApXG4gICAgcmVhZG9ubHkgZXJyb3JJY29uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG5cbiAgICBAVmlld0NoaWxkKFR1aVNjcm9sbGJhckNvbXBvbmVudClcbiAgICBzZXQgc2Nyb2xsZXJTZXR0ZXIoc2Nyb2xsZXI6IFR1aVNjcm9sbGJhckNvbXBvbmVudCB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5pbml0U2Nyb2xsZXJTdWJzY3JpcHRpb24oc2Nyb2xsZXIpO1xuICAgIH1cblxuICAgIHN0YXR1cyQ6IE9ic2VydmFibGU8VHVpU3RhdHVzPiA9IHRoaXMubW9kZSQucGlwZShtYXAoKCkgPT4gdGhpcy5zdGF0dXMpKTtcblxuICAgIG9wZW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoVHVpU2Nyb2xsU2VydmljZSkgcHJpdmF0ZSByZWFkb25seSB0dWlTY3JvbGxTZXJ2aWNlOiBUdWlTY3JvbGxTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIEBJbmplY3QoVFVJX1RFWFRGSUVMRF9BUFBFQVJBTkNFKSByZWFkb25seSBhcHBlYXJhbmNlOiBzdHJpbmcsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoVHVpTW9kZURpcmVjdGl2ZSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtb2RlRGlyZWN0aXZlOiBUdWlNb2RlRGlyZWN0aXZlIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChUVUlfTU9ERSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtb2RlJDogT2JzZXJ2YWJsZTxUdWlCcmlnaHRuZXNzIHwgbnVsbD4sXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoVHVpSGludE9wdGlvbnNEaXJlY3RpdmUpXG4gICAgICAgIHJlYWRvbmx5IGhpbnRPcHRpb25zOiBUdWlIaW50T3B0aW9uc0RpcmVjdGl2ZSB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoVFVJX1RFWFRGSUVMRF9XQVRDSEVEX0NPTlRST0xMRVIpXG4gICAgICAgIHJlYWRvbmx5IGNvbnRyb2xsZXI6IFR1aVRleHRmaWVsZENvbnRyb2xsZXIsXG4gICAgICAgIEBJbmplY3QoVFVJX0lOUFVUX1RBR19PUFRJT05TKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFR1aUlucHV0VGFnT3B0aW9ucyxcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChUdWlIb3N0ZWREcm9wZG93bkNvbXBvbmVudClcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwYXJlbnRIb3N0ZWREcm9wZG93bj86IFR1aUhvc3RlZERyb3Bkb3duQ29tcG9uZW50LFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gIXRoaXMuZm9jdXNhYmxlRWxlbWVudCB8fCB0aGlzLmNvbXB1dGVkRGlzYWJsZWRcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiB0aGlzLmZvY3VzYWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHR1aUlzTmF0aXZlRm9jdXNlZEluKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSB8fFxuICAgICAgICAgICAgISF0aGlzLmhvc3RlZERyb3Bkb3duPy5mb2N1c2VkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKGBhdHRyLmRhdGEtc2l6ZWApXG4gICAgZ2V0IHNpemUoKTogVHVpU2l6ZUwgfCBUdWlTaXplUyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuc2l6ZTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoYGNsYXNzLl9sYWJlbC1vdXRzaWRlYClcbiAgICBnZXQgbGFiZWxPdXRzaWRlKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB7c2l6ZSwgbGFiZWxPdXRzaWRlfSA9IHRoaXMuY29udHJvbGxlcjtcblxuICAgICAgICByZXR1cm4gc2l6ZSA9PT0gYHNgIHx8IGxhYmVsT3V0c2lkZTtcbiAgICB9XG5cbiAgICBnZXQgaWNvbigpOiBQb2x5bW9ycGhldXNDb250ZW50PFR1aUNvbnRleHRXaXRoSW1wbGljaXQ8VHVpU2l6ZVMgfCBUdWlTaXplTD4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5pY29uO1xuICAgIH1cblxuICAgIGdldCBpY29uTGVmdCgpOiBQb2x5bW9ycGhldXNDb250ZW50PFR1aUNvbnRleHRXaXRoSW1wbGljaXQ8VHVpU2l6ZVMgfCBUdWlTaXplTD4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5pY29uTGVmdDtcbiAgICB9XG5cbiAgICBnZXQgaGFzQ2xlYW5lcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5jbGVhbmVyICYmIHRoaXMuaGFzVmFsdWUgJiYgdGhpcy5pbnRlcmFjdGl2ZTtcbiAgICB9XG5cbiAgICBnZXQgaGFzTmF0aXZlVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuc2VhcmNoO1xuICAgIH1cblxuICAgIGdldCBoYXNWYWx1ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy52YWx1ZS5sZW5ndGggfHwgdGhpcy5oYXNOYXRpdmVWYWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgaGFzUGxhY2Vob2xkZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcy5sYWJlbE91dHNpZGUgfHxcbiAgICAgICAgICAgICghdGhpcy5oYXNWYWx1ZSAmJiAoIXRoaXMuaGFzRXhhbXBsZVRleHQgfHwgdGhpcy5pbnB1dEhpZGRlbikpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IHBsYWNlaG9sZGVyUmFpc2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgIXRoaXMubGFiZWxPdXRzaWRlICYmXG4gICAgICAgICAgICAoKHRoaXMuY29tcHV0ZWRGb2N1c2VkICYmICF0aGlzLnJlYWRPbmx5KSB8fCB0aGlzLmhhc1ZhbHVlKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBoYXNFeGFtcGxlVGV4dCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICEhdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50Py5wbGFjZWhvbGRlciAmJlxuICAgICAgICAgICAgdGhpcy5jb21wdXRlZEZvY3VzZWQgJiZcbiAgICAgICAgICAgICF0aGlzLmhhc1ZhbHVlICYmXG4gICAgICAgICAgICAhdGhpcy5yZWFkT25seVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBoYXNSaWdodEljb25zKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5oYXNDbGVhbmVyIHx8XG4gICAgICAgICAgICAhIXRoaXMuaWNvbiB8fFxuICAgICAgICAgICAgKCEhdGhpcy5oaW50T3B0aW9ucz8uY29udGVudCAmJiAhdGhpcy5jb21wdXRlZERpc2FibGVkKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBzdGF0dXMoKTogVHVpU3RhdHVzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZURpcmVjdGl2ZT8ubW9kZSA/IGBkZWZhdWx0YCA6IHRoaXMub3B0aW9ucy50YWdTdGF0dXM7XG4gICAgfVxuXG4gICAgZ2V0IGNhbk9wZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVyYWN0aXZlICYmICEhdGhpcy5kYXRhbGlzdDtcbiAgICB9XG5cbiAgICBnZXRMZWZ0Q29udGVudCh0YWc6IHN0cmluZyk6IFBvbHltb3JwaGV1c0NvbnRlbnQge1xuICAgICAgICByZXR1cm4gIXRoaXMudGFnVmFsaWRhdG9yKHRhZykgJiYgdGhpcy5lcnJvckljb25UZW1wbGF0ZVxuICAgICAgICAgICAgPyB0aGlzLmVycm9ySWNvblRlbXBsYXRlXG4gICAgICAgICAgICA6IGBgO1xuICAgIH1cblxuICAgIG9uQ2xlYW5lckNsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaChgYCk7XG4gICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICAgIHRoaXMucGFyZW50SG9zdGVkRHJvcGRvd24/LnVwZGF0ZU9wZW4odHJ1ZSk7XG4gICAgfVxuXG4gICAgb25BY3RpdmVab25lKGFjdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hZGRUYWcoKTtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGFjdGl2ZSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmNvbXB1dGVkRm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb1N0YXJ0JC5uZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhY3R1YWxUYXJnZXQgPSB0dWlHZXRBY3R1YWxUYXJnZXQoZXZlbnQpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLmZvY3VzYWJsZUVsZW1lbnQgfHxcbiAgICAgICAgICAgIGFjdHVhbFRhcmdldCA9PT0gdGhpcy5mb2N1c2FibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQgfHxcbiAgICAgICAgICAgICF0dWlJc0VsZW1lbnQoZXZlbnQudGFyZ2V0KSB8fFxuICAgICAgICAgICAgdGhpcy5jbGVhbmVyU3ZnPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgfHxcbiAgICAgICAgICAgICh0aGlzLnRhZ3NDb250YWluZXIgJiZcbiAgICAgICAgICAgICAgICBhY3R1YWxUYXJnZXQgIT09IHRoaXMudGFnc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50ICYmXG4gICAgICAgICAgICAgICAgdGhpcy50YWdzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoYWN0dWFsVGFyZ2V0KSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICB9XG5cbiAgICBvbkZpZWxkS2V5RG93bkJhY2tzcGFjZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmxhYmVsT3V0c2lkZSAmJiAhdGhpcy5oYXNOYXRpdmVWYWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5kZWxldGVMYXN0RW5hYmxlZEl0ZW0oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub25GaWVsZEtleURvd25BcnJvd0xlZnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25GaWVsZEtleURvd25BcnJvd0xlZnQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5sYWJlbE91dHNpZGUgfHwgdGhpcy5oYXNOYXRpdmVWYWx1ZSB8fCAhdGhpcy52YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMudGFncy5sYXN0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbkZpZWxkS2V5RG93bkVudGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFkZFRhZygpO1xuICAgICAgICB0aGlzLnNjcm9sbFRvRW5kJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgb25UYWdLZXlEb3duQXJyb3dMZWZ0KGN1cnJlbnRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmIChjdXJyZW50SW5kZXggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm9uU2Nyb2xsS2V5RG93bihjdXJyZW50SW5kZXgsIC0xKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVGFnS2V5RG93bkFycm93UmlnaHQoY3VycmVudEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gdGhpcy52YWx1ZS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub25TY3JvbGxLZXlEb3duKGN1cnJlbnRJbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRhZ0VkaXRlZCh2YWx1ZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKFxuICAgICAgICAgICAgdGhpcy52YWx1ZVxuICAgICAgICAgICAgICAgIC5tYXAoKHRhZywgdGFnSW5kZXgpID0+XG4gICAgICAgICAgICAgICAgICAgIHRhZ0luZGV4ICE9PSBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0YWdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdCh0aGlzLnNlcGFyYXRvcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAodGFnID0+IHRhZy50cmltKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAucmVkdWNlPHN0cmluZ1tdPihcbiAgICAgICAgICAgICAgICAgICAgKHJlc3VsdCwgaXRlbTogc3RyaW5nIHwgc3RyaW5nW10pID0+IHJlc3VsdC5jb25jYXQoaXRlbSksXG4gICAgICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaGFuZGxlT3B0aW9uKGl0ZW06IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgICAgdGhpcy51cGRhdGVTZWFyY2goYGApO1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMudmFsdWUuY29uY2F0KGl0ZW0pKTtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9FbmQkLm5leHQoKTtcbiAgICB9XG5cbiAgICBvbklucHV0KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXJyYXkgPSB2YWx1ZS5zcGxpdCh0aGlzLnNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IHRhZ3MgPSBhcnJheVxuICAgICAgICAgICAgLm1hcChpdGVtID0+IHRoaXMuY2xpcHBlZFZhbHVlKGl0ZW0udHJpbSgpKSlcbiAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0sIGluZGV4LCB7bGVuZ3RofSkgPT4gaXRlbS5sZW5ndGggPiAwICYmIGluZGV4ICE9PSBsZW5ndGggLSAxKTtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVkID0gdGFncy5maWx0ZXIodGFnID0+ICF0aGlzLmRpc2FibGVkSXRlbUhhbmRsZXIodGFnKSk7XG5cbiAgICAgICAgaWYgKGFycmF5Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VhcmNoKHRoaXMuY2xpcHBlZFZhbHVlKGFycmF5W2FycmF5Lmxlbmd0aCAtIDFdLnRyaW0oKSkpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShbLi4udGhpcy52YWx1ZSwgLi4udmFsaWRhdGVkXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaCh0aGlzLmNsaXBwZWRWYWx1ZSh2YWx1ZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vcGVuID0gdGhpcy5oYXNOYXRpdmVWYWx1ZTtcbiAgICB9XG5cbiAgICBvblBhc3RlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXN0ZWQgPSB0dWlHZXRDbGlwYm9hcmREYXRhVGV4dChldmVudCBhcyBDbGlwYm9hcmRFdmVudCk7XG5cbiAgICAgICAgdGhpcy5vbklucHV0KHBhc3RlZCB8fCBgYCk7XG4gICAgfVxuXG4gICAgb25Ecm9wKHtkYXRhVHJhbnNmZXJ9OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGRhdGFUcmFuc2Zlcikge1xuICAgICAgICAgICAgdGhpcy5vbklucHV0KGRhdGFUcmFuc2Zlci5nZXREYXRhKGB0ZXh0YCkgfHwgYGApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgc2V0RGlzYWJsZWRTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuc2V0RGlzYWJsZWRTdGF0ZSgpO1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0cmFja0J5Rm4oXzogbnVtYmVyLCB0YWc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIC8vIEFjdHVhbGx5IHRhZyBoYXMgVHVpU3RyaW5naWZpYWJsZUl0ZW0gdHlwZSBub3Qgc3RyaW5nXG4gICAgICAgIHJldHVybiB0YWcudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlVmFsdWUodmFsdWU6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0KCk7XG5cbiAgICAgICAgc3VwZXIudXBkYXRlVmFsdWUoXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICBpdGVtID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy51bmlxdWVUYWdzIHx8ICghIWl0ZW0gJiYgIXNlZW4uaGFzKGl0ZW0pICYmIHNlZW4uYWRkKGl0ZW0pKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnJldmVyc2UoKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uU2Nyb2xsS2V5RG93bihjdXJyZW50SW5kZXg6IG51bWJlciwgZmxhZzogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhZyA9IHRoaXMudGFncy5maW5kKChfaXRlbSwgaW5kZXgpID0+IGluZGV4ID09PSBjdXJyZW50SW5kZXggKyBmbGFnKTtcblxuICAgICAgICBpZiAoIXRhZyB8fCAhdGhpcy5zY3JvbGxCYXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhZy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZmxhZyAqIHRoaXMuc2Nyb2xsQmFyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggLVxuICAgICAgICAgICAgICAgIGZsYWcgKiB0YWcubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0IC1cbiAgICAgICAgICAgICAgICB0YWcubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCA8XG4gICAgICAgICAgICAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxCYXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ICs9XG4gICAgICAgICAgICAgICAgZmxhZyAqIHRhZy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2Nyb2xsZXJTdWJzY3JpcHRpb24oc2Nyb2xsZXI6IFR1aVNjcm9sbGJhckNvbXBvbmVudCB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFzY3JvbGxlcj8uYnJvd3NlclNjcm9sbFJlZikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge25hdGl2ZUVsZW1lbnR9ID0gc2Nyb2xsZXIuYnJvd3NlclNjcm9sbFJlZjtcblxuICAgICAgICBjb25zdCB3aGVlbCQgPSB0dWlUeXBlZEZyb21FdmVudChuYXRpdmVFbGVtZW50LCBgd2hlZWxgLCB7cGFzc2l2ZTogZmFsc2V9KS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50LmRlbHRhWCA9PT0gMCAmJiB0aGlzLnNob3VsZFNjcm9sbChuYXRpdmVFbGVtZW50KSksXG4gICAgICAgICAgICB0dWlQcmV2ZW50RGVmYXVsdCgpLFxuICAgICAgICAgICAgbWFwKCh7ZGVsdGFZfSkgPT5cbiAgICAgICAgICAgICAgICBNYXRoLm1heChuYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgKyBkZWx0YVkgKiBFVkVOVF9ZX1RPX1hfQ09FRkZJQ0lFTlQsIDApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgc3RhcnQkID0gdGhpcy5zY3JvbGxUb1N0YXJ0JC5waXBlKG1hcFRvKDApKTtcbiAgICAgICAgY29uc3QgZW5kJCA9IHRoaXMuc2Nyb2xsVG9FbmQkLnBpcGUobWFwKCgpID0+IG5hdGl2ZUVsZW1lbnQuc2Nyb2xsV2lkdGgpKTtcblxuICAgICAgICBtZXJnZSh3aGVlbCQsIHN0YXJ0JCwgZW5kJClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChsZWZ0ID0+IHRoaXMudHVpU2Nyb2xsU2VydmljZS5zY3JvbGwkKG5hdGl2ZUVsZW1lbnQsIDAsIGxlZnQpKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTZWFyY2godmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzYWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWFyY2ggPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZWFyY2hDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG91bGRTY3JvbGwoe3Njcm9sbFdpZHRoLCBvZmZzZXRXaWR0aH06IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBzY3JvbGxXaWR0aCA+IG9mZnNldFdpZHRoO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkVGFnKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gdGhpcy5zZWFyY2gudHJpbSgpO1xuXG4gICAgICAgIGlmICghaW5wdXRWYWx1ZSB8fCB0aGlzLmRpc2FibGVkSXRlbUhhbmRsZXIoaW5wdXRWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlU2VhcmNoKGBgKTtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLnZhbHVlLmNvbmNhdChpbnB1dFZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWxldGVMYXN0RW5hYmxlZEl0ZW0oKTogdm9pZCB7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gdGhpcy52YWx1ZS5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWRJdGVtSGFuZGxlcih0aGlzLnZhbHVlW2luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHR1aUFycmF5UmVtb3ZlKHRoaXMudmFsdWUsIGluZGV4KSk7XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNJbnB1dChwcmV2ZW50U2Nyb2xsOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LmZvY3VzKHtwcmV2ZW50U2Nyb2xsfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNsaXBwZWRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnNsaWNlKDAsIHRoaXMubWF4TGVuZ3RoIHx8IHZhbHVlLmxlbmd0aCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImhpbnRPcHRpb25zPy5jaGFuZ2UkIHwgYXN5bmNcIj48L25nLWNvbnRhaW5lcj5cbjx0dWktaG9zdGVkLWRyb3Bkb3duXG4gICAgY2xhc3M9XCJ0LWhvc3RlZFwiXG4gICAgW2Nhbk9wZW5dPVwiY2FuT3BlblwiXG4gICAgW2NvbnRlbnRdPVwiZGF0YWxpc3QgfHwgJydcIlxuICAgIFsob3BlbildPVwib3BlblwiXG4gICAgKHR1aUFjdGl2ZVpvbmVDaGFuZ2UpPVwib25BY3RpdmVab25lKCRldmVudClcIlxuPlxuICAgIDxkaXZcbiAgICAgICAgdHVpV3JhcHBlclxuICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgW2ZvY3VzXT1cImNvbXB1dGVkRm9jdXNlZFwiXG4gICAgICAgIFtob3Zlcl09XCJwc2V1ZG9Ib3ZlclwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgW2ludmFsaWRdPVwiY29tcHV0ZWRJbnZhbGlkXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0LWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImljb25MZWZ0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtaWNvbnMgdC1pY29uc19sZWZ0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dHVpLXN2Z1xuICAgICAgICAgICAgICAgICAgICAqcG9seW1vcnBoZXVzT3V0bGV0PVwiaWNvbkxlZnQgYXMgc3JjOyBjb250ZXh0OiB7JGltcGxpY2l0OiBzaXplfVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJzcmNcIlxuICAgICAgICAgICAgICAgID48L3R1aS1zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidC1hYnNvbHV0ZS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC10YWdfX3BsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudC1wbGFjZWhvbGRlcl9yYWlzZWRdPVwicGxhY2Vob2xkZXJSYWlzZWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDx0dWktc2Nyb2xsYmFyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWV4cGFuZGFibGU7IGVsc2UgaXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInQtc2Nyb2xsYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbXNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3R1aS1zY3JvbGxiYXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpdGVtcz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgI3RhZ3NDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC10YWdzXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhYmVsT3V0c2lkZTsgZWxzZSB0ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR1aS10YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdmFsdWU7IGluZGV4IGFzIGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtdGFnX190YWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInQtdGFnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXR1c109XCIoc3RhdHVzJCB8IGFzeW5jKSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGVmdENvbnRlbnRdPVwiZ2V0TGVmdENvbnRlbnQoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHVpRm9jdXNhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbXB1dGVkRGlzYWJsZWQgfHwgZGlzYWJsZWRJdGVtSGFuZGxlcihpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlZGl0YWJsZV09XCJlZGl0YWJsZSAmJiAhcmVhZE9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaG92ZXJhYmxlXT1cIiFyZWFkT25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZW1vdmFibGVdPVwiIXJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlcGFyYXRvcl09XCJzZXBhcmF0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4TGVuZ3RoXT1cIm1heExlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cImNvbnRyb2xsZXIuc2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtLnRvU3RyaW5nKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWRpdGVkKT1cIm9uVGFnRWRpdGVkKCRldmVudCwgaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uYXJyb3dMZWZ0LnByZXZlbnQpPVwib25UYWdLZXlEb3duQXJyb3dMZWZ0KGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmFycm93UmlnaHQucHJldmVudCk9XCJvblRhZ0tleURvd25BcnJvd1JpZ2h0KGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdHVpLXRhZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LXRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudC10ZXh0X2Rpc2FibGVkXT1cImRpc2FibGVkSXRlbUhhbmRsZXIoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudC10ZXh0X2Vycm9yXT1cIiF0YWdWYWxpZGF0b3IoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWlucHV0LXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy50LWlucHV0LXdyYXBwZXJfY29sbGFwc2VkXT1cImNvbXB1dGVkRGlzYWJsZWQgfHwgcmVhZE9ubHkgfHwgaW5wdXRIaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0LWdob3N0XCI+e3sgc2VhcmNoIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmb2N1c2FibGVFbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC10YWdfX25hdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1uYXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudC1uYXRpdmVfaGlkZGVuXT1cImlucHV0SGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIubWF4TGVuZ3RoXT1cIm1heExlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5IHx8IGlucHV0SGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R1aUZvY3VzYWJsZV09XCJjb21wdXRlZEZvY3VzYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXN0ZS5wcmV2ZW50KT1cIm9uUGFzdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkcm9wLnByZXZlbnQpPVwib25Ecm9wKCRhbnkoJGV2ZW50KSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd0xlZnQpPVwib25GaWVsZEtleURvd25BcnJvd0xlZnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmJhY2tzcGFjZSk9XCJvbkZpZWxkS2V5RG93bkJhY2tzcGFjZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIucHJldmVudCk9XCJvbkZpZWxkS2V5RG93bkVudGVyKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzUmlnaHRJY29uc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWljb25zIHQtaWNvbnNfcmlnaHRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx0dWktc3ZnXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzQ2xlYW5lclwiXG4gICAgICAgICAgICAgICAgICAgICNjbGVhbmVyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtdGFnX19jbGVhbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgc3JjPVwidHVpSWNvbkNsb3NlTGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInQtY2xlYW5lclwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljay5zdG9wKT1cIm9uQ2xlYW5lckNsaWNrKClcIlxuICAgICAgICAgICAgICAgID48L3R1aS1zdmc+XG4gICAgICAgICAgICAgICAgPHR1aS10b29sdGlwXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGludE9wdGlvbnMgJiYgaGludE9wdGlvbnMuY29udGVudCAmJiAhY29tcHV0ZWREaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtdGFnX190b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVJZD1cInBsYWNlaG9sZXJfdW50aWxfYWNjZXNpYmlsaXR5X2lzX2FkZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LXRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgICBbZGlyZWN0aW9uXT1cImhpbnRPcHRpb25zLmRpcmVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImhpbnRPcHRpb25zLmFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJoaW50T3B0aW9ucy5jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dEZWxheV09XCJoaW50T3B0aW9ucy5zaG93RGVsYXlcIlxuICAgICAgICAgICAgICAgICAgICBbaGlkZURlbGF5XT1cImhpbnRPcHRpb25zLmhpZGVEZWxheVwiXG4gICAgICAgICAgICAgICAgPjwvdHVpLXRvb2x0aXA+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPHR1aS1zdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJpY29uIGFzIHNyYzsgY29udGV4dDogeyRpbXBsaWNpdDogc2l6ZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJzcmNcIlxuICAgICAgICAgICAgICAgICAgICA+PC90dWktc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGUgI2Vycm9ySWNvbj5cbiAgICAgICAgICAgIDx0dWktc3ZnXG4gICAgICAgICAgICAgICAgc3JjPVwidHVpSWNvbkF0dGVudGlvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWVycm9yLWljb25cIlxuICAgICAgICAgICAgPjwvdHVpLXN2Zz5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbjwvdHVpLWhvc3RlZC1kcm9wZG93bj5cbiJdfQ==
461
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LXRhZy9pbnB1dC10YWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtdGFnL2lucHV0LXRhZy50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFFTixJQUFJLEVBQ0osV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFDSCwwQkFBMEIsRUFDMUIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixXQUFXLEVBRVgsY0FBYyxFQUNkLFlBQVksRUFDWiwwQkFBMEIsRUFHMUIsY0FBYyxFQUVkLGtCQUFrQixFQUNsQix1QkFBdUIsRUFDdkIsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsYUFBYSxFQUNiLDZCQUE2QixFQUM3QixRQUFRLEVBQ1Isd0JBQXdCLEVBQ3hCLGdDQUFnQyxFQUNoQyxpQkFBaUIsRUFFakIsb0JBQW9CLEVBRXBCLHVCQUF1QixFQUN2QiwwQkFBMEIsRUFDMUIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixHQUl4QixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLHlCQUF5QixDQUFD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QUR6QixTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQztnQkFRcEQsU0FBUztzQkFGUixLQUFLO2dCQU1OLE1BQU07c0JBRkwsS0FBSztnQkFNTixRQUFRO3NCQUZQLEtBQUs7Z0JBTU4sWUFBWTtzQkFGWCxLQUFLO2dCQU9OLFVBQVU7c0JBSFQsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxtQkFBbUI7Z0JBTWhDLFdBQVc7c0JBRlYsS0FBSztnQkFNTixVQUFVO3NCQUZULEtBQUs7Z0JBTU4sU0FBUztzQkFGUixLQUFLO2dCQU1OLFdBQVc7c0JBRlYsS0FBSztnQkFNTixtQkFBbUI7c0JBRmxCLEtBQUs7Z0JBTUYsbUJBQW1CO3NCQUR0QixLQUFLO3VCQUFDLGVBQWU7Z0JBVWIsWUFBWTtzQkFEcEIsTUFBTTtnQkFJRSxRQUFRO3NCQURoQixZQUFZO3VCQUFDLG9CQUFvQixFQUFFLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBQztnQkFJOUMsaUJBQWlCO3NCQUR6QixTQUFTO3VCQUFDLFdBQVc7Z0JBSWxCLGNBQWM7c0JBRGpCLFNBQVM7dUJBQUMscUJBQXFCO2dCQW1ENUIsSUFBSTtzQkFEUCxXQUFXO3VCQUFDLGdCQUFnQjtnQkFNekIsWUFBWTtzQkFEZixXQUFXO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTZWxmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RUdWlNdWx0aXBsZUNvbnRyb2wsXG4gICAgQUxXQVlTX0ZBTFNFX0hBTkRMRVIsXG4gICAgQUxXQVlTX1RSVUVfSEFORExFUixcbiAgICBFTVBUWV9RVUVSWSxcbiAgICBUdWlBY3RpdmVab25lRGlyZWN0aXZlLFxuICAgIHR1aUFycmF5UmVtb3ZlLFxuICAgIHR1aUFzQ29udHJvbCxcbiAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcixcbiAgICBUdWlCb29sZWFuSGFuZGxlcixcbiAgICBUdWlDb250ZXh0V2l0aEltcGxpY2l0LFxuICAgIHR1aURlZmF1bHRQcm9wLFxuICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvcixcbiAgICB0dWlHZXRBY3R1YWxUYXJnZXQsXG4gICAgdHVpR2V0Q2xpcGJvYXJkRGF0YVRleHQsXG4gICAgdHVpSXNFbGVtZW50LFxuICAgIHR1aUlzTmF0aXZlRm9jdXNlZEluLFxuICAgIHR1aVByZXZlbnREZWZhdWx0LFxuICAgIFR1aVNjcm9sbFNlcnZpY2UsXG4gICAgdHVpVHlwZWRGcm9tRXZlbnQsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBNT0RFX1BST1ZJREVSLFxuICAgIFRFWFRGSUVMRF9DT05UUk9MTEVSX1BST1ZJREVSLFxuICAgIFRVSV9NT0RFLFxuICAgIFRVSV9URVhURklFTERfQVBQRUFSQU5DRSxcbiAgICBUVUlfVEVYVEZJRUxEX1dBVENIRURfQ09OVFJPTExFUixcbiAgICB0dWlBc0RhdGFMaXN0SG9zdCxcbiAgICBUdWlCcmlnaHRuZXNzLFxuICAgIFR1aURhdGFMaXN0RGlyZWN0aXZlLFxuICAgIFR1aURhdGFMaXN0SG9zdCxcbiAgICBUdWlIaW50T3B0aW9uc0RpcmVjdGl2ZSxcbiAgICBUdWlIb3N0ZWREcm9wZG93bkNvbXBvbmVudCxcbiAgICBUdWlNb2RlRGlyZWN0aXZlLFxuICAgIFR1aVNjcm9sbGJhckNvbXBvbmVudCxcbiAgICBUdWlTaXplTCxcbiAgICBUdWlTaXplUyxcbiAgICBUdWlUZXh0ZmllbGRDb250cm9sbGVyLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1R1aVN0cmluZ2lmaWFibGVJdGVtfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NsYXNzZXMnO1xuaW1wb3J0IHtGSVhFRF9EUk9QRE9XTl9DT05UUk9MTEVSX1BST1ZJREVSfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Byb3ZpZGVycyc7XG5pbXBvcnQge1R1aVN0YXR1c30gZnJvbSAnQHRhaWdhLXVpL2tpdC90eXBlcyc7XG5pbXBvcnQge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5pbXBvcnQge21lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIG1hcFRvLCBzd2l0Y2hNYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1RVSV9JTlBVVF9UQUdfT1BUSU9OUywgVHVpSW5wdXRUYWdPcHRpb25zfSBmcm9tICcuL2lucHV0LXRhZy1vcHRpb25zJztcblxuY29uc3QgRVZFTlRfWV9UT19YX0NPRUZGSUNJRU5UID0gMztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IGB0dWktaW5wdXQtdGFnYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICB0ZW1wbGF0ZVVybDogYC4vaW5wdXQtdGFnLnRlbXBsYXRlLmh0bWxgLFxuICAgIHN0eWxlVXJsczogW2AuL2lucHV0LXRhZy5zdHlsZS5sZXNzYF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yKFR1aUlucHV0VGFnQ29tcG9uZW50KSxcbiAgICAgICAgdHVpQXNDb250cm9sKFR1aUlucHV0VGFnQ29tcG9uZW50KSxcbiAgICAgICAgdHVpQXNEYXRhTGlzdEhvc3QoVHVpSW5wdXRUYWdDb21wb25lbnQpLFxuICAgICAgICBURVhURklFTERfQ09OVFJPTExFUl9QUk9WSURFUixcbiAgICAgICAgTU9ERV9QUk9WSURFUixcbiAgICBdLFxuICAgIHZpZXdQcm92aWRlcnM6IFtGSVhFRF9EUk9QRE9XTl9DT05UUk9MTEVSX1BST1ZJREVSXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRUYWdDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0VHVpTXVsdGlwbGVDb250cm9sPHN0cmluZz5cbiAgICBpbXBsZW1lbnRzIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvciwgVHVpRGF0YUxpc3RIb3N0PHN0cmluZz5cbntcbiAgICBAVmlld0NoaWxkKFR1aUhvc3RlZERyb3Bkb3duQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgaG9zdGVkRHJvcGRvd24/OiBUdWlIb3N0ZWREcm9wZG93bkNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoYGZvY3VzYWJsZUVsZW1lbnRgKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9jdXNhYmxlRWxlbWVudD86IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKGB0YWdzQ29udGFpbmVyYClcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhZ3NDb250YWluZXI/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIEBWaWV3Q2hpbGRyZW4oYHRhZ2AsIHtyZWFkOiBFbGVtZW50UmVmfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhZ3M6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4gPSBFTVBUWV9RVUVSWTtcblxuICAgIEBWaWV3Q2hpbGQoYGNsZWFuZXJgLCB7cmVhZDogRWxlbWVudFJlZn0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBjbGVhbmVyU3ZnPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKFR1aVNjcm9sbGJhckNvbXBvbmVudCwge3JlYWQ6IEVsZW1lbnRSZWZ9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Nyb2xsQmFyPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcm9sbFRvU3RhcnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcm9sbFRvRW5kJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgc2VwYXJhdG9yOiBzdHJpbmcgfCBSZWdFeHAgPSB0aGlzLm9wdGlvbnMuc2VwYXJhdG9yO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHNlYXJjaCA9IGBgO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGVkaXRhYmxlID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICB0YWdWYWxpZGF0b3I6IFR1aUJvb2xlYW5IYW5kbGVyPHN0cmluZz4gPSBBTFdBWVNfVFJVRV9IQU5ETEVSO1xuXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoYGNsYXNzLl9leHBhbmRhYmxlYClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGV4cGFuZGFibGUgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGlucHV0SGlkZGVuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgdW5pcXVlVGFncyA9IHRoaXMub3B0aW9ucy51bmlxdWVUYWdzO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1heExlbmd0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgcGxhY2Vob2xkZXIgPSBgYDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBkaXNhYmxlZEl0ZW1IYW5kbGVyOiBUdWlCb29sZWFuSGFuZGxlcjxzdHJpbmcgfCBUdWlTdHJpbmdpZmlhYmxlSXRlbTxhbnk+PiA9XG4gICAgICAgIEFMV0FZU19GQUxTRV9IQU5ETEVSO1xuXG4gICAgQElucHV0KGBwc2V1ZG9Gb2N1c2VkYClcbiAgICBzZXQgcHNldWRvRm9jdXNlZFNldHRlcih2YWx1ZTogYm9vbGVhbiB8IG51bGwpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSAmJiAhdGhpcy5mb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvU3RhcnQkLm5leHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHNldWRvRm9jdXMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBzZWFyY2hDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIEBDb250ZW50Q2hpbGQoVHVpRGF0YUxpc3REaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZn0pXG4gICAgcmVhZG9ubHkgZGF0YWxpc3Q/OiBUZW1wbGF0ZVJlZjxUdWlDb250ZXh0V2l0aEltcGxpY2l0PFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmU+PjtcblxuICAgIEBWaWV3Q2hpbGQoYGVycm9ySWNvbmApXG4gICAgcmVhZG9ubHkgZXJyb3JJY29uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG5cbiAgICBAVmlld0NoaWxkKFR1aVNjcm9sbGJhckNvbXBvbmVudClcbiAgICBzZXQgc2Nyb2xsZXJTZXR0ZXIoc2Nyb2xsZXI6IFR1aVNjcm9sbGJhckNvbXBvbmVudCB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5pbml0U2Nyb2xsZXJTdWJzY3JpcHRpb24oc2Nyb2xsZXIpO1xuICAgIH1cblxuICAgIHN0YXR1cyQ6IE9ic2VydmFibGU8VHVpU3RhdHVzPiA9IHRoaXMubW9kZSQucGlwZShtYXAoKCkgPT4gdGhpcy5zdGF0dXMpKTtcblxuICAgIG9wZW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoVHVpU2Nyb2xsU2VydmljZSkgcHJpdmF0ZSByZWFkb25seSB0dWlTY3JvbGxTZXJ2aWNlOiBUdWlTY3JvbGxTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIEBJbmplY3QoVFVJX1RFWFRGSUVMRF9BUFBFQVJBTkNFKSByZWFkb25seSBhcHBlYXJhbmNlOiBzdHJpbmcsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoVHVpTW9kZURpcmVjdGl2ZSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtb2RlRGlyZWN0aXZlOiBUdWlNb2RlRGlyZWN0aXZlIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChUVUlfTU9ERSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtb2RlJDogT2JzZXJ2YWJsZTxUdWlCcmlnaHRuZXNzIHwgbnVsbD4sXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoVHVpSGludE9wdGlvbnNEaXJlY3RpdmUpXG4gICAgICAgIHJlYWRvbmx5IGhpbnRPcHRpb25zOiBUdWlIaW50T3B0aW9uc0RpcmVjdGl2ZSB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoVFVJX1RFWFRGSUVMRF9XQVRDSEVEX0NPTlRST0xMRVIpXG4gICAgICAgIHJlYWRvbmx5IGNvbnRyb2xsZXI6IFR1aVRleHRmaWVsZENvbnRyb2xsZXIsXG4gICAgICAgIEBJbmplY3QoVFVJX0lOUFVUX1RBR19PUFRJT05TKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFR1aUlucHV0VGFnT3B0aW9ucyxcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChUdWlIb3N0ZWREcm9wZG93bkNvbXBvbmVudClcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwYXJlbnRIb3N0ZWREcm9wZG93bj86IFR1aUhvc3RlZERyb3Bkb3duQ29tcG9uZW50LFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gIXRoaXMuZm9jdXNhYmxlRWxlbWVudCB8fCB0aGlzLmNvbXB1dGVkRGlzYWJsZWRcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiB0aGlzLmZvY3VzYWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHR1aUlzTmF0aXZlRm9jdXNlZEluKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSB8fFxuICAgICAgICAgICAgISF0aGlzLmhvc3RlZERyb3Bkb3duPy5mb2N1c2VkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKGBhdHRyLmRhdGEtc2l6ZWApXG4gICAgZ2V0IHNpemUoKTogVHVpU2l6ZUwgfCBUdWlTaXplUyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuc2l6ZTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoYGNsYXNzLl9sYWJlbC1vdXRzaWRlYClcbiAgICBnZXQgbGFiZWxPdXRzaWRlKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB7c2l6ZSwgbGFiZWxPdXRzaWRlfSA9IHRoaXMuY29udHJvbGxlcjtcblxuICAgICAgICByZXR1cm4gc2l6ZSA9PT0gYHNgIHx8IGxhYmVsT3V0c2lkZTtcbiAgICB9XG5cbiAgICBnZXQgaWNvbigpOiBQb2x5bW9ycGhldXNDb250ZW50PFR1aUNvbnRleHRXaXRoSW1wbGljaXQ8VHVpU2l6ZVMgfCBUdWlTaXplTD4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5pY29uO1xuICAgIH1cblxuICAgIGdldCBpY29uTGVmdCgpOiBQb2x5bW9ycGhldXNDb250ZW50PFR1aUNvbnRleHRXaXRoSW1wbGljaXQ8VHVpU2l6ZVMgfCBUdWlTaXplTD4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5pY29uTGVmdDtcbiAgICB9XG5cbiAgICBnZXQgaGFzQ2xlYW5lcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5jbGVhbmVyICYmIHRoaXMuaGFzVmFsdWUgJiYgdGhpcy5pbnRlcmFjdGl2ZTtcbiAgICB9XG5cbiAgICBnZXQgaGFzTmF0aXZlVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuc2VhcmNoO1xuICAgIH1cblxuICAgIGdldCBoYXNWYWx1ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy52YWx1ZS5sZW5ndGggfHwgdGhpcy5oYXNOYXRpdmVWYWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgaGFzUGxhY2Vob2xkZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcy5sYWJlbE91dHNpZGUgfHxcbiAgICAgICAgICAgICghdGhpcy5oYXNWYWx1ZSAmJiAoIXRoaXMuaGFzRXhhbXBsZVRleHQgfHwgdGhpcy5pbnB1dEhpZGRlbikpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IHBsYWNlaG9sZGVyUmFpc2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgIXRoaXMubGFiZWxPdXRzaWRlICYmXG4gICAgICAgICAgICAoKHRoaXMuY29tcHV0ZWRGb2N1c2VkICYmICF0aGlzLnJlYWRPbmx5KSB8fCB0aGlzLmhhc1ZhbHVlKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBoYXNFeGFtcGxlVGV4dCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICEhdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50Py5wbGFjZWhvbGRlciAmJlxuICAgICAgICAgICAgdGhpcy5jb21wdXRlZEZvY3VzZWQgJiZcbiAgICAgICAgICAgICF0aGlzLmhhc1ZhbHVlICYmXG4gICAgICAgICAgICAhdGhpcy5yZWFkT25seVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBoYXNSaWdodEljb25zKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5oYXNDbGVhbmVyIHx8XG4gICAgICAgICAgICAhIXRoaXMuaWNvbiB8fFxuICAgICAgICAgICAgKCEhdGhpcy5oaW50T3B0aW9ucz8uY29udGVudCAmJiAhdGhpcy5jb21wdXRlZERpc2FibGVkKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBzdGF0dXMoKTogVHVpU3RhdHVzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZURpcmVjdGl2ZT8ubW9kZSA/IGBkZWZhdWx0YCA6IHRoaXMub3B0aW9ucy50YWdTdGF0dXM7XG4gICAgfVxuXG4gICAgZ2V0IGNhbk9wZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVyYWN0aXZlICYmICEhdGhpcy5kYXRhbGlzdDtcbiAgICB9XG5cbiAgICBnZXRMZWZ0Q29udGVudCh0YWc6IHN0cmluZyk6IFBvbHltb3JwaGV1c0NvbnRlbnQge1xuICAgICAgICByZXR1cm4gIXRoaXMudGFnVmFsaWRhdG9yKHRhZykgJiYgdGhpcy5lcnJvckljb25UZW1wbGF0ZVxuICAgICAgICAgICAgPyB0aGlzLmVycm9ySWNvblRlbXBsYXRlXG4gICAgICAgICAgICA6IGBgO1xuICAgIH1cblxuICAgIG9uQ2xlYW5lckNsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaChgYCk7XG4gICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICAgIHRoaXMucGFyZW50SG9zdGVkRHJvcGRvd24/LnVwZGF0ZU9wZW4odHJ1ZSk7XG4gICAgfVxuXG4gICAgb25BY3RpdmVab25lKGFjdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hZGRUYWcoKTtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGFjdGl2ZSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmNvbXB1dGVkRm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb1N0YXJ0JC5uZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhY3R1YWxUYXJnZXQgPSB0dWlHZXRBY3R1YWxUYXJnZXQoZXZlbnQpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLmZvY3VzYWJsZUVsZW1lbnQgfHxcbiAgICAgICAgICAgIGFjdHVhbFRhcmdldCA9PT0gdGhpcy5mb2N1c2FibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQgfHxcbiAgICAgICAgICAgICF0dWlJc0VsZW1lbnQoZXZlbnQudGFyZ2V0KSB8fFxuICAgICAgICAgICAgdGhpcy5jbGVhbmVyU3ZnPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgfHxcbiAgICAgICAgICAgICh0aGlzLnRhZ3NDb250YWluZXIgJiZcbiAgICAgICAgICAgICAgICBhY3R1YWxUYXJnZXQgIT09IHRoaXMudGFnc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50ICYmXG4gICAgICAgICAgICAgICAgdGhpcy50YWdzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoYWN0dWFsVGFyZ2V0KSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICB9XG5cbiAgICBvbkZpZWxkS2V5RG93bkJhY2tzcGFjZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmxhYmVsT3V0c2lkZSAmJiAhdGhpcy5oYXNOYXRpdmVWYWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5kZWxldGVMYXN0RW5hYmxlZEl0ZW0oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub25GaWVsZEtleURvd25BcnJvd0xlZnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25GaWVsZEtleURvd25BcnJvd0xlZnQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5sYWJlbE91dHNpZGUgfHwgdGhpcy5oYXNOYXRpdmVWYWx1ZSB8fCAhdGhpcy52YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMudGFncy5sYXN0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbkZpZWxkS2V5RG93bkVudGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFkZFRhZygpO1xuICAgICAgICB0aGlzLnNjcm9sbFRvRW5kJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgb25UYWdLZXlEb3duQXJyb3dMZWZ0KGN1cnJlbnRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmIChjdXJyZW50SW5kZXggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm9uU2Nyb2xsS2V5RG93bihjdXJyZW50SW5kZXgsIC0xKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVGFnS2V5RG93bkFycm93UmlnaHQoY3VycmVudEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gdGhpcy52YWx1ZS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub25TY3JvbGxLZXlEb3duKGN1cnJlbnRJbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRhZ0VkaXRlZCh2YWx1ZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKFxuICAgICAgICAgICAgdGhpcy52YWx1ZVxuICAgICAgICAgICAgICAgIC5tYXAoKHRhZywgdGFnSW5kZXgpID0+XG4gICAgICAgICAgICAgICAgICAgIHRhZ0luZGV4ICE9PSBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0YWdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdCh0aGlzLnNlcGFyYXRvcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAodGFnID0+IHRhZy50cmltKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAucmVkdWNlPHN0cmluZ1tdPihcbiAgICAgICAgICAgICAgICAgICAgKHJlc3VsdCwgaXRlbTogc3RyaW5nIHwgc3RyaW5nW10pID0+IHJlc3VsdC5jb25jYXQoaXRlbSksXG4gICAgICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaGFuZGxlT3B0aW9uKGl0ZW06IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgICAgdGhpcy51cGRhdGVTZWFyY2goYGApO1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMudmFsdWUuY29uY2F0KGl0ZW0pKTtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9FbmQkLm5leHQoKTtcbiAgICB9XG5cbiAgICBvbklucHV0KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXJyYXkgPSB2YWx1ZS5zcGxpdCh0aGlzLnNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IHRhZ3MgPSBhcnJheVxuICAgICAgICAgICAgLm1hcChpdGVtID0+IHRoaXMuY2xpcHBlZFZhbHVlKGl0ZW0udHJpbSgpKSlcbiAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0sIGluZGV4LCB7bGVuZ3RofSkgPT4gaXRlbS5sZW5ndGggPiAwICYmIGluZGV4ICE9PSBsZW5ndGggLSAxKTtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVkID0gdGFncy5maWx0ZXIodGFnID0+ICF0aGlzLmRpc2FibGVkSXRlbUhhbmRsZXIodGFnKSk7XG5cbiAgICAgICAgaWYgKGFycmF5Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VhcmNoKHRoaXMuY2xpcHBlZFZhbHVlKGFycmF5W2FycmF5Lmxlbmd0aCAtIDFdLnRyaW0oKSkpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShbLi4udGhpcy52YWx1ZSwgLi4udmFsaWRhdGVkXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaCh0aGlzLmNsaXBwZWRWYWx1ZSh2YWx1ZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vcGVuID0gdGhpcy5oYXNOYXRpdmVWYWx1ZTtcbiAgICB9XG5cbiAgICBvblBhc3RlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXN0ZWQgPSB0dWlHZXRDbGlwYm9hcmREYXRhVGV4dChldmVudCBhcyBDbGlwYm9hcmRFdmVudCk7XG5cbiAgICAgICAgdGhpcy5vbklucHV0KHBhc3RlZCB8fCBgYCk7XG4gICAgfVxuXG4gICAgb25Ecm9wKHtkYXRhVHJhbnNmZXJ9OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGRhdGFUcmFuc2Zlcikge1xuICAgICAgICAgICAgdGhpcy5vbklucHV0KGRhdGFUcmFuc2Zlci5nZXREYXRhKGB0ZXh0YCkgfHwgYGApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgc2V0RGlzYWJsZWRTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuc2V0RGlzYWJsZWRTdGF0ZSgpO1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0cmFja0J5Rm4oXzogbnVtYmVyLCB0YWc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIC8vIEFjdHVhbGx5IHRhZyBoYXMgVHVpU3RyaW5naWZpYWJsZUl0ZW0gdHlwZSBub3Qgc3RyaW5nXG4gICAgICAgIHJldHVybiB0YWcudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlVmFsdWUodmFsdWU6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0KCk7XG5cbiAgICAgICAgc3VwZXIudXBkYXRlVmFsdWUoXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICBpdGVtID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy51bmlxdWVUYWdzIHx8ICghIWl0ZW0gJiYgIXNlZW4uaGFzKGl0ZW0pICYmIHNlZW4uYWRkKGl0ZW0pKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnJldmVyc2UoKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uU2Nyb2xsS2V5RG93bihjdXJyZW50SW5kZXg6IG51bWJlciwgZmxhZzogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhZyA9IHRoaXMudGFncy5maW5kKChfaXRlbSwgaW5kZXgpID0+IGluZGV4ID09PSBjdXJyZW50SW5kZXggKyBmbGFnKTtcblxuICAgICAgICBpZiAoIXRhZyB8fCAhdGhpcy5zY3JvbGxCYXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhZy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZmxhZyAqIHRoaXMuc2Nyb2xsQmFyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggLVxuICAgICAgICAgICAgICAgIGZsYWcgKiB0YWcubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0IC1cbiAgICAgICAgICAgICAgICB0YWcubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCA8XG4gICAgICAgICAgICAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxCYXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ICs9XG4gICAgICAgICAgICAgICAgZmxhZyAqIHRhZy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2Nyb2xsZXJTdWJzY3JpcHRpb24oc2Nyb2xsZXI6IFR1aVNjcm9sbGJhckNvbXBvbmVudCB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFzY3JvbGxlcj8uYnJvd3NlclNjcm9sbFJlZikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge25hdGl2ZUVsZW1lbnR9ID0gc2Nyb2xsZXIuYnJvd3NlclNjcm9sbFJlZjtcblxuICAgICAgICBjb25zdCB3aGVlbCQgPSB0dWlUeXBlZEZyb21FdmVudChuYXRpdmVFbGVtZW50LCBgd2hlZWxgLCB7cGFzc2l2ZTogZmFsc2V9KS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50LmRlbHRhWCA9PT0gMCAmJiB0aGlzLnNob3VsZFNjcm9sbChuYXRpdmVFbGVtZW50KSksXG4gICAgICAgICAgICB0dWlQcmV2ZW50RGVmYXVsdCgpLFxuICAgICAgICAgICAgbWFwKCh7ZGVsdGFZfSkgPT5cbiAgICAgICAgICAgICAgICBNYXRoLm1heChuYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgKyBkZWx0YVkgKiBFVkVOVF9ZX1RPX1hfQ09FRkZJQ0lFTlQsIDApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgc3RhcnQkID0gdGhpcy5zY3JvbGxUb1N0YXJ0JC5waXBlKG1hcFRvKDApKTtcbiAgICAgICAgY29uc3QgZW5kJCA9IHRoaXMuc2Nyb2xsVG9FbmQkLnBpcGUobWFwKCgpID0+IG5hdGl2ZUVsZW1lbnQuc2Nyb2xsV2lkdGgpKTtcblxuICAgICAgICBtZXJnZSh3aGVlbCQsIHN0YXJ0JCwgZW5kJClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChsZWZ0ID0+IHRoaXMudHVpU2Nyb2xsU2VydmljZS5zY3JvbGwkKG5hdGl2ZUVsZW1lbnQsIDAsIGxlZnQpKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTZWFyY2godmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzYWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWFyY2ggPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZWFyY2hDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG91bGRTY3JvbGwoe3Njcm9sbFdpZHRoLCBvZmZzZXRXaWR0aH06IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBzY3JvbGxXaWR0aCA+IG9mZnNldFdpZHRoO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkVGFnKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gdGhpcy5zZWFyY2gudHJpbSgpO1xuXG4gICAgICAgIGlmICghaW5wdXRWYWx1ZSB8fCB0aGlzLmRpc2FibGVkSXRlbUhhbmRsZXIoaW5wdXRWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlU2VhcmNoKGBgKTtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLnZhbHVlLmNvbmNhdChpbnB1dFZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWxldGVMYXN0RW5hYmxlZEl0ZW0oKTogdm9pZCB7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gdGhpcy52YWx1ZS5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWRJdGVtSGFuZGxlcih0aGlzLnZhbHVlW2luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHR1aUFycmF5UmVtb3ZlKHRoaXMudmFsdWUsIGluZGV4KSk7XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNJbnB1dChwcmV2ZW50U2Nyb2xsOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LmZvY3VzKHtwcmV2ZW50U2Nyb2xsfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNsaXBwZWRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnNsaWNlKDAsIHRoaXMubWF4TGVuZ3RoIHx8IHZhbHVlLmxlbmd0aCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImhpbnRPcHRpb25zPy5jaGFuZ2UkIHwgYXN5bmNcIj48L25nLWNvbnRhaW5lcj5cbjx0dWktaG9zdGVkLWRyb3Bkb3duXG4gICAgY2xhc3M9XCJ0LWhvc3RlZFwiXG4gICAgW2Nhbk9wZW5dPVwiY2FuT3BlblwiXG4gICAgW2NvbnRlbnRdPVwiZGF0YWxpc3QgfHwgJydcIlxuICAgIFsob3BlbildPVwib3BlblwiXG4gICAgKHR1aUFjdGl2ZVpvbmVDaGFuZ2UpPVwib25BY3RpdmVab25lKCRldmVudClcIlxuPlxuICAgIDxkaXZcbiAgICAgICAgdHVpV3JhcHBlclxuICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgW2ZvY3VzXT1cImNvbXB1dGVkRm9jdXNlZFwiXG4gICAgICAgIFtob3Zlcl09XCJwc2V1ZG9Ib3ZlclwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgW2ludmFsaWRdPVwiY29tcHV0ZWRJbnZhbGlkXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0LWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImljb25MZWZ0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtaWNvbnMgdC1pY29uc19sZWZ0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dHVpLXN2Z1xuICAgICAgICAgICAgICAgICAgICAqcG9seW1vcnBoZXVzT3V0bGV0PVwiaWNvbkxlZnQgYXMgc3JjOyBjb250ZXh0OiB7JGltcGxpY2l0OiBzaXplfVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJzcmNcIlxuICAgICAgICAgICAgICAgID48L3R1aS1zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidC1hYnNvbHV0ZS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC10YWdfX3BsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudC1wbGFjZWhvbGRlcl9yYWlzZWRdPVwicGxhY2Vob2xkZXJSYWlzZWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDx0dWktc2Nyb2xsYmFyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWV4cGFuZGFibGU7IGVsc2UgaXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInQtc2Nyb2xsYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbXNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3R1aS1zY3JvbGxiYXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpdGVtcz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgI3RhZ3NDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC10YWdzXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhYmVsT3V0c2lkZTsgZWxzZSB0ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR1aS10YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdmFsdWU7IGluZGV4IGFzIGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtdGFnX190YWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInQtdGFnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXR1c109XCIoc3RhdHVzJCB8IGFzeW5jKSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGVmdENvbnRlbnRdPVwiZ2V0TGVmdENvbnRlbnQoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHVpRm9jdXNhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbXB1dGVkRGlzYWJsZWQgfHwgZGlzYWJsZWRJdGVtSGFuZGxlcihpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlZGl0YWJsZV09XCJlZGl0YWJsZSAmJiAhcmVhZE9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaG92ZXJhYmxlXT1cIiFyZWFkT25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZW1vdmFibGVdPVwiIXJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlcGFyYXRvcl09XCJzZXBhcmF0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4TGVuZ3RoXT1cIm1heExlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cImNvbnRyb2xsZXIuc2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtLnRvU3RyaW5nKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWRpdGVkKT1cIm9uVGFnRWRpdGVkKCRldmVudCwgaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uYXJyb3dMZWZ0LnByZXZlbnQpPVwib25UYWdLZXlEb3duQXJyb3dMZWZ0KGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmFycm93UmlnaHQucHJldmVudCk9XCJvblRhZ0tleURvd25BcnJvd1JpZ2h0KGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdHVpLXRhZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LXRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudC10ZXh0X2Rpc2FibGVkXT1cImRpc2FibGVkSXRlbUhhbmRsZXIoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudC10ZXh0X2Vycm9yXT1cIiF0YWdWYWxpZGF0b3IoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWlucHV0LXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy50LWlucHV0LXdyYXBwZXJfY29sbGFwc2VkXT1cImNvbXB1dGVkRGlzYWJsZWQgfHwgcmVhZE9ubHkgfHwgaW5wdXRIaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0LWdob3N0XCI+e3sgc2VhcmNoIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmb2N1c2FibGVFbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC10YWdfX25hdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1uYXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudC1uYXRpdmVfaGlkZGVuXT1cImlucHV0SGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIubWF4TGVuZ3RoXT1cIm1heExlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5IHx8IGlucHV0SGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R1aUZvY3VzYWJsZV09XCJjb21wdXRlZEZvY3VzYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXN0ZS5wcmV2ZW50KT1cIm9uUGFzdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkcm9wLnByZXZlbnQpPVwib25Ecm9wKCRhbnkoJGV2ZW50KSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd0xlZnQpPVwib25GaWVsZEtleURvd25BcnJvd0xlZnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmJhY2tzcGFjZSk9XCJvbkZpZWxkS2V5RG93bkJhY2tzcGFjZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIucHJldmVudCk9XCJvbkZpZWxkS2V5RG93bkVudGVyKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzUmlnaHRJY29uc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWljb25zIHQtaWNvbnNfcmlnaHRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx0dWktc3ZnXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzQ2xlYW5lclwiXG4gICAgICAgICAgICAgICAgICAgICNjbGVhbmVyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtdGFnX19jbGVhbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgc3JjPVwidHVpSWNvbkNsb3NlTGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInQtY2xlYW5lclwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljay5zdG9wKT1cIm9uQ2xlYW5lckNsaWNrKClcIlxuICAgICAgICAgICAgICAgID48L3R1aS1zdmc+XG4gICAgICAgICAgICAgICAgPHR1aS10b29sdGlwXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGludE9wdGlvbnMgJiYgaGludE9wdGlvbnMuY29udGVudCAmJiAhY29tcHV0ZWREaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtdGFnX190b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVJZD1cInBsYWNlaG9sZXJfdW50aWxfYWNjZXNpYmlsaXR5X2lzX2FkZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LXRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgICBbZGlyZWN0aW9uXT1cImhpbnRPcHRpb25zLmRpcmVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImhpbnRPcHRpb25zLmFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJoaW50T3B0aW9ucy5jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dEZWxheV09XCJoaW50T3B0aW9ucy5zaG93RGVsYXlcIlxuICAgICAgICAgICAgICAgICAgICBbaGlkZURlbGF5XT1cImhpbnRPcHRpb25zLmhpZGVEZWxheVwiXG4gICAgICAgICAgICAgICAgPjwvdHVpLXRvb2x0aXA+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPHR1aS1zdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJpY29uIGFzIHNyYzsgY29udGV4dDogeyRpbXBsaWNpdDogc2l6ZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJzcmNcIlxuICAgICAgICAgICAgICAgICAgICA+PC90dWktc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGUgI2Vycm9ySWNvbj5cbiAgICAgICAgICAgIDx0dWktc3ZnXG4gICAgICAgICAgICAgICAgc3JjPVwidHVpSWNvbkF0dGVudGlvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWVycm9yLWljb25cIlxuICAgICAgICAgICAgPjwvdHVpLXN2Zz5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbjwvdHVpLWhvc3RlZC1kcm9wZG93bj5cbiJdfQ==