@ultraviolet/ui 2.0.0 → 2.0.2

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 (309) hide show
  1. package/dist/components/ActionBar/index.cjs +3 -3
  2. package/dist/components/ActionBar/index.js +3 -3
  3. package/dist/components/Alert/index.cjs +20 -20
  4. package/dist/components/Alert/index.js +21 -21
  5. package/dist/components/Avatar/constants.cjs +10 -10
  6. package/dist/components/Avatar/constants.d.ts +9 -9
  7. package/dist/components/Avatar/constants.js +10 -10
  8. package/dist/components/Avatar/index.cjs +10 -10
  9. package/dist/components/Avatar/index.js +10 -10
  10. package/dist/components/Badge/index.cjs +2 -2
  11. package/dist/components/Badge/index.js +2 -2
  12. package/dist/components/Banner/index.cjs +21 -21
  13. package/dist/components/Banner/index.js +21 -21
  14. package/dist/components/BarChart/Tooltip.cjs +4 -4
  15. package/dist/components/BarChart/Tooltip.js +4 -4
  16. package/dist/components/BarChart/index.cjs +4 -4
  17. package/dist/components/BarChart/index.js +4 -4
  18. package/dist/components/BarStack/index.cjs +5 -5
  19. package/dist/components/BarStack/index.js +5 -5
  20. package/dist/components/Breadcrumbs/components/Item.cjs +4 -4
  21. package/dist/components/Breadcrumbs/components/Item.js +4 -4
  22. package/dist/components/Bullet/index.cjs +15 -15
  23. package/dist/components/Bullet/index.d.ts +3 -3
  24. package/dist/components/Bullet/index.js +15 -15
  25. package/dist/components/Button/index.cjs +14 -14
  26. package/dist/components/Button/index.d.ts +2 -2
  27. package/dist/components/Button/index.js +14 -14
  28. package/dist/components/Card/index.cjs +8 -8
  29. package/dist/components/Card/index.js +8 -8
  30. package/dist/components/Carousel/index.cjs +13 -13
  31. package/dist/components/Carousel/index.js +13 -13
  32. package/dist/components/Checkbox/index.cjs +18 -18
  33. package/dist/components/Checkbox/index.js +18 -18
  34. package/dist/components/CheckboxGroup/index.cjs +10 -10
  35. package/dist/components/CheckboxGroup/index.js +10 -10
  36. package/dist/components/Chip/ChipIcon.cjs +3 -3
  37. package/dist/components/Chip/ChipIcon.js +3 -3
  38. package/dist/components/Chip/index.cjs +5 -5
  39. package/dist/components/Chip/index.d.ts +1 -1
  40. package/dist/components/Chip/index.js +5 -5
  41. package/dist/components/CopyButton/index.cjs +2 -2
  42. package/dist/components/CopyButton/index.js +2 -2
  43. package/dist/components/DateInput/Context.cjs +10 -10
  44. package/dist/components/DateInput/Context.js +10 -10
  45. package/dist/components/DateInput/components/CalendarContent.cjs +7 -7
  46. package/dist/components/DateInput/components/CalendarContent.js +7 -7
  47. package/dist/components/DateInput/components/CalendarDaily.cjs +18 -18
  48. package/dist/components/DateInput/components/CalendarDaily.js +18 -18
  49. package/dist/components/DateInput/components/CalendarMonthly.cjs +16 -16
  50. package/dist/components/DateInput/components/CalendarMonthly.js +16 -16
  51. package/dist/components/DateInput/components/Popup.cjs +2 -2
  52. package/dist/components/DateInput/components/Popup.js +2 -2
  53. package/dist/components/DateInput/index.cjs +30 -30
  54. package/dist/components/DateInput/index.js +30 -30
  55. package/dist/components/Dialog/components/Button.cjs +1 -1
  56. package/dist/components/Dialog/components/Button.js +1 -1
  57. package/dist/components/Dialog/components/CancelButton.cjs +1 -1
  58. package/dist/components/Dialog/components/CancelButton.js +1 -1
  59. package/dist/components/Dialog/components/Text.cjs +1 -1
  60. package/dist/components/Dialog/components/Text.js +1 -1
  61. package/dist/components/Dialog/index.cjs +4 -4
  62. package/dist/components/Dialog/index.d.ts +5 -5
  63. package/dist/components/Dialog/index.js +4 -4
  64. package/dist/components/Drawer/index.cjs +15 -15
  65. package/dist/components/Drawer/index.d.ts +2 -2
  66. package/dist/components/Drawer/index.js +15 -15
  67. package/dist/components/EmptyState/index.cjs +17 -17
  68. package/dist/components/EmptyState/index.d.ts +2 -2
  69. package/dist/components/EmptyState/index.js +17 -17
  70. package/dist/components/Expandable/index.cjs +8 -8
  71. package/dist/components/Expandable/index.js +8 -8
  72. package/dist/components/ExpandableCard/components/Title.cjs +1 -1
  73. package/dist/components/ExpandableCard/components/Title.js +1 -1
  74. package/dist/components/ExpandableCard/index.cjs +18 -18
  75. package/dist/components/ExpandableCard/index.js +18 -18
  76. package/dist/components/GlobalAlert/GlobalAlertLink.cjs +1 -1
  77. package/dist/components/GlobalAlert/GlobalAlertLink.js +1 -1
  78. package/dist/components/GlobalAlert/index.cjs +8 -8
  79. package/dist/components/GlobalAlert/index.js +8 -8
  80. package/dist/components/InfiniteScroll/index.cjs +2 -2
  81. package/dist/components/InfiniteScroll/index.js +2 -2
  82. package/dist/components/Label/index.cjs +8 -8
  83. package/dist/components/Label/index.js +8 -8
  84. package/dist/components/LineChart/CustomLegend.cjs +20 -20
  85. package/dist/components/LineChart/CustomLegend.js +20 -20
  86. package/dist/components/LineChart/Tooltip.cjs +4 -4
  87. package/dist/components/LineChart/Tooltip.js +4 -4
  88. package/dist/components/LineChart/index.cjs +8 -8
  89. package/dist/components/LineChart/index.js +8 -8
  90. package/dist/components/Link/index.cjs +7 -7
  91. package/dist/components/Link/index.d.ts +1 -1
  92. package/dist/components/Link/index.js +7 -7
  93. package/dist/components/List/Cell.cjs +2 -2
  94. package/dist/components/List/Cell.js +2 -2
  95. package/dist/components/List/HeaderCell.cjs +5 -5
  96. package/dist/components/List/HeaderCell.js +5 -5
  97. package/dist/components/List/HeaderRow.cjs +4 -4
  98. package/dist/components/List/HeaderRow.js +4 -4
  99. package/dist/components/List/ListContext.cjs +7 -7
  100. package/dist/components/List/ListContext.js +7 -7
  101. package/dist/components/List/Row.cjs +12 -12
  102. package/dist/components/List/Row.js +12 -12
  103. package/dist/components/List/SelectBar.cjs +1 -1
  104. package/dist/components/List/SelectBar.js +1 -1
  105. package/dist/components/List/SkeletonRows.cjs +3 -3
  106. package/dist/components/List/SkeletonRows.js +3 -3
  107. package/dist/components/List/index.cjs +6 -6
  108. package/dist/components/List/index.d.ts +7 -7
  109. package/dist/components/List/index.js +6 -6
  110. package/dist/components/Loader/index.cjs +13 -13
  111. package/dist/components/Loader/index.d.ts +3 -3
  112. package/dist/components/Loader/index.js +13 -13
  113. package/dist/components/Menu/MenuContent.cjs +13 -13
  114. package/dist/components/Menu/MenuContent.js +13 -13
  115. package/dist/components/Menu/MenuProvider.cjs +5 -5
  116. package/dist/components/Menu/MenuProvider.js +5 -5
  117. package/dist/components/Menu/components/Group.cjs +3 -3
  118. package/dist/components/Menu/components/Group.js +3 -3
  119. package/dist/components/Menu/components/Item.cjs +11 -11
  120. package/dist/components/Menu/components/Item.js +11 -11
  121. package/dist/components/Menu/constants.cjs +2 -2
  122. package/dist/components/Menu/constants.d.ts +2 -2
  123. package/dist/components/Menu/constants.js +2 -2
  124. package/dist/components/Menu/index.cjs +5 -5
  125. package/dist/components/Menu/index.d.ts +6 -6
  126. package/dist/components/Menu/index.js +5 -5
  127. package/dist/components/Meter/index.cjs +6 -6
  128. package/dist/components/Meter/index.js +6 -6
  129. package/dist/components/Modal/ModalContent.cjs +7 -7
  130. package/dist/components/Modal/ModalContent.js +7 -7
  131. package/dist/components/Modal/ModalProvider.cjs +2 -2
  132. package/dist/components/Modal/ModalProvider.d.ts +2 -2
  133. package/dist/components/Modal/ModalProvider.js +2 -2
  134. package/dist/components/Modal/components/Dialog.cjs +8 -8
  135. package/dist/components/Modal/components/Dialog.js +8 -8
  136. package/dist/components/Modal/components/Disclosure.cjs +6 -6
  137. package/dist/components/Modal/components/Disclosure.js +6 -6
  138. package/dist/components/Modal/index.cjs +3 -3
  139. package/dist/components/Modal/index.js +3 -3
  140. package/dist/components/Notice/index.cjs +3 -3
  141. package/dist/components/Notice/index.js +3 -3
  142. package/dist/components/Notification/index.cjs +6 -6
  143. package/dist/components/Notification/index.js +6 -6
  144. package/dist/components/NumberInput/index.cjs +21 -21
  145. package/dist/components/NumberInput/index.d.ts +2 -2
  146. package/dist/components/NumberInput/index.js +21 -21
  147. package/dist/components/Pagination/PaginationButtons.cjs +8 -8
  148. package/dist/components/Pagination/PaginationButtons.js +8 -8
  149. package/dist/components/Pagination/PerPage.cjs +13 -13
  150. package/dist/components/Pagination/PerPage.js +13 -13
  151. package/dist/components/Pagination/index.cjs +2 -2
  152. package/dist/components/Pagination/index.js +2 -2
  153. package/dist/components/PasswordCheck/index.cjs +3 -3
  154. package/dist/components/PasswordCheck/index.js +3 -3
  155. package/dist/components/PieChart/Legends.cjs +13 -13
  156. package/dist/components/PieChart/Legends.js +13 -13
  157. package/dist/components/PieChart/Tooltip.cjs +7 -7
  158. package/dist/components/PieChart/Tooltip.js +7 -7
  159. package/dist/components/PieChart/index.cjs +8 -8
  160. package/dist/components/PieChart/index.js +8 -8
  161. package/dist/components/Popover/index.cjs +9 -9
  162. package/dist/components/Popover/index.d.ts +2 -2
  163. package/dist/components/Popover/index.js +9 -9
  164. package/dist/components/Popup/helpers.cjs +21 -21
  165. package/dist/components/Popup/helpers.d.ts +2 -2
  166. package/dist/components/Popup/helpers.js +21 -21
  167. package/dist/components/Popup/index.cjs +9 -9
  168. package/dist/components/Popup/index.js +9 -9
  169. package/dist/components/ProgressBar/index.cjs +9 -9
  170. package/dist/components/ProgressBar/index.js +9 -9
  171. package/dist/components/Radio/index.cjs +12 -12
  172. package/dist/components/Radio/index.js +12 -12
  173. package/dist/components/RadioGroup/index.cjs +9 -9
  174. package/dist/components/RadioGroup/index.js +9 -9
  175. package/dist/components/Row/index.cjs +2 -2
  176. package/dist/components/Row/index.js +2 -2
  177. package/dist/components/SearchInput/Key.cjs +7 -7
  178. package/dist/components/SearchInput/Key.d.ts +5 -5
  179. package/dist/components/SearchInput/Key.js +7 -7
  180. package/dist/components/SearchInput/KeyGroup.cjs +2 -2
  181. package/dist/components/SearchInput/KeyGroup.js +2 -2
  182. package/dist/components/SearchInput/index.cjs +5 -5
  183. package/dist/components/SearchInput/index.js +5 -5
  184. package/dist/components/SelectInput/Dropdown.cjs +50 -44
  185. package/dist/components/SelectInput/Dropdown.js +51 -45
  186. package/dist/components/SelectInput/DropdownOption.cjs +18 -18
  187. package/dist/components/SelectInput/DropdownOption.js +18 -18
  188. package/dist/components/SelectInput/SearchBarDropdown.cjs +6 -6
  189. package/dist/components/SelectInput/SearchBarDropdown.js +6 -6
  190. package/dist/components/SelectInput/SelectBar.cjs +32 -32
  191. package/dist/components/SelectInput/SelectBar.js +32 -32
  192. package/dist/components/SelectInput/SelectInputProvider.cjs +42 -42
  193. package/dist/components/SelectInput/SelectInputProvider.js +42 -42
  194. package/dist/components/SelectInput/index.cjs +7 -7
  195. package/dist/components/SelectInput/index.js +7 -7
  196. package/dist/components/SelectInput/types.cjs +3 -3
  197. package/dist/components/SelectInput/types.d.ts +2 -2
  198. package/dist/components/SelectInput/types.js +3 -3
  199. package/dist/components/SelectableCard/index.cjs +18 -18
  200. package/dist/components/SelectableCard/index.js +18 -18
  201. package/dist/components/SelectableCardGroup/index.cjs +7 -7
  202. package/dist/components/SelectableCardGroup/index.js +7 -7
  203. package/dist/components/SelectableCardOptionGroup/Provider.cjs +4 -4
  204. package/dist/components/SelectableCardOptionGroup/Provider.js +4 -4
  205. package/dist/components/SelectableCardOptionGroup/components/Image.cjs +2 -2
  206. package/dist/components/SelectableCardOptionGroup/components/Image.js +2 -2
  207. package/dist/components/SelectableCardOptionGroup/components/Option.cjs +13 -13
  208. package/dist/components/SelectableCardOptionGroup/components/Option.d.ts +1 -1
  209. package/dist/components/SelectableCardOptionGroup/components/Option.js +13 -13
  210. package/dist/components/SelectableCardOptionGroup/index.cjs +6 -6
  211. package/dist/components/SelectableCardOptionGroup/index.js +6 -6
  212. package/dist/components/Separator/index.cjs +6 -6
  213. package/dist/components/Separator/index.js +6 -6
  214. package/dist/components/Skeleton/index.cjs +4 -4
  215. package/dist/components/Skeleton/index.js +4 -4
  216. package/dist/components/Slider/components/DoubleSlider.cjs +22 -22
  217. package/dist/components/Slider/components/DoubleSlider.js +22 -22
  218. package/dist/components/Slider/components/Options.cjs +3 -3
  219. package/dist/components/Slider/components/Options.js +3 -3
  220. package/dist/components/Slider/components/SingleSlider.cjs +13 -13
  221. package/dist/components/Slider/components/SingleSlider.js +13 -13
  222. package/dist/components/Slider/index.cjs +7 -7
  223. package/dist/components/Slider/index.js +7 -7
  224. package/dist/components/Snippet/index.cjs +14 -14
  225. package/dist/components/Snippet/index.js +14 -14
  226. package/dist/components/Status/index.cjs +4 -4
  227. package/dist/components/Status/index.js +4 -4
  228. package/dist/components/StepList/index.cjs +5 -5
  229. package/dist/components/StepList/index.js +5 -5
  230. package/dist/components/Stepper/Step.cjs +10 -10
  231. package/dist/components/Stepper/Step.js +10 -10
  232. package/dist/components/Stepper/StepperProvider.cjs +10 -10
  233. package/dist/components/Stepper/StepperProvider.js +10 -10
  234. package/dist/components/Stepper/index.cjs +7 -7
  235. package/dist/components/Stepper/index.js +7 -7
  236. package/dist/components/SwitchButton/FocusOverlay.cjs +3 -3
  237. package/dist/components/SwitchButton/FocusOverlay.js +3 -3
  238. package/dist/components/SwitchButton/Option.cjs +4 -4
  239. package/dist/components/SwitchButton/Option.js +4 -4
  240. package/dist/components/SwitchButton/index.cjs +12 -12
  241. package/dist/components/SwitchButton/index.js +12 -12
  242. package/dist/components/Table/Cell.cjs +2 -2
  243. package/dist/components/Table/Cell.js +2 -2
  244. package/dist/components/Table/HeaderCell.cjs +6 -6
  245. package/dist/components/Table/HeaderCell.js +6 -6
  246. package/dist/components/Table/HeaderRow.cjs +2 -2
  247. package/dist/components/Table/HeaderRow.js +2 -2
  248. package/dist/components/Table/Row.cjs +9 -9
  249. package/dist/components/Table/Row.js +9 -9
  250. package/dist/components/Table/SelectBar.cjs +1 -1
  251. package/dist/components/Table/SelectBar.js +1 -1
  252. package/dist/components/Table/SkeletonRows.cjs +3 -3
  253. package/dist/components/Table/SkeletonRows.js +3 -3
  254. package/dist/components/Table/TableContext.cjs +3 -3
  255. package/dist/components/Table/TableContext.js +3 -3
  256. package/dist/components/Table/index.cjs +9 -9
  257. package/dist/components/Table/index.d.ts +12 -12
  258. package/dist/components/Table/index.js +9 -9
  259. package/dist/components/Tabs/Tab.cjs +10 -10
  260. package/dist/components/Tabs/Tab.js +10 -10
  261. package/dist/components/Tabs/TabMenu.cjs +8 -8
  262. package/dist/components/Tabs/TabMenu.js +8 -8
  263. package/dist/components/Tabs/TabMenuItem.cjs +3 -3
  264. package/dist/components/Tabs/TabMenuItem.js +3 -3
  265. package/dist/components/Tabs/index.cjs +7 -7
  266. package/dist/components/Tabs/index.js +7 -7
  267. package/dist/components/Tag/index.cjs +10 -10
  268. package/dist/components/Tag/index.js +10 -10
  269. package/dist/components/TagInput/index.cjs +14 -14
  270. package/dist/components/TagInput/index.js +14 -14
  271. package/dist/components/TagList/index.cjs +16 -16
  272. package/dist/components/TagList/index.js +16 -16
  273. package/dist/components/Text/index.cjs +2 -2
  274. package/dist/components/Text/index.js +2 -2
  275. package/dist/components/TextArea/index.cjs +13 -13
  276. package/dist/components/TextArea/index.js +13 -13
  277. package/dist/components/TextInput/index.cjs +30 -30
  278. package/dist/components/TextInput/index.d.ts +2 -2
  279. package/dist/components/TextInput/index.js +30 -30
  280. package/dist/components/TimeInput/constants.cjs +2 -2
  281. package/dist/components/TimeInput/constants.d.ts +2 -2
  282. package/dist/components/TimeInput/constants.js +2 -2
  283. package/dist/components/TimeInput/index.cjs +18 -18
  284. package/dist/components/TimeInput/index.js +19 -19
  285. package/dist/components/Toaster/components/Button.cjs +1 -1
  286. package/dist/components/Toaster/components/Button.js +1 -1
  287. package/dist/components/Toaster/index.cjs +4 -4
  288. package/dist/components/Toaster/index.js +4 -4
  289. package/dist/components/Toggle/index.cjs +11 -11
  290. package/dist/components/Toggle/index.js +11 -11
  291. package/dist/components/ToggleGroup/index.cjs +9 -9
  292. package/dist/components/ToggleGroup/index.js +9 -9
  293. package/dist/components/Tooltip/index.cjs +2 -2
  294. package/dist/components/Tooltip/index.js +2 -2
  295. package/dist/components/UnitInput/index.cjs +15 -15
  296. package/dist/components/UnitInput/index.d.ts +1 -1
  297. package/dist/components/UnitInput/index.js +15 -15
  298. package/dist/components/VerificationCode/index.cjs +8 -8
  299. package/dist/components/VerificationCode/index.js +8 -8
  300. package/dist/components/index.d.ts +3 -3
  301. package/dist/helpers/nivoTheme.cjs +2 -2
  302. package/dist/helpers/nivoTheme.d.ts +2 -2
  303. package/dist/helpers/nivoTheme.js +2 -2
  304. package/dist/index.cjs +112 -112
  305. package/dist/index.d.ts +2 -2
  306. package/dist/index.js +2 -2
  307. package/dist/theme/index.d.ts +12 -12
  308. package/dist/utils/index.d.ts +3 -3
  309. package/package.json +3 -3
@@ -2,8 +2,9 @@
2
2
  import { jsx, jsxs, Fragment } from "@emotion/react/jsx-runtime";
3
3
  import _styled from "@emotion/styled/base";
4
4
  import { useTheme } from "@emotion/react";
5
- import { useState, useRef, useEffect, useCallback, useMemo } from "react";
5
+ import { useState, useRef, useContext, useEffect, useCallback, useMemo } from "react";
6
6
  import { Checkbox } from "../Checkbox/index.js";
7
+ import { ModalContext } from "../Modal/ModalProvider.js";
7
8
  import { Popup } from "../Popup/index.js";
8
9
  import { Skeleton } from "../Skeleton/index.js";
9
10
  import { Stack } from "../Stack/index.js";
@@ -32,7 +33,7 @@ const StyledPopup = /* @__PURE__ */ _styled(Popup, process.env.NODE_ENV === "pro
32
33
  theme
33
34
  }) => theme.space[0], ";margin-bottom:", ({
34
35
  theme
35
- }) => theme.space[10], ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpRWlDIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIENvbXBvbmVudFByb3BzLFxuICBEaXNwYXRjaCxcbiAgS2V5Ym9hcmRFdmVudCxcbiAgUmVhY3ROb2RlLFxuICBSZWZPYmplY3QsXG4gIFNldFN0YXRlQWN0aW9uLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAnLi4vQ2hlY2tib3gnXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uL1BvcHVwJ1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuLi9Ta2VsZXRvbidcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnLi4vU3RhY2snXG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vVGV4dCdcbmltcG9ydCB7IERpc3BsYXlPcHRpb24gfSBmcm9tICcuL0Ryb3Bkb3duT3B0aW9uJ1xuaW1wb3J0IHsgU2VhcmNoQmFyRHJvcGRvd24gfSBmcm9tICcuL1NlYXJjaEJhckRyb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2VsZWN0SW5wdXQgfSBmcm9tICcuL1NlbGVjdElucHV0UHJvdmlkZXInXG5pbXBvcnQgdHlwZSB7IERhdGFUeXBlLCBPcHRpb25UeXBlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IElOUFVUX1NJWkVfSEVJR0hUIH0gZnJvbSAnLi90eXBlcydcblxuY29uc3QgRFJPUERPV05fTUFYX0hFSUdIVCA9IDI1NlxuXG5leHBvcnQgdHlwZSBEcm9wZG93blByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBzZWFyY2hhYmxlOiBib29sZWFuXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmdcbiAgZm9vdGVyPzogKChjbG9zZURyb3Bkb3duOiAoKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpIHwgUmVhY3ROb2RlXG4gIHJlZlNlbGVjdDogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbiAgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJ1xuICBkcm9wZG93bkFsaWduPzogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBvcHVwPlsnYWxpZ24nXVxuICBwb3J0YWxUYXJnZXQ/OiBDb21wb25lbnRQcm9wczx0eXBlb2YgUG9wdXA+Wydwb3J0YWxUYXJnZXQnXVxufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVEcm9wZG93blByb3BzID0ge1xuICBpc0VtcHR5OiBib29sZWFuXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBsb2FkTW9yZT86IFJlYWN0Tm9kZVxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCdcbiAgZGVmYXVsdFNlYXJjaFZhbHVlOiBzdHJpbmcgfCBudWxsXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbn1cblxuY29uc3QgTk9OX1NFQVJDSEFCTEVfS0VZUyA9IFtcbiAgJ1RhYicsXG4gICcgJyxcbiAgJ0VudGVyJyxcbiAgJ0NhcHNMb2NrJyxcbiAgJ1NoaWZ0JyxcbiAgJ0Fycm93RG93bicsXG4gICdBcnJvd1VwJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0VzY2FwZScsXG5dXG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKFBvcHVwKWBcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBwYWRkaW5nLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbiAgcGFkZGluZy10b3A6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX07XG5cbiAgJltkYXRhLWdyb3VwZWQ9XCJ0cnVlXCJdIHtcbiAgICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIH1cbmBcbmNvbnN0IERyb3Bkb3duR3JvdXAgPSBzdHlsZWQuYnV0dG9uPHsgJ2RhdGEtc2VsZWN0Z3JvdXAnOiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBwYWRkaW5nLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBoZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbNF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjI1J119O1xuXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgICBib3JkZXItbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfSBzb2xpZCAkeyh7IHRoZW1lIH0pID0+XG4gICAgICB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kSG92ZXJ9O1xuICB9XG5gXG5jb25zdCBEcm9wZG93bkdyb3VwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcblxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzEuNSddfSAkeyh7IHRoZW1lIH0pID0+XG4gICAgdGhlbWUuc3BhY2VbJzInXX07XG4gIG1hcmdpbi1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjUnXX07XG4gIG1hcmdpbi1yaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuXG4gIGNvbG9yOiAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgYm9yZGVyOiAxcHggdHJhbnNwYXJlbnQgc29saWQ7XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICB9XG5cbiAgJlthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kRGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHREaXNhYmxlZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdOmhvdmVyLCBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICAgIHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdEaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmBcblxuY29uc3QgUG9wdXBGb290ZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfVxuICAgICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMS41XX0gJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2hhZG93cy5kcm9wZG93bn07XG5gXG5jb25zdCBTdHlsZWRDaGVja2JveCA9IHN0eWxlZChDaGVja2JveClgXG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAgLy8gcG9pbnRlci1ldmVudHM6IG5vbmUgcHJldmVudHMgYW55IGVycm9yIHdoZW4gdXNpbmcgdGhlIGNoZWNrYm94IGluIGEgZm9ybSBzaW5jZSBpdCBpcyBhbiB1bm5hbWVkIGlucHV0XG5cbmNvbnN0IEVtcHR5U3RhdGUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbmBcbmNvbnN0IExvYWRNb3JlID0gc3R5bGVkKFN0YWNrKWBcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbmBcblxuY29uc3QgbW92ZUZvY3VzRG93biA9ICgpID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgJyNpdGVtcyA+IGRpdltyb2xlPVwib3B0aW9uXCJdOm5vdChbZGlzYWJsZWRdKScsXG4gIClcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnM/Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBsaXN0TGVuZ3RoID0gb3B0aW9ucy5sZW5ndGhcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbbGlzdExlbmd0aCAtIDFdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpICsgMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IG1vdmVGb2N1c1VwID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoYWN0aXZlSXRlbSA9PT0gb3B0aW9uc1tpXSAmJiBhY3RpdmVJdGVtICE9PSBvcHRpb25zWzBdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpIC0gMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IGhhbmRsZUtleURvd25TZWxlY3QgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c0Rvd24oKVxuICB9XG5cbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c1VwKClcbiAgfVxuXG4gIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgIC8vIE5vIHNjcm9sbFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxufVxuXG5jb25zdCBoYW5kbGVLZXlEb3duID0gKFxuICBldmVudDogZ2xvYmFsVGhpcy5LZXlib2FyZEV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maW5kKG9wdGlvbiA9PlxuICAgICAgICBvcHRpb24uc2VhcmNoVGV4dFxuICAgICAgICAgID8gb3B0aW9uLnNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpXG4gICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgKVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IENyZWF0ZURyb3Bkb3duID0gKHtcbiAgaXNFbXB0eSxcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZSxcbiAgaXNMb2FkaW5nLFxufTogQ3JlYXRlRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgb25DaGFuZ2UsXG4gICAgb3B0aW9ucyxcbiAgICBtdWx0aXNlbGVjdCxcbiAgICBzZWxlY3RBbGwsXG4gICAgc2VsZWN0QWxsR3JvdXAsXG4gICAgZGlzcGxheWVkT3B0aW9ucyxcbiAgICBzZXRTZWxlY3RlZERhdGEsXG4gICAgc2VsZWN0ZWREYXRhLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCBmb2N1c2VkSXRlbVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0U2VhcmNoVmFsdWUgJiYgZm9jdXNlZEl0ZW1SZWY/LmN1cnJlbnQpIHtcbiAgICAgIGZvY3VzZWRJdGVtUmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRTZWFyY2hWYWx1ZV0pXG5cbiAgaWYgKGlzRW1wdHkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEVtcHR5U3RhdGUgZ2FwPXsyfSBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgIHtlbXB0eVN0YXRlID8/IChcbiAgICAgICAgICA8VGV4dCB2YXJpYW50PVwiYm9keVN0cm9uZ1wiIGFzPVwicFwiPlxuICAgICAgICAgICAgTm8gb3B0aW9uc1xuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKX1cbiAgICAgIDwvRW1wdHlTdGF0ZT5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbGljayA9IChjbGlja2VkT3B0aW9uOiBPcHRpb25UeXBlLCBncm91cD86IHN0cmluZykgPT4ge1xuICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RPcHRpb24nLCBjbGlja2VkT3B0aW9uLCBncm91cCB9KVxuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhjbGlja2VkT3B0aW9uLnZhbHVlKSkge1xuICAgICAgICBvbkNoYW5nZT8uKFxuICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5maWx0ZXIoXG4gICAgICAgICAgICB2YWwgPT4gdmFsICE9PSBjbGlja2VkT3B0aW9uLnZhbHVlLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcywgY2xpY2tlZE9wdGlvbi52YWx1ZV0pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uQ2hhbmdlPy4oY2xpY2tlZE9wdGlvbi52YWx1ZSlcbiAgICB9XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUobXVsdGlzZWxlY3QpIC8vIGhpZGUgdGhlIGRyb3Bkb3duIG9uIGNsaWNrIHdoZW4gc2luZ2xlIHNlbGVjdCBvbmx5XG4gIH1cblxuICBjb25zdCBzZWxlY3RBbGxPcHRpb25zID0gKCkgPT4ge1xuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdEFsbCcgfSlcbiAgICAgIGlmIChzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWQgJiYgb25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UoW10pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhbGxWYWx1ZXM6IE9wdGlvblR5cGVbXSA9IFtdXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT5cbiAgICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGFsbFZhbHVlcy5wdXNoKG9wdGlvbilcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9ucy5tYXAob3B0aW9uID0+IGFsbFZhbHVlcy5wdXNoKG9wdGlvbikpXG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2U/LihhbGxWYWx1ZXMubWFwKHZhbHVlID0+IHZhbHVlLnZhbHVlKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RHcm91cCA9IChncm91cDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0R3JvdXAnLCBzZWxlY3RlZEdyb3VwOiBncm91cCB9KVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZERhdGEuc2VsZWN0ZWRHcm91cHMuaW5jbHVkZXMoZ3JvdXApKSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXS5maWx0ZXIoXG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlID0+XG4gICAgICAgICAgICAgICFvcHRpb25zW2dyb3VwXS5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkVmFsdWVzID0gWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlc11cblxuICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT5cbiAgICAgICAgICAgIG5ld1NlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgfHwgb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG5ld1NlbGVjdGVkVmFsdWVzLnB1c2gob3B0aW9uLnZhbHVlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgb25DaGFuZ2U/LihuZXdTZWxlY3RlZFZhbHVlcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAhQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSA/IChcbiAgICA8RHJvcGRvd25Db250YWluZXJcbiAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgIGlkPVwic2VsZWN0LWRyb3Bkb3duXCJcbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93blNlbGVjdH1cbiAgICAgIGRhdGEtZ3JvdXBlZFxuICAgID5cbiAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGwtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtncm91cC50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFzPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwV3JhcHBlcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPVwiMC4yNVwiPlxuICAgICAgICAgICAgICAgIHtkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5tYXAoKG9wdGlvbiwgaW5kZXhPcHRpb24pID0+IChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAga2V5PXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9eyEhb3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4T3B0aW9ufWB9XG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICkpfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApIDogKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZ2FwPXswLjI1fVxuICAgICAgZGF0YS1ncm91cGVkPXtmYWxzZX1cbiAgICA+XG4gICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiIGdhcD17MC4yNX0gdGFiSW5kZXg9ey0xfT5cbiAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICBhcmlhLWRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gc2VsZWN0QWxsT3B0aW9ucygpIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdGFjayBkaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHlTbWFsbFwiXG4gICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgcHJvbWluZW5jZT1cIndlYWtcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9ezAuMjV9PlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgIGtleT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPXshIW9wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBoYW5kbGVDbGljayhvcHRpb24pIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICApKVxuICAgICAgICApfVxuICAgICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICAgIDwvU3RhY2s+XG4gICAgPC9Ecm9wZG93bkNvbnRhaW5lcj5cbiAgKVxufVxuZXhwb3J0IGNvbnN0IERyb3Bkb3duID0gKHtcbiAgY2hpbGRyZW4sXG4gIGVtcHR5U3RhdGUsXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uLFxuICBzZWFyY2hhYmxlLFxuICBwbGFjZWhvbGRlcixcbiAgZm9vdGVyLFxuICByZWZTZWxlY3QsXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGlzTG9hZGluZyxcbiAgc2l6ZSxcbiAgZHJvcGRvd25BbGlnbixcbiAgcG9ydGFsVGFyZ2V0LFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZlNlbGVjdC5jdXJyZW50ICYmIGlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9XG4gICAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSArXG4gICAgICAgIERST1BET1dOX01BWF9IRUlHSFQgK1xuICAgICAgICBOdW1iZXIodGhlbWUuc2l6aW5nW0lOUFVUX1NJWkVfSEVJR0hUW3NpemVdXS5yZXBsYWNlKCdyZW0nLCAnJykpICogMTYgK1xuICAgICAgICBOdW1iZXIucGFyc2VJbnQodGhlbWUuc3BhY2VbJzUnXSwgMTApXG4gICAgICBjb25zdCBvdmVyZmxvdyA9IHBvc2l0aW9uIC0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7XG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrZHJvcC1tb2RhbCcpXG5cbiAgICAgICAgaWYgKG1vZGFsRWxlbWVudCkge1xuICAgICAgICAgIG1vZGFsRWxlbWVudC5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgICB9IGVsc2Ugd2luZG93LnNjcm9sbEJ5KHsgdG9wOiBvdmVyZmxvdywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pXG4gICAgICB9XG4gICAgfVxuICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2lzRHJvcGRvd25WaXNpYmxlLCByZWZTZWxlY3QsIHNpemUsIHJlZi5jdXJyZW50XSlcblxuICBjb25zdCByZXNpemVEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICByZWZTZWxlY3QuY3VycmVudCAmJlxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiAwXG4gICAgKSB7XG4gICAgICBzZXRXaWR0aChyZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aClcbiAgICB9XG4gIH0sIFtyZWZTZWxlY3RdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVzaXplRHJvcGRvd24oKVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZURyb3Bkb3duKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcbiAgfSwgW3Jlc2l6ZURyb3Bkb3duXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2VhcmNoSW5wdXQpIHtcbiAgICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gICAgfVxuICB9LCBbb25TZWFyY2gsIG9wdGlvbnMsIHNlYXJjaElucHV0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIHNldFNlYXJjaCgnJylcbiAgICB9XG5cbiAgICBpZiAoIXNlYXJjaGFibGUpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICBoYW5kbGVLZXlEb3duKFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICksXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICghc2VhcmNoYWJsZSkge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgICBoYW5kbGVLZXlEb3duKFxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICByZWYsXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgIG9wdGlvbnMsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoLFxuICAgIHJlZlNlbGVjdCxcbiAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgIHNlYXJjaGFibGUsXG4gIF0pXG5cbiAgLy8gTm8gZGF0YSBpcyBkaXNwbGF5ZWQgKGJlY2F1c2Ugb2YgdGhlIHNlYXJjaCBvciBiZWNhdXNlIG5vIGRhdGEgaXMgcHJvdmlkZWQpXG4gIC8vIFNldCB0byB0cnVlIHdoZW4gbm9EYXRhIGJ5IGRlZmF1bHRcbiAgY29uc3QgaXNFbXB0eSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChudW1iZXJPZk9wdGlvbnMgPT09IDApIHJldHVybiB0cnVlXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGxheWVkT3B0aW9ucykpIHtcbiAgICAgIHJldHVybiBkaXNwbGF5ZWRPcHRpb25zLmxlbmd0aCA9PT0gMFxuICAgIH1cbiAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgICBpZiAoZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9LCBbZGlzcGxheWVkT3B0aW9ucywgbnVtYmVyT2ZPcHRpb25zXSlcblxuICBjb25zdCBjb21wdXRlZEZvb3RlciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChmb290ZXIgJiYgIWlzRW1wdHkpIHtcbiAgICAgIGlmICh0eXBlb2YgZm9vdGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFBvcHVwRm9vdGVyPntmb290ZXIoKCkgPT4gc2V0SXNEcm9wZG93blZpc2libGUoZmFsc2UpKX08L1BvcHVwRm9vdGVyPlxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiA8UG9wdXBGb290ZXI+e2Zvb3Rlcn08L1BvcHVwRm9vdGVyPlxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH0sIFtpc0VtcHR5LCBmb290ZXIsIHNldElzRHJvcGRvd25WaXNpYmxlXSlcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRQb3B1cFxuICAgICAgdmlzaWJsZT17aXNEcm9wZG93blZpc2libGV9XG4gICAgICB0ZXh0PXtcbiAgICAgICAgPFN0YWNrPlxuICAgICAgICAgIHtzZWFyY2hhYmxlICYmICFpc0xvYWRpbmcgJiYgbnVtYmVyT2ZPcHRpb25zID49IDYgPyAoXG4gICAgICAgICAgICA8U2VhcmNoQmFyRHJvcGRvd25cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zPXtkaXNwbGF5ZWRPcHRpb25zfVxuICAgICAgICAgICAgICBzZXRTZWFyY2hCYXJBY3RpdmU9e3NldFNlYXJjaEJhckFjdGl2ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPENyZWF0ZURyb3Bkb3duXG4gICAgICAgICAgICBpc0VtcHR5PXtpc0VtcHR5fVxuICAgICAgICAgICAgZW1wdHlTdGF0ZT17ZW1wdHlTdGF0ZX1cbiAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgIGxvYWRNb3JlPXtsb2FkTW9yZX1cbiAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaFZhbHVlPXtkZWZhdWx0U2VhcmNoVmFsdWV9XG4gICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtjb21wdXRlZEZvb3Rlcn1cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIH1cbiAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICBkaXNhYmxlQW5pbWF0aW9uXG4gICAgICBtYXhXaWR0aD17bWF4V2lkdGggPz8gcmVmU2VsZWN0LmN1cnJlbnQ/Lm9mZnNldFdpZHRofVxuICAgICAgaGFzQXJyb3c9e2ZhbHNlfVxuICAgICAgcmVmPXtyZWZ9XG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgIGRlYm91bmNlRGVsYXk9ezB9XG4gICAgICBjb250YWluZXJGdWxsV2lkdGhcbiAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZVxuICAgICAgb25DbG9zZT17KCkgPT4gc2V0SXNEcm9wZG93blZpc2libGUoZmFsc2UpfVxuICAgICAgYWxpZ249e2Ryb3Bkb3duQWxpZ24gPz8gJ3N0YXJ0J31cbiAgICAgIHBvcnRhbFRhcmdldD17cG9ydGFsVGFyZ2V0fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1N0eWxlZFBvcHVwPlxuICApXG59XG4iXX0= */"));
36
+ }) => theme.space[10], ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5RWlDIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgdHlwZSB7XG4gIENvbXBvbmVudFByb3BzLFxuICBEaXNwYXRjaCxcbiAgS2V5Ym9hcmRFdmVudCxcbiAgUmVhY3ROb2RlLFxuICBSZWZPYmplY3QsXG4gIFNldFN0YXRlQWN0aW9uLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IE1vZGFsQ29udGV4dCB9IGZyb20gJy4uL01vZGFsL01vZGFsUHJvdmlkZXInXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uL1BvcHVwJ1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuLi9Ta2VsZXRvbidcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnLi4vU3RhY2snXG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vVGV4dCdcbmltcG9ydCB7IERpc3BsYXlPcHRpb24gfSBmcm9tICcuL0Ryb3Bkb3duT3B0aW9uJ1xuaW1wb3J0IHsgU2VhcmNoQmFyRHJvcGRvd24gfSBmcm9tICcuL1NlYXJjaEJhckRyb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2VsZWN0SW5wdXQgfSBmcm9tICcuL1NlbGVjdElucHV0UHJvdmlkZXInXG5pbXBvcnQgdHlwZSB7IERhdGFUeXBlLCBPcHRpb25UeXBlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IElOUFVUX1NJWkVfSEVJR0hUIH0gZnJvbSAnLi90eXBlcydcblxuY29uc3QgRFJPUERPV05fTUFYX0hFSUdIVCA9IDI1NlxuXG5leHBvcnQgdHlwZSBEcm9wZG93blByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBzZWFyY2hhYmxlOiBib29sZWFuXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmdcbiAgZm9vdGVyPzogKChjbG9zZURyb3Bkb3duOiAoKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpIHwgUmVhY3ROb2RlXG4gIHJlZlNlbGVjdDogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbiAgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJ1xuICBkcm9wZG93bkFsaWduPzogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBvcHVwPlsnYWxpZ24nXVxuICBwb3J0YWxUYXJnZXQ/OiBDb21wb25lbnRQcm9wczx0eXBlb2YgUG9wdXA+Wydwb3J0YWxUYXJnZXQnXVxufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVEcm9wZG93blByb3BzID0ge1xuICBpc0VtcHR5OiBib29sZWFuXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBsb2FkTW9yZT86IFJlYWN0Tm9kZVxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCdcbiAgZGVmYXVsdFNlYXJjaFZhbHVlOiBzdHJpbmcgfCBudWxsXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbn1cblxuY29uc3QgTk9OX1NFQVJDSEFCTEVfS0VZUyA9IFtcbiAgJ1RhYicsXG4gICcgJyxcbiAgJ0VudGVyJyxcbiAgJ0NhcHNMb2NrJyxcbiAgJ1NoaWZ0JyxcbiAgJ0Fycm93RG93bicsXG4gICdBcnJvd1VwJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0VzY2FwZScsXG5dXG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKFBvcHVwKWBcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBwYWRkaW5nLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbiAgcGFkZGluZy10b3A6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX07XG5cbiAgJltkYXRhLWdyb3VwZWQ9XCJ0cnVlXCJdIHtcbiAgICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIH1cbmBcbmNvbnN0IERyb3Bkb3duR3JvdXAgPSBzdHlsZWQuYnV0dG9uPHsgJ2RhdGEtc2VsZWN0Z3JvdXAnOiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBwYWRkaW5nLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBoZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbNF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjI1J119O1xuXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgICBib3JkZXItbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfSBzb2xpZCAkeyh7IHRoZW1lIH0pID0+XG4gICAgICB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kSG92ZXJ9O1xuICB9XG5gXG5jb25zdCBEcm9wZG93bkdyb3VwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcblxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzEuNSddfSAkeyh7IHRoZW1lIH0pID0+XG4gICAgdGhlbWUuc3BhY2VbJzInXX07XG4gIG1hcmdpbi1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjUnXX07XG4gIG1hcmdpbi1yaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuXG4gIGNvbG9yOiAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgYm9yZGVyOiAxcHggdHJhbnNwYXJlbnQgc29saWQ7XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICB9XG5cbiAgJlthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kRGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHREaXNhYmxlZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdOmhvdmVyLCBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICAgIHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdEaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmBcblxuY29uc3QgUG9wdXBGb290ZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfVxuICAgICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMS41XX0gJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2hhZG93cy5kcm9wZG93bn07XG5gXG5jb25zdCBTdHlsZWRDaGVja2JveCA9IHN0eWxlZChDaGVja2JveClgXG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAgLy8gcG9pbnRlci1ldmVudHM6IG5vbmUgcHJldmVudHMgYW55IGVycm9yIHdoZW4gdXNpbmcgdGhlIGNoZWNrYm94IGluIGEgZm9ybSBzaW5jZSBpdCBpcyBhbiB1bm5hbWVkIGlucHV0XG5cbmNvbnN0IEVtcHR5U3RhdGUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbmBcbmNvbnN0IExvYWRNb3JlID0gc3R5bGVkKFN0YWNrKWBcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbmBcblxuY29uc3QgbW92ZUZvY3VzRG93biA9ICgpID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgJyNpdGVtcyA+IGRpdltyb2xlPVwib3B0aW9uXCJdOm5vdChbZGlzYWJsZWRdKScsXG4gIClcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnM/Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBsaXN0TGVuZ3RoID0gb3B0aW9ucy5sZW5ndGhcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbbGlzdExlbmd0aCAtIDFdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpICsgMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IG1vdmVGb2N1c1VwID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoYWN0aXZlSXRlbSA9PT0gb3B0aW9uc1tpXSAmJiBhY3RpdmVJdGVtICE9PSBvcHRpb25zWzBdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpIC0gMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IGhhbmRsZUtleURvd25TZWxlY3QgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c0Rvd24oKVxuICB9XG5cbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c1VwKClcbiAgfVxuXG4gIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgIC8vIE5vIHNjcm9sbFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxufVxuXG5jb25zdCBoYW5kbGVLZXlEb3duID0gKFxuICBldmVudDogZ2xvYmFsVGhpcy5LZXlib2FyZEV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maW5kKG9wdGlvbiA9PlxuICAgICAgICBvcHRpb24uc2VhcmNoVGV4dFxuICAgICAgICAgID8gb3B0aW9uLnNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpXG4gICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgKVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IENyZWF0ZURyb3Bkb3duID0gKHtcbiAgaXNFbXB0eSxcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZSxcbiAgaXNMb2FkaW5nLFxufTogQ3JlYXRlRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgb25DaGFuZ2UsXG4gICAgb3B0aW9ucyxcbiAgICBtdWx0aXNlbGVjdCxcbiAgICBzZWxlY3RBbGwsXG4gICAgc2VsZWN0QWxsR3JvdXAsXG4gICAgZGlzcGxheWVkT3B0aW9ucyxcbiAgICBzZXRTZWxlY3RlZERhdGEsXG4gICAgc2VsZWN0ZWREYXRhLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCBmb2N1c2VkSXRlbVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0U2VhcmNoVmFsdWUgJiYgZm9jdXNlZEl0ZW1SZWY/LmN1cnJlbnQpIHtcbiAgICAgIGZvY3VzZWRJdGVtUmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRTZWFyY2hWYWx1ZV0pXG5cbiAgaWYgKGlzRW1wdHkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEVtcHR5U3RhdGUgYWxpZ25JdGVtcz1cImNlbnRlclwiIGdhcD17Mn0+XG4gICAgICAgIHtlbXB0eVN0YXRlID8/IChcbiAgICAgICAgICA8VGV4dCBhcz1cInBcIiB2YXJpYW50PVwiYm9keVN0cm9uZ1wiPlxuICAgICAgICAgICAgTm8gb3B0aW9uc1xuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKX1cbiAgICAgIDwvRW1wdHlTdGF0ZT5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbGljayA9IChjbGlja2VkT3B0aW9uOiBPcHRpb25UeXBlLCBncm91cD86IHN0cmluZykgPT4ge1xuICAgIHNldFNlbGVjdGVkRGF0YSh7IGNsaWNrZWRPcHRpb24sIGdyb3VwLCB0eXBlOiAnc2VsZWN0T3B0aW9uJyB9KVxuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhjbGlja2VkT3B0aW9uLnZhbHVlKSkge1xuICAgICAgICBvbkNoYW5nZT8uKFxuICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5maWx0ZXIoXG4gICAgICAgICAgICB2YWwgPT4gdmFsICE9PSBjbGlja2VkT3B0aW9uLnZhbHVlLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcywgY2xpY2tlZE9wdGlvbi52YWx1ZV0pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uQ2hhbmdlPy4oY2xpY2tlZE9wdGlvbi52YWx1ZSlcbiAgICB9XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUobXVsdGlzZWxlY3QpIC8vIGhpZGUgdGhlIGRyb3Bkb3duIG9uIGNsaWNrIHdoZW4gc2luZ2xlIHNlbGVjdCBvbmx5XG4gIH1cblxuICBjb25zdCBzZWxlY3RBbGxPcHRpb25zID0gKCkgPT4ge1xuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdEFsbCcgfSlcbiAgICAgIGlmIChzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWQgJiYgb25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UoW10pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhbGxWYWx1ZXM6IE9wdGlvblR5cGVbXSA9IFtdXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT5cbiAgICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGFsbFZhbHVlcy5wdXNoKG9wdGlvbilcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9ucy5tYXAob3B0aW9uID0+IGFsbFZhbHVlcy5wdXNoKG9wdGlvbikpXG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2U/LihhbGxWYWx1ZXMubWFwKHZhbHVlID0+IHZhbHVlLnZhbHVlKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RHcm91cCA9IChncm91cDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyBzZWxlY3RlZEdyb3VwOiBncm91cCwgdHlwZTogJ3NlbGVjdEdyb3VwJyB9KVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZERhdGEuc2VsZWN0ZWRHcm91cHMuaW5jbHVkZXMoZ3JvdXApKSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXS5maWx0ZXIoXG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlID0+XG4gICAgICAgICAgICAgICFvcHRpb25zW2dyb3VwXS5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkVmFsdWVzID0gWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlc11cblxuICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT5cbiAgICAgICAgICAgIG5ld1NlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgfHwgb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG5ld1NlbGVjdGVkVmFsdWVzLnB1c2gob3B0aW9uLnZhbHVlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgb25DaGFuZ2U/LihuZXdTZWxlY3RlZFZhbHVlcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAhQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSA/IChcbiAgICA8RHJvcGRvd25Db250YWluZXJcbiAgICAgIGRhdGEtZ3JvdXBlZFxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgID5cbiAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgdmFyaWFudD1cImJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHlTbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBnYXA9ezAuMjV9IGtleT17Z3JvdXB9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2Bncm91cC0ke2luZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RHcm91cChncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9e3NlbGVjdEFsbEdyb3VwID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RBbGxHcm91cCA/IGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtncm91cC50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwV3JhcHBlcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTdGFjayBnYXA9XCIwLjI1XCIgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICAgIHtkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5tYXAoKG9wdGlvbiwgaW5kZXhPcHRpb24pID0+IChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2BvcHRpb24tJHtvcHRpb24udmFsdWV9YH1cbiAgICAgICAgICAgICAgICAgICAgaWQ9e2BvcHRpb24tJHtpbmRleE9wdGlvbn1gfVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlZj17XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSBkZWZhdWx0U2VhcmNoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uc2VhcmNoVGV4dCA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGZvY3VzZWRJdGVtUmVmXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9eyFvcHRpb24uZGlzYWJsZWQgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICkpfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApIDogKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgZGF0YS1ncm91cGVkPXtmYWxzZX1cbiAgICAgIGdhcD17MC4yNX1cbiAgICAgIGlkPVwic2VsZWN0LWRyb3Bkb3duXCJcbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93blNlbGVjdH1cbiAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICA+XG4gICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICA8U3RhY2sgZ2FwPXswLjI1fSBpZD1cIml0ZW1zXCIgdGFiSW5kZXg9ey0xfT5cbiAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICBhcmlhLWRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gc2VsZWN0QWxsT3B0aW9ucygpIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGwtY2hlY2tib3hcIlxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdGFjayBkaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgdmFyaWFudD1cImJvZHlcIj5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFN0YWNrIGdhcD17MC4yNX0gaWQ9XCJpdGVtc1wiPlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9eyEhb3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAga2V5PXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBoYW5kbGVDbGljayhvcHRpb24pIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlZj17XG4gICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSBkZWZhdWx0U2VhcmNoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICBvcHRpb24uc2VhcmNoVGV4dCA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlXG4gICAgICAgICAgICAgICAgICA/IGZvY3VzZWRJdGVtUmVmXG4gICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9eyFvcHRpb24uZGlzYWJsZWQgPyAwIDogLTF9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICApKVxuICAgICAgICApfVxuICAgICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICAgIDwvU3RhY2s+XG4gICAgPC9Ecm9wZG93bkNvbnRhaW5lcj5cbiAgKVxufVxuZXhwb3J0IGNvbnN0IERyb3Bkb3duID0gKHtcbiAgY2hpbGRyZW4sXG4gIGVtcHR5U3RhdGUsXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uLFxuICBzZWFyY2hhYmxlLFxuICBwbGFjZWhvbGRlcixcbiAgZm9vdGVyLFxuICByZWZTZWxlY3QsXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGlzTG9hZGluZyxcbiAgc2l6ZSxcbiAgZHJvcGRvd25BbGlnbixcbiAgcG9ydGFsVGFyZ2V0LFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuICBjb25zdCBtb2RhbENvbnRleHQgPSB1c2VDb250ZXh0KE1vZGFsQ29udGV4dClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWZTZWxlY3QuY3VycmVudCAmJiBpc0Ryb3Bkb3duVmlzaWJsZSkge1xuICAgICAgY29uc3QgcG9zaXRpb24gPVxuICAgICAgICByZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20gK1xuICAgICAgICBEUk9QRE9XTl9NQVhfSEVJR0hUICtcbiAgICAgICAgTnVtYmVyKHRoZW1lLnNpemluZ1tJTlBVVF9TSVpFX0hFSUdIVFtzaXplXV0ucmVwbGFjZSgncmVtJywgJycpKSAqIDE2ICtcbiAgICAgICAgTnVtYmVyLnBhcnNlSW50KHRoZW1lLnNwYWNlWyc1J10sIDEwKVxuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBwb3NpdGlvbiAtIHdpbmRvdy5pbm5lckhlaWdodCArIDMyXG4gICAgICBpZiAob3ZlcmZsb3cgPiAwICYmIG1vZGFsQ29udGV4dCkge1xuICAgICAgICBjb25zdCBjdXJyZW50TW9kYWwgPSBtb2RhbENvbnRleHQub3BlbmVkTW9kYWxzWzBdXG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGN1cnJlbnRNb2RhbD8ucmVmLmN1cnJlbnRcblxuICAgICAgICBpZiAobW9kYWxFbGVtZW50KSB7XG4gICAgICAgICAgY29uc3QgcGFyZW50RWxlbWVudCA9IG1vZGFsRWxlbWVudC5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50XG4gICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuc2Nyb2xsQnkoe1xuICAgICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgICAgICAgIHRvcDogb3ZlcmZsb3csXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHdpbmRvdy5zY3JvbGxCeSh7IGJlaGF2aW9yOiAnc21vb3RoJywgdG9wOiBvdmVyZmxvdyB9KVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtpc0Ryb3Bkb3duVmlzaWJsZSwgcmVmU2VsZWN0LCBzaXplLCByZWYuY3VycmVudF0pXG5cbiAgY29uc3QgcmVzaXplRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQgJiZcbiAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoID4gMFxuICAgICkge1xuICAgICAgc2V0V2lkdGgocmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpXG4gICAgfVxuICB9LCBbcmVmU2VsZWN0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlc2l6ZURyb3Bkb3duKClcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplRHJvcGRvd24pXG4gIH0sIFtyZXNpemVEcm9wZG93bl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNlYXJjaElucHV0KSB7XG4gICAgICBvblNlYXJjaChvcHRpb25zKVxuICAgIH1cbiAgfSwgW29uU2VhcmNoLCBvcHRpb25zLCBzZWFyY2hJbnB1dF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBzZXREZWZhdWx0U2VhcmNoKG51bGwpXG4gICAgICBzZXRTZWFyY2goJycpXG4gICAgfVxuXG4gICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgc2VhcmNoLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoIXNlYXJjaGFibGUpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGV2ZW50ID0+XG4gICAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICAgICAgICAgIHNldFNlYXJjaCxcbiAgICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGlzRHJvcGRvd25WaXNpYmxlLFxuICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICBvcHRpb25zLFxuICAgIG9uU2VhcmNoLFxuICAgIHNlYXJjaCxcbiAgICByZWZTZWxlY3QsXG4gICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hhYmxlLFxuICBdKVxuXG4gIC8vIE5vIGRhdGEgaXMgZGlzcGxheWVkIChiZWNhdXNlIG9mIHRoZSBzZWFyY2ggb3IgYmVjYXVzZSBubyBkYXRhIGlzIHByb3ZpZGVkKVxuICAvLyBTZXQgdG8gdHJ1ZSB3aGVuIG5vRGF0YSBieSBkZWZhdWx0XG4gIGNvbnN0IGlzRW1wdHkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAobnVtYmVyT2ZPcHRpb25zID09PSAwKSByZXR1cm4gdHJ1ZVxuICAgIGlmIChBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gZGlzcGxheWVkT3B0aW9ucy5sZW5ndGggPT09IDBcbiAgICB9XG4gICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucylcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgICAgaWYgKGRpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfSwgW2Rpc3BsYXllZE9wdGlvbnMsIG51bWJlck9mT3B0aW9uc10pXG5cbiAgY29uc3QgY29tcHV0ZWRGb290ZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoZm9vdGVyICYmICFpc0VtcHR5KSB7XG4gICAgICBpZiAodHlwZW9mIGZvb3RlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxQb3B1cEZvb3Rlcj57Zm9vdGVyKCgpID0+IHNldElzRHJvcGRvd25WaXNpYmxlKGZhbHNlKSl9PC9Qb3B1cEZvb3Rlcj5cbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gPFBvcHVwRm9vdGVyPntmb290ZXJ9PC9Qb3B1cEZvb3Rlcj5cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9LCBbaXNFbXB0eSwgZm9vdGVyLCBzZXRJc0Ryb3Bkb3duVmlzaWJsZV0pXG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkUG9wdXBcbiAgICAgIGFsaWduPXtkcm9wZG93bkFsaWduID8/ICdzdGFydCd9XG4gICAgICBjb250YWluZXJGdWxsV2lkdGhcbiAgICAgIGRlYm91bmNlRGVsYXk9ezB9XG4gICAgICBkaXNhYmxlQW5pbWF0aW9uXG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICBoaWRlT25DbGlja091dHNpZGVcbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBvbkNsb3NlPXsoKSA9PiBzZXRJc0Ryb3Bkb3duVmlzaWJsZShmYWxzZSl9XG4gICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgcG9ydGFsVGFyZ2V0PXtwb3J0YWxUYXJnZXR9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgdGV4dD17XG4gICAgICAgIDxTdGFjaz5cbiAgICAgICAgICB7c2VhcmNoYWJsZSAmJiAhaXNMb2FkaW5nICYmIG51bWJlck9mT3B0aW9ucyA+PSA2ID8gKFxuICAgICAgICAgICAgPFNlYXJjaEJhckRyb3Bkb3duXG4gICAgICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnM9e2Rpc3BsYXllZE9wdGlvbnN9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgc2V0U2VhcmNoQmFyQWN0aXZlPXtzZXRTZWFyY2hCYXJBY3RpdmV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxDcmVhdGVEcm9wZG93blxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaFZhbHVlPXtkZWZhdWx0U2VhcmNoVmFsdWV9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICBlbXB0eVN0YXRlPXtlbXB0eVN0YXRlfVxuICAgICAgICAgICAgaXNFbXB0eT17aXNFbXB0eX1cbiAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgICAgbG9hZE1vcmU9e2xvYWRNb3JlfVxuICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7Y29tcHV0ZWRGb290ZXJ9XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICB9XG4gICAgICB2aXNpYmxlPXtpc0Ryb3Bkb3duVmlzaWJsZX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdHlsZWRQb3B1cD5cbiAgKVxufVxuIl19 */"));
36
37
  const DropdownContainer = /* @__PURE__ */ _styled(Stack, process.env.NODE_ENV === "production" ? {
37
38
  target: "e12qyldb7"
38
39
  } : {
@@ -46,7 +47,7 @@ const DropdownContainer = /* @__PURE__ */ _styled(Stack, process.env.NODE_ENV ==
46
47
  theme
47
48
  }) => theme.space[0.5], ';&[data-grouped="true"]{padding-top:', ({
48
49
  theme
49
- }) => theme.space[0], ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2RW9FIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIENvbXBvbmVudFByb3BzLFxuICBEaXNwYXRjaCxcbiAgS2V5Ym9hcmRFdmVudCxcbiAgUmVhY3ROb2RlLFxuICBSZWZPYmplY3QsXG4gIFNldFN0YXRlQWN0aW9uLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAnLi4vQ2hlY2tib3gnXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uL1BvcHVwJ1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuLi9Ta2VsZXRvbidcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnLi4vU3RhY2snXG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vVGV4dCdcbmltcG9ydCB7IERpc3BsYXlPcHRpb24gfSBmcm9tICcuL0Ryb3Bkb3duT3B0aW9uJ1xuaW1wb3J0IHsgU2VhcmNoQmFyRHJvcGRvd24gfSBmcm9tICcuL1NlYXJjaEJhckRyb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2VsZWN0SW5wdXQgfSBmcm9tICcuL1NlbGVjdElucHV0UHJvdmlkZXInXG5pbXBvcnQgdHlwZSB7IERhdGFUeXBlLCBPcHRpb25UeXBlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IElOUFVUX1NJWkVfSEVJR0hUIH0gZnJvbSAnLi90eXBlcydcblxuY29uc3QgRFJPUERPV05fTUFYX0hFSUdIVCA9IDI1NlxuXG5leHBvcnQgdHlwZSBEcm9wZG93blByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBzZWFyY2hhYmxlOiBib29sZWFuXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmdcbiAgZm9vdGVyPzogKChjbG9zZURyb3Bkb3duOiAoKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpIHwgUmVhY3ROb2RlXG4gIHJlZlNlbGVjdDogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbiAgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJ1xuICBkcm9wZG93bkFsaWduPzogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBvcHVwPlsnYWxpZ24nXVxuICBwb3J0YWxUYXJnZXQ/OiBDb21wb25lbnRQcm9wczx0eXBlb2YgUG9wdXA+Wydwb3J0YWxUYXJnZXQnXVxufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVEcm9wZG93blByb3BzID0ge1xuICBpc0VtcHR5OiBib29sZWFuXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBsb2FkTW9yZT86IFJlYWN0Tm9kZVxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCdcbiAgZGVmYXVsdFNlYXJjaFZhbHVlOiBzdHJpbmcgfCBudWxsXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbn1cblxuY29uc3QgTk9OX1NFQVJDSEFCTEVfS0VZUyA9IFtcbiAgJ1RhYicsXG4gICcgJyxcbiAgJ0VudGVyJyxcbiAgJ0NhcHNMb2NrJyxcbiAgJ1NoaWZ0JyxcbiAgJ0Fycm93RG93bicsXG4gICdBcnJvd1VwJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0VzY2FwZScsXG5dXG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKFBvcHVwKWBcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBwYWRkaW5nLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbiAgcGFkZGluZy10b3A6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX07XG5cbiAgJltkYXRhLWdyb3VwZWQ9XCJ0cnVlXCJdIHtcbiAgICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIH1cbmBcbmNvbnN0IERyb3Bkb3duR3JvdXAgPSBzdHlsZWQuYnV0dG9uPHsgJ2RhdGEtc2VsZWN0Z3JvdXAnOiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBwYWRkaW5nLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBoZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbNF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjI1J119O1xuXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgICBib3JkZXItbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfSBzb2xpZCAkeyh7IHRoZW1lIH0pID0+XG4gICAgICB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kSG92ZXJ9O1xuICB9XG5gXG5jb25zdCBEcm9wZG93bkdyb3VwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcblxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzEuNSddfSAkeyh7IHRoZW1lIH0pID0+XG4gICAgdGhlbWUuc3BhY2VbJzInXX07XG4gIG1hcmdpbi1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjUnXX07XG4gIG1hcmdpbi1yaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuXG4gIGNvbG9yOiAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgYm9yZGVyOiAxcHggdHJhbnNwYXJlbnQgc29saWQ7XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICB9XG5cbiAgJlthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kRGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHREaXNhYmxlZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdOmhvdmVyLCBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICAgIHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdEaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmBcblxuY29uc3QgUG9wdXBGb290ZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfVxuICAgICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMS41XX0gJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2hhZG93cy5kcm9wZG93bn07XG5gXG5jb25zdCBTdHlsZWRDaGVja2JveCA9IHN0eWxlZChDaGVja2JveClgXG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAgLy8gcG9pbnRlci1ldmVudHM6IG5vbmUgcHJldmVudHMgYW55IGVycm9yIHdoZW4gdXNpbmcgdGhlIGNoZWNrYm94IGluIGEgZm9ybSBzaW5jZSBpdCBpcyBhbiB1bm5hbWVkIGlucHV0XG5cbmNvbnN0IEVtcHR5U3RhdGUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbmBcbmNvbnN0IExvYWRNb3JlID0gc3R5bGVkKFN0YWNrKWBcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbmBcblxuY29uc3QgbW92ZUZvY3VzRG93biA9ICgpID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgJyNpdGVtcyA+IGRpdltyb2xlPVwib3B0aW9uXCJdOm5vdChbZGlzYWJsZWRdKScsXG4gIClcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnM/Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBsaXN0TGVuZ3RoID0gb3B0aW9ucy5sZW5ndGhcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbbGlzdExlbmd0aCAtIDFdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpICsgMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IG1vdmVGb2N1c1VwID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoYWN0aXZlSXRlbSA9PT0gb3B0aW9uc1tpXSAmJiBhY3RpdmVJdGVtICE9PSBvcHRpb25zWzBdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpIC0gMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IGhhbmRsZUtleURvd25TZWxlY3QgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c0Rvd24oKVxuICB9XG5cbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c1VwKClcbiAgfVxuXG4gIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgIC8vIE5vIHNjcm9sbFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxufVxuXG5jb25zdCBoYW5kbGVLZXlEb3duID0gKFxuICBldmVudDogZ2xvYmFsVGhpcy5LZXlib2FyZEV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maW5kKG9wdGlvbiA9PlxuICAgICAgICBvcHRpb24uc2VhcmNoVGV4dFxuICAgICAgICAgID8gb3B0aW9uLnNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpXG4gICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgKVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IENyZWF0ZURyb3Bkb3duID0gKHtcbiAgaXNFbXB0eSxcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZSxcbiAgaXNMb2FkaW5nLFxufTogQ3JlYXRlRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgb25DaGFuZ2UsXG4gICAgb3B0aW9ucyxcbiAgICBtdWx0aXNlbGVjdCxcbiAgICBzZWxlY3RBbGwsXG4gICAgc2VsZWN0QWxsR3JvdXAsXG4gICAgZGlzcGxheWVkT3B0aW9ucyxcbiAgICBzZXRTZWxlY3RlZERhdGEsXG4gICAgc2VsZWN0ZWREYXRhLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCBmb2N1c2VkSXRlbVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0U2VhcmNoVmFsdWUgJiYgZm9jdXNlZEl0ZW1SZWY/LmN1cnJlbnQpIHtcbiAgICAgIGZvY3VzZWRJdGVtUmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRTZWFyY2hWYWx1ZV0pXG5cbiAgaWYgKGlzRW1wdHkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEVtcHR5U3RhdGUgZ2FwPXsyfSBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgIHtlbXB0eVN0YXRlID8/IChcbiAgICAgICAgICA8VGV4dCB2YXJpYW50PVwiYm9keVN0cm9uZ1wiIGFzPVwicFwiPlxuICAgICAgICAgICAgTm8gb3B0aW9uc1xuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKX1cbiAgICAgIDwvRW1wdHlTdGF0ZT5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbGljayA9IChjbGlja2VkT3B0aW9uOiBPcHRpb25UeXBlLCBncm91cD86IHN0cmluZykgPT4ge1xuICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RPcHRpb24nLCBjbGlja2VkT3B0aW9uLCBncm91cCB9KVxuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhjbGlja2VkT3B0aW9uLnZhbHVlKSkge1xuICAgICAgICBvbkNoYW5nZT8uKFxuICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5maWx0ZXIoXG4gICAgICAgICAgICB2YWwgPT4gdmFsICE9PSBjbGlja2VkT3B0aW9uLnZhbHVlLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcywgY2xpY2tlZE9wdGlvbi52YWx1ZV0pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uQ2hhbmdlPy4oY2xpY2tlZE9wdGlvbi52YWx1ZSlcbiAgICB9XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUobXVsdGlzZWxlY3QpIC8vIGhpZGUgdGhlIGRyb3Bkb3duIG9uIGNsaWNrIHdoZW4gc2luZ2xlIHNlbGVjdCBvbmx5XG4gIH1cblxuICBjb25zdCBzZWxlY3RBbGxPcHRpb25zID0gKCkgPT4ge1xuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdEFsbCcgfSlcbiAgICAgIGlmIChzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWQgJiYgb25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UoW10pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhbGxWYWx1ZXM6IE9wdGlvblR5cGVbXSA9IFtdXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT5cbiAgICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGFsbFZhbHVlcy5wdXNoKG9wdGlvbilcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9ucy5tYXAob3B0aW9uID0+IGFsbFZhbHVlcy5wdXNoKG9wdGlvbikpXG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2U/LihhbGxWYWx1ZXMubWFwKHZhbHVlID0+IHZhbHVlLnZhbHVlKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RHcm91cCA9IChncm91cDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0R3JvdXAnLCBzZWxlY3RlZEdyb3VwOiBncm91cCB9KVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZERhdGEuc2VsZWN0ZWRHcm91cHMuaW5jbHVkZXMoZ3JvdXApKSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXS5maWx0ZXIoXG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlID0+XG4gICAgICAgICAgICAgICFvcHRpb25zW2dyb3VwXS5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkVmFsdWVzID0gWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlc11cblxuICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT5cbiAgICAgICAgICAgIG5ld1NlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgfHwgb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG5ld1NlbGVjdGVkVmFsdWVzLnB1c2gob3B0aW9uLnZhbHVlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgb25DaGFuZ2U/LihuZXdTZWxlY3RlZFZhbHVlcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAhQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSA/IChcbiAgICA8RHJvcGRvd25Db250YWluZXJcbiAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgIGlkPVwic2VsZWN0LWRyb3Bkb3duXCJcbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93blNlbGVjdH1cbiAgICAgIGRhdGEtZ3JvdXBlZFxuICAgID5cbiAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGwtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtncm91cC50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFzPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwV3JhcHBlcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPVwiMC4yNVwiPlxuICAgICAgICAgICAgICAgIHtkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5tYXAoKG9wdGlvbiwgaW5kZXhPcHRpb24pID0+IChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAga2V5PXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9eyEhb3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4T3B0aW9ufWB9XG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICkpfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApIDogKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZ2FwPXswLjI1fVxuICAgICAgZGF0YS1ncm91cGVkPXtmYWxzZX1cbiAgICA+XG4gICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiIGdhcD17MC4yNX0gdGFiSW5kZXg9ey0xfT5cbiAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICBhcmlhLWRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gc2VsZWN0QWxsT3B0aW9ucygpIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdGFjayBkaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHlTbWFsbFwiXG4gICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgcHJvbWluZW5jZT1cIndlYWtcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9ezAuMjV9PlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgIGtleT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPXshIW9wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBoYW5kbGVDbGljayhvcHRpb24pIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICApKVxuICAgICAgICApfVxuICAgICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICAgIDwvU3RhY2s+XG4gICAgPC9Ecm9wZG93bkNvbnRhaW5lcj5cbiAgKVxufVxuZXhwb3J0IGNvbnN0IERyb3Bkb3duID0gKHtcbiAgY2hpbGRyZW4sXG4gIGVtcHR5U3RhdGUsXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uLFxuICBzZWFyY2hhYmxlLFxuICBwbGFjZWhvbGRlcixcbiAgZm9vdGVyLFxuICByZWZTZWxlY3QsXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGlzTG9hZGluZyxcbiAgc2l6ZSxcbiAgZHJvcGRvd25BbGlnbixcbiAgcG9ydGFsVGFyZ2V0LFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZlNlbGVjdC5jdXJyZW50ICYmIGlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9XG4gICAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSArXG4gICAgICAgIERST1BET1dOX01BWF9IRUlHSFQgK1xuICAgICAgICBOdW1iZXIodGhlbWUuc2l6aW5nW0lOUFVUX1NJWkVfSEVJR0hUW3NpemVdXS5yZXBsYWNlKCdyZW0nLCAnJykpICogMTYgK1xuICAgICAgICBOdW1iZXIucGFyc2VJbnQodGhlbWUuc3BhY2VbJzUnXSwgMTApXG4gICAgICBjb25zdCBvdmVyZmxvdyA9IHBvc2l0aW9uIC0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7XG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrZHJvcC1tb2RhbCcpXG5cbiAgICAgICAgaWYgKG1vZGFsRWxlbWVudCkge1xuICAgICAgICAgIG1vZGFsRWxlbWVudC5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgICB9IGVsc2Ugd2luZG93LnNjcm9sbEJ5KHsgdG9wOiBvdmVyZmxvdywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pXG4gICAgICB9XG4gICAgfVxuICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2lzRHJvcGRvd25WaXNpYmxlLCByZWZTZWxlY3QsIHNpemUsIHJlZi5jdXJyZW50XSlcblxuICBjb25zdCByZXNpemVEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICByZWZTZWxlY3QuY3VycmVudCAmJlxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiAwXG4gICAgKSB7XG4gICAgICBzZXRXaWR0aChyZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aClcbiAgICB9XG4gIH0sIFtyZWZTZWxlY3RdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVzaXplRHJvcGRvd24oKVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZURyb3Bkb3duKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcbiAgfSwgW3Jlc2l6ZURyb3Bkb3duXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2VhcmNoSW5wdXQpIHtcbiAgICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gICAgfVxuICB9LCBbb25TZWFyY2gsIG9wdGlvbnMsIHNlYXJjaElucHV0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIHNldFNlYXJjaCgnJylcbiAgICB9XG5cbiAgICBpZiAoIXNlYXJjaGFibGUpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICBoYW5kbGVLZXlEb3duKFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICksXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICghc2VhcmNoYWJsZSkge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgICBoYW5kbGVLZXlEb3duKFxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICByZWYsXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgIG9wdGlvbnMsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoLFxuICAgIHJlZlNlbGVjdCxcbiAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgIHNlYXJjaGFibGUsXG4gIF0pXG5cbiAgLy8gTm8gZGF0YSBpcyBkaXNwbGF5ZWQgKGJlY2F1c2Ugb2YgdGhlIHNlYXJjaCBvciBiZWNhdXNlIG5vIGRhdGEgaXMgcHJvdmlkZWQpXG4gIC8vIFNldCB0byB0cnVlIHdoZW4gbm9EYXRhIGJ5IGRlZmF1bHRcbiAgY29uc3QgaXNFbXB0eSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChudW1iZXJPZk9wdGlvbnMgPT09IDApIHJldHVybiB0cnVlXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGxheWVkT3B0aW9ucykpIHtcbiAgICAgIHJldHVybiBkaXNwbGF5ZWRPcHRpb25zLmxlbmd0aCA9PT0gMFxuICAgIH1cbiAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgICBpZiAoZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9LCBbZGlzcGxheWVkT3B0aW9ucywgbnVtYmVyT2ZPcHRpb25zXSlcblxuICBjb25zdCBjb21wdXRlZEZvb3RlciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChmb290ZXIgJiYgIWlzRW1wdHkpIHtcbiAgICAgIGlmICh0eXBlb2YgZm9vdGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFBvcHVwRm9vdGVyPntmb290ZXIoKCkgPT4gc2V0SXNEcm9wZG93blZpc2libGUoZmFsc2UpKX08L1BvcHVwRm9vdGVyPlxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiA8UG9wdXBGb290ZXI+e2Zvb3Rlcn08L1BvcHVwRm9vdGVyPlxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH0sIFtpc0VtcHR5LCBmb290ZXIsIHNldElzRHJvcGRvd25WaXNpYmxlXSlcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRQb3B1cFxuICAgICAgdmlzaWJsZT17aXNEcm9wZG93blZpc2libGV9XG4gICAgICB0ZXh0PXtcbiAgICAgICAgPFN0YWNrPlxuICAgICAgICAgIHtzZWFyY2hhYmxlICYmICFpc0xvYWRpbmcgJiYgbnVtYmVyT2ZPcHRpb25zID49IDYgPyAoXG4gICAgICAgICAgICA8U2VhcmNoQmFyRHJvcGRvd25cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zPXtkaXNwbGF5ZWRPcHRpb25zfVxuICAgICAgICAgICAgICBzZXRTZWFyY2hCYXJBY3RpdmU9e3NldFNlYXJjaEJhckFjdGl2ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPENyZWF0ZURyb3Bkb3duXG4gICAgICAgICAgICBpc0VtcHR5PXtpc0VtcHR5fVxuICAgICAgICAgICAgZW1wdHlTdGF0ZT17ZW1wdHlTdGF0ZX1cbiAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgIGxvYWRNb3JlPXtsb2FkTW9yZX1cbiAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaFZhbHVlPXtkZWZhdWx0U2VhcmNoVmFsdWV9XG4gICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtjb21wdXRlZEZvb3Rlcn1cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIH1cbiAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICBkaXNhYmxlQW5pbWF0aW9uXG4gICAgICBtYXhXaWR0aD17bWF4V2lkdGggPz8gcmVmU2VsZWN0LmN1cnJlbnQ/Lm9mZnNldFdpZHRofVxuICAgICAgaGFzQXJyb3c9e2ZhbHNlfVxuICAgICAgcmVmPXtyZWZ9XG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgIGRlYm91bmNlRGVsYXk9ezB9XG4gICAgICBjb250YWluZXJGdWxsV2lkdGhcbiAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZVxuICAgICAgb25DbG9zZT17KCkgPT4gc2V0SXNEcm9wZG93blZpc2libGUoZmFsc2UpfVxuICAgICAgYWxpZ249e2Ryb3Bkb3duQWxpZ24gPz8gJ3N0YXJ0J31cbiAgICAgIHBvcnRhbFRhcmdldD17cG9ydGFsVGFyZ2V0fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1N0eWxlZFBvcHVwPlxuICApXG59XG4iXX0= */"));
50
+ }) => theme.space[0], ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxRm9FIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgdHlwZSB7XG4gIENvbXBvbmVudFByb3BzLFxuICBEaXNwYXRjaCxcbiAgS2V5Ym9hcmRFdmVudCxcbiAgUmVhY3ROb2RlLFxuICBSZWZPYmplY3QsXG4gIFNldFN0YXRlQWN0aW9uLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IE1vZGFsQ29udGV4dCB9IGZyb20gJy4uL01vZGFsL01vZGFsUHJvdmlkZXInXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uL1BvcHVwJ1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuLi9Ta2VsZXRvbidcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnLi4vU3RhY2snXG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vVGV4dCdcbmltcG9ydCB7IERpc3BsYXlPcHRpb24gfSBmcm9tICcuL0Ryb3Bkb3duT3B0aW9uJ1xuaW1wb3J0IHsgU2VhcmNoQmFyRHJvcGRvd24gfSBmcm9tICcuL1NlYXJjaEJhckRyb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2VsZWN0SW5wdXQgfSBmcm9tICcuL1NlbGVjdElucHV0UHJvdmlkZXInXG5pbXBvcnQgdHlwZSB7IERhdGFUeXBlLCBPcHRpb25UeXBlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IElOUFVUX1NJWkVfSEVJR0hUIH0gZnJvbSAnLi90eXBlcydcblxuY29uc3QgRFJPUERPV05fTUFYX0hFSUdIVCA9IDI1NlxuXG5leHBvcnQgdHlwZSBEcm9wZG93blByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBzZWFyY2hhYmxlOiBib29sZWFuXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmdcbiAgZm9vdGVyPzogKChjbG9zZURyb3Bkb3duOiAoKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpIHwgUmVhY3ROb2RlXG4gIHJlZlNlbGVjdDogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbiAgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJ1xuICBkcm9wZG93bkFsaWduPzogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBvcHVwPlsnYWxpZ24nXVxuICBwb3J0YWxUYXJnZXQ/OiBDb21wb25lbnRQcm9wczx0eXBlb2YgUG9wdXA+Wydwb3J0YWxUYXJnZXQnXVxufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVEcm9wZG93blByb3BzID0ge1xuICBpc0VtcHR5OiBib29sZWFuXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBsb2FkTW9yZT86IFJlYWN0Tm9kZVxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCdcbiAgZGVmYXVsdFNlYXJjaFZhbHVlOiBzdHJpbmcgfCBudWxsXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbn1cblxuY29uc3QgTk9OX1NFQVJDSEFCTEVfS0VZUyA9IFtcbiAgJ1RhYicsXG4gICcgJyxcbiAgJ0VudGVyJyxcbiAgJ0NhcHNMb2NrJyxcbiAgJ1NoaWZ0JyxcbiAgJ0Fycm93RG93bicsXG4gICdBcnJvd1VwJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0VzY2FwZScsXG5dXG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKFBvcHVwKWBcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBwYWRkaW5nLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbiAgcGFkZGluZy10b3A6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX07XG5cbiAgJltkYXRhLWdyb3VwZWQ9XCJ0cnVlXCJdIHtcbiAgICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIH1cbmBcbmNvbnN0IERyb3Bkb3duR3JvdXAgPSBzdHlsZWQuYnV0dG9uPHsgJ2RhdGEtc2VsZWN0Z3JvdXAnOiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBwYWRkaW5nLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBoZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbNF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjI1J119O1xuXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgICBib3JkZXItbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfSBzb2xpZCAkeyh7IHRoZW1lIH0pID0+XG4gICAgICB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kSG92ZXJ9O1xuICB9XG5gXG5jb25zdCBEcm9wZG93bkdyb3VwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcblxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzEuNSddfSAkeyh7IHRoZW1lIH0pID0+XG4gICAgdGhlbWUuc3BhY2VbJzInXX07XG4gIG1hcmdpbi1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjUnXX07XG4gIG1hcmdpbi1yaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuXG4gIGNvbG9yOiAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgYm9yZGVyOiAxcHggdHJhbnNwYXJlbnQgc29saWQ7XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICB9XG5cbiAgJlthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kRGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHREaXNhYmxlZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdOmhvdmVyLCBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICAgIHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdEaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmBcblxuY29uc3QgUG9wdXBGb290ZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfVxuICAgICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMS41XX0gJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2hhZG93cy5kcm9wZG93bn07XG5gXG5jb25zdCBTdHlsZWRDaGVja2JveCA9IHN0eWxlZChDaGVja2JveClgXG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAgLy8gcG9pbnRlci1ldmVudHM6IG5vbmUgcHJldmVudHMgYW55IGVycm9yIHdoZW4gdXNpbmcgdGhlIGNoZWNrYm94IGluIGEgZm9ybSBzaW5jZSBpdCBpcyBhbiB1bm5hbWVkIGlucHV0XG5cbmNvbnN0IEVtcHR5U3RhdGUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbmBcbmNvbnN0IExvYWRNb3JlID0gc3R5bGVkKFN0YWNrKWBcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbmBcblxuY29uc3QgbW92ZUZvY3VzRG93biA9ICgpID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgJyNpdGVtcyA+IGRpdltyb2xlPVwib3B0aW9uXCJdOm5vdChbZGlzYWJsZWRdKScsXG4gIClcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnM/Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBsaXN0TGVuZ3RoID0gb3B0aW9ucy5sZW5ndGhcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbbGlzdExlbmd0aCAtIDFdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpICsgMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IG1vdmVGb2N1c1VwID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoYWN0aXZlSXRlbSA9PT0gb3B0aW9uc1tpXSAmJiBhY3RpdmVJdGVtICE9PSBvcHRpb25zWzBdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpIC0gMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IGhhbmRsZUtleURvd25TZWxlY3QgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c0Rvd24oKVxuICB9XG5cbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c1VwKClcbiAgfVxuXG4gIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgIC8vIE5vIHNjcm9sbFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxufVxuXG5jb25zdCBoYW5kbGVLZXlEb3duID0gKFxuICBldmVudDogZ2xvYmFsVGhpcy5LZXlib2FyZEV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maW5kKG9wdGlvbiA9PlxuICAgICAgICBvcHRpb24uc2VhcmNoVGV4dFxuICAgICAgICAgID8gb3B0aW9uLnNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpXG4gICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgKVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IENyZWF0ZURyb3Bkb3duID0gKHtcbiAgaXNFbXB0eSxcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZSxcbiAgaXNMb2FkaW5nLFxufTogQ3JlYXRlRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgb25DaGFuZ2UsXG4gICAgb3B0aW9ucyxcbiAgICBtdWx0aXNlbGVjdCxcbiAgICBzZWxlY3RBbGwsXG4gICAgc2VsZWN0QWxsR3JvdXAsXG4gICAgZGlzcGxheWVkT3B0aW9ucyxcbiAgICBzZXRTZWxlY3RlZERhdGEsXG4gICAgc2VsZWN0ZWREYXRhLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCBmb2N1c2VkSXRlbVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0U2VhcmNoVmFsdWUgJiYgZm9jdXNlZEl0ZW1SZWY/LmN1cnJlbnQpIHtcbiAgICAgIGZvY3VzZWRJdGVtUmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRTZWFyY2hWYWx1ZV0pXG5cbiAgaWYgKGlzRW1wdHkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEVtcHR5U3RhdGUgYWxpZ25JdGVtcz1cImNlbnRlclwiIGdhcD17Mn0+XG4gICAgICAgIHtlbXB0eVN0YXRlID8/IChcbiAgICAgICAgICA8VGV4dCBhcz1cInBcIiB2YXJpYW50PVwiYm9keVN0cm9uZ1wiPlxuICAgICAgICAgICAgTm8gb3B0aW9uc1xuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKX1cbiAgICAgIDwvRW1wdHlTdGF0ZT5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbGljayA9IChjbGlja2VkT3B0aW9uOiBPcHRpb25UeXBlLCBncm91cD86IHN0cmluZykgPT4ge1xuICAgIHNldFNlbGVjdGVkRGF0YSh7IGNsaWNrZWRPcHRpb24sIGdyb3VwLCB0eXBlOiAnc2VsZWN0T3B0aW9uJyB9KVxuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhjbGlja2VkT3B0aW9uLnZhbHVlKSkge1xuICAgICAgICBvbkNoYW5nZT8uKFxuICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5maWx0ZXIoXG4gICAgICAgICAgICB2YWwgPT4gdmFsICE9PSBjbGlja2VkT3B0aW9uLnZhbHVlLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcywgY2xpY2tlZE9wdGlvbi52YWx1ZV0pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uQ2hhbmdlPy4oY2xpY2tlZE9wdGlvbi52YWx1ZSlcbiAgICB9XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUobXVsdGlzZWxlY3QpIC8vIGhpZGUgdGhlIGRyb3Bkb3duIG9uIGNsaWNrIHdoZW4gc2luZ2xlIHNlbGVjdCBvbmx5XG4gIH1cblxuICBjb25zdCBzZWxlY3RBbGxPcHRpb25zID0gKCkgPT4ge1xuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdEFsbCcgfSlcbiAgICAgIGlmIChzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWQgJiYgb25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UoW10pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhbGxWYWx1ZXM6IE9wdGlvblR5cGVbXSA9IFtdXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT5cbiAgICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGFsbFZhbHVlcy5wdXNoKG9wdGlvbilcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9ucy5tYXAob3B0aW9uID0+IGFsbFZhbHVlcy5wdXNoKG9wdGlvbikpXG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2U/LihhbGxWYWx1ZXMubWFwKHZhbHVlID0+IHZhbHVlLnZhbHVlKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RHcm91cCA9IChncm91cDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyBzZWxlY3RlZEdyb3VwOiBncm91cCwgdHlwZTogJ3NlbGVjdEdyb3VwJyB9KVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZERhdGEuc2VsZWN0ZWRHcm91cHMuaW5jbHVkZXMoZ3JvdXApKSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXS5maWx0ZXIoXG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlID0+XG4gICAgICAgICAgICAgICFvcHRpb25zW2dyb3VwXS5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkVmFsdWVzID0gWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlc11cblxuICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT5cbiAgICAgICAgICAgIG5ld1NlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgfHwgb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG5ld1NlbGVjdGVkVmFsdWVzLnB1c2gob3B0aW9uLnZhbHVlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgb25DaGFuZ2U/LihuZXdTZWxlY3RlZFZhbHVlcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAhQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSA/IChcbiAgICA8RHJvcGRvd25Db250YWluZXJcbiAgICAgIGRhdGEtZ3JvdXBlZFxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgID5cbiAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgdmFyaWFudD1cImJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHlTbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBnYXA9ezAuMjV9IGtleT17Z3JvdXB9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2Bncm91cC0ke2luZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RHcm91cChncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9e3NlbGVjdEFsbEdyb3VwID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RBbGxHcm91cCA/IGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtncm91cC50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwV3JhcHBlcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTdGFjayBnYXA9XCIwLjI1XCIgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICAgIHtkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5tYXAoKG9wdGlvbiwgaW5kZXhPcHRpb24pID0+IChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2BvcHRpb24tJHtvcHRpb24udmFsdWV9YH1cbiAgICAgICAgICAgICAgICAgICAgaWQ9e2BvcHRpb24tJHtpbmRleE9wdGlvbn1gfVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlZj17XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSBkZWZhdWx0U2VhcmNoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uc2VhcmNoVGV4dCA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGZvY3VzZWRJdGVtUmVmXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9eyFvcHRpb24uZGlzYWJsZWQgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICkpfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApIDogKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgZGF0YS1ncm91cGVkPXtmYWxzZX1cbiAgICAgIGdhcD17MC4yNX1cbiAgICAgIGlkPVwic2VsZWN0LWRyb3Bkb3duXCJcbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93blNlbGVjdH1cbiAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICA+XG4gICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICA8U3RhY2sgZ2FwPXswLjI1fSBpZD1cIml0ZW1zXCIgdGFiSW5kZXg9ey0xfT5cbiAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICBhcmlhLWRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gc2VsZWN0QWxsT3B0aW9ucygpIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGwtY2hlY2tib3hcIlxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdGFjayBkaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgdmFyaWFudD1cImJvZHlcIj5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFN0YWNrIGdhcD17MC4yNX0gaWQ9XCJpdGVtc1wiPlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9eyEhb3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAga2V5PXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBoYW5kbGVDbGljayhvcHRpb24pIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlZj17XG4gICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSBkZWZhdWx0U2VhcmNoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICBvcHRpb24uc2VhcmNoVGV4dCA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlXG4gICAgICAgICAgICAgICAgICA/IGZvY3VzZWRJdGVtUmVmXG4gICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9eyFvcHRpb24uZGlzYWJsZWQgPyAwIDogLTF9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICApKVxuICAgICAgICApfVxuICAgICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICAgIDwvU3RhY2s+XG4gICAgPC9Ecm9wZG93bkNvbnRhaW5lcj5cbiAgKVxufVxuZXhwb3J0IGNvbnN0IERyb3Bkb3duID0gKHtcbiAgY2hpbGRyZW4sXG4gIGVtcHR5U3RhdGUsXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uLFxuICBzZWFyY2hhYmxlLFxuICBwbGFjZWhvbGRlcixcbiAgZm9vdGVyLFxuICByZWZTZWxlY3QsXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGlzTG9hZGluZyxcbiAgc2l6ZSxcbiAgZHJvcGRvd25BbGlnbixcbiAgcG9ydGFsVGFyZ2V0LFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuICBjb25zdCBtb2RhbENvbnRleHQgPSB1c2VDb250ZXh0KE1vZGFsQ29udGV4dClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWZTZWxlY3QuY3VycmVudCAmJiBpc0Ryb3Bkb3duVmlzaWJsZSkge1xuICAgICAgY29uc3QgcG9zaXRpb24gPVxuICAgICAgICByZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20gK1xuICAgICAgICBEUk9QRE9XTl9NQVhfSEVJR0hUICtcbiAgICAgICAgTnVtYmVyKHRoZW1lLnNpemluZ1tJTlBVVF9TSVpFX0hFSUdIVFtzaXplXV0ucmVwbGFjZSgncmVtJywgJycpKSAqIDE2ICtcbiAgICAgICAgTnVtYmVyLnBhcnNlSW50KHRoZW1lLnNwYWNlWyc1J10sIDEwKVxuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBwb3NpdGlvbiAtIHdpbmRvdy5pbm5lckhlaWdodCArIDMyXG4gICAgICBpZiAob3ZlcmZsb3cgPiAwICYmIG1vZGFsQ29udGV4dCkge1xuICAgICAgICBjb25zdCBjdXJyZW50TW9kYWwgPSBtb2RhbENvbnRleHQub3BlbmVkTW9kYWxzWzBdXG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGN1cnJlbnRNb2RhbD8ucmVmLmN1cnJlbnRcblxuICAgICAgICBpZiAobW9kYWxFbGVtZW50KSB7XG4gICAgICAgICAgY29uc3QgcGFyZW50RWxlbWVudCA9IG1vZGFsRWxlbWVudC5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50XG4gICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuc2Nyb2xsQnkoe1xuICAgICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgICAgICAgIHRvcDogb3ZlcmZsb3csXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHdpbmRvdy5zY3JvbGxCeSh7IGJlaGF2aW9yOiAnc21vb3RoJywgdG9wOiBvdmVyZmxvdyB9KVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtpc0Ryb3Bkb3duVmlzaWJsZSwgcmVmU2VsZWN0LCBzaXplLCByZWYuY3VycmVudF0pXG5cbiAgY29uc3QgcmVzaXplRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQgJiZcbiAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoID4gMFxuICAgICkge1xuICAgICAgc2V0V2lkdGgocmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpXG4gICAgfVxuICB9LCBbcmVmU2VsZWN0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlc2l6ZURyb3Bkb3duKClcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplRHJvcGRvd24pXG4gIH0sIFtyZXNpemVEcm9wZG93bl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNlYXJjaElucHV0KSB7XG4gICAgICBvblNlYXJjaChvcHRpb25zKVxuICAgIH1cbiAgfSwgW29uU2VhcmNoLCBvcHRpb25zLCBzZWFyY2hJbnB1dF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBzZXREZWZhdWx0U2VhcmNoKG51bGwpXG4gICAgICBzZXRTZWFyY2goJycpXG4gICAgfVxuXG4gICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgc2VhcmNoLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoIXNlYXJjaGFibGUpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGV2ZW50ID0+XG4gICAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICAgICAgICAgIHNldFNlYXJjaCxcbiAgICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGlzRHJvcGRvd25WaXNpYmxlLFxuICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICBvcHRpb25zLFxuICAgIG9uU2VhcmNoLFxuICAgIHNlYXJjaCxcbiAgICByZWZTZWxlY3QsXG4gICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hhYmxlLFxuICBdKVxuXG4gIC8vIE5vIGRhdGEgaXMgZGlzcGxheWVkIChiZWNhdXNlIG9mIHRoZSBzZWFyY2ggb3IgYmVjYXVzZSBubyBkYXRhIGlzIHByb3ZpZGVkKVxuICAvLyBTZXQgdG8gdHJ1ZSB3aGVuIG5vRGF0YSBieSBkZWZhdWx0XG4gIGNvbnN0IGlzRW1wdHkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAobnVtYmVyT2ZPcHRpb25zID09PSAwKSByZXR1cm4gdHJ1ZVxuICAgIGlmIChBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gZGlzcGxheWVkT3B0aW9ucy5sZW5ndGggPT09IDBcbiAgICB9XG4gICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucylcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgICAgaWYgKGRpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfSwgW2Rpc3BsYXllZE9wdGlvbnMsIG51bWJlck9mT3B0aW9uc10pXG5cbiAgY29uc3QgY29tcHV0ZWRGb290ZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoZm9vdGVyICYmICFpc0VtcHR5KSB7XG4gICAgICBpZiAodHlwZW9mIGZvb3RlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxQb3B1cEZvb3Rlcj57Zm9vdGVyKCgpID0+IHNldElzRHJvcGRvd25WaXNpYmxlKGZhbHNlKSl9PC9Qb3B1cEZvb3Rlcj5cbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gPFBvcHVwRm9vdGVyPntmb290ZXJ9PC9Qb3B1cEZvb3Rlcj5cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9LCBbaXNFbXB0eSwgZm9vdGVyLCBzZXRJc0Ryb3Bkb3duVmlzaWJsZV0pXG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkUG9wdXBcbiAgICAgIGFsaWduPXtkcm9wZG93bkFsaWduID8/ICdzdGFydCd9XG4gICAgICBjb250YWluZXJGdWxsV2lkdGhcbiAgICAgIGRlYm91bmNlRGVsYXk9ezB9XG4gICAgICBkaXNhYmxlQW5pbWF0aW9uXG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICBoaWRlT25DbGlja091dHNpZGVcbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBvbkNsb3NlPXsoKSA9PiBzZXRJc0Ryb3Bkb3duVmlzaWJsZShmYWxzZSl9XG4gICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgcG9ydGFsVGFyZ2V0PXtwb3J0YWxUYXJnZXR9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgdGV4dD17XG4gICAgICAgIDxTdGFjaz5cbiAgICAgICAgICB7c2VhcmNoYWJsZSAmJiAhaXNMb2FkaW5nICYmIG51bWJlck9mT3B0aW9ucyA+PSA2ID8gKFxuICAgICAgICAgICAgPFNlYXJjaEJhckRyb3Bkb3duXG4gICAgICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnM9e2Rpc3BsYXllZE9wdGlvbnN9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgc2V0U2VhcmNoQmFyQWN0aXZlPXtzZXRTZWFyY2hCYXJBY3RpdmV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxDcmVhdGVEcm9wZG93blxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaFZhbHVlPXtkZWZhdWx0U2VhcmNoVmFsdWV9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICBlbXB0eVN0YXRlPXtlbXB0eVN0YXRlfVxuICAgICAgICAgICAgaXNFbXB0eT17aXNFbXB0eX1cbiAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgICAgbG9hZE1vcmU9e2xvYWRNb3JlfVxuICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7Y29tcHV0ZWRGb290ZXJ9XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICB9XG4gICAgICB2aXNpYmxlPXtpc0Ryb3Bkb3duVmlzaWJsZX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdHlsZWRQb3B1cD5cbiAgKVxufVxuIl19 */"));
50
51
  const DropdownGroup = /* @__PURE__ */ _styled("button", process.env.NODE_ENV === "production" ? {
51
52
  target: "e12qyldb6"
52
53
  } : {
@@ -72,7 +73,7 @@ const DropdownGroup = /* @__PURE__ */ _styled("button", process.env.NODE_ENV ===
72
73
  theme
73
74
  }) => theme.colors.neutral.backgroundWeak, ";}&[data-selectgroup='true']:focus{background-color:", ({
74
75
  theme
75
- }) => theme.colors.neutral.backgroundHover, ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3Rm9FIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIENvbXBvbmVudFByb3BzLFxuICBEaXNwYXRjaCxcbiAgS2V5Ym9hcmRFdmVudCxcbiAgUmVhY3ROb2RlLFxuICBSZWZPYmplY3QsXG4gIFNldFN0YXRlQWN0aW9uLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAnLi4vQ2hlY2tib3gnXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uL1BvcHVwJ1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuLi9Ta2VsZXRvbidcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnLi4vU3RhY2snXG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vVGV4dCdcbmltcG9ydCB7IERpc3BsYXlPcHRpb24gfSBmcm9tICcuL0Ryb3Bkb3duT3B0aW9uJ1xuaW1wb3J0IHsgU2VhcmNoQmFyRHJvcGRvd24gfSBmcm9tICcuL1NlYXJjaEJhckRyb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2VsZWN0SW5wdXQgfSBmcm9tICcuL1NlbGVjdElucHV0UHJvdmlkZXInXG5pbXBvcnQgdHlwZSB7IERhdGFUeXBlLCBPcHRpb25UeXBlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IElOUFVUX1NJWkVfSEVJR0hUIH0gZnJvbSAnLi90eXBlcydcblxuY29uc3QgRFJPUERPV05fTUFYX0hFSUdIVCA9IDI1NlxuXG5leHBvcnQgdHlwZSBEcm9wZG93blByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBzZWFyY2hhYmxlOiBib29sZWFuXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmdcbiAgZm9vdGVyPzogKChjbG9zZURyb3Bkb3duOiAoKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpIHwgUmVhY3ROb2RlXG4gIHJlZlNlbGVjdDogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbiAgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJ1xuICBkcm9wZG93bkFsaWduPzogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBvcHVwPlsnYWxpZ24nXVxuICBwb3J0YWxUYXJnZXQ/OiBDb21wb25lbnRQcm9wczx0eXBlb2YgUG9wdXA+Wydwb3J0YWxUYXJnZXQnXVxufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVEcm9wZG93blByb3BzID0ge1xuICBpc0VtcHR5OiBib29sZWFuXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBsb2FkTW9yZT86IFJlYWN0Tm9kZVxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCdcbiAgZGVmYXVsdFNlYXJjaFZhbHVlOiBzdHJpbmcgfCBudWxsXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbn1cblxuY29uc3QgTk9OX1NFQVJDSEFCTEVfS0VZUyA9IFtcbiAgJ1RhYicsXG4gICcgJyxcbiAgJ0VudGVyJyxcbiAgJ0NhcHNMb2NrJyxcbiAgJ1NoaWZ0JyxcbiAgJ0Fycm93RG93bicsXG4gICdBcnJvd1VwJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0VzY2FwZScsXG5dXG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKFBvcHVwKWBcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBwYWRkaW5nLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbiAgcGFkZGluZy10b3A6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX07XG5cbiAgJltkYXRhLWdyb3VwZWQ9XCJ0cnVlXCJdIHtcbiAgICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIH1cbmBcbmNvbnN0IERyb3Bkb3duR3JvdXAgPSBzdHlsZWQuYnV0dG9uPHsgJ2RhdGEtc2VsZWN0Z3JvdXAnOiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBwYWRkaW5nLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBoZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbNF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjI1J119O1xuXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgICBib3JkZXItbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfSBzb2xpZCAkeyh7IHRoZW1lIH0pID0+XG4gICAgICB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kSG92ZXJ9O1xuICB9XG5gXG5jb25zdCBEcm9wZG93bkdyb3VwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcblxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzEuNSddfSAkeyh7IHRoZW1lIH0pID0+XG4gICAgdGhlbWUuc3BhY2VbJzInXX07XG4gIG1hcmdpbi1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjUnXX07XG4gIG1hcmdpbi1yaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuXG4gIGNvbG9yOiAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgYm9yZGVyOiAxcHggdHJhbnNwYXJlbnQgc29saWQ7XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICB9XG5cbiAgJlthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kRGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHREaXNhYmxlZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdOmhvdmVyLCBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICAgIHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdEaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmBcblxuY29uc3QgUG9wdXBGb290ZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfVxuICAgICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMS41XX0gJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2hhZG93cy5kcm9wZG93bn07XG5gXG5jb25zdCBTdHlsZWRDaGVja2JveCA9IHN0eWxlZChDaGVja2JveClgXG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAgLy8gcG9pbnRlci1ldmVudHM6IG5vbmUgcHJldmVudHMgYW55IGVycm9yIHdoZW4gdXNpbmcgdGhlIGNoZWNrYm94IGluIGEgZm9ybSBzaW5jZSBpdCBpcyBhbiB1bm5hbWVkIGlucHV0XG5cbmNvbnN0IEVtcHR5U3RhdGUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbmBcbmNvbnN0IExvYWRNb3JlID0gc3R5bGVkKFN0YWNrKWBcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbmBcblxuY29uc3QgbW92ZUZvY3VzRG93biA9ICgpID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgJyNpdGVtcyA+IGRpdltyb2xlPVwib3B0aW9uXCJdOm5vdChbZGlzYWJsZWRdKScsXG4gIClcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnM/Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBsaXN0TGVuZ3RoID0gb3B0aW9ucy5sZW5ndGhcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbbGlzdExlbmd0aCAtIDFdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpICsgMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IG1vdmVGb2N1c1VwID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoYWN0aXZlSXRlbSA9PT0gb3B0aW9uc1tpXSAmJiBhY3RpdmVJdGVtICE9PSBvcHRpb25zWzBdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpIC0gMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IGhhbmRsZUtleURvd25TZWxlY3QgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c0Rvd24oKVxuICB9XG5cbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c1VwKClcbiAgfVxuXG4gIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgIC8vIE5vIHNjcm9sbFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxufVxuXG5jb25zdCBoYW5kbGVLZXlEb3duID0gKFxuICBldmVudDogZ2xvYmFsVGhpcy5LZXlib2FyZEV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maW5kKG9wdGlvbiA9PlxuICAgICAgICBvcHRpb24uc2VhcmNoVGV4dFxuICAgICAgICAgID8gb3B0aW9uLnNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpXG4gICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgKVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IENyZWF0ZURyb3Bkb3duID0gKHtcbiAgaXNFbXB0eSxcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZSxcbiAgaXNMb2FkaW5nLFxufTogQ3JlYXRlRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgb25DaGFuZ2UsXG4gICAgb3B0aW9ucyxcbiAgICBtdWx0aXNlbGVjdCxcbiAgICBzZWxlY3RBbGwsXG4gICAgc2VsZWN0QWxsR3JvdXAsXG4gICAgZGlzcGxheWVkT3B0aW9ucyxcbiAgICBzZXRTZWxlY3RlZERhdGEsXG4gICAgc2VsZWN0ZWREYXRhLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCBmb2N1c2VkSXRlbVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0U2VhcmNoVmFsdWUgJiYgZm9jdXNlZEl0ZW1SZWY/LmN1cnJlbnQpIHtcbiAgICAgIGZvY3VzZWRJdGVtUmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRTZWFyY2hWYWx1ZV0pXG5cbiAgaWYgKGlzRW1wdHkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEVtcHR5U3RhdGUgZ2FwPXsyfSBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgIHtlbXB0eVN0YXRlID8/IChcbiAgICAgICAgICA8VGV4dCB2YXJpYW50PVwiYm9keVN0cm9uZ1wiIGFzPVwicFwiPlxuICAgICAgICAgICAgTm8gb3B0aW9uc1xuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKX1cbiAgICAgIDwvRW1wdHlTdGF0ZT5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbGljayA9IChjbGlja2VkT3B0aW9uOiBPcHRpb25UeXBlLCBncm91cD86IHN0cmluZykgPT4ge1xuICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RPcHRpb24nLCBjbGlja2VkT3B0aW9uLCBncm91cCB9KVxuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhjbGlja2VkT3B0aW9uLnZhbHVlKSkge1xuICAgICAgICBvbkNoYW5nZT8uKFxuICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5maWx0ZXIoXG4gICAgICAgICAgICB2YWwgPT4gdmFsICE9PSBjbGlja2VkT3B0aW9uLnZhbHVlLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcywgY2xpY2tlZE9wdGlvbi52YWx1ZV0pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uQ2hhbmdlPy4oY2xpY2tlZE9wdGlvbi52YWx1ZSlcbiAgICB9XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUobXVsdGlzZWxlY3QpIC8vIGhpZGUgdGhlIGRyb3Bkb3duIG9uIGNsaWNrIHdoZW4gc2luZ2xlIHNlbGVjdCBvbmx5XG4gIH1cblxuICBjb25zdCBzZWxlY3RBbGxPcHRpb25zID0gKCkgPT4ge1xuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdEFsbCcgfSlcbiAgICAgIGlmIChzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWQgJiYgb25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UoW10pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhbGxWYWx1ZXM6IE9wdGlvblR5cGVbXSA9IFtdXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT5cbiAgICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGFsbFZhbHVlcy5wdXNoKG9wdGlvbilcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9ucy5tYXAob3B0aW9uID0+IGFsbFZhbHVlcy5wdXNoKG9wdGlvbikpXG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2U/LihhbGxWYWx1ZXMubWFwKHZhbHVlID0+IHZhbHVlLnZhbHVlKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RHcm91cCA9IChncm91cDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0R3JvdXAnLCBzZWxlY3RlZEdyb3VwOiBncm91cCB9KVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZERhdGEuc2VsZWN0ZWRHcm91cHMuaW5jbHVkZXMoZ3JvdXApKSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXS5maWx0ZXIoXG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlID0+XG4gICAgICAgICAgICAgICFvcHRpb25zW2dyb3VwXS5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkVmFsdWVzID0gWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlc11cblxuICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT5cbiAgICAgICAgICAgIG5ld1NlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgfHwgb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG5ld1NlbGVjdGVkVmFsdWVzLnB1c2gob3B0aW9uLnZhbHVlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgb25DaGFuZ2U/LihuZXdTZWxlY3RlZFZhbHVlcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAhQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSA/IChcbiAgICA8RHJvcGRvd25Db250YWluZXJcbiAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgIGlkPVwic2VsZWN0LWRyb3Bkb3duXCJcbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93blNlbGVjdH1cbiAgICAgIGRhdGEtZ3JvdXBlZFxuICAgID5cbiAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGwtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtncm91cC50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFzPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwV3JhcHBlcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPVwiMC4yNVwiPlxuICAgICAgICAgICAgICAgIHtkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5tYXAoKG9wdGlvbiwgaW5kZXhPcHRpb24pID0+IChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAga2V5PXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9eyEhb3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4T3B0aW9ufWB9XG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICkpfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApIDogKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZ2FwPXswLjI1fVxuICAgICAgZGF0YS1ncm91cGVkPXtmYWxzZX1cbiAgICA+XG4gICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiIGdhcD17MC4yNX0gdGFiSW5kZXg9ey0xfT5cbiAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICBhcmlhLWRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gc2VsZWN0QWxsT3B0aW9ucygpIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdGFjayBkaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHlTbWFsbFwiXG4gICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgcHJvbWluZW5jZT1cIndlYWtcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9ezAuMjV9PlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgIGtleT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPXshIW9wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBoYW5kbGVDbGljayhvcHRpb24pIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICApKVxuICAgICAgICApfVxuICAgICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICAgIDwvU3RhY2s+XG4gICAgPC9Ecm9wZG93bkNvbnRhaW5lcj5cbiAgKVxufVxuZXhwb3J0IGNvbnN0IERyb3Bkb3duID0gKHtcbiAgY2hpbGRyZW4sXG4gIGVtcHR5U3RhdGUsXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uLFxuICBzZWFyY2hhYmxlLFxuICBwbGFjZWhvbGRlcixcbiAgZm9vdGVyLFxuICByZWZTZWxlY3QsXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGlzTG9hZGluZyxcbiAgc2l6ZSxcbiAgZHJvcGRvd25BbGlnbixcbiAgcG9ydGFsVGFyZ2V0LFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZlNlbGVjdC5jdXJyZW50ICYmIGlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9XG4gICAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSArXG4gICAgICAgIERST1BET1dOX01BWF9IRUlHSFQgK1xuICAgICAgICBOdW1iZXIodGhlbWUuc2l6aW5nW0lOUFVUX1NJWkVfSEVJR0hUW3NpemVdXS5yZXBsYWNlKCdyZW0nLCAnJykpICogMTYgK1xuICAgICAgICBOdW1iZXIucGFyc2VJbnQodGhlbWUuc3BhY2VbJzUnXSwgMTApXG4gICAgICBjb25zdCBvdmVyZmxvdyA9IHBvc2l0aW9uIC0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7XG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrZHJvcC1tb2RhbCcpXG5cbiAgICAgICAgaWYgKG1vZGFsRWxlbWVudCkge1xuICAgICAgICAgIG1vZGFsRWxlbWVudC5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgICB9IGVsc2Ugd2luZG93LnNjcm9sbEJ5KHsgdG9wOiBvdmVyZmxvdywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pXG4gICAgICB9XG4gICAgfVxuICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2lzRHJvcGRvd25WaXNpYmxlLCByZWZTZWxlY3QsIHNpemUsIHJlZi5jdXJyZW50XSlcblxuICBjb25zdCByZXNpemVEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICByZWZTZWxlY3QuY3VycmVudCAmJlxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiAwXG4gICAgKSB7XG4gICAgICBzZXRXaWR0aChyZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aClcbiAgICB9XG4gIH0sIFtyZWZTZWxlY3RdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVzaXplRHJvcGRvd24oKVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZURyb3Bkb3duKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcbiAgfSwgW3Jlc2l6ZURyb3Bkb3duXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2VhcmNoSW5wdXQpIHtcbiAgICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gICAgfVxuICB9LCBbb25TZWFyY2gsIG9wdGlvbnMsIHNlYXJjaElucHV0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIHNldFNlYXJjaCgnJylcbiAgICB9XG5cbiAgICBpZiAoIXNlYXJjaGFibGUpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICBoYW5kbGVLZXlEb3duKFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICksXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICghc2VhcmNoYWJsZSkge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgICBoYW5kbGVLZXlEb3duKFxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICByZWYsXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgIG9wdGlvbnMsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoLFxuICAgIHJlZlNlbGVjdCxcbiAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgIHNlYXJjaGFibGUsXG4gIF0pXG5cbiAgLy8gTm8gZGF0YSBpcyBkaXNwbGF5ZWQgKGJlY2F1c2Ugb2YgdGhlIHNlYXJjaCBvciBiZWNhdXNlIG5vIGRhdGEgaXMgcHJvdmlkZWQpXG4gIC8vIFNldCB0byB0cnVlIHdoZW4gbm9EYXRhIGJ5IGRlZmF1bHRcbiAgY29uc3QgaXNFbXB0eSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChudW1iZXJPZk9wdGlvbnMgPT09IDApIHJldHVybiB0cnVlXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGxheWVkT3B0aW9ucykpIHtcbiAgICAgIHJldHVybiBkaXNwbGF5ZWRPcHRpb25zLmxlbmd0aCA9PT0gMFxuICAgIH1cbiAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgICBpZiAoZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9LCBbZGlzcGxheWVkT3B0aW9ucywgbnVtYmVyT2ZPcHRpb25zXSlcblxuICBjb25zdCBjb21wdXRlZEZvb3RlciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChmb290ZXIgJiYgIWlzRW1wdHkpIHtcbiAgICAgIGlmICh0eXBlb2YgZm9vdGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFBvcHVwRm9vdGVyPntmb290ZXIoKCkgPT4gc2V0SXNEcm9wZG93blZpc2libGUoZmFsc2UpKX08L1BvcHVwRm9vdGVyPlxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiA8UG9wdXBGb290ZXI+e2Zvb3Rlcn08L1BvcHVwRm9vdGVyPlxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH0sIFtpc0VtcHR5LCBmb290ZXIsIHNldElzRHJvcGRvd25WaXNpYmxlXSlcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRQb3B1cFxuICAgICAgdmlzaWJsZT17aXNEcm9wZG93blZpc2libGV9XG4gICAgICB0ZXh0PXtcbiAgICAgICAgPFN0YWNrPlxuICAgICAgICAgIHtzZWFyY2hhYmxlICYmICFpc0xvYWRpbmcgJiYgbnVtYmVyT2ZPcHRpb25zID49IDYgPyAoXG4gICAgICAgICAgICA8U2VhcmNoQmFyRHJvcGRvd25cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zPXtkaXNwbGF5ZWRPcHRpb25zfVxuICAgICAgICAgICAgICBzZXRTZWFyY2hCYXJBY3RpdmU9e3NldFNlYXJjaEJhckFjdGl2ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPENyZWF0ZURyb3Bkb3duXG4gICAgICAgICAgICBpc0VtcHR5PXtpc0VtcHR5fVxuICAgICAgICAgICAgZW1wdHlTdGF0ZT17ZW1wdHlTdGF0ZX1cbiAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgIGxvYWRNb3JlPXtsb2FkTW9yZX1cbiAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaFZhbHVlPXtkZWZhdWx0U2VhcmNoVmFsdWV9XG4gICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtjb21wdXRlZEZvb3Rlcn1cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIH1cbiAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICBkaXNhYmxlQW5pbWF0aW9uXG4gICAgICBtYXhXaWR0aD17bWF4V2lkdGggPz8gcmVmU2VsZWN0LmN1cnJlbnQ/Lm9mZnNldFdpZHRofVxuICAgICAgaGFzQXJyb3c9e2ZhbHNlfVxuICAgICAgcmVmPXtyZWZ9XG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgIGRlYm91bmNlRGVsYXk9ezB9XG4gICAgICBjb250YWluZXJGdWxsV2lkdGhcbiAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZVxuICAgICAgb25DbG9zZT17KCkgPT4gc2V0SXNEcm9wZG93blZpc2libGUoZmFsc2UpfVxuICAgICAgYWxpZ249e2Ryb3Bkb3duQWxpZ24gPz8gJ3N0YXJ0J31cbiAgICAgIHBvcnRhbFRhcmdldD17cG9ydGFsVGFyZ2V0fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1N0eWxlZFBvcHVwPlxuICApXG59XG4iXX0= */"));
76
+ }) => theme.colors.neutral.backgroundHover, ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnR29FIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgdHlwZSB7XG4gIENvbXBvbmVudFByb3BzLFxuICBEaXNwYXRjaCxcbiAgS2V5Ym9hcmRFdmVudCxcbiAgUmVhY3ROb2RlLFxuICBSZWZPYmplY3QsXG4gIFNldFN0YXRlQWN0aW9uLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IE1vZGFsQ29udGV4dCB9IGZyb20gJy4uL01vZGFsL01vZGFsUHJvdmlkZXInXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uL1BvcHVwJ1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuLi9Ta2VsZXRvbidcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnLi4vU3RhY2snXG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vVGV4dCdcbmltcG9ydCB7IERpc3BsYXlPcHRpb24gfSBmcm9tICcuL0Ryb3Bkb3duT3B0aW9uJ1xuaW1wb3J0IHsgU2VhcmNoQmFyRHJvcGRvd24gfSBmcm9tICcuL1NlYXJjaEJhckRyb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2VsZWN0SW5wdXQgfSBmcm9tICcuL1NlbGVjdElucHV0UHJvdmlkZXInXG5pbXBvcnQgdHlwZSB7IERhdGFUeXBlLCBPcHRpb25UeXBlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IElOUFVUX1NJWkVfSEVJR0hUIH0gZnJvbSAnLi90eXBlcydcblxuY29uc3QgRFJPUERPV05fTUFYX0hFSUdIVCA9IDI1NlxuXG5leHBvcnQgdHlwZSBEcm9wZG93blByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBzZWFyY2hhYmxlOiBib29sZWFuXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmdcbiAgZm9vdGVyPzogKChjbG9zZURyb3Bkb3duOiAoKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpIHwgUmVhY3ROb2RlXG4gIHJlZlNlbGVjdDogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbiAgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJ1xuICBkcm9wZG93bkFsaWduPzogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBvcHVwPlsnYWxpZ24nXVxuICBwb3J0YWxUYXJnZXQ/OiBDb21wb25lbnRQcm9wczx0eXBlb2YgUG9wdXA+Wydwb3J0YWxUYXJnZXQnXVxufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVEcm9wZG93blByb3BzID0ge1xuICBpc0VtcHR5OiBib29sZWFuXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBsb2FkTW9yZT86IFJlYWN0Tm9kZVxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCdcbiAgZGVmYXVsdFNlYXJjaFZhbHVlOiBzdHJpbmcgfCBudWxsXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbn1cblxuY29uc3QgTk9OX1NFQVJDSEFCTEVfS0VZUyA9IFtcbiAgJ1RhYicsXG4gICcgJyxcbiAgJ0VudGVyJyxcbiAgJ0NhcHNMb2NrJyxcbiAgJ1NoaWZ0JyxcbiAgJ0Fycm93RG93bicsXG4gICdBcnJvd1VwJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0VzY2FwZScsXG5dXG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKFBvcHVwKWBcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBwYWRkaW5nLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbiAgcGFkZGluZy10b3A6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX07XG5cbiAgJltkYXRhLWdyb3VwZWQ9XCJ0cnVlXCJdIHtcbiAgICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIH1cbmBcbmNvbnN0IERyb3Bkb3duR3JvdXAgPSBzdHlsZWQuYnV0dG9uPHsgJ2RhdGEtc2VsZWN0Z3JvdXAnOiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBwYWRkaW5nLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBoZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbNF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjI1J119O1xuXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgICBib3JkZXItbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfSBzb2xpZCAkeyh7IHRoZW1lIH0pID0+XG4gICAgICB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kSG92ZXJ9O1xuICB9XG5gXG5jb25zdCBEcm9wZG93bkdyb3VwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcblxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzEuNSddfSAkeyh7IHRoZW1lIH0pID0+XG4gICAgdGhlbWUuc3BhY2VbJzInXX07XG4gIG1hcmdpbi1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjUnXX07XG4gIG1hcmdpbi1yaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuXG4gIGNvbG9yOiAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgYm9yZGVyOiAxcHggdHJhbnNwYXJlbnQgc29saWQ7XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICB9XG5cbiAgJlthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kRGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHREaXNhYmxlZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdOmhvdmVyLCBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICAgIHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdEaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmBcblxuY29uc3QgUG9wdXBGb290ZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfVxuICAgICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMS41XX0gJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2hhZG93cy5kcm9wZG93bn07XG5gXG5jb25zdCBTdHlsZWRDaGVja2JveCA9IHN0eWxlZChDaGVja2JveClgXG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAgLy8gcG9pbnRlci1ldmVudHM6IG5vbmUgcHJldmVudHMgYW55IGVycm9yIHdoZW4gdXNpbmcgdGhlIGNoZWNrYm94IGluIGEgZm9ybSBzaW5jZSBpdCBpcyBhbiB1bm5hbWVkIGlucHV0XG5cbmNvbnN0IEVtcHR5U3RhdGUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbmBcbmNvbnN0IExvYWRNb3JlID0gc3R5bGVkKFN0YWNrKWBcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbmBcblxuY29uc3QgbW92ZUZvY3VzRG93biA9ICgpID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgJyNpdGVtcyA+IGRpdltyb2xlPVwib3B0aW9uXCJdOm5vdChbZGlzYWJsZWRdKScsXG4gIClcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnM/Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBsaXN0TGVuZ3RoID0gb3B0aW9ucy5sZW5ndGhcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbbGlzdExlbmd0aCAtIDFdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpICsgMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IG1vdmVGb2N1c1VwID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoYWN0aXZlSXRlbSA9PT0gb3B0aW9uc1tpXSAmJiBhY3RpdmVJdGVtICE9PSBvcHRpb25zWzBdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpIC0gMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IGhhbmRsZUtleURvd25TZWxlY3QgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c0Rvd24oKVxuICB9XG5cbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c1VwKClcbiAgfVxuXG4gIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgIC8vIE5vIHNjcm9sbFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxufVxuXG5jb25zdCBoYW5kbGVLZXlEb3duID0gKFxuICBldmVudDogZ2xvYmFsVGhpcy5LZXlib2FyZEV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maW5kKG9wdGlvbiA9PlxuICAgICAgICBvcHRpb24uc2VhcmNoVGV4dFxuICAgICAgICAgID8gb3B0aW9uLnNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpXG4gICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgKVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IENyZWF0ZURyb3Bkb3duID0gKHtcbiAgaXNFbXB0eSxcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZSxcbiAgaXNMb2FkaW5nLFxufTogQ3JlYXRlRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgb25DaGFuZ2UsXG4gICAgb3B0aW9ucyxcbiAgICBtdWx0aXNlbGVjdCxcbiAgICBzZWxlY3RBbGwsXG4gICAgc2VsZWN0QWxsR3JvdXAsXG4gICAgZGlzcGxheWVkT3B0aW9ucyxcbiAgICBzZXRTZWxlY3RlZERhdGEsXG4gICAgc2VsZWN0ZWREYXRhLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCBmb2N1c2VkSXRlbVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0U2VhcmNoVmFsdWUgJiYgZm9jdXNlZEl0ZW1SZWY/LmN1cnJlbnQpIHtcbiAgICAgIGZvY3VzZWRJdGVtUmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRTZWFyY2hWYWx1ZV0pXG5cbiAgaWYgKGlzRW1wdHkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEVtcHR5U3RhdGUgYWxpZ25JdGVtcz1cImNlbnRlclwiIGdhcD17Mn0+XG4gICAgICAgIHtlbXB0eVN0YXRlID8/IChcbiAgICAgICAgICA8VGV4dCBhcz1cInBcIiB2YXJpYW50PVwiYm9keVN0cm9uZ1wiPlxuICAgICAgICAgICAgTm8gb3B0aW9uc1xuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKX1cbiAgICAgIDwvRW1wdHlTdGF0ZT5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbGljayA9IChjbGlja2VkT3B0aW9uOiBPcHRpb25UeXBlLCBncm91cD86IHN0cmluZykgPT4ge1xuICAgIHNldFNlbGVjdGVkRGF0YSh7IGNsaWNrZWRPcHRpb24sIGdyb3VwLCB0eXBlOiAnc2VsZWN0T3B0aW9uJyB9KVxuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhjbGlja2VkT3B0aW9uLnZhbHVlKSkge1xuICAgICAgICBvbkNoYW5nZT8uKFxuICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5maWx0ZXIoXG4gICAgICAgICAgICB2YWwgPT4gdmFsICE9PSBjbGlja2VkT3B0aW9uLnZhbHVlLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcywgY2xpY2tlZE9wdGlvbi52YWx1ZV0pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uQ2hhbmdlPy4oY2xpY2tlZE9wdGlvbi52YWx1ZSlcbiAgICB9XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUobXVsdGlzZWxlY3QpIC8vIGhpZGUgdGhlIGRyb3Bkb3duIG9uIGNsaWNrIHdoZW4gc2luZ2xlIHNlbGVjdCBvbmx5XG4gIH1cblxuICBjb25zdCBzZWxlY3RBbGxPcHRpb25zID0gKCkgPT4ge1xuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdEFsbCcgfSlcbiAgICAgIGlmIChzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWQgJiYgb25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UoW10pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhbGxWYWx1ZXM6IE9wdGlvblR5cGVbXSA9IFtdXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT5cbiAgICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGFsbFZhbHVlcy5wdXNoKG9wdGlvbilcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9ucy5tYXAob3B0aW9uID0+IGFsbFZhbHVlcy5wdXNoKG9wdGlvbikpXG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2U/LihhbGxWYWx1ZXMubWFwKHZhbHVlID0+IHZhbHVlLnZhbHVlKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RHcm91cCA9IChncm91cDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyBzZWxlY3RlZEdyb3VwOiBncm91cCwgdHlwZTogJ3NlbGVjdEdyb3VwJyB9KVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZERhdGEuc2VsZWN0ZWRHcm91cHMuaW5jbHVkZXMoZ3JvdXApKSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXS5maWx0ZXIoXG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlID0+XG4gICAgICAgICAgICAgICFvcHRpb25zW2dyb3VwXS5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkVmFsdWVzID0gWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlc11cblxuICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT5cbiAgICAgICAgICAgIG5ld1NlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgfHwgb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG5ld1NlbGVjdGVkVmFsdWVzLnB1c2gob3B0aW9uLnZhbHVlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgb25DaGFuZ2U/LihuZXdTZWxlY3RlZFZhbHVlcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAhQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSA/IChcbiAgICA8RHJvcGRvd25Db250YWluZXJcbiAgICAgIGRhdGEtZ3JvdXBlZFxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgID5cbiAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgdmFyaWFudD1cImJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHlTbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBnYXA9ezAuMjV9IGtleT17Z3JvdXB9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2Bncm91cC0ke2luZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RHcm91cChncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9e3NlbGVjdEFsbEdyb3VwID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RBbGxHcm91cCA/IGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtncm91cC50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwV3JhcHBlcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTdGFjayBnYXA9XCIwLjI1XCIgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICAgIHtkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5tYXAoKG9wdGlvbiwgaW5kZXhPcHRpb24pID0+IChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2BvcHRpb24tJHtvcHRpb24udmFsdWV9YH1cbiAgICAgICAgICAgICAgICAgICAgaWQ9e2BvcHRpb24tJHtpbmRleE9wdGlvbn1gfVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlZj17XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSBkZWZhdWx0U2VhcmNoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uc2VhcmNoVGV4dCA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGZvY3VzZWRJdGVtUmVmXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9eyFvcHRpb24uZGlzYWJsZWQgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICkpfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApIDogKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgZGF0YS1ncm91cGVkPXtmYWxzZX1cbiAgICAgIGdhcD17MC4yNX1cbiAgICAgIGlkPVwic2VsZWN0LWRyb3Bkb3duXCJcbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93blNlbGVjdH1cbiAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICA+XG4gICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICA8U3RhY2sgZ2FwPXswLjI1fSBpZD1cIml0ZW1zXCIgdGFiSW5kZXg9ey0xfT5cbiAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICBhcmlhLWRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gc2VsZWN0QWxsT3B0aW9ucygpIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGwtY2hlY2tib3hcIlxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdGFjayBkaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgdmFyaWFudD1cImJvZHlcIj5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFN0YWNrIGdhcD17MC4yNX0gaWQ9XCJpdGVtc1wiPlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9eyEhb3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAga2V5PXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBoYW5kbGVDbGljayhvcHRpb24pIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlZj17XG4gICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSBkZWZhdWx0U2VhcmNoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICBvcHRpb24uc2VhcmNoVGV4dCA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlXG4gICAgICAgICAgICAgICAgICA/IGZvY3VzZWRJdGVtUmVmXG4gICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9eyFvcHRpb24uZGlzYWJsZWQgPyAwIDogLTF9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICApKVxuICAgICAgICApfVxuICAgICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICAgIDwvU3RhY2s+XG4gICAgPC9Ecm9wZG93bkNvbnRhaW5lcj5cbiAgKVxufVxuZXhwb3J0IGNvbnN0IERyb3Bkb3duID0gKHtcbiAgY2hpbGRyZW4sXG4gIGVtcHR5U3RhdGUsXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uLFxuICBzZWFyY2hhYmxlLFxuICBwbGFjZWhvbGRlcixcbiAgZm9vdGVyLFxuICByZWZTZWxlY3QsXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGlzTG9hZGluZyxcbiAgc2l6ZSxcbiAgZHJvcGRvd25BbGlnbixcbiAgcG9ydGFsVGFyZ2V0LFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuICBjb25zdCBtb2RhbENvbnRleHQgPSB1c2VDb250ZXh0KE1vZGFsQ29udGV4dClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWZTZWxlY3QuY3VycmVudCAmJiBpc0Ryb3Bkb3duVmlzaWJsZSkge1xuICAgICAgY29uc3QgcG9zaXRpb24gPVxuICAgICAgICByZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20gK1xuICAgICAgICBEUk9QRE9XTl9NQVhfSEVJR0hUICtcbiAgICAgICAgTnVtYmVyKHRoZW1lLnNpemluZ1tJTlBVVF9TSVpFX0hFSUdIVFtzaXplXV0ucmVwbGFjZSgncmVtJywgJycpKSAqIDE2ICtcbiAgICAgICAgTnVtYmVyLnBhcnNlSW50KHRoZW1lLnNwYWNlWyc1J10sIDEwKVxuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBwb3NpdGlvbiAtIHdpbmRvdy5pbm5lckhlaWdodCArIDMyXG4gICAgICBpZiAob3ZlcmZsb3cgPiAwICYmIG1vZGFsQ29udGV4dCkge1xuICAgICAgICBjb25zdCBjdXJyZW50TW9kYWwgPSBtb2RhbENvbnRleHQub3BlbmVkTW9kYWxzWzBdXG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGN1cnJlbnRNb2RhbD8ucmVmLmN1cnJlbnRcblxuICAgICAgICBpZiAobW9kYWxFbGVtZW50KSB7XG4gICAgICAgICAgY29uc3QgcGFyZW50RWxlbWVudCA9IG1vZGFsRWxlbWVudC5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50XG4gICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuc2Nyb2xsQnkoe1xuICAgICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgICAgICAgIHRvcDogb3ZlcmZsb3csXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHdpbmRvdy5zY3JvbGxCeSh7IGJlaGF2aW9yOiAnc21vb3RoJywgdG9wOiBvdmVyZmxvdyB9KVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtpc0Ryb3Bkb3duVmlzaWJsZSwgcmVmU2VsZWN0LCBzaXplLCByZWYuY3VycmVudF0pXG5cbiAgY29uc3QgcmVzaXplRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQgJiZcbiAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoID4gMFxuICAgICkge1xuICAgICAgc2V0V2lkdGgocmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpXG4gICAgfVxuICB9LCBbcmVmU2VsZWN0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlc2l6ZURyb3Bkb3duKClcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplRHJvcGRvd24pXG4gIH0sIFtyZXNpemVEcm9wZG93bl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNlYXJjaElucHV0KSB7XG4gICAgICBvblNlYXJjaChvcHRpb25zKVxuICAgIH1cbiAgfSwgW29uU2VhcmNoLCBvcHRpb25zLCBzZWFyY2hJbnB1dF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBzZXREZWZhdWx0U2VhcmNoKG51bGwpXG4gICAgICBzZXRTZWFyY2goJycpXG4gICAgfVxuXG4gICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgc2VhcmNoLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoIXNlYXJjaGFibGUpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGV2ZW50ID0+XG4gICAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICAgICAgICAgIHNldFNlYXJjaCxcbiAgICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGlzRHJvcGRvd25WaXNpYmxlLFxuICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICBvcHRpb25zLFxuICAgIG9uU2VhcmNoLFxuICAgIHNlYXJjaCxcbiAgICByZWZTZWxlY3QsXG4gICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hhYmxlLFxuICBdKVxuXG4gIC8vIE5vIGRhdGEgaXMgZGlzcGxheWVkIChiZWNhdXNlIG9mIHRoZSBzZWFyY2ggb3IgYmVjYXVzZSBubyBkYXRhIGlzIHByb3ZpZGVkKVxuICAvLyBTZXQgdG8gdHJ1ZSB3aGVuIG5vRGF0YSBieSBkZWZhdWx0XG4gIGNvbnN0IGlzRW1wdHkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAobnVtYmVyT2ZPcHRpb25zID09PSAwKSByZXR1cm4gdHJ1ZVxuICAgIGlmIChBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gZGlzcGxheWVkT3B0aW9ucy5sZW5ndGggPT09IDBcbiAgICB9XG4gICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucylcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgICAgaWYgKGRpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfSwgW2Rpc3BsYXllZE9wdGlvbnMsIG51bWJlck9mT3B0aW9uc10pXG5cbiAgY29uc3QgY29tcHV0ZWRGb290ZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoZm9vdGVyICYmICFpc0VtcHR5KSB7XG4gICAgICBpZiAodHlwZW9mIGZvb3RlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxQb3B1cEZvb3Rlcj57Zm9vdGVyKCgpID0+IHNldElzRHJvcGRvd25WaXNpYmxlKGZhbHNlKSl9PC9Qb3B1cEZvb3Rlcj5cbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gPFBvcHVwRm9vdGVyPntmb290ZXJ9PC9Qb3B1cEZvb3Rlcj5cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9LCBbaXNFbXB0eSwgZm9vdGVyLCBzZXRJc0Ryb3Bkb3duVmlzaWJsZV0pXG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkUG9wdXBcbiAgICAgIGFsaWduPXtkcm9wZG93bkFsaWduID8/ICdzdGFydCd9XG4gICAgICBjb250YWluZXJGdWxsV2lkdGhcbiAgICAgIGRlYm91bmNlRGVsYXk9ezB9XG4gICAgICBkaXNhYmxlQW5pbWF0aW9uXG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICBoaWRlT25DbGlja091dHNpZGVcbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBvbkNsb3NlPXsoKSA9PiBzZXRJc0Ryb3Bkb3duVmlzaWJsZShmYWxzZSl9XG4gICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgcG9ydGFsVGFyZ2V0PXtwb3J0YWxUYXJnZXR9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgdGV4dD17XG4gICAgICAgIDxTdGFjaz5cbiAgICAgICAgICB7c2VhcmNoYWJsZSAmJiAhaXNMb2FkaW5nICYmIG51bWJlck9mT3B0aW9ucyA+PSA2ID8gKFxuICAgICAgICAgICAgPFNlYXJjaEJhckRyb3Bkb3duXG4gICAgICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnM9e2Rpc3BsYXllZE9wdGlvbnN9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgc2V0U2VhcmNoQmFyQWN0aXZlPXtzZXRTZWFyY2hCYXJBY3RpdmV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxDcmVhdGVEcm9wZG93blxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaFZhbHVlPXtkZWZhdWx0U2VhcmNoVmFsdWV9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICBlbXB0eVN0YXRlPXtlbXB0eVN0YXRlfVxuICAgICAgICAgICAgaXNFbXB0eT17aXNFbXB0eX1cbiAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgICAgbG9hZE1vcmU9e2xvYWRNb3JlfVxuICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7Y29tcHV0ZWRGb290ZXJ9XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICB9XG4gICAgICB2aXNpYmxlPXtpc0Ryb3Bkb3duVmlzaWJsZX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdHlsZWRQb3B1cD5cbiAgKVxufVxuIl19 */"));
76
77
  const DropdownGroupWrapper = /* @__PURE__ */ _styled("div", process.env.NODE_ENV === "production" ? {
77
78
  target: "e12qyldb5"
78
79
  } : {
@@ -83,7 +84,7 @@ const DropdownGroupWrapper = /* @__PURE__ */ _styled("div", process.env.NODE_ENV
83
84
  styles: "position:sticky;top:0"
84
85
  } : {
85
86
  name: "1o5tqc6",
86
- styles: "position:sticky;top:0/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzSHVDIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIENvbXBvbmVudFByb3BzLFxuICBEaXNwYXRjaCxcbiAgS2V5Ym9hcmRFdmVudCxcbiAgUmVhY3ROb2RlLFxuICBSZWZPYmplY3QsXG4gIFNldFN0YXRlQWN0aW9uLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAnLi4vQ2hlY2tib3gnXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uL1BvcHVwJ1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuLi9Ta2VsZXRvbidcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnLi4vU3RhY2snXG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vVGV4dCdcbmltcG9ydCB7IERpc3BsYXlPcHRpb24gfSBmcm9tICcuL0Ryb3Bkb3duT3B0aW9uJ1xuaW1wb3J0IHsgU2VhcmNoQmFyRHJvcGRvd24gfSBmcm9tICcuL1NlYXJjaEJhckRyb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2VsZWN0SW5wdXQgfSBmcm9tICcuL1NlbGVjdElucHV0UHJvdmlkZXInXG5pbXBvcnQgdHlwZSB7IERhdGFUeXBlLCBPcHRpb25UeXBlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IElOUFVUX1NJWkVfSEVJR0hUIH0gZnJvbSAnLi90eXBlcydcblxuY29uc3QgRFJPUERPV05fTUFYX0hFSUdIVCA9IDI1NlxuXG5leHBvcnQgdHlwZSBEcm9wZG93blByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBzZWFyY2hhYmxlOiBib29sZWFuXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmdcbiAgZm9vdGVyPzogKChjbG9zZURyb3Bkb3duOiAoKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpIHwgUmVhY3ROb2RlXG4gIHJlZlNlbGVjdDogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbiAgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJ1xuICBkcm9wZG93bkFsaWduPzogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBvcHVwPlsnYWxpZ24nXVxuICBwb3J0YWxUYXJnZXQ/OiBDb21wb25lbnRQcm9wczx0eXBlb2YgUG9wdXA+Wydwb3J0YWxUYXJnZXQnXVxufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVEcm9wZG93blByb3BzID0ge1xuICBpc0VtcHR5OiBib29sZWFuXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBsb2FkTW9yZT86IFJlYWN0Tm9kZVxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCdcbiAgZGVmYXVsdFNlYXJjaFZhbHVlOiBzdHJpbmcgfCBudWxsXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbn1cblxuY29uc3QgTk9OX1NFQVJDSEFCTEVfS0VZUyA9IFtcbiAgJ1RhYicsXG4gICcgJyxcbiAgJ0VudGVyJyxcbiAgJ0NhcHNMb2NrJyxcbiAgJ1NoaWZ0JyxcbiAgJ0Fycm93RG93bicsXG4gICdBcnJvd1VwJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0VzY2FwZScsXG5dXG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKFBvcHVwKWBcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBwYWRkaW5nLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbiAgcGFkZGluZy10b3A6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX07XG5cbiAgJltkYXRhLWdyb3VwZWQ9XCJ0cnVlXCJdIHtcbiAgICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIH1cbmBcbmNvbnN0IERyb3Bkb3duR3JvdXAgPSBzdHlsZWQuYnV0dG9uPHsgJ2RhdGEtc2VsZWN0Z3JvdXAnOiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBwYWRkaW5nLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBoZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbNF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjI1J119O1xuXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgICBib3JkZXItbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfSBzb2xpZCAkeyh7IHRoZW1lIH0pID0+XG4gICAgICB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kSG92ZXJ9O1xuICB9XG5gXG5jb25zdCBEcm9wZG93bkdyb3VwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcblxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzEuNSddfSAkeyh7IHRoZW1lIH0pID0+XG4gICAgdGhlbWUuc3BhY2VbJzInXX07XG4gIG1hcmdpbi1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjUnXX07XG4gIG1hcmdpbi1yaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuXG4gIGNvbG9yOiAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgYm9yZGVyOiAxcHggdHJhbnNwYXJlbnQgc29saWQ7XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICB9XG5cbiAgJlthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kRGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHREaXNhYmxlZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdOmhvdmVyLCBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICAgIHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdEaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmBcblxuY29uc3QgUG9wdXBGb290ZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfVxuICAgICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMS41XX0gJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2hhZG93cy5kcm9wZG93bn07XG5gXG5jb25zdCBTdHlsZWRDaGVja2JveCA9IHN0eWxlZChDaGVja2JveClgXG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAgLy8gcG9pbnRlci1ldmVudHM6IG5vbmUgcHJldmVudHMgYW55IGVycm9yIHdoZW4gdXNpbmcgdGhlIGNoZWNrYm94IGluIGEgZm9ybSBzaW5jZSBpdCBpcyBhbiB1bm5hbWVkIGlucHV0XG5cbmNvbnN0IEVtcHR5U3RhdGUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbmBcbmNvbnN0IExvYWRNb3JlID0gc3R5bGVkKFN0YWNrKWBcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbmBcblxuY29uc3QgbW92ZUZvY3VzRG93biA9ICgpID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgJyNpdGVtcyA+IGRpdltyb2xlPVwib3B0aW9uXCJdOm5vdChbZGlzYWJsZWRdKScsXG4gIClcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnM/Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBsaXN0TGVuZ3RoID0gb3B0aW9ucy5sZW5ndGhcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbbGlzdExlbmd0aCAtIDFdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpICsgMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IG1vdmVGb2N1c1VwID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoYWN0aXZlSXRlbSA9PT0gb3B0aW9uc1tpXSAmJiBhY3RpdmVJdGVtICE9PSBvcHRpb25zWzBdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpIC0gMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IGhhbmRsZUtleURvd25TZWxlY3QgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c0Rvd24oKVxuICB9XG5cbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c1VwKClcbiAgfVxuXG4gIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgIC8vIE5vIHNjcm9sbFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxufVxuXG5jb25zdCBoYW5kbGVLZXlEb3duID0gKFxuICBldmVudDogZ2xvYmFsVGhpcy5LZXlib2FyZEV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maW5kKG9wdGlvbiA9PlxuICAgICAgICBvcHRpb24uc2VhcmNoVGV4dFxuICAgICAgICAgID8gb3B0aW9uLnNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpXG4gICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgKVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IENyZWF0ZURyb3Bkb3duID0gKHtcbiAgaXNFbXB0eSxcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZSxcbiAgaXNMb2FkaW5nLFxufTogQ3JlYXRlRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgb25DaGFuZ2UsXG4gICAgb3B0aW9ucyxcbiAgICBtdWx0aXNlbGVjdCxcbiAgICBzZWxlY3RBbGwsXG4gICAgc2VsZWN0QWxsR3JvdXAsXG4gICAgZGlzcGxheWVkT3B0aW9ucyxcbiAgICBzZXRTZWxlY3RlZERhdGEsXG4gICAgc2VsZWN0ZWREYXRhLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCBmb2N1c2VkSXRlbVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0U2VhcmNoVmFsdWUgJiYgZm9jdXNlZEl0ZW1SZWY/LmN1cnJlbnQpIHtcbiAgICAgIGZvY3VzZWRJdGVtUmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRTZWFyY2hWYWx1ZV0pXG5cbiAgaWYgKGlzRW1wdHkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEVtcHR5U3RhdGUgZ2FwPXsyfSBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgIHtlbXB0eVN0YXRlID8/IChcbiAgICAgICAgICA8VGV4dCB2YXJpYW50PVwiYm9keVN0cm9uZ1wiIGFzPVwicFwiPlxuICAgICAgICAgICAgTm8gb3B0aW9uc1xuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKX1cbiAgICAgIDwvRW1wdHlTdGF0ZT5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbGljayA9IChjbGlja2VkT3B0aW9uOiBPcHRpb25UeXBlLCBncm91cD86IHN0cmluZykgPT4ge1xuICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RPcHRpb24nLCBjbGlja2VkT3B0aW9uLCBncm91cCB9KVxuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhjbGlja2VkT3B0aW9uLnZhbHVlKSkge1xuICAgICAgICBvbkNoYW5nZT8uKFxuICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5maWx0ZXIoXG4gICAgICAgICAgICB2YWwgPT4gdmFsICE9PSBjbGlja2VkT3B0aW9uLnZhbHVlLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcywgY2xpY2tlZE9wdGlvbi52YWx1ZV0pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uQ2hhbmdlPy4oY2xpY2tlZE9wdGlvbi52YWx1ZSlcbiAgICB9XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUobXVsdGlzZWxlY3QpIC8vIGhpZGUgdGhlIGRyb3Bkb3duIG9uIGNsaWNrIHdoZW4gc2luZ2xlIHNlbGVjdCBvbmx5XG4gIH1cblxuICBjb25zdCBzZWxlY3RBbGxPcHRpb25zID0gKCkgPT4ge1xuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdEFsbCcgfSlcbiAgICAgIGlmIChzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWQgJiYgb25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UoW10pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhbGxWYWx1ZXM6IE9wdGlvblR5cGVbXSA9IFtdXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT5cbiAgICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGFsbFZhbHVlcy5wdXNoKG9wdGlvbilcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9ucy5tYXAob3B0aW9uID0+IGFsbFZhbHVlcy5wdXNoKG9wdGlvbikpXG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2U/LihhbGxWYWx1ZXMubWFwKHZhbHVlID0+IHZhbHVlLnZhbHVlKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RHcm91cCA9IChncm91cDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0R3JvdXAnLCBzZWxlY3RlZEdyb3VwOiBncm91cCB9KVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZERhdGEuc2VsZWN0ZWRHcm91cHMuaW5jbHVkZXMoZ3JvdXApKSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXS5maWx0ZXIoXG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlID0+XG4gICAgICAgICAgICAgICFvcHRpb25zW2dyb3VwXS5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkVmFsdWVzID0gWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlc11cblxuICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT5cbiAgICAgICAgICAgIG5ld1NlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgfHwgb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG5ld1NlbGVjdGVkVmFsdWVzLnB1c2gob3B0aW9uLnZhbHVlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgb25DaGFuZ2U/LihuZXdTZWxlY3RlZFZhbHVlcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAhQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSA/IChcbiAgICA8RHJvcGRvd25Db250YWluZXJcbiAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgIGlkPVwic2VsZWN0LWRyb3Bkb3duXCJcbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93blNlbGVjdH1cbiAgICAgIGRhdGEtZ3JvdXBlZFxuICAgID5cbiAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGwtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtncm91cC50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFzPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwV3JhcHBlcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPVwiMC4yNVwiPlxuICAgICAgICAgICAgICAgIHtkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5tYXAoKG9wdGlvbiwgaW5kZXhPcHRpb24pID0+IChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAga2V5PXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9eyEhb3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4T3B0aW9ufWB9XG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICkpfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApIDogKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZ2FwPXswLjI1fVxuICAgICAgZGF0YS1ncm91cGVkPXtmYWxzZX1cbiAgICA+XG4gICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiIGdhcD17MC4yNX0gdGFiSW5kZXg9ey0xfT5cbiAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICBhcmlhLWRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gc2VsZWN0QWxsT3B0aW9ucygpIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdGFjayBkaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHlTbWFsbFwiXG4gICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgcHJvbWluZW5jZT1cIndlYWtcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9ezAuMjV9PlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgIGtleT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPXshIW9wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBoYW5kbGVDbGljayhvcHRpb24pIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICApKVxuICAgICAgICApfVxuICAgICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICAgIDwvU3RhY2s+XG4gICAgPC9Ecm9wZG93bkNvbnRhaW5lcj5cbiAgKVxufVxuZXhwb3J0IGNvbnN0IERyb3Bkb3duID0gKHtcbiAgY2hpbGRyZW4sXG4gIGVtcHR5U3RhdGUsXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uLFxuICBzZWFyY2hhYmxlLFxuICBwbGFjZWhvbGRlcixcbiAgZm9vdGVyLFxuICByZWZTZWxlY3QsXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGlzTG9hZGluZyxcbiAgc2l6ZSxcbiAgZHJvcGRvd25BbGlnbixcbiAgcG9ydGFsVGFyZ2V0LFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZlNlbGVjdC5jdXJyZW50ICYmIGlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9XG4gICAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSArXG4gICAgICAgIERST1BET1dOX01BWF9IRUlHSFQgK1xuICAgICAgICBOdW1iZXIodGhlbWUuc2l6aW5nW0lOUFVUX1NJWkVfSEVJR0hUW3NpemVdXS5yZXBsYWNlKCdyZW0nLCAnJykpICogMTYgK1xuICAgICAgICBOdW1iZXIucGFyc2VJbnQodGhlbWUuc3BhY2VbJzUnXSwgMTApXG4gICAgICBjb25zdCBvdmVyZmxvdyA9IHBvc2l0aW9uIC0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7XG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrZHJvcC1tb2RhbCcpXG5cbiAgICAgICAgaWYgKG1vZGFsRWxlbWVudCkge1xuICAgICAgICAgIG1vZGFsRWxlbWVudC5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgICB9IGVsc2Ugd2luZG93LnNjcm9sbEJ5KHsgdG9wOiBvdmVyZmxvdywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pXG4gICAgICB9XG4gICAgfVxuICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2lzRHJvcGRvd25WaXNpYmxlLCByZWZTZWxlY3QsIHNpemUsIHJlZi5jdXJyZW50XSlcblxuICBjb25zdCByZXNpemVEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICByZWZTZWxlY3QuY3VycmVudCAmJlxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiAwXG4gICAgKSB7XG4gICAgICBzZXRXaWR0aChyZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aClcbiAgICB9XG4gIH0sIFtyZWZTZWxlY3RdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVzaXplRHJvcGRvd24oKVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZURyb3Bkb3duKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcbiAgfSwgW3Jlc2l6ZURyb3Bkb3duXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2VhcmNoSW5wdXQpIHtcbiAgICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gICAgfVxuICB9LCBbb25TZWFyY2gsIG9wdGlvbnMsIHNlYXJjaElucHV0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIHNldFNlYXJjaCgnJylcbiAgICB9XG5cbiAgICBpZiAoIXNlYXJjaGFibGUpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICBoYW5kbGVLZXlEb3duKFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICksXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICghc2VhcmNoYWJsZSkge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgICBoYW5kbGVLZXlEb3duKFxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICByZWYsXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgIG9wdGlvbnMsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoLFxuICAgIHJlZlNlbGVjdCxcbiAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgIHNlYXJjaGFibGUsXG4gIF0pXG5cbiAgLy8gTm8gZGF0YSBpcyBkaXNwbGF5ZWQgKGJlY2F1c2Ugb2YgdGhlIHNlYXJjaCBvciBiZWNhdXNlIG5vIGRhdGEgaXMgcHJvdmlkZWQpXG4gIC8vIFNldCB0byB0cnVlIHdoZW4gbm9EYXRhIGJ5IGRlZmF1bHRcbiAgY29uc3QgaXNFbXB0eSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChudW1iZXJPZk9wdGlvbnMgPT09IDApIHJldHVybiB0cnVlXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGxheWVkT3B0aW9ucykpIHtcbiAgICAgIHJldHVybiBkaXNwbGF5ZWRPcHRpb25zLmxlbmd0aCA9PT0gMFxuICAgIH1cbiAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgICBpZiAoZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9LCBbZGlzcGxheWVkT3B0aW9ucywgbnVtYmVyT2ZPcHRpb25zXSlcblxuICBjb25zdCBjb21wdXRlZEZvb3RlciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChmb290ZXIgJiYgIWlzRW1wdHkpIHtcbiAgICAgIGlmICh0eXBlb2YgZm9vdGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFBvcHVwRm9vdGVyPntmb290ZXIoKCkgPT4gc2V0SXNEcm9wZG93blZpc2libGUoZmFsc2UpKX08L1BvcHVwRm9vdGVyPlxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiA8UG9wdXBGb290ZXI+e2Zvb3Rlcn08L1BvcHVwRm9vdGVyPlxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH0sIFtpc0VtcHR5LCBmb290ZXIsIHNldElzRHJvcGRvd25WaXNpYmxlXSlcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRQb3B1cFxuICAgICAgdmlzaWJsZT17aXNEcm9wZG93blZpc2libGV9XG4gICAgICB0ZXh0PXtcbiAgICAgICAgPFN0YWNrPlxuICAgICAgICAgIHtzZWFyY2hhYmxlICYmICFpc0xvYWRpbmcgJiYgbnVtYmVyT2ZPcHRpb25zID49IDYgPyAoXG4gICAgICAgICAgICA8U2VhcmNoQmFyRHJvcGRvd25cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zPXtkaXNwbGF5ZWRPcHRpb25zfVxuICAgICAgICAgICAgICBzZXRTZWFyY2hCYXJBY3RpdmU9e3NldFNlYXJjaEJhckFjdGl2ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPENyZWF0ZURyb3Bkb3duXG4gICAgICAgICAgICBpc0VtcHR5PXtpc0VtcHR5fVxuICAgICAgICAgICAgZW1wdHlTdGF0ZT17ZW1wdHlTdGF0ZX1cbiAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgIGxvYWRNb3JlPXtsb2FkTW9yZX1cbiAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaFZhbHVlPXtkZWZhdWx0U2VhcmNoVmFsdWV9XG4gICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtjb21wdXRlZEZvb3Rlcn1cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIH1cbiAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICBkaXNhYmxlQW5pbWF0aW9uXG4gICAgICBtYXhXaWR0aD17bWF4V2lkdGggPz8gcmVmU2VsZWN0LmN1cnJlbnQ/Lm9mZnNldFdpZHRofVxuICAgICAgaGFzQXJyb3c9e2ZhbHNlfVxuICAgICAgcmVmPXtyZWZ9XG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgIGRlYm91bmNlRGVsYXk9ezB9XG4gICAgICBjb250YWluZXJGdWxsV2lkdGhcbiAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZVxuICAgICAgb25DbG9zZT17KCkgPT4gc2V0SXNEcm9wZG93blZpc2libGUoZmFsc2UpfVxuICAgICAgYWxpZ249e2Ryb3Bkb3duQWxpZ24gPz8gJ3N0YXJ0J31cbiAgICAgIHBvcnRhbFRhcmdldD17cG9ydGFsVGFyZ2V0fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1N0eWxlZFBvcHVwPlxuICApXG59XG4iXX0= */",
87
+ styles: "position:sticky;top:0/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4SHVDIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgdHlwZSB7XG4gIENvbXBvbmVudFByb3BzLFxuICBEaXNwYXRjaCxcbiAgS2V5Ym9hcmRFdmVudCxcbiAgUmVhY3ROb2RlLFxuICBSZWZPYmplY3QsXG4gIFNldFN0YXRlQWN0aW9uLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IE1vZGFsQ29udGV4dCB9IGZyb20gJy4uL01vZGFsL01vZGFsUHJvdmlkZXInXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uL1BvcHVwJ1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuLi9Ta2VsZXRvbidcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnLi4vU3RhY2snXG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vVGV4dCdcbmltcG9ydCB7IERpc3BsYXlPcHRpb24gfSBmcm9tICcuL0Ryb3Bkb3duT3B0aW9uJ1xuaW1wb3J0IHsgU2VhcmNoQmFyRHJvcGRvd24gfSBmcm9tICcuL1NlYXJjaEJhckRyb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2VsZWN0SW5wdXQgfSBmcm9tICcuL1NlbGVjdElucHV0UHJvdmlkZXInXG5pbXBvcnQgdHlwZSB7IERhdGFUeXBlLCBPcHRpb25UeXBlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IElOUFVUX1NJWkVfSEVJR0hUIH0gZnJvbSAnLi90eXBlcydcblxuY29uc3QgRFJPUERPV05fTUFYX0hFSUdIVCA9IDI1NlxuXG5leHBvcnQgdHlwZSBEcm9wZG93blByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBzZWFyY2hhYmxlOiBib29sZWFuXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmdcbiAgZm9vdGVyPzogKChjbG9zZURyb3Bkb3duOiAoKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpIHwgUmVhY3ROb2RlXG4gIHJlZlNlbGVjdDogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbiAgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJ1xuICBkcm9wZG93bkFsaWduPzogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBvcHVwPlsnYWxpZ24nXVxuICBwb3J0YWxUYXJnZXQ/OiBDb21wb25lbnRQcm9wczx0eXBlb2YgUG9wdXA+Wydwb3J0YWxUYXJnZXQnXVxufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVEcm9wZG93blByb3BzID0ge1xuICBpc0VtcHR5OiBib29sZWFuXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBsb2FkTW9yZT86IFJlYWN0Tm9kZVxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCdcbiAgZGVmYXVsdFNlYXJjaFZhbHVlOiBzdHJpbmcgfCBudWxsXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbn1cblxuY29uc3QgTk9OX1NFQVJDSEFCTEVfS0VZUyA9IFtcbiAgJ1RhYicsXG4gICcgJyxcbiAgJ0VudGVyJyxcbiAgJ0NhcHNMb2NrJyxcbiAgJ1NoaWZ0JyxcbiAgJ0Fycm93RG93bicsXG4gICdBcnJvd1VwJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0VzY2FwZScsXG5dXG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKFBvcHVwKWBcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBwYWRkaW5nLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbiAgcGFkZGluZy10b3A6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX07XG5cbiAgJltkYXRhLWdyb3VwZWQ9XCJ0cnVlXCJdIHtcbiAgICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIH1cbmBcbmNvbnN0IERyb3Bkb3duR3JvdXAgPSBzdHlsZWQuYnV0dG9uPHsgJ2RhdGEtc2VsZWN0Z3JvdXAnOiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBwYWRkaW5nLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBoZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbNF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjI1J119O1xuXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgICBib3JkZXItbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfSBzb2xpZCAkeyh7IHRoZW1lIH0pID0+XG4gICAgICB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kSG92ZXJ9O1xuICB9XG5gXG5jb25zdCBEcm9wZG93bkdyb3VwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcblxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzEuNSddfSAkeyh7IHRoZW1lIH0pID0+XG4gICAgdGhlbWUuc3BhY2VbJzInXX07XG4gIG1hcmdpbi1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjUnXX07XG4gIG1hcmdpbi1yaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuXG4gIGNvbG9yOiAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgYm9yZGVyOiAxcHggdHJhbnNwYXJlbnQgc29saWQ7XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICB9XG5cbiAgJlthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kRGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHREaXNhYmxlZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdOmhvdmVyLCBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICAgIHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdEaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmBcblxuY29uc3QgUG9wdXBGb290ZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfVxuICAgICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMS41XX0gJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2hhZG93cy5kcm9wZG93bn07XG5gXG5jb25zdCBTdHlsZWRDaGVja2JveCA9IHN0eWxlZChDaGVja2JveClgXG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAgLy8gcG9pbnRlci1ldmVudHM6IG5vbmUgcHJldmVudHMgYW55IGVycm9yIHdoZW4gdXNpbmcgdGhlIGNoZWNrYm94IGluIGEgZm9ybSBzaW5jZSBpdCBpcyBhbiB1bm5hbWVkIGlucHV0XG5cbmNvbnN0IEVtcHR5U3RhdGUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbmBcbmNvbnN0IExvYWRNb3JlID0gc3R5bGVkKFN0YWNrKWBcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbmBcblxuY29uc3QgbW92ZUZvY3VzRG93biA9ICgpID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgJyNpdGVtcyA+IGRpdltyb2xlPVwib3B0aW9uXCJdOm5vdChbZGlzYWJsZWRdKScsXG4gIClcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnM/Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBsaXN0TGVuZ3RoID0gb3B0aW9ucy5sZW5ndGhcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbbGlzdExlbmd0aCAtIDFdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpICsgMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IG1vdmVGb2N1c1VwID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoYWN0aXZlSXRlbSA9PT0gb3B0aW9uc1tpXSAmJiBhY3RpdmVJdGVtICE9PSBvcHRpb25zWzBdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpIC0gMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IGhhbmRsZUtleURvd25TZWxlY3QgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c0Rvd24oKVxuICB9XG5cbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c1VwKClcbiAgfVxuXG4gIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgIC8vIE5vIHNjcm9sbFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxufVxuXG5jb25zdCBoYW5kbGVLZXlEb3duID0gKFxuICBldmVudDogZ2xvYmFsVGhpcy5LZXlib2FyZEV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maW5kKG9wdGlvbiA9PlxuICAgICAgICBvcHRpb24uc2VhcmNoVGV4dFxuICAgICAgICAgID8gb3B0aW9uLnNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpXG4gICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgKVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IENyZWF0ZURyb3Bkb3duID0gKHtcbiAgaXNFbXB0eSxcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZSxcbiAgaXNMb2FkaW5nLFxufTogQ3JlYXRlRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgb25DaGFuZ2UsXG4gICAgb3B0aW9ucyxcbiAgICBtdWx0aXNlbGVjdCxcbiAgICBzZWxlY3RBbGwsXG4gICAgc2VsZWN0QWxsR3JvdXAsXG4gICAgZGlzcGxheWVkT3B0aW9ucyxcbiAgICBzZXRTZWxlY3RlZERhdGEsXG4gICAgc2VsZWN0ZWREYXRhLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCBmb2N1c2VkSXRlbVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0U2VhcmNoVmFsdWUgJiYgZm9jdXNlZEl0ZW1SZWY/LmN1cnJlbnQpIHtcbiAgICAgIGZvY3VzZWRJdGVtUmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRTZWFyY2hWYWx1ZV0pXG5cbiAgaWYgKGlzRW1wdHkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEVtcHR5U3RhdGUgYWxpZ25JdGVtcz1cImNlbnRlclwiIGdhcD17Mn0+XG4gICAgICAgIHtlbXB0eVN0YXRlID8/IChcbiAgICAgICAgICA8VGV4dCBhcz1cInBcIiB2YXJpYW50PVwiYm9keVN0cm9uZ1wiPlxuICAgICAgICAgICAgTm8gb3B0aW9uc1xuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKX1cbiAgICAgIDwvRW1wdHlTdGF0ZT5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbGljayA9IChjbGlja2VkT3B0aW9uOiBPcHRpb25UeXBlLCBncm91cD86IHN0cmluZykgPT4ge1xuICAgIHNldFNlbGVjdGVkRGF0YSh7IGNsaWNrZWRPcHRpb24sIGdyb3VwLCB0eXBlOiAnc2VsZWN0T3B0aW9uJyB9KVxuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhjbGlja2VkT3B0aW9uLnZhbHVlKSkge1xuICAgICAgICBvbkNoYW5nZT8uKFxuICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5maWx0ZXIoXG4gICAgICAgICAgICB2YWwgPT4gdmFsICE9PSBjbGlja2VkT3B0aW9uLnZhbHVlLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcywgY2xpY2tlZE9wdGlvbi52YWx1ZV0pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uQ2hhbmdlPy4oY2xpY2tlZE9wdGlvbi52YWx1ZSlcbiAgICB9XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUobXVsdGlzZWxlY3QpIC8vIGhpZGUgdGhlIGRyb3Bkb3duIG9uIGNsaWNrIHdoZW4gc2luZ2xlIHNlbGVjdCBvbmx5XG4gIH1cblxuICBjb25zdCBzZWxlY3RBbGxPcHRpb25zID0gKCkgPT4ge1xuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdEFsbCcgfSlcbiAgICAgIGlmIChzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWQgJiYgb25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UoW10pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhbGxWYWx1ZXM6IE9wdGlvblR5cGVbXSA9IFtdXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT5cbiAgICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGFsbFZhbHVlcy5wdXNoKG9wdGlvbilcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9ucy5tYXAob3B0aW9uID0+IGFsbFZhbHVlcy5wdXNoKG9wdGlvbikpXG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2U/LihhbGxWYWx1ZXMubWFwKHZhbHVlID0+IHZhbHVlLnZhbHVlKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RHcm91cCA9IChncm91cDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyBzZWxlY3RlZEdyb3VwOiBncm91cCwgdHlwZTogJ3NlbGVjdEdyb3VwJyB9KVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZERhdGEuc2VsZWN0ZWRHcm91cHMuaW5jbHVkZXMoZ3JvdXApKSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXS5maWx0ZXIoXG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlID0+XG4gICAgICAgICAgICAgICFvcHRpb25zW2dyb3VwXS5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkVmFsdWVzID0gWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlc11cblxuICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT5cbiAgICAgICAgICAgIG5ld1NlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgfHwgb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG5ld1NlbGVjdGVkVmFsdWVzLnB1c2gob3B0aW9uLnZhbHVlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgb25DaGFuZ2U/LihuZXdTZWxlY3RlZFZhbHVlcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAhQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSA/IChcbiAgICA8RHJvcGRvd25Db250YWluZXJcbiAgICAgIGRhdGEtZ3JvdXBlZFxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgID5cbiAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgdmFyaWFudD1cImJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHlTbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBnYXA9ezAuMjV9IGtleT17Z3JvdXB9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2Bncm91cC0ke2luZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RHcm91cChncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9e3NlbGVjdEFsbEdyb3VwID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RBbGxHcm91cCA/IGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtncm91cC50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwV3JhcHBlcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTdGFjayBnYXA9XCIwLjI1XCIgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICAgIHtkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5tYXAoKG9wdGlvbiwgaW5kZXhPcHRpb24pID0+IChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2BvcHRpb24tJHtvcHRpb24udmFsdWV9YH1cbiAgICAgICAgICAgICAgICAgICAgaWQ9e2BvcHRpb24tJHtpbmRleE9wdGlvbn1gfVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlZj17XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSBkZWZhdWx0U2VhcmNoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uc2VhcmNoVGV4dCA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGZvY3VzZWRJdGVtUmVmXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9eyFvcHRpb24uZGlzYWJsZWQgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICkpfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApIDogKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgZGF0YS1ncm91cGVkPXtmYWxzZX1cbiAgICAgIGdhcD17MC4yNX1cbiAgICAgIGlkPVwic2VsZWN0LWRyb3Bkb3duXCJcbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93blNlbGVjdH1cbiAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICA+XG4gICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICA8U3RhY2sgZ2FwPXswLjI1fSBpZD1cIml0ZW1zXCIgdGFiSW5kZXg9ey0xfT5cbiAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICBhcmlhLWRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gc2VsZWN0QWxsT3B0aW9ucygpIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGwtY2hlY2tib3hcIlxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdGFjayBkaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgdmFyaWFudD1cImJvZHlcIj5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFN0YWNrIGdhcD17MC4yNX0gaWQ9XCJpdGVtc1wiPlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9eyEhb3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAga2V5PXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBoYW5kbGVDbGljayhvcHRpb24pIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlZj17XG4gICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSBkZWZhdWx0U2VhcmNoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICBvcHRpb24uc2VhcmNoVGV4dCA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlXG4gICAgICAgICAgICAgICAgICA/IGZvY3VzZWRJdGVtUmVmXG4gICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9eyFvcHRpb24uZGlzYWJsZWQgPyAwIDogLTF9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICApKVxuICAgICAgICApfVxuICAgICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICAgIDwvU3RhY2s+XG4gICAgPC9Ecm9wZG93bkNvbnRhaW5lcj5cbiAgKVxufVxuZXhwb3J0IGNvbnN0IERyb3Bkb3duID0gKHtcbiAgY2hpbGRyZW4sXG4gIGVtcHR5U3RhdGUsXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uLFxuICBzZWFyY2hhYmxlLFxuICBwbGFjZWhvbGRlcixcbiAgZm9vdGVyLFxuICByZWZTZWxlY3QsXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGlzTG9hZGluZyxcbiAgc2l6ZSxcbiAgZHJvcGRvd25BbGlnbixcbiAgcG9ydGFsVGFyZ2V0LFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuICBjb25zdCBtb2RhbENvbnRleHQgPSB1c2VDb250ZXh0KE1vZGFsQ29udGV4dClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWZTZWxlY3QuY3VycmVudCAmJiBpc0Ryb3Bkb3duVmlzaWJsZSkge1xuICAgICAgY29uc3QgcG9zaXRpb24gPVxuICAgICAgICByZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20gK1xuICAgICAgICBEUk9QRE9XTl9NQVhfSEVJR0hUICtcbiAgICAgICAgTnVtYmVyKHRoZW1lLnNpemluZ1tJTlBVVF9TSVpFX0hFSUdIVFtzaXplXV0ucmVwbGFjZSgncmVtJywgJycpKSAqIDE2ICtcbiAgICAgICAgTnVtYmVyLnBhcnNlSW50KHRoZW1lLnNwYWNlWyc1J10sIDEwKVxuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBwb3NpdGlvbiAtIHdpbmRvdy5pbm5lckhlaWdodCArIDMyXG4gICAgICBpZiAob3ZlcmZsb3cgPiAwICYmIG1vZGFsQ29udGV4dCkge1xuICAgICAgICBjb25zdCBjdXJyZW50TW9kYWwgPSBtb2RhbENvbnRleHQub3BlbmVkTW9kYWxzWzBdXG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGN1cnJlbnRNb2RhbD8ucmVmLmN1cnJlbnRcblxuICAgICAgICBpZiAobW9kYWxFbGVtZW50KSB7XG4gICAgICAgICAgY29uc3QgcGFyZW50RWxlbWVudCA9IG1vZGFsRWxlbWVudC5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50XG4gICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuc2Nyb2xsQnkoe1xuICAgICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgICAgICAgIHRvcDogb3ZlcmZsb3csXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHdpbmRvdy5zY3JvbGxCeSh7IGJlaGF2aW9yOiAnc21vb3RoJywgdG9wOiBvdmVyZmxvdyB9KVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtpc0Ryb3Bkb3duVmlzaWJsZSwgcmVmU2VsZWN0LCBzaXplLCByZWYuY3VycmVudF0pXG5cbiAgY29uc3QgcmVzaXplRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQgJiZcbiAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoID4gMFxuICAgICkge1xuICAgICAgc2V0V2lkdGgocmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpXG4gICAgfVxuICB9LCBbcmVmU2VsZWN0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlc2l6ZURyb3Bkb3duKClcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplRHJvcGRvd24pXG4gIH0sIFtyZXNpemVEcm9wZG93bl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNlYXJjaElucHV0KSB7XG4gICAgICBvblNlYXJjaChvcHRpb25zKVxuICAgIH1cbiAgfSwgW29uU2VhcmNoLCBvcHRpb25zLCBzZWFyY2hJbnB1dF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBzZXREZWZhdWx0U2VhcmNoKG51bGwpXG4gICAgICBzZXRTZWFyY2goJycpXG4gICAgfVxuXG4gICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgc2VhcmNoLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoIXNlYXJjaGFibGUpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGV2ZW50ID0+XG4gICAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICAgICAgICAgIHNldFNlYXJjaCxcbiAgICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGlzRHJvcGRvd25WaXNpYmxlLFxuICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICBvcHRpb25zLFxuICAgIG9uU2VhcmNoLFxuICAgIHNlYXJjaCxcbiAgICByZWZTZWxlY3QsXG4gICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hhYmxlLFxuICBdKVxuXG4gIC8vIE5vIGRhdGEgaXMgZGlzcGxheWVkIChiZWNhdXNlIG9mIHRoZSBzZWFyY2ggb3IgYmVjYXVzZSBubyBkYXRhIGlzIHByb3ZpZGVkKVxuICAvLyBTZXQgdG8gdHJ1ZSB3aGVuIG5vRGF0YSBieSBkZWZhdWx0XG4gIGNvbnN0IGlzRW1wdHkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAobnVtYmVyT2ZPcHRpb25zID09PSAwKSByZXR1cm4gdHJ1ZVxuICAgIGlmIChBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gZGlzcGxheWVkT3B0aW9ucy5sZW5ndGggPT09IDBcbiAgICB9XG4gICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucylcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgICAgaWYgKGRpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfSwgW2Rpc3BsYXllZE9wdGlvbnMsIG51bWJlck9mT3B0aW9uc10pXG5cbiAgY29uc3QgY29tcHV0ZWRGb290ZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoZm9vdGVyICYmICFpc0VtcHR5KSB7XG4gICAgICBpZiAodHlwZW9mIGZvb3RlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxQb3B1cEZvb3Rlcj57Zm9vdGVyKCgpID0+IHNldElzRHJvcGRvd25WaXNpYmxlKGZhbHNlKSl9PC9Qb3B1cEZvb3Rlcj5cbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gPFBvcHVwRm9vdGVyPntmb290ZXJ9PC9Qb3B1cEZvb3Rlcj5cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9LCBbaXNFbXB0eSwgZm9vdGVyLCBzZXRJc0Ryb3Bkb3duVmlzaWJsZV0pXG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkUG9wdXBcbiAgICAgIGFsaWduPXtkcm9wZG93bkFsaWduID8/ICdzdGFydCd9XG4gICAgICBjb250YWluZXJGdWxsV2lkdGhcbiAgICAgIGRlYm91bmNlRGVsYXk9ezB9XG4gICAgICBkaXNhYmxlQW5pbWF0aW9uXG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICBoaWRlT25DbGlja091dHNpZGVcbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBvbkNsb3NlPXsoKSA9PiBzZXRJc0Ryb3Bkb3duVmlzaWJsZShmYWxzZSl9XG4gICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgcG9ydGFsVGFyZ2V0PXtwb3J0YWxUYXJnZXR9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgdGV4dD17XG4gICAgICAgIDxTdGFjaz5cbiAgICAgICAgICB7c2VhcmNoYWJsZSAmJiAhaXNMb2FkaW5nICYmIG51bWJlck9mT3B0aW9ucyA+PSA2ID8gKFxuICAgICAgICAgICAgPFNlYXJjaEJhckRyb3Bkb3duXG4gICAgICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnM9e2Rpc3BsYXllZE9wdGlvbnN9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgc2V0U2VhcmNoQmFyQWN0aXZlPXtzZXRTZWFyY2hCYXJBY3RpdmV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxDcmVhdGVEcm9wZG93blxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaFZhbHVlPXtkZWZhdWx0U2VhcmNoVmFsdWV9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICBlbXB0eVN0YXRlPXtlbXB0eVN0YXRlfVxuICAgICAgICAgICAgaXNFbXB0eT17aXNFbXB0eX1cbiAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgICAgbG9hZE1vcmU9e2xvYWRNb3JlfVxuICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7Y29tcHV0ZWRGb290ZXJ9XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICB9XG4gICAgICB2aXNpYmxlPXtpc0Ryb3Bkb3duVmlzaWJsZX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdHlsZWRQb3B1cD5cbiAgKVxufVxuIl19 */",
87
88
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
88
89
  });
89
90
  const DropdownItem = /* @__PURE__ */ _styled("div", process.env.NODE_ENV === "production" ? {
@@ -123,7 +124,7 @@ const DropdownItem = /* @__PURE__ */ _styled("div", process.env.NODE_ENV === "pr
123
124
  theme
124
125
  }) => theme.colors.neutral.backgroundStrongDisabled, ";color:", ({
125
126
  theme
126
- }) => theme.colors.neutral.textStrongDisabled, ";cursor:not-allowed;outline:none;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2SEUiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvdWx0cmF2aW9sZXQvdWx0cmF2aW9sZXQvcGFja2FnZXMvdWkvc3JjL2NvbXBvbmVudHMvU2VsZWN0SW5wdXQvRHJvcGRvd24udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHtcbiAgQ29tcG9uZW50UHJvcHMsXG4gIERpc3BhdGNoLFxuICBLZXlib2FyZEV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgU2V0U3RhdGVBY3Rpb24sXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vUG9wdXAnXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uL1NrZWxldG9uJ1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICcuLi9TdGFjaydcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi9UZXh0J1xuaW1wb3J0IHsgRGlzcGxheU9wdGlvbiB9IGZyb20gJy4vRHJvcGRvd25PcHRpb24nXG5pbXBvcnQgeyBTZWFyY2hCYXJEcm9wZG93biB9IGZyb20gJy4vU2VhcmNoQmFyRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTZWxlY3RJbnB1dCB9IGZyb20gJy4vU2VsZWN0SW5wdXRQcm92aWRlcidcbmltcG9ydCB0eXBlIHsgRGF0YVR5cGUsIE9wdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgSU5QVVRfU0laRV9IRUlHSFQgfSBmcm9tICcuL3R5cGVzJ1xuXG5jb25zdCBEUk9QRE9XTl9NQVhfSEVJR0hUID0gMjU2XG5cbmV4cG9ydCB0eXBlIERyb3Bkb3duUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZW1wdHlTdGF0ZTogUmVhY3ROb2RlXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nXG4gIHNlYXJjaGFibGU6IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI6IHN0cmluZ1xuICBmb290ZXI/OiAoKGNsb3NlRHJvcGRvd246ICgpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSkgfCBSZWFjdE5vZGVcbiAgcmVmU2VsZWN0OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPlxuICBsb2FkTW9yZT86IFJlYWN0Tm9kZVxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCdcbiAgaXNMb2FkaW5nPzogYm9vbGVhblxuICBzaXplOiAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnXG4gIGRyb3Bkb3duQWxpZ24/OiBDb21wb25lbnRQcm9wczx0eXBlb2YgUG9wdXA+WydhbGlnbiddXG4gIHBvcnRhbFRhcmdldD86IENvbXBvbmVudFByb3BzPHR5cGVvZiBQb3B1cD5bJ3BvcnRhbFRhcmdldCddXG59XG5cbmV4cG9ydCB0eXBlIENyZWF0ZURyb3Bkb3duUHJvcHMgPSB7XG4gIGlzRW1wdHk6IGJvb2xlYW5cbiAgZW1wdHlTdGF0ZTogUmVhY3ROb2RlXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nXG4gIGxvYWRNb3JlPzogUmVhY3ROb2RlXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudDogJ2xlZnQnIHwgJ3JpZ2h0J1xuICBkZWZhdWx0U2VhcmNoVmFsdWU6IHN0cmluZyB8IG51bGxcbiAgaXNMb2FkaW5nPzogYm9vbGVhblxufVxuXG5jb25zdCBOT05fU0VBUkNIQUJMRV9LRVlTID0gW1xuICAnVGFiJyxcbiAgJyAnLFxuICAnRW50ZXInLFxuICAnQ2Fwc0xvY2snLFxuICAnU2hpZnQnLFxuICAnQXJyb3dEb3duJyxcbiAgJ0Fycm93VXAnLFxuICAnQXJyb3dMZWZ0JyxcbiAgJ0Fycm93UmlnaHQnLFxuICAnRXNjYXBlJyxcbl1cblxuY29uc3QgU3R5bGVkUG9wdXAgPSBzdHlsZWQoUG9wdXApYFxuICB3aWR0aDogMTAwJTtcbiAgbWluLXdpZHRoOiAzMjBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLmNvbG9ycy5vdGhlci5lbGV2YXRpb24uYmFja2dyb3VuZC5yYWlzZWR9O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PlxuICAgIGAke3RoZW1lLnNoYWRvd3MucmFpc2VkWzBdfSwgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFsxXX1gfTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIG1hcmdpbi1ib3R0b206ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMTBdfTtcbmBcblxuY29uc3QgRHJvcGRvd25Db250YWluZXIgPSBzdHlsZWQoU3RhY2spPHsgJ2RhdGEtZ3JvdXBlZCc6IGJvb2xlYW4gfT5gXG4gIG1heC1oZWlnaHQ6ICR7RFJPUERPV05fTUFYX0hFSUdIVH1weDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcblxuICAmW2RhdGEtZ3JvdXBlZD1cInRydWVcIl0ge1xuICAgIHBhZGRpbmctdG9wOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzBdfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cCA9IHN0eWxlZC5idXR0b248eyAnZGF0YS1zZWxlY3Rncm91cCc6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbiAgcGFkZGluZy1yaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gIHBhZGRpbmctbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gIGhlaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVs0XX07XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIG1hcmdpbi1ib3R0b206ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzAuMjUnXX07XG5cbiAgJjpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gICZbZGF0YS1zZWxlY3Rncm91cD0ndHJ1ZSddIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICAgIGJvcmRlci1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19IHNvbGlkICR7KHsgdGhlbWUgfSkgPT5cbiAgICAgIHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRXZWFrfTtcbiAgfVxuXG4gICZbZGF0YS1zZWxlY3Rncm91cD0ndHJ1ZSddOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRIb3Zlcn07XG4gIH1cbmBcbmNvbnN0IERyb3Bkb3duR3JvdXBXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgdG9wOiAwO1xuYFxuY29uc3QgRHJvcGRvd25JdGVtID0gc3R5bGVkLmRpdjx7XG4gICdhcmlhLXNlbGVjdGVkJzogYm9vbGVhblxuICAnYXJpYS1kaXNhYmxlZCc6IGJvb2xlYW5cbn0+YFxuICB0ZXh0LWFsaWduOmxlZnQ7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLmNvbG9ycy5vdGhlci5lbGV2YXRpb24uYmFja2dyb3VuZC5yYWlzZWR9O1xuXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzEuNSddfSAkeyh7IHRoZW1lIH0pID0+XG4gICAgdGhlbWUuc3BhY2VbJzInXX0gJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMS41J119ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5zcGFjZVsnMiddfTtcbiAgbWFyZ2luLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzAuNSddfTtcbiAgbWFyZ2luLXJpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjUnXX07XG5cbiAgY29sb3I6ICAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHR9O1xuICBib3JkZXItcmFkaXVzOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnJhZGlpLmRlZmF1bHR9O1xuICBib3JkZXI6IDFweCB0cmFuc3BhcmVudCBzb2xpZDtcblxuICAmOmhvdmVyLCA6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkudGV4dH07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5cbiAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmREaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dERpc2FibGVkfTtcbiAgfVxuXG4gICZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06aG92ZXIsIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0U3Ryb25nRGlzYWJsZWR9O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYFxuXG5jb25zdCBQb3B1cEZvb3RlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEuNV19ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19XG4gICAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zaGFkb3dzLmRyb3Bkb3dufTtcbmBcbmNvbnN0IFN0eWxlZENoZWNrYm94ID0gc3R5bGVkKENoZWNrYm94KWBcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCAvLyBwb2ludGVyLWV2ZW50czogbm9uZSBwcmV2ZW50cyBhbnkgZXJyb3Igd2hlbiB1c2luZyB0aGUgY2hlY2tib3ggaW4gYSBmb3JtIHNpbmNlIGl0IGlzIGFuIHVubmFtZWQgaW5wdXRcblxuY29uc3QgRW1wdHlTdGF0ZSA9IHN0eWxlZChTdGFjaylgXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuYFxuY29uc3QgTG9hZE1vcmUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuYFxuXG5jb25zdCBtb3ZlRm9jdXNEb3duID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICBpZiAob3B0aW9ucykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucz8ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSBvcHRpb25zLmxlbmd0aFxuICAgICAgaWYgKGFjdGl2ZUl0ZW0gPT09IG9wdGlvbnNbaV0gJiYgYWN0aXZlSXRlbSAhPT0gb3B0aW9uc1tsaXN0TGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgKyAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgbW92ZUZvY3VzVXAgPSAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICcjaXRlbXMgPiBkaXZbcm9sZT1cIm9wdGlvblwiXTpub3QoW2Rpc2FibGVkXSknLFxuICApXG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbMF0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgLSAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgaGFuZGxlS2V5RG93blNlbGVjdCA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzRG93bigpXG4gIH1cblxuICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzVXAoKVxuICB9XG5cbiAgaWYgKGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgLy8gTm8gc2Nyb2xsXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICB9XG59XG5cbmNvbnN0IGhhbmRsZUtleURvd24gPSAoXG4gIGV2ZW50OiBnbG9iYWxUaGlzLktleWJvYXJkRXZlbnQsXG4gIHJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD4sXG4gIG9wdGlvbnM6IERhdGFUeXBlLFxuICBzZWFyY2hCYXJBY3RpdmU6IGJvb2xlYW4sXG4gIHNldFNlYXJjaDogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248c3RyaW5nPj4sXG4gIHNldERlZmF1bHRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZyB8IG51bGw+PixcbiAgc2VhcmNoOiBzdHJpbmcsXG4pID0+IHtcbiAgLy8gRGVhbHMgd2l0aCBkZWZhdWx0IHNlYXJjaFxuICBpZiAoXG4gICAgcmVmLmN1cnJlbnQgJiZcbiAgICAhc2VhcmNoQmFyQWN0aXZlICYmXG4gICAgIU5PTl9TRUFSQ0hBQkxFX0tFWVMuaW5jbHVkZXMoZXZlbnQua2V5KSAmJlxuICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ/LmFyaWFMYWJlbCAhPT0gJ3NlYXJjaC1iYXInXG4gICkge1xuICAgIGNvbnN0IGN1cnJlbnRTZWFyY2ggPSBzZWFyY2ggKyBldmVudC5rZXlcbiAgICBzZXRTZWFyY2goY3VycmVudFNlYXJjaClcbiAgICByZWYuY3VycmVudC5mb2N1cygpXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9ucyA9IHsgLi4ub3B0aW9ucyB9XG4gICAgICBPYmplY3Qua2V5cyhjbG9zZXN0T3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNsb3Nlc3RPcHRpb25zW2dyb3VwXSA9IGNsb3Nlc3RPcHRpb25zW2dyb3VwXS5maWx0ZXIob3B0aW9uID0+XG4gICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHRcbiAgICAgICAgICAgID8gb3B0aW9uLnNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpXG4gICAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICAgIClcblxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfSlcbiAgICAgIGNvbnN0IGNsb3Nlc3RPcHRpb24gPSBjbG9zZXN0T3B0aW9uc1tPYmplY3Qua2V5cyhjbG9zZXN0T3B0aW9ucylbMF1dWzBdXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gWy4uLm9wdGlvbnNdLmZpbmQob3B0aW9uID0+XG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgPyBvcHRpb24uc2VhcmNoVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaClcbiAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICApXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgQ3JlYXRlRHJvcGRvd24gPSAoe1xuICBpc0VtcHR5LFxuICBlbXB0eVN0YXRlLFxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbixcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgZGVmYXVsdFNlYXJjaFZhbHVlLFxuICBpc0xvYWRpbmcsXG59OiBDcmVhdGVEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBvcHRpb25zLFxuICAgIG11bHRpc2VsZWN0LFxuICAgIHNlbGVjdEFsbCxcbiAgICBzZWxlY3RBbGxHcm91cCxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIHNldFNlbGVjdGVkRGF0YSxcbiAgICBzZWxlY3RlZERhdGEsXG4gIH0gPSB1c2VTZWxlY3RJbnB1dCgpXG4gIGNvbnN0IGZvY3VzZWRJdGVtUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRTZWFyY2hWYWx1ZSAmJiBmb2N1c2VkSXRlbVJlZj8uY3VycmVudCkge1xuICAgICAgZm9jdXNlZEl0ZW1SZWYuY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbZGVmYXVsdFNlYXJjaFZhbHVlXSlcblxuICBpZiAoaXNFbXB0eSkge1xuICAgIHJldHVybiAoXG4gICAgICA8RW1wdHlTdGF0ZSBnYXA9ezJ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAge2VtcHR5U3RhdGUgPz8gKFxuICAgICAgICAgIDxUZXh0IHZhcmlhbnQ9XCJib2R5U3Ryb25nXCIgYXM9XCJwXCI+XG4gICAgICAgICAgICBObyBvcHRpb25zXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApfVxuICAgICAgPC9FbXB0eVN0YXRlPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGNsaWNrZWRPcHRpb246IE9wdGlvblR5cGUsIGdyb3VwPzogc3RyaW5nKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdE9wdGlvbicsIGNsaWNrZWRPcHRpb24sIGdyb3VwIH0pXG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKGNsaWNrZWRPcHRpb24udmFsdWUpKSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oXG4gICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmZpbHRlcihcbiAgICAgICAgICAgIHZhbCA9PiB2YWwgIT09IGNsaWNrZWRPcHRpb24udmFsdWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25DaGFuZ2U/LihbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLCBjbGlja2VkT3B0aW9uLnZhbHVlXSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb25DaGFuZ2U/LihjbGlja2VkT3B0aW9uLnZhbHVlKVxuICAgIH1cbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZShtdWx0aXNlbGVjdCkgLy8gaGlkZSB0aGUgZHJvcGRvd24gb24gY2xpY2sgd2hlbiBzaW5nbGUgc2VsZWN0IG9ubHlcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdEFsbE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0QWxsJyB9KVxuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZCAmJiBvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShbXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFsbFZhbHVlczogT3B0aW9uVHlwZVtdID0gW11cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgYWxsVmFsdWVzLnB1c2gob3B0aW9uKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4gYWxsVmFsdWVzLnB1c2gob3B0aW9uKSlcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZT8uKGFsbFZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudmFsdWUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEdyb3VwID0gKGdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RHcm91cCcsIHNlbGVjdGVkR3JvdXA6IGdyb3VwIH0pXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZFZhbHVlcyA9IFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXNdLmZpbHRlcihcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPT5cbiAgICAgICAgICAgICAgIW9wdGlvbnNbZ3JvdXBdLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIG9uQ2hhbmdlPy4obmV3U2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXVxuXG4gICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PlxuICAgICAgICAgICAgbmV3U2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSB8fCBvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbmV3U2VsZWN0ZWRWYWx1ZXMucHVzaChvcHRpb24udmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpID8gKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZGF0YS1ncm91cGVkXG4gICAgPlxuICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJibG9ja1wiIC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U3RhY2sgZGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwic3BhblwiIHZhcmlhbnQ9XCJib2R5XCIgcGxhY2VtZW50PVwibGVmdFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIHtPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKS5tYXAoKGdyb3VwLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPFN0YWNrIGtleT17Z3JvdXB9IGdhcD17MC4yNX0+XG4gICAgICAgICAgICAgIHtkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5sZW5ndGggPiAwID8gKFxuICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwV3JhcHBlciBpZD17c2VsZWN0QWxsR3JvdXAgPyAnaXRlbXMnIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAgICAgIHtncm91cCA/IChcbiAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXtzZWxlY3RBbGxHcm91cCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0R3JvdXAoZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXNlbGVjdGdyb3VwPXtzZWxlY3RBbGxHcm91cH1cbiAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgZ3JvdXAtJHtpbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RBbGxHcm91cCA/IGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsR3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLnNlbGVjdGVkR3JvdXBzLmluY2x1ZGVzKGdyb3VwKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Z3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RBbGxHcm91cCA/IGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXA+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXBXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9XCIwLjI1XCI+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLm1hcCgob3B0aW9uLCBpbmRleE9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXhPcHRpb259YH1cbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge211bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICkgOiAoXG4gICAgPERyb3Bkb3duQ29udGFpbmVyXG4gICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICBpZD1cInNlbGVjdC1kcm9wZG93blwiXG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd25TZWxlY3R9XG4gICAgICBnYXA9ezAuMjV9XG4gICAgICBkYXRhLWdyb3VwZWQ9e2ZhbHNlfVxuICAgID5cbiAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fSB0YWJJbmRleD17LTF9PlxuICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwic3BhblwiIHZhcmlhbnQ9XCJib2R5XCIgcGxhY2VtZW50PVwibGVmdFwiPlxuICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbC5sYWJlbH1cbiAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgIGFzPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbC5kZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgKSA6IG51bGx9XG4gICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiIGdhcD17MC4yNX0+XG4gICAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJibG9ja1wiIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgZGlzcGxheWVkT3B0aW9ucy5tYXAoKG9wdGlvbiwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAga2V5PXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9eyEhb3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrKG9wdGlvbilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2BvcHRpb24tJHtvcHRpb24udmFsdWV9YH1cbiAgICAgICAgICAgICAgaWQ9e2BvcHRpb24tJHtpbmRleH1gfVxuICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9eyFvcHRpb24uZGlzYWJsZWQgPyAwIDogLTF9XG4gICAgICAgICAgICAgIHJlZj17XG4gICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSBkZWZhdWx0U2VhcmNoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICBvcHRpb24uc2VhcmNoVGV4dCA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlXG4gICAgICAgICAgICAgICAgICA/IGZvY3VzZWRJdGVtUmVmXG4gICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IGhhbmRsZUNsaWNrKG9wdGlvbikgOiBudWxsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge211bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgICAgPC9TdGFjaz5cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApXG59XG5leHBvcnQgY29uc3QgRHJvcGRvd24gPSAoe1xuICBjaGlsZHJlbixcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIHNlYXJjaGFibGUsXG4gIHBsYWNlaG9sZGVyLFxuICBmb290ZXIsXG4gIHJlZlNlbGVjdCxcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgaXNMb2FkaW5nLFxuICBzaXplLFxuICBkcm9wZG93bkFsaWduLFxuICBwb3J0YWxUYXJnZXQsXG59OiBEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2hJbnB1dCxcbiAgICBvcHRpb25zLFxuICAgIGRpc3BsYXllZE9wdGlvbnMsXG4gICAgbnVtYmVyT2ZPcHRpb25zLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKClcbiAgY29uc3QgW3NlYXJjaEJhckFjdGl2ZSwgc2V0U2VhcmNoQmFyQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZGVmYXVsdFNlYXJjaFZhbHVlLCBzZXREZWZhdWx0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW3NlYXJjaCwgc2V0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZz4oJycpXG4gIGNvbnN0IFttYXhXaWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVtYmVyPigpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmU2VsZWN0LmN1cnJlbnQgJiYgaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID1cbiAgICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tICtcbiAgICAgICAgRFJPUERPV05fTUFYX0hFSUdIVCArXG4gICAgICAgIE51bWJlcih0aGVtZS5zaXppbmdbSU5QVVRfU0laRV9IRUlHSFRbc2l6ZV1dLnJlcGxhY2UoJ3JlbScsICcnKSkgKiAxNiArXG4gICAgICAgIE51bWJlci5wYXJzZUludCh0aGVtZS5zcGFjZVsnNSddLCAxMClcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gcG9zaXRpb24gLSB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICAgIGlmIChvdmVyZmxvdyA+IDApIHtcbiAgICAgICAgY29uc3QgbW9kYWxFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JhY2tkcm9wLW1vZGFsJylcblxuICAgICAgICBpZiAobW9kYWxFbGVtZW50KSB7XG4gICAgICAgICAgbW9kYWxFbGVtZW50LnNjcm9sbEJ5KHsgdG9wOiBvdmVyZmxvdywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pXG4gICAgICAgIH0gZWxzZSB3aW5kb3cuc2Nyb2xsQnkoeyB0b3A6IG92ZXJmbG93LCBiZWhhdmlvcjogJ3Ntb290aCcgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbaXNEcm9wZG93blZpc2libGUsIHJlZlNlbGVjdCwgc2l6ZSwgcmVmLmN1cnJlbnRdKVxuXG4gIGNvbnN0IHJlc2l6ZURyb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHJlZlNlbGVjdC5jdXJyZW50ICYmXG4gICAgICByZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCA+IDBcbiAgICApIHtcbiAgICAgIHNldFdpZHRoKHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKVxuICAgIH1cbiAgfSwgW3JlZlNlbGVjdF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXNpemVEcm9wZG93bigpXG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplRHJvcGRvd24pXG5cbiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZURyb3Bkb3duKVxuICB9LCBbcmVzaXplRHJvcGRvd25dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzZWFyY2hJbnB1dCkge1xuICAgICAgb25TZWFyY2gob3B0aW9ucylcbiAgICB9XG4gIH0sIFtvblNlYXJjaCwgb3B0aW9ucywgc2VhcmNoSW5wdXRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0Ryb3Bkb3duVmlzaWJsZSkge1xuICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgc2V0U2VhcmNoKCcnKVxuICAgIH1cblxuICAgIGlmICghc2VhcmNoYWJsZSkge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGV2ZW50ID0+XG4gICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgICAgICAgIHNldFNlYXJjaCxcbiAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgb3B0aW9ucyxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2gsXG4gICAgcmVmU2VsZWN0LFxuICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoYWJsZSxcbiAgXSlcblxuICAvLyBObyBkYXRhIGlzIGRpc3BsYXllZCAoYmVjYXVzZSBvZiB0aGUgc2VhcmNoIG9yIGJlY2F1c2Ugbm8gZGF0YSBpcyBwcm92aWRlZClcbiAgLy8gU2V0IHRvIHRydWUgd2hlbiBub0RhdGEgYnkgZGVmYXVsdFxuICBjb25zdCBpc0VtcHR5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKG51bWJlck9mT3B0aW9ucyA9PT0gMCkgcmV0dXJuIHRydWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSkge1xuICAgICAgcmV0dXJuIGRpc3BsYXllZE9wdGlvbnMubGVuZ3RoID09PSAwXG4gICAgfVxuICAgIGNvbnN0IGdyb3VwcyA9IE9iamVjdC5rZXlzKGRpc3BsYXllZE9wdGlvbnMpXG4gICAgZm9yIChjb25zdCBncm91cCBvZiBncm91cHMpIHtcbiAgICAgIGlmIChkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH0sIFtkaXNwbGF5ZWRPcHRpb25zLCBudW1iZXJPZk9wdGlvbnNdKVxuXG4gIGNvbnN0IGNvbXB1dGVkRm9vdGVyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGZvb3RlciAmJiAhaXNFbXB0eSkge1xuICAgICAgaWYgKHR5cGVvZiBmb290ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8UG9wdXBGb290ZXI+e2Zvb3RlcigoKSA9PiBzZXRJc0Ryb3Bkb3duVmlzaWJsZShmYWxzZSkpfTwvUG9wdXBGb290ZXI+XG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIDxQb3B1cEZvb3Rlcj57Zm9vdGVyfTwvUG9wdXBGb290ZXI+XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfSwgW2lzRW1wdHksIGZvb3Rlciwgc2V0SXNEcm9wZG93blZpc2libGVdKVxuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFBvcHVwXG4gICAgICB2aXNpYmxlPXtpc0Ryb3Bkb3duVmlzaWJsZX1cbiAgICAgIHRleHQ9e1xuICAgICAgICA8U3RhY2s+XG4gICAgICAgICAge3NlYXJjaGFibGUgJiYgIWlzTG9hZGluZyAmJiBudW1iZXJPZk9wdGlvbnMgPj0gNiA/IChcbiAgICAgICAgICAgIDxTZWFyY2hCYXJEcm9wZG93blxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnM9e2Rpc3BsYXllZE9wdGlvbnN9XG4gICAgICAgICAgICAgIHNldFNlYXJjaEJhckFjdGl2ZT17c2V0U2VhcmNoQmFyQWN0aXZlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8Q3JlYXRlRHJvcGRvd25cbiAgICAgICAgICAgIGlzRW1wdHk9e2lzRW1wdHl9XG4gICAgICAgICAgICBlbXB0eVN0YXRlPXtlbXB0eVN0YXRlfVxuICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgbG9hZE1vcmU9e2xvYWRNb3JlfVxuICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICBkZWZhdWx0U2VhcmNoVmFsdWU9e2RlZmF1bHRTZWFyY2hWYWx1ZX1cbiAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgIC8+XG4gICAgICAgICAge2NvbXB1dGVkRm9vdGVyfVxuICAgICAgICA8L1N0YWNrPlxuICAgICAgfVxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIGRpc2FibGVBbmltYXRpb25cbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgZGVib3VuY2VEZWxheT17MH1cbiAgICAgIGNvbnRhaW5lckZ1bGxXaWR0aFxuICAgICAgaGlkZU9uQ2xpY2tPdXRzaWRlXG4gICAgICBvbkNsb3NlPXsoKSA9PiBzZXRJc0Ryb3Bkb3duVmlzaWJsZShmYWxzZSl9XG4gICAgICBhbGlnbj17ZHJvcGRvd25BbGlnbiA/PyAnc3RhcnQnfVxuICAgICAgcG9ydGFsVGFyZ2V0PXtwb3J0YWxUYXJnZXR9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvU3R5bGVkUG9wdXA+XG4gIClcbn1cbiJdfQ== */"));
127
+ }) => theme.colors.neutral.textStrongDisabled, ";cursor:not-allowed;outline:none;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxSUUiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvdWx0cmF2aW9sZXQvdWx0cmF2aW9sZXQvcGFja2FnZXMvdWkvc3JjL2NvbXBvbmVudHMvU2VsZWN0SW5wdXQvRHJvcGRvd24udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCdcbmltcG9ydCB0eXBlIHtcbiAgQ29tcG9uZW50UHJvcHMsXG4gIERpc3BhdGNoLFxuICBLZXlib2FyZEV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgU2V0U3RhdGVBY3Rpb24sXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUNvbnRleHQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94J1xuaW1wb3J0IHsgTW9kYWxDb250ZXh0IH0gZnJvbSAnLi4vTW9kYWwvTW9kYWxQcm92aWRlcidcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vUG9wdXAnXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uL1NrZWxldG9uJ1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICcuLi9TdGFjaydcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi9UZXh0J1xuaW1wb3J0IHsgRGlzcGxheU9wdGlvbiB9IGZyb20gJy4vRHJvcGRvd25PcHRpb24nXG5pbXBvcnQgeyBTZWFyY2hCYXJEcm9wZG93biB9IGZyb20gJy4vU2VhcmNoQmFyRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTZWxlY3RJbnB1dCB9IGZyb20gJy4vU2VsZWN0SW5wdXRQcm92aWRlcidcbmltcG9ydCB0eXBlIHsgRGF0YVR5cGUsIE9wdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgSU5QVVRfU0laRV9IRUlHSFQgfSBmcm9tICcuL3R5cGVzJ1xuXG5jb25zdCBEUk9QRE9XTl9NQVhfSEVJR0hUID0gMjU2XG5cbmV4cG9ydCB0eXBlIERyb3Bkb3duUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZW1wdHlTdGF0ZTogUmVhY3ROb2RlXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nXG4gIHNlYXJjaGFibGU6IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI6IHN0cmluZ1xuICBmb290ZXI/OiAoKGNsb3NlRHJvcGRvd246ICgpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSkgfCBSZWFjdE5vZGVcbiAgcmVmU2VsZWN0OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPlxuICBsb2FkTW9yZT86IFJlYWN0Tm9kZVxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCdcbiAgaXNMb2FkaW5nPzogYm9vbGVhblxuICBzaXplOiAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnXG4gIGRyb3Bkb3duQWxpZ24/OiBDb21wb25lbnRQcm9wczx0eXBlb2YgUG9wdXA+WydhbGlnbiddXG4gIHBvcnRhbFRhcmdldD86IENvbXBvbmVudFByb3BzPHR5cGVvZiBQb3B1cD5bJ3BvcnRhbFRhcmdldCddXG59XG5cbmV4cG9ydCB0eXBlIENyZWF0ZURyb3Bkb3duUHJvcHMgPSB7XG4gIGlzRW1wdHk6IGJvb2xlYW5cbiAgZW1wdHlTdGF0ZTogUmVhY3ROb2RlXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nXG4gIGxvYWRNb3JlPzogUmVhY3ROb2RlXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudDogJ2xlZnQnIHwgJ3JpZ2h0J1xuICBkZWZhdWx0U2VhcmNoVmFsdWU6IHN0cmluZyB8IG51bGxcbiAgaXNMb2FkaW5nPzogYm9vbGVhblxufVxuXG5jb25zdCBOT05fU0VBUkNIQUJMRV9LRVlTID0gW1xuICAnVGFiJyxcbiAgJyAnLFxuICAnRW50ZXInLFxuICAnQ2Fwc0xvY2snLFxuICAnU2hpZnQnLFxuICAnQXJyb3dEb3duJyxcbiAgJ0Fycm93VXAnLFxuICAnQXJyb3dMZWZ0JyxcbiAgJ0Fycm93UmlnaHQnLFxuICAnRXNjYXBlJyxcbl1cblxuY29uc3QgU3R5bGVkUG9wdXAgPSBzdHlsZWQoUG9wdXApYFxuICB3aWR0aDogMTAwJTtcbiAgbWluLXdpZHRoOiAzMjBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLmNvbG9ycy5vdGhlci5lbGV2YXRpb24uYmFja2dyb3VuZC5yYWlzZWR9O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PlxuICAgIGAke3RoZW1lLnNoYWRvd3MucmFpc2VkWzBdfSwgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFsxXX1gfTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIG1hcmdpbi1ib3R0b206ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMTBdfTtcbmBcblxuY29uc3QgRHJvcGRvd25Db250YWluZXIgPSBzdHlsZWQoU3RhY2spPHsgJ2RhdGEtZ3JvdXBlZCc6IGJvb2xlYW4gfT5gXG4gIG1heC1oZWlnaHQ6ICR7RFJPUERPV05fTUFYX0hFSUdIVH1weDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcblxuICAmW2RhdGEtZ3JvdXBlZD1cInRydWVcIl0ge1xuICAgIHBhZGRpbmctdG9wOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzBdfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cCA9IHN0eWxlZC5idXR0b248eyAnZGF0YS1zZWxlY3Rncm91cCc6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbiAgcGFkZGluZy1yaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gIHBhZGRpbmctbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gIGhlaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVs0XX07XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIG1hcmdpbi1ib3R0b206ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzAuMjUnXX07XG5cbiAgJjpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gICZbZGF0YS1zZWxlY3Rncm91cD0ndHJ1ZSddIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICAgIGJvcmRlci1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19IHNvbGlkICR7KHsgdGhlbWUgfSkgPT5cbiAgICAgIHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRXZWFrfTtcbiAgfVxuXG4gICZbZGF0YS1zZWxlY3Rncm91cD0ndHJ1ZSddOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRIb3Zlcn07XG4gIH1cbmBcbmNvbnN0IERyb3Bkb3duR3JvdXBXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgdG9wOiAwO1xuYFxuY29uc3QgRHJvcGRvd25JdGVtID0gc3R5bGVkLmRpdjx7XG4gICdhcmlhLXNlbGVjdGVkJzogYm9vbGVhblxuICAnYXJpYS1kaXNhYmxlZCc6IGJvb2xlYW5cbn0+YFxuICB0ZXh0LWFsaWduOmxlZnQ7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLmNvbG9ycy5vdGhlci5lbGV2YXRpb24uYmFja2dyb3VuZC5yYWlzZWR9O1xuXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzEuNSddfSAkeyh7IHRoZW1lIH0pID0+XG4gICAgdGhlbWUuc3BhY2VbJzInXX0gJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMS41J119ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5zcGFjZVsnMiddfTtcbiAgbWFyZ2luLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzAuNSddfTtcbiAgbWFyZ2luLXJpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjUnXX07XG5cbiAgY29sb3I6ICAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHR9O1xuICBib3JkZXItcmFkaXVzOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnJhZGlpLmRlZmF1bHR9O1xuICBib3JkZXI6IDFweCB0cmFuc3BhcmVudCBzb2xpZDtcblxuICAmOmhvdmVyLCA6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkudGV4dH07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5cbiAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmREaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dERpc2FibGVkfTtcbiAgfVxuXG4gICZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06aG92ZXIsIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0U3Ryb25nRGlzYWJsZWR9O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYFxuXG5jb25zdCBQb3B1cEZvb3RlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEuNV19ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19XG4gICAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zaGFkb3dzLmRyb3Bkb3dufTtcbmBcbmNvbnN0IFN0eWxlZENoZWNrYm94ID0gc3R5bGVkKENoZWNrYm94KWBcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCAvLyBwb2ludGVyLWV2ZW50czogbm9uZSBwcmV2ZW50cyBhbnkgZXJyb3Igd2hlbiB1c2luZyB0aGUgY2hlY2tib3ggaW4gYSBmb3JtIHNpbmNlIGl0IGlzIGFuIHVubmFtZWQgaW5wdXRcblxuY29uc3QgRW1wdHlTdGF0ZSA9IHN0eWxlZChTdGFjaylgXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuYFxuY29uc3QgTG9hZE1vcmUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuYFxuXG5jb25zdCBtb3ZlRm9jdXNEb3duID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICBpZiAob3B0aW9ucykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucz8ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSBvcHRpb25zLmxlbmd0aFxuICAgICAgaWYgKGFjdGl2ZUl0ZW0gPT09IG9wdGlvbnNbaV0gJiYgYWN0aXZlSXRlbSAhPT0gb3B0aW9uc1tsaXN0TGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgKyAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgbW92ZUZvY3VzVXAgPSAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICcjaXRlbXMgPiBkaXZbcm9sZT1cIm9wdGlvblwiXTpub3QoW2Rpc2FibGVkXSknLFxuICApXG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbMF0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgLSAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgaGFuZGxlS2V5RG93blNlbGVjdCA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzRG93bigpXG4gIH1cblxuICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzVXAoKVxuICB9XG5cbiAgaWYgKGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgLy8gTm8gc2Nyb2xsXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICB9XG59XG5cbmNvbnN0IGhhbmRsZUtleURvd24gPSAoXG4gIGV2ZW50OiBnbG9iYWxUaGlzLktleWJvYXJkRXZlbnQsXG4gIHJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD4sXG4gIG9wdGlvbnM6IERhdGFUeXBlLFxuICBzZWFyY2hCYXJBY3RpdmU6IGJvb2xlYW4sXG4gIHNldFNlYXJjaDogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248c3RyaW5nPj4sXG4gIHNldERlZmF1bHRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZyB8IG51bGw+PixcbiAgc2VhcmNoOiBzdHJpbmcsXG4pID0+IHtcbiAgLy8gRGVhbHMgd2l0aCBkZWZhdWx0IHNlYXJjaFxuICBpZiAoXG4gICAgcmVmLmN1cnJlbnQgJiZcbiAgICAhc2VhcmNoQmFyQWN0aXZlICYmXG4gICAgIU5PTl9TRUFSQ0hBQkxFX0tFWVMuaW5jbHVkZXMoZXZlbnQua2V5KSAmJlxuICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ/LmFyaWFMYWJlbCAhPT0gJ3NlYXJjaC1iYXInXG4gICkge1xuICAgIGNvbnN0IGN1cnJlbnRTZWFyY2ggPSBzZWFyY2ggKyBldmVudC5rZXlcbiAgICBzZXRTZWFyY2goY3VycmVudFNlYXJjaClcbiAgICByZWYuY3VycmVudC5mb2N1cygpXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9ucyA9IHsgLi4ub3B0aW9ucyB9XG4gICAgICBPYmplY3Qua2V5cyhjbG9zZXN0T3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNsb3Nlc3RPcHRpb25zW2dyb3VwXSA9IGNsb3Nlc3RPcHRpb25zW2dyb3VwXS5maWx0ZXIob3B0aW9uID0+XG4gICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHRcbiAgICAgICAgICAgID8gb3B0aW9uLnNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpXG4gICAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICAgIClcblxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfSlcbiAgICAgIGNvbnN0IGNsb3Nlc3RPcHRpb24gPSBjbG9zZXN0T3B0aW9uc1tPYmplY3Qua2V5cyhjbG9zZXN0T3B0aW9ucylbMF1dWzBdXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gWy4uLm9wdGlvbnNdLmZpbmQob3B0aW9uID0+XG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgPyBvcHRpb24uc2VhcmNoVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaClcbiAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICApXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgQ3JlYXRlRHJvcGRvd24gPSAoe1xuICBpc0VtcHR5LFxuICBlbXB0eVN0YXRlLFxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbixcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgZGVmYXVsdFNlYXJjaFZhbHVlLFxuICBpc0xvYWRpbmcsXG59OiBDcmVhdGVEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBvcHRpb25zLFxuICAgIG11bHRpc2VsZWN0LFxuICAgIHNlbGVjdEFsbCxcbiAgICBzZWxlY3RBbGxHcm91cCxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIHNldFNlbGVjdGVkRGF0YSxcbiAgICBzZWxlY3RlZERhdGEsXG4gIH0gPSB1c2VTZWxlY3RJbnB1dCgpXG4gIGNvbnN0IGZvY3VzZWRJdGVtUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRTZWFyY2hWYWx1ZSAmJiBmb2N1c2VkSXRlbVJlZj8uY3VycmVudCkge1xuICAgICAgZm9jdXNlZEl0ZW1SZWYuY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbZGVmYXVsdFNlYXJjaFZhbHVlXSlcblxuICBpZiAoaXNFbXB0eSkge1xuICAgIHJldHVybiAoXG4gICAgICA8RW1wdHlTdGF0ZSBhbGlnbkl0ZW1zPVwiY2VudGVyXCIgZ2FwPXsyfT5cbiAgICAgICAge2VtcHR5U3RhdGUgPz8gKFxuICAgICAgICAgIDxUZXh0IGFzPVwicFwiIHZhcmlhbnQ9XCJib2R5U3Ryb25nXCI+XG4gICAgICAgICAgICBObyBvcHRpb25zXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApfVxuICAgICAgPC9FbXB0eVN0YXRlPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGNsaWNrZWRPcHRpb246IE9wdGlvblR5cGUsIGdyb3VwPzogc3RyaW5nKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRhKHsgY2xpY2tlZE9wdGlvbiwgZ3JvdXAsIHR5cGU6ICdzZWxlY3RPcHRpb24nIH0pXG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKGNsaWNrZWRPcHRpb24udmFsdWUpKSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oXG4gICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmZpbHRlcihcbiAgICAgICAgICAgIHZhbCA9PiB2YWwgIT09IGNsaWNrZWRPcHRpb24udmFsdWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25DaGFuZ2U/LihbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLCBjbGlja2VkT3B0aW9uLnZhbHVlXSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb25DaGFuZ2U/LihjbGlja2VkT3B0aW9uLnZhbHVlKVxuICAgIH1cbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZShtdWx0aXNlbGVjdCkgLy8gaGlkZSB0aGUgZHJvcGRvd24gb24gY2xpY2sgd2hlbiBzaW5nbGUgc2VsZWN0IG9ubHlcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdEFsbE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0QWxsJyB9KVxuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZCAmJiBvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShbXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFsbFZhbHVlczogT3B0aW9uVHlwZVtdID0gW11cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgYWxsVmFsdWVzLnB1c2gob3B0aW9uKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4gYWxsVmFsdWVzLnB1c2gob3B0aW9uKSlcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZT8uKGFsbFZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudmFsdWUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEdyb3VwID0gKGdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0YSh7IHNlbGVjdGVkR3JvdXA6IGdyb3VwLCB0eXBlOiAnc2VsZWN0R3JvdXAnIH0pXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZFZhbHVlcyA9IFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXNdLmZpbHRlcihcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPT5cbiAgICAgICAgICAgICAgIW9wdGlvbnNbZ3JvdXBdLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIG9uQ2hhbmdlPy4obmV3U2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXVxuXG4gICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PlxuICAgICAgICAgICAgbmV3U2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSB8fCBvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbmV3U2VsZWN0ZWRWYWx1ZXMucHVzaChvcHRpb24udmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpID8gKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgZGF0YS1ncm91cGVkXG4gICAgICBpZD1cInNlbGVjdC1kcm9wZG93blwiXG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd25TZWxlY3R9XG4gICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgPlxuICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJibG9ja1wiIC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gc2VsZWN0QWxsT3B0aW9ucygpIDogbnVsbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U3RhY2sgZGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwic3BhblwiIHBsYWNlbWVudD1cImxlZnRcIiB2YXJpYW50PVwiYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIHtPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKS5tYXAoKGdyb3VwLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPFN0YWNrIGdhcD17MC4yNX0ga2V5PXtncm91cH0+XG4gICAgICAgICAgICAgIHtkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5sZW5ndGggPiAwID8gKFxuICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwV3JhcHBlciBpZD17c2VsZWN0QWxsR3JvdXAgPyAnaXRlbXMnIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAgICAgIHtncm91cCA/IChcbiAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXNlbGVjdGdyb3VwPXtzZWxlY3RBbGxHcm91cH1cbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RBbGxHcm91cCA/IGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsR3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLnNlbGVjdGVkR3JvdXBzLmluY2x1ZGVzKGdyb3VwKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtZ3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEFsbEdyb3VwID8gaGFuZGxlU2VsZWN0R3JvdXAoZ3JvdXApIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImNhcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFzPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImNhcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXA+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXBXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFN0YWNrIGdhcD1cIjAuMjVcIiBpZD1cIml0ZW1zXCI+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLm1hcCgob3B0aW9uLCBpbmRleE9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPXshIW9wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4T3B0aW9ufWB9XG4gICAgICAgICAgICAgICAgICAgIGtleT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge211bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICkgOiAoXG4gICAgPERyb3Bkb3duQ29udGFpbmVyXG4gICAgICBkYXRhLWdyb3VwZWQ9e2ZhbHNlfVxuICAgICAgZ2FwPXswLjI1fVxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgID5cbiAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgIDxTdGFjayBnYXA9ezAuMjV9IGlkPVwiaXRlbXNcIiB0YWJJbmRleD17LTF9PlxuICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwic3BhblwiIHBsYWNlbWVudD1cImxlZnRcIiB2YXJpYW50PVwiYm9keVwiPlxuICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbC5sYWJlbH1cbiAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgIGFzPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHlTbWFsbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbC5kZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgKSA6IG51bGx9XG4gICAgICA8U3RhY2sgZ2FwPXswLjI1fSBpZD1cIml0ZW1zXCI+XG4gICAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJibG9ja1wiIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgZGlzcGxheWVkT3B0aW9ucy5tYXAoKG9wdGlvbiwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2BvcHRpb24tJHtvcHRpb24udmFsdWV9YH1cbiAgICAgICAgICAgICAgaWQ9e2BvcHRpb24tJHtpbmRleH1gfVxuICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IGhhbmRsZUNsaWNrKG9wdGlvbikgOiBudWxsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge211bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrKG9wdGlvbilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgICAgPC9TdGFjaz5cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApXG59XG5leHBvcnQgY29uc3QgRHJvcGRvd24gPSAoe1xuICBjaGlsZHJlbixcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIHNlYXJjaGFibGUsXG4gIHBsYWNlaG9sZGVyLFxuICBmb290ZXIsXG4gIHJlZlNlbGVjdCxcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgaXNMb2FkaW5nLFxuICBzaXplLFxuICBkcm9wZG93bkFsaWduLFxuICBwb3J0YWxUYXJnZXQsXG59OiBEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2hJbnB1dCxcbiAgICBvcHRpb25zLFxuICAgIGRpc3BsYXllZE9wdGlvbnMsXG4gICAgbnVtYmVyT2ZPcHRpb25zLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKClcbiAgY29uc3QgW3NlYXJjaEJhckFjdGl2ZSwgc2V0U2VhcmNoQmFyQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZGVmYXVsdFNlYXJjaFZhbHVlLCBzZXREZWZhdWx0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW3NlYXJjaCwgc2V0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZz4oJycpXG4gIGNvbnN0IFttYXhXaWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVtYmVyPigpXG4gIGNvbnN0IG1vZGFsQ29udGV4dCA9IHVzZUNvbnRleHQoTW9kYWxDb250ZXh0KVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZlNlbGVjdC5jdXJyZW50ICYmIGlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9XG4gICAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSArXG4gICAgICAgIERST1BET1dOX01BWF9IRUlHSFQgK1xuICAgICAgICBOdW1iZXIodGhlbWUuc2l6aW5nW0lOUFVUX1NJWkVfSEVJR0hUW3NpemVdXS5yZXBsYWNlKCdyZW0nLCAnJykpICogMTYgK1xuICAgICAgICBOdW1iZXIucGFyc2VJbnQodGhlbWUuc3BhY2VbJzUnXSwgMTApXG4gICAgICBjb25zdCBvdmVyZmxvdyA9IHBvc2l0aW9uIC0gd2luZG93LmlubmVySGVpZ2h0ICsgMzJcbiAgICAgIGlmIChvdmVyZmxvdyA+IDAgJiYgbW9kYWxDb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb2RhbCA9IG1vZGFsQ29udGV4dC5vcGVuZWRNb2RhbHNbMF1cbiAgICAgICAgY29uc3QgbW9kYWxFbGVtZW50ID0gY3VycmVudE1vZGFsPy5yZWYuY3VycmVudFxuXG4gICAgICAgIGlmIChtb2RhbEVsZW1lbnQpIHtcbiAgICAgICAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gbW9kYWxFbGVtZW50LnBhcmVudE5vZGUgYXMgSFRNTEVsZW1lbnRcbiAgICAgICAgICBpZiAocGFyZW50RWxlbWVudCkge1xuICAgICAgICAgICAgcGFyZW50RWxlbWVudC5zY3JvbGxCeSh7XG4gICAgICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgICAgICAgICAgdG9wOiBvdmVyZmxvdyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Ugd2luZG93LnNjcm9sbEJ5KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCB0b3A6IG92ZXJmbG93IH0pXG4gICAgICB9XG4gICAgfVxuICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2lzRHJvcGRvd25WaXNpYmxlLCByZWZTZWxlY3QsIHNpemUsIHJlZi5jdXJyZW50XSlcblxuICBjb25zdCByZXNpemVEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICByZWZTZWxlY3QuY3VycmVudCAmJlxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiAwXG4gICAgKSB7XG4gICAgICBzZXRXaWR0aChyZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aClcbiAgICB9XG4gIH0sIFtyZWZTZWxlY3RdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVzaXplRHJvcGRvd24oKVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZURyb3Bkb3duKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcbiAgfSwgW3Jlc2l6ZURyb3Bkb3duXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2VhcmNoSW5wdXQpIHtcbiAgICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gICAgfVxuICB9LCBbb25TZWFyY2gsIG9wdGlvbnMsIHNlYXJjaElucHV0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIHNldFNlYXJjaCgnJylcbiAgICB9XG5cbiAgICBpZiAoIXNlYXJjaGFibGUpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICBoYW5kbGVLZXlEb3duKFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICksXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICghc2VhcmNoYWJsZSkge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgICBoYW5kbGVLZXlEb3duKFxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICByZWYsXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgIG9wdGlvbnMsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoLFxuICAgIHJlZlNlbGVjdCxcbiAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgIHNlYXJjaGFibGUsXG4gIF0pXG5cbiAgLy8gTm8gZGF0YSBpcyBkaXNwbGF5ZWQgKGJlY2F1c2Ugb2YgdGhlIHNlYXJjaCBvciBiZWNhdXNlIG5vIGRhdGEgaXMgcHJvdmlkZWQpXG4gIC8vIFNldCB0byB0cnVlIHdoZW4gbm9EYXRhIGJ5IGRlZmF1bHRcbiAgY29uc3QgaXNFbXB0eSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChudW1iZXJPZk9wdGlvbnMgPT09IDApIHJldHVybiB0cnVlXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGxheWVkT3B0aW9ucykpIHtcbiAgICAgIHJldHVybiBkaXNwbGF5ZWRPcHRpb25zLmxlbmd0aCA9PT0gMFxuICAgIH1cbiAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgICBpZiAoZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9LCBbZGlzcGxheWVkT3B0aW9ucywgbnVtYmVyT2ZPcHRpb25zXSlcblxuICBjb25zdCBjb21wdXRlZEZvb3RlciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChmb290ZXIgJiYgIWlzRW1wdHkpIHtcbiAgICAgIGlmICh0eXBlb2YgZm9vdGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFBvcHVwRm9vdGVyPntmb290ZXIoKCkgPT4gc2V0SXNEcm9wZG93blZpc2libGUoZmFsc2UpKX08L1BvcHVwRm9vdGVyPlxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiA8UG9wdXBGb290ZXI+e2Zvb3Rlcn08L1BvcHVwRm9vdGVyPlxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH0sIFtpc0VtcHR5LCBmb290ZXIsIHNldElzRHJvcGRvd25WaXNpYmxlXSlcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRQb3B1cFxuICAgICAgYWxpZ249e2Ryb3Bkb3duQWxpZ24gPz8gJ3N0YXJ0J31cbiAgICAgIGNvbnRhaW5lckZ1bGxXaWR0aFxuICAgICAgZGVib3VuY2VEZWxheT17MH1cbiAgICAgIGRpc2FibGVBbmltYXRpb25cbiAgICAgIGhhc0Fycm93PXtmYWxzZX1cbiAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZVxuICAgICAgbWF4V2lkdGg9e21heFdpZHRoID8/IHJlZlNlbGVjdC5jdXJyZW50Py5vZmZzZXRXaWR0aH1cbiAgICAgIG9uQ2xvc2U9eygpID0+IHNldElzRHJvcGRvd25WaXNpYmxlKGZhbHNlKX1cbiAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICBwb3J0YWxUYXJnZXQ9e3BvcnRhbFRhcmdldH1cbiAgICAgIHJlZj17cmVmfVxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICB0ZXh0PXtcbiAgICAgICAgPFN0YWNrPlxuICAgICAgICAgIHtzZWFyY2hhYmxlICYmICFpc0xvYWRpbmcgJiYgbnVtYmVyT2ZPcHRpb25zID49IDYgPyAoXG4gICAgICAgICAgICA8U2VhcmNoQmFyRHJvcGRvd25cbiAgICAgICAgICAgICAgZGlzcGxheWVkT3B0aW9ucz17ZGlzcGxheWVkT3B0aW9uc31cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICBzZXRTZWFyY2hCYXJBY3RpdmU9e3NldFNlYXJjaEJhckFjdGl2ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPENyZWF0ZURyb3Bkb3duXG4gICAgICAgICAgICBkZWZhdWx0U2VhcmNoVmFsdWU9e2RlZmF1bHRTZWFyY2hWYWx1ZX1cbiAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgIGVtcHR5U3RhdGU9e2VtcHR5U3RhdGV9XG4gICAgICAgICAgICBpc0VtcHR5PXtpc0VtcHR5fVxuICAgICAgICAgICAgaXNMb2FkaW5nPXtpc0xvYWRpbmd9XG4gICAgICAgICAgICBsb2FkTW9yZT17bG9hZE1vcmV9XG4gICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtjb21wdXRlZEZvb3Rlcn1cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIH1cbiAgICAgIHZpc2libGU9e2lzRHJvcGRvd25WaXNpYmxlfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1N0eWxlZFBvcHVwPlxuICApXG59XG4iXX0= */"));
127
128
  const PopupFooter = /* @__PURE__ */ _styled("div", process.env.NODE_ENV === "production" ? {
128
129
  target: "e12qyldb3"
129
130
  } : {
@@ -139,7 +140,7 @@ const PopupFooter = /* @__PURE__ */ _styled("div", process.env.NODE_ENV === "pro
139
140
  theme
140
141
  }) => theme.space[2], ";box-shadow:", ({
141
142
  theme
142
- }) => theme.shadows.dropdown, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxSzhCIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIENvbXBvbmVudFByb3BzLFxuICBEaXNwYXRjaCxcbiAgS2V5Ym9hcmRFdmVudCxcbiAgUmVhY3ROb2RlLFxuICBSZWZPYmplY3QsXG4gIFNldFN0YXRlQWN0aW9uLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAnLi4vQ2hlY2tib3gnXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uL1BvcHVwJ1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuLi9Ta2VsZXRvbidcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnLi4vU3RhY2snXG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vVGV4dCdcbmltcG9ydCB7IERpc3BsYXlPcHRpb24gfSBmcm9tICcuL0Ryb3Bkb3duT3B0aW9uJ1xuaW1wb3J0IHsgU2VhcmNoQmFyRHJvcGRvd24gfSBmcm9tICcuL1NlYXJjaEJhckRyb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2VsZWN0SW5wdXQgfSBmcm9tICcuL1NlbGVjdElucHV0UHJvdmlkZXInXG5pbXBvcnQgdHlwZSB7IERhdGFUeXBlLCBPcHRpb25UeXBlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IElOUFVUX1NJWkVfSEVJR0hUIH0gZnJvbSAnLi90eXBlcydcblxuY29uc3QgRFJPUERPV05fTUFYX0hFSUdIVCA9IDI1NlxuXG5leHBvcnQgdHlwZSBEcm9wZG93blByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBzZWFyY2hhYmxlOiBib29sZWFuXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmdcbiAgZm9vdGVyPzogKChjbG9zZURyb3Bkb3duOiAoKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpIHwgUmVhY3ROb2RlXG4gIHJlZlNlbGVjdDogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbiAgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJ1xuICBkcm9wZG93bkFsaWduPzogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBvcHVwPlsnYWxpZ24nXVxuICBwb3J0YWxUYXJnZXQ/OiBDb21wb25lbnRQcm9wczx0eXBlb2YgUG9wdXA+Wydwb3J0YWxUYXJnZXQnXVxufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVEcm9wZG93blByb3BzID0ge1xuICBpc0VtcHR5OiBib29sZWFuXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBsb2FkTW9yZT86IFJlYWN0Tm9kZVxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCdcbiAgZGVmYXVsdFNlYXJjaFZhbHVlOiBzdHJpbmcgfCBudWxsXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbn1cblxuY29uc3QgTk9OX1NFQVJDSEFCTEVfS0VZUyA9IFtcbiAgJ1RhYicsXG4gICcgJyxcbiAgJ0VudGVyJyxcbiAgJ0NhcHNMb2NrJyxcbiAgJ1NoaWZ0JyxcbiAgJ0Fycm93RG93bicsXG4gICdBcnJvd1VwJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0VzY2FwZScsXG5dXG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKFBvcHVwKWBcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBwYWRkaW5nLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbiAgcGFkZGluZy10b3A6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX07XG5cbiAgJltkYXRhLWdyb3VwZWQ9XCJ0cnVlXCJdIHtcbiAgICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIH1cbmBcbmNvbnN0IERyb3Bkb3duR3JvdXAgPSBzdHlsZWQuYnV0dG9uPHsgJ2RhdGEtc2VsZWN0Z3JvdXAnOiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBwYWRkaW5nLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBoZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbNF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjI1J119O1xuXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgICBib3JkZXItbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfSBzb2xpZCAkeyh7IHRoZW1lIH0pID0+XG4gICAgICB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kSG92ZXJ9O1xuICB9XG5gXG5jb25zdCBEcm9wZG93bkdyb3VwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcblxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzEuNSddfSAkeyh7IHRoZW1lIH0pID0+XG4gICAgdGhlbWUuc3BhY2VbJzInXX07XG4gIG1hcmdpbi1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjUnXX07XG4gIG1hcmdpbi1yaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuXG4gIGNvbG9yOiAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgYm9yZGVyOiAxcHggdHJhbnNwYXJlbnQgc29saWQ7XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICB9XG5cbiAgJlthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kRGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHREaXNhYmxlZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdOmhvdmVyLCBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICAgIHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdEaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmBcblxuY29uc3QgUG9wdXBGb290ZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfVxuICAgICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMS41XX0gJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2hhZG93cy5kcm9wZG93bn07XG5gXG5jb25zdCBTdHlsZWRDaGVja2JveCA9IHN0eWxlZChDaGVja2JveClgXG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAgLy8gcG9pbnRlci1ldmVudHM6IG5vbmUgcHJldmVudHMgYW55IGVycm9yIHdoZW4gdXNpbmcgdGhlIGNoZWNrYm94IGluIGEgZm9ybSBzaW5jZSBpdCBpcyBhbiB1bm5hbWVkIGlucHV0XG5cbmNvbnN0IEVtcHR5U3RhdGUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbmBcbmNvbnN0IExvYWRNb3JlID0gc3R5bGVkKFN0YWNrKWBcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbmBcblxuY29uc3QgbW92ZUZvY3VzRG93biA9ICgpID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgJyNpdGVtcyA+IGRpdltyb2xlPVwib3B0aW9uXCJdOm5vdChbZGlzYWJsZWRdKScsXG4gIClcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnM/Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBsaXN0TGVuZ3RoID0gb3B0aW9ucy5sZW5ndGhcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbbGlzdExlbmd0aCAtIDFdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpICsgMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IG1vdmVGb2N1c1VwID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoYWN0aXZlSXRlbSA9PT0gb3B0aW9uc1tpXSAmJiBhY3RpdmVJdGVtICE9PSBvcHRpb25zWzBdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpIC0gMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IGhhbmRsZUtleURvd25TZWxlY3QgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c0Rvd24oKVxuICB9XG5cbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c1VwKClcbiAgfVxuXG4gIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgIC8vIE5vIHNjcm9sbFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxufVxuXG5jb25zdCBoYW5kbGVLZXlEb3duID0gKFxuICBldmVudDogZ2xvYmFsVGhpcy5LZXlib2FyZEV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maW5kKG9wdGlvbiA9PlxuICAgICAgICBvcHRpb24uc2VhcmNoVGV4dFxuICAgICAgICAgID8gb3B0aW9uLnNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpXG4gICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgKVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IENyZWF0ZURyb3Bkb3duID0gKHtcbiAgaXNFbXB0eSxcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZSxcbiAgaXNMb2FkaW5nLFxufTogQ3JlYXRlRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgb25DaGFuZ2UsXG4gICAgb3B0aW9ucyxcbiAgICBtdWx0aXNlbGVjdCxcbiAgICBzZWxlY3RBbGwsXG4gICAgc2VsZWN0QWxsR3JvdXAsXG4gICAgZGlzcGxheWVkT3B0aW9ucyxcbiAgICBzZXRTZWxlY3RlZERhdGEsXG4gICAgc2VsZWN0ZWREYXRhLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCBmb2N1c2VkSXRlbVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0U2VhcmNoVmFsdWUgJiYgZm9jdXNlZEl0ZW1SZWY/LmN1cnJlbnQpIHtcbiAgICAgIGZvY3VzZWRJdGVtUmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRTZWFyY2hWYWx1ZV0pXG5cbiAgaWYgKGlzRW1wdHkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEVtcHR5U3RhdGUgZ2FwPXsyfSBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgIHtlbXB0eVN0YXRlID8/IChcbiAgICAgICAgICA8VGV4dCB2YXJpYW50PVwiYm9keVN0cm9uZ1wiIGFzPVwicFwiPlxuICAgICAgICAgICAgTm8gb3B0aW9uc1xuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKX1cbiAgICAgIDwvRW1wdHlTdGF0ZT5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbGljayA9IChjbGlja2VkT3B0aW9uOiBPcHRpb25UeXBlLCBncm91cD86IHN0cmluZykgPT4ge1xuICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RPcHRpb24nLCBjbGlja2VkT3B0aW9uLCBncm91cCB9KVxuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhjbGlja2VkT3B0aW9uLnZhbHVlKSkge1xuICAgICAgICBvbkNoYW5nZT8uKFxuICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5maWx0ZXIoXG4gICAgICAgICAgICB2YWwgPT4gdmFsICE9PSBjbGlja2VkT3B0aW9uLnZhbHVlLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcywgY2xpY2tlZE9wdGlvbi52YWx1ZV0pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uQ2hhbmdlPy4oY2xpY2tlZE9wdGlvbi52YWx1ZSlcbiAgICB9XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUobXVsdGlzZWxlY3QpIC8vIGhpZGUgdGhlIGRyb3Bkb3duIG9uIGNsaWNrIHdoZW4gc2luZ2xlIHNlbGVjdCBvbmx5XG4gIH1cblxuICBjb25zdCBzZWxlY3RBbGxPcHRpb25zID0gKCkgPT4ge1xuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdEFsbCcgfSlcbiAgICAgIGlmIChzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWQgJiYgb25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UoW10pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhbGxWYWx1ZXM6IE9wdGlvblR5cGVbXSA9IFtdXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT5cbiAgICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGFsbFZhbHVlcy5wdXNoKG9wdGlvbilcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9ucy5tYXAob3B0aW9uID0+IGFsbFZhbHVlcy5wdXNoKG9wdGlvbikpXG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2U/LihhbGxWYWx1ZXMubWFwKHZhbHVlID0+IHZhbHVlLnZhbHVlKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RHcm91cCA9IChncm91cDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0R3JvdXAnLCBzZWxlY3RlZEdyb3VwOiBncm91cCB9KVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZERhdGEuc2VsZWN0ZWRHcm91cHMuaW5jbHVkZXMoZ3JvdXApKSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXS5maWx0ZXIoXG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlID0+XG4gICAgICAgICAgICAgICFvcHRpb25zW2dyb3VwXS5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkVmFsdWVzID0gWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlc11cblxuICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT5cbiAgICAgICAgICAgIG5ld1NlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgfHwgb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG5ld1NlbGVjdGVkVmFsdWVzLnB1c2gob3B0aW9uLnZhbHVlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgb25DaGFuZ2U/LihuZXdTZWxlY3RlZFZhbHVlcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAhQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSA/IChcbiAgICA8RHJvcGRvd25Db250YWluZXJcbiAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgIGlkPVwic2VsZWN0LWRyb3Bkb3duXCJcbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93blNlbGVjdH1cbiAgICAgIGRhdGEtZ3JvdXBlZFxuICAgID5cbiAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGwtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtncm91cC50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFzPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwV3JhcHBlcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPVwiMC4yNVwiPlxuICAgICAgICAgICAgICAgIHtkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5tYXAoKG9wdGlvbiwgaW5kZXhPcHRpb24pID0+IChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAga2V5PXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9eyEhb3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4T3B0aW9ufWB9XG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICkpfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApIDogKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZ2FwPXswLjI1fVxuICAgICAgZGF0YS1ncm91cGVkPXtmYWxzZX1cbiAgICA+XG4gICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiIGdhcD17MC4yNX0gdGFiSW5kZXg9ey0xfT5cbiAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICBhcmlhLWRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gc2VsZWN0QWxsT3B0aW9ucygpIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdGFjayBkaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHlTbWFsbFwiXG4gICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgcHJvbWluZW5jZT1cIndlYWtcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9ezAuMjV9PlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgIGtleT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPXshIW9wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBoYW5kbGVDbGljayhvcHRpb24pIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICApKVxuICAgICAgICApfVxuICAgICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICAgIDwvU3RhY2s+XG4gICAgPC9Ecm9wZG93bkNvbnRhaW5lcj5cbiAgKVxufVxuZXhwb3J0IGNvbnN0IERyb3Bkb3duID0gKHtcbiAgY2hpbGRyZW4sXG4gIGVtcHR5U3RhdGUsXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uLFxuICBzZWFyY2hhYmxlLFxuICBwbGFjZWhvbGRlcixcbiAgZm9vdGVyLFxuICByZWZTZWxlY3QsXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGlzTG9hZGluZyxcbiAgc2l6ZSxcbiAgZHJvcGRvd25BbGlnbixcbiAgcG9ydGFsVGFyZ2V0LFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZlNlbGVjdC5jdXJyZW50ICYmIGlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9XG4gICAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSArXG4gICAgICAgIERST1BET1dOX01BWF9IRUlHSFQgK1xuICAgICAgICBOdW1iZXIodGhlbWUuc2l6aW5nW0lOUFVUX1NJWkVfSEVJR0hUW3NpemVdXS5yZXBsYWNlKCdyZW0nLCAnJykpICogMTYgK1xuICAgICAgICBOdW1iZXIucGFyc2VJbnQodGhlbWUuc3BhY2VbJzUnXSwgMTApXG4gICAgICBjb25zdCBvdmVyZmxvdyA9IHBvc2l0aW9uIC0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7XG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrZHJvcC1tb2RhbCcpXG5cbiAgICAgICAgaWYgKG1vZGFsRWxlbWVudCkge1xuICAgICAgICAgIG1vZGFsRWxlbWVudC5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgICB9IGVsc2Ugd2luZG93LnNjcm9sbEJ5KHsgdG9wOiBvdmVyZmxvdywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pXG4gICAgICB9XG4gICAgfVxuICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2lzRHJvcGRvd25WaXNpYmxlLCByZWZTZWxlY3QsIHNpemUsIHJlZi5jdXJyZW50XSlcblxuICBjb25zdCByZXNpemVEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICByZWZTZWxlY3QuY3VycmVudCAmJlxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiAwXG4gICAgKSB7XG4gICAgICBzZXRXaWR0aChyZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aClcbiAgICB9XG4gIH0sIFtyZWZTZWxlY3RdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVzaXplRHJvcGRvd24oKVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZURyb3Bkb3duKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcbiAgfSwgW3Jlc2l6ZURyb3Bkb3duXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2VhcmNoSW5wdXQpIHtcbiAgICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gICAgfVxuICB9LCBbb25TZWFyY2gsIG9wdGlvbnMsIHNlYXJjaElucHV0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIHNldFNlYXJjaCgnJylcbiAgICB9XG5cbiAgICBpZiAoIXNlYXJjaGFibGUpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICBoYW5kbGVLZXlEb3duKFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICksXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICghc2VhcmNoYWJsZSkge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgICBoYW5kbGVLZXlEb3duKFxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICByZWYsXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgIG9wdGlvbnMsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoLFxuICAgIHJlZlNlbGVjdCxcbiAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgIHNlYXJjaGFibGUsXG4gIF0pXG5cbiAgLy8gTm8gZGF0YSBpcyBkaXNwbGF5ZWQgKGJlY2F1c2Ugb2YgdGhlIHNlYXJjaCBvciBiZWNhdXNlIG5vIGRhdGEgaXMgcHJvdmlkZWQpXG4gIC8vIFNldCB0byB0cnVlIHdoZW4gbm9EYXRhIGJ5IGRlZmF1bHRcbiAgY29uc3QgaXNFbXB0eSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChudW1iZXJPZk9wdGlvbnMgPT09IDApIHJldHVybiB0cnVlXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGxheWVkT3B0aW9ucykpIHtcbiAgICAgIHJldHVybiBkaXNwbGF5ZWRPcHRpb25zLmxlbmd0aCA9PT0gMFxuICAgIH1cbiAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgICBpZiAoZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9LCBbZGlzcGxheWVkT3B0aW9ucywgbnVtYmVyT2ZPcHRpb25zXSlcblxuICBjb25zdCBjb21wdXRlZEZvb3RlciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChmb290ZXIgJiYgIWlzRW1wdHkpIHtcbiAgICAgIGlmICh0eXBlb2YgZm9vdGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFBvcHVwRm9vdGVyPntmb290ZXIoKCkgPT4gc2V0SXNEcm9wZG93blZpc2libGUoZmFsc2UpKX08L1BvcHVwRm9vdGVyPlxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiA8UG9wdXBGb290ZXI+e2Zvb3Rlcn08L1BvcHVwRm9vdGVyPlxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH0sIFtpc0VtcHR5LCBmb290ZXIsIHNldElzRHJvcGRvd25WaXNpYmxlXSlcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRQb3B1cFxuICAgICAgdmlzaWJsZT17aXNEcm9wZG93blZpc2libGV9XG4gICAgICB0ZXh0PXtcbiAgICAgICAgPFN0YWNrPlxuICAgICAgICAgIHtzZWFyY2hhYmxlICYmICFpc0xvYWRpbmcgJiYgbnVtYmVyT2ZPcHRpb25zID49IDYgPyAoXG4gICAgICAgICAgICA8U2VhcmNoQmFyRHJvcGRvd25cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zPXtkaXNwbGF5ZWRPcHRpb25zfVxuICAgICAgICAgICAgICBzZXRTZWFyY2hCYXJBY3RpdmU9e3NldFNlYXJjaEJhckFjdGl2ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPENyZWF0ZURyb3Bkb3duXG4gICAgICAgICAgICBpc0VtcHR5PXtpc0VtcHR5fVxuICAgICAgICAgICAgZW1wdHlTdGF0ZT17ZW1wdHlTdGF0ZX1cbiAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgIGxvYWRNb3JlPXtsb2FkTW9yZX1cbiAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaFZhbHVlPXtkZWZhdWx0U2VhcmNoVmFsdWV9XG4gICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtjb21wdXRlZEZvb3Rlcn1cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIH1cbiAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICBkaXNhYmxlQW5pbWF0aW9uXG4gICAgICBtYXhXaWR0aD17bWF4V2lkdGggPz8gcmVmU2VsZWN0LmN1cnJlbnQ/Lm9mZnNldFdpZHRofVxuICAgICAgaGFzQXJyb3c9e2ZhbHNlfVxuICAgICAgcmVmPXtyZWZ9XG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgIGRlYm91bmNlRGVsYXk9ezB9XG4gICAgICBjb250YWluZXJGdWxsV2lkdGhcbiAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZVxuICAgICAgb25DbG9zZT17KCkgPT4gc2V0SXNEcm9wZG93blZpc2libGUoZmFsc2UpfVxuICAgICAgYWxpZ249e2Ryb3Bkb3duQWxpZ24gPz8gJ3N0YXJ0J31cbiAgICAgIHBvcnRhbFRhcmdldD17cG9ydGFsVGFyZ2V0fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1N0eWxlZFBvcHVwPlxuICApXG59XG4iXX0= */"));
143
+ }) => theme.shadows.dropdown, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2SzhCIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgdHlwZSB7XG4gIENvbXBvbmVudFByb3BzLFxuICBEaXNwYXRjaCxcbiAgS2V5Ym9hcmRFdmVudCxcbiAgUmVhY3ROb2RlLFxuICBSZWZPYmplY3QsXG4gIFNldFN0YXRlQWN0aW9uLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IE1vZGFsQ29udGV4dCB9IGZyb20gJy4uL01vZGFsL01vZGFsUHJvdmlkZXInXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uL1BvcHVwJ1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuLi9Ta2VsZXRvbidcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnLi4vU3RhY2snXG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vVGV4dCdcbmltcG9ydCB7IERpc3BsYXlPcHRpb24gfSBmcm9tICcuL0Ryb3Bkb3duT3B0aW9uJ1xuaW1wb3J0IHsgU2VhcmNoQmFyRHJvcGRvd24gfSBmcm9tICcuL1NlYXJjaEJhckRyb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2VsZWN0SW5wdXQgfSBmcm9tICcuL1NlbGVjdElucHV0UHJvdmlkZXInXG5pbXBvcnQgdHlwZSB7IERhdGFUeXBlLCBPcHRpb25UeXBlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IElOUFVUX1NJWkVfSEVJR0hUIH0gZnJvbSAnLi90eXBlcydcblxuY29uc3QgRFJPUERPV05fTUFYX0hFSUdIVCA9IDI1NlxuXG5leHBvcnQgdHlwZSBEcm9wZG93blByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBzZWFyY2hhYmxlOiBib29sZWFuXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmdcbiAgZm9vdGVyPzogKChjbG9zZURyb3Bkb3duOiAoKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpIHwgUmVhY3ROb2RlXG4gIHJlZlNlbGVjdDogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbiAgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJ1xuICBkcm9wZG93bkFsaWduPzogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBvcHVwPlsnYWxpZ24nXVxuICBwb3J0YWxUYXJnZXQ/OiBDb21wb25lbnRQcm9wczx0eXBlb2YgUG9wdXA+Wydwb3J0YWxUYXJnZXQnXVxufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVEcm9wZG93blByb3BzID0ge1xuICBpc0VtcHR5OiBib29sZWFuXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBsb2FkTW9yZT86IFJlYWN0Tm9kZVxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCdcbiAgZGVmYXVsdFNlYXJjaFZhbHVlOiBzdHJpbmcgfCBudWxsXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbn1cblxuY29uc3QgTk9OX1NFQVJDSEFCTEVfS0VZUyA9IFtcbiAgJ1RhYicsXG4gICcgJyxcbiAgJ0VudGVyJyxcbiAgJ0NhcHNMb2NrJyxcbiAgJ1NoaWZ0JyxcbiAgJ0Fycm93RG93bicsXG4gICdBcnJvd1VwJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0VzY2FwZScsXG5dXG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKFBvcHVwKWBcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBwYWRkaW5nLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbiAgcGFkZGluZy10b3A6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX07XG5cbiAgJltkYXRhLWdyb3VwZWQ9XCJ0cnVlXCJdIHtcbiAgICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIH1cbmBcbmNvbnN0IERyb3Bkb3duR3JvdXAgPSBzdHlsZWQuYnV0dG9uPHsgJ2RhdGEtc2VsZWN0Z3JvdXAnOiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBwYWRkaW5nLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBoZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbNF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjI1J119O1xuXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgICBib3JkZXItbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfSBzb2xpZCAkeyh7IHRoZW1lIH0pID0+XG4gICAgICB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kSG92ZXJ9O1xuICB9XG5gXG5jb25zdCBEcm9wZG93bkdyb3VwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcblxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzEuNSddfSAkeyh7IHRoZW1lIH0pID0+XG4gICAgdGhlbWUuc3BhY2VbJzInXX07XG4gIG1hcmdpbi1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjUnXX07XG4gIG1hcmdpbi1yaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuXG4gIGNvbG9yOiAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgYm9yZGVyOiAxcHggdHJhbnNwYXJlbnQgc29saWQ7XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICB9XG5cbiAgJlthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kRGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHREaXNhYmxlZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdOmhvdmVyLCBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICAgIHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdEaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmBcblxuY29uc3QgUG9wdXBGb290ZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfVxuICAgICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMS41XX0gJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2hhZG93cy5kcm9wZG93bn07XG5gXG5jb25zdCBTdHlsZWRDaGVja2JveCA9IHN0eWxlZChDaGVja2JveClgXG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAgLy8gcG9pbnRlci1ldmVudHM6IG5vbmUgcHJldmVudHMgYW55IGVycm9yIHdoZW4gdXNpbmcgdGhlIGNoZWNrYm94IGluIGEgZm9ybSBzaW5jZSBpdCBpcyBhbiB1bm5hbWVkIGlucHV0XG5cbmNvbnN0IEVtcHR5U3RhdGUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbmBcbmNvbnN0IExvYWRNb3JlID0gc3R5bGVkKFN0YWNrKWBcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbmBcblxuY29uc3QgbW92ZUZvY3VzRG93biA9ICgpID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgJyNpdGVtcyA+IGRpdltyb2xlPVwib3B0aW9uXCJdOm5vdChbZGlzYWJsZWRdKScsXG4gIClcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnM/Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBsaXN0TGVuZ3RoID0gb3B0aW9ucy5sZW5ndGhcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbbGlzdExlbmd0aCAtIDFdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpICsgMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IG1vdmVGb2N1c1VwID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoYWN0aXZlSXRlbSA9PT0gb3B0aW9uc1tpXSAmJiBhY3RpdmVJdGVtICE9PSBvcHRpb25zWzBdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpIC0gMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IGhhbmRsZUtleURvd25TZWxlY3QgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c0Rvd24oKVxuICB9XG5cbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c1VwKClcbiAgfVxuXG4gIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgIC8vIE5vIHNjcm9sbFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxufVxuXG5jb25zdCBoYW5kbGVLZXlEb3duID0gKFxuICBldmVudDogZ2xvYmFsVGhpcy5LZXlib2FyZEV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maW5kKG9wdGlvbiA9PlxuICAgICAgICBvcHRpb24uc2VhcmNoVGV4dFxuICAgICAgICAgID8gb3B0aW9uLnNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpXG4gICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgKVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IENyZWF0ZURyb3Bkb3duID0gKHtcbiAgaXNFbXB0eSxcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZSxcbiAgaXNMb2FkaW5nLFxufTogQ3JlYXRlRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgb25DaGFuZ2UsXG4gICAgb3B0aW9ucyxcbiAgICBtdWx0aXNlbGVjdCxcbiAgICBzZWxlY3RBbGwsXG4gICAgc2VsZWN0QWxsR3JvdXAsXG4gICAgZGlzcGxheWVkT3B0aW9ucyxcbiAgICBzZXRTZWxlY3RlZERhdGEsXG4gICAgc2VsZWN0ZWREYXRhLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCBmb2N1c2VkSXRlbVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0U2VhcmNoVmFsdWUgJiYgZm9jdXNlZEl0ZW1SZWY/LmN1cnJlbnQpIHtcbiAgICAgIGZvY3VzZWRJdGVtUmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRTZWFyY2hWYWx1ZV0pXG5cbiAgaWYgKGlzRW1wdHkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEVtcHR5U3RhdGUgYWxpZ25JdGVtcz1cImNlbnRlclwiIGdhcD17Mn0+XG4gICAgICAgIHtlbXB0eVN0YXRlID8/IChcbiAgICAgICAgICA8VGV4dCBhcz1cInBcIiB2YXJpYW50PVwiYm9keVN0cm9uZ1wiPlxuICAgICAgICAgICAgTm8gb3B0aW9uc1xuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKX1cbiAgICAgIDwvRW1wdHlTdGF0ZT5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbGljayA9IChjbGlja2VkT3B0aW9uOiBPcHRpb25UeXBlLCBncm91cD86IHN0cmluZykgPT4ge1xuICAgIHNldFNlbGVjdGVkRGF0YSh7IGNsaWNrZWRPcHRpb24sIGdyb3VwLCB0eXBlOiAnc2VsZWN0T3B0aW9uJyB9KVxuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhjbGlja2VkT3B0aW9uLnZhbHVlKSkge1xuICAgICAgICBvbkNoYW5nZT8uKFxuICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5maWx0ZXIoXG4gICAgICAgICAgICB2YWwgPT4gdmFsICE9PSBjbGlja2VkT3B0aW9uLnZhbHVlLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcywgY2xpY2tlZE9wdGlvbi52YWx1ZV0pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uQ2hhbmdlPy4oY2xpY2tlZE9wdGlvbi52YWx1ZSlcbiAgICB9XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUobXVsdGlzZWxlY3QpIC8vIGhpZGUgdGhlIGRyb3Bkb3duIG9uIGNsaWNrIHdoZW4gc2luZ2xlIHNlbGVjdCBvbmx5XG4gIH1cblxuICBjb25zdCBzZWxlY3RBbGxPcHRpb25zID0gKCkgPT4ge1xuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdEFsbCcgfSlcbiAgICAgIGlmIChzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWQgJiYgb25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UoW10pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhbGxWYWx1ZXM6IE9wdGlvblR5cGVbXSA9IFtdXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT5cbiAgICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGFsbFZhbHVlcy5wdXNoKG9wdGlvbilcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9ucy5tYXAob3B0aW9uID0+IGFsbFZhbHVlcy5wdXNoKG9wdGlvbikpXG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2U/LihhbGxWYWx1ZXMubWFwKHZhbHVlID0+IHZhbHVlLnZhbHVlKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RHcm91cCA9IChncm91cDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyBzZWxlY3RlZEdyb3VwOiBncm91cCwgdHlwZTogJ3NlbGVjdEdyb3VwJyB9KVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZERhdGEuc2VsZWN0ZWRHcm91cHMuaW5jbHVkZXMoZ3JvdXApKSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXS5maWx0ZXIoXG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlID0+XG4gICAgICAgICAgICAgICFvcHRpb25zW2dyb3VwXS5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkVmFsdWVzID0gWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlc11cblxuICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT5cbiAgICAgICAgICAgIG5ld1NlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgfHwgb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG5ld1NlbGVjdGVkVmFsdWVzLnB1c2gob3B0aW9uLnZhbHVlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgb25DaGFuZ2U/LihuZXdTZWxlY3RlZFZhbHVlcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAhQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSA/IChcbiAgICA8RHJvcGRvd25Db250YWluZXJcbiAgICAgIGRhdGEtZ3JvdXBlZFxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgID5cbiAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgdmFyaWFudD1cImJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHlTbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBnYXA9ezAuMjV9IGtleT17Z3JvdXB9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2Bncm91cC0ke2luZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RHcm91cChncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9e3NlbGVjdEFsbEdyb3VwID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RBbGxHcm91cCA/IGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtncm91cC50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwV3JhcHBlcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTdGFjayBnYXA9XCIwLjI1XCIgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICAgIHtkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5tYXAoKG9wdGlvbiwgaW5kZXhPcHRpb24pID0+IChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2BvcHRpb24tJHtvcHRpb24udmFsdWV9YH1cbiAgICAgICAgICAgICAgICAgICAgaWQ9e2BvcHRpb24tJHtpbmRleE9wdGlvbn1gfVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlZj17XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSBkZWZhdWx0U2VhcmNoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uc2VhcmNoVGV4dCA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGZvY3VzZWRJdGVtUmVmXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9eyFvcHRpb24uZGlzYWJsZWQgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICkpfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApIDogKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgZGF0YS1ncm91cGVkPXtmYWxzZX1cbiAgICAgIGdhcD17MC4yNX1cbiAgICAgIGlkPVwic2VsZWN0LWRyb3Bkb3duXCJcbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93blNlbGVjdH1cbiAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICA+XG4gICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICA8U3RhY2sgZ2FwPXswLjI1fSBpZD1cIml0ZW1zXCIgdGFiSW5kZXg9ey0xfT5cbiAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICBhcmlhLWRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gc2VsZWN0QWxsT3B0aW9ucygpIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGwtY2hlY2tib3hcIlxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdGFjayBkaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgdmFyaWFudD1cImJvZHlcIj5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFN0YWNrIGdhcD17MC4yNX0gaWQ9XCJpdGVtc1wiPlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9eyEhb3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAga2V5PXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBoYW5kbGVDbGljayhvcHRpb24pIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlZj17XG4gICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSBkZWZhdWx0U2VhcmNoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICBvcHRpb24uc2VhcmNoVGV4dCA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlXG4gICAgICAgICAgICAgICAgICA/IGZvY3VzZWRJdGVtUmVmXG4gICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9eyFvcHRpb24uZGlzYWJsZWQgPyAwIDogLTF9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICApKVxuICAgICAgICApfVxuICAgICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICAgIDwvU3RhY2s+XG4gICAgPC9Ecm9wZG93bkNvbnRhaW5lcj5cbiAgKVxufVxuZXhwb3J0IGNvbnN0IERyb3Bkb3duID0gKHtcbiAgY2hpbGRyZW4sXG4gIGVtcHR5U3RhdGUsXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uLFxuICBzZWFyY2hhYmxlLFxuICBwbGFjZWhvbGRlcixcbiAgZm9vdGVyLFxuICByZWZTZWxlY3QsXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGlzTG9hZGluZyxcbiAgc2l6ZSxcbiAgZHJvcGRvd25BbGlnbixcbiAgcG9ydGFsVGFyZ2V0LFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuICBjb25zdCBtb2RhbENvbnRleHQgPSB1c2VDb250ZXh0KE1vZGFsQ29udGV4dClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWZTZWxlY3QuY3VycmVudCAmJiBpc0Ryb3Bkb3duVmlzaWJsZSkge1xuICAgICAgY29uc3QgcG9zaXRpb24gPVxuICAgICAgICByZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20gK1xuICAgICAgICBEUk9QRE9XTl9NQVhfSEVJR0hUICtcbiAgICAgICAgTnVtYmVyKHRoZW1lLnNpemluZ1tJTlBVVF9TSVpFX0hFSUdIVFtzaXplXV0ucmVwbGFjZSgncmVtJywgJycpKSAqIDE2ICtcbiAgICAgICAgTnVtYmVyLnBhcnNlSW50KHRoZW1lLnNwYWNlWyc1J10sIDEwKVxuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBwb3NpdGlvbiAtIHdpbmRvdy5pbm5lckhlaWdodCArIDMyXG4gICAgICBpZiAob3ZlcmZsb3cgPiAwICYmIG1vZGFsQ29udGV4dCkge1xuICAgICAgICBjb25zdCBjdXJyZW50TW9kYWwgPSBtb2RhbENvbnRleHQub3BlbmVkTW9kYWxzWzBdXG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGN1cnJlbnRNb2RhbD8ucmVmLmN1cnJlbnRcblxuICAgICAgICBpZiAobW9kYWxFbGVtZW50KSB7XG4gICAgICAgICAgY29uc3QgcGFyZW50RWxlbWVudCA9IG1vZGFsRWxlbWVudC5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50XG4gICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuc2Nyb2xsQnkoe1xuICAgICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgICAgICAgIHRvcDogb3ZlcmZsb3csXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHdpbmRvdy5zY3JvbGxCeSh7IGJlaGF2aW9yOiAnc21vb3RoJywgdG9wOiBvdmVyZmxvdyB9KVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtpc0Ryb3Bkb3duVmlzaWJsZSwgcmVmU2VsZWN0LCBzaXplLCByZWYuY3VycmVudF0pXG5cbiAgY29uc3QgcmVzaXplRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQgJiZcbiAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoID4gMFxuICAgICkge1xuICAgICAgc2V0V2lkdGgocmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpXG4gICAgfVxuICB9LCBbcmVmU2VsZWN0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlc2l6ZURyb3Bkb3duKClcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplRHJvcGRvd24pXG4gIH0sIFtyZXNpemVEcm9wZG93bl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNlYXJjaElucHV0KSB7XG4gICAgICBvblNlYXJjaChvcHRpb25zKVxuICAgIH1cbiAgfSwgW29uU2VhcmNoLCBvcHRpb25zLCBzZWFyY2hJbnB1dF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBzZXREZWZhdWx0U2VhcmNoKG51bGwpXG4gICAgICBzZXRTZWFyY2goJycpXG4gICAgfVxuXG4gICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgc2VhcmNoLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoIXNlYXJjaGFibGUpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGV2ZW50ID0+XG4gICAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICAgICAgICAgIHNldFNlYXJjaCxcbiAgICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGlzRHJvcGRvd25WaXNpYmxlLFxuICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICBvcHRpb25zLFxuICAgIG9uU2VhcmNoLFxuICAgIHNlYXJjaCxcbiAgICByZWZTZWxlY3QsXG4gICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hhYmxlLFxuICBdKVxuXG4gIC8vIE5vIGRhdGEgaXMgZGlzcGxheWVkIChiZWNhdXNlIG9mIHRoZSBzZWFyY2ggb3IgYmVjYXVzZSBubyBkYXRhIGlzIHByb3ZpZGVkKVxuICAvLyBTZXQgdG8gdHJ1ZSB3aGVuIG5vRGF0YSBieSBkZWZhdWx0XG4gIGNvbnN0IGlzRW1wdHkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAobnVtYmVyT2ZPcHRpb25zID09PSAwKSByZXR1cm4gdHJ1ZVxuICAgIGlmIChBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gZGlzcGxheWVkT3B0aW9ucy5sZW5ndGggPT09IDBcbiAgICB9XG4gICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucylcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgICAgaWYgKGRpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfSwgW2Rpc3BsYXllZE9wdGlvbnMsIG51bWJlck9mT3B0aW9uc10pXG5cbiAgY29uc3QgY29tcHV0ZWRGb290ZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoZm9vdGVyICYmICFpc0VtcHR5KSB7XG4gICAgICBpZiAodHlwZW9mIGZvb3RlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxQb3B1cEZvb3Rlcj57Zm9vdGVyKCgpID0+IHNldElzRHJvcGRvd25WaXNpYmxlKGZhbHNlKSl9PC9Qb3B1cEZvb3Rlcj5cbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gPFBvcHVwRm9vdGVyPntmb290ZXJ9PC9Qb3B1cEZvb3Rlcj5cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9LCBbaXNFbXB0eSwgZm9vdGVyLCBzZXRJc0Ryb3Bkb3duVmlzaWJsZV0pXG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkUG9wdXBcbiAgICAgIGFsaWduPXtkcm9wZG93bkFsaWduID8/ICdzdGFydCd9XG4gICAgICBjb250YWluZXJGdWxsV2lkdGhcbiAgICAgIGRlYm91bmNlRGVsYXk9ezB9XG4gICAgICBkaXNhYmxlQW5pbWF0aW9uXG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICBoaWRlT25DbGlja091dHNpZGVcbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBvbkNsb3NlPXsoKSA9PiBzZXRJc0Ryb3Bkb3duVmlzaWJsZShmYWxzZSl9XG4gICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgcG9ydGFsVGFyZ2V0PXtwb3J0YWxUYXJnZXR9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgdGV4dD17XG4gICAgICAgIDxTdGFjaz5cbiAgICAgICAgICB7c2VhcmNoYWJsZSAmJiAhaXNMb2FkaW5nICYmIG51bWJlck9mT3B0aW9ucyA+PSA2ID8gKFxuICAgICAgICAgICAgPFNlYXJjaEJhckRyb3Bkb3duXG4gICAgICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnM9e2Rpc3BsYXllZE9wdGlvbnN9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgc2V0U2VhcmNoQmFyQWN0aXZlPXtzZXRTZWFyY2hCYXJBY3RpdmV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxDcmVhdGVEcm9wZG93blxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaFZhbHVlPXtkZWZhdWx0U2VhcmNoVmFsdWV9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICBlbXB0eVN0YXRlPXtlbXB0eVN0YXRlfVxuICAgICAgICAgICAgaXNFbXB0eT17aXNFbXB0eX1cbiAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgICAgbG9hZE1vcmU9e2xvYWRNb3JlfVxuICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7Y29tcHV0ZWRGb290ZXJ9XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICB9XG4gICAgICB2aXNpYmxlPXtpc0Ryb3Bkb3duVmlzaWJsZX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdHlsZWRQb3B1cD5cbiAgKVxufVxuIl19 */"));
143
144
  const StyledCheckbox = /* @__PURE__ */ _styled(Checkbox, process.env.NODE_ENV === "production" ? {
144
145
  target: "e12qyldb2"
145
146
  } : {
@@ -150,7 +151,7 @@ const StyledCheckbox = /* @__PURE__ */ _styled(Checkbox, process.env.NODE_ENV ==
150
151
  styles: "width:100%;position:static;text-align:left;align-items:center;pointer-events:none"
151
152
  } : {
152
153
  name: "1l9xw77",
153
- styles: "width:100%;position:static;text-align:left;align-items:center;pointer-events:none/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEyS3VDIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIENvbXBvbmVudFByb3BzLFxuICBEaXNwYXRjaCxcbiAgS2V5Ym9hcmRFdmVudCxcbiAgUmVhY3ROb2RlLFxuICBSZWZPYmplY3QsXG4gIFNldFN0YXRlQWN0aW9uLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAnLi4vQ2hlY2tib3gnXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uL1BvcHVwJ1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuLi9Ta2VsZXRvbidcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnLi4vU3RhY2snXG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vVGV4dCdcbmltcG9ydCB7IERpc3BsYXlPcHRpb24gfSBmcm9tICcuL0Ryb3Bkb3duT3B0aW9uJ1xuaW1wb3J0IHsgU2VhcmNoQmFyRHJvcGRvd24gfSBmcm9tICcuL1NlYXJjaEJhckRyb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2VsZWN0SW5wdXQgfSBmcm9tICcuL1NlbGVjdElucHV0UHJvdmlkZXInXG5pbXBvcnQgdHlwZSB7IERhdGFUeXBlLCBPcHRpb25UeXBlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IElOUFVUX1NJWkVfSEVJR0hUIH0gZnJvbSAnLi90eXBlcydcblxuY29uc3QgRFJPUERPV05fTUFYX0hFSUdIVCA9IDI1NlxuXG5leHBvcnQgdHlwZSBEcm9wZG93blByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBzZWFyY2hhYmxlOiBib29sZWFuXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmdcbiAgZm9vdGVyPzogKChjbG9zZURyb3Bkb3duOiAoKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpIHwgUmVhY3ROb2RlXG4gIHJlZlNlbGVjdDogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbiAgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJ1xuICBkcm9wZG93bkFsaWduPzogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBvcHVwPlsnYWxpZ24nXVxuICBwb3J0YWxUYXJnZXQ/OiBDb21wb25lbnRQcm9wczx0eXBlb2YgUG9wdXA+Wydwb3J0YWxUYXJnZXQnXVxufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVEcm9wZG93blByb3BzID0ge1xuICBpc0VtcHR5OiBib29sZWFuXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBsb2FkTW9yZT86IFJlYWN0Tm9kZVxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCdcbiAgZGVmYXVsdFNlYXJjaFZhbHVlOiBzdHJpbmcgfCBudWxsXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbn1cblxuY29uc3QgTk9OX1NFQVJDSEFCTEVfS0VZUyA9IFtcbiAgJ1RhYicsXG4gICcgJyxcbiAgJ0VudGVyJyxcbiAgJ0NhcHNMb2NrJyxcbiAgJ1NoaWZ0JyxcbiAgJ0Fycm93RG93bicsXG4gICdBcnJvd1VwJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0VzY2FwZScsXG5dXG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKFBvcHVwKWBcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBwYWRkaW5nLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbiAgcGFkZGluZy10b3A6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX07XG5cbiAgJltkYXRhLWdyb3VwZWQ9XCJ0cnVlXCJdIHtcbiAgICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIH1cbmBcbmNvbnN0IERyb3Bkb3duR3JvdXAgPSBzdHlsZWQuYnV0dG9uPHsgJ2RhdGEtc2VsZWN0Z3JvdXAnOiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBwYWRkaW5nLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBoZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbNF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjI1J119O1xuXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgICBib3JkZXItbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfSBzb2xpZCAkeyh7IHRoZW1lIH0pID0+XG4gICAgICB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kSG92ZXJ9O1xuICB9XG5gXG5jb25zdCBEcm9wZG93bkdyb3VwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcblxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzEuNSddfSAkeyh7IHRoZW1lIH0pID0+XG4gICAgdGhlbWUuc3BhY2VbJzInXX07XG4gIG1hcmdpbi1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjUnXX07XG4gIG1hcmdpbi1yaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuXG4gIGNvbG9yOiAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgYm9yZGVyOiAxcHggdHJhbnNwYXJlbnQgc29saWQ7XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICB9XG5cbiAgJlthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kRGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHREaXNhYmxlZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdOmhvdmVyLCBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICAgIHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdEaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmBcblxuY29uc3QgUG9wdXBGb290ZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfVxuICAgICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMS41XX0gJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2hhZG93cy5kcm9wZG93bn07XG5gXG5jb25zdCBTdHlsZWRDaGVja2JveCA9IHN0eWxlZChDaGVja2JveClgXG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAgLy8gcG9pbnRlci1ldmVudHM6IG5vbmUgcHJldmVudHMgYW55IGVycm9yIHdoZW4gdXNpbmcgdGhlIGNoZWNrYm94IGluIGEgZm9ybSBzaW5jZSBpdCBpcyBhbiB1bm5hbWVkIGlucHV0XG5cbmNvbnN0IEVtcHR5U3RhdGUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbmBcbmNvbnN0IExvYWRNb3JlID0gc3R5bGVkKFN0YWNrKWBcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbmBcblxuY29uc3QgbW92ZUZvY3VzRG93biA9ICgpID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgJyNpdGVtcyA+IGRpdltyb2xlPVwib3B0aW9uXCJdOm5vdChbZGlzYWJsZWRdKScsXG4gIClcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnM/Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBsaXN0TGVuZ3RoID0gb3B0aW9ucy5sZW5ndGhcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbbGlzdExlbmd0aCAtIDFdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpICsgMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IG1vdmVGb2N1c1VwID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoYWN0aXZlSXRlbSA9PT0gb3B0aW9uc1tpXSAmJiBhY3RpdmVJdGVtICE9PSBvcHRpb25zWzBdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpIC0gMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IGhhbmRsZUtleURvd25TZWxlY3QgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c0Rvd24oKVxuICB9XG5cbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c1VwKClcbiAgfVxuXG4gIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgIC8vIE5vIHNjcm9sbFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxufVxuXG5jb25zdCBoYW5kbGVLZXlEb3duID0gKFxuICBldmVudDogZ2xvYmFsVGhpcy5LZXlib2FyZEV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maW5kKG9wdGlvbiA9PlxuICAgICAgICBvcHRpb24uc2VhcmNoVGV4dFxuICAgICAgICAgID8gb3B0aW9uLnNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpXG4gICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgKVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IENyZWF0ZURyb3Bkb3duID0gKHtcbiAgaXNFbXB0eSxcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZSxcbiAgaXNMb2FkaW5nLFxufTogQ3JlYXRlRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgb25DaGFuZ2UsXG4gICAgb3B0aW9ucyxcbiAgICBtdWx0aXNlbGVjdCxcbiAgICBzZWxlY3RBbGwsXG4gICAgc2VsZWN0QWxsR3JvdXAsXG4gICAgZGlzcGxheWVkT3B0aW9ucyxcbiAgICBzZXRTZWxlY3RlZERhdGEsXG4gICAgc2VsZWN0ZWREYXRhLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCBmb2N1c2VkSXRlbVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0U2VhcmNoVmFsdWUgJiYgZm9jdXNlZEl0ZW1SZWY/LmN1cnJlbnQpIHtcbiAgICAgIGZvY3VzZWRJdGVtUmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRTZWFyY2hWYWx1ZV0pXG5cbiAgaWYgKGlzRW1wdHkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEVtcHR5U3RhdGUgZ2FwPXsyfSBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgIHtlbXB0eVN0YXRlID8/IChcbiAgICAgICAgICA8VGV4dCB2YXJpYW50PVwiYm9keVN0cm9uZ1wiIGFzPVwicFwiPlxuICAgICAgICAgICAgTm8gb3B0aW9uc1xuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKX1cbiAgICAgIDwvRW1wdHlTdGF0ZT5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbGljayA9IChjbGlja2VkT3B0aW9uOiBPcHRpb25UeXBlLCBncm91cD86IHN0cmluZykgPT4ge1xuICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RPcHRpb24nLCBjbGlja2VkT3B0aW9uLCBncm91cCB9KVxuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhjbGlja2VkT3B0aW9uLnZhbHVlKSkge1xuICAgICAgICBvbkNoYW5nZT8uKFxuICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5maWx0ZXIoXG4gICAgICAgICAgICB2YWwgPT4gdmFsICE9PSBjbGlja2VkT3B0aW9uLnZhbHVlLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcywgY2xpY2tlZE9wdGlvbi52YWx1ZV0pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uQ2hhbmdlPy4oY2xpY2tlZE9wdGlvbi52YWx1ZSlcbiAgICB9XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUobXVsdGlzZWxlY3QpIC8vIGhpZGUgdGhlIGRyb3Bkb3duIG9uIGNsaWNrIHdoZW4gc2luZ2xlIHNlbGVjdCBvbmx5XG4gIH1cblxuICBjb25zdCBzZWxlY3RBbGxPcHRpb25zID0gKCkgPT4ge1xuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdEFsbCcgfSlcbiAgICAgIGlmIChzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWQgJiYgb25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UoW10pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhbGxWYWx1ZXM6IE9wdGlvblR5cGVbXSA9IFtdXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT5cbiAgICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGFsbFZhbHVlcy5wdXNoKG9wdGlvbilcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9ucy5tYXAob3B0aW9uID0+IGFsbFZhbHVlcy5wdXNoKG9wdGlvbikpXG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2U/LihhbGxWYWx1ZXMubWFwKHZhbHVlID0+IHZhbHVlLnZhbHVlKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RHcm91cCA9IChncm91cDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0R3JvdXAnLCBzZWxlY3RlZEdyb3VwOiBncm91cCB9KVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZERhdGEuc2VsZWN0ZWRHcm91cHMuaW5jbHVkZXMoZ3JvdXApKSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXS5maWx0ZXIoXG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlID0+XG4gICAgICAgICAgICAgICFvcHRpb25zW2dyb3VwXS5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkVmFsdWVzID0gWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlc11cblxuICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT5cbiAgICAgICAgICAgIG5ld1NlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgfHwgb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG5ld1NlbGVjdGVkVmFsdWVzLnB1c2gob3B0aW9uLnZhbHVlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgb25DaGFuZ2U/LihuZXdTZWxlY3RlZFZhbHVlcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAhQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSA/IChcbiAgICA8RHJvcGRvd25Db250YWluZXJcbiAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgIGlkPVwic2VsZWN0LWRyb3Bkb3duXCJcbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93blNlbGVjdH1cbiAgICAgIGRhdGEtZ3JvdXBlZFxuICAgID5cbiAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGwtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtncm91cC50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFzPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwV3JhcHBlcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPVwiMC4yNVwiPlxuICAgICAgICAgICAgICAgIHtkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5tYXAoKG9wdGlvbiwgaW5kZXhPcHRpb24pID0+IChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAga2V5PXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9eyEhb3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4T3B0aW9ufWB9XG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICkpfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApIDogKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZ2FwPXswLjI1fVxuICAgICAgZGF0YS1ncm91cGVkPXtmYWxzZX1cbiAgICA+XG4gICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiIGdhcD17MC4yNX0gdGFiSW5kZXg9ey0xfT5cbiAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICBhcmlhLWRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gc2VsZWN0QWxsT3B0aW9ucygpIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdGFjayBkaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHlTbWFsbFwiXG4gICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgcHJvbWluZW5jZT1cIndlYWtcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9ezAuMjV9PlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgIGtleT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPXshIW9wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBoYW5kbGVDbGljayhvcHRpb24pIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICApKVxuICAgICAgICApfVxuICAgICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICAgIDwvU3RhY2s+XG4gICAgPC9Ecm9wZG93bkNvbnRhaW5lcj5cbiAgKVxufVxuZXhwb3J0IGNvbnN0IERyb3Bkb3duID0gKHtcbiAgY2hpbGRyZW4sXG4gIGVtcHR5U3RhdGUsXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uLFxuICBzZWFyY2hhYmxlLFxuICBwbGFjZWhvbGRlcixcbiAgZm9vdGVyLFxuICByZWZTZWxlY3QsXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGlzTG9hZGluZyxcbiAgc2l6ZSxcbiAgZHJvcGRvd25BbGlnbixcbiAgcG9ydGFsVGFyZ2V0LFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZlNlbGVjdC5jdXJyZW50ICYmIGlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9XG4gICAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSArXG4gICAgICAgIERST1BET1dOX01BWF9IRUlHSFQgK1xuICAgICAgICBOdW1iZXIodGhlbWUuc2l6aW5nW0lOUFVUX1NJWkVfSEVJR0hUW3NpemVdXS5yZXBsYWNlKCdyZW0nLCAnJykpICogMTYgK1xuICAgICAgICBOdW1iZXIucGFyc2VJbnQodGhlbWUuc3BhY2VbJzUnXSwgMTApXG4gICAgICBjb25zdCBvdmVyZmxvdyA9IHBvc2l0aW9uIC0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7XG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrZHJvcC1tb2RhbCcpXG5cbiAgICAgICAgaWYgKG1vZGFsRWxlbWVudCkge1xuICAgICAgICAgIG1vZGFsRWxlbWVudC5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgICB9IGVsc2Ugd2luZG93LnNjcm9sbEJ5KHsgdG9wOiBvdmVyZmxvdywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pXG4gICAgICB9XG4gICAgfVxuICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2lzRHJvcGRvd25WaXNpYmxlLCByZWZTZWxlY3QsIHNpemUsIHJlZi5jdXJyZW50XSlcblxuICBjb25zdCByZXNpemVEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICByZWZTZWxlY3QuY3VycmVudCAmJlxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiAwXG4gICAgKSB7XG4gICAgICBzZXRXaWR0aChyZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aClcbiAgICB9XG4gIH0sIFtyZWZTZWxlY3RdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVzaXplRHJvcGRvd24oKVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZURyb3Bkb3duKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcbiAgfSwgW3Jlc2l6ZURyb3Bkb3duXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2VhcmNoSW5wdXQpIHtcbiAgICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gICAgfVxuICB9LCBbb25TZWFyY2gsIG9wdGlvbnMsIHNlYXJjaElucHV0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIHNldFNlYXJjaCgnJylcbiAgICB9XG5cbiAgICBpZiAoIXNlYXJjaGFibGUpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICBoYW5kbGVLZXlEb3duKFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICksXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICghc2VhcmNoYWJsZSkge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgICBoYW5kbGVLZXlEb3duKFxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICByZWYsXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgIG9wdGlvbnMsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoLFxuICAgIHJlZlNlbGVjdCxcbiAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgIHNlYXJjaGFibGUsXG4gIF0pXG5cbiAgLy8gTm8gZGF0YSBpcyBkaXNwbGF5ZWQgKGJlY2F1c2Ugb2YgdGhlIHNlYXJjaCBvciBiZWNhdXNlIG5vIGRhdGEgaXMgcHJvdmlkZWQpXG4gIC8vIFNldCB0byB0cnVlIHdoZW4gbm9EYXRhIGJ5IGRlZmF1bHRcbiAgY29uc3QgaXNFbXB0eSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChudW1iZXJPZk9wdGlvbnMgPT09IDApIHJldHVybiB0cnVlXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGxheWVkT3B0aW9ucykpIHtcbiAgICAgIHJldHVybiBkaXNwbGF5ZWRPcHRpb25zLmxlbmd0aCA9PT0gMFxuICAgIH1cbiAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgICBpZiAoZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9LCBbZGlzcGxheWVkT3B0aW9ucywgbnVtYmVyT2ZPcHRpb25zXSlcblxuICBjb25zdCBjb21wdXRlZEZvb3RlciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChmb290ZXIgJiYgIWlzRW1wdHkpIHtcbiAgICAgIGlmICh0eXBlb2YgZm9vdGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFBvcHVwRm9vdGVyPntmb290ZXIoKCkgPT4gc2V0SXNEcm9wZG93blZpc2libGUoZmFsc2UpKX08L1BvcHVwRm9vdGVyPlxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiA8UG9wdXBGb290ZXI+e2Zvb3Rlcn08L1BvcHVwRm9vdGVyPlxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH0sIFtpc0VtcHR5LCBmb290ZXIsIHNldElzRHJvcGRvd25WaXNpYmxlXSlcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRQb3B1cFxuICAgICAgdmlzaWJsZT17aXNEcm9wZG93blZpc2libGV9XG4gICAgICB0ZXh0PXtcbiAgICAgICAgPFN0YWNrPlxuICAgICAgICAgIHtzZWFyY2hhYmxlICYmICFpc0xvYWRpbmcgJiYgbnVtYmVyT2ZPcHRpb25zID49IDYgPyAoXG4gICAgICAgICAgICA8U2VhcmNoQmFyRHJvcGRvd25cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zPXtkaXNwbGF5ZWRPcHRpb25zfVxuICAgICAgICAgICAgICBzZXRTZWFyY2hCYXJBY3RpdmU9e3NldFNlYXJjaEJhckFjdGl2ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPENyZWF0ZURyb3Bkb3duXG4gICAgICAgICAgICBpc0VtcHR5PXtpc0VtcHR5fVxuICAgICAgICAgICAgZW1wdHlTdGF0ZT17ZW1wdHlTdGF0ZX1cbiAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgIGxvYWRNb3JlPXtsb2FkTW9yZX1cbiAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaFZhbHVlPXtkZWZhdWx0U2VhcmNoVmFsdWV9XG4gICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtjb21wdXRlZEZvb3Rlcn1cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIH1cbiAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICBkaXNhYmxlQW5pbWF0aW9uXG4gICAgICBtYXhXaWR0aD17bWF4V2lkdGggPz8gcmVmU2VsZWN0LmN1cnJlbnQ/Lm9mZnNldFdpZHRofVxuICAgICAgaGFzQXJyb3c9e2ZhbHNlfVxuICAgICAgcmVmPXtyZWZ9XG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgIGRlYm91bmNlRGVsYXk9ezB9XG4gICAgICBjb250YWluZXJGdWxsV2lkdGhcbiAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZVxuICAgICAgb25DbG9zZT17KCkgPT4gc2V0SXNEcm9wZG93blZpc2libGUoZmFsc2UpfVxuICAgICAgYWxpZ249e2Ryb3Bkb3duQWxpZ24gPz8gJ3N0YXJ0J31cbiAgICAgIHBvcnRhbFRhcmdldD17cG9ydGFsVGFyZ2V0fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1N0eWxlZFBvcHVwPlxuICApXG59XG4iXX0= */",
154
+ styles: "width:100%;position:static;text-align:left;align-items:center;pointer-events:none/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtTHVDIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgdHlwZSB7XG4gIENvbXBvbmVudFByb3BzLFxuICBEaXNwYXRjaCxcbiAgS2V5Ym9hcmRFdmVudCxcbiAgUmVhY3ROb2RlLFxuICBSZWZPYmplY3QsXG4gIFNldFN0YXRlQWN0aW9uLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IE1vZGFsQ29udGV4dCB9IGZyb20gJy4uL01vZGFsL01vZGFsUHJvdmlkZXInXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uL1BvcHVwJ1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuLi9Ta2VsZXRvbidcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnLi4vU3RhY2snXG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vVGV4dCdcbmltcG9ydCB7IERpc3BsYXlPcHRpb24gfSBmcm9tICcuL0Ryb3Bkb3duT3B0aW9uJ1xuaW1wb3J0IHsgU2VhcmNoQmFyRHJvcGRvd24gfSBmcm9tICcuL1NlYXJjaEJhckRyb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2VsZWN0SW5wdXQgfSBmcm9tICcuL1NlbGVjdElucHV0UHJvdmlkZXInXG5pbXBvcnQgdHlwZSB7IERhdGFUeXBlLCBPcHRpb25UeXBlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IElOUFVUX1NJWkVfSEVJR0hUIH0gZnJvbSAnLi90eXBlcydcblxuY29uc3QgRFJPUERPV05fTUFYX0hFSUdIVCA9IDI1NlxuXG5leHBvcnQgdHlwZSBEcm9wZG93blByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBzZWFyY2hhYmxlOiBib29sZWFuXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmdcbiAgZm9vdGVyPzogKChjbG9zZURyb3Bkb3duOiAoKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpIHwgUmVhY3ROb2RlXG4gIHJlZlNlbGVjdDogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbiAgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJ1xuICBkcm9wZG93bkFsaWduPzogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBvcHVwPlsnYWxpZ24nXVxuICBwb3J0YWxUYXJnZXQ/OiBDb21wb25lbnRQcm9wczx0eXBlb2YgUG9wdXA+Wydwb3J0YWxUYXJnZXQnXVxufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVEcm9wZG93blByb3BzID0ge1xuICBpc0VtcHR5OiBib29sZWFuXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBsb2FkTW9yZT86IFJlYWN0Tm9kZVxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCdcbiAgZGVmYXVsdFNlYXJjaFZhbHVlOiBzdHJpbmcgfCBudWxsXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbn1cblxuY29uc3QgTk9OX1NFQVJDSEFCTEVfS0VZUyA9IFtcbiAgJ1RhYicsXG4gICcgJyxcbiAgJ0VudGVyJyxcbiAgJ0NhcHNMb2NrJyxcbiAgJ1NoaWZ0JyxcbiAgJ0Fycm93RG93bicsXG4gICdBcnJvd1VwJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0VzY2FwZScsXG5dXG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKFBvcHVwKWBcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBwYWRkaW5nLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbiAgcGFkZGluZy10b3A6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX07XG5cbiAgJltkYXRhLWdyb3VwZWQ9XCJ0cnVlXCJdIHtcbiAgICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIH1cbmBcbmNvbnN0IERyb3Bkb3duR3JvdXAgPSBzdHlsZWQuYnV0dG9uPHsgJ2RhdGEtc2VsZWN0Z3JvdXAnOiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBwYWRkaW5nLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBoZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbNF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjI1J119O1xuXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgICBib3JkZXItbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfSBzb2xpZCAkeyh7IHRoZW1lIH0pID0+XG4gICAgICB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kSG92ZXJ9O1xuICB9XG5gXG5jb25zdCBEcm9wZG93bkdyb3VwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcblxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzEuNSddfSAkeyh7IHRoZW1lIH0pID0+XG4gICAgdGhlbWUuc3BhY2VbJzInXX07XG4gIG1hcmdpbi1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjUnXX07XG4gIG1hcmdpbi1yaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuXG4gIGNvbG9yOiAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgYm9yZGVyOiAxcHggdHJhbnNwYXJlbnQgc29saWQ7XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICB9XG5cbiAgJlthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kRGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHREaXNhYmxlZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdOmhvdmVyLCBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICAgIHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdEaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmBcblxuY29uc3QgUG9wdXBGb290ZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfVxuICAgICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMS41XX0gJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2hhZG93cy5kcm9wZG93bn07XG5gXG5jb25zdCBTdHlsZWRDaGVja2JveCA9IHN0eWxlZChDaGVja2JveClgXG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAgLy8gcG9pbnRlci1ldmVudHM6IG5vbmUgcHJldmVudHMgYW55IGVycm9yIHdoZW4gdXNpbmcgdGhlIGNoZWNrYm94IGluIGEgZm9ybSBzaW5jZSBpdCBpcyBhbiB1bm5hbWVkIGlucHV0XG5cbmNvbnN0IEVtcHR5U3RhdGUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbmBcbmNvbnN0IExvYWRNb3JlID0gc3R5bGVkKFN0YWNrKWBcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbmBcblxuY29uc3QgbW92ZUZvY3VzRG93biA9ICgpID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgJyNpdGVtcyA+IGRpdltyb2xlPVwib3B0aW9uXCJdOm5vdChbZGlzYWJsZWRdKScsXG4gIClcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnM/Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBsaXN0TGVuZ3RoID0gb3B0aW9ucy5sZW5ndGhcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbbGlzdExlbmd0aCAtIDFdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpICsgMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IG1vdmVGb2N1c1VwID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoYWN0aXZlSXRlbSA9PT0gb3B0aW9uc1tpXSAmJiBhY3RpdmVJdGVtICE9PSBvcHRpb25zWzBdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpIC0gMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IGhhbmRsZUtleURvd25TZWxlY3QgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c0Rvd24oKVxuICB9XG5cbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c1VwKClcbiAgfVxuXG4gIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgIC8vIE5vIHNjcm9sbFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxufVxuXG5jb25zdCBoYW5kbGVLZXlEb3duID0gKFxuICBldmVudDogZ2xvYmFsVGhpcy5LZXlib2FyZEV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maW5kKG9wdGlvbiA9PlxuICAgICAgICBvcHRpb24uc2VhcmNoVGV4dFxuICAgICAgICAgID8gb3B0aW9uLnNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpXG4gICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgKVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IENyZWF0ZURyb3Bkb3duID0gKHtcbiAgaXNFbXB0eSxcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZSxcbiAgaXNMb2FkaW5nLFxufTogQ3JlYXRlRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgb25DaGFuZ2UsXG4gICAgb3B0aW9ucyxcbiAgICBtdWx0aXNlbGVjdCxcbiAgICBzZWxlY3RBbGwsXG4gICAgc2VsZWN0QWxsR3JvdXAsXG4gICAgZGlzcGxheWVkT3B0aW9ucyxcbiAgICBzZXRTZWxlY3RlZERhdGEsXG4gICAgc2VsZWN0ZWREYXRhLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCBmb2N1c2VkSXRlbVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0U2VhcmNoVmFsdWUgJiYgZm9jdXNlZEl0ZW1SZWY/LmN1cnJlbnQpIHtcbiAgICAgIGZvY3VzZWRJdGVtUmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRTZWFyY2hWYWx1ZV0pXG5cbiAgaWYgKGlzRW1wdHkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEVtcHR5U3RhdGUgYWxpZ25JdGVtcz1cImNlbnRlclwiIGdhcD17Mn0+XG4gICAgICAgIHtlbXB0eVN0YXRlID8/IChcbiAgICAgICAgICA8VGV4dCBhcz1cInBcIiB2YXJpYW50PVwiYm9keVN0cm9uZ1wiPlxuICAgICAgICAgICAgTm8gb3B0aW9uc1xuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKX1cbiAgICAgIDwvRW1wdHlTdGF0ZT5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbGljayA9IChjbGlja2VkT3B0aW9uOiBPcHRpb25UeXBlLCBncm91cD86IHN0cmluZykgPT4ge1xuICAgIHNldFNlbGVjdGVkRGF0YSh7IGNsaWNrZWRPcHRpb24sIGdyb3VwLCB0eXBlOiAnc2VsZWN0T3B0aW9uJyB9KVxuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhjbGlja2VkT3B0aW9uLnZhbHVlKSkge1xuICAgICAgICBvbkNoYW5nZT8uKFxuICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5maWx0ZXIoXG4gICAgICAgICAgICB2YWwgPT4gdmFsICE9PSBjbGlja2VkT3B0aW9uLnZhbHVlLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcywgY2xpY2tlZE9wdGlvbi52YWx1ZV0pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uQ2hhbmdlPy4oY2xpY2tlZE9wdGlvbi52YWx1ZSlcbiAgICB9XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUobXVsdGlzZWxlY3QpIC8vIGhpZGUgdGhlIGRyb3Bkb3duIG9uIGNsaWNrIHdoZW4gc2luZ2xlIHNlbGVjdCBvbmx5XG4gIH1cblxuICBjb25zdCBzZWxlY3RBbGxPcHRpb25zID0gKCkgPT4ge1xuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdEFsbCcgfSlcbiAgICAgIGlmIChzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWQgJiYgb25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UoW10pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhbGxWYWx1ZXM6IE9wdGlvblR5cGVbXSA9IFtdXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT5cbiAgICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGFsbFZhbHVlcy5wdXNoKG9wdGlvbilcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9ucy5tYXAob3B0aW9uID0+IGFsbFZhbHVlcy5wdXNoKG9wdGlvbikpXG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2U/LihhbGxWYWx1ZXMubWFwKHZhbHVlID0+IHZhbHVlLnZhbHVlKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RHcm91cCA9IChncm91cDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyBzZWxlY3RlZEdyb3VwOiBncm91cCwgdHlwZTogJ3NlbGVjdEdyb3VwJyB9KVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZERhdGEuc2VsZWN0ZWRHcm91cHMuaW5jbHVkZXMoZ3JvdXApKSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXS5maWx0ZXIoXG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlID0+XG4gICAgICAgICAgICAgICFvcHRpb25zW2dyb3VwXS5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkVmFsdWVzID0gWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlc11cblxuICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT5cbiAgICAgICAgICAgIG5ld1NlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgfHwgb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG5ld1NlbGVjdGVkVmFsdWVzLnB1c2gob3B0aW9uLnZhbHVlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgb25DaGFuZ2U/LihuZXdTZWxlY3RlZFZhbHVlcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAhQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSA/IChcbiAgICA8RHJvcGRvd25Db250YWluZXJcbiAgICAgIGRhdGEtZ3JvdXBlZFxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgID5cbiAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgdmFyaWFudD1cImJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHlTbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBnYXA9ezAuMjV9IGtleT17Z3JvdXB9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2Bncm91cC0ke2luZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RHcm91cChncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9e3NlbGVjdEFsbEdyb3VwID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RBbGxHcm91cCA/IGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtncm91cC50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwV3JhcHBlcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTdGFjayBnYXA9XCIwLjI1XCIgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICAgIHtkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5tYXAoKG9wdGlvbiwgaW5kZXhPcHRpb24pID0+IChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2BvcHRpb24tJHtvcHRpb24udmFsdWV9YH1cbiAgICAgICAgICAgICAgICAgICAgaWQ9e2BvcHRpb24tJHtpbmRleE9wdGlvbn1gfVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlZj17XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSBkZWZhdWx0U2VhcmNoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uc2VhcmNoVGV4dCA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGZvY3VzZWRJdGVtUmVmXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9eyFvcHRpb24uZGlzYWJsZWQgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICkpfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApIDogKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgZGF0YS1ncm91cGVkPXtmYWxzZX1cbiAgICAgIGdhcD17MC4yNX1cbiAgICAgIGlkPVwic2VsZWN0LWRyb3Bkb3duXCJcbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93blNlbGVjdH1cbiAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICA+XG4gICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICA8U3RhY2sgZ2FwPXswLjI1fSBpZD1cIml0ZW1zXCIgdGFiSW5kZXg9ey0xfT5cbiAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICBhcmlhLWRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gc2VsZWN0QWxsT3B0aW9ucygpIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGwtY2hlY2tib3hcIlxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdGFjayBkaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgdmFyaWFudD1cImJvZHlcIj5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFN0YWNrIGdhcD17MC4yNX0gaWQ9XCJpdGVtc1wiPlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9eyEhb3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAga2V5PXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBoYW5kbGVDbGljayhvcHRpb24pIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlZj17XG4gICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSBkZWZhdWx0U2VhcmNoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICBvcHRpb24uc2VhcmNoVGV4dCA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlXG4gICAgICAgICAgICAgICAgICA/IGZvY3VzZWRJdGVtUmVmXG4gICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9eyFvcHRpb24uZGlzYWJsZWQgPyAwIDogLTF9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICApKVxuICAgICAgICApfVxuICAgICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICAgIDwvU3RhY2s+XG4gICAgPC9Ecm9wZG93bkNvbnRhaW5lcj5cbiAgKVxufVxuZXhwb3J0IGNvbnN0IERyb3Bkb3duID0gKHtcbiAgY2hpbGRyZW4sXG4gIGVtcHR5U3RhdGUsXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uLFxuICBzZWFyY2hhYmxlLFxuICBwbGFjZWhvbGRlcixcbiAgZm9vdGVyLFxuICByZWZTZWxlY3QsXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGlzTG9hZGluZyxcbiAgc2l6ZSxcbiAgZHJvcGRvd25BbGlnbixcbiAgcG9ydGFsVGFyZ2V0LFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuICBjb25zdCBtb2RhbENvbnRleHQgPSB1c2VDb250ZXh0KE1vZGFsQ29udGV4dClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWZTZWxlY3QuY3VycmVudCAmJiBpc0Ryb3Bkb3duVmlzaWJsZSkge1xuICAgICAgY29uc3QgcG9zaXRpb24gPVxuICAgICAgICByZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20gK1xuICAgICAgICBEUk9QRE9XTl9NQVhfSEVJR0hUICtcbiAgICAgICAgTnVtYmVyKHRoZW1lLnNpemluZ1tJTlBVVF9TSVpFX0hFSUdIVFtzaXplXV0ucmVwbGFjZSgncmVtJywgJycpKSAqIDE2ICtcbiAgICAgICAgTnVtYmVyLnBhcnNlSW50KHRoZW1lLnNwYWNlWyc1J10sIDEwKVxuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBwb3NpdGlvbiAtIHdpbmRvdy5pbm5lckhlaWdodCArIDMyXG4gICAgICBpZiAob3ZlcmZsb3cgPiAwICYmIG1vZGFsQ29udGV4dCkge1xuICAgICAgICBjb25zdCBjdXJyZW50TW9kYWwgPSBtb2RhbENvbnRleHQub3BlbmVkTW9kYWxzWzBdXG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGN1cnJlbnRNb2RhbD8ucmVmLmN1cnJlbnRcblxuICAgICAgICBpZiAobW9kYWxFbGVtZW50KSB7XG4gICAgICAgICAgY29uc3QgcGFyZW50RWxlbWVudCA9IG1vZGFsRWxlbWVudC5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50XG4gICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuc2Nyb2xsQnkoe1xuICAgICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgICAgICAgIHRvcDogb3ZlcmZsb3csXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHdpbmRvdy5zY3JvbGxCeSh7IGJlaGF2aW9yOiAnc21vb3RoJywgdG9wOiBvdmVyZmxvdyB9KVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtpc0Ryb3Bkb3duVmlzaWJsZSwgcmVmU2VsZWN0LCBzaXplLCByZWYuY3VycmVudF0pXG5cbiAgY29uc3QgcmVzaXplRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQgJiZcbiAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoID4gMFxuICAgICkge1xuICAgICAgc2V0V2lkdGgocmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpXG4gICAgfVxuICB9LCBbcmVmU2VsZWN0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlc2l6ZURyb3Bkb3duKClcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplRHJvcGRvd24pXG4gIH0sIFtyZXNpemVEcm9wZG93bl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNlYXJjaElucHV0KSB7XG4gICAgICBvblNlYXJjaChvcHRpb25zKVxuICAgIH1cbiAgfSwgW29uU2VhcmNoLCBvcHRpb25zLCBzZWFyY2hJbnB1dF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBzZXREZWZhdWx0U2VhcmNoKG51bGwpXG4gICAgICBzZXRTZWFyY2goJycpXG4gICAgfVxuXG4gICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgc2VhcmNoLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoIXNlYXJjaGFibGUpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGV2ZW50ID0+XG4gICAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICAgICAgICAgIHNldFNlYXJjaCxcbiAgICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGlzRHJvcGRvd25WaXNpYmxlLFxuICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICBvcHRpb25zLFxuICAgIG9uU2VhcmNoLFxuICAgIHNlYXJjaCxcbiAgICByZWZTZWxlY3QsXG4gICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hhYmxlLFxuICBdKVxuXG4gIC8vIE5vIGRhdGEgaXMgZGlzcGxheWVkIChiZWNhdXNlIG9mIHRoZSBzZWFyY2ggb3IgYmVjYXVzZSBubyBkYXRhIGlzIHByb3ZpZGVkKVxuICAvLyBTZXQgdG8gdHJ1ZSB3aGVuIG5vRGF0YSBieSBkZWZhdWx0XG4gIGNvbnN0IGlzRW1wdHkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAobnVtYmVyT2ZPcHRpb25zID09PSAwKSByZXR1cm4gdHJ1ZVxuICAgIGlmIChBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gZGlzcGxheWVkT3B0aW9ucy5sZW5ndGggPT09IDBcbiAgICB9XG4gICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucylcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgICAgaWYgKGRpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfSwgW2Rpc3BsYXllZE9wdGlvbnMsIG51bWJlck9mT3B0aW9uc10pXG5cbiAgY29uc3QgY29tcHV0ZWRGb290ZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoZm9vdGVyICYmICFpc0VtcHR5KSB7XG4gICAgICBpZiAodHlwZW9mIGZvb3RlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxQb3B1cEZvb3Rlcj57Zm9vdGVyKCgpID0+IHNldElzRHJvcGRvd25WaXNpYmxlKGZhbHNlKSl9PC9Qb3B1cEZvb3Rlcj5cbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gPFBvcHVwRm9vdGVyPntmb290ZXJ9PC9Qb3B1cEZvb3Rlcj5cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9LCBbaXNFbXB0eSwgZm9vdGVyLCBzZXRJc0Ryb3Bkb3duVmlzaWJsZV0pXG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkUG9wdXBcbiAgICAgIGFsaWduPXtkcm9wZG93bkFsaWduID8/ICdzdGFydCd9XG4gICAgICBjb250YWluZXJGdWxsV2lkdGhcbiAgICAgIGRlYm91bmNlRGVsYXk9ezB9XG4gICAgICBkaXNhYmxlQW5pbWF0aW9uXG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICBoaWRlT25DbGlja091dHNpZGVcbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBvbkNsb3NlPXsoKSA9PiBzZXRJc0Ryb3Bkb3duVmlzaWJsZShmYWxzZSl9XG4gICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgcG9ydGFsVGFyZ2V0PXtwb3J0YWxUYXJnZXR9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgdGV4dD17XG4gICAgICAgIDxTdGFjaz5cbiAgICAgICAgICB7c2VhcmNoYWJsZSAmJiAhaXNMb2FkaW5nICYmIG51bWJlck9mT3B0aW9ucyA+PSA2ID8gKFxuICAgICAgICAgICAgPFNlYXJjaEJhckRyb3Bkb3duXG4gICAgICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnM9e2Rpc3BsYXllZE9wdGlvbnN9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgc2V0U2VhcmNoQmFyQWN0aXZlPXtzZXRTZWFyY2hCYXJBY3RpdmV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxDcmVhdGVEcm9wZG93blxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaFZhbHVlPXtkZWZhdWx0U2VhcmNoVmFsdWV9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICBlbXB0eVN0YXRlPXtlbXB0eVN0YXRlfVxuICAgICAgICAgICAgaXNFbXB0eT17aXNFbXB0eX1cbiAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgICAgbG9hZE1vcmU9e2xvYWRNb3JlfVxuICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7Y29tcHV0ZWRGb290ZXJ9XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICB9XG4gICAgICB2aXNpYmxlPXtpc0Ryb3Bkb3duVmlzaWJsZX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdHlsZWRQb3B1cD5cbiAgKVxufVxuIl19 */",
154
155
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
155
156
  });
156
157
  const EmptyState = /* @__PURE__ */ _styled(Stack, process.env.NODE_ENV === "production" ? {
@@ -160,7 +161,7 @@ const EmptyState = /* @__PURE__ */ _styled(Stack, process.env.NODE_ENV === "prod
160
161
  label: "EmptyState"
161
162
  })("padding:", ({
162
163
  theme
163
- }) => theme.space[2], ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtTGdDIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIENvbXBvbmVudFByb3BzLFxuICBEaXNwYXRjaCxcbiAgS2V5Ym9hcmRFdmVudCxcbiAgUmVhY3ROb2RlLFxuICBSZWZPYmplY3QsXG4gIFNldFN0YXRlQWN0aW9uLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAnLi4vQ2hlY2tib3gnXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uL1BvcHVwJ1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuLi9Ta2VsZXRvbidcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnLi4vU3RhY2snXG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vVGV4dCdcbmltcG9ydCB7IERpc3BsYXlPcHRpb24gfSBmcm9tICcuL0Ryb3Bkb3duT3B0aW9uJ1xuaW1wb3J0IHsgU2VhcmNoQmFyRHJvcGRvd24gfSBmcm9tICcuL1NlYXJjaEJhckRyb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2VsZWN0SW5wdXQgfSBmcm9tICcuL1NlbGVjdElucHV0UHJvdmlkZXInXG5pbXBvcnQgdHlwZSB7IERhdGFUeXBlLCBPcHRpb25UeXBlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IElOUFVUX1NJWkVfSEVJR0hUIH0gZnJvbSAnLi90eXBlcydcblxuY29uc3QgRFJPUERPV05fTUFYX0hFSUdIVCA9IDI1NlxuXG5leHBvcnQgdHlwZSBEcm9wZG93blByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBzZWFyY2hhYmxlOiBib29sZWFuXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmdcbiAgZm9vdGVyPzogKChjbG9zZURyb3Bkb3duOiAoKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpIHwgUmVhY3ROb2RlXG4gIHJlZlNlbGVjdDogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbiAgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJ1xuICBkcm9wZG93bkFsaWduPzogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBvcHVwPlsnYWxpZ24nXVxuICBwb3J0YWxUYXJnZXQ/OiBDb21wb25lbnRQcm9wczx0eXBlb2YgUG9wdXA+Wydwb3J0YWxUYXJnZXQnXVxufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVEcm9wZG93blByb3BzID0ge1xuICBpc0VtcHR5OiBib29sZWFuXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBsb2FkTW9yZT86IFJlYWN0Tm9kZVxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCdcbiAgZGVmYXVsdFNlYXJjaFZhbHVlOiBzdHJpbmcgfCBudWxsXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbn1cblxuY29uc3QgTk9OX1NFQVJDSEFCTEVfS0VZUyA9IFtcbiAgJ1RhYicsXG4gICcgJyxcbiAgJ0VudGVyJyxcbiAgJ0NhcHNMb2NrJyxcbiAgJ1NoaWZ0JyxcbiAgJ0Fycm93RG93bicsXG4gICdBcnJvd1VwJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0VzY2FwZScsXG5dXG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKFBvcHVwKWBcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBwYWRkaW5nLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbiAgcGFkZGluZy10b3A6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX07XG5cbiAgJltkYXRhLWdyb3VwZWQ9XCJ0cnVlXCJdIHtcbiAgICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIH1cbmBcbmNvbnN0IERyb3Bkb3duR3JvdXAgPSBzdHlsZWQuYnV0dG9uPHsgJ2RhdGEtc2VsZWN0Z3JvdXAnOiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBwYWRkaW5nLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBoZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbNF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjI1J119O1xuXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgICBib3JkZXItbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfSBzb2xpZCAkeyh7IHRoZW1lIH0pID0+XG4gICAgICB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kSG92ZXJ9O1xuICB9XG5gXG5jb25zdCBEcm9wZG93bkdyb3VwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcblxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzEuNSddfSAkeyh7IHRoZW1lIH0pID0+XG4gICAgdGhlbWUuc3BhY2VbJzInXX07XG4gIG1hcmdpbi1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjUnXX07XG4gIG1hcmdpbi1yaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuXG4gIGNvbG9yOiAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgYm9yZGVyOiAxcHggdHJhbnNwYXJlbnQgc29saWQ7XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICB9XG5cbiAgJlthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kRGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHREaXNhYmxlZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdOmhvdmVyLCBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICAgIHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdEaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmBcblxuY29uc3QgUG9wdXBGb290ZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfVxuICAgICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMS41XX0gJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2hhZG93cy5kcm9wZG93bn07XG5gXG5jb25zdCBTdHlsZWRDaGVja2JveCA9IHN0eWxlZChDaGVja2JveClgXG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAgLy8gcG9pbnRlci1ldmVudHM6IG5vbmUgcHJldmVudHMgYW55IGVycm9yIHdoZW4gdXNpbmcgdGhlIGNoZWNrYm94IGluIGEgZm9ybSBzaW5jZSBpdCBpcyBhbiB1bm5hbWVkIGlucHV0XG5cbmNvbnN0IEVtcHR5U3RhdGUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbmBcbmNvbnN0IExvYWRNb3JlID0gc3R5bGVkKFN0YWNrKWBcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbmBcblxuY29uc3QgbW92ZUZvY3VzRG93biA9ICgpID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgJyNpdGVtcyA+IGRpdltyb2xlPVwib3B0aW9uXCJdOm5vdChbZGlzYWJsZWRdKScsXG4gIClcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnM/Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBsaXN0TGVuZ3RoID0gb3B0aW9ucy5sZW5ndGhcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbbGlzdExlbmd0aCAtIDFdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpICsgMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IG1vdmVGb2N1c1VwID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoYWN0aXZlSXRlbSA9PT0gb3B0aW9uc1tpXSAmJiBhY3RpdmVJdGVtICE9PSBvcHRpb25zWzBdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpIC0gMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IGhhbmRsZUtleURvd25TZWxlY3QgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c0Rvd24oKVxuICB9XG5cbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c1VwKClcbiAgfVxuXG4gIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgIC8vIE5vIHNjcm9sbFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxufVxuXG5jb25zdCBoYW5kbGVLZXlEb3duID0gKFxuICBldmVudDogZ2xvYmFsVGhpcy5LZXlib2FyZEV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maW5kKG9wdGlvbiA9PlxuICAgICAgICBvcHRpb24uc2VhcmNoVGV4dFxuICAgICAgICAgID8gb3B0aW9uLnNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpXG4gICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgKVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IENyZWF0ZURyb3Bkb3duID0gKHtcbiAgaXNFbXB0eSxcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZSxcbiAgaXNMb2FkaW5nLFxufTogQ3JlYXRlRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgb25DaGFuZ2UsXG4gICAgb3B0aW9ucyxcbiAgICBtdWx0aXNlbGVjdCxcbiAgICBzZWxlY3RBbGwsXG4gICAgc2VsZWN0QWxsR3JvdXAsXG4gICAgZGlzcGxheWVkT3B0aW9ucyxcbiAgICBzZXRTZWxlY3RlZERhdGEsXG4gICAgc2VsZWN0ZWREYXRhLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCBmb2N1c2VkSXRlbVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0U2VhcmNoVmFsdWUgJiYgZm9jdXNlZEl0ZW1SZWY/LmN1cnJlbnQpIHtcbiAgICAgIGZvY3VzZWRJdGVtUmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRTZWFyY2hWYWx1ZV0pXG5cbiAgaWYgKGlzRW1wdHkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEVtcHR5U3RhdGUgZ2FwPXsyfSBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgIHtlbXB0eVN0YXRlID8/IChcbiAgICAgICAgICA8VGV4dCB2YXJpYW50PVwiYm9keVN0cm9uZ1wiIGFzPVwicFwiPlxuICAgICAgICAgICAgTm8gb3B0aW9uc1xuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKX1cbiAgICAgIDwvRW1wdHlTdGF0ZT5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbGljayA9IChjbGlja2VkT3B0aW9uOiBPcHRpb25UeXBlLCBncm91cD86IHN0cmluZykgPT4ge1xuICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RPcHRpb24nLCBjbGlja2VkT3B0aW9uLCBncm91cCB9KVxuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhjbGlja2VkT3B0aW9uLnZhbHVlKSkge1xuICAgICAgICBvbkNoYW5nZT8uKFxuICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5maWx0ZXIoXG4gICAgICAgICAgICB2YWwgPT4gdmFsICE9PSBjbGlja2VkT3B0aW9uLnZhbHVlLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcywgY2xpY2tlZE9wdGlvbi52YWx1ZV0pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uQ2hhbmdlPy4oY2xpY2tlZE9wdGlvbi52YWx1ZSlcbiAgICB9XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUobXVsdGlzZWxlY3QpIC8vIGhpZGUgdGhlIGRyb3Bkb3duIG9uIGNsaWNrIHdoZW4gc2luZ2xlIHNlbGVjdCBvbmx5XG4gIH1cblxuICBjb25zdCBzZWxlY3RBbGxPcHRpb25zID0gKCkgPT4ge1xuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdEFsbCcgfSlcbiAgICAgIGlmIChzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWQgJiYgb25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UoW10pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhbGxWYWx1ZXM6IE9wdGlvblR5cGVbXSA9IFtdXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT5cbiAgICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGFsbFZhbHVlcy5wdXNoKG9wdGlvbilcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9ucy5tYXAob3B0aW9uID0+IGFsbFZhbHVlcy5wdXNoKG9wdGlvbikpXG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2U/LihhbGxWYWx1ZXMubWFwKHZhbHVlID0+IHZhbHVlLnZhbHVlKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RHcm91cCA9IChncm91cDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0R3JvdXAnLCBzZWxlY3RlZEdyb3VwOiBncm91cCB9KVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZERhdGEuc2VsZWN0ZWRHcm91cHMuaW5jbHVkZXMoZ3JvdXApKSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXS5maWx0ZXIoXG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlID0+XG4gICAgICAgICAgICAgICFvcHRpb25zW2dyb3VwXS5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkVmFsdWVzID0gWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlc11cblxuICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT5cbiAgICAgICAgICAgIG5ld1NlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgfHwgb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG5ld1NlbGVjdGVkVmFsdWVzLnB1c2gob3B0aW9uLnZhbHVlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgb25DaGFuZ2U/LihuZXdTZWxlY3RlZFZhbHVlcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAhQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSA/IChcbiAgICA8RHJvcGRvd25Db250YWluZXJcbiAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgIGlkPVwic2VsZWN0LWRyb3Bkb3duXCJcbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93blNlbGVjdH1cbiAgICAgIGRhdGEtZ3JvdXBlZFxuICAgID5cbiAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGwtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtncm91cC50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFzPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwV3JhcHBlcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPVwiMC4yNVwiPlxuICAgICAgICAgICAgICAgIHtkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5tYXAoKG9wdGlvbiwgaW5kZXhPcHRpb24pID0+IChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAga2V5PXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9eyEhb3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4T3B0aW9ufWB9XG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICkpfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApIDogKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZ2FwPXswLjI1fVxuICAgICAgZGF0YS1ncm91cGVkPXtmYWxzZX1cbiAgICA+XG4gICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiIGdhcD17MC4yNX0gdGFiSW5kZXg9ey0xfT5cbiAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICBhcmlhLWRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gc2VsZWN0QWxsT3B0aW9ucygpIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdGFjayBkaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHlTbWFsbFwiXG4gICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgcHJvbWluZW5jZT1cIndlYWtcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9ezAuMjV9PlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgIGtleT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPXshIW9wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBoYW5kbGVDbGljayhvcHRpb24pIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICApKVxuICAgICAgICApfVxuICAgICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICAgIDwvU3RhY2s+XG4gICAgPC9Ecm9wZG93bkNvbnRhaW5lcj5cbiAgKVxufVxuZXhwb3J0IGNvbnN0IERyb3Bkb3duID0gKHtcbiAgY2hpbGRyZW4sXG4gIGVtcHR5U3RhdGUsXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uLFxuICBzZWFyY2hhYmxlLFxuICBwbGFjZWhvbGRlcixcbiAgZm9vdGVyLFxuICByZWZTZWxlY3QsXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGlzTG9hZGluZyxcbiAgc2l6ZSxcbiAgZHJvcGRvd25BbGlnbixcbiAgcG9ydGFsVGFyZ2V0LFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZlNlbGVjdC5jdXJyZW50ICYmIGlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9XG4gICAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSArXG4gICAgICAgIERST1BET1dOX01BWF9IRUlHSFQgK1xuICAgICAgICBOdW1iZXIodGhlbWUuc2l6aW5nW0lOUFVUX1NJWkVfSEVJR0hUW3NpemVdXS5yZXBsYWNlKCdyZW0nLCAnJykpICogMTYgK1xuICAgICAgICBOdW1iZXIucGFyc2VJbnQodGhlbWUuc3BhY2VbJzUnXSwgMTApXG4gICAgICBjb25zdCBvdmVyZmxvdyA9IHBvc2l0aW9uIC0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7XG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrZHJvcC1tb2RhbCcpXG5cbiAgICAgICAgaWYgKG1vZGFsRWxlbWVudCkge1xuICAgICAgICAgIG1vZGFsRWxlbWVudC5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgICB9IGVsc2Ugd2luZG93LnNjcm9sbEJ5KHsgdG9wOiBvdmVyZmxvdywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pXG4gICAgICB9XG4gICAgfVxuICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2lzRHJvcGRvd25WaXNpYmxlLCByZWZTZWxlY3QsIHNpemUsIHJlZi5jdXJyZW50XSlcblxuICBjb25zdCByZXNpemVEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICByZWZTZWxlY3QuY3VycmVudCAmJlxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiAwXG4gICAgKSB7XG4gICAgICBzZXRXaWR0aChyZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aClcbiAgICB9XG4gIH0sIFtyZWZTZWxlY3RdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVzaXplRHJvcGRvd24oKVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZURyb3Bkb3duKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcbiAgfSwgW3Jlc2l6ZURyb3Bkb3duXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2VhcmNoSW5wdXQpIHtcbiAgICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gICAgfVxuICB9LCBbb25TZWFyY2gsIG9wdGlvbnMsIHNlYXJjaElucHV0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIHNldFNlYXJjaCgnJylcbiAgICB9XG5cbiAgICBpZiAoIXNlYXJjaGFibGUpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICBoYW5kbGVLZXlEb3duKFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICksXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICghc2VhcmNoYWJsZSkge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgICBoYW5kbGVLZXlEb3duKFxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICByZWYsXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgIG9wdGlvbnMsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoLFxuICAgIHJlZlNlbGVjdCxcbiAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgIHNlYXJjaGFibGUsXG4gIF0pXG5cbiAgLy8gTm8gZGF0YSBpcyBkaXNwbGF5ZWQgKGJlY2F1c2Ugb2YgdGhlIHNlYXJjaCBvciBiZWNhdXNlIG5vIGRhdGEgaXMgcHJvdmlkZWQpXG4gIC8vIFNldCB0byB0cnVlIHdoZW4gbm9EYXRhIGJ5IGRlZmF1bHRcbiAgY29uc3QgaXNFbXB0eSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChudW1iZXJPZk9wdGlvbnMgPT09IDApIHJldHVybiB0cnVlXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGxheWVkT3B0aW9ucykpIHtcbiAgICAgIHJldHVybiBkaXNwbGF5ZWRPcHRpb25zLmxlbmd0aCA9PT0gMFxuICAgIH1cbiAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgICBpZiAoZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9LCBbZGlzcGxheWVkT3B0aW9ucywgbnVtYmVyT2ZPcHRpb25zXSlcblxuICBjb25zdCBjb21wdXRlZEZvb3RlciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChmb290ZXIgJiYgIWlzRW1wdHkpIHtcbiAgICAgIGlmICh0eXBlb2YgZm9vdGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFBvcHVwRm9vdGVyPntmb290ZXIoKCkgPT4gc2V0SXNEcm9wZG93blZpc2libGUoZmFsc2UpKX08L1BvcHVwRm9vdGVyPlxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiA8UG9wdXBGb290ZXI+e2Zvb3Rlcn08L1BvcHVwRm9vdGVyPlxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH0sIFtpc0VtcHR5LCBmb290ZXIsIHNldElzRHJvcGRvd25WaXNpYmxlXSlcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRQb3B1cFxuICAgICAgdmlzaWJsZT17aXNEcm9wZG93blZpc2libGV9XG4gICAgICB0ZXh0PXtcbiAgICAgICAgPFN0YWNrPlxuICAgICAgICAgIHtzZWFyY2hhYmxlICYmICFpc0xvYWRpbmcgJiYgbnVtYmVyT2ZPcHRpb25zID49IDYgPyAoXG4gICAgICAgICAgICA8U2VhcmNoQmFyRHJvcGRvd25cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zPXtkaXNwbGF5ZWRPcHRpb25zfVxuICAgICAgICAgICAgICBzZXRTZWFyY2hCYXJBY3RpdmU9e3NldFNlYXJjaEJhckFjdGl2ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPENyZWF0ZURyb3Bkb3duXG4gICAgICAgICAgICBpc0VtcHR5PXtpc0VtcHR5fVxuICAgICAgICAgICAgZW1wdHlTdGF0ZT17ZW1wdHlTdGF0ZX1cbiAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgIGxvYWRNb3JlPXtsb2FkTW9yZX1cbiAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaFZhbHVlPXtkZWZhdWx0U2VhcmNoVmFsdWV9XG4gICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtjb21wdXRlZEZvb3Rlcn1cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIH1cbiAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICBkaXNhYmxlQW5pbWF0aW9uXG4gICAgICBtYXhXaWR0aD17bWF4V2lkdGggPz8gcmVmU2VsZWN0LmN1cnJlbnQ/Lm9mZnNldFdpZHRofVxuICAgICAgaGFzQXJyb3c9e2ZhbHNlfVxuICAgICAgcmVmPXtyZWZ9XG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgIGRlYm91bmNlRGVsYXk9ezB9XG4gICAgICBjb250YWluZXJGdWxsV2lkdGhcbiAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZVxuICAgICAgb25DbG9zZT17KCkgPT4gc2V0SXNEcm9wZG93blZpc2libGUoZmFsc2UpfVxuICAgICAgYWxpZ249e2Ryb3Bkb3duQWxpZ24gPz8gJ3N0YXJ0J31cbiAgICAgIHBvcnRhbFRhcmdldD17cG9ydGFsVGFyZ2V0fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1N0eWxlZFBvcHVwPlxuICApXG59XG4iXX0= */"));
164
+ }) => theme.space[2], ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEyTGdDIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgdHlwZSB7XG4gIENvbXBvbmVudFByb3BzLFxuICBEaXNwYXRjaCxcbiAgS2V5Ym9hcmRFdmVudCxcbiAgUmVhY3ROb2RlLFxuICBSZWZPYmplY3QsXG4gIFNldFN0YXRlQWN0aW9uLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IE1vZGFsQ29udGV4dCB9IGZyb20gJy4uL01vZGFsL01vZGFsUHJvdmlkZXInXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uL1BvcHVwJ1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuLi9Ta2VsZXRvbidcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnLi4vU3RhY2snXG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vVGV4dCdcbmltcG9ydCB7IERpc3BsYXlPcHRpb24gfSBmcm9tICcuL0Ryb3Bkb3duT3B0aW9uJ1xuaW1wb3J0IHsgU2VhcmNoQmFyRHJvcGRvd24gfSBmcm9tICcuL1NlYXJjaEJhckRyb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2VsZWN0SW5wdXQgfSBmcm9tICcuL1NlbGVjdElucHV0UHJvdmlkZXInXG5pbXBvcnQgdHlwZSB7IERhdGFUeXBlLCBPcHRpb25UeXBlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IElOUFVUX1NJWkVfSEVJR0hUIH0gZnJvbSAnLi90eXBlcydcblxuY29uc3QgRFJPUERPV05fTUFYX0hFSUdIVCA9IDI1NlxuXG5leHBvcnQgdHlwZSBEcm9wZG93blByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBzZWFyY2hhYmxlOiBib29sZWFuXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmdcbiAgZm9vdGVyPzogKChjbG9zZURyb3Bkb3duOiAoKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpIHwgUmVhY3ROb2RlXG4gIHJlZlNlbGVjdDogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbiAgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJ1xuICBkcm9wZG93bkFsaWduPzogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBvcHVwPlsnYWxpZ24nXVxuICBwb3J0YWxUYXJnZXQ/OiBDb21wb25lbnRQcm9wczx0eXBlb2YgUG9wdXA+Wydwb3J0YWxUYXJnZXQnXVxufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVEcm9wZG93blByb3BzID0ge1xuICBpc0VtcHR5OiBib29sZWFuXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBsb2FkTW9yZT86IFJlYWN0Tm9kZVxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCdcbiAgZGVmYXVsdFNlYXJjaFZhbHVlOiBzdHJpbmcgfCBudWxsXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbn1cblxuY29uc3QgTk9OX1NFQVJDSEFCTEVfS0VZUyA9IFtcbiAgJ1RhYicsXG4gICcgJyxcbiAgJ0VudGVyJyxcbiAgJ0NhcHNMb2NrJyxcbiAgJ1NoaWZ0JyxcbiAgJ0Fycm93RG93bicsXG4gICdBcnJvd1VwJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0VzY2FwZScsXG5dXG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKFBvcHVwKWBcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBwYWRkaW5nLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbiAgcGFkZGluZy10b3A6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX07XG5cbiAgJltkYXRhLWdyb3VwZWQ9XCJ0cnVlXCJdIHtcbiAgICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIH1cbmBcbmNvbnN0IERyb3Bkb3duR3JvdXAgPSBzdHlsZWQuYnV0dG9uPHsgJ2RhdGEtc2VsZWN0Z3JvdXAnOiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBwYWRkaW5nLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBoZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbNF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjI1J119O1xuXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgICBib3JkZXItbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfSBzb2xpZCAkeyh7IHRoZW1lIH0pID0+XG4gICAgICB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kSG92ZXJ9O1xuICB9XG5gXG5jb25zdCBEcm9wZG93bkdyb3VwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcblxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzEuNSddfSAkeyh7IHRoZW1lIH0pID0+XG4gICAgdGhlbWUuc3BhY2VbJzInXX07XG4gIG1hcmdpbi1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjUnXX07XG4gIG1hcmdpbi1yaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuXG4gIGNvbG9yOiAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgYm9yZGVyOiAxcHggdHJhbnNwYXJlbnQgc29saWQ7XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICB9XG5cbiAgJlthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kRGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHREaXNhYmxlZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdOmhvdmVyLCBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICAgIHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdEaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmBcblxuY29uc3QgUG9wdXBGb290ZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfVxuICAgICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMS41XX0gJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2hhZG93cy5kcm9wZG93bn07XG5gXG5jb25zdCBTdHlsZWRDaGVja2JveCA9IHN0eWxlZChDaGVja2JveClgXG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAgLy8gcG9pbnRlci1ldmVudHM6IG5vbmUgcHJldmVudHMgYW55IGVycm9yIHdoZW4gdXNpbmcgdGhlIGNoZWNrYm94IGluIGEgZm9ybSBzaW5jZSBpdCBpcyBhbiB1bm5hbWVkIGlucHV0XG5cbmNvbnN0IEVtcHR5U3RhdGUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbmBcbmNvbnN0IExvYWRNb3JlID0gc3R5bGVkKFN0YWNrKWBcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbmBcblxuY29uc3QgbW92ZUZvY3VzRG93biA9ICgpID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgJyNpdGVtcyA+IGRpdltyb2xlPVwib3B0aW9uXCJdOm5vdChbZGlzYWJsZWRdKScsXG4gIClcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnM/Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBsaXN0TGVuZ3RoID0gb3B0aW9ucy5sZW5ndGhcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbbGlzdExlbmd0aCAtIDFdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpICsgMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IG1vdmVGb2N1c1VwID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoYWN0aXZlSXRlbSA9PT0gb3B0aW9uc1tpXSAmJiBhY3RpdmVJdGVtICE9PSBvcHRpb25zWzBdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpIC0gMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IGhhbmRsZUtleURvd25TZWxlY3QgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c0Rvd24oKVxuICB9XG5cbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c1VwKClcbiAgfVxuXG4gIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgIC8vIE5vIHNjcm9sbFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxufVxuXG5jb25zdCBoYW5kbGVLZXlEb3duID0gKFxuICBldmVudDogZ2xvYmFsVGhpcy5LZXlib2FyZEV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maW5kKG9wdGlvbiA9PlxuICAgICAgICBvcHRpb24uc2VhcmNoVGV4dFxuICAgICAgICAgID8gb3B0aW9uLnNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpXG4gICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgKVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IENyZWF0ZURyb3Bkb3duID0gKHtcbiAgaXNFbXB0eSxcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZSxcbiAgaXNMb2FkaW5nLFxufTogQ3JlYXRlRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgb25DaGFuZ2UsXG4gICAgb3B0aW9ucyxcbiAgICBtdWx0aXNlbGVjdCxcbiAgICBzZWxlY3RBbGwsXG4gICAgc2VsZWN0QWxsR3JvdXAsXG4gICAgZGlzcGxheWVkT3B0aW9ucyxcbiAgICBzZXRTZWxlY3RlZERhdGEsXG4gICAgc2VsZWN0ZWREYXRhLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCBmb2N1c2VkSXRlbVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0U2VhcmNoVmFsdWUgJiYgZm9jdXNlZEl0ZW1SZWY/LmN1cnJlbnQpIHtcbiAgICAgIGZvY3VzZWRJdGVtUmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRTZWFyY2hWYWx1ZV0pXG5cbiAgaWYgKGlzRW1wdHkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEVtcHR5U3RhdGUgYWxpZ25JdGVtcz1cImNlbnRlclwiIGdhcD17Mn0+XG4gICAgICAgIHtlbXB0eVN0YXRlID8/IChcbiAgICAgICAgICA8VGV4dCBhcz1cInBcIiB2YXJpYW50PVwiYm9keVN0cm9uZ1wiPlxuICAgICAgICAgICAgTm8gb3B0aW9uc1xuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKX1cbiAgICAgIDwvRW1wdHlTdGF0ZT5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbGljayA9IChjbGlja2VkT3B0aW9uOiBPcHRpb25UeXBlLCBncm91cD86IHN0cmluZykgPT4ge1xuICAgIHNldFNlbGVjdGVkRGF0YSh7IGNsaWNrZWRPcHRpb24sIGdyb3VwLCB0eXBlOiAnc2VsZWN0T3B0aW9uJyB9KVxuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhjbGlja2VkT3B0aW9uLnZhbHVlKSkge1xuICAgICAgICBvbkNoYW5nZT8uKFxuICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5maWx0ZXIoXG4gICAgICAgICAgICB2YWwgPT4gdmFsICE9PSBjbGlja2VkT3B0aW9uLnZhbHVlLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcywgY2xpY2tlZE9wdGlvbi52YWx1ZV0pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uQ2hhbmdlPy4oY2xpY2tlZE9wdGlvbi52YWx1ZSlcbiAgICB9XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUobXVsdGlzZWxlY3QpIC8vIGhpZGUgdGhlIGRyb3Bkb3duIG9uIGNsaWNrIHdoZW4gc2luZ2xlIHNlbGVjdCBvbmx5XG4gIH1cblxuICBjb25zdCBzZWxlY3RBbGxPcHRpb25zID0gKCkgPT4ge1xuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdEFsbCcgfSlcbiAgICAgIGlmIChzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWQgJiYgb25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UoW10pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhbGxWYWx1ZXM6IE9wdGlvblR5cGVbXSA9IFtdXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT5cbiAgICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGFsbFZhbHVlcy5wdXNoKG9wdGlvbilcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9ucy5tYXAob3B0aW9uID0+IGFsbFZhbHVlcy5wdXNoKG9wdGlvbikpXG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2U/LihhbGxWYWx1ZXMubWFwKHZhbHVlID0+IHZhbHVlLnZhbHVlKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RHcm91cCA9IChncm91cDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyBzZWxlY3RlZEdyb3VwOiBncm91cCwgdHlwZTogJ3NlbGVjdEdyb3VwJyB9KVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZERhdGEuc2VsZWN0ZWRHcm91cHMuaW5jbHVkZXMoZ3JvdXApKSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXS5maWx0ZXIoXG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlID0+XG4gICAgICAgICAgICAgICFvcHRpb25zW2dyb3VwXS5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkVmFsdWVzID0gWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlc11cblxuICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT5cbiAgICAgICAgICAgIG5ld1NlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgfHwgb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG5ld1NlbGVjdGVkVmFsdWVzLnB1c2gob3B0aW9uLnZhbHVlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgb25DaGFuZ2U/LihuZXdTZWxlY3RlZFZhbHVlcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAhQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSA/IChcbiAgICA8RHJvcGRvd25Db250YWluZXJcbiAgICAgIGRhdGEtZ3JvdXBlZFxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgID5cbiAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgdmFyaWFudD1cImJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHlTbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBnYXA9ezAuMjV9IGtleT17Z3JvdXB9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2Bncm91cC0ke2luZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RHcm91cChncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9e3NlbGVjdEFsbEdyb3VwID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RBbGxHcm91cCA/IGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtncm91cC50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwV3JhcHBlcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTdGFjayBnYXA9XCIwLjI1XCIgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICAgIHtkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5tYXAoKG9wdGlvbiwgaW5kZXhPcHRpb24pID0+IChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2BvcHRpb24tJHtvcHRpb24udmFsdWV9YH1cbiAgICAgICAgICAgICAgICAgICAgaWQ9e2BvcHRpb24tJHtpbmRleE9wdGlvbn1gfVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlZj17XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSBkZWZhdWx0U2VhcmNoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uc2VhcmNoVGV4dCA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGZvY3VzZWRJdGVtUmVmXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9eyFvcHRpb24uZGlzYWJsZWQgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICkpfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApIDogKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgZGF0YS1ncm91cGVkPXtmYWxzZX1cbiAgICAgIGdhcD17MC4yNX1cbiAgICAgIGlkPVwic2VsZWN0LWRyb3Bkb3duXCJcbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93blNlbGVjdH1cbiAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICA+XG4gICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICA8U3RhY2sgZ2FwPXswLjI1fSBpZD1cIml0ZW1zXCIgdGFiSW5kZXg9ey0xfT5cbiAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICBhcmlhLWRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gc2VsZWN0QWxsT3B0aW9ucygpIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGwtY2hlY2tib3hcIlxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdGFjayBkaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgdmFyaWFudD1cImJvZHlcIj5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFN0YWNrIGdhcD17MC4yNX0gaWQ9XCJpdGVtc1wiPlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9eyEhb3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAga2V5PXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBoYW5kbGVDbGljayhvcHRpb24pIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlZj17XG4gICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSBkZWZhdWx0U2VhcmNoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICBvcHRpb24uc2VhcmNoVGV4dCA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlXG4gICAgICAgICAgICAgICAgICA/IGZvY3VzZWRJdGVtUmVmXG4gICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9eyFvcHRpb24uZGlzYWJsZWQgPyAwIDogLTF9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICApKVxuICAgICAgICApfVxuICAgICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICAgIDwvU3RhY2s+XG4gICAgPC9Ecm9wZG93bkNvbnRhaW5lcj5cbiAgKVxufVxuZXhwb3J0IGNvbnN0IERyb3Bkb3duID0gKHtcbiAgY2hpbGRyZW4sXG4gIGVtcHR5U3RhdGUsXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uLFxuICBzZWFyY2hhYmxlLFxuICBwbGFjZWhvbGRlcixcbiAgZm9vdGVyLFxuICByZWZTZWxlY3QsXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGlzTG9hZGluZyxcbiAgc2l6ZSxcbiAgZHJvcGRvd25BbGlnbixcbiAgcG9ydGFsVGFyZ2V0LFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuICBjb25zdCBtb2RhbENvbnRleHQgPSB1c2VDb250ZXh0KE1vZGFsQ29udGV4dClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWZTZWxlY3QuY3VycmVudCAmJiBpc0Ryb3Bkb3duVmlzaWJsZSkge1xuICAgICAgY29uc3QgcG9zaXRpb24gPVxuICAgICAgICByZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20gK1xuICAgICAgICBEUk9QRE9XTl9NQVhfSEVJR0hUICtcbiAgICAgICAgTnVtYmVyKHRoZW1lLnNpemluZ1tJTlBVVF9TSVpFX0hFSUdIVFtzaXplXV0ucmVwbGFjZSgncmVtJywgJycpKSAqIDE2ICtcbiAgICAgICAgTnVtYmVyLnBhcnNlSW50KHRoZW1lLnNwYWNlWyc1J10sIDEwKVxuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBwb3NpdGlvbiAtIHdpbmRvdy5pbm5lckhlaWdodCArIDMyXG4gICAgICBpZiAob3ZlcmZsb3cgPiAwICYmIG1vZGFsQ29udGV4dCkge1xuICAgICAgICBjb25zdCBjdXJyZW50TW9kYWwgPSBtb2RhbENvbnRleHQub3BlbmVkTW9kYWxzWzBdXG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGN1cnJlbnRNb2RhbD8ucmVmLmN1cnJlbnRcblxuICAgICAgICBpZiAobW9kYWxFbGVtZW50KSB7XG4gICAgICAgICAgY29uc3QgcGFyZW50RWxlbWVudCA9IG1vZGFsRWxlbWVudC5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50XG4gICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuc2Nyb2xsQnkoe1xuICAgICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgICAgICAgIHRvcDogb3ZlcmZsb3csXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHdpbmRvdy5zY3JvbGxCeSh7IGJlaGF2aW9yOiAnc21vb3RoJywgdG9wOiBvdmVyZmxvdyB9KVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtpc0Ryb3Bkb3duVmlzaWJsZSwgcmVmU2VsZWN0LCBzaXplLCByZWYuY3VycmVudF0pXG5cbiAgY29uc3QgcmVzaXplRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQgJiZcbiAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoID4gMFxuICAgICkge1xuICAgICAgc2V0V2lkdGgocmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpXG4gICAgfVxuICB9LCBbcmVmU2VsZWN0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlc2l6ZURyb3Bkb3duKClcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplRHJvcGRvd24pXG4gIH0sIFtyZXNpemVEcm9wZG93bl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNlYXJjaElucHV0KSB7XG4gICAgICBvblNlYXJjaChvcHRpb25zKVxuICAgIH1cbiAgfSwgW29uU2VhcmNoLCBvcHRpb25zLCBzZWFyY2hJbnB1dF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBzZXREZWZhdWx0U2VhcmNoKG51bGwpXG4gICAgICBzZXRTZWFyY2goJycpXG4gICAgfVxuXG4gICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgc2VhcmNoLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoIXNlYXJjaGFibGUpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGV2ZW50ID0+XG4gICAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICAgICAgICAgIHNldFNlYXJjaCxcbiAgICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGlzRHJvcGRvd25WaXNpYmxlLFxuICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICBvcHRpb25zLFxuICAgIG9uU2VhcmNoLFxuICAgIHNlYXJjaCxcbiAgICByZWZTZWxlY3QsXG4gICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hhYmxlLFxuICBdKVxuXG4gIC8vIE5vIGRhdGEgaXMgZGlzcGxheWVkIChiZWNhdXNlIG9mIHRoZSBzZWFyY2ggb3IgYmVjYXVzZSBubyBkYXRhIGlzIHByb3ZpZGVkKVxuICAvLyBTZXQgdG8gdHJ1ZSB3aGVuIG5vRGF0YSBieSBkZWZhdWx0XG4gIGNvbnN0IGlzRW1wdHkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAobnVtYmVyT2ZPcHRpb25zID09PSAwKSByZXR1cm4gdHJ1ZVxuICAgIGlmIChBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gZGlzcGxheWVkT3B0aW9ucy5sZW5ndGggPT09IDBcbiAgICB9XG4gICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucylcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgICAgaWYgKGRpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfSwgW2Rpc3BsYXllZE9wdGlvbnMsIG51bWJlck9mT3B0aW9uc10pXG5cbiAgY29uc3QgY29tcHV0ZWRGb290ZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoZm9vdGVyICYmICFpc0VtcHR5KSB7XG4gICAgICBpZiAodHlwZW9mIGZvb3RlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxQb3B1cEZvb3Rlcj57Zm9vdGVyKCgpID0+IHNldElzRHJvcGRvd25WaXNpYmxlKGZhbHNlKSl9PC9Qb3B1cEZvb3Rlcj5cbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gPFBvcHVwRm9vdGVyPntmb290ZXJ9PC9Qb3B1cEZvb3Rlcj5cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9LCBbaXNFbXB0eSwgZm9vdGVyLCBzZXRJc0Ryb3Bkb3duVmlzaWJsZV0pXG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkUG9wdXBcbiAgICAgIGFsaWduPXtkcm9wZG93bkFsaWduID8/ICdzdGFydCd9XG4gICAgICBjb250YWluZXJGdWxsV2lkdGhcbiAgICAgIGRlYm91bmNlRGVsYXk9ezB9XG4gICAgICBkaXNhYmxlQW5pbWF0aW9uXG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICBoaWRlT25DbGlja091dHNpZGVcbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBvbkNsb3NlPXsoKSA9PiBzZXRJc0Ryb3Bkb3duVmlzaWJsZShmYWxzZSl9XG4gICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgcG9ydGFsVGFyZ2V0PXtwb3J0YWxUYXJnZXR9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgdGV4dD17XG4gICAgICAgIDxTdGFjaz5cbiAgICAgICAgICB7c2VhcmNoYWJsZSAmJiAhaXNMb2FkaW5nICYmIG51bWJlck9mT3B0aW9ucyA+PSA2ID8gKFxuICAgICAgICAgICAgPFNlYXJjaEJhckRyb3Bkb3duXG4gICAgICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnM9e2Rpc3BsYXllZE9wdGlvbnN9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgc2V0U2VhcmNoQmFyQWN0aXZlPXtzZXRTZWFyY2hCYXJBY3RpdmV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxDcmVhdGVEcm9wZG93blxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaFZhbHVlPXtkZWZhdWx0U2VhcmNoVmFsdWV9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICBlbXB0eVN0YXRlPXtlbXB0eVN0YXRlfVxuICAgICAgICAgICAgaXNFbXB0eT17aXNFbXB0eX1cbiAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgICAgbG9hZE1vcmU9e2xvYWRNb3JlfVxuICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7Y29tcHV0ZWRGb290ZXJ9XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICB9XG4gICAgICB2aXNpYmxlPXtpc0Ryb3Bkb3duVmlzaWJsZX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdHlsZWRQb3B1cD5cbiAgKVxufVxuIl19 */"));
164
165
  const LoadMore = /* @__PURE__ */ _styled(Stack, process.env.NODE_ENV === "production" ? {
165
166
  target: "e12qyldb0"
166
167
  } : {
@@ -168,7 +169,7 @@ const LoadMore = /* @__PURE__ */ _styled(Stack, process.env.NODE_ENV === "produc
168
169
  label: "LoadMore"
169
170
  })("padding:", ({
170
171
  theme
171
- }) => theme.space[0.5], ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzTDhCIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIENvbXBvbmVudFByb3BzLFxuICBEaXNwYXRjaCxcbiAgS2V5Ym9hcmRFdmVudCxcbiAgUmVhY3ROb2RlLFxuICBSZWZPYmplY3QsXG4gIFNldFN0YXRlQWN0aW9uLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAnLi4vQ2hlY2tib3gnXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uL1BvcHVwJ1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuLi9Ta2VsZXRvbidcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnLi4vU3RhY2snXG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vVGV4dCdcbmltcG9ydCB7IERpc3BsYXlPcHRpb24gfSBmcm9tICcuL0Ryb3Bkb3duT3B0aW9uJ1xuaW1wb3J0IHsgU2VhcmNoQmFyRHJvcGRvd24gfSBmcm9tICcuL1NlYXJjaEJhckRyb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2VsZWN0SW5wdXQgfSBmcm9tICcuL1NlbGVjdElucHV0UHJvdmlkZXInXG5pbXBvcnQgdHlwZSB7IERhdGFUeXBlLCBPcHRpb25UeXBlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IElOUFVUX1NJWkVfSEVJR0hUIH0gZnJvbSAnLi90eXBlcydcblxuY29uc3QgRFJPUERPV05fTUFYX0hFSUdIVCA9IDI1NlxuXG5leHBvcnQgdHlwZSBEcm9wZG93blByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBzZWFyY2hhYmxlOiBib29sZWFuXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmdcbiAgZm9vdGVyPzogKChjbG9zZURyb3Bkb3duOiAoKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpIHwgUmVhY3ROb2RlXG4gIHJlZlNlbGVjdDogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbiAgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJ1xuICBkcm9wZG93bkFsaWduPzogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBvcHVwPlsnYWxpZ24nXVxuICBwb3J0YWxUYXJnZXQ/OiBDb21wb25lbnRQcm9wczx0eXBlb2YgUG9wdXA+Wydwb3J0YWxUYXJnZXQnXVxufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVEcm9wZG93blByb3BzID0ge1xuICBpc0VtcHR5OiBib29sZWFuXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBsb2FkTW9yZT86IFJlYWN0Tm9kZVxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCdcbiAgZGVmYXVsdFNlYXJjaFZhbHVlOiBzdHJpbmcgfCBudWxsXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbn1cblxuY29uc3QgTk9OX1NFQVJDSEFCTEVfS0VZUyA9IFtcbiAgJ1RhYicsXG4gICcgJyxcbiAgJ0VudGVyJyxcbiAgJ0NhcHNMb2NrJyxcbiAgJ1NoaWZ0JyxcbiAgJ0Fycm93RG93bicsXG4gICdBcnJvd1VwJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0VzY2FwZScsXG5dXG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKFBvcHVwKWBcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBwYWRkaW5nLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbiAgcGFkZGluZy10b3A6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX07XG5cbiAgJltkYXRhLWdyb3VwZWQ9XCJ0cnVlXCJdIHtcbiAgICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIH1cbmBcbmNvbnN0IERyb3Bkb3duR3JvdXAgPSBzdHlsZWQuYnV0dG9uPHsgJ2RhdGEtc2VsZWN0Z3JvdXAnOiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBwYWRkaW5nLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBoZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbNF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjI1J119O1xuXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgICBib3JkZXItbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfSBzb2xpZCAkeyh7IHRoZW1lIH0pID0+XG4gICAgICB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kSG92ZXJ9O1xuICB9XG5gXG5jb25zdCBEcm9wZG93bkdyb3VwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcblxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzEuNSddfSAkeyh7IHRoZW1lIH0pID0+XG4gICAgdGhlbWUuc3BhY2VbJzInXX07XG4gIG1hcmdpbi1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjUnXX07XG4gIG1hcmdpbi1yaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuXG4gIGNvbG9yOiAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgYm9yZGVyOiAxcHggdHJhbnNwYXJlbnQgc29saWQ7XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICB9XG5cbiAgJlthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kRGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHREaXNhYmxlZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdOmhvdmVyLCBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICAgIHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdEaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmBcblxuY29uc3QgUG9wdXBGb290ZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfVxuICAgICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMS41XX0gJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2hhZG93cy5kcm9wZG93bn07XG5gXG5jb25zdCBTdHlsZWRDaGVja2JveCA9IHN0eWxlZChDaGVja2JveClgXG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAgLy8gcG9pbnRlci1ldmVudHM6IG5vbmUgcHJldmVudHMgYW55IGVycm9yIHdoZW4gdXNpbmcgdGhlIGNoZWNrYm94IGluIGEgZm9ybSBzaW5jZSBpdCBpcyBhbiB1bm5hbWVkIGlucHV0XG5cbmNvbnN0IEVtcHR5U3RhdGUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbmBcbmNvbnN0IExvYWRNb3JlID0gc3R5bGVkKFN0YWNrKWBcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbmBcblxuY29uc3QgbW92ZUZvY3VzRG93biA9ICgpID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgJyNpdGVtcyA+IGRpdltyb2xlPVwib3B0aW9uXCJdOm5vdChbZGlzYWJsZWRdKScsXG4gIClcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnM/Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBsaXN0TGVuZ3RoID0gb3B0aW9ucy5sZW5ndGhcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbbGlzdExlbmd0aCAtIDFdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpICsgMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IG1vdmVGb2N1c1VwID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoYWN0aXZlSXRlbSA9PT0gb3B0aW9uc1tpXSAmJiBhY3RpdmVJdGVtICE9PSBvcHRpb25zWzBdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpIC0gMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IGhhbmRsZUtleURvd25TZWxlY3QgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c0Rvd24oKVxuICB9XG5cbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c1VwKClcbiAgfVxuXG4gIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgIC8vIE5vIHNjcm9sbFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxufVxuXG5jb25zdCBoYW5kbGVLZXlEb3duID0gKFxuICBldmVudDogZ2xvYmFsVGhpcy5LZXlib2FyZEV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maW5kKG9wdGlvbiA9PlxuICAgICAgICBvcHRpb24uc2VhcmNoVGV4dFxuICAgICAgICAgID8gb3B0aW9uLnNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpXG4gICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgKVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IENyZWF0ZURyb3Bkb3duID0gKHtcbiAgaXNFbXB0eSxcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZSxcbiAgaXNMb2FkaW5nLFxufTogQ3JlYXRlRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgb25DaGFuZ2UsXG4gICAgb3B0aW9ucyxcbiAgICBtdWx0aXNlbGVjdCxcbiAgICBzZWxlY3RBbGwsXG4gICAgc2VsZWN0QWxsR3JvdXAsXG4gICAgZGlzcGxheWVkT3B0aW9ucyxcbiAgICBzZXRTZWxlY3RlZERhdGEsXG4gICAgc2VsZWN0ZWREYXRhLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCBmb2N1c2VkSXRlbVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0U2VhcmNoVmFsdWUgJiYgZm9jdXNlZEl0ZW1SZWY/LmN1cnJlbnQpIHtcbiAgICAgIGZvY3VzZWRJdGVtUmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRTZWFyY2hWYWx1ZV0pXG5cbiAgaWYgKGlzRW1wdHkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEVtcHR5U3RhdGUgZ2FwPXsyfSBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgIHtlbXB0eVN0YXRlID8/IChcbiAgICAgICAgICA8VGV4dCB2YXJpYW50PVwiYm9keVN0cm9uZ1wiIGFzPVwicFwiPlxuICAgICAgICAgICAgTm8gb3B0aW9uc1xuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKX1cbiAgICAgIDwvRW1wdHlTdGF0ZT5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbGljayA9IChjbGlja2VkT3B0aW9uOiBPcHRpb25UeXBlLCBncm91cD86IHN0cmluZykgPT4ge1xuICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RPcHRpb24nLCBjbGlja2VkT3B0aW9uLCBncm91cCB9KVxuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhjbGlja2VkT3B0aW9uLnZhbHVlKSkge1xuICAgICAgICBvbkNoYW5nZT8uKFxuICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5maWx0ZXIoXG4gICAgICAgICAgICB2YWwgPT4gdmFsICE9PSBjbGlja2VkT3B0aW9uLnZhbHVlLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcywgY2xpY2tlZE9wdGlvbi52YWx1ZV0pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uQ2hhbmdlPy4oY2xpY2tlZE9wdGlvbi52YWx1ZSlcbiAgICB9XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUobXVsdGlzZWxlY3QpIC8vIGhpZGUgdGhlIGRyb3Bkb3duIG9uIGNsaWNrIHdoZW4gc2luZ2xlIHNlbGVjdCBvbmx5XG4gIH1cblxuICBjb25zdCBzZWxlY3RBbGxPcHRpb25zID0gKCkgPT4ge1xuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdEFsbCcgfSlcbiAgICAgIGlmIChzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWQgJiYgb25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UoW10pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhbGxWYWx1ZXM6IE9wdGlvblR5cGVbXSA9IFtdXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT5cbiAgICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGFsbFZhbHVlcy5wdXNoKG9wdGlvbilcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9ucy5tYXAob3B0aW9uID0+IGFsbFZhbHVlcy5wdXNoKG9wdGlvbikpXG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2U/LihhbGxWYWx1ZXMubWFwKHZhbHVlID0+IHZhbHVlLnZhbHVlKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RHcm91cCA9IChncm91cDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0R3JvdXAnLCBzZWxlY3RlZEdyb3VwOiBncm91cCB9KVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZERhdGEuc2VsZWN0ZWRHcm91cHMuaW5jbHVkZXMoZ3JvdXApKSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXS5maWx0ZXIoXG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlID0+XG4gICAgICAgICAgICAgICFvcHRpb25zW2dyb3VwXS5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkVmFsdWVzID0gWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlc11cblxuICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT5cbiAgICAgICAgICAgIG5ld1NlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgfHwgb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG5ld1NlbGVjdGVkVmFsdWVzLnB1c2gob3B0aW9uLnZhbHVlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgb25DaGFuZ2U/LihuZXdTZWxlY3RlZFZhbHVlcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAhQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSA/IChcbiAgICA8RHJvcGRvd25Db250YWluZXJcbiAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgIGlkPVwic2VsZWN0LWRyb3Bkb3duXCJcbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93blNlbGVjdH1cbiAgICAgIGRhdGEtZ3JvdXBlZFxuICAgID5cbiAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGwtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtncm91cC50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFzPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwV3JhcHBlcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPVwiMC4yNVwiPlxuICAgICAgICAgICAgICAgIHtkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5tYXAoKG9wdGlvbiwgaW5kZXhPcHRpb24pID0+IChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAga2V5PXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9eyEhb3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4T3B0aW9ufWB9XG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICkpfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApIDogKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZ2FwPXswLjI1fVxuICAgICAgZGF0YS1ncm91cGVkPXtmYWxzZX1cbiAgICA+XG4gICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiIGdhcD17MC4yNX0gdGFiSW5kZXg9ey0xfT5cbiAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICBhcmlhLWRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gc2VsZWN0QWxsT3B0aW9ucygpIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdGFjayBkaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHlTbWFsbFwiXG4gICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgcHJvbWluZW5jZT1cIndlYWtcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9ezAuMjV9PlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgIGtleT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPXshIW9wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBoYW5kbGVDbGljayhvcHRpb24pIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICApKVxuICAgICAgICApfVxuICAgICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICAgIDwvU3RhY2s+XG4gICAgPC9Ecm9wZG93bkNvbnRhaW5lcj5cbiAgKVxufVxuZXhwb3J0IGNvbnN0IERyb3Bkb3duID0gKHtcbiAgY2hpbGRyZW4sXG4gIGVtcHR5U3RhdGUsXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uLFxuICBzZWFyY2hhYmxlLFxuICBwbGFjZWhvbGRlcixcbiAgZm9vdGVyLFxuICByZWZTZWxlY3QsXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGlzTG9hZGluZyxcbiAgc2l6ZSxcbiAgZHJvcGRvd25BbGlnbixcbiAgcG9ydGFsVGFyZ2V0LFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZlNlbGVjdC5jdXJyZW50ICYmIGlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9XG4gICAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSArXG4gICAgICAgIERST1BET1dOX01BWF9IRUlHSFQgK1xuICAgICAgICBOdW1iZXIodGhlbWUuc2l6aW5nW0lOUFVUX1NJWkVfSEVJR0hUW3NpemVdXS5yZXBsYWNlKCdyZW0nLCAnJykpICogMTYgK1xuICAgICAgICBOdW1iZXIucGFyc2VJbnQodGhlbWUuc3BhY2VbJzUnXSwgMTApXG4gICAgICBjb25zdCBvdmVyZmxvdyA9IHBvc2l0aW9uIC0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7XG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrZHJvcC1tb2RhbCcpXG5cbiAgICAgICAgaWYgKG1vZGFsRWxlbWVudCkge1xuICAgICAgICAgIG1vZGFsRWxlbWVudC5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgICB9IGVsc2Ugd2luZG93LnNjcm9sbEJ5KHsgdG9wOiBvdmVyZmxvdywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pXG4gICAgICB9XG4gICAgfVxuICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2lzRHJvcGRvd25WaXNpYmxlLCByZWZTZWxlY3QsIHNpemUsIHJlZi5jdXJyZW50XSlcblxuICBjb25zdCByZXNpemVEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICByZWZTZWxlY3QuY3VycmVudCAmJlxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiAwXG4gICAgKSB7XG4gICAgICBzZXRXaWR0aChyZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aClcbiAgICB9XG4gIH0sIFtyZWZTZWxlY3RdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVzaXplRHJvcGRvd24oKVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZURyb3Bkb3duKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcbiAgfSwgW3Jlc2l6ZURyb3Bkb3duXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2VhcmNoSW5wdXQpIHtcbiAgICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gICAgfVxuICB9LCBbb25TZWFyY2gsIG9wdGlvbnMsIHNlYXJjaElucHV0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIHNldFNlYXJjaCgnJylcbiAgICB9XG5cbiAgICBpZiAoIXNlYXJjaGFibGUpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICBoYW5kbGVLZXlEb3duKFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICksXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICghc2VhcmNoYWJsZSkge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgICBoYW5kbGVLZXlEb3duKFxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICByZWYsXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgIG9wdGlvbnMsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoLFxuICAgIHJlZlNlbGVjdCxcbiAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgIHNlYXJjaGFibGUsXG4gIF0pXG5cbiAgLy8gTm8gZGF0YSBpcyBkaXNwbGF5ZWQgKGJlY2F1c2Ugb2YgdGhlIHNlYXJjaCBvciBiZWNhdXNlIG5vIGRhdGEgaXMgcHJvdmlkZWQpXG4gIC8vIFNldCB0byB0cnVlIHdoZW4gbm9EYXRhIGJ5IGRlZmF1bHRcbiAgY29uc3QgaXNFbXB0eSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChudW1iZXJPZk9wdGlvbnMgPT09IDApIHJldHVybiB0cnVlXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGxheWVkT3B0aW9ucykpIHtcbiAgICAgIHJldHVybiBkaXNwbGF5ZWRPcHRpb25zLmxlbmd0aCA9PT0gMFxuICAgIH1cbiAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgICBpZiAoZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9LCBbZGlzcGxheWVkT3B0aW9ucywgbnVtYmVyT2ZPcHRpb25zXSlcblxuICBjb25zdCBjb21wdXRlZEZvb3RlciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChmb290ZXIgJiYgIWlzRW1wdHkpIHtcbiAgICAgIGlmICh0eXBlb2YgZm9vdGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFBvcHVwRm9vdGVyPntmb290ZXIoKCkgPT4gc2V0SXNEcm9wZG93blZpc2libGUoZmFsc2UpKX08L1BvcHVwRm9vdGVyPlxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiA8UG9wdXBGb290ZXI+e2Zvb3Rlcn08L1BvcHVwRm9vdGVyPlxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH0sIFtpc0VtcHR5LCBmb290ZXIsIHNldElzRHJvcGRvd25WaXNpYmxlXSlcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRQb3B1cFxuICAgICAgdmlzaWJsZT17aXNEcm9wZG93blZpc2libGV9XG4gICAgICB0ZXh0PXtcbiAgICAgICAgPFN0YWNrPlxuICAgICAgICAgIHtzZWFyY2hhYmxlICYmICFpc0xvYWRpbmcgJiYgbnVtYmVyT2ZPcHRpb25zID49IDYgPyAoXG4gICAgICAgICAgICA8U2VhcmNoQmFyRHJvcGRvd25cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zPXtkaXNwbGF5ZWRPcHRpb25zfVxuICAgICAgICAgICAgICBzZXRTZWFyY2hCYXJBY3RpdmU9e3NldFNlYXJjaEJhckFjdGl2ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPENyZWF0ZURyb3Bkb3duXG4gICAgICAgICAgICBpc0VtcHR5PXtpc0VtcHR5fVxuICAgICAgICAgICAgZW1wdHlTdGF0ZT17ZW1wdHlTdGF0ZX1cbiAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgIGxvYWRNb3JlPXtsb2FkTW9yZX1cbiAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaFZhbHVlPXtkZWZhdWx0U2VhcmNoVmFsdWV9XG4gICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtjb21wdXRlZEZvb3Rlcn1cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIH1cbiAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICBkaXNhYmxlQW5pbWF0aW9uXG4gICAgICBtYXhXaWR0aD17bWF4V2lkdGggPz8gcmVmU2VsZWN0LmN1cnJlbnQ/Lm9mZnNldFdpZHRofVxuICAgICAgaGFzQXJyb3c9e2ZhbHNlfVxuICAgICAgcmVmPXtyZWZ9XG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgIGRlYm91bmNlRGVsYXk9ezB9XG4gICAgICBjb250YWluZXJGdWxsV2lkdGhcbiAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZVxuICAgICAgb25DbG9zZT17KCkgPT4gc2V0SXNEcm9wZG93blZpc2libGUoZmFsc2UpfVxuICAgICAgYWxpZ249e2Ryb3Bkb3duQWxpZ24gPz8gJ3N0YXJ0J31cbiAgICAgIHBvcnRhbFRhcmdldD17cG9ydGFsVGFyZ2V0fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1N0eWxlZFBvcHVwPlxuICApXG59XG4iXX0= */"));
172
+ }) => theme.space[0.5], ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4TDhCIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0L0Ryb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgdHlwZSB7XG4gIENvbXBvbmVudFByb3BzLFxuICBEaXNwYXRjaCxcbiAgS2V5Ym9hcmRFdmVudCxcbiAgUmVhY3ROb2RlLFxuICBSZWZPYmplY3QsXG4gIFNldFN0YXRlQWN0aW9uLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IE1vZGFsQ29udGV4dCB9IGZyb20gJy4uL01vZGFsL01vZGFsUHJvdmlkZXInXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uL1BvcHVwJ1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuLi9Ta2VsZXRvbidcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnLi4vU3RhY2snXG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vVGV4dCdcbmltcG9ydCB7IERpc3BsYXlPcHRpb24gfSBmcm9tICcuL0Ryb3Bkb3duT3B0aW9uJ1xuaW1wb3J0IHsgU2VhcmNoQmFyRHJvcGRvd24gfSBmcm9tICcuL1NlYXJjaEJhckRyb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2VsZWN0SW5wdXQgfSBmcm9tICcuL1NlbGVjdElucHV0UHJvdmlkZXInXG5pbXBvcnQgdHlwZSB7IERhdGFUeXBlLCBPcHRpb25UeXBlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IElOUFVUX1NJWkVfSEVJR0hUIH0gZnJvbSAnLi90eXBlcydcblxuY29uc3QgRFJPUERPV05fTUFYX0hFSUdIVCA9IDI1NlxuXG5leHBvcnQgdHlwZSBEcm9wZG93blByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBzZWFyY2hhYmxlOiBib29sZWFuXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmdcbiAgZm9vdGVyPzogKChjbG9zZURyb3Bkb3duOiAoKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpIHwgUmVhY3ROb2RlXG4gIHJlZlNlbGVjdDogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbiAgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJ1xuICBkcm9wZG93bkFsaWduPzogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBvcHVwPlsnYWxpZ24nXVxuICBwb3J0YWxUYXJnZXQ/OiBDb21wb25lbnRQcm9wczx0eXBlb2YgUG9wdXA+Wydwb3J0YWxUYXJnZXQnXVxufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVEcm9wZG93blByb3BzID0ge1xuICBpc0VtcHR5OiBib29sZWFuXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBsb2FkTW9yZT86IFJlYWN0Tm9kZVxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCdcbiAgZGVmYXVsdFNlYXJjaFZhbHVlOiBzdHJpbmcgfCBudWxsXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbn1cblxuY29uc3QgTk9OX1NFQVJDSEFCTEVfS0VZUyA9IFtcbiAgJ1RhYicsXG4gICcgJyxcbiAgJ0VudGVyJyxcbiAgJ0NhcHNMb2NrJyxcbiAgJ1NoaWZ0JyxcbiAgJ0Fycm93RG93bicsXG4gICdBcnJvd1VwJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0VzY2FwZScsXG5dXG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKFBvcHVwKWBcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBwYWRkaW5nLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbiAgcGFkZGluZy10b3A6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX07XG5cbiAgJltkYXRhLWdyb3VwZWQ9XCJ0cnVlXCJdIHtcbiAgICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIH1cbmBcbmNvbnN0IERyb3Bkb3duR3JvdXAgPSBzdHlsZWQuYnV0dG9uPHsgJ2RhdGEtc2VsZWN0Z3JvdXAnOiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBwYWRkaW5nLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBoZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbNF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjI1J119O1xuXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgICBib3JkZXItbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfSBzb2xpZCAkeyh7IHRoZW1lIH0pID0+XG4gICAgICB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kSG92ZXJ9O1xuICB9XG5gXG5jb25zdCBEcm9wZG93bkdyb3VwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcblxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzEuNSddfSAkeyh7IHRoZW1lIH0pID0+XG4gICAgdGhlbWUuc3BhY2VbJzInXX07XG4gIG1hcmdpbi1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjUnXX07XG4gIG1hcmdpbi1yaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuXG4gIGNvbG9yOiAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcbiAgYm9yZGVyOiAxcHggdHJhbnNwYXJlbnQgc29saWQ7XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICB9XG5cbiAgJlthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kRGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHREaXNhYmxlZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdOmhvdmVyLCBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT5cbiAgICAgIHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdEaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmBcblxuY29uc3QgUG9wdXBGb290ZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfVxuICAgICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMS41XX0gJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gIGJveC1zaGFkb3c6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2hhZG93cy5kcm9wZG93bn07XG5gXG5jb25zdCBTdHlsZWRDaGVja2JveCA9IHN0eWxlZChDaGVja2JveClgXG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmAgLy8gcG9pbnRlci1ldmVudHM6IG5vbmUgcHJldmVudHMgYW55IGVycm9yIHdoZW4gdXNpbmcgdGhlIGNoZWNrYm94IGluIGEgZm9ybSBzaW5jZSBpdCBpcyBhbiB1bm5hbWVkIGlucHV0XG5cbmNvbnN0IEVtcHR5U3RhdGUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbmBcbmNvbnN0IExvYWRNb3JlID0gc3R5bGVkKFN0YWNrKWBcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcbmBcblxuY29uc3QgbW92ZUZvY3VzRG93biA9ICgpID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgJyNpdGVtcyA+IGRpdltyb2xlPVwib3B0aW9uXCJdOm5vdChbZGlzYWJsZWRdKScsXG4gIClcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnM/Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBsaXN0TGVuZ3RoID0gb3B0aW9ucy5sZW5ndGhcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbbGlzdExlbmd0aCAtIDFdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpICsgMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IG1vdmVGb2N1c1VwID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoYWN0aXZlSXRlbSA9PT0gb3B0aW9uc1tpXSAmJiBhY3RpdmVJdGVtICE9PSBvcHRpb25zWzBdKSB7XG4gICAgICAgIDsob3B0aW9uc1tpIC0gMV0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IGhhbmRsZUtleURvd25TZWxlY3QgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c0Rvd24oKVxuICB9XG5cbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIG1vdmVGb2N1c1VwKClcbiAgfVxuXG4gIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgIC8vIE5vIHNjcm9sbFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxufVxuXG5jb25zdCBoYW5kbGVLZXlEb3duID0gKFxuICBldmVudDogZ2xvYmFsVGhpcy5LZXlib2FyZEV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maW5kKG9wdGlvbiA9PlxuICAgICAgICBvcHRpb24uc2VhcmNoVGV4dFxuICAgICAgICAgID8gb3B0aW9uLnNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpXG4gICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgKVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmNvbnN0IENyZWF0ZURyb3Bkb3duID0gKHtcbiAgaXNFbXB0eSxcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZSxcbiAgaXNMb2FkaW5nLFxufTogQ3JlYXRlRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgb25DaGFuZ2UsXG4gICAgb3B0aW9ucyxcbiAgICBtdWx0aXNlbGVjdCxcbiAgICBzZWxlY3RBbGwsXG4gICAgc2VsZWN0QWxsR3JvdXAsXG4gICAgZGlzcGxheWVkT3B0aW9ucyxcbiAgICBzZXRTZWxlY3RlZERhdGEsXG4gICAgc2VsZWN0ZWREYXRhLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCBmb2N1c2VkSXRlbVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0U2VhcmNoVmFsdWUgJiYgZm9jdXNlZEl0ZW1SZWY/LmN1cnJlbnQpIHtcbiAgICAgIGZvY3VzZWRJdGVtUmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRTZWFyY2hWYWx1ZV0pXG5cbiAgaWYgKGlzRW1wdHkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEVtcHR5U3RhdGUgYWxpZ25JdGVtcz1cImNlbnRlclwiIGdhcD17Mn0+XG4gICAgICAgIHtlbXB0eVN0YXRlID8/IChcbiAgICAgICAgICA8VGV4dCBhcz1cInBcIiB2YXJpYW50PVwiYm9keVN0cm9uZ1wiPlxuICAgICAgICAgICAgTm8gb3B0aW9uc1xuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKX1cbiAgICAgIDwvRW1wdHlTdGF0ZT5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbGljayA9IChjbGlja2VkT3B0aW9uOiBPcHRpb25UeXBlLCBncm91cD86IHN0cmluZykgPT4ge1xuICAgIHNldFNlbGVjdGVkRGF0YSh7IGNsaWNrZWRPcHRpb24sIGdyb3VwLCB0eXBlOiAnc2VsZWN0T3B0aW9uJyB9KVxuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhjbGlja2VkT3B0aW9uLnZhbHVlKSkge1xuICAgICAgICBvbkNoYW5nZT8uKFxuICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5maWx0ZXIoXG4gICAgICAgICAgICB2YWwgPT4gdmFsICE9PSBjbGlja2VkT3B0aW9uLnZhbHVlLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcywgY2xpY2tlZE9wdGlvbi52YWx1ZV0pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uQ2hhbmdlPy4oY2xpY2tlZE9wdGlvbi52YWx1ZSlcbiAgICB9XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUobXVsdGlzZWxlY3QpIC8vIGhpZGUgdGhlIGRyb3Bkb3duIG9uIGNsaWNrIHdoZW4gc2luZ2xlIHNlbGVjdCBvbmx5XG4gIH1cblxuICBjb25zdCBzZWxlY3RBbGxPcHRpb25zID0gKCkgPT4ge1xuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdEFsbCcgfSlcbiAgICAgIGlmIChzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWQgJiYgb25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UoW10pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhbGxWYWx1ZXM6IE9wdGlvblR5cGVbXSA9IFtdXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT5cbiAgICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGFsbFZhbHVlcy5wdXNoKG9wdGlvbilcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9ucy5tYXAob3B0aW9uID0+IGFsbFZhbHVlcy5wdXNoKG9wdGlvbikpXG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2U/LihhbGxWYWx1ZXMubWFwKHZhbHVlID0+IHZhbHVlLnZhbHVlKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RHcm91cCA9IChncm91cDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyBzZWxlY3RlZEdyb3VwOiBncm91cCwgdHlwZTogJ3NlbGVjdEdyb3VwJyB9KVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZERhdGEuc2VsZWN0ZWRHcm91cHMuaW5jbHVkZXMoZ3JvdXApKSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXS5maWx0ZXIoXG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlID0+XG4gICAgICAgICAgICAgICFvcHRpb25zW2dyb3VwXS5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkVmFsdWVzID0gWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlc11cblxuICAgICAgICAgIG9wdGlvbnNbZ3JvdXBdLm1hcChvcHRpb24gPT5cbiAgICAgICAgICAgIG5ld1NlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgfHwgb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG5ld1NlbGVjdGVkVmFsdWVzLnB1c2gob3B0aW9uLnZhbHVlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgb25DaGFuZ2U/LihuZXdTZWxlY3RlZFZhbHVlcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAhQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSA/IChcbiAgICA8RHJvcGRvd25Db250YWluZXJcbiAgICAgIGRhdGEtZ3JvdXBlZFxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgID5cbiAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgdmFyaWFudD1cImJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHlTbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBnYXA9ezAuMjV9IGtleT17Z3JvdXB9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2Bncm91cC0ke2luZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RHcm91cChncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9e3NlbGVjdEFsbEdyb3VwID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RBbGxHcm91cCA/IGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtncm91cC50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bkdyb3VwV3JhcHBlcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTdGFjayBnYXA9XCIwLjI1XCIgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICAgIHtkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5tYXAoKG9wdGlvbiwgaW5kZXhPcHRpb24pID0+IChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2BvcHRpb24tJHtvcHRpb24udmFsdWV9YH1cbiAgICAgICAgICAgICAgICAgICAgaWQ9e2BvcHRpb24tJHtpbmRleE9wdGlvbn1gfVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlZj17XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSBkZWZhdWx0U2VhcmNoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uc2VhcmNoVGV4dCA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGZvY3VzZWRJdGVtUmVmXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9eyFvcHRpb24uZGlzYWJsZWQgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICkpfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApIDogKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgZGF0YS1ncm91cGVkPXtmYWxzZX1cbiAgICAgIGdhcD17MC4yNX1cbiAgICAgIGlkPVwic2VsZWN0LWRyb3Bkb3duXCJcbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93blNlbGVjdH1cbiAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICA+XG4gICAgICB7c2VsZWN0QWxsICYmIG11bHRpc2VsZWN0ID8gKFxuICAgICAgICA8U3RhY2sgZ2FwPXswLjI1fSBpZD1cIml0ZW1zXCIgdGFiSW5kZXg9ey0xfT5cbiAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICBhcmlhLWRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gc2VsZWN0QWxsT3B0aW9ucygpIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGwtY2hlY2tib3hcIlxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdGFjayBkaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgdmFyaWFudD1cImJvZHlcIj5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFN0YWNrIGdhcD17MC4yNX0gaWQ9XCJpdGVtc1wiPlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9eyEhb3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAga2V5PXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBoYW5kbGVDbGljayhvcHRpb24pIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlZj17XG4gICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSBkZWZhdWx0U2VhcmNoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICBvcHRpb24uc2VhcmNoVGV4dCA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlXG4gICAgICAgICAgICAgICAgICA/IGZvY3VzZWRJdGVtUmVmXG4gICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9eyFvcHRpb24uZGlzYWJsZWQgPyAwIDogLTF9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICApKVxuICAgICAgICApfVxuICAgICAgICB7bG9hZE1vcmUgPyA8TG9hZE1vcmU+e2xvYWRNb3JlfTwvTG9hZE1vcmU+IDogbnVsbH1cbiAgICAgIDwvU3RhY2s+XG4gICAgPC9Ecm9wZG93bkNvbnRhaW5lcj5cbiAgKVxufVxuZXhwb3J0IGNvbnN0IERyb3Bkb3duID0gKHtcbiAgY2hpbGRyZW4sXG4gIGVtcHR5U3RhdGUsXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uLFxuICBzZWFyY2hhYmxlLFxuICBwbGFjZWhvbGRlcixcbiAgZm9vdGVyLFxuICByZWZTZWxlY3QsXG4gIGxvYWRNb3JlLFxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQsXG4gIGlzTG9hZGluZyxcbiAgc2l6ZSxcbiAgZHJvcGRvd25BbGlnbixcbiAgcG9ydGFsVGFyZ2V0LFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuICBjb25zdCBtb2RhbENvbnRleHQgPSB1c2VDb250ZXh0KE1vZGFsQ29udGV4dClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWZTZWxlY3QuY3VycmVudCAmJiBpc0Ryb3Bkb3duVmlzaWJsZSkge1xuICAgICAgY29uc3QgcG9zaXRpb24gPVxuICAgICAgICByZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20gK1xuICAgICAgICBEUk9QRE9XTl9NQVhfSEVJR0hUICtcbiAgICAgICAgTnVtYmVyKHRoZW1lLnNpemluZ1tJTlBVVF9TSVpFX0hFSUdIVFtzaXplXV0ucmVwbGFjZSgncmVtJywgJycpKSAqIDE2ICtcbiAgICAgICAgTnVtYmVyLnBhcnNlSW50KHRoZW1lLnNwYWNlWyc1J10sIDEwKVxuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBwb3NpdGlvbiAtIHdpbmRvdy5pbm5lckhlaWdodCArIDMyXG4gICAgICBpZiAob3ZlcmZsb3cgPiAwICYmIG1vZGFsQ29udGV4dCkge1xuICAgICAgICBjb25zdCBjdXJyZW50TW9kYWwgPSBtb2RhbENvbnRleHQub3BlbmVkTW9kYWxzWzBdXG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGN1cnJlbnRNb2RhbD8ucmVmLmN1cnJlbnRcblxuICAgICAgICBpZiAobW9kYWxFbGVtZW50KSB7XG4gICAgICAgICAgY29uc3QgcGFyZW50RWxlbWVudCA9IG1vZGFsRWxlbWVudC5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50XG4gICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuc2Nyb2xsQnkoe1xuICAgICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgICAgICAgIHRvcDogb3ZlcmZsb3csXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHdpbmRvdy5zY3JvbGxCeSh7IGJlaGF2aW9yOiAnc21vb3RoJywgdG9wOiBvdmVyZmxvdyB9KVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtpc0Ryb3Bkb3duVmlzaWJsZSwgcmVmU2VsZWN0LCBzaXplLCByZWYuY3VycmVudF0pXG5cbiAgY29uc3QgcmVzaXplRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQgJiZcbiAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoID4gMFxuICAgICkge1xuICAgICAgc2V0V2lkdGgocmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpXG4gICAgfVxuICB9LCBbcmVmU2VsZWN0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlc2l6ZURyb3Bkb3duKClcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplRHJvcGRvd24pXG4gIH0sIFtyZXNpemVEcm9wZG93bl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNlYXJjaElucHV0KSB7XG4gICAgICBvblNlYXJjaChvcHRpb25zKVxuICAgIH1cbiAgfSwgW29uU2VhcmNoLCBvcHRpb25zLCBzZWFyY2hJbnB1dF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBzZXREZWZhdWx0U2VhcmNoKG51bGwpXG4gICAgICBzZXRTZWFyY2goJycpXG4gICAgfVxuXG4gICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgc2VhcmNoLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoIXNlYXJjaGFibGUpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGV2ZW50ID0+XG4gICAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICAgICAgICAgIHNldFNlYXJjaCxcbiAgICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGlzRHJvcGRvd25WaXNpYmxlLFxuICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICBvcHRpb25zLFxuICAgIG9uU2VhcmNoLFxuICAgIHNlYXJjaCxcbiAgICByZWZTZWxlY3QsXG4gICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hhYmxlLFxuICBdKVxuXG4gIC8vIE5vIGRhdGEgaXMgZGlzcGxheWVkIChiZWNhdXNlIG9mIHRoZSBzZWFyY2ggb3IgYmVjYXVzZSBubyBkYXRhIGlzIHByb3ZpZGVkKVxuICAvLyBTZXQgdG8gdHJ1ZSB3aGVuIG5vRGF0YSBieSBkZWZhdWx0XG4gIGNvbnN0IGlzRW1wdHkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAobnVtYmVyT2ZPcHRpb25zID09PSAwKSByZXR1cm4gdHJ1ZVxuICAgIGlmIChBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gZGlzcGxheWVkT3B0aW9ucy5sZW5ndGggPT09IDBcbiAgICB9XG4gICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucylcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgICAgaWYgKGRpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfSwgW2Rpc3BsYXllZE9wdGlvbnMsIG51bWJlck9mT3B0aW9uc10pXG5cbiAgY29uc3QgY29tcHV0ZWRGb290ZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoZm9vdGVyICYmICFpc0VtcHR5KSB7XG4gICAgICBpZiAodHlwZW9mIGZvb3RlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxQb3B1cEZvb3Rlcj57Zm9vdGVyKCgpID0+IHNldElzRHJvcGRvd25WaXNpYmxlKGZhbHNlKSl9PC9Qb3B1cEZvb3Rlcj5cbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gPFBvcHVwRm9vdGVyPntmb290ZXJ9PC9Qb3B1cEZvb3Rlcj5cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9LCBbaXNFbXB0eSwgZm9vdGVyLCBzZXRJc0Ryb3Bkb3duVmlzaWJsZV0pXG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkUG9wdXBcbiAgICAgIGFsaWduPXtkcm9wZG93bkFsaWduID8/ICdzdGFydCd9XG4gICAgICBjb250YWluZXJGdWxsV2lkdGhcbiAgICAgIGRlYm91bmNlRGVsYXk9ezB9XG4gICAgICBkaXNhYmxlQW5pbWF0aW9uXG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICBoaWRlT25DbGlja091dHNpZGVcbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBvbkNsb3NlPXsoKSA9PiBzZXRJc0Ryb3Bkb3duVmlzaWJsZShmYWxzZSl9XG4gICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgcG9ydGFsVGFyZ2V0PXtwb3J0YWxUYXJnZXR9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgdGV4dD17XG4gICAgICAgIDxTdGFjaz5cbiAgICAgICAgICB7c2VhcmNoYWJsZSAmJiAhaXNMb2FkaW5nICYmIG51bWJlck9mT3B0aW9ucyA+PSA2ID8gKFxuICAgICAgICAgICAgPFNlYXJjaEJhckRyb3Bkb3duXG4gICAgICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnM9e2Rpc3BsYXllZE9wdGlvbnN9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgc2V0U2VhcmNoQmFyQWN0aXZlPXtzZXRTZWFyY2hCYXJBY3RpdmV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxDcmVhdGVEcm9wZG93blxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaFZhbHVlPXtkZWZhdWx0U2VhcmNoVmFsdWV9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICBlbXB0eVN0YXRlPXtlbXB0eVN0YXRlfVxuICAgICAgICAgICAgaXNFbXB0eT17aXNFbXB0eX1cbiAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgICAgbG9hZE1vcmU9e2xvYWRNb3JlfVxuICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7Y29tcHV0ZWRGb290ZXJ9XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICB9XG4gICAgICB2aXNpYmxlPXtpc0Ryb3Bkb3duVmlzaWJsZX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdHlsZWRQb3B1cD5cbiAgKVxufVxuIl19 */"));
172
173
  const moveFocusDown = () => {
173
174
  const options = document.querySelectorAll('#items > div[role="option"]:not([disabled])');
174
175
  const activeItem = document.activeElement;
@@ -261,13 +262,13 @@ const CreateDropdown = ({
261
262
  }
262
263
  }, [defaultSearchValue]);
263
264
  if (isEmpty) {
264
- return /* @__PURE__ */ jsx(EmptyState, { gap: 2, alignItems: "center", children: emptyState ?? /* @__PURE__ */ jsx(Text, { variant: "bodyStrong", as: "p", children: "No options" }) });
265
+ return /* @__PURE__ */ jsx(EmptyState, { alignItems: "center", gap: 2, children: emptyState ?? /* @__PURE__ */ jsx(Text, { as: "p", variant: "bodyStrong", children: "No options" }) });
265
266
  }
266
267
  const handleClick = (clickedOption, group) => {
267
268
  setSelectedData({
268
- type: "selectOption",
269
269
  clickedOption,
270
- group
270
+ group,
271
+ type: "selectOption"
271
272
  });
272
273
  if (multiselect) {
273
274
  if (selectedData.selectedValues.includes(clickedOption.value)) {
@@ -306,8 +307,8 @@ const CreateDropdown = ({
306
307
  const handleSelectGroup = (group) => {
307
308
  if (multiselect) {
308
309
  setSelectedData({
309
- type: "selectGroup",
310
- selectedGroup: group
310
+ selectedGroup: group,
311
+ type: "selectGroup"
311
312
  });
312
313
  if (!Array.isArray(options)) {
313
314
  if (selectedData.selectedGroups.includes(group)) {
@@ -321,46 +322,46 @@ const CreateDropdown = ({
321
322
  }
322
323
  }
323
324
  };
324
- return !Array.isArray(displayedOptions) ? /* @__PURE__ */ jsxs(DropdownContainer, { role: "listbox", id: "select-dropdown", onKeyDown: handleKeyDownSelect, "data-grouped": true, children: [
325
+ return !Array.isArray(displayedOptions) ? /* @__PURE__ */ jsxs(DropdownContainer, { "data-grouped": true, id: "select-dropdown", onKeyDown: handleKeyDownSelect, role: "listbox", children: [
325
326
  isLoading ? /* @__PURE__ */ jsx(Skeleton, { variant: "block" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
326
- selectAll && multiselect ? /* @__PURE__ */ jsx(Stack, { id: "items", children: /* @__PURE__ */ jsx(DropdownItem, { "aria-disabled": false, "aria-selected": selectedData.allSelected, "aria-label": "select-all", "data-testid": "select-all", id: "select-all", tabIndex: 0, role: "option", onKeyDown: (event) => [" ", "Enter"].includes(event.key) ? selectAllOptions() : null, onClick: selectAllOptions, children: /* @__PURE__ */ jsx(StyledCheckbox, { checked: selectedData.allSelected, disabled: false, value: "select-all", "data-testid": "select-all-checkbox", tabIndex: -1, onChange: selectAllOptions, children: /* @__PURE__ */ jsxs(Stack, { direction: "column", children: [
327
- /* @__PURE__ */ jsx(Text, { as: "span", variant: "body", placement: "left", children: selectAll.label }),
328
- /* @__PURE__ */ jsx(Text, { as: "span", variant: "bodySmall", sentiment: "neutral", placement: "left", prominence: "weak", children: selectAll.description })
327
+ selectAll && multiselect ? /* @__PURE__ */ jsx(Stack, { id: "items", children: /* @__PURE__ */ jsx(DropdownItem, { "aria-disabled": false, "aria-label": "select-all", "aria-selected": selectedData.allSelected, "data-testid": "select-all", id: "select-all", onClick: selectAllOptions, onKeyDown: (event) => [" ", "Enter"].includes(event.key) ? selectAllOptions() : null, role: "option", tabIndex: 0, children: /* @__PURE__ */ jsx(StyledCheckbox, { checked: selectedData.allSelected, "data-testid": "select-all-checkbox", disabled: false, onChange: selectAllOptions, tabIndex: -1, value: "select-all", children: /* @__PURE__ */ jsxs(Stack, { direction: "column", children: [
328
+ /* @__PURE__ */ jsx(Text, { as: "span", placement: "left", variant: "body", children: selectAll.label }),
329
+ /* @__PURE__ */ jsx(Text, { as: "span", placement: "left", prominence: "weak", sentiment: "neutral", variant: "bodySmall", children: selectAll.description })
329
330
  ] }) }) }) }) : null,
330
331
  Object.keys(displayedOptions).map((group, index) => /* @__PURE__ */ jsxs(Stack, { gap: 0.25, children: [
331
- displayedOptions[group].length > 0 ? /* @__PURE__ */ jsx(DropdownGroupWrapper, { id: selectAllGroup ? "items" : void 0, children: group ? /* @__PURE__ */ jsx(DropdownGroup, { type: "button", tabIndex: selectAllGroup ? 0 : -1, onKeyDown: (event) => {
332
+ displayedOptions[group].length > 0 ? /* @__PURE__ */ jsx(DropdownGroupWrapper, { id: selectAllGroup ? "items" : void 0, children: group ? /* @__PURE__ */ jsx(DropdownGroup, { "data-selectgroup": selectAllGroup, "data-testid": `group-${index}`, onClick: () => selectAllGroup ? handleSelectGroup(group) : null, onKeyDown: (event) => {
332
333
  if ([" ", "Enter"].includes(event.key)) {
333
334
  event.preventDefault();
334
335
  handleSelectGroup(group);
335
336
  }
336
- }, "data-selectgroup": selectAllGroup, role: "group", "data-testid": `group-${index}`, onClick: () => selectAllGroup ? handleSelectGroup(group) : null, children: selectAllGroup ? /* @__PURE__ */ jsx(StyledCheckbox, { checked: selectedData.selectedGroups.includes(group), disabled: false, value: group, "data-testid": "select-group", tabIndex: -1, onChange: () => selectAllGroup ? handleSelectGroup(group) : null, children: /* @__PURE__ */ jsx(Text, { variant: "caption", as: "span", placement: "left", sentiment: "neutral", children: group.toUpperCase() }) }) : /* @__PURE__ */ jsx(Text, { variant: "caption", as: "span", placement: "left", sentiment: "neutral", children: group.toUpperCase() }) }, group) : null }) : null,
337
- /* @__PURE__ */ jsx(Stack, { id: "items", gap: "0.25", children: displayedOptions[group].map((option, indexOption) => /* @__PURE__ */ jsx(DropdownItem, { "aria-disabled": !!option.disabled, tabIndex: !option.disabled ? 0 : -1, "aria-selected": selectedData.selectedValues.includes(option.value) && !option.disabled, "aria-label": option.value, "data-testid": `option-${option.value}`, id: `option-${indexOption}`, role: "option", onClick: () => {
337
+ }, role: "group", tabIndex: selectAllGroup ? 0 : -1, type: "button", children: selectAllGroup ? /* @__PURE__ */ jsx(StyledCheckbox, { checked: selectedData.selectedGroups.includes(group), "data-testid": "select-group", disabled: false, onChange: () => selectAllGroup ? handleSelectGroup(group) : null, tabIndex: -1, value: group, children: /* @__PURE__ */ jsx(Text, { as: "span", placement: "left", sentiment: "neutral", variant: "caption", children: group.toUpperCase() }) }) : /* @__PURE__ */ jsx(Text, { as: "span", placement: "left", sentiment: "neutral", variant: "caption", children: group.toUpperCase() }) }, group) : null }) : null,
338
+ /* @__PURE__ */ jsx(Stack, { gap: "0.25", id: "items", children: displayedOptions[group].map((option, indexOption) => /* @__PURE__ */ jsx(DropdownItem, { "aria-disabled": !!option.disabled, "aria-label": option.value, "aria-selected": selectedData.selectedValues.includes(option.value) && !option.disabled, "data-testid": `option-${option.value}`, id: `option-${indexOption}`, onClick: () => {
338
339
  if (!option.disabled) {
339
340
  handleClick(option, group);
340
341
  }
341
- }, onKeyDown: (event) => [" ", "Enter"].includes(event.key) ? handleClick(option, group) : null, ref: option.value === defaultSearchValue || option.searchText === defaultSearchValue ? focusedItemRef : null, children: multiselect ? /* @__PURE__ */ jsx(StyledCheckbox, { checked: selectedData.selectedValues.includes(option.value) && !option.disabled, disabled: option.disabled, value: option.value, tabIndex: -1, onChange: () => {
342
+ }, onKeyDown: (event) => [" ", "Enter"].includes(event.key) ? handleClick(option, group) : null, ref: option.value === defaultSearchValue || option.searchText === defaultSearchValue ? focusedItemRef : null, role: "option", tabIndex: !option.disabled ? 0 : -1, children: multiselect ? /* @__PURE__ */ jsx(StyledCheckbox, { checked: selectedData.selectedValues.includes(option.value) && !option.disabled, disabled: option.disabled, onChange: () => {
342
343
  if (!option.disabled) {
343
344
  handleClick(option, group);
344
345
  }
345
- }, children: /* @__PURE__ */ jsx(DisplayOption, { option, descriptionDirection, optionalInfoPlacement }) }) : /* @__PURE__ */ jsx(DisplayOption, { option, descriptionDirection, optionalInfoPlacement }) }, option.value)) })
346
+ }, tabIndex: -1, value: option.value, children: /* @__PURE__ */ jsx(DisplayOption, { descriptionDirection, option, optionalInfoPlacement }) }) : /* @__PURE__ */ jsx(DisplayOption, { descriptionDirection, option, optionalInfoPlacement }) }, option.value)) })
346
347
  ] }, group))
347
348
  ] }),
348
349
  loadMore ? /* @__PURE__ */ jsx(LoadMore, { children: loadMore }) : null
349
- ] }) : /* @__PURE__ */ jsxs(DropdownContainer, { role: "listbox", id: "select-dropdown", onKeyDown: handleKeyDownSelect, gap: 0.25, "data-grouped": false, children: [
350
- selectAll && multiselect ? /* @__PURE__ */ jsx(Stack, { id: "items", gap: 0.25, tabIndex: -1, children: /* @__PURE__ */ jsx(DropdownItem, { "aria-disabled": false, "aria-selected": selectedData.allSelected, "aria-label": "select-all", "data-testid": "select-all", tabIndex: 0, role: "option", onKeyDown: (event) => [" ", "Enter"].includes(event.key) ? selectAllOptions() : null, onClick: selectAllOptions, children: /* @__PURE__ */ jsx(StyledCheckbox, { checked: selectedData.allSelected, disabled: false, value: "select-all", "data-testid": "select-all-checkbox", tabIndex: -1, onChange: selectAllOptions, children: /* @__PURE__ */ jsxs(Stack, { direction: "column", children: [
351
- /* @__PURE__ */ jsx(Text, { as: "span", variant: "body", placement: "left", children: selectAll.label }),
352
- /* @__PURE__ */ jsx(Text, { as: "span", variant: "bodySmall", sentiment: "neutral", placement: "left", prominence: "weak", children: selectAll.description })
350
+ ] }) : /* @__PURE__ */ jsxs(DropdownContainer, { "data-grouped": false, gap: 0.25, id: "select-dropdown", onKeyDown: handleKeyDownSelect, role: "listbox", children: [
351
+ selectAll && multiselect ? /* @__PURE__ */ jsx(Stack, { gap: 0.25, id: "items", tabIndex: -1, children: /* @__PURE__ */ jsx(DropdownItem, { "aria-disabled": false, "aria-label": "select-all", "aria-selected": selectedData.allSelected, "data-testid": "select-all", onClick: selectAllOptions, onKeyDown: (event) => [" ", "Enter"].includes(event.key) ? selectAllOptions() : null, role: "option", tabIndex: 0, children: /* @__PURE__ */ jsx(StyledCheckbox, { checked: selectedData.allSelected, "data-testid": "select-all-checkbox", disabled: false, onChange: selectAllOptions, tabIndex: -1, value: "select-all", children: /* @__PURE__ */ jsxs(Stack, { direction: "column", children: [
352
+ /* @__PURE__ */ jsx(Text, { as: "span", placement: "left", variant: "body", children: selectAll.label }),
353
+ /* @__PURE__ */ jsx(Text, { as: "span", placement: "left", prominence: "weak", sentiment: "neutral", variant: "bodySmall", children: selectAll.description })
353
354
  ] }) }) }) }) : null,
354
- /* @__PURE__ */ jsxs(Stack, { id: "items", gap: 0.25, children: [
355
- isLoading ? /* @__PURE__ */ jsx(Skeleton, { variant: "block" }) : displayedOptions.map((option, index) => /* @__PURE__ */ jsx(DropdownItem, { "aria-disabled": !!option.disabled, "aria-selected": selectedData.selectedValues.includes(option.value) && !option.disabled, onClick: () => {
355
+ /* @__PURE__ */ jsxs(Stack, { gap: 0.25, id: "items", children: [
356
+ isLoading ? /* @__PURE__ */ jsx(Skeleton, { variant: "block" }) : displayedOptions.map((option, index) => /* @__PURE__ */ jsx(DropdownItem, { "aria-disabled": !!option.disabled, "aria-label": option.value, "aria-selected": selectedData.selectedValues.includes(option.value) && !option.disabled, "data-testid": `option-${option.value}`, id: `option-${index}`, onClick: () => {
356
357
  if (!option.disabled) {
357
358
  handleClick(option);
358
359
  }
359
- }, "aria-label": option.value, "data-testid": `option-${option.value}`, id: `option-${index}`, role: "option", tabIndex: !option.disabled ? 0 : -1, ref: option.value === defaultSearchValue || option.searchText === defaultSearchValue ? focusedItemRef : null, onKeyDown: (event) => [" ", "Enter"].includes(event.key) ? handleClick(option) : null, children: multiselect ? /* @__PURE__ */ jsx(StyledCheckbox, { checked: selectedData.selectedValues.includes(option.value) && !option.disabled, disabled: option.disabled, value: option.value, tabIndex: -1, onChange: () => {
360
+ }, onKeyDown: (event) => [" ", "Enter"].includes(event.key) ? handleClick(option) : null, ref: option.value === defaultSearchValue || option.searchText === defaultSearchValue ? focusedItemRef : null, role: "option", tabIndex: !option.disabled ? 0 : -1, children: multiselect ? /* @__PURE__ */ jsx(StyledCheckbox, { checked: selectedData.selectedValues.includes(option.value) && !option.disabled, disabled: option.disabled, onChange: () => {
360
361
  if (!option.disabled) {
361
362
  handleClick(option);
362
363
  }
363
- }, children: /* @__PURE__ */ jsx(DisplayOption, { option, descriptionDirection, optionalInfoPlacement }) }) : /* @__PURE__ */ jsx(DisplayOption, { option, descriptionDirection, optionalInfoPlacement }) }, option.value)),
364
+ }, tabIndex: -1, value: option.value, children: /* @__PURE__ */ jsx(DisplayOption, { descriptionDirection, option, optionalInfoPlacement }) }) : /* @__PURE__ */ jsx(DisplayOption, { descriptionDirection, option, optionalInfoPlacement }) }, option.value)),
364
365
  loadMore ? /* @__PURE__ */ jsx(LoadMore, { children: loadMore }) : null
365
366
  ] })
366
367
  ] });
@@ -395,20 +396,25 @@ const Dropdown = ({
395
396
  const ref = useRef(null);
396
397
  const [search, setSearch] = useState("");
397
398
  const [maxWidth, setWidth] = useState();
399
+ const modalContext = useContext(ModalContext);
398
400
  useEffect(() => {
399
401
  if (refSelect.current && isDropdownVisible) {
400
402
  const position = refSelect.current.getBoundingClientRect().bottom + DROPDOWN_MAX_HEIGHT + Number(theme.sizing[INPUT_SIZE_HEIGHT[size]].replace("rem", "")) * 16 + Number.parseInt(theme.space["5"], 10);
401
- const overflow = position - window.innerHeight;
402
- if (overflow > 0) {
403
- const modalElement = document.getElementById("backdrop-modal");
403
+ const overflow = position - window.innerHeight + 32;
404
+ if (overflow > 0 && modalContext) {
405
+ const currentModal = modalContext.openedModals[0];
406
+ const modalElement = currentModal?.ref.current;
404
407
  if (modalElement) {
405
- modalElement.scrollBy({
406
- top: overflow,
407
- behavior: "smooth"
408
- });
408
+ const parentElement = modalElement.parentNode;
409
+ if (parentElement) {
410
+ parentElement.scrollBy({
411
+ behavior: "smooth",
412
+ top: overflow
413
+ });
414
+ }
409
415
  } else window.scrollBy({
410
- top: overflow,
411
- behavior: "smooth"
416
+ behavior: "smooth",
417
+ top: overflow
412
418
  });
413
419
  }
414
420
  }
@@ -464,11 +470,11 @@ const Dropdown = ({
464
470
  }
465
471
  return null;
466
472
  }, [isEmpty, footer, setIsDropdownVisible]);
467
- return /* @__PURE__ */ jsx(StyledPopup, { visible: isDropdownVisible, text: /* @__PURE__ */ jsxs(Stack, { children: [
468
- searchable && !isLoading && numberOfOptions >= 6 ? /* @__PURE__ */ jsx(SearchBarDropdown, { placeholder, displayedOptions, setSearchBarActive }) : null,
469
- /* @__PURE__ */ jsx(CreateDropdown, { isEmpty, emptyState, descriptionDirection, loadMore, optionalInfoPlacement, defaultSearchValue, isLoading }),
473
+ return /* @__PURE__ */ jsx(StyledPopup, { align: dropdownAlign ?? "start", containerFullWidth: true, debounceDelay: 0, disableAnimation: true, hasArrow: false, hideOnClickOutside: true, maxWidth: maxWidth ?? refSelect.current?.offsetWidth, onClose: () => setIsDropdownVisible(false), placement: "bottom", portalTarget, ref, role: "dialog", tabIndex: -1, text: /* @__PURE__ */ jsxs(Stack, { children: [
474
+ searchable && !isLoading && numberOfOptions >= 6 ? /* @__PURE__ */ jsx(SearchBarDropdown, { displayedOptions, placeholder, setSearchBarActive }) : null,
475
+ /* @__PURE__ */ jsx(CreateDropdown, { defaultSearchValue, descriptionDirection, emptyState, isEmpty, isLoading, loadMore, optionalInfoPlacement }),
470
476
  computedFooter
471
- ] }), placement: "bottom", disableAnimation: true, maxWidth: maxWidth ?? refSelect.current?.offsetWidth, hasArrow: false, ref, tabIndex: -1, role: "dialog", debounceDelay: 0, containerFullWidth: true, hideOnClickOutside: true, onClose: () => setIsDropdownVisible(false), align: dropdownAlign ?? "start", portalTarget, children });
477
+ ] }), visible: isDropdownVisible, children });
472
478
  };
473
479
  export {
474
480
  Dropdown