@ultraviolet/ui 3.0.0-beta.2 → 3.0.0-beta.20

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 (501) hide show
  1. package/README.md +23 -11
  2. package/dist/components/ActionBar/index.cjs +5 -30
  3. package/dist/components/ActionBar/index.js +5 -28
  4. package/dist/components/ActionBar/styles.css.cjs +10 -0
  5. package/dist/components/ActionBar/styles.css.d.ts +3 -0
  6. package/dist/components/ActionBar/styles.css.js +10 -0
  7. package/dist/components/Alert/index.cjs +8 -76
  8. package/dist/components/Alert/index.d.ts +1 -2
  9. package/dist/components/Alert/index.js +8 -74
  10. package/dist/components/Alert/styles.css.cjs +14 -0
  11. package/dist/components/Alert/styles.css.d.ts +35 -0
  12. package/dist/components/Alert/styles.css.js +14 -0
  13. package/dist/components/Alert/type.d.ts +2 -0
  14. package/dist/components/Avatar/constants.cjs +0 -9
  15. package/dist/components/Avatar/constants.js +0 -9
  16. package/dist/components/Avatar/index.cjs +42 -117
  17. package/dist/components/Avatar/index.js +43 -116
  18. package/dist/components/Avatar/styles.css.cjs +17 -0
  19. package/dist/components/Avatar/styles.css.d.ts +128 -0
  20. package/dist/components/Avatar/styles.css.js +17 -0
  21. package/dist/components/Avatar/variables.css.cjs +8 -0
  22. package/dist/components/Avatar/variables.css.d.ts +3 -0
  23. package/dist/components/Avatar/variables.css.js +8 -0
  24. package/dist/components/Badge/constant.cjs +8 -0
  25. package/dist/components/Badge/constant.d.ts +14 -0
  26. package/dist/components/Badge/constant.js +8 -0
  27. package/dist/components/Badge/index.cjs +10 -88
  28. package/dist/components/Badge/index.d.ts +2 -20
  29. package/dist/components/Badge/index.js +8 -84
  30. package/dist/components/Badge/styles.css.cjs +6 -0
  31. package/dist/components/Badge/styles.css.d.ts +43 -0
  32. package/dist/components/Badge/styles.css.js +6 -0
  33. package/dist/components/Banner/index.cjs +12 -69
  34. package/dist/components/Banner/index.d.ts +3 -5
  35. package/dist/components/Banner/index.js +8 -63
  36. package/dist/components/Banner/styles.css.cjs +10 -0
  37. package/dist/components/Banner/styles.css.d.ts +18 -0
  38. package/dist/components/Banner/styles.css.js +10 -0
  39. package/dist/components/BarChart/Tooltip.cjs +6 -37
  40. package/dist/components/BarChart/Tooltip.js +6 -35
  41. package/dist/components/BarChart/index.cjs +4 -4
  42. package/dist/components/BarChart/index.js +1 -1
  43. package/dist/components/BarChart/styles.css.cjs +9 -0
  44. package/dist/components/BarChart/styles.css.d.ts +3 -0
  45. package/dist/components/BarChart/styles.css.js +9 -0
  46. package/dist/components/BarStack/index.cjs +7 -96
  47. package/dist/components/BarStack/index.d.ts +2 -1
  48. package/dist/components/BarStack/index.js +7 -94
  49. package/dist/components/BarStack/styles.css.cjs +11 -0
  50. package/dist/components/BarStack/styles.css.d.ts +4 -0
  51. package/dist/components/BarStack/styles.css.js +11 -0
  52. package/dist/components/Breadcrumbs/components/Item.cjs +25 -42
  53. package/dist/components/Breadcrumbs/components/Item.d.ts +3 -2
  54. package/dist/components/Breadcrumbs/components/Item.js +25 -40
  55. package/dist/components/Breadcrumbs/components/styles.css.cjs +16 -0
  56. package/dist/components/Breadcrumbs/components/styles.css.d.ts +12 -0
  57. package/dist/components/Breadcrumbs/components/styles.css.js +16 -0
  58. package/dist/components/Breadcrumbs/index.cjs +2 -19
  59. package/dist/components/Breadcrumbs/index.js +2 -17
  60. package/dist/components/Breadcrumbs/styles.css.cjs +6 -0
  61. package/dist/components/Breadcrumbs/styles.css.d.ts +1 -0
  62. package/dist/components/Breadcrumbs/styles.css.js +6 -0
  63. package/dist/components/Bullet/constants.d.ts +10 -0
  64. package/dist/components/Bullet/index.cjs +9 -75
  65. package/dist/components/Bullet/index.d.ts +5 -14
  66. package/dist/components/Bullet/index.js +10 -74
  67. package/dist/components/Bullet/styles.css.cjs +6 -0
  68. package/dist/components/Bullet/styles.css.d.ts +23 -0
  69. package/dist/components/Bullet/styles.css.js +6 -0
  70. package/dist/components/Button/constants.cjs +0 -1
  71. package/dist/components/Button/constants.js +0 -1
  72. package/dist/components/Button/index.cjs +7 -6
  73. package/dist/components/Button/index.d.ts +4 -3
  74. package/dist/components/Button/index.js +6 -5
  75. package/dist/components/Button/styles.css.cjs +0 -2
  76. package/dist/components/Button/styles.css.d.ts +4 -4
  77. package/dist/components/Button/styles.css.js +0 -2
  78. package/dist/components/Card/index.cjs +9 -43
  79. package/dist/components/Card/index.js +4 -36
  80. package/dist/components/Card/styles.css.cjs +7 -0
  81. package/dist/components/Card/styles.css.d.ts +2 -0
  82. package/dist/components/Card/styles.css.js +7 -0
  83. package/dist/components/Checkbox/index.cjs +9 -207
  84. package/dist/components/Checkbox/index.d.ts +0 -20
  85. package/dist/components/Checkbox/index.js +9 -205
  86. package/dist/components/Checkbox/styles.css.cjs +17 -0
  87. package/dist/components/Checkbox/styles.css.d.ts +7 -0
  88. package/dist/components/Checkbox/styles.css.js +17 -0
  89. package/dist/components/CheckboxGroup/index.cjs +3 -34
  90. package/dist/components/CheckboxGroup/index.js +3 -32
  91. package/dist/components/CheckboxGroup/styles.css.cjs +7 -0
  92. package/dist/components/CheckboxGroup/styles.css.d.ts +2 -0
  93. package/dist/components/CheckboxGroup/styles.css.js +7 -0
  94. package/dist/components/Chip/ChipContext.d.ts +1 -1
  95. package/dist/components/Chip/ChipIcon.cjs +10 -21
  96. package/dist/components/Chip/ChipIcon.js +10 -19
  97. package/dist/components/Chip/index.cjs +2 -56
  98. package/dist/components/Chip/index.d.ts +1 -1
  99. package/dist/components/Chip/index.js +2 -54
  100. package/dist/components/Chip/styles.css.cjs +7 -0
  101. package/dist/components/Chip/styles.css.d.ts +2 -0
  102. package/dist/components/Chip/styles.css.js +7 -0
  103. package/dist/components/DateInput/components/CalendarContent.cjs +2 -20
  104. package/dist/components/DateInput/components/CalendarContent.js +2 -18
  105. package/dist/components/DateInput/components/CalendarDaily.cjs +3 -43
  106. package/dist/components/DateInput/components/CalendarDaily.js +3 -41
  107. package/dist/components/DateInput/components/CalendarMonthly.cjs +2 -24
  108. package/dist/components/DateInput/components/CalendarMonthly.js +2 -22
  109. package/dist/components/DateInput/components/Popup.cjs +2 -15
  110. package/dist/components/DateInput/components/Popup.js +2 -13
  111. package/dist/components/DateInput/components/styles.css.cjs +12 -0
  112. package/dist/components/DateInput/components/styles.css.d.ts +4 -0
  113. package/dist/components/DateInput/components/styles.css.js +12 -0
  114. package/dist/components/DateInput/helpers.cjs +0 -8
  115. package/dist/components/DateInput/helpers.d.ts +0 -2
  116. package/dist/components/DateInput/helpers.js +1 -9
  117. package/dist/components/DateInput/index.cjs +10 -30
  118. package/dist/components/DateInput/index.js +11 -29
  119. package/dist/components/DateInput/styles.css.cjs +8 -0
  120. package/dist/components/DateInput/styles.css.d.ts +8 -0
  121. package/dist/components/DateInput/styles.css.js +8 -0
  122. package/dist/components/Dialog/constants.d.ts +1 -1
  123. package/dist/components/Dialog/index.cjs +2 -2
  124. package/dist/components/Dialog/index.d.ts +4 -3
  125. package/dist/components/Dialog/index.js +2 -2
  126. package/dist/components/Drawer/index.cjs +18 -13
  127. package/dist/components/Drawer/index.js +18 -13
  128. package/dist/components/EmptyState/index.cjs +11 -74
  129. package/dist/components/EmptyState/index.d.ts +1 -6
  130. package/dist/components/EmptyState/index.js +8 -69
  131. package/dist/components/EmptyState/styles.css.cjs +10 -0
  132. package/dist/components/EmptyState/styles.css.d.ts +29 -0
  133. package/dist/components/EmptyState/styles.css.js +10 -0
  134. package/dist/components/Expandable/index.cjs +5 -17
  135. package/dist/components/Expandable/index.d.ts +0 -6
  136. package/dist/components/Expandable/index.js +6 -16
  137. package/dist/components/Expandable/styles.css.cjs +7 -0
  138. package/dist/components/Expandable/styles.css.d.ts +2 -0
  139. package/dist/components/Expandable/styles.css.js +7 -0
  140. package/dist/components/ExpandableCard/index.cjs +17 -100
  141. package/dist/components/ExpandableCard/index.d.ts +3 -1
  142. package/dist/components/ExpandableCard/index.js +12 -93
  143. package/dist/components/ExpandableCard/styles.css.cjs +17 -0
  144. package/dist/components/ExpandableCard/styles.css.d.ts +7 -0
  145. package/dist/components/ExpandableCard/styles.css.js +17 -0
  146. package/dist/components/GlobalAlert/GlobalAlertLink.cjs +2 -2
  147. package/dist/components/GlobalAlert/GlobalAlertLink.js +1 -1
  148. package/dist/components/GlobalAlert/index.cjs +3 -30
  149. package/dist/components/GlobalAlert/index.js +3 -28
  150. package/dist/components/GlobalAlert/styles.css.cjs +7 -0
  151. package/dist/components/GlobalAlert/styles.css.d.ts +2 -0
  152. package/dist/components/GlobalAlert/styles.css.js +7 -0
  153. package/dist/components/Key/index.cjs +85 -0
  154. package/dist/components/Key/index.d.ts +23 -0
  155. package/dist/components/Key/index.js +83 -0
  156. package/dist/components/Label/index.cjs +20 -24
  157. package/dist/components/Label/index.js +20 -22
  158. package/dist/components/Label/styles.css.cjs +5 -0
  159. package/dist/components/Label/styles.css.d.ts +1 -0
  160. package/dist/components/Label/styles.css.js +5 -0
  161. package/dist/components/LineChart/CustomLegend.cjs +9 -61
  162. package/dist/components/LineChart/CustomLegend.js +9 -59
  163. package/dist/components/LineChart/Tooltip.cjs +6 -35
  164. package/dist/components/LineChart/Tooltip.js +6 -33
  165. package/dist/components/LineChart/index.cjs +5 -5
  166. package/dist/components/LineChart/index.js +1 -1
  167. package/dist/components/LineChart/styles.css.cjs +17 -0
  168. package/dist/components/LineChart/styles.css.d.ts +7 -0
  169. package/dist/components/LineChart/styles.css.js +17 -0
  170. package/dist/components/Link/constants.d.ts +6 -0
  171. package/dist/components/Link/index.cjs +11 -114
  172. package/dist/components/Link/index.d.ts +1 -6
  173. package/dist/components/Link/index.js +12 -113
  174. package/dist/components/Link/styles.css.cjs +14 -0
  175. package/dist/components/Link/styles.css.d.ts +78 -0
  176. package/dist/components/Link/styles.css.js +14 -0
  177. package/dist/components/List/index.cjs +2 -2
  178. package/dist/components/List/index.d.ts +1 -1
  179. package/dist/components/List/index.js +2 -2
  180. package/dist/components/Loader/index.cjs +4 -36
  181. package/dist/components/Loader/index.d.ts +0 -4
  182. package/dist/components/Loader/index.js +5 -35
  183. package/dist/components/Loader/styles.css.cjs +7 -0
  184. package/dist/components/Loader/styles.css.d.ts +2 -0
  185. package/dist/components/Loader/styles.css.js +7 -0
  186. package/dist/components/Menu/index.d.ts +1 -1
  187. package/dist/components/Meter/index.cjs +6 -37
  188. package/dist/components/Meter/index.js +6 -35
  189. package/dist/components/Meter/styles.css.cjs +11 -0
  190. package/dist/components/Meter/styles.css.d.ts +4 -0
  191. package/dist/components/Meter/styles.css.js +11 -0
  192. package/dist/components/Notice/index.cjs +2 -12
  193. package/dist/components/Notice/index.js +2 -10
  194. package/dist/components/Notice/styles.css.cjs +5 -0
  195. package/dist/components/Notice/styles.css.d.ts +1 -0
  196. package/dist/components/Notice/styles.css.js +5 -0
  197. package/dist/components/NumberInput/constant.d.ts +5 -0
  198. package/dist/components/NumberInput/index.cjs +43 -157
  199. package/dist/components/NumberInput/index.d.ts +2 -6
  200. package/dist/components/NumberInput/index.js +42 -154
  201. package/dist/components/NumberInput/styles.css.cjs +14 -0
  202. package/dist/components/NumberInput/styles.css.d.ts +109 -0
  203. package/dist/components/NumberInput/styles.css.js +14 -0
  204. package/dist/components/PasswordCheck/index.cjs +2 -12
  205. package/dist/components/PasswordCheck/index.js +2 -10
  206. package/dist/components/PasswordCheck/styles.css.cjs +5 -0
  207. package/dist/components/PasswordCheck/styles.css.d.ts +1 -0
  208. package/dist/components/PasswordCheck/styles.css.js +5 -0
  209. package/dist/components/PieChart/Legends.cjs +20 -124
  210. package/dist/components/PieChart/Legends.js +20 -122
  211. package/dist/components/PieChart/Tooltip.cjs +4 -35
  212. package/dist/components/PieChart/Tooltip.js +4 -33
  213. package/dist/components/PieChart/index.cjs +13 -36
  214. package/dist/components/PieChart/index.js +8 -29
  215. package/dist/components/PieChart/styles.css.cjs +36 -0
  216. package/dist/components/PieChart/styles.css.d.ts +49 -0
  217. package/dist/components/PieChart/styles.css.js +36 -0
  218. package/dist/components/Popover/constant.d.ts +5 -0
  219. package/dist/components/Popover/index.cjs +6 -41
  220. package/dist/components/Popover/index.d.ts +1 -5
  221. package/dist/components/Popover/index.js +6 -39
  222. package/dist/components/Popover/styles.css.cjs +8 -0
  223. package/dist/components/Popover/styles.css.d.ts +35 -0
  224. package/dist/components/Popover/styles.css.js +8 -0
  225. package/dist/components/Popup/helpers.cjs +8 -4
  226. package/dist/components/Popup/helpers.js +8 -4
  227. package/dist/components/Popup/index.cjs +25 -62
  228. package/dist/components/Popup/index.d.ts +9 -4
  229. package/dist/components/Popup/index.js +27 -62
  230. package/dist/components/Popup/styles.css.cjs +13 -0
  231. package/dist/components/Popup/styles.css.d.ts +45 -0
  232. package/dist/components/Popup/styles.css.js +13 -0
  233. package/dist/components/Popup/variables.css.cjs +18 -0
  234. package/dist/components/Popup/variables.css.d.ts +9 -0
  235. package/dist/components/Popup/variables.css.js +18 -0
  236. package/dist/components/ProgressBar/constants.d.ts +1 -0
  237. package/dist/components/ProgressBar/index.cjs +7 -77
  238. package/dist/components/ProgressBar/index.d.ts +2 -2
  239. package/dist/components/ProgressBar/index.js +7 -75
  240. package/dist/components/ProgressBar/styles.css.cjs +12 -0
  241. package/dist/components/ProgressBar/styles.css.d.ts +4 -0
  242. package/dist/components/ProgressBar/styles.css.js +12 -0
  243. package/dist/components/{Breadcrumbs/constants.cjs → ProgressBar/variables.css.cjs} +2 -2
  244. package/dist/components/ProgressBar/variables.css.d.ts +1 -0
  245. package/dist/components/ProgressBar/variables.css.js +4 -0
  246. package/dist/components/Radio/index.cjs +30 -136
  247. package/dist/components/Radio/index.d.ts +0 -32
  248. package/dist/components/Radio/index.js +31 -135
  249. package/dist/components/Radio/styles.css.cjs +21 -0
  250. package/dist/components/Radio/styles.css.d.ts +9 -0
  251. package/dist/components/Radio/styles.css.js +21 -0
  252. package/dist/components/RadioGroup/index.cjs +2 -20
  253. package/dist/components/RadioGroup/index.js +2 -18
  254. package/dist/components/RadioGroup/styles.css.cjs +5 -0
  255. package/dist/components/RadioGroup/styles.css.d.ts +1 -0
  256. package/dist/components/RadioGroup/styles.css.js +5 -0
  257. package/dist/components/Row/index.cjs +28 -38
  258. package/dist/components/Row/index.d.ts +8 -10
  259. package/dist/components/Row/index.js +29 -37
  260. package/dist/components/Row/styles.css.cjs +17 -0
  261. package/dist/components/Row/styles.css.d.ts +460 -0
  262. package/dist/components/Row/styles.css.js +17 -0
  263. package/dist/components/Row/variables.css.cjs +7 -0
  264. package/dist/components/Row/variables.css.d.ts +4 -0
  265. package/dist/components/Row/variables.css.js +7 -0
  266. package/dist/components/SearchInput/KeyGroup.cjs +3 -21
  267. package/dist/components/SearchInput/KeyGroup.d.ts +1 -1
  268. package/dist/components/SearchInput/KeyGroup.js +3 -19
  269. package/dist/components/SearchInput/index.cjs +2 -38
  270. package/dist/components/SearchInput/index.js +3 -37
  271. package/dist/components/SearchInput/styles.css.cjs +10 -0
  272. package/dist/components/SearchInput/styles.css.d.ts +3 -0
  273. package/dist/components/SearchInput/styles.css.js +10 -0
  274. package/dist/components/SelectInput/components/Dropdown.cjs +341 -0
  275. package/dist/components/SelectInput/{Dropdown.d.ts → components/Dropdown.d.ts} +1 -1
  276. package/dist/components/SelectInput/components/Dropdown.js +341 -0
  277. package/dist/components/SelectInput/components/DropdownOption.cjs +47 -0
  278. package/dist/components/SelectInput/{DropdownOption.d.ts → components/DropdownOption.d.ts} +1 -1
  279. package/dist/components/SelectInput/components/DropdownOption.js +47 -0
  280. package/dist/components/SelectInput/components/SearchBarDropdown.cjs +117 -0
  281. package/dist/components/SelectInput/{SearchBarDropdown.d.ts → components/SearchBarDropdown.d.ts} +1 -1
  282. package/dist/components/SelectInput/components/SearchBarDropdown.js +117 -0
  283. package/dist/components/SelectInput/components/SelectBar.cjs +237 -0
  284. package/dist/components/SelectInput/{SelectBar.d.ts → components/SelectBar.d.ts} +1 -12
  285. package/dist/components/SelectInput/components/SelectBar.js +237 -0
  286. package/dist/components/SelectInput/components/dropdown.css.cjs +34 -0
  287. package/dist/components/SelectInput/components/dropdown.css.d.ts +35 -0
  288. package/dist/components/SelectInput/components/dropdown.css.js +34 -0
  289. package/dist/components/SelectInput/components/selectBar.css.cjs +24 -0
  290. package/dist/components/SelectInput/components/selectBar.css.d.ts +108 -0
  291. package/dist/components/SelectInput/components/selectBar.css.js +24 -0
  292. package/dist/components/SelectInput/index.cjs +8 -33
  293. package/dist/components/SelectInput/index.d.ts +2 -2
  294. package/dist/components/SelectInput/index.js +8 -31
  295. package/dist/components/SelectInput/styles.css.cjs +7 -0
  296. package/dist/components/SelectInput/styles.css.d.ts +2 -0
  297. package/dist/components/SelectInput/styles.css.js +7 -0
  298. package/dist/components/SelectableCard/index.cjs +21 -182
  299. package/dist/components/SelectableCard/index.js +22 -181
  300. package/dist/components/SelectableCard/styles.css.cjs +21 -0
  301. package/dist/components/SelectableCard/styles.css.d.ts +26 -0
  302. package/dist/components/SelectableCard/styles.css.js +21 -0
  303. package/dist/components/SelectableCard/variables.css.cjs +8 -0
  304. package/dist/components/SelectableCard/variables.css.d.ts +3 -0
  305. package/dist/components/SelectableCard/variables.css.js +8 -0
  306. package/dist/components/SelectableCardOptionGroup/components/Option.cjs +11 -11
  307. package/dist/components/SelectableCardOptionGroup/components/Option.js +9 -9
  308. package/dist/components/Separator/index.cjs +26 -39
  309. package/dist/components/Separator/index.d.ts +2 -5
  310. package/dist/components/Separator/index.js +26 -37
  311. package/dist/components/Separator/styles.css.cjs +10 -0
  312. package/dist/components/Separator/styles.css.d.ts +125 -0
  313. package/dist/components/Separator/styles.css.js +10 -0
  314. package/dist/components/Skeleton/Block.cjs +3 -27
  315. package/dist/components/Skeleton/Block.js +3 -25
  316. package/dist/components/Skeleton/Blocks.cjs +6 -27
  317. package/dist/components/Skeleton/Blocks.js +6 -25
  318. package/dist/components/Skeleton/BoxWithIcon.cjs +6 -25
  319. package/dist/components/Skeleton/BoxWithIcon.js +6 -23
  320. package/dist/components/Skeleton/Donut.cjs +4 -45
  321. package/dist/components/Skeleton/Donut.js +4 -43
  322. package/dist/components/Skeleton/IconSkeleton.cjs +3 -21
  323. package/dist/components/Skeleton/IconSkeleton.d.ts +1 -4
  324. package/dist/components/Skeleton/IconSkeleton.js +3 -19
  325. package/dist/components/Skeleton/Line.cjs +6 -15
  326. package/dist/components/Skeleton/Line.d.ts +1 -4
  327. package/dist/components/Skeleton/Line.js +6 -13
  328. package/dist/components/Skeleton/List.cjs +4 -42
  329. package/dist/components/Skeleton/List.js +4 -40
  330. package/dist/components/Skeleton/Slider.cjs +6 -35
  331. package/dist/components/Skeleton/Slider.js +6 -33
  332. package/dist/components/Skeleton/Square.cjs +3 -11
  333. package/dist/components/Skeleton/Square.d.ts +1 -4
  334. package/dist/components/Skeleton/Square.js +3 -9
  335. package/dist/components/Skeleton/index.cjs +5 -47
  336. package/dist/components/Skeleton/index.d.ts +5 -9
  337. package/dist/components/Skeleton/index.js +5 -45
  338. package/dist/components/Skeleton/styles.css.cjs +7 -0
  339. package/dist/components/Skeleton/styles.css.d.ts +2 -0
  340. package/dist/components/Skeleton/styles.css.js +7 -0
  341. package/dist/components/Skeleton/stylesVariants.css.cjs +47 -0
  342. package/dist/components/Skeleton/stylesVariants.css.d.ts +22 -0
  343. package/dist/components/Skeleton/stylesVariants.css.js +47 -0
  344. package/dist/components/Slider/components/DoubleSlider.cjs +20 -20
  345. package/dist/components/Slider/components/DoubleSlider.js +6 -6
  346. package/dist/components/Slider/components/SingleSlider.cjs +5 -5
  347. package/dist/components/Slider/components/SingleSlider.js +4 -4
  348. package/dist/components/Slider/styles.d.ts +30 -13
  349. package/dist/components/Snippet/index.cjs +19 -18
  350. package/dist/components/Snippet/index.js +16 -15
  351. package/dist/components/Stack/index.cjs +69 -44
  352. package/dist/components/Stack/index.d.ts +17 -19
  353. package/dist/components/Stack/index.js +69 -42
  354. package/dist/components/Stack/styles.css.cjs +19 -0
  355. package/dist/components/Stack/styles.css.d.ts +470 -0
  356. package/dist/components/Stack/styles.css.js +19 -0
  357. package/dist/components/Stack/types.d.ts +8 -0
  358. package/dist/components/Stack/variables.css.cjs +11 -0
  359. package/dist/components/Stack/variables.css.d.ts +4 -0
  360. package/dist/components/Stack/variables.css.js +11 -0
  361. package/dist/components/Status/constant.d.ts +1 -0
  362. package/dist/components/Status/index.cjs +10 -66
  363. package/dist/components/Status/index.d.ts +2 -20
  364. package/dist/components/Status/index.js +10 -64
  365. package/dist/components/Status/styles.css.cjs +11 -0
  366. package/dist/components/Status/styles.css.d.ts +23 -0
  367. package/dist/components/Status/styles.css.js +11 -0
  368. package/dist/components/StepList/index.cjs +10 -42
  369. package/dist/components/StepList/index.d.ts +2 -1
  370. package/dist/components/StepList/index.js +10 -40
  371. package/dist/components/StepList/styles.css.cjs +10 -0
  372. package/dist/components/StepList/styles.css.d.ts +23 -0
  373. package/dist/components/StepList/styles.css.js +10 -0
  374. package/dist/components/SwitchButton/FocusOverlay.cjs +2 -18
  375. package/dist/components/SwitchButton/FocusOverlay.js +2 -16
  376. package/dist/components/SwitchButton/Option.cjs +2 -45
  377. package/dist/components/SwitchButton/Option.js +2 -43
  378. package/dist/components/SwitchButton/index.cjs +2 -27
  379. package/dist/components/SwitchButton/index.js +2 -25
  380. package/dist/components/SwitchButton/styles.css.cjs +9 -0
  381. package/dist/components/SwitchButton/styles.css.d.ts +7 -0
  382. package/dist/components/SwitchButton/styles.css.js +9 -0
  383. package/dist/components/Table/HeaderRow.cjs +2 -2
  384. package/dist/components/Table/HeaderRow.js +1 -1
  385. package/dist/components/Table/index.cjs +4 -4
  386. package/dist/components/Table/index.d.ts +1 -1
  387. package/dist/components/Table/index.js +3 -3
  388. package/dist/components/Tabs/TabMenuItem.d.ts +1 -1
  389. package/dist/components/Tabs/index.d.ts +2 -2
  390. package/dist/components/Tag/index.cjs +17 -104
  391. package/dist/components/Tag/index.d.ts +5 -4
  392. package/dist/components/Tag/index.js +13 -99
  393. package/dist/components/Tag/styles.css.cjs +10 -0
  394. package/dist/components/Tag/styles.css.d.ts +34 -0
  395. package/dist/components/Tag/styles.css.js +10 -0
  396. package/dist/components/TagInput/index.cjs +11 -88
  397. package/dist/components/TagInput/index.d.ts +1 -5
  398. package/dist/components/TagInput/index.js +11 -86
  399. package/dist/components/TagInput/styles.css.cjs +12 -0
  400. package/dist/components/TagInput/styles.css.d.ts +21 -0
  401. package/dist/components/TagInput/styles.css.js +12 -0
  402. package/dist/components/TagList/constant.cjs +5 -0
  403. package/dist/components/TagList/constant.d.ts +1 -0
  404. package/dist/components/TagList/constant.js +5 -0
  405. package/dist/components/TagList/index.cjs +21 -66
  406. package/dist/components/TagList/index.js +19 -62
  407. package/dist/components/TagList/styles.css.cjs +14 -0
  408. package/dist/components/TagList/styles.css.d.ts +11 -0
  409. package/dist/components/TagList/styles.css.js +14 -0
  410. package/dist/components/Text/constant.d.ts +6 -0
  411. package/dist/components/Text/index.cjs +22 -60
  412. package/dist/components/Text/index.d.ts +3 -7
  413. package/dist/components/Text/index.js +22 -58
  414. package/dist/components/Text/style.css.cjs +7 -0
  415. package/dist/components/Text/style.css.d.ts +52 -0
  416. package/dist/components/Text/style.css.js +7 -0
  417. package/dist/components/Text/variables.css.cjs +6 -0
  418. package/dist/components/Text/variables.css.d.ts +2 -0
  419. package/dist/components/Text/variables.css.js +6 -0
  420. package/dist/components/TextArea/index.cjs +34 -99
  421. package/dist/components/TextArea/index.js +34 -97
  422. package/dist/components/TextArea/styles.css.cjs +12 -0
  423. package/dist/components/TextArea/styles.css.d.ts +15 -0
  424. package/dist/components/TextArea/styles.css.js +12 -0
  425. package/dist/components/TextInput/constants.d.ts +5 -0
  426. package/dist/components/TextInput/index.cjs +8 -113
  427. package/dist/components/TextInput/index.d.ts +3 -55
  428. package/dist/components/TextInput/index.js +8 -111
  429. package/dist/components/TextInput/styles.css.cjs +17 -0
  430. package/dist/components/TextInput/styles.css.d.ts +8 -0
  431. package/dist/components/TextInput/styles.css.js +17 -0
  432. package/dist/components/TimeInput/constants.cjs +0 -6
  433. package/dist/components/TimeInput/constants.js +0 -6
  434. package/dist/components/TimeInput/index.cjs +16 -96
  435. package/dist/components/TimeInput/index.d.ts +0 -7
  436. package/dist/components/TimeInput/index.js +13 -91
  437. package/dist/components/TimeInput/styles.css.cjs +10 -0
  438. package/dist/components/TimeInput/styles.css.d.ts +82 -0
  439. package/dist/components/TimeInput/styles.css.js +10 -0
  440. package/dist/components/Toggle/index.cjs +10 -108
  441. package/dist/components/Toggle/index.d.ts +0 -18
  442. package/dist/components/Toggle/index.js +13 -109
  443. package/dist/components/Toggle/styles.css.cjs +10 -0
  444. package/dist/components/Toggle/styles.css.d.ts +108 -0
  445. package/dist/components/Toggle/styles.css.js +10 -0
  446. package/dist/components/ToggleGroup/index.cjs +2 -20
  447. package/dist/components/ToggleGroup/index.js +2 -18
  448. package/dist/components/ToggleGroup/styles.css.cjs +5 -0
  449. package/dist/components/ToggleGroup/styles.css.d.ts +1 -0
  450. package/dist/components/ToggleGroup/styles.css.js +5 -0
  451. package/dist/components/Tooltip/index.cjs +2 -20
  452. package/dist/components/Tooltip/index.d.ts +1 -1
  453. package/dist/components/Tooltip/index.js +2 -18
  454. package/dist/components/Tooltip/styles.css.cjs +5 -0
  455. package/dist/components/Tooltip/styles.css.d.ts +1 -0
  456. package/dist/components/Tooltip/styles.css.js +5 -0
  457. package/dist/components/UnitInput/index.cjs +28 -122
  458. package/dist/components/UnitInput/index.js +24 -116
  459. package/dist/components/UnitInput/styles.css.cjs +17 -0
  460. package/dist/components/UnitInput/styles.css.d.ts +7 -0
  461. package/dist/components/UnitInput/styles.css.js +17 -0
  462. package/dist/components/VerificationCode/constants.d.ts +12 -0
  463. package/dist/components/VerificationCode/index.cjs +5 -88
  464. package/dist/components/VerificationCode/index.d.ts +1 -1
  465. package/dist/components/VerificationCode/index.js +5 -86
  466. package/dist/components/VerificationCode/styles.css.cjs +9 -0
  467. package/dist/components/VerificationCode/styles.css.d.ts +3 -0
  468. package/dist/components/VerificationCode/styles.css.js +9 -0
  469. package/dist/components/index.d.ts +1 -0
  470. package/dist/index.cjs +110 -103
  471. package/dist/index.js +3 -2
  472. package/dist/theme/index.cjs +8 -4
  473. package/dist/theme/index.d.ts +2 -3
  474. package/dist/theme/index.js +4 -6
  475. package/dist/ui.css +1 -1
  476. package/dist/utils/animationVanillaExtract.css.d.ts +2 -0
  477. package/dist/utils/index.d.ts +1 -0
  478. package/package.json +8 -6
  479. package/dist/components/Breadcrumbs/constants.js +0 -4
  480. package/dist/components/Popup/animations.cjs +0 -25
  481. package/dist/components/Popup/animations.d.ts +0 -21
  482. package/dist/components/Popup/animations.js +0 -25
  483. package/dist/components/SearchInput/Key.cjs +0 -55
  484. package/dist/components/SearchInput/Key.d.ts +0 -21
  485. package/dist/components/SearchInput/Key.js +0 -53
  486. package/dist/components/SelectInput/Dropdown.cjs +0 -488
  487. package/dist/components/SelectInput/Dropdown.js +0 -486
  488. package/dist/components/SelectInput/DropdownOption.cjs +0 -91
  489. package/dist/components/SelectInput/DropdownOption.js +0 -89
  490. package/dist/components/SelectInput/SearchBarDropdown.cjs +0 -133
  491. package/dist/components/SelectInput/SearchBarDropdown.js +0 -131
  492. package/dist/components/SelectInput/SelectBar.cjs +0 -373
  493. package/dist/components/SelectInput/SelectBar.js +0 -371
  494. package/dist/theme/ThemeProvider.cjs +0 -43
  495. package/dist/theme/ThemeProvider.js +0 -43
  496. package/dist/themes/dist/vanilla/themes.css.js.vanilla.css.cjs +0 -1
  497. package/dist/themes/dist/vanilla/themes.css.js.vanilla.css.js +0 -1
  498. package/dist/themes/dist/vanilla/themes.css.ts.vanilla.css.js.vanilla.css.cjs +0 -1
  499. package/dist/themes/dist/vanilla/themes.css.ts.vanilla.css.js.vanilla.css.js +0 -1
  500. package/dist/utils/capitalize.cjs +0 -3
  501. package/dist/utils/capitalize.js +0 -4
@@ -2,18 +2,13 @@
2
2
  "use strict";
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
4
  const jsxRuntime = require("@emotion/react/jsx-runtime");
5
- const _styled = require("@emotion/styled/base");
6
- const react$1 = require("@emotion/react");
5
+ const dynamic = require("@vanilla-extract/dynamic");
7
6
  const react = require("react");
8
7
  const reactDom = require("react-dom");
9
8
  const isClientSide = require("../../helpers/isClientSide.cjs");
10
- const animations = require("./animations.cjs");
11
9
  const helpers = require("./helpers.cjs");
12
- const _interopDefaultCompat = (e) => e && typeof e === "object" && "default" in e ? e : { default: e };
13
- const _styled__default = /* @__PURE__ */ _interopDefaultCompat(_styled);
14
- function _EMOTION_STRINGIFIED_CSS_ERROR__() {
15
- return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).";
16
- }
10
+ const styles_css = require("./styles.css.cjs");
11
+ const variables_css = require("./variables.css.cjs");
17
12
  const DEFAULT_ANIMATION_DURATION = 230;
18
13
  const DEFAULT_DEBOUNCE_DURATION = 200;
19
14
  const noop = () => {
@@ -21,57 +16,6 @@ const noop = () => {
21
16
  const stopClickPropagation = (event) => {
22
17
  event.nativeEvent.stopImmediatePropagation();
23
18
  };
24
- const StyledPopup = /* @__PURE__ */ _styled__default.default("div", process.env.NODE_ENV === "production" ? {
25
- shouldForwardProp: (prop) => !["maxWidth", "positions", "reverseAnimation", "maxHeight", "animationDuration", "isDialog"].includes(prop),
26
- target: "e4h1g861"
27
- } : {
28
- shouldForwardProp: (prop) => !["maxWidth", "positions", "reverseAnimation", "maxHeight", "animationDuration", "isDialog"].includes(prop),
29
- target: "e4h1g861",
30
- label: "StyledPopup"
31
- })("background:", ({
32
- theme
33
- }) => theme.colors.neutral.backgroundStronger, ";color:", ({
34
- theme
35
- }) => theme.colors.neutral.textStronger, ";border-radius:", ({
36
- theme
37
- }) => theme.radii.default, ";padding:", ({
38
- theme
39
- }) => `${theme.space["0.5"]} ${theme.space["1"]}`, ";text-align:center;position:absolute;max-width:", ({
40
- maxWidth
41
- }) => typeof maxWidth === "number" ? `${maxWidth}px` : maxWidth, ";max-height:", ({
42
- maxHeight
43
- }) => typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight, ";overflow:", ({
44
- maxHeight
45
- }) => maxHeight ? "auto" : void 0, ";overflow-wrap:break-word;font-size:0.8rem;inset:0 auto auto 0;top:0;left:0;opacity:0;z-index:1;transform:", ({
46
- positions
47
- }) => positions.popupPosition, ';&[data-animated="true"]{animation:', ({
48
- positions,
49
- reverseAnimation,
50
- animationDuration
51
- }) => /* @__PURE__ */ react$1.css(animationDuration, "ms ", !reverseAnimation ? animations.animation(positions) : animations.exitAnimation(positions), " forwards;" + (process.env.NODE_ENV === "production" ? "" : ";label:StyledPopup;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1RjRFIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuaW1wb3J0IHR5cGUge1xuICBIVE1MQXR0cmlidXRlcyxcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIE1vdXNlRXZlbnRIYW5kbGVyLFxuICBSZWFjdE5vZGUsXG4gIFJlZixcbiAgUmVmT2JqZWN0LFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIGZvcndhcmRSZWYsXG4gIHN0YXJ0VHJhbnNpdGlvbixcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlSWQsXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgaXNDbGllbnRTaWRlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pc0NsaWVudFNpZGUnXG5pbXBvcnQgdHlwZSB7IFBvc2l0aW9uc1R5cGUgfSBmcm9tICcuL2FuaW1hdGlvbnMnXG5pbXBvcnQgeyBhbmltYXRpb24sIGV4aXRBbmltYXRpb24gfSBmcm9tICcuL2FuaW1hdGlvbnMnXG5pbXBvcnQgdHlwZSB7IFBvcHVwQWxpZ24sIFBvcHVwUGxhY2VtZW50IH0gZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0IHtcbiAgY29tcHV0ZVBvc2l0aW9ucyxcbiAgREVGQVVMVF9BUlJPV19XSURUSCxcbiAgREVGQVVMVF9QT1NJVElPTlMsXG59IGZyb20gJy4vaGVscGVycydcblxuY29uc3QgREVGQVVMVF9BTklNQVRJT05fRFVSQVRJT04gPSAyMzAgLy8gaW4gbXNcbmNvbnN0IERFRkFVTFRfREVCT1VOQ0VfRFVSQVRJT04gPSAyMDAgLy8gaW4gbXNcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5cbnR5cGUgU3R5bGVkUG9wdXBQcm9wcyA9IHtcbiAgbWF4V2lkdGg6IG51bWJlciB8IHN0cmluZ1xuICBwb3NpdGlvbnM6IFBvc2l0aW9uc1R5cGVcbiAgcmV2ZXJzZUFuaW1hdGlvbjogYm9vbGVhblxuICBtYXhIZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgYW5pbWF0aW9uRHVyYXRpb24/OiBudW1iZXJcbiAgaXNEaWFsb2c6IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBUaGlzIGV2ZW50IGhhbmRsZSBhbGxvdyB1cyB0byBub3QgYnViYmxlIHRoZSBldmVudCB0byBkb2N1bWVudC5ib2R5IGxpa2UgdGhpcyByZWFjdC1zZWxlY3Qgd29ya3MgZmluZVxuICovXG5jb25zdCBzdG9wQ2xpY2tQcm9wYWdhdGlvbjogTW91c2VFdmVudEhhbmRsZXIgPSBldmVudCA9PiB7XG4gIGV2ZW50Lm5hdGl2ZUV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG59XG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKCdkaXYnLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiBwcm9wID0+XG4gICAgIVtcbiAgICAgICdtYXhXaWR0aCcsXG4gICAgICAncG9zaXRpb25zJyxcbiAgICAgICdyZXZlcnNlQW5pbWF0aW9uJyxcbiAgICAgICdtYXhIZWlnaHQnLFxuICAgICAgJ2FuaW1hdGlvbkR1cmF0aW9uJyxcbiAgICAgICdpc0RpYWxvZycsXG4gICAgXS5pbmNsdWRlcyhwcm9wKSxcbn0pPFN0eWxlZFBvcHVwUHJvcHM+YFxuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdlcn07XG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHRTdHJvbmdlcn07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gYCR7dGhlbWUuc3BhY2VbJzAuNSddfSAke3RoZW1lLnNwYWNlWycxJ119YH07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXgtd2lkdGg6ICR7KHsgbWF4V2lkdGggfSkgPT5cbiAgICB0eXBlb2YgbWF4V2lkdGggPT09ICdudW1iZXInID8gYCR7bWF4V2lkdGh9cHhgIDogbWF4V2lkdGh9O1xuICBtYXgtaGVpZ2h0OiAkeyh7IG1heEhlaWdodCB9KSA9PlxuICAgIHR5cGVvZiBtYXhIZWlnaHQgPT09ICdudW1iZXInID8gYCR7bWF4SGVpZ2h0fXB4YCA6IG1heEhlaWdodH07XG4gIG92ZXJmbG93OiAkeyh7IG1heEhlaWdodCB9KSA9PiAobWF4SGVpZ2h0ID8gJ2F1dG8nIDogdW5kZWZpbmVkKX07XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBpbnNldDogMCBhdXRvIGF1dG8gMDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBvcGFjaXR5OiAwO1xuICB6LWluZGV4OiAxO1xuICB0cmFuc2Zvcm06ICR7KHsgcG9zaXRpb25zIH0pID0+IHBvc2l0aW9ucy5wb3B1cFBvc2l0aW9ufTtcblxuICAmW2RhdGEtYW5pbWF0ZWQ9XCJ0cnVlXCJdIHtcbiAgICBhbmltYXRpb246ICR7KHsgcG9zaXRpb25zLCByZXZlcnNlQW5pbWF0aW9uLCBhbmltYXRpb25EdXJhdGlvbiB9KSA9PiBjc3NgXG4gICAgICAke2FuaW1hdGlvbkR1cmF0aW9ufW1zICR7XG4gICAgICAgICFyZXZlcnNlQW5pbWF0aW9uID8gYW5pbWF0aW9uKHBvc2l0aW9ucykgOiBleGl0QW5pbWF0aW9uKHBvc2l0aW9ucylcbiAgICAgIH0gZm9yd2FyZHNcbiAgICBgfTtcbiAgfVxuXG4gICZbZGF0YS1oYXMtYXJyb3c9XCJ0cnVlXCJdIHtcbiAgICAmOjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VG9wfXB4O1xuICAgICAgbGVmdDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93TGVmdH1weDtcbiAgICAgIHRyYW5zZm9ybTogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VHJhbnNmb3JtfVxuICAgICAgICByb3RhdGUoJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLnJvdGF0ZX1kZWcpO1xuICAgICAgbWFyZ2luLWxlZnQ6IC0ke0RFRkFVTFRfQVJST1dfV0lEVEh9cHg7XG4gICAgICBib3JkZXItd2lkdGg6ICR7REVGQVVMVF9BUlJPV19XSURUSH1weDtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICBib3JkZXItY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ2VyfVxuICAgICAgICB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxuXG4gICZbZGF0YS12aXNpYmxlLWluLWRvbT1cImZhbHNlXCJdIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5gXG5cbmV4cG9ydCBjb25zdCBTdHlsZWRDaGlsZHJlbkNvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGluaGVyaXQ7XG5cblxuICAmW2RhdGEtY29udGFpbmVyLWZ1bGwtaGVpZ2h0PVwidHJ1ZVwiXSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG5cbiAgJltkYXRhLWNvbnRhaW5lci1mdWxsLXdpZHRoPVwidHJ1ZVwiXSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbmBcblxudHlwZSBQb3B1cFByb3BzID0ge1xuICAvKipcbiAgICogSWQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgaWYgbm90IHNldC4gSXQgaXMgdXNlZCBmb3IgYXNzb2NpYXRpbmcgcG9wdXAgd3JhcHBlciB3aXRoIHBvcHVwIHBvcnRhbC5cbiAgICovXG4gIGlkPzogc3RyaW5nXG4gIGNoaWxkcmVuOlxuICAgIHwgUmVhY3ROb2RlXG4gICAgfCAoKHJlbmRlclByb3BzOiB7XG4gICAgICAgIGNsYXNzTmFtZT86IHN0cmluZ1xuICAgICAgICBvbkJsdXI6ICgpID0+IHZvaWRcbiAgICAgICAgb25Gb2N1czogKCkgPT4gdm9pZFxuICAgICAgICBvblBvaW50ZXJFbnRlcjogKCkgPT4gdm9pZFxuICAgICAgICBvblBvaW50ZXJMZWF2ZTogKCkgPT4gdm9pZFxuICAgICAgICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gICAgICB9KSA9PiBSZWFjdE5vZGUpXG4gIG1heFdpZHRoPzogbnVtYmVyIHwgc3RyaW5nXG4gIC8qKlxuICAgKiBgYXV0b2AgcGxhY2VtZW50IHdpbGwgY2hhbmdlIHRoZSBwb3NpdGlvbiBvZiB0aGUgcG9wdXAgaWYgaXQgZG9lc24ndCBmaXQgaW4gdGhlIHZpZXdwb3J0LlxuICAgKi9cbiAgcGxhY2VtZW50PzogUG9wdXBQbGFjZW1lbnRcbiAgLyoqXG4gICAqIEFsaWduIHRoZSBwb3B1cCB0byB0aGUgc3RhcnQgb3IgY2VudGVyIG9mIHRoZSBjaGlsZHJlbi5cbiAgICovXG4gIGFsaWduPzogUG9wdXBBbGlnblxuICAvKipcbiAgICogQ29udGVudCBvZiB0aGUgcG9wdXAsIHByZWZlcmFibHkgdGV4dCBpbnNpZGUuXG4gICAqL1xuICB0ZXh0PzogUmVhY3ROb2RlXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogSXQgd2lsbCBhZGQgYHdpZHRoOiAxMDAlYCB0byB0aGUgcG9wdXAgY29udGFpbmVyLlxuICAgKi9cbiAgY29udGFpbmVyRnVsbFdpZHRoPzogYm9vbGVhblxuICAvKipcbiAgICogSXQgd2lsbCBhZGQgYGhlaWdodDogMTAwJWAgdG8gdGhlIHBvcHVwIGNvbnRhaW5lci5cbiAgICovXG4gIGNvbnRhaW5lckZ1bGxIZWlnaHQ/OiBib29sZWFuXG4gIC8qKlxuICAgKiBJdCB3aWxsIGZvcmNlIGRpc3BsYXkgcG9wdXAuIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB5b3UgbmVlZCB0byBhbHdheXMgZGlzcGxheSB0aGUgcG9wdXAgd2l0aG91dCBob3ZlciBuZWVkZWQuXG4gICAqL1xuICB2aXNpYmxlPzogYm9vbGVhblxuICBpbm5lclJlZj86IFJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gIHJvbGU/OiBzdHJpbmdcbiAgJ2RhdGEtdGVzdGlkJz86IHN0cmluZ1xuICBoYXNBcnJvdz86IGJvb2xlYW5cbiAgb25DbG9zZT86ICgpID0+IHZvaWRcbiAgdGFiSW5kZXg/OiBudW1iZXJcbiAgb25LZXlEb3duPzogS2V5Ym9hcmRFdmVudEhhbmRsZXJcbiAgJ2FyaWEtaGFzcG9wdXAnPzogSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+WydhcmlhLWhhc3BvcHVwJ11cbiAgaGlkZU9uQ2xpY2tPdXRzaWRlPzogYm9vbGVhblxuICAvKipcbiAgICogSWYgeW91IHNldCBkZWJvdW5jZVRpbWUgdG8gZmFsc2UsIHRoZSBwb3B1cCB3aWxsIG5vdCBkZWJvdW5jZSB0aGUgaG92ZXIgZXZlbnQgYW5kIHdpbGwgYmUgZGlzcGxheWVkIGluc3RhbnRseS5cbiAgICogSWYgc2V0IHRvIDAgaXQgd2lsbCBkaXNhYmxlIGRlYm91bmNlLlxuICAgKi9cbiAgZGVib3VuY2VEZWxheT86IG51bWJlclxuICAvKipcbiAgICogSWYgeW91IHNldCBhIG1heCBoZWlnaHQga2VlcCBpbiBtaW5kIHRoYXQgdGhlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgb3IgaXQgd2lsbCBub3Qgd29yayBwcm9wZXJseSBvbiBzb21lIGJyb3dzZXJzLlxuICAgKi9cbiAgbWF4SGVpZ2h0Pzogc3RyaW5nIHwgbnVtYmVyXG4gIC8qKlxuICAgKiBXaWxsIHJlbW92ZSB0aGUgYW5pbWF0aW9uIG9uIHRoZSBwb3B1cCBpZiBzZXQgdG8gZmFsc2UuXG4gICAqL1xuICBkaXNhYmxlQW5pbWF0aW9uPzogYm9vbGVhblxuICAvKipcbiAgICogQnkgZGVmYXVsdCwgdGhlIHBvcnRhbCB0YXJnZXQgaXMgY2hpbGRyZW4gY29udGFpbmVyIG9yIGRvY3VtZW50LmJvZHkgaWYgY2hpbGRyZW4gaXMgYSBmdW5jdGlvbi4gWW91IGNhbiBvdmVycmlkZSB0aGlzXG4gICAqIGJlaGF2aW9yIGJ5IHNldHRpbmcgYSBwb3J0YWxUYXJnZXQgcHJvcC5cbiAgICovXG4gIHBvcnRhbFRhcmdldD86IEhUTUxFbGVtZW50XG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IHRoaXMgdG8gdHJ1ZSwgdGhlIHBvcHVwIHdpbGwgYmUgcmVuZGVyZWQgaW4gdGhlIERPTSBvbmx5IHdoZW4gaXQgaXMgdmlzaWJsZS5cbiAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHRoZSBwb3B1cCB3aWxsIGFsd2F5cyBiZSByZW5kZXJlZCBpbiB0aGUgRE9NLiBCeSBkZWZhdWx0IHRoaXMgdmFsdWUgaXMgc2V0IHRvIGB0cnVlYCwgaWYgZm9yIHNvbWVcbiAgICogcmVhc29uIHlvdSBuZWVkIHRvIGRpc2FibGUgaXQsIHlvdSBjYW4gc2V0IGl0IHRvIGBmYWxzZWAuXG4gICAqL1xuICBkeW5hbWljRG9tUmVuZGVyaW5nPzogYm9vbGVhblxufVxuXG4vKipcbiAqIEBleHBlcmltZW50YWwgVGhpcyBjb21wb25lbnQgaXMgZXhwZXJpbWVudGFsIGFuZCBtYXkgYmUgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIHRoZSBmdXR1cmUuXG4gKi9cbmV4cG9ydCBjb25zdCBQb3B1cCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIHRleHQgPSAnJyxcbiAgICAgIHBsYWNlbWVudCA9ICdhdXRvJyxcbiAgICAgIGFsaWduID0gJ2NlbnRlcicsXG4gICAgICBpZCxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbnRhaW5lckZ1bGxXaWR0aCxcbiAgICAgIGNvbnRhaW5lckZ1bGxIZWlnaHQsXG4gICAgICBtYXhXaWR0aCA9ICcxNC41cmVtJyxcbiAgICAgIG1heEhlaWdodCxcbiAgICAgIHZpc2libGUsXG4gICAgICBpbm5lclJlZixcbiAgICAgIHJvbGUgPSAncG9wdXAnLFxuICAgICAgJ2RhdGEtdGVzdGlkJzogZGF0YVRlc3RJZCxcbiAgICAgIGhhc0Fycm93ID0gdHJ1ZSxcbiAgICAgIG9uQ2xvc2UsXG4gICAgICB0YWJJbmRleCA9IDAsXG4gICAgICBvbktleURvd24sXG4gICAgICAnYXJpYS1oYXNwb3B1cCc6IGFyaWFIYXNQb3B1cCxcbiAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZSA9IGZhbHNlLFxuICAgICAgZGVib3VuY2VEZWxheSA9IERFRkFVTFRfREVCT1VOQ0VfRFVSQVRJT04sXG4gICAgICBkaXNhYmxlQW5pbWF0aW9uID0gZmFsc2UsXG4gICAgICBwb3J0YWxUYXJnZXQsXG4gICAgICBkeW5hbWljRG9tUmVuZGVyaW5nID0gdHJ1ZSxcbiAgICB9OiBQb3B1cFByb3BzLFxuICAgIHJlZjogUmVmPEhUTUxEaXZFbGVtZW50PixcbiAgKSA9PiB7XG4gICAgY29uc3QgY2hpbGRyZW5SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShpbm5lclJlZiwgKCkgPT4gY2hpbGRyZW5SZWYuY3VycmVudCBhcyBIVE1MRGl2RWxlbWVudClcblxuICAgIGNvbnN0IGlubmVyUG9wdXBSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+IGlubmVyUG9wdXBSZWYuY3VycmVudCBhcyBIVE1MRGl2RWxlbWVudClcblxuICAgIGNvbnN0IHRpbWVyID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+Pih1bmRlZmluZWQpXG4gICAgY29uc3QgcG9wdXBQb3J0YWxUYXJnZXQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmIChwb3J0YWxUYXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIHBvcnRhbFRhcmdldFxuICAgICAgfVxuXG4gICAgICBpZiAocm9sZSA9PT0gJ2RpYWxvZycpIHtcbiAgICAgICAgaWYgKGNoaWxkcmVuUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICByZXR1cm4gY2hpbGRyZW5SZWYuY3VycmVudFxuICAgICAgICB9XG4gICAgICAgIGlmIChpc0NsaWVudFNpZGUpIHtcbiAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgLy8gV2UgY2hlY2sgaWYgd2luZG93IGV4aXN0cyBmb3IgU1NSXG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmJvZHlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGxcbiAgICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbcG9ydGFsVGFyZ2V0LCByb2xlLCBjaGlsZHJlblJlZi5jdXJyZW50XSlcblxuICAgIC8vIFRoZXJlIGFyZSBzb21lIGlzc3VlIHdoZW4gbWl4aW5nIGFuaW1hdGlvbiBhbmQgbWF4SGVpZ2h0IG9uIHNvbWUgYnJvd3NlcnMsIHNvIHdlIGRpc2FibGUgYW5pbWF0aW9uIGlmIG1heEhlaWdodCBpcyBzZXQuXG4gICAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPVxuICAgICAgZGlzYWJsZUFuaW1hdGlvbiB8fCBtYXhIZWlnaHQgPyAwIDogREVGQVVMVF9BTklNQVRJT05fRFVSQVRJT05cblxuICAgIC8vIERlYm91bmNlIHRpbWVyIHdpbGwgYmUgdXNlZCB0byBwcmV2ZW50IHRoZSBwb3B1cCBmcm9tIGZsaWNrZXJpbmcgd2hlbiB0aGUgdXNlciBtb3ZlcyB0aGUgbW91c2Ugb3V0IGFuZCBpbiB0aGUgY2hpbGRyZW4gZWxlbWVudC5cbiAgICBjb25zdCBkZWJvdW5jZVRpbWVyID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+Pih1bmRlZmluZWQpXG4gICAgY29uc3QgW3Zpc2libGVJbkRvbSwgc2V0VmlzaWJsZUluRG9tXSA9IHVzZVN0YXRlKGZhbHNlKVxuICAgIGNvbnN0IFtyZXZlcnNlQW5pbWF0aW9uLCBzZXRSZXZlcnNlQW5pbWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKVxuICAgIGNvbnN0IFtwb3NpdGlvbnMsIHNldFBvc2l0aW9uc10gPSB1c2VTdGF0ZTxQb3NpdGlvbnNUeXBlPih7XG4gICAgICAuLi5ERUZBVUxUX1BPU0lUSU9OUyxcbiAgICB9KVxuICAgIGNvbnN0IHVuaXF1ZUlkID0gdXNlSWQoKVxuICAgIGNvbnN0IGdlbmVyYXRlZElkID0gaWQgPz8gdW5pcXVlSWRcbiAgICBjb25zdCBpc0NvbnRyb2xsZWQgPSB2aXNpYmxlICE9PSB1bmRlZmluZWRcblxuICAgIGNvbnN0IGdlbmVyYXRlUG9wdXBQb3NpdGlvbnMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAoY2hpbGRyZW5SZWYuY3VycmVudCAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2V0UG9zaXRpb25zKFxuICAgICAgICAgIGNvbXB1dGVQb3NpdGlvbnMoe1xuICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgICBjaGlsZHJlblJlZixcbiAgICAgICAgICAgIGhhc0Fycm93LFxuICAgICAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICAgICAgcG9wdXBQb3J0YWxUYXJnZXQ6IHBvcHVwUG9ydGFsVGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgcG9wdXBSZWY6IGlubmVyUG9wdXBSZWYsXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9LCBbaGFzQXJyb3csIHBsYWNlbWVudCwgcG9wdXBQb3J0YWxUYXJnZXQsIGFsaWduXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gd2UgbmVlZCB0byByZWNvbXB1dGUgcG9zaXRpb25zIG9mIHBvcHVwIGR1ZSB0byB3aW5kb3cgc2Nyb2xsIG9yIHJlc2l6ZS5cbiAgICAgKi9cbiAgICBjb25zdCBvbldpbmRvd0NoYW5nZURldGVjdGVkID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgLy8gV2UgcmVtb3ZlIGFuaW1hdGlvbiBvbiBzY3JvbGwgb3IgdGhlIGFuaW1hdGlvbiB3aWxsIHJlc3RhcnQgb24gZXZlcnkgc2Nyb2xsXG4gICAgICBpZiAoaW5uZXJQb3B1cFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGlubmVyUG9wdXBSZWYuY3VycmVudC5zdHlsZS5hbmltYXRpb24gPSAnbm9uZSdcbiAgICAgIH1cblxuICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucygpXG4gICAgfSwgW2dlbmVyYXRlUG9wdXBQb3NpdGlvbnMsIGlubmVyUG9wdXBSZWZdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIHJlbW92ZSBwb3B1cCBwb3J0YWwgZnJvbSBET00gYW5kIHJlbW92ZSBldmVudCBsaXN0ZW5lciB0byBpdC5cbiAgICAgKi9cbiAgICBjb25zdCB1bm1vdW50UG9wdXBGcm9tRG9tID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgc2V0VmlzaWJsZUluRG9tKGZhbHNlKVxuICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbihmYWxzZSlcblxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgfSwgW29uV2luZG93Q2hhbmdlRGV0ZWN0ZWRdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIGhpZGUgcG9wdXAuIEEgdGltZW91dCBpcyBzZXQgdG8gYWxsb3cgYW5pbWF0aW9uIGVuZCwgdGhlbiByZW1vdmVcbiAgICAgKiBwb3B1cCBmcm9tIGRvbS5cbiAgICAgKi9cbiAgICBjb25zdCBjbG9zZVBvcHVwID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgY29uc3QgY2xvc2VGdW5jdGlvbiA9ICgpID0+IHtcbiAgICAgICAgaWYgKCFkaXNhYmxlQW5pbWF0aW9uKSB7XG4gICAgICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbih0cnVlKVxuXG4gICAgICAgICAgdGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgb25DbG9zZT8uKClcbiAgICAgICAgICAgIHVubW91bnRQb3B1cEZyb21Eb20oKVxuICAgICAgICAgIH0sIGFuaW1hdGlvbkR1cmF0aW9uKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uQ2xvc2U/LigpXG4gICAgICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFkaXNhYmxlQW5pbWF0aW9uKSB7XG4gICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgY2xvc2VGdW5jdGlvbigpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZWJvdW5jZURlbGF5ICYmICFkaXNhYmxlQW5pbWF0aW9uID8gZGVib3VuY2VEZWxheSA6IDAsXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsb3NlRnVuY3Rpb24oKVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGFuaW1hdGlvbkR1cmF0aW9uLFxuICAgICAgZGlzYWJsZUFuaW1hdGlvbixcbiAgICAgIGRlYm91bmNlRGVsYXksXG4gICAgICBvbkNsb3NlLFxuICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSxcbiAgICBdKVxuXG4gICAgLyoqXG4gICAgICogV2hlbiBtb3VzZSBob3ZlciBvciBzdG9wIGhvdmVyaW5nIGNoaWxkcmVuIHRoaXMgZnVuY3Rpb24gZGlzcGxheSBvciBoaWRlIHBvcHVwLiBBIHRpbWVvdXQgaXMgc2V0IHRvIGFsbG93IGFuaW1hdGlvblxuICAgICAqIGVuZCwgdGhlbiByZW1vdmUgcG9wdXAgZnJvbSBkb20uXG4gICAgICovXG4gICAgY29uc3Qgb25Qb2ludGVyRXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAgIChpc1Zpc2libGU6IGJvb2xlYW4pID0+ICgpID0+IHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWJvdW5jZURlbGF5IGFuZCB0aGUgcG9wdXAgaXMgbm90IHZpc2libGUsIHdlIGNsZWFyIHRoZSBkZWJvdW5jZSB0aW1lclxuICAgICAgICBpZiAoIXZpc2libGUgJiYgZGVib3VuY2VEZWxheSA+IDAgJiYgZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudClcbiAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gdW5tb3VudCB0aGUgcG9wdXBcbiAgICAgICAgLy8gVGhlcmUgaXMgZGVib3VuY2UgaW4gb3JkZXIgdG8gYXZvaWQgcG9wdXAgdG8gZmxpY2tlciB3aGVuIHdlIG1vdmUgdGhlIG1vdXNlIGZyb20gY2hpbGRyZW4gdG8gcG9wdXBcbiAgICAgICAgLy8gVGltZXIgaXMgdXNlZCB0byBmb2xsb3cgdGhlIGFuaW1hdGlvbiBkdXJhdGlvblxuICAgICAgICBpZiAoIWlzVmlzaWJsZSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQgJiYgIWRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICB9IGVsc2UgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gbW91bnQgdGhlIHBvcHVwXG4gICAgICAgICAgLy8gSWYgdGhlIHRpbWVyIGV4aXN0cyBpdCBtZWFucyB0aGUgcG9wdXAgd2FzIGFib3V0IHRvIHVtb3VudCwgYnV0IHdlIGhvdmVyZWQgdGhlIGNoaWxkcmVuIGFnYWluLFxuICAgICAgICAgIC8vIHNvIHdlIGNsZWFyIHRoZSB0aW1lciBhbmQgdGhlIHBvcHVwIHdpbGwgbm90IGJlIHVubW91bnRlZFxuICAgICAgICAgIGlmICh0aW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgICBzZXRSZXZlcnNlQW5pbWF0aW9uKGZhbHNlKVxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICB0aW1lci5jdXJyZW50ID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEFuZCBoZXJlIGlzIHdoZW4gd2UgY3VycmVudGx5IGFyZSBpbiBhIGRlYm91bmNlIHRpbWVyLCBpdCBtZWFucyBwb3B1cCB3YXMgaG92ZXJlZCBkdXJpbmdcbiAgICAgICAgICAvLyB0aGF0IHBlcmlvZCwgYW5kIHNvIHdlIGNhbiBjbGVhciBkZWJvdW5jZSB0aW1lclxuICAgICAgICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGRlYm91bmNlRGVsYXkgPiAwKSB7XG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgc2V0VmlzaWJsZUluRG9tKHRydWUpXG4gICAgICAgICAgICB9LCBkZWJvdW5jZURlbGF5KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgICAgICAgICBzZXRWaXNpYmxlSW5Eb20odHJ1ZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW2Nsb3NlUG9wdXAsIGRlYm91bmNlRGVsYXksIHZpc2libGVdLFxuICAgIClcblxuICAgIC8qKlxuICAgICAqIE9uY2UgcG9wdXAgaXMgdmlzaWJsZSBpbiB0aGUgZG9tIHdlIGNhbiBjb21wdXRlIHBvc2l0aW9ucywgdGhlbiBzZXQgaXQgdmlzaWJsZSBvbiBzY3JlZW4gYW5kIGFkZCBldmVudCB0b1xuICAgICAqIHJlY29tcHV0ZSBwb3NpdGlvbnMgb24gc2Nyb2xsIG9yIHNjcmVlbiByZXNpemUuXG4gICAgICovXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh2aXNpYmxlSW5Eb20pIHtcbiAgICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucygpXG5cbiAgICAgICAgaWYgKHBvcHVwUG9ydGFsVGFyZ2V0ID09PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICAgICAgLy8gV2Ugd2FudCB0byBkZXRlY3Qgc2Nyb2xsIGFuZCByZXNpemUgaW4gb3JkZXIgdG8gcmVjb21wdXRlIHBvc2l0aW9ucyBvZiBwb3B1cFxuICAgICAgICAgIC8vIEFkZGluZyB0cnVlIGFzIHRoaXJkIHBhcmFtZXRlciB0byBldmVudCBsaXN0ZW5lciB3aWxsIGRldGVjdCBuZXN0ZWQgc2Nyb2xscy5cbiAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgICAgfVxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgICAgICBpZiAodGltZXIuY3VycmVudCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lci5jdXJyZW50KVxuICAgICAgICAgIHRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGdlbmVyYXRlUG9wdXBQb3NpdGlvbnMsXG4gICAgICBvbldpbmRvd0NoYW5nZURldGVjdGVkLFxuICAgICAgdmlzaWJsZUluRG9tLFxuICAgICAgbWF4V2lkdGgsXG4gICAgICBwb3B1cFBvcnRhbFRhcmdldCxcbiAgICBdKVxuXG4gICAgLy8gVGhpcyB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIHBvc2l0aW9ucyBhcmUgY29tcHV0ZWQgYW5kIHBvcHVwIGlzIHZpc2libGUgaW4gdGhlIGRvbS5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHZpc2libGVJbkRvbSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaW5uZXJQb3B1cFJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSAnMSdcbiAgICAgIH1cbiAgICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbcG9zaXRpb25zXSlcblxuICAgIC8qKlxuICAgICAqIElmIHBvcHVwIGhhcyBgdmlzaWJsZWAgcHJvcCBpdCBtZWFucyB0aGUgcG9wdXAgaXMgbWFudWFsbHkgY29udHJvbGxlZCB0aHJvdWdoIHRoaXMgcHJvcC5cbiAgICAgKiBJbiB0aGlzIGNhcyB3ZSBkb24ndCB3YW50IHRvIGRpc3BsYXkgcG9wdXAgb24gaG92ZXIsIGJ1dCBvbmx5IHdoZW4gYHZpc2libGVgIGlzIHRydWUuXG4gICAgICovXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChpc0NvbnRyb2xsZWQpIHtcbiAgICAgICAgb25Qb2ludGVyRXZlbnQodmlzaWJsZSkoKVxuICAgICAgfVxuICAgIH0sIFtpc0NvbnRyb2xsZWQsIG9uUG9pbnRlckV2ZW50LCB2aXNpYmxlXSlcblxuICAgIC8vIEhhbmRsZSBoaWRlIG9uIGVzYyBwcmVzcyBhbmQgaGlkZSBvbiBjbGljayBvdXRzaWRlXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGhhbmRsZUVzY1ByZXNzID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgY2xvc2VQb3B1cCgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHBvcHVwQ3VycmVudCA9IGlubmVyUG9wdXBSZWYuY3VycmVudFxuICAgICAgICBjb25zdCBjaGlsZHJlbkN1cnJlbnQgPSBjaGlsZHJlblJlZi5jdXJyZW50XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBvcHVwQ3VycmVudCAmJlxuICAgICAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZSAmJlxuICAgICAgICAgICFldmVudC5kZWZhdWx0UHJldmVudGVkICYmXG4gICAgICAgICAgZXZlbnQudGFyZ2V0ICYmXG4gICAgICAgICAgZXZlbnQudGFyZ2V0ICE9PSBwb3B1cEN1cnJlbnQgJiZcbiAgICAgICAgICBldmVudC50YXJnZXQgIT09IGNoaWxkcmVuQ3VycmVudCAmJlxuICAgICAgICAgICFjaGlsZHJlbkN1cnJlbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3B1cEN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpXG4gICAgICAgICkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodmlzaWJsZUluRG9tKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBoYW5kbGVFc2NQcmVzcylcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIGhhbmRsZUVzY1ByZXNzKVxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGNsb3NlUG9wdXAsXG4gICAgICB2aXNpYmxlSW5Eb20sXG4gICAgICBpbm5lclBvcHVwUmVmLFxuICAgICAgY2hpbGRyZW5SZWYsXG4gICAgICBoaWRlT25DbGlja091dHNpZGUsXG4gICAgXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZXZlbnQgd2lsbCBvY2N1ciBvbmx5IGZvciBkaWFsb2cgYW5kIHdpbGwgdHJhcCBmb2N1cyBpbnNpZGUgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjb25zdCBoYW5kbGVGb2N1c1RyYXA6IEtleWJvYXJkRXZlbnRIYW5kbGVyID0gdXNlQ2FsbGJhY2soZXZlbnQgPT4ge1xuICAgICAgY29uc3QgaXNUYWJQcmVzc2VkID0gZXZlbnQua2V5ID09PSAnVGFiJ1xuICAgICAgaWYgKCFpc1RhYlByZXNzZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuXG4gICAgICBjb25zdCBmb2N1c2FibGVFbHMgPVxuICAgICAgICBpbm5lclBvcHVwUmVmLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgJ2FbaHJlZl06bm90KFtkaXNhYmxlZF0pLCBidXR0b246bm90KFtkaXNhYmxlZF0pLCB0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSksIGlucHV0Om5vdChbZGlzYWJsZWRdKSwgc2VsZWN0Om5vdChbZGlzYWJsZWRdKScsXG4gICAgICAgICkgPz8gW11cblxuICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlbiBubyBpbnRlcmFjdGl2ZSBlbGVtZW50IGFyZSB3aXRoaW4gdGhlIG1vZGFsIChpbmNsdWRpbmcgY2xvc2UgaWNvbilcbiAgICAgIGlmIChmb2N1c2FibGVFbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlyc3RGb2N1c2FibGVFbCA9IGZvY3VzYWJsZUVsc1swXSBhcyBIVE1MRWxlbWVudFxuICAgICAgY29uc3QgbGFzdEZvY3VzYWJsZUVsID0gZm9jdXNhYmxlRWxzW1xuICAgICAgICBmb2N1c2FibGVFbHMubGVuZ3RoIC0gMVxuICAgICAgXSBhcyBIVE1MRWxlbWVudFxuXG4gICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGZpcnN0Rm9jdXNhYmxlRWwgfHxcbiAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgbGFzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGxhc3RGb2N1c2FibGVFbCB8fFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBmaXJzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgfVxuICAgIH0sIFtdKVxuXG4gICAgLyoqXG4gICAgICogV2lsbCByZW5kZXIgY2hpbGRyZW4gY29uZGl0aW9uYWxseSBpZiBjaGlsZHJlbiBpcyBhIGZ1bmN0aW9uIG9yIG5vdC5cbiAgICAgKi9cbiAgICBjb25zdCByZW5kZXJDaGlsZHJlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuKHtcbiAgICAgICAgICBvbkJsdXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIG9uRm9jdXM6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyRW50ZXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyTGVhdmU6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIHJlZjogY2hpbGRyZW5SZWYsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRDaGlsZHJlbkNvbnRhaW5lclxuICAgICAgICAgIGFyaWEtY29udHJvbHM9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIGFyaWEtaGFzcG9wdXA9e2FyaWFIYXNQb3B1cH1cbiAgICAgICAgICBkYXRhLWNvbnRhaW5lci1mdWxsLWhlaWdodD17Y29udGFpbmVyRnVsbEhlaWdodH1cbiAgICAgICAgICBkYXRhLWNvbnRhaW5lci1mdWxsLXdpZHRoPXtjb250YWluZXJGdWxsV2lkdGh9XG4gICAgICAgICAgb25CbHVyPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcH1cbiAgICAgICAgICBvbkZvY3VzPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wfVxuICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgb25LZXlEb3duPy4oZXZlbnQpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblBvaW50ZXJFbnRlcj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgcmVmPXtjaGlsZHJlblJlZn1cbiAgICAgICAgICB0YWJJbmRleD17dGFiSW5kZXh9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvU3R5bGVkQ2hpbGRyZW5Db250YWluZXI+XG4gICAgICApXG4gICAgfSwgW1xuICAgICAgYXJpYUhhc1BvcHVwLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjb250YWluZXJGdWxsSGVpZ2h0LFxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoLFxuICAgICAgZ2VuZXJhdGVkSWQsXG4gICAgICBpc0NvbnRyb2xsZWQsXG4gICAgICBvbktleURvd24sXG4gICAgICBvblBvaW50ZXJFdmVudCxcbiAgICAgIHRhYkluZGV4LFxuICAgIF0pXG5cbiAgICBjb25zdCBzaG91bGRSZW5kZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmICghZHluYW1pY0RvbVJlbmRlcmluZykge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZHluYW1pY0RvbVJlbmRlcmluZyAmJiB2aXNpYmxlSW5Eb20pIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSwgW2R5bmFtaWNEb21SZW5kZXJpbmcsIHZpc2libGVJbkRvbV0pXG5cbiAgICBpZiAoIXRleHQpIHtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNoaWxkcmVuXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIHtyZW5kZXJDaGlsZHJlbigpfVxuICAgICAgICB7c2hvdWxkUmVuZGVyXG4gICAgICAgICAgPyBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICAgIDxTdHlsZWRQb3B1cFxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uPXthbmltYXRpb25EdXJhdGlvbn1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICBkYXRhLWFuaW1hdGVkPXthbmltYXRpb25EdXJhdGlvbiA+IDAgJiYgIW1heEhlaWdodH1cbiAgICAgICAgICAgICAgICBkYXRhLWhhcy1hcnJvdz17aGFzQXJyb3d9XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWR9XG4gICAgICAgICAgICAgICAgZGF0YS12aXNpYmxlLWluLWRvbT17XG4gICAgICAgICAgICAgICAgICAhZHluYW1pY0RvbVJlbmRlcmluZyA/IHZpc2libGVJbkRvbSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZD17Z2VuZXJhdGVkSWR9XG4gICAgICAgICAgICAgICAgaXNEaWFsb2c9e3JvbGUgPT09ICdkaWFsb2cnfVxuICAgICAgICAgICAgICAgIG1heEhlaWdodD17bWF4SGVpZ2h0fVxuICAgICAgICAgICAgICAgIG1heFdpZHRoPXttYXhXaWR0aH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtzdG9wQ2xpY2tQcm9wYWdhdGlvbn1cbiAgICAgICAgICAgICAgICBvbktleURvd249e3JvbGUgPT09ICdkaWFsb2cnID8gaGFuZGxlRm9jdXNUcmFwIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgIG9uUG9pbnRlckVudGVyPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wfVxuICAgICAgICAgICAgICAgIG9uUG9pbnRlckxlYXZlPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcH1cbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM9e3Bvc2l0aW9uc31cbiAgICAgICAgICAgICAgICByZWY9e2lubmVyUG9wdXBSZWZ9XG4gICAgICAgICAgICAgICAgcmV2ZXJzZUFuaW1hdGlvbj17cmV2ZXJzZUFuaW1hdGlvbn1cbiAgICAgICAgICAgICAgICByb2xlPXtyb2xlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RleHR9XG4gICAgICAgICAgICAgIDwvU3R5bGVkUG9wdXA+LFxuICAgICAgICAgICAgICBwb3B1cFBvcnRhbFRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IG51bGx9XG4gICAgICA8Lz5cbiAgICApXG4gIH0sXG4pXG4iXX0= */"), ';}&[data-has-arrow="true"]{&::after{content:" ";position:absolute;top:', ({
52
- positions
53
- }) => positions.arrowTop, "px;left:", ({
54
- positions
55
- }) => positions.arrowLeft, "px;transform:", ({
56
- positions
57
- }) => positions.arrowTransform, " rotate(", ({
58
- positions
59
- }) => positions.rotate, "deg);margin-left:-", helpers.DEFAULT_ARROW_WIDTH, "px;border-width:", helpers.DEFAULT_ARROW_WIDTH, "px;border-style:solid;border-color:", ({
60
- theme
61
- }) => theme.colors.neutral.backgroundStronger, ' transparent transparent transparent;pointer-events:none;}}&[data-visible-in-dom="false"]{display:none;}' + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpRW9CIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuaW1wb3J0IHR5cGUge1xuICBIVE1MQXR0cmlidXRlcyxcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIE1vdXNlRXZlbnRIYW5kbGVyLFxuICBSZWFjdE5vZGUsXG4gIFJlZixcbiAgUmVmT2JqZWN0LFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIGZvcndhcmRSZWYsXG4gIHN0YXJ0VHJhbnNpdGlvbixcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlSWQsXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgaXNDbGllbnRTaWRlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pc0NsaWVudFNpZGUnXG5pbXBvcnQgdHlwZSB7IFBvc2l0aW9uc1R5cGUgfSBmcm9tICcuL2FuaW1hdGlvbnMnXG5pbXBvcnQgeyBhbmltYXRpb24sIGV4aXRBbmltYXRpb24gfSBmcm9tICcuL2FuaW1hdGlvbnMnXG5pbXBvcnQgdHlwZSB7IFBvcHVwQWxpZ24sIFBvcHVwUGxhY2VtZW50IH0gZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0IHtcbiAgY29tcHV0ZVBvc2l0aW9ucyxcbiAgREVGQVVMVF9BUlJPV19XSURUSCxcbiAgREVGQVVMVF9QT1NJVElPTlMsXG59IGZyb20gJy4vaGVscGVycydcblxuY29uc3QgREVGQVVMVF9BTklNQVRJT05fRFVSQVRJT04gPSAyMzAgLy8gaW4gbXNcbmNvbnN0IERFRkFVTFRfREVCT1VOQ0VfRFVSQVRJT04gPSAyMDAgLy8gaW4gbXNcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5cbnR5cGUgU3R5bGVkUG9wdXBQcm9wcyA9IHtcbiAgbWF4V2lkdGg6IG51bWJlciB8IHN0cmluZ1xuICBwb3NpdGlvbnM6IFBvc2l0aW9uc1R5cGVcbiAgcmV2ZXJzZUFuaW1hdGlvbjogYm9vbGVhblxuICBtYXhIZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgYW5pbWF0aW9uRHVyYXRpb24/OiBudW1iZXJcbiAgaXNEaWFsb2c6IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBUaGlzIGV2ZW50IGhhbmRsZSBhbGxvdyB1cyB0byBub3QgYnViYmxlIHRoZSBldmVudCB0byBkb2N1bWVudC5ib2R5IGxpa2UgdGhpcyByZWFjdC1zZWxlY3Qgd29ya3MgZmluZVxuICovXG5jb25zdCBzdG9wQ2xpY2tQcm9wYWdhdGlvbjogTW91c2VFdmVudEhhbmRsZXIgPSBldmVudCA9PiB7XG4gIGV2ZW50Lm5hdGl2ZUV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG59XG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKCdkaXYnLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiBwcm9wID0+XG4gICAgIVtcbiAgICAgICdtYXhXaWR0aCcsXG4gICAgICAncG9zaXRpb25zJyxcbiAgICAgICdyZXZlcnNlQW5pbWF0aW9uJyxcbiAgICAgICdtYXhIZWlnaHQnLFxuICAgICAgJ2FuaW1hdGlvbkR1cmF0aW9uJyxcbiAgICAgICdpc0RpYWxvZycsXG4gICAgXS5pbmNsdWRlcyhwcm9wKSxcbn0pPFN0eWxlZFBvcHVwUHJvcHM+YFxuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdlcn07XG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHRTdHJvbmdlcn07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gYCR7dGhlbWUuc3BhY2VbJzAuNSddfSAke3RoZW1lLnNwYWNlWycxJ119YH07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXgtd2lkdGg6ICR7KHsgbWF4V2lkdGggfSkgPT5cbiAgICB0eXBlb2YgbWF4V2lkdGggPT09ICdudW1iZXInID8gYCR7bWF4V2lkdGh9cHhgIDogbWF4V2lkdGh9O1xuICBtYXgtaGVpZ2h0OiAkeyh7IG1heEhlaWdodCB9KSA9PlxuICAgIHR5cGVvZiBtYXhIZWlnaHQgPT09ICdudW1iZXInID8gYCR7bWF4SGVpZ2h0fXB4YCA6IG1heEhlaWdodH07XG4gIG92ZXJmbG93OiAkeyh7IG1heEhlaWdodCB9KSA9PiAobWF4SGVpZ2h0ID8gJ2F1dG8nIDogdW5kZWZpbmVkKX07XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBpbnNldDogMCBhdXRvIGF1dG8gMDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBvcGFjaXR5OiAwO1xuICB6LWluZGV4OiAxO1xuICB0cmFuc2Zvcm06ICR7KHsgcG9zaXRpb25zIH0pID0+IHBvc2l0aW9ucy5wb3B1cFBvc2l0aW9ufTtcblxuICAmW2RhdGEtYW5pbWF0ZWQ9XCJ0cnVlXCJdIHtcbiAgICBhbmltYXRpb246ICR7KHsgcG9zaXRpb25zLCByZXZlcnNlQW5pbWF0aW9uLCBhbmltYXRpb25EdXJhdGlvbiB9KSA9PiBjc3NgXG4gICAgICAke2FuaW1hdGlvbkR1cmF0aW9ufW1zICR7XG4gICAgICAgICFyZXZlcnNlQW5pbWF0aW9uID8gYW5pbWF0aW9uKHBvc2l0aW9ucykgOiBleGl0QW5pbWF0aW9uKHBvc2l0aW9ucylcbiAgICAgIH0gZm9yd2FyZHNcbiAgICBgfTtcbiAgfVxuXG4gICZbZGF0YS1oYXMtYXJyb3c9XCJ0cnVlXCJdIHtcbiAgICAmOjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VG9wfXB4O1xuICAgICAgbGVmdDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93TGVmdH1weDtcbiAgICAgIHRyYW5zZm9ybTogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VHJhbnNmb3JtfVxuICAgICAgICByb3RhdGUoJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLnJvdGF0ZX1kZWcpO1xuICAgICAgbWFyZ2luLWxlZnQ6IC0ke0RFRkFVTFRfQVJST1dfV0lEVEh9cHg7XG4gICAgICBib3JkZXItd2lkdGg6ICR7REVGQVVMVF9BUlJPV19XSURUSH1weDtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICBib3JkZXItY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ2VyfVxuICAgICAgICB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxuXG4gICZbZGF0YS12aXNpYmxlLWluLWRvbT1cImZhbHNlXCJdIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5gXG5cbmV4cG9ydCBjb25zdCBTdHlsZWRDaGlsZHJlbkNvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGluaGVyaXQ7XG5cblxuICAmW2RhdGEtY29udGFpbmVyLWZ1bGwtaGVpZ2h0PVwidHJ1ZVwiXSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG5cbiAgJltkYXRhLWNvbnRhaW5lci1mdWxsLXdpZHRoPVwidHJ1ZVwiXSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbmBcblxudHlwZSBQb3B1cFByb3BzID0ge1xuICAvKipcbiAgICogSWQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgaWYgbm90IHNldC4gSXQgaXMgdXNlZCBmb3IgYXNzb2NpYXRpbmcgcG9wdXAgd3JhcHBlciB3aXRoIHBvcHVwIHBvcnRhbC5cbiAgICovXG4gIGlkPzogc3RyaW5nXG4gIGNoaWxkcmVuOlxuICAgIHwgUmVhY3ROb2RlXG4gICAgfCAoKHJlbmRlclByb3BzOiB7XG4gICAgICAgIGNsYXNzTmFtZT86IHN0cmluZ1xuICAgICAgICBvbkJsdXI6ICgpID0+IHZvaWRcbiAgICAgICAgb25Gb2N1czogKCkgPT4gdm9pZFxuICAgICAgICBvblBvaW50ZXJFbnRlcjogKCkgPT4gdm9pZFxuICAgICAgICBvblBvaW50ZXJMZWF2ZTogKCkgPT4gdm9pZFxuICAgICAgICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gICAgICB9KSA9PiBSZWFjdE5vZGUpXG4gIG1heFdpZHRoPzogbnVtYmVyIHwgc3RyaW5nXG4gIC8qKlxuICAgKiBgYXV0b2AgcGxhY2VtZW50IHdpbGwgY2hhbmdlIHRoZSBwb3NpdGlvbiBvZiB0aGUgcG9wdXAgaWYgaXQgZG9lc24ndCBmaXQgaW4gdGhlIHZpZXdwb3J0LlxuICAgKi9cbiAgcGxhY2VtZW50PzogUG9wdXBQbGFjZW1lbnRcbiAgLyoqXG4gICAqIEFsaWduIHRoZSBwb3B1cCB0byB0aGUgc3RhcnQgb3IgY2VudGVyIG9mIHRoZSBjaGlsZHJlbi5cbiAgICovXG4gIGFsaWduPzogUG9wdXBBbGlnblxuICAvKipcbiAgICogQ29udGVudCBvZiB0aGUgcG9wdXAsIHByZWZlcmFibHkgdGV4dCBpbnNpZGUuXG4gICAqL1xuICB0ZXh0PzogUmVhY3ROb2RlXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogSXQgd2lsbCBhZGQgYHdpZHRoOiAxMDAlYCB0byB0aGUgcG9wdXAgY29udGFpbmVyLlxuICAgKi9cbiAgY29udGFpbmVyRnVsbFdpZHRoPzogYm9vbGVhblxuICAvKipcbiAgICogSXQgd2lsbCBhZGQgYGhlaWdodDogMTAwJWAgdG8gdGhlIHBvcHVwIGNvbnRhaW5lci5cbiAgICovXG4gIGNvbnRhaW5lckZ1bGxIZWlnaHQ/OiBib29sZWFuXG4gIC8qKlxuICAgKiBJdCB3aWxsIGZvcmNlIGRpc3BsYXkgcG9wdXAuIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB5b3UgbmVlZCB0byBhbHdheXMgZGlzcGxheSB0aGUgcG9wdXAgd2l0aG91dCBob3ZlciBuZWVkZWQuXG4gICAqL1xuICB2aXNpYmxlPzogYm9vbGVhblxuICBpbm5lclJlZj86IFJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gIHJvbGU/OiBzdHJpbmdcbiAgJ2RhdGEtdGVzdGlkJz86IHN0cmluZ1xuICBoYXNBcnJvdz86IGJvb2xlYW5cbiAgb25DbG9zZT86ICgpID0+IHZvaWRcbiAgdGFiSW5kZXg/OiBudW1iZXJcbiAgb25LZXlEb3duPzogS2V5Ym9hcmRFdmVudEhhbmRsZXJcbiAgJ2FyaWEtaGFzcG9wdXAnPzogSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+WydhcmlhLWhhc3BvcHVwJ11cbiAgaGlkZU9uQ2xpY2tPdXRzaWRlPzogYm9vbGVhblxuICAvKipcbiAgICogSWYgeW91IHNldCBkZWJvdW5jZVRpbWUgdG8gZmFsc2UsIHRoZSBwb3B1cCB3aWxsIG5vdCBkZWJvdW5jZSB0aGUgaG92ZXIgZXZlbnQgYW5kIHdpbGwgYmUgZGlzcGxheWVkIGluc3RhbnRseS5cbiAgICogSWYgc2V0IHRvIDAgaXQgd2lsbCBkaXNhYmxlIGRlYm91bmNlLlxuICAgKi9cbiAgZGVib3VuY2VEZWxheT86IG51bWJlclxuICAvKipcbiAgICogSWYgeW91IHNldCBhIG1heCBoZWlnaHQga2VlcCBpbiBtaW5kIHRoYXQgdGhlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgb3IgaXQgd2lsbCBub3Qgd29yayBwcm9wZXJseSBvbiBzb21lIGJyb3dzZXJzLlxuICAgKi9cbiAgbWF4SGVpZ2h0Pzogc3RyaW5nIHwgbnVtYmVyXG4gIC8qKlxuICAgKiBXaWxsIHJlbW92ZSB0aGUgYW5pbWF0aW9uIG9uIHRoZSBwb3B1cCBpZiBzZXQgdG8gZmFsc2UuXG4gICAqL1xuICBkaXNhYmxlQW5pbWF0aW9uPzogYm9vbGVhblxuICAvKipcbiAgICogQnkgZGVmYXVsdCwgdGhlIHBvcnRhbCB0YXJnZXQgaXMgY2hpbGRyZW4gY29udGFpbmVyIG9yIGRvY3VtZW50LmJvZHkgaWYgY2hpbGRyZW4gaXMgYSBmdW5jdGlvbi4gWW91IGNhbiBvdmVycmlkZSB0aGlzXG4gICAqIGJlaGF2aW9yIGJ5IHNldHRpbmcgYSBwb3J0YWxUYXJnZXQgcHJvcC5cbiAgICovXG4gIHBvcnRhbFRhcmdldD86IEhUTUxFbGVtZW50XG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IHRoaXMgdG8gdHJ1ZSwgdGhlIHBvcHVwIHdpbGwgYmUgcmVuZGVyZWQgaW4gdGhlIERPTSBvbmx5IHdoZW4gaXQgaXMgdmlzaWJsZS5cbiAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHRoZSBwb3B1cCB3aWxsIGFsd2F5cyBiZSByZW5kZXJlZCBpbiB0aGUgRE9NLiBCeSBkZWZhdWx0IHRoaXMgdmFsdWUgaXMgc2V0IHRvIGB0cnVlYCwgaWYgZm9yIHNvbWVcbiAgICogcmVhc29uIHlvdSBuZWVkIHRvIGRpc2FibGUgaXQsIHlvdSBjYW4gc2V0IGl0IHRvIGBmYWxzZWAuXG4gICAqL1xuICBkeW5hbWljRG9tUmVuZGVyaW5nPzogYm9vbGVhblxufVxuXG4vKipcbiAqIEBleHBlcmltZW50YWwgVGhpcyBjb21wb25lbnQgaXMgZXhwZXJpbWVudGFsIGFuZCBtYXkgYmUgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIHRoZSBmdXR1cmUuXG4gKi9cbmV4cG9ydCBjb25zdCBQb3B1cCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIHRleHQgPSAnJyxcbiAgICAgIHBsYWNlbWVudCA9ICdhdXRvJyxcbiAgICAgIGFsaWduID0gJ2NlbnRlcicsXG4gICAgICBpZCxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbnRhaW5lckZ1bGxXaWR0aCxcbiAgICAgIGNvbnRhaW5lckZ1bGxIZWlnaHQsXG4gICAgICBtYXhXaWR0aCA9ICcxNC41cmVtJyxcbiAgICAgIG1heEhlaWdodCxcbiAgICAgIHZpc2libGUsXG4gICAgICBpbm5lclJlZixcbiAgICAgIHJvbGUgPSAncG9wdXAnLFxuICAgICAgJ2RhdGEtdGVzdGlkJzogZGF0YVRlc3RJZCxcbiAgICAgIGhhc0Fycm93ID0gdHJ1ZSxcbiAgICAgIG9uQ2xvc2UsXG4gICAgICB0YWJJbmRleCA9IDAsXG4gICAgICBvbktleURvd24sXG4gICAgICAnYXJpYS1oYXNwb3B1cCc6IGFyaWFIYXNQb3B1cCxcbiAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZSA9IGZhbHNlLFxuICAgICAgZGVib3VuY2VEZWxheSA9IERFRkFVTFRfREVCT1VOQ0VfRFVSQVRJT04sXG4gICAgICBkaXNhYmxlQW5pbWF0aW9uID0gZmFsc2UsXG4gICAgICBwb3J0YWxUYXJnZXQsXG4gICAgICBkeW5hbWljRG9tUmVuZGVyaW5nID0gdHJ1ZSxcbiAgICB9OiBQb3B1cFByb3BzLFxuICAgIHJlZjogUmVmPEhUTUxEaXZFbGVtZW50PixcbiAgKSA9PiB7XG4gICAgY29uc3QgY2hpbGRyZW5SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShpbm5lclJlZiwgKCkgPT4gY2hpbGRyZW5SZWYuY3VycmVudCBhcyBIVE1MRGl2RWxlbWVudClcblxuICAgIGNvbnN0IGlubmVyUG9wdXBSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+IGlubmVyUG9wdXBSZWYuY3VycmVudCBhcyBIVE1MRGl2RWxlbWVudClcblxuICAgIGNvbnN0IHRpbWVyID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+Pih1bmRlZmluZWQpXG4gICAgY29uc3QgcG9wdXBQb3J0YWxUYXJnZXQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmIChwb3J0YWxUYXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIHBvcnRhbFRhcmdldFxuICAgICAgfVxuXG4gICAgICBpZiAocm9sZSA9PT0gJ2RpYWxvZycpIHtcbiAgICAgICAgaWYgKGNoaWxkcmVuUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICByZXR1cm4gY2hpbGRyZW5SZWYuY3VycmVudFxuICAgICAgICB9XG4gICAgICAgIGlmIChpc0NsaWVudFNpZGUpIHtcbiAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgLy8gV2UgY2hlY2sgaWYgd2luZG93IGV4aXN0cyBmb3IgU1NSXG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmJvZHlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGxcbiAgICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbcG9ydGFsVGFyZ2V0LCByb2xlLCBjaGlsZHJlblJlZi5jdXJyZW50XSlcblxuICAgIC8vIFRoZXJlIGFyZSBzb21lIGlzc3VlIHdoZW4gbWl4aW5nIGFuaW1hdGlvbiBhbmQgbWF4SGVpZ2h0IG9uIHNvbWUgYnJvd3NlcnMsIHNvIHdlIGRpc2FibGUgYW5pbWF0aW9uIGlmIG1heEhlaWdodCBpcyBzZXQuXG4gICAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPVxuICAgICAgZGlzYWJsZUFuaW1hdGlvbiB8fCBtYXhIZWlnaHQgPyAwIDogREVGQVVMVF9BTklNQVRJT05fRFVSQVRJT05cblxuICAgIC8vIERlYm91bmNlIHRpbWVyIHdpbGwgYmUgdXNlZCB0byBwcmV2ZW50IHRoZSBwb3B1cCBmcm9tIGZsaWNrZXJpbmcgd2hlbiB0aGUgdXNlciBtb3ZlcyB0aGUgbW91c2Ugb3V0IGFuZCBpbiB0aGUgY2hpbGRyZW4gZWxlbWVudC5cbiAgICBjb25zdCBkZWJvdW5jZVRpbWVyID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+Pih1bmRlZmluZWQpXG4gICAgY29uc3QgW3Zpc2libGVJbkRvbSwgc2V0VmlzaWJsZUluRG9tXSA9IHVzZVN0YXRlKGZhbHNlKVxuICAgIGNvbnN0IFtyZXZlcnNlQW5pbWF0aW9uLCBzZXRSZXZlcnNlQW5pbWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKVxuICAgIGNvbnN0IFtwb3NpdGlvbnMsIHNldFBvc2l0aW9uc10gPSB1c2VTdGF0ZTxQb3NpdGlvbnNUeXBlPih7XG4gICAgICAuLi5ERUZBVUxUX1BPU0lUSU9OUyxcbiAgICB9KVxuICAgIGNvbnN0IHVuaXF1ZUlkID0gdXNlSWQoKVxuICAgIGNvbnN0IGdlbmVyYXRlZElkID0gaWQgPz8gdW5pcXVlSWRcbiAgICBjb25zdCBpc0NvbnRyb2xsZWQgPSB2aXNpYmxlICE9PSB1bmRlZmluZWRcblxuICAgIGNvbnN0IGdlbmVyYXRlUG9wdXBQb3NpdGlvbnMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAoY2hpbGRyZW5SZWYuY3VycmVudCAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2V0UG9zaXRpb25zKFxuICAgICAgICAgIGNvbXB1dGVQb3NpdGlvbnMoe1xuICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgICBjaGlsZHJlblJlZixcbiAgICAgICAgICAgIGhhc0Fycm93LFxuICAgICAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICAgICAgcG9wdXBQb3J0YWxUYXJnZXQ6IHBvcHVwUG9ydGFsVGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgcG9wdXBSZWY6IGlubmVyUG9wdXBSZWYsXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9LCBbaGFzQXJyb3csIHBsYWNlbWVudCwgcG9wdXBQb3J0YWxUYXJnZXQsIGFsaWduXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gd2UgbmVlZCB0byByZWNvbXB1dGUgcG9zaXRpb25zIG9mIHBvcHVwIGR1ZSB0byB3aW5kb3cgc2Nyb2xsIG9yIHJlc2l6ZS5cbiAgICAgKi9cbiAgICBjb25zdCBvbldpbmRvd0NoYW5nZURldGVjdGVkID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgLy8gV2UgcmVtb3ZlIGFuaW1hdGlvbiBvbiBzY3JvbGwgb3IgdGhlIGFuaW1hdGlvbiB3aWxsIHJlc3RhcnQgb24gZXZlcnkgc2Nyb2xsXG4gICAgICBpZiAoaW5uZXJQb3B1cFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGlubmVyUG9wdXBSZWYuY3VycmVudC5zdHlsZS5hbmltYXRpb24gPSAnbm9uZSdcbiAgICAgIH1cblxuICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucygpXG4gICAgfSwgW2dlbmVyYXRlUG9wdXBQb3NpdGlvbnMsIGlubmVyUG9wdXBSZWZdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIHJlbW92ZSBwb3B1cCBwb3J0YWwgZnJvbSBET00gYW5kIHJlbW92ZSBldmVudCBsaXN0ZW5lciB0byBpdC5cbiAgICAgKi9cbiAgICBjb25zdCB1bm1vdW50UG9wdXBGcm9tRG9tID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgc2V0VmlzaWJsZUluRG9tKGZhbHNlKVxuICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbihmYWxzZSlcblxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgfSwgW29uV2luZG93Q2hhbmdlRGV0ZWN0ZWRdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIGhpZGUgcG9wdXAuIEEgdGltZW91dCBpcyBzZXQgdG8gYWxsb3cgYW5pbWF0aW9uIGVuZCwgdGhlbiByZW1vdmVcbiAgICAgKiBwb3B1cCBmcm9tIGRvbS5cbiAgICAgKi9cbiAgICBjb25zdCBjbG9zZVBvcHVwID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgY29uc3QgY2xvc2VGdW5jdGlvbiA9ICgpID0+IHtcbiAgICAgICAgaWYgKCFkaXNhYmxlQW5pbWF0aW9uKSB7XG4gICAgICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbih0cnVlKVxuXG4gICAgICAgICAgdGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgb25DbG9zZT8uKClcbiAgICAgICAgICAgIHVubW91bnRQb3B1cEZyb21Eb20oKVxuICAgICAgICAgIH0sIGFuaW1hdGlvbkR1cmF0aW9uKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uQ2xvc2U/LigpXG4gICAgICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFkaXNhYmxlQW5pbWF0aW9uKSB7XG4gICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgY2xvc2VGdW5jdGlvbigpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZWJvdW5jZURlbGF5ICYmICFkaXNhYmxlQW5pbWF0aW9uID8gZGVib3VuY2VEZWxheSA6IDAsXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsb3NlRnVuY3Rpb24oKVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGFuaW1hdGlvbkR1cmF0aW9uLFxuICAgICAgZGlzYWJsZUFuaW1hdGlvbixcbiAgICAgIGRlYm91bmNlRGVsYXksXG4gICAgICBvbkNsb3NlLFxuICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSxcbiAgICBdKVxuXG4gICAgLyoqXG4gICAgICogV2hlbiBtb3VzZSBob3ZlciBvciBzdG9wIGhvdmVyaW5nIGNoaWxkcmVuIHRoaXMgZnVuY3Rpb24gZGlzcGxheSBvciBoaWRlIHBvcHVwLiBBIHRpbWVvdXQgaXMgc2V0IHRvIGFsbG93IGFuaW1hdGlvblxuICAgICAqIGVuZCwgdGhlbiByZW1vdmUgcG9wdXAgZnJvbSBkb20uXG4gICAgICovXG4gICAgY29uc3Qgb25Qb2ludGVyRXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAgIChpc1Zpc2libGU6IGJvb2xlYW4pID0+ICgpID0+IHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWJvdW5jZURlbGF5IGFuZCB0aGUgcG9wdXAgaXMgbm90IHZpc2libGUsIHdlIGNsZWFyIHRoZSBkZWJvdW5jZSB0aW1lclxuICAgICAgICBpZiAoIXZpc2libGUgJiYgZGVib3VuY2VEZWxheSA+IDAgJiYgZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudClcbiAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gdW5tb3VudCB0aGUgcG9wdXBcbiAgICAgICAgLy8gVGhlcmUgaXMgZGVib3VuY2UgaW4gb3JkZXIgdG8gYXZvaWQgcG9wdXAgdG8gZmxpY2tlciB3aGVuIHdlIG1vdmUgdGhlIG1vdXNlIGZyb20gY2hpbGRyZW4gdG8gcG9wdXBcbiAgICAgICAgLy8gVGltZXIgaXMgdXNlZCB0byBmb2xsb3cgdGhlIGFuaW1hdGlvbiBkdXJhdGlvblxuICAgICAgICBpZiAoIWlzVmlzaWJsZSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQgJiYgIWRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICB9IGVsc2UgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gbW91bnQgdGhlIHBvcHVwXG4gICAgICAgICAgLy8gSWYgdGhlIHRpbWVyIGV4aXN0cyBpdCBtZWFucyB0aGUgcG9wdXAgd2FzIGFib3V0IHRvIHVtb3VudCwgYnV0IHdlIGhvdmVyZWQgdGhlIGNoaWxkcmVuIGFnYWluLFxuICAgICAgICAgIC8vIHNvIHdlIGNsZWFyIHRoZSB0aW1lciBhbmQgdGhlIHBvcHVwIHdpbGwgbm90IGJlIHVubW91bnRlZFxuICAgICAgICAgIGlmICh0aW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgICBzZXRSZXZlcnNlQW5pbWF0aW9uKGZhbHNlKVxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICB0aW1lci5jdXJyZW50ID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEFuZCBoZXJlIGlzIHdoZW4gd2UgY3VycmVudGx5IGFyZSBpbiBhIGRlYm91bmNlIHRpbWVyLCBpdCBtZWFucyBwb3B1cCB3YXMgaG92ZXJlZCBkdXJpbmdcbiAgICAgICAgICAvLyB0aGF0IHBlcmlvZCwgYW5kIHNvIHdlIGNhbiBjbGVhciBkZWJvdW5jZSB0aW1lclxuICAgICAgICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGRlYm91bmNlRGVsYXkgPiAwKSB7XG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgc2V0VmlzaWJsZUluRG9tKHRydWUpXG4gICAgICAgICAgICB9LCBkZWJvdW5jZURlbGF5KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgICAgICAgICBzZXRWaXNpYmxlSW5Eb20odHJ1ZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW2Nsb3NlUG9wdXAsIGRlYm91bmNlRGVsYXksIHZpc2libGVdLFxuICAgIClcblxuICAgIC8qKlxuICAgICAqIE9uY2UgcG9wdXAgaXMgdmlzaWJsZSBpbiB0aGUgZG9tIHdlIGNhbiBjb21wdXRlIHBvc2l0aW9ucywgdGhlbiBzZXQgaXQgdmlzaWJsZSBvbiBzY3JlZW4gYW5kIGFkZCBldmVudCB0b1xuICAgICAqIHJlY29tcHV0ZSBwb3NpdGlvbnMgb24gc2Nyb2xsIG9yIHNjcmVlbiByZXNpemUuXG4gICAgICovXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh2aXNpYmxlSW5Eb20pIHtcbiAgICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucygpXG5cbiAgICAgICAgaWYgKHBvcHVwUG9ydGFsVGFyZ2V0ID09PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICAgICAgLy8gV2Ugd2FudCB0byBkZXRlY3Qgc2Nyb2xsIGFuZCByZXNpemUgaW4gb3JkZXIgdG8gcmVjb21wdXRlIHBvc2l0aW9ucyBvZiBwb3B1cFxuICAgICAgICAgIC8vIEFkZGluZyB0cnVlIGFzIHRoaXJkIHBhcmFtZXRlciB0byBldmVudCBsaXN0ZW5lciB3aWxsIGRldGVjdCBuZXN0ZWQgc2Nyb2xscy5cbiAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgICAgfVxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgICAgICBpZiAodGltZXIuY3VycmVudCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lci5jdXJyZW50KVxuICAgICAgICAgIHRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGdlbmVyYXRlUG9wdXBQb3NpdGlvbnMsXG4gICAgICBvbldpbmRvd0NoYW5nZURldGVjdGVkLFxuICAgICAgdmlzaWJsZUluRG9tLFxuICAgICAgbWF4V2lkdGgsXG4gICAgICBwb3B1cFBvcnRhbFRhcmdldCxcbiAgICBdKVxuXG4gICAgLy8gVGhpcyB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIHBvc2l0aW9ucyBhcmUgY29tcHV0ZWQgYW5kIHBvcHVwIGlzIHZpc2libGUgaW4gdGhlIGRvbS5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHZpc2libGVJbkRvbSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaW5uZXJQb3B1cFJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSAnMSdcbiAgICAgIH1cbiAgICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbcG9zaXRpb25zXSlcblxuICAgIC8qKlxuICAgICAqIElmIHBvcHVwIGhhcyBgdmlzaWJsZWAgcHJvcCBpdCBtZWFucyB0aGUgcG9wdXAgaXMgbWFudWFsbHkgY29udHJvbGxlZCB0aHJvdWdoIHRoaXMgcHJvcC5cbiAgICAgKiBJbiB0aGlzIGNhcyB3ZSBkb24ndCB3YW50IHRvIGRpc3BsYXkgcG9wdXAgb24gaG92ZXIsIGJ1dCBvbmx5IHdoZW4gYHZpc2libGVgIGlzIHRydWUuXG4gICAgICovXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChpc0NvbnRyb2xsZWQpIHtcbiAgICAgICAgb25Qb2ludGVyRXZlbnQodmlzaWJsZSkoKVxuICAgICAgfVxuICAgIH0sIFtpc0NvbnRyb2xsZWQsIG9uUG9pbnRlckV2ZW50LCB2aXNpYmxlXSlcblxuICAgIC8vIEhhbmRsZSBoaWRlIG9uIGVzYyBwcmVzcyBhbmQgaGlkZSBvbiBjbGljayBvdXRzaWRlXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGhhbmRsZUVzY1ByZXNzID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgY2xvc2VQb3B1cCgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHBvcHVwQ3VycmVudCA9IGlubmVyUG9wdXBSZWYuY3VycmVudFxuICAgICAgICBjb25zdCBjaGlsZHJlbkN1cnJlbnQgPSBjaGlsZHJlblJlZi5jdXJyZW50XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBvcHVwQ3VycmVudCAmJlxuICAgICAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZSAmJlxuICAgICAgICAgICFldmVudC5kZWZhdWx0UHJldmVudGVkICYmXG4gICAgICAgICAgZXZlbnQudGFyZ2V0ICYmXG4gICAgICAgICAgZXZlbnQudGFyZ2V0ICE9PSBwb3B1cEN1cnJlbnQgJiZcbiAgICAgICAgICBldmVudC50YXJnZXQgIT09IGNoaWxkcmVuQ3VycmVudCAmJlxuICAgICAgICAgICFjaGlsZHJlbkN1cnJlbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3B1cEN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpXG4gICAgICAgICkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodmlzaWJsZUluRG9tKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBoYW5kbGVFc2NQcmVzcylcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIGhhbmRsZUVzY1ByZXNzKVxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGNsb3NlUG9wdXAsXG4gICAgICB2aXNpYmxlSW5Eb20sXG4gICAgICBpbm5lclBvcHVwUmVmLFxuICAgICAgY2hpbGRyZW5SZWYsXG4gICAgICBoaWRlT25DbGlja091dHNpZGUsXG4gICAgXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZXZlbnQgd2lsbCBvY2N1ciBvbmx5IGZvciBkaWFsb2cgYW5kIHdpbGwgdHJhcCBmb2N1cyBpbnNpZGUgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjb25zdCBoYW5kbGVGb2N1c1RyYXA6IEtleWJvYXJkRXZlbnRIYW5kbGVyID0gdXNlQ2FsbGJhY2soZXZlbnQgPT4ge1xuICAgICAgY29uc3QgaXNUYWJQcmVzc2VkID0gZXZlbnQua2V5ID09PSAnVGFiJ1xuICAgICAgaWYgKCFpc1RhYlByZXNzZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuXG4gICAgICBjb25zdCBmb2N1c2FibGVFbHMgPVxuICAgICAgICBpbm5lclBvcHVwUmVmLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgJ2FbaHJlZl06bm90KFtkaXNhYmxlZF0pLCBidXR0b246bm90KFtkaXNhYmxlZF0pLCB0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSksIGlucHV0Om5vdChbZGlzYWJsZWRdKSwgc2VsZWN0Om5vdChbZGlzYWJsZWRdKScsXG4gICAgICAgICkgPz8gW11cblxuICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlbiBubyBpbnRlcmFjdGl2ZSBlbGVtZW50IGFyZSB3aXRoaW4gdGhlIG1vZGFsIChpbmNsdWRpbmcgY2xvc2UgaWNvbilcbiAgICAgIGlmIChmb2N1c2FibGVFbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlyc3RGb2N1c2FibGVFbCA9IGZvY3VzYWJsZUVsc1swXSBhcyBIVE1MRWxlbWVudFxuICAgICAgY29uc3QgbGFzdEZvY3VzYWJsZUVsID0gZm9jdXNhYmxlRWxzW1xuICAgICAgICBmb2N1c2FibGVFbHMubGVuZ3RoIC0gMVxuICAgICAgXSBhcyBIVE1MRWxlbWVudFxuXG4gICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGZpcnN0Rm9jdXNhYmxlRWwgfHxcbiAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgbGFzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGxhc3RGb2N1c2FibGVFbCB8fFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBmaXJzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgfVxuICAgIH0sIFtdKVxuXG4gICAgLyoqXG4gICAgICogV2lsbCByZW5kZXIgY2hpbGRyZW4gY29uZGl0aW9uYWxseSBpZiBjaGlsZHJlbiBpcyBhIGZ1bmN0aW9uIG9yIG5vdC5cbiAgICAgKi9cbiAgICBjb25zdCByZW5kZXJDaGlsZHJlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuKHtcbiAgICAgICAgICBvbkJsdXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIG9uRm9jdXM6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyRW50ZXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyTGVhdmU6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIHJlZjogY2hpbGRyZW5SZWYsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRDaGlsZHJlbkNvbnRhaW5lclxuICAgICAgICAgIGFyaWEtY29udHJvbHM9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIGFyaWEtaGFzcG9wdXA9e2FyaWFIYXNQb3B1cH1cbiAgICAgICAgICBkYXRhLWNvbnRhaW5lci1mdWxsLWhlaWdodD17Y29udGFpbmVyRnVsbEhlaWdodH1cbiAgICAgICAgICBkYXRhLWNvbnRhaW5lci1mdWxsLXdpZHRoPXtjb250YWluZXJGdWxsV2lkdGh9XG4gICAgICAgICAgb25CbHVyPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcH1cbiAgICAgICAgICBvbkZvY3VzPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wfVxuICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgb25LZXlEb3duPy4oZXZlbnQpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblBvaW50ZXJFbnRlcj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgcmVmPXtjaGlsZHJlblJlZn1cbiAgICAgICAgICB0YWJJbmRleD17dGFiSW5kZXh9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvU3R5bGVkQ2hpbGRyZW5Db250YWluZXI+XG4gICAgICApXG4gICAgfSwgW1xuICAgICAgYXJpYUhhc1BvcHVwLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjb250YWluZXJGdWxsSGVpZ2h0LFxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoLFxuICAgICAgZ2VuZXJhdGVkSWQsXG4gICAgICBpc0NvbnRyb2xsZWQsXG4gICAgICBvbktleURvd24sXG4gICAgICBvblBvaW50ZXJFdmVudCxcbiAgICAgIHRhYkluZGV4LFxuICAgIF0pXG5cbiAgICBjb25zdCBzaG91bGRSZW5kZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmICghZHluYW1pY0RvbVJlbmRlcmluZykge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZHluYW1pY0RvbVJlbmRlcmluZyAmJiB2aXNpYmxlSW5Eb20pIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSwgW2R5bmFtaWNEb21SZW5kZXJpbmcsIHZpc2libGVJbkRvbV0pXG5cbiAgICBpZiAoIXRleHQpIHtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNoaWxkcmVuXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIHtyZW5kZXJDaGlsZHJlbigpfVxuICAgICAgICB7c2hvdWxkUmVuZGVyXG4gICAgICAgICAgPyBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICAgIDxTdHlsZWRQb3B1cFxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uPXthbmltYXRpb25EdXJhdGlvbn1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICBkYXRhLWFuaW1hdGVkPXthbmltYXRpb25EdXJhdGlvbiA+IDAgJiYgIW1heEhlaWdodH1cbiAgICAgICAgICAgICAgICBkYXRhLWhhcy1hcnJvdz17aGFzQXJyb3d9XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWR9XG4gICAgICAgICAgICAgICAgZGF0YS12aXNpYmxlLWluLWRvbT17XG4gICAgICAgICAgICAgICAgICAhZHluYW1pY0RvbVJlbmRlcmluZyA/IHZpc2libGVJbkRvbSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZD17Z2VuZXJhdGVkSWR9XG4gICAgICAgICAgICAgICAgaXNEaWFsb2c9e3JvbGUgPT09ICdkaWFsb2cnfVxuICAgICAgICAgICAgICAgIG1heEhlaWdodD17bWF4SGVpZ2h0fVxuICAgICAgICAgICAgICAgIG1heFdpZHRoPXttYXhXaWR0aH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtzdG9wQ2xpY2tQcm9wYWdhdGlvbn1cbiAgICAgICAgICAgICAgICBvbktleURvd249e3JvbGUgPT09ICdkaWFsb2cnID8gaGFuZGxlRm9jdXNUcmFwIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgIG9uUG9pbnRlckVudGVyPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wfVxuICAgICAgICAgICAgICAgIG9uUG9pbnRlckxlYXZlPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcH1cbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM9e3Bvc2l0aW9uc31cbiAgICAgICAgICAgICAgICByZWY9e2lubmVyUG9wdXBSZWZ9XG4gICAgICAgICAgICAgICAgcmV2ZXJzZUFuaW1hdGlvbj17cmV2ZXJzZUFuaW1hdGlvbn1cbiAgICAgICAgICAgICAgICByb2xlPXtyb2xlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RleHR9XG4gICAgICAgICAgICAgIDwvU3R5bGVkUG9wdXA+LFxuICAgICAgICAgICAgICBwb3B1cFBvcnRhbFRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IG51bGx9XG4gICAgICA8Lz5cbiAgICApXG4gIH0sXG4pXG4iXX0= */"));
62
- const StyledChildrenContainer = /* @__PURE__ */ _styled__default.default("div", process.env.NODE_ENV === "production" ? {
63
- target: "e4h1g860"
64
- } : {
65
- target: "e4h1g860",
66
- label: "StyledChildrenContainer"
67
- })(process.env.NODE_ENV === "production" ? {
68
- name: "1e1nei5",
69
- styles: 'display:inherit;&[data-container-full-height="true"]{height:100%;}&[data-container-full-width="true"]{width:100%;}'
70
- } : {
71
- name: "1e1nei5",
72
- styles: 'display:inherit;&[data-container-full-height="true"]{height:100%;}&[data-container-full-width="true"]{width:100%;}/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvSGlEIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuaW1wb3J0IHR5cGUge1xuICBIVE1MQXR0cmlidXRlcyxcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIE1vdXNlRXZlbnRIYW5kbGVyLFxuICBSZWFjdE5vZGUsXG4gIFJlZixcbiAgUmVmT2JqZWN0LFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIGZvcndhcmRSZWYsXG4gIHN0YXJ0VHJhbnNpdGlvbixcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlSWQsXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgaXNDbGllbnRTaWRlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pc0NsaWVudFNpZGUnXG5pbXBvcnQgdHlwZSB7IFBvc2l0aW9uc1R5cGUgfSBmcm9tICcuL2FuaW1hdGlvbnMnXG5pbXBvcnQgeyBhbmltYXRpb24sIGV4aXRBbmltYXRpb24gfSBmcm9tICcuL2FuaW1hdGlvbnMnXG5pbXBvcnQgdHlwZSB7IFBvcHVwQWxpZ24sIFBvcHVwUGxhY2VtZW50IH0gZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0IHtcbiAgY29tcHV0ZVBvc2l0aW9ucyxcbiAgREVGQVVMVF9BUlJPV19XSURUSCxcbiAgREVGQVVMVF9QT1NJVElPTlMsXG59IGZyb20gJy4vaGVscGVycydcblxuY29uc3QgREVGQVVMVF9BTklNQVRJT05fRFVSQVRJT04gPSAyMzAgLy8gaW4gbXNcbmNvbnN0IERFRkFVTFRfREVCT1VOQ0VfRFVSQVRJT04gPSAyMDAgLy8gaW4gbXNcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5cbnR5cGUgU3R5bGVkUG9wdXBQcm9wcyA9IHtcbiAgbWF4V2lkdGg6IG51bWJlciB8IHN0cmluZ1xuICBwb3NpdGlvbnM6IFBvc2l0aW9uc1R5cGVcbiAgcmV2ZXJzZUFuaW1hdGlvbjogYm9vbGVhblxuICBtYXhIZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgYW5pbWF0aW9uRHVyYXRpb24/OiBudW1iZXJcbiAgaXNEaWFsb2c6IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBUaGlzIGV2ZW50IGhhbmRsZSBhbGxvdyB1cyB0byBub3QgYnViYmxlIHRoZSBldmVudCB0byBkb2N1bWVudC5ib2R5IGxpa2UgdGhpcyByZWFjdC1zZWxlY3Qgd29ya3MgZmluZVxuICovXG5jb25zdCBzdG9wQ2xpY2tQcm9wYWdhdGlvbjogTW91c2VFdmVudEhhbmRsZXIgPSBldmVudCA9PiB7XG4gIGV2ZW50Lm5hdGl2ZUV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG59XG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKCdkaXYnLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiBwcm9wID0+XG4gICAgIVtcbiAgICAgICdtYXhXaWR0aCcsXG4gICAgICAncG9zaXRpb25zJyxcbiAgICAgICdyZXZlcnNlQW5pbWF0aW9uJyxcbiAgICAgICdtYXhIZWlnaHQnLFxuICAgICAgJ2FuaW1hdGlvbkR1cmF0aW9uJyxcbiAgICAgICdpc0RpYWxvZycsXG4gICAgXS5pbmNsdWRlcyhwcm9wKSxcbn0pPFN0eWxlZFBvcHVwUHJvcHM+YFxuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdlcn07XG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHRTdHJvbmdlcn07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gYCR7dGhlbWUuc3BhY2VbJzAuNSddfSAke3RoZW1lLnNwYWNlWycxJ119YH07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXgtd2lkdGg6ICR7KHsgbWF4V2lkdGggfSkgPT5cbiAgICB0eXBlb2YgbWF4V2lkdGggPT09ICdudW1iZXInID8gYCR7bWF4V2lkdGh9cHhgIDogbWF4V2lkdGh9O1xuICBtYXgtaGVpZ2h0OiAkeyh7IG1heEhlaWdodCB9KSA9PlxuICAgIHR5cGVvZiBtYXhIZWlnaHQgPT09ICdudW1iZXInID8gYCR7bWF4SGVpZ2h0fXB4YCA6IG1heEhlaWdodH07XG4gIG92ZXJmbG93OiAkeyh7IG1heEhlaWdodCB9KSA9PiAobWF4SGVpZ2h0ID8gJ2F1dG8nIDogdW5kZWZpbmVkKX07XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBpbnNldDogMCBhdXRvIGF1dG8gMDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBvcGFjaXR5OiAwO1xuICB6LWluZGV4OiAxO1xuICB0cmFuc2Zvcm06ICR7KHsgcG9zaXRpb25zIH0pID0+IHBvc2l0aW9ucy5wb3B1cFBvc2l0aW9ufTtcblxuICAmW2RhdGEtYW5pbWF0ZWQ9XCJ0cnVlXCJdIHtcbiAgICBhbmltYXRpb246ICR7KHsgcG9zaXRpb25zLCByZXZlcnNlQW5pbWF0aW9uLCBhbmltYXRpb25EdXJhdGlvbiB9KSA9PiBjc3NgXG4gICAgICAke2FuaW1hdGlvbkR1cmF0aW9ufW1zICR7XG4gICAgICAgICFyZXZlcnNlQW5pbWF0aW9uID8gYW5pbWF0aW9uKHBvc2l0aW9ucykgOiBleGl0QW5pbWF0aW9uKHBvc2l0aW9ucylcbiAgICAgIH0gZm9yd2FyZHNcbiAgICBgfTtcbiAgfVxuXG4gICZbZGF0YS1oYXMtYXJyb3c9XCJ0cnVlXCJdIHtcbiAgICAmOjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VG9wfXB4O1xuICAgICAgbGVmdDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93TGVmdH1weDtcbiAgICAgIHRyYW5zZm9ybTogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VHJhbnNmb3JtfVxuICAgICAgICByb3RhdGUoJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLnJvdGF0ZX1kZWcpO1xuICAgICAgbWFyZ2luLWxlZnQ6IC0ke0RFRkFVTFRfQVJST1dfV0lEVEh9cHg7XG4gICAgICBib3JkZXItd2lkdGg6ICR7REVGQVVMVF9BUlJPV19XSURUSH1weDtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICBib3JkZXItY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ2VyfVxuICAgICAgICB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxuXG4gICZbZGF0YS12aXNpYmxlLWluLWRvbT1cImZhbHNlXCJdIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5gXG5cbmV4cG9ydCBjb25zdCBTdHlsZWRDaGlsZHJlbkNvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGluaGVyaXQ7XG5cblxuICAmW2RhdGEtY29udGFpbmVyLWZ1bGwtaGVpZ2h0PVwidHJ1ZVwiXSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG5cbiAgJltkYXRhLWNvbnRhaW5lci1mdWxsLXdpZHRoPVwidHJ1ZVwiXSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbmBcblxudHlwZSBQb3B1cFByb3BzID0ge1xuICAvKipcbiAgICogSWQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgaWYgbm90IHNldC4gSXQgaXMgdXNlZCBmb3IgYXNzb2NpYXRpbmcgcG9wdXAgd3JhcHBlciB3aXRoIHBvcHVwIHBvcnRhbC5cbiAgICovXG4gIGlkPzogc3RyaW5nXG4gIGNoaWxkcmVuOlxuICAgIHwgUmVhY3ROb2RlXG4gICAgfCAoKHJlbmRlclByb3BzOiB7XG4gICAgICAgIGNsYXNzTmFtZT86IHN0cmluZ1xuICAgICAgICBvbkJsdXI6ICgpID0+IHZvaWRcbiAgICAgICAgb25Gb2N1czogKCkgPT4gdm9pZFxuICAgICAgICBvblBvaW50ZXJFbnRlcjogKCkgPT4gdm9pZFxuICAgICAgICBvblBvaW50ZXJMZWF2ZTogKCkgPT4gdm9pZFxuICAgICAgICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gICAgICB9KSA9PiBSZWFjdE5vZGUpXG4gIG1heFdpZHRoPzogbnVtYmVyIHwgc3RyaW5nXG4gIC8qKlxuICAgKiBgYXV0b2AgcGxhY2VtZW50IHdpbGwgY2hhbmdlIHRoZSBwb3NpdGlvbiBvZiB0aGUgcG9wdXAgaWYgaXQgZG9lc24ndCBmaXQgaW4gdGhlIHZpZXdwb3J0LlxuICAgKi9cbiAgcGxhY2VtZW50PzogUG9wdXBQbGFjZW1lbnRcbiAgLyoqXG4gICAqIEFsaWduIHRoZSBwb3B1cCB0byB0aGUgc3RhcnQgb3IgY2VudGVyIG9mIHRoZSBjaGlsZHJlbi5cbiAgICovXG4gIGFsaWduPzogUG9wdXBBbGlnblxuICAvKipcbiAgICogQ29udGVudCBvZiB0aGUgcG9wdXAsIHByZWZlcmFibHkgdGV4dCBpbnNpZGUuXG4gICAqL1xuICB0ZXh0PzogUmVhY3ROb2RlXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogSXQgd2lsbCBhZGQgYHdpZHRoOiAxMDAlYCB0byB0aGUgcG9wdXAgY29udGFpbmVyLlxuICAgKi9cbiAgY29udGFpbmVyRnVsbFdpZHRoPzogYm9vbGVhblxuICAvKipcbiAgICogSXQgd2lsbCBhZGQgYGhlaWdodDogMTAwJWAgdG8gdGhlIHBvcHVwIGNvbnRhaW5lci5cbiAgICovXG4gIGNvbnRhaW5lckZ1bGxIZWlnaHQ/OiBib29sZWFuXG4gIC8qKlxuICAgKiBJdCB3aWxsIGZvcmNlIGRpc3BsYXkgcG9wdXAuIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB5b3UgbmVlZCB0byBhbHdheXMgZGlzcGxheSB0aGUgcG9wdXAgd2l0aG91dCBob3ZlciBuZWVkZWQuXG4gICAqL1xuICB2aXNpYmxlPzogYm9vbGVhblxuICBpbm5lclJlZj86IFJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gIHJvbGU/OiBzdHJpbmdcbiAgJ2RhdGEtdGVzdGlkJz86IHN0cmluZ1xuICBoYXNBcnJvdz86IGJvb2xlYW5cbiAgb25DbG9zZT86ICgpID0+IHZvaWRcbiAgdGFiSW5kZXg/OiBudW1iZXJcbiAgb25LZXlEb3duPzogS2V5Ym9hcmRFdmVudEhhbmRsZXJcbiAgJ2FyaWEtaGFzcG9wdXAnPzogSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+WydhcmlhLWhhc3BvcHVwJ11cbiAgaGlkZU9uQ2xpY2tPdXRzaWRlPzogYm9vbGVhblxuICAvKipcbiAgICogSWYgeW91IHNldCBkZWJvdW5jZVRpbWUgdG8gZmFsc2UsIHRoZSBwb3B1cCB3aWxsIG5vdCBkZWJvdW5jZSB0aGUgaG92ZXIgZXZlbnQgYW5kIHdpbGwgYmUgZGlzcGxheWVkIGluc3RhbnRseS5cbiAgICogSWYgc2V0IHRvIDAgaXQgd2lsbCBkaXNhYmxlIGRlYm91bmNlLlxuICAgKi9cbiAgZGVib3VuY2VEZWxheT86IG51bWJlclxuICAvKipcbiAgICogSWYgeW91IHNldCBhIG1heCBoZWlnaHQga2VlcCBpbiBtaW5kIHRoYXQgdGhlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgb3IgaXQgd2lsbCBub3Qgd29yayBwcm9wZXJseSBvbiBzb21lIGJyb3dzZXJzLlxuICAgKi9cbiAgbWF4SGVpZ2h0Pzogc3RyaW5nIHwgbnVtYmVyXG4gIC8qKlxuICAgKiBXaWxsIHJlbW92ZSB0aGUgYW5pbWF0aW9uIG9uIHRoZSBwb3B1cCBpZiBzZXQgdG8gZmFsc2UuXG4gICAqL1xuICBkaXNhYmxlQW5pbWF0aW9uPzogYm9vbGVhblxuICAvKipcbiAgICogQnkgZGVmYXVsdCwgdGhlIHBvcnRhbCB0YXJnZXQgaXMgY2hpbGRyZW4gY29udGFpbmVyIG9yIGRvY3VtZW50LmJvZHkgaWYgY2hpbGRyZW4gaXMgYSBmdW5jdGlvbi4gWW91IGNhbiBvdmVycmlkZSB0aGlzXG4gICAqIGJlaGF2aW9yIGJ5IHNldHRpbmcgYSBwb3J0YWxUYXJnZXQgcHJvcC5cbiAgICovXG4gIHBvcnRhbFRhcmdldD86IEhUTUxFbGVtZW50XG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IHRoaXMgdG8gdHJ1ZSwgdGhlIHBvcHVwIHdpbGwgYmUgcmVuZGVyZWQgaW4gdGhlIERPTSBvbmx5IHdoZW4gaXQgaXMgdmlzaWJsZS5cbiAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHRoZSBwb3B1cCB3aWxsIGFsd2F5cyBiZSByZW5kZXJlZCBpbiB0aGUgRE9NLiBCeSBkZWZhdWx0IHRoaXMgdmFsdWUgaXMgc2V0IHRvIGB0cnVlYCwgaWYgZm9yIHNvbWVcbiAgICogcmVhc29uIHlvdSBuZWVkIHRvIGRpc2FibGUgaXQsIHlvdSBjYW4gc2V0IGl0IHRvIGBmYWxzZWAuXG4gICAqL1xuICBkeW5hbWljRG9tUmVuZGVyaW5nPzogYm9vbGVhblxufVxuXG4vKipcbiAqIEBleHBlcmltZW50YWwgVGhpcyBjb21wb25lbnQgaXMgZXhwZXJpbWVudGFsIGFuZCBtYXkgYmUgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIHRoZSBmdXR1cmUuXG4gKi9cbmV4cG9ydCBjb25zdCBQb3B1cCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIHRleHQgPSAnJyxcbiAgICAgIHBsYWNlbWVudCA9ICdhdXRvJyxcbiAgICAgIGFsaWduID0gJ2NlbnRlcicsXG4gICAgICBpZCxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbnRhaW5lckZ1bGxXaWR0aCxcbiAgICAgIGNvbnRhaW5lckZ1bGxIZWlnaHQsXG4gICAgICBtYXhXaWR0aCA9ICcxNC41cmVtJyxcbiAgICAgIG1heEhlaWdodCxcbiAgICAgIHZpc2libGUsXG4gICAgICBpbm5lclJlZixcbiAgICAgIHJvbGUgPSAncG9wdXAnLFxuICAgICAgJ2RhdGEtdGVzdGlkJzogZGF0YVRlc3RJZCxcbiAgICAgIGhhc0Fycm93ID0gdHJ1ZSxcbiAgICAgIG9uQ2xvc2UsXG4gICAgICB0YWJJbmRleCA9IDAsXG4gICAgICBvbktleURvd24sXG4gICAgICAnYXJpYS1oYXNwb3B1cCc6IGFyaWFIYXNQb3B1cCxcbiAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZSA9IGZhbHNlLFxuICAgICAgZGVib3VuY2VEZWxheSA9IERFRkFVTFRfREVCT1VOQ0VfRFVSQVRJT04sXG4gICAgICBkaXNhYmxlQW5pbWF0aW9uID0gZmFsc2UsXG4gICAgICBwb3J0YWxUYXJnZXQsXG4gICAgICBkeW5hbWljRG9tUmVuZGVyaW5nID0gdHJ1ZSxcbiAgICB9OiBQb3B1cFByb3BzLFxuICAgIHJlZjogUmVmPEhUTUxEaXZFbGVtZW50PixcbiAgKSA9PiB7XG4gICAgY29uc3QgY2hpbGRyZW5SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShpbm5lclJlZiwgKCkgPT4gY2hpbGRyZW5SZWYuY3VycmVudCBhcyBIVE1MRGl2RWxlbWVudClcblxuICAgIGNvbnN0IGlubmVyUG9wdXBSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+IGlubmVyUG9wdXBSZWYuY3VycmVudCBhcyBIVE1MRGl2RWxlbWVudClcblxuICAgIGNvbnN0IHRpbWVyID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+Pih1bmRlZmluZWQpXG4gICAgY29uc3QgcG9wdXBQb3J0YWxUYXJnZXQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmIChwb3J0YWxUYXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIHBvcnRhbFRhcmdldFxuICAgICAgfVxuXG4gICAgICBpZiAocm9sZSA9PT0gJ2RpYWxvZycpIHtcbiAgICAgICAgaWYgKGNoaWxkcmVuUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICByZXR1cm4gY2hpbGRyZW5SZWYuY3VycmVudFxuICAgICAgICB9XG4gICAgICAgIGlmIChpc0NsaWVudFNpZGUpIHtcbiAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgLy8gV2UgY2hlY2sgaWYgd2luZG93IGV4aXN0cyBmb3IgU1NSXG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmJvZHlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGxcbiAgICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbcG9ydGFsVGFyZ2V0LCByb2xlLCBjaGlsZHJlblJlZi5jdXJyZW50XSlcblxuICAgIC8vIFRoZXJlIGFyZSBzb21lIGlzc3VlIHdoZW4gbWl4aW5nIGFuaW1hdGlvbiBhbmQgbWF4SGVpZ2h0IG9uIHNvbWUgYnJvd3NlcnMsIHNvIHdlIGRpc2FibGUgYW5pbWF0aW9uIGlmIG1heEhlaWdodCBpcyBzZXQuXG4gICAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPVxuICAgICAgZGlzYWJsZUFuaW1hdGlvbiB8fCBtYXhIZWlnaHQgPyAwIDogREVGQVVMVF9BTklNQVRJT05fRFVSQVRJT05cblxuICAgIC8vIERlYm91bmNlIHRpbWVyIHdpbGwgYmUgdXNlZCB0byBwcmV2ZW50IHRoZSBwb3B1cCBmcm9tIGZsaWNrZXJpbmcgd2hlbiB0aGUgdXNlciBtb3ZlcyB0aGUgbW91c2Ugb3V0IGFuZCBpbiB0aGUgY2hpbGRyZW4gZWxlbWVudC5cbiAgICBjb25zdCBkZWJvdW5jZVRpbWVyID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+Pih1bmRlZmluZWQpXG4gICAgY29uc3QgW3Zpc2libGVJbkRvbSwgc2V0VmlzaWJsZUluRG9tXSA9IHVzZVN0YXRlKGZhbHNlKVxuICAgIGNvbnN0IFtyZXZlcnNlQW5pbWF0aW9uLCBzZXRSZXZlcnNlQW5pbWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKVxuICAgIGNvbnN0IFtwb3NpdGlvbnMsIHNldFBvc2l0aW9uc10gPSB1c2VTdGF0ZTxQb3NpdGlvbnNUeXBlPih7XG4gICAgICAuLi5ERUZBVUxUX1BPU0lUSU9OUyxcbiAgICB9KVxuICAgIGNvbnN0IHVuaXF1ZUlkID0gdXNlSWQoKVxuICAgIGNvbnN0IGdlbmVyYXRlZElkID0gaWQgPz8gdW5pcXVlSWRcbiAgICBjb25zdCBpc0NvbnRyb2xsZWQgPSB2aXNpYmxlICE9PSB1bmRlZmluZWRcblxuICAgIGNvbnN0IGdlbmVyYXRlUG9wdXBQb3NpdGlvbnMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAoY2hpbGRyZW5SZWYuY3VycmVudCAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2V0UG9zaXRpb25zKFxuICAgICAgICAgIGNvbXB1dGVQb3NpdGlvbnMoe1xuICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgICBjaGlsZHJlblJlZixcbiAgICAgICAgICAgIGhhc0Fycm93LFxuICAgICAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICAgICAgcG9wdXBQb3J0YWxUYXJnZXQ6IHBvcHVwUG9ydGFsVGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgcG9wdXBSZWY6IGlubmVyUG9wdXBSZWYsXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9LCBbaGFzQXJyb3csIHBsYWNlbWVudCwgcG9wdXBQb3J0YWxUYXJnZXQsIGFsaWduXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gd2UgbmVlZCB0byByZWNvbXB1dGUgcG9zaXRpb25zIG9mIHBvcHVwIGR1ZSB0byB3aW5kb3cgc2Nyb2xsIG9yIHJlc2l6ZS5cbiAgICAgKi9cbiAgICBjb25zdCBvbldpbmRvd0NoYW5nZURldGVjdGVkID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgLy8gV2UgcmVtb3ZlIGFuaW1hdGlvbiBvbiBzY3JvbGwgb3IgdGhlIGFuaW1hdGlvbiB3aWxsIHJlc3RhcnQgb24gZXZlcnkgc2Nyb2xsXG4gICAgICBpZiAoaW5uZXJQb3B1cFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGlubmVyUG9wdXBSZWYuY3VycmVudC5zdHlsZS5hbmltYXRpb24gPSAnbm9uZSdcbiAgICAgIH1cblxuICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucygpXG4gICAgfSwgW2dlbmVyYXRlUG9wdXBQb3NpdGlvbnMsIGlubmVyUG9wdXBSZWZdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIHJlbW92ZSBwb3B1cCBwb3J0YWwgZnJvbSBET00gYW5kIHJlbW92ZSBldmVudCBsaXN0ZW5lciB0byBpdC5cbiAgICAgKi9cbiAgICBjb25zdCB1bm1vdW50UG9wdXBGcm9tRG9tID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgc2V0VmlzaWJsZUluRG9tKGZhbHNlKVxuICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbihmYWxzZSlcblxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgfSwgW29uV2luZG93Q2hhbmdlRGV0ZWN0ZWRdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIGhpZGUgcG9wdXAuIEEgdGltZW91dCBpcyBzZXQgdG8gYWxsb3cgYW5pbWF0aW9uIGVuZCwgdGhlbiByZW1vdmVcbiAgICAgKiBwb3B1cCBmcm9tIGRvbS5cbiAgICAgKi9cbiAgICBjb25zdCBjbG9zZVBvcHVwID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgY29uc3QgY2xvc2VGdW5jdGlvbiA9ICgpID0+IHtcbiAgICAgICAgaWYgKCFkaXNhYmxlQW5pbWF0aW9uKSB7XG4gICAgICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbih0cnVlKVxuXG4gICAgICAgICAgdGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgb25DbG9zZT8uKClcbiAgICAgICAgICAgIHVubW91bnRQb3B1cEZyb21Eb20oKVxuICAgICAgICAgIH0sIGFuaW1hdGlvbkR1cmF0aW9uKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uQ2xvc2U/LigpXG4gICAgICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFkaXNhYmxlQW5pbWF0aW9uKSB7XG4gICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgY2xvc2VGdW5jdGlvbigpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZWJvdW5jZURlbGF5ICYmICFkaXNhYmxlQW5pbWF0aW9uID8gZGVib3VuY2VEZWxheSA6IDAsXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsb3NlRnVuY3Rpb24oKVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGFuaW1hdGlvbkR1cmF0aW9uLFxuICAgICAgZGlzYWJsZUFuaW1hdGlvbixcbiAgICAgIGRlYm91bmNlRGVsYXksXG4gICAgICBvbkNsb3NlLFxuICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSxcbiAgICBdKVxuXG4gICAgLyoqXG4gICAgICogV2hlbiBtb3VzZSBob3ZlciBvciBzdG9wIGhvdmVyaW5nIGNoaWxkcmVuIHRoaXMgZnVuY3Rpb24gZGlzcGxheSBvciBoaWRlIHBvcHVwLiBBIHRpbWVvdXQgaXMgc2V0IHRvIGFsbG93IGFuaW1hdGlvblxuICAgICAqIGVuZCwgdGhlbiByZW1vdmUgcG9wdXAgZnJvbSBkb20uXG4gICAgICovXG4gICAgY29uc3Qgb25Qb2ludGVyRXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAgIChpc1Zpc2libGU6IGJvb2xlYW4pID0+ICgpID0+IHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWJvdW5jZURlbGF5IGFuZCB0aGUgcG9wdXAgaXMgbm90IHZpc2libGUsIHdlIGNsZWFyIHRoZSBkZWJvdW5jZSB0aW1lclxuICAgICAgICBpZiAoIXZpc2libGUgJiYgZGVib3VuY2VEZWxheSA+IDAgJiYgZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudClcbiAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gdW5tb3VudCB0aGUgcG9wdXBcbiAgICAgICAgLy8gVGhlcmUgaXMgZGVib3VuY2UgaW4gb3JkZXIgdG8gYXZvaWQgcG9wdXAgdG8gZmxpY2tlciB3aGVuIHdlIG1vdmUgdGhlIG1vdXNlIGZyb20gY2hpbGRyZW4gdG8gcG9wdXBcbiAgICAgICAgLy8gVGltZXIgaXMgdXNlZCB0byBmb2xsb3cgdGhlIGFuaW1hdGlvbiBkdXJhdGlvblxuICAgICAgICBpZiAoIWlzVmlzaWJsZSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQgJiYgIWRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICB9IGVsc2UgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gbW91bnQgdGhlIHBvcHVwXG4gICAgICAgICAgLy8gSWYgdGhlIHRpbWVyIGV4aXN0cyBpdCBtZWFucyB0aGUgcG9wdXAgd2FzIGFib3V0IHRvIHVtb3VudCwgYnV0IHdlIGhvdmVyZWQgdGhlIGNoaWxkcmVuIGFnYWluLFxuICAgICAgICAgIC8vIHNvIHdlIGNsZWFyIHRoZSB0aW1lciBhbmQgdGhlIHBvcHVwIHdpbGwgbm90IGJlIHVubW91bnRlZFxuICAgICAgICAgIGlmICh0aW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgICBzZXRSZXZlcnNlQW5pbWF0aW9uKGZhbHNlKVxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICB0aW1lci5jdXJyZW50ID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEFuZCBoZXJlIGlzIHdoZW4gd2UgY3VycmVudGx5IGFyZSBpbiBhIGRlYm91bmNlIHRpbWVyLCBpdCBtZWFucyBwb3B1cCB3YXMgaG92ZXJlZCBkdXJpbmdcbiAgICAgICAgICAvLyB0aGF0IHBlcmlvZCwgYW5kIHNvIHdlIGNhbiBjbGVhciBkZWJvdW5jZSB0aW1lclxuICAgICAgICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGRlYm91bmNlRGVsYXkgPiAwKSB7XG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgc2V0VmlzaWJsZUluRG9tKHRydWUpXG4gICAgICAgICAgICB9LCBkZWJvdW5jZURlbGF5KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgICAgICAgICBzZXRWaXNpYmxlSW5Eb20odHJ1ZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW2Nsb3NlUG9wdXAsIGRlYm91bmNlRGVsYXksIHZpc2libGVdLFxuICAgIClcblxuICAgIC8qKlxuICAgICAqIE9uY2UgcG9wdXAgaXMgdmlzaWJsZSBpbiB0aGUgZG9tIHdlIGNhbiBjb21wdXRlIHBvc2l0aW9ucywgdGhlbiBzZXQgaXQgdmlzaWJsZSBvbiBzY3JlZW4gYW5kIGFkZCBldmVudCB0b1xuICAgICAqIHJlY29tcHV0ZSBwb3NpdGlvbnMgb24gc2Nyb2xsIG9yIHNjcmVlbiByZXNpemUuXG4gICAgICovXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh2aXNpYmxlSW5Eb20pIHtcbiAgICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucygpXG5cbiAgICAgICAgaWYgKHBvcHVwUG9ydGFsVGFyZ2V0ID09PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICAgICAgLy8gV2Ugd2FudCB0byBkZXRlY3Qgc2Nyb2xsIGFuZCByZXNpemUgaW4gb3JkZXIgdG8gcmVjb21wdXRlIHBvc2l0aW9ucyBvZiBwb3B1cFxuICAgICAgICAgIC8vIEFkZGluZyB0cnVlIGFzIHRoaXJkIHBhcmFtZXRlciB0byBldmVudCBsaXN0ZW5lciB3aWxsIGRldGVjdCBuZXN0ZWQgc2Nyb2xscy5cbiAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgICAgfVxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgICAgICBpZiAodGltZXIuY3VycmVudCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lci5jdXJyZW50KVxuICAgICAgICAgIHRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGdlbmVyYXRlUG9wdXBQb3NpdGlvbnMsXG4gICAgICBvbldpbmRvd0NoYW5nZURldGVjdGVkLFxuICAgICAgdmlzaWJsZUluRG9tLFxuICAgICAgbWF4V2lkdGgsXG4gICAgICBwb3B1cFBvcnRhbFRhcmdldCxcbiAgICBdKVxuXG4gICAgLy8gVGhpcyB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIHBvc2l0aW9ucyBhcmUgY29tcHV0ZWQgYW5kIHBvcHVwIGlzIHZpc2libGUgaW4gdGhlIGRvbS5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHZpc2libGVJbkRvbSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaW5uZXJQb3B1cFJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSAnMSdcbiAgICAgIH1cbiAgICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbcG9zaXRpb25zXSlcblxuICAgIC8qKlxuICAgICAqIElmIHBvcHVwIGhhcyBgdmlzaWJsZWAgcHJvcCBpdCBtZWFucyB0aGUgcG9wdXAgaXMgbWFudWFsbHkgY29udHJvbGxlZCB0aHJvdWdoIHRoaXMgcHJvcC5cbiAgICAgKiBJbiB0aGlzIGNhcyB3ZSBkb24ndCB3YW50IHRvIGRpc3BsYXkgcG9wdXAgb24gaG92ZXIsIGJ1dCBvbmx5IHdoZW4gYHZpc2libGVgIGlzIHRydWUuXG4gICAgICovXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChpc0NvbnRyb2xsZWQpIHtcbiAgICAgICAgb25Qb2ludGVyRXZlbnQodmlzaWJsZSkoKVxuICAgICAgfVxuICAgIH0sIFtpc0NvbnRyb2xsZWQsIG9uUG9pbnRlckV2ZW50LCB2aXNpYmxlXSlcblxuICAgIC8vIEhhbmRsZSBoaWRlIG9uIGVzYyBwcmVzcyBhbmQgaGlkZSBvbiBjbGljayBvdXRzaWRlXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGhhbmRsZUVzY1ByZXNzID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgY2xvc2VQb3B1cCgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHBvcHVwQ3VycmVudCA9IGlubmVyUG9wdXBSZWYuY3VycmVudFxuICAgICAgICBjb25zdCBjaGlsZHJlbkN1cnJlbnQgPSBjaGlsZHJlblJlZi5jdXJyZW50XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBvcHVwQ3VycmVudCAmJlxuICAgICAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZSAmJlxuICAgICAgICAgICFldmVudC5kZWZhdWx0UHJldmVudGVkICYmXG4gICAgICAgICAgZXZlbnQudGFyZ2V0ICYmXG4gICAgICAgICAgZXZlbnQudGFyZ2V0ICE9PSBwb3B1cEN1cnJlbnQgJiZcbiAgICAgICAgICBldmVudC50YXJnZXQgIT09IGNoaWxkcmVuQ3VycmVudCAmJlxuICAgICAgICAgICFjaGlsZHJlbkN1cnJlbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3B1cEN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpXG4gICAgICAgICkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodmlzaWJsZUluRG9tKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBoYW5kbGVFc2NQcmVzcylcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIGhhbmRsZUVzY1ByZXNzKVxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGNsb3NlUG9wdXAsXG4gICAgICB2aXNpYmxlSW5Eb20sXG4gICAgICBpbm5lclBvcHVwUmVmLFxuICAgICAgY2hpbGRyZW5SZWYsXG4gICAgICBoaWRlT25DbGlja091dHNpZGUsXG4gICAgXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZXZlbnQgd2lsbCBvY2N1ciBvbmx5IGZvciBkaWFsb2cgYW5kIHdpbGwgdHJhcCBmb2N1cyBpbnNpZGUgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjb25zdCBoYW5kbGVGb2N1c1RyYXA6IEtleWJvYXJkRXZlbnRIYW5kbGVyID0gdXNlQ2FsbGJhY2soZXZlbnQgPT4ge1xuICAgICAgY29uc3QgaXNUYWJQcmVzc2VkID0gZXZlbnQua2V5ID09PSAnVGFiJ1xuICAgICAgaWYgKCFpc1RhYlByZXNzZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuXG4gICAgICBjb25zdCBmb2N1c2FibGVFbHMgPVxuICAgICAgICBpbm5lclBvcHVwUmVmLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgJ2FbaHJlZl06bm90KFtkaXNhYmxlZF0pLCBidXR0b246bm90KFtkaXNhYmxlZF0pLCB0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSksIGlucHV0Om5vdChbZGlzYWJsZWRdKSwgc2VsZWN0Om5vdChbZGlzYWJsZWRdKScsXG4gICAgICAgICkgPz8gW11cblxuICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlbiBubyBpbnRlcmFjdGl2ZSBlbGVtZW50IGFyZSB3aXRoaW4gdGhlIG1vZGFsIChpbmNsdWRpbmcgY2xvc2UgaWNvbilcbiAgICAgIGlmIChmb2N1c2FibGVFbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlyc3RGb2N1c2FibGVFbCA9IGZvY3VzYWJsZUVsc1swXSBhcyBIVE1MRWxlbWVudFxuICAgICAgY29uc3QgbGFzdEZvY3VzYWJsZUVsID0gZm9jdXNhYmxlRWxzW1xuICAgICAgICBmb2N1c2FibGVFbHMubGVuZ3RoIC0gMVxuICAgICAgXSBhcyBIVE1MRWxlbWVudFxuXG4gICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGZpcnN0Rm9jdXNhYmxlRWwgfHxcbiAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgbGFzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGxhc3RGb2N1c2FibGVFbCB8fFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBmaXJzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgfVxuICAgIH0sIFtdKVxuXG4gICAgLyoqXG4gICAgICogV2lsbCByZW5kZXIgY2hpbGRyZW4gY29uZGl0aW9uYWxseSBpZiBjaGlsZHJlbiBpcyBhIGZ1bmN0aW9uIG9yIG5vdC5cbiAgICAgKi9cbiAgICBjb25zdCByZW5kZXJDaGlsZHJlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuKHtcbiAgICAgICAgICBvbkJsdXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIG9uRm9jdXM6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyRW50ZXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyTGVhdmU6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIHJlZjogY2hpbGRyZW5SZWYsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRDaGlsZHJlbkNvbnRhaW5lclxuICAgICAgICAgIGFyaWEtY29udHJvbHM9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIGFyaWEtaGFzcG9wdXA9e2FyaWFIYXNQb3B1cH1cbiAgICAgICAgICBkYXRhLWNvbnRhaW5lci1mdWxsLWhlaWdodD17Y29udGFpbmVyRnVsbEhlaWdodH1cbiAgICAgICAgICBkYXRhLWNvbnRhaW5lci1mdWxsLXdpZHRoPXtjb250YWluZXJGdWxsV2lkdGh9XG4gICAgICAgICAgb25CbHVyPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcH1cbiAgICAgICAgICBvbkZvY3VzPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wfVxuICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgb25LZXlEb3duPy4oZXZlbnQpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblBvaW50ZXJFbnRlcj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgcmVmPXtjaGlsZHJlblJlZn1cbiAgICAgICAgICB0YWJJbmRleD17dGFiSW5kZXh9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvU3R5bGVkQ2hpbGRyZW5Db250YWluZXI+XG4gICAgICApXG4gICAgfSwgW1xuICAgICAgYXJpYUhhc1BvcHVwLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjb250YWluZXJGdWxsSGVpZ2h0LFxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoLFxuICAgICAgZ2VuZXJhdGVkSWQsXG4gICAgICBpc0NvbnRyb2xsZWQsXG4gICAgICBvbktleURvd24sXG4gICAgICBvblBvaW50ZXJFdmVudCxcbiAgICAgIHRhYkluZGV4LFxuICAgIF0pXG5cbiAgICBjb25zdCBzaG91bGRSZW5kZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmICghZHluYW1pY0RvbVJlbmRlcmluZykge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZHluYW1pY0RvbVJlbmRlcmluZyAmJiB2aXNpYmxlSW5Eb20pIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSwgW2R5bmFtaWNEb21SZW5kZXJpbmcsIHZpc2libGVJbkRvbV0pXG5cbiAgICBpZiAoIXRleHQpIHtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNoaWxkcmVuXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIHtyZW5kZXJDaGlsZHJlbigpfVxuICAgICAgICB7c2hvdWxkUmVuZGVyXG4gICAgICAgICAgPyBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICAgIDxTdHlsZWRQb3B1cFxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uPXthbmltYXRpb25EdXJhdGlvbn1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICBkYXRhLWFuaW1hdGVkPXthbmltYXRpb25EdXJhdGlvbiA+IDAgJiYgIW1heEhlaWdodH1cbiAgICAgICAgICAgICAgICBkYXRhLWhhcy1hcnJvdz17aGFzQXJyb3d9XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWR9XG4gICAgICAgICAgICAgICAgZGF0YS12aXNpYmxlLWluLWRvbT17XG4gICAgICAgICAgICAgICAgICAhZHluYW1pY0RvbVJlbmRlcmluZyA/IHZpc2libGVJbkRvbSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZD17Z2VuZXJhdGVkSWR9XG4gICAgICAgICAgICAgICAgaXNEaWFsb2c9e3JvbGUgPT09ICdkaWFsb2cnfVxuICAgICAgICAgICAgICAgIG1heEhlaWdodD17bWF4SGVpZ2h0fVxuICAgICAgICAgICAgICAgIG1heFdpZHRoPXttYXhXaWR0aH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtzdG9wQ2xpY2tQcm9wYWdhdGlvbn1cbiAgICAgICAgICAgICAgICBvbktleURvd249e3JvbGUgPT09ICdkaWFsb2cnID8gaGFuZGxlRm9jdXNUcmFwIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgIG9uUG9pbnRlckVudGVyPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wfVxuICAgICAgICAgICAgICAgIG9uUG9pbnRlckxlYXZlPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcH1cbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM9e3Bvc2l0aW9uc31cbiAgICAgICAgICAgICAgICByZWY9e2lubmVyUG9wdXBSZWZ9XG4gICAgICAgICAgICAgICAgcmV2ZXJzZUFuaW1hdGlvbj17cmV2ZXJzZUFuaW1hdGlvbn1cbiAgICAgICAgICAgICAgICByb2xlPXtyb2xlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RleHR9XG4gICAgICAgICAgICAgIDwvU3R5bGVkUG9wdXA+LFxuICAgICAgICAgICAgICBwb3B1cFBvcnRhbFRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IG51bGx9XG4gICAgICA8Lz5cbiAgICApXG4gIH0sXG4pXG4iXX0= */',
73
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__
74
- });
75
19
  const Popup = react.forwardRef(({
76
20
  children,
77
21
  text = "",
@@ -131,6 +75,7 @@ const Popup = react.forwardRef(({
131
75
  const uniqueId = react.useId();
132
76
  const generatedId = id ?? uniqueId;
133
77
  const isControlled = visible !== void 0;
78
+ const isAnimated = react.useMemo(() => animationDuration > 0 && !maxHeight, [animationDuration, maxHeight]);
134
79
  const generatePopupPositions = react.useCallback(() => {
135
80
  if (childrenRef.current && innerPopupRef.current) {
136
81
  setPositions(helpers.computePositions({
@@ -288,7 +233,10 @@ const Popup = react.forwardRef(({
288
233
  ref: childrenRef
289
234
  });
290
235
  }
291
- return /* @__PURE__ */ jsxRuntime.jsx(StyledChildrenContainer, { "aria-controls": generatedId, "aria-describedby": generatedId, "aria-haspopup": ariaHasPopup, "data-container-full-height": containerFullHeight, "data-container-full-width": containerFullWidth, onBlur: !isControlled ? onPointerEvent(false) : noop, onFocus: !isControlled ? onPointerEvent(true) : noop, onKeyDown: (event) => {
236
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { "aria-controls": generatedId, "aria-describedby": generatedId, "aria-haspopup": ariaHasPopup, className: styles_css.childrenContainerPopup({
237
+ fullHeight: containerFullHeight,
238
+ fullWidth: containerFullWidth
239
+ }), onBlur: !isControlled ? onPointerEvent(false) : noop, onFocus: !isControlled ? onPointerEvent(true) : noop, onKeyDown: (event) => {
292
240
  onKeyDown?.(event);
293
241
  }, onPointerEnter: !isControlled ? onPointerEvent(true) : noop, onPointerLeave: !isControlled ? onPointerEvent(false) : noop, ref: childrenRef, tabIndex, children });
294
242
  }, [ariaHasPopup, children, containerFullHeight, containerFullWidth, generatedId, isControlled, onKeyDown, onPointerEvent, tabIndex]);
@@ -309,8 +257,23 @@ const Popup = react.forwardRef(({
309
257
  }
310
258
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
311
259
  renderChildren(),
312
- shouldRender ? reactDom.createPortal(/* @__PURE__ */ jsxRuntime.jsx(StyledPopup, { animationDuration, className, "data-animated": animationDuration > 0 && !maxHeight, "data-has-arrow": hasArrow, "data-testid": dataTestId, "data-visible-in-dom": !dynamicDomRendering ? visibleInDom : void 0, id: generatedId, isDialog: role === "dialog", maxHeight, maxWidth, onClick: stopClickPropagation, onKeyDown: role === "dialog" ? handleFocusTrap : void 0, onPointerEnter: !isControlled ? onPointerEvent(true) : noop, onPointerLeave: !isControlled ? onPointerEvent(false) : noop, positions, ref: innerPopupRef, reverseAnimation, role, children: text }), popupPortalTarget) : null
260
+ shouldRender ? reactDom.createPortal(/* @__PURE__ */ jsxRuntime.jsx("div", { className: `${className ? `${className} ` : ""}${styles_css.popup({
261
+ hasArrow,
262
+ visibleInDom: !dynamicDomRendering ? visibleInDom : void 0
263
+ })} ${isAnimated ? styles_css.animationPopup[reverseAnimation ? "reverse" : "notReverse"] : null}`, "data-testid": dataTestId, "data-visible-in-dom": !dynamicDomRendering ? visibleInDom : void 0, id: generatedId, onClick: stopClickPropagation, onKeyDown: role === "dialog" ? handleFocusTrap : void 0, onPointerEnter: !isControlled ? onPointerEvent(true) : noop, onPointerLeave: !isControlled ? onPointerEvent(false) : noop, ref: innerPopupRef, role, style: dynamic.assignInlineVars({
264
+ [variables_css.arrowTop]: `${positions.arrowTop}px`,
265
+ [variables_css.arrowLeft]: `${positions.arrowLeft}px`,
266
+ [variables_css.arrowTransform]: `${positions.arrowTransform} rotate(${positions.rotate}deg)`,
267
+ [variables_css.popupPosition]: positions.popupPosition,
268
+ [variables_css.animationDurationPopup]: `${animationDuration}ms`,
269
+ [variables_css.popupInitialPosition]: positions.popupInitialPosition,
270
+ [variables_css.maxWidthPopup]: `${typeof maxWidth === "number" ? `${maxWidth}px` : maxWidth}`,
271
+ [variables_css.maxHeightPopup]: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight
272
+ }), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles_css.containerPopup({
273
+ hasMaxHeight: !!maxHeight
274
+ }), style: dynamic.assignInlineVars({
275
+ [variables_css.maxHeightPopup]: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight
276
+ }), children: text }) }), popupPortalTarget) : null
313
277
  ] });
314
278
  });
315
279
  exports.Popup = Popup;
316
- exports.StyledChildrenContainer = StyledChildrenContainer;
@@ -1,9 +1,14 @@
1
1
  import type { HTMLAttributes, KeyboardEventHandler, ReactNode, Ref, RefObject } from 'react';
2
2
  import type { PopupAlign, PopupPlacement } from './helpers';
3
- export declare const StyledChildrenContainer: import("@emotion/styled").StyledComponent<{
4
- theme?: import("@emotion/react").Theme;
5
- as?: React.ElementType;
6
- }, import("react").DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
3
+ export type PositionsType = {
4
+ arrowLeft: number;
5
+ arrowTop: number;
6
+ arrowTransform: string;
7
+ placement: string;
8
+ rotate: number;
9
+ popupInitialPosition: string;
10
+ popupPosition: string;
11
+ };
7
12
  type PopupProps = {
8
13
  /**
9
14
  * Id is automatically generated if not set. It is used for associating popup wrapper with popup portal.