@1money/component-ui 0.0.99-alpha.0 → 0.0.100-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1205) hide show
  1. package/es/business/Dialog/BaseDialog/BaseDialog.js +1 -1
  2. package/es/business/Dialog/BaseDialog/constants.js +1 -1
  3. package/es/business/Dialog/BaseDialog/index.js +1 -1
  4. package/es/business/Dialog/BaseDialog/interface.js +1 -1
  5. package/es/business/Dialog/Descriptions/Descriptions.js +1 -1
  6. package/es/business/Dialog/Descriptions/constants.js +1 -1
  7. package/es/business/Dialog/Descriptions/index.js +1 -1
  8. package/es/business/Dialog/Descriptions/interface.js +1 -1
  9. package/es/business/Dialog/Descriptions/style/css.js +1 -1
  10. package/es/business/Dialog/Descriptions/style/index.js +1 -1
  11. package/es/business/Dialog/DetailsDialog/DetailsDialog.js +1 -1
  12. package/es/business/Dialog/DetailsDialog/index.js +1 -1
  13. package/es/business/Dialog/DetailsDialog/interface.js +1 -1
  14. package/es/business/Dialog/DetailsDialog/style/css.js +1 -1
  15. package/es/business/Dialog/DetailsDialog/style/index.js +1 -1
  16. package/es/business/Dialog/FormDialog/FormDialog.js +1 -1
  17. package/es/business/Dialog/FormDialog/index.js +1 -1
  18. package/es/business/Dialog/FormDialog/interface.js +1 -1
  19. package/es/business/Dialog/FormDialog/style/css.js +1 -1
  20. package/es/business/Dialog/FormDialog/style/index.js +1 -1
  21. package/es/business/Dialog/VerificationDialog/VerificationDialog.js +38 -39
  22. package/es/business/Dialog/VerificationDialog/constants.js +1 -1
  23. package/es/business/Dialog/VerificationDialog/index.js +1 -1
  24. package/es/business/Dialog/VerificationDialog/interface.js +1 -1
  25. package/es/business/Dialog/VerificationDialog/style/css.js +1 -1
  26. package/es/business/Dialog/VerificationDialog/style/index.js +1 -1
  27. package/es/business/Dialog/index.js +1 -1
  28. package/es/business/Dialog/variants/DeleteDialog.js +1 -1
  29. package/es/business/Dialog/variants/FailureDialog.js +1 -1
  30. package/es/business/Dialog/variants/LoadingDialog.js +17 -17
  31. package/es/business/Dialog/variants/PendingDialog.js +1 -1
  32. package/es/business/Dialog/variants/SuccessDialog.js +1 -1
  33. package/es/business/Dialog/variants/index.js +1 -1
  34. package/es/business/Dialog/variants/style/css.js +1 -1
  35. package/es/business/Dialog/variants/style/index.js +1 -1
  36. package/es/business/FieldList/index.js +1 -1
  37. package/es/business/FieldList/style/css.js +1 -1
  38. package/es/business/FieldList/style/index.js +1 -1
  39. package/es/business/Filter/Account/Account.js +1 -1
  40. package/es/business/Filter/Account/index.js +1 -1
  41. package/es/business/Filter/Account/interface.js +1 -1
  42. package/es/business/Filter/Account/style/css.js +1 -1
  43. package/es/business/Filter/Account/style/index.js +1 -1
  44. package/es/business/Filter/Asset/Asset.js +1 -1
  45. package/es/business/Filter/Asset/index.js +1 -1
  46. package/es/business/Filter/Asset/interface.js +1 -1
  47. package/es/business/Filter/Asset/style/css.js +1 -1
  48. package/es/business/Filter/Asset/style/index.js +1 -1
  49. package/es/business/Filter/DateRange/DateRange.js +14 -14
  50. package/es/business/Filter/DateRange/index.js +1 -1
  51. package/es/business/Filter/DateRange/interface.js +1 -1
  52. package/es/business/Filter/DateRange/style/css.js +1 -1
  53. package/es/business/Filter/DateRange/style/index.js +1 -1
  54. package/es/business/Filter/Option/Option.js +1 -1
  55. package/es/business/Filter/Option/index.js +1 -1
  56. package/es/business/Filter/Option/interface.js +1 -1
  57. package/es/business/Filter/Option/style/css.js +1 -1
  58. package/es/business/Filter/Option/style/index.js +1 -1
  59. package/es/business/Filter/index.js +1 -1
  60. package/es/business/Form/PageForm/PageForm.js +1 -1
  61. package/es/business/Form/PageForm/index.js +1 -1
  62. package/es/business/Form/PageForm/interface.js +1 -1
  63. package/es/business/Form/ResultForm/ResultForm.js +1 -1
  64. package/es/business/Form/ResultForm/index.js +1 -1
  65. package/es/business/Form/ResultForm/interface.js +1 -1
  66. package/es/business/Form/index.js +1 -1
  67. package/es/business/Form/variants/ExpiredForm.js +1 -1
  68. package/es/business/Form/variants/FailureForm.js +1 -1
  69. package/es/business/Form/variants/PendingForm.js +1 -1
  70. package/es/business/Form/variants/SuccessForm.js +1 -1
  71. package/es/business/Form/variants/index.js +1 -1
  72. package/es/business/Select/Asset/AssetSelect.js +1 -1
  73. package/es/business/Select/Asset/index.js +1 -1
  74. package/es/business/Select/Asset/interface.js +1 -1
  75. package/es/business/Select/Asset/style/css.js +1 -1
  76. package/es/business/Select/Asset/style/index.js +1 -1
  77. package/es/business/Select/Country/CountrySelect.js +71 -40
  78. package/es/business/Select/Country/index.js +1 -1
  79. package/es/business/Select/Country/interface.d.ts +31 -15
  80. package/es/business/Select/Country/interface.js +1 -1
  81. package/es/business/Select/Country/style/CountrySelect.css +33 -0
  82. package/es/business/Select/Country/style/css.js +2 -0
  83. package/es/business/Select/Country/style/index.d.ts +1 -0
  84. package/es/business/Select/Country/style/index.js +2 -0
  85. package/es/business/Select/Currency/CurrencySelect.js +1 -1
  86. package/es/business/Select/Currency/index.js +1 -1
  87. package/es/business/Select/Currency/interface.js +1 -1
  88. package/es/business/Select/Currency/style/css.js +1 -1
  89. package/es/business/Select/Currency/style/index.js +1 -1
  90. package/es/business/Select/Network/NetworkSelect.js +1 -1
  91. package/es/business/Select/Network/index.js +1 -1
  92. package/es/business/Select/Network/interface.js +1 -1
  93. package/es/business/Select/Network/style/css.js +1 -1
  94. package/es/business/Select/Network/style/index.js +1 -1
  95. package/es/business/Select/PaymentMethod/PaymentMethodSelect.js +1 -1
  96. package/es/business/Select/PaymentMethod/index.js +1 -1
  97. package/es/business/Select/PaymentMethod/interface.js +1 -1
  98. package/es/business/Select/PaymentMethod/style/css.js +1 -1
  99. package/es/business/Select/PaymentMethod/style/index.js +1 -1
  100. package/es/business/Select/index.js +1 -1
  101. package/es/business/index.js +1 -1
  102. package/es/business/shared/formCore/BaseProForm.js +1 -1
  103. package/es/business/shared/formCore/useFormDomId.js +1 -1
  104. package/es/business/shared/formCore/useRelayedFormRef.js +1 -1
  105. package/es/business/shared/formCore/useSubmitAction.js +19 -19
  106. package/es/components/Accordion/Accordion.js +1 -1
  107. package/es/components/Accordion/constants.js +1 -1
  108. package/es/components/Accordion/index.js +1 -1
  109. package/es/components/Accordion/interface.js +1 -1
  110. package/es/components/Accordion/style/css.js +1 -1
  111. package/es/components/Accordion/style/index.js +1 -1
  112. package/es/components/ActionBar/ActionBar.js +1 -1
  113. package/es/components/ActionBar/constants.js +1 -1
  114. package/es/components/ActionBar/index.js +1 -1
  115. package/es/components/ActionBar/interface.js +1 -1
  116. package/es/components/ActionBar/style/css.js +1 -1
  117. package/es/components/ActionBar/style/index.js +1 -1
  118. package/es/components/Alert/Alert.js +1 -1
  119. package/es/components/Alert/index.js +1 -1
  120. package/es/components/Alert/interface.js +1 -1
  121. package/es/components/Alert/style/css.js +1 -1
  122. package/es/components/Alert/style/index.js +1 -1
  123. package/es/components/Button/Button.js +1 -1
  124. package/es/components/Button/constants.js +1 -1
  125. package/es/components/Button/index.js +1 -1
  126. package/es/components/Button/interface.js +1 -1
  127. package/es/components/Button/style/css.js +1 -1
  128. package/es/components/Button/style/index.js +1 -1
  129. package/es/components/Calendar/Calendar.js +1 -1
  130. package/es/components/Calendar/constants.js +1 -1
  131. package/es/components/Calendar/index.js +1 -1
  132. package/es/components/Calendar/interface.js +1 -1
  133. package/es/components/Calendar/style/css.js +1 -1
  134. package/es/components/Calendar/style/index.js +1 -1
  135. package/es/components/Carousel/Carousel.js +1 -1
  136. package/es/components/Carousel/index.js +1 -1
  137. package/es/components/Carousel/interface.js +1 -1
  138. package/es/components/Carousel/style/css.js +1 -1
  139. package/es/components/Carousel/style/index.js +1 -1
  140. package/es/components/Cell/Cell.js +1 -1
  141. package/es/components/Cell/index.js +1 -1
  142. package/es/components/Cell/interface.js +1 -1
  143. package/es/components/Cell/style/css.js +1 -1
  144. package/es/components/Cell/style/index.js +1 -1
  145. package/es/components/Checkbox/BaseCheckbox.js +1 -1
  146. package/es/components/Checkbox/Checkbox.js +1 -1
  147. package/es/components/Checkbox/CheckboxGroup.js +1 -1
  148. package/es/components/Checkbox/CheckboxGroupContext.js +1 -1
  149. package/es/components/Checkbox/constants.js +1 -1
  150. package/es/components/Checkbox/index.js +1 -1
  151. package/es/components/Checkbox/interface.js +1 -1
  152. package/es/components/Checkbox/style/css.js +1 -1
  153. package/es/components/Checkbox/style/index.js +1 -1
  154. package/es/components/CoachMark/CoachMark.js +1 -1
  155. package/es/components/CoachMark/index.js +1 -1
  156. package/es/components/CoachMark/interface.js +1 -1
  157. package/es/components/CoachMark/style/css.js +1 -1
  158. package/es/components/CoachMark/style/index.js +1 -1
  159. package/es/components/Copy/Clipboard.js +1 -1
  160. package/es/components/Copy/Copy.js +1 -1
  161. package/es/components/Copy/index.js +1 -1
  162. package/es/components/Copy/interface.js +1 -1
  163. package/es/components/Copy/style/css.js +1 -1
  164. package/es/components/Copy/style/index.js +1 -1
  165. package/es/components/Dialog/Dialog.js +1 -1
  166. package/es/components/Dialog/DialogContent.js +1 -1
  167. package/es/components/Dialog/DialogControls.js +1 -1
  168. package/es/components/Dialog/className.js +1 -1
  169. package/es/components/Dialog/constants.js +1 -1
  170. package/es/components/Dialog/hooks.js +1 -1
  171. package/es/components/Dialog/index.js +1 -1
  172. package/es/components/Dialog/interface.js +1 -1
  173. package/es/components/Dialog/style/css.js +1 -1
  174. package/es/components/Dialog/style/index.js +1 -1
  175. package/es/components/Dialog/types.js +1 -1
  176. package/es/components/Divider/Divider.js +1 -1
  177. package/es/components/Divider/constants.js +1 -1
  178. package/es/components/Divider/index.js +1 -1
  179. package/es/components/Divider/interface.js +1 -1
  180. package/es/components/Divider/style/css.js +1 -1
  181. package/es/components/Divider/style/index.js +1 -1
  182. package/es/components/Drawer/Drawer.js +1 -1
  183. package/es/components/Drawer/constants.js +1 -1
  184. package/es/components/Drawer/hooks/index.js +1 -1
  185. package/es/components/Drawer/hooks/useBodyScrollLock.js +1 -1
  186. package/es/components/Drawer/hooks/useDialogFocus.js +1 -1
  187. package/es/components/Drawer/hooks/useDrawerTransition.js +1 -1
  188. package/es/components/Drawer/hooks/useEscapeClose.js +1 -1
  189. package/es/components/Drawer/index.js +1 -1
  190. package/es/components/Drawer/interface.js +1 -1
  191. package/es/components/Drawer/style/css.js +1 -1
  192. package/es/components/Drawer/style/index.js +1 -1
  193. package/es/components/Dropdown/Dropdown.js +1 -1
  194. package/es/components/Dropdown/index.js +1 -1
  195. package/es/components/Dropdown/interface.js +1 -1
  196. package/es/components/Dropdown/style/css.js +1 -1
  197. package/es/components/Dropdown/style/index.js +1 -1
  198. package/es/components/Empty/Empty.js +1 -1
  199. package/es/components/Empty/index.js +1 -1
  200. package/es/components/Empty/interface.js +1 -1
  201. package/es/components/Empty/style/css.js +1 -1
  202. package/es/components/Empty/style/index.js +1 -1
  203. package/es/components/Filter/Filter.js +1 -1
  204. package/es/components/Filter/index.js +1 -1
  205. package/es/components/Filter/interface.js +1 -1
  206. package/es/components/Filter/style/css.js +1 -1
  207. package/es/components/Filter/style/index.js +1 -1
  208. package/es/components/Flex/Flex.js +1 -1
  209. package/es/components/Flex/constants.js +1 -1
  210. package/es/components/Flex/index.js +1 -1
  211. package/es/components/Flex/interface.js +1 -1
  212. package/es/components/Flex/style/css.js +1 -1
  213. package/es/components/Flex/style/index.js +1 -1
  214. package/es/components/FormLayout/FormLayout.js +1 -1
  215. package/es/components/FormLayout/config.js +1 -1
  216. package/es/components/FormLayout/context.js +1 -1
  217. package/es/components/FormLayout/index.js +1 -1
  218. package/es/components/FormLayout/interface.js +1 -1
  219. package/es/components/FormLayout/style/css.js +1 -1
  220. package/es/components/FormLayout/style/index.js +1 -1
  221. package/es/components/Grid/Col.js +1 -1
  222. package/es/components/Grid/Grid.js +1 -1
  223. package/es/components/Grid/Row.js +1 -1
  224. package/es/components/Grid/constants.js +1 -1
  225. package/es/components/Grid/helper.js +1 -1
  226. package/es/components/Grid/index.js +1 -1
  227. package/es/components/Grid/interface.js +1 -1
  228. package/es/components/Grid/style/css.js +1 -1
  229. package/es/components/Grid/style/index.js +1 -1
  230. package/es/components/Icons/Icons.js +1 -1
  231. package/es/components/Icons/Illustrations.js +15 -15
  232. package/es/components/Icons/Logo.js +1 -1
  233. package/es/components/Icons/SVGs.js +1 -1
  234. package/es/components/Icons/Wrapper.js +1 -1
  235. package/es/components/Icons/constants.js +1 -1
  236. package/es/components/Icons/index.js +1 -1
  237. package/es/components/Icons/interface.js +1 -1
  238. package/es/components/Icons/style/css.js +1 -1
  239. package/es/components/Icons/style/index.js +1 -1
  240. package/es/components/Input/Amount/Amount.js +1 -1
  241. package/es/components/Input/Amount/helper.js +1 -1
  242. package/es/components/Input/Amount/index.js +1 -1
  243. package/es/components/Input/Amount/style/css.js +1 -1
  244. package/es/components/Input/Amount/style/index.js +1 -1
  245. package/es/components/Input/FieldShell/FieldShell.js +1 -1
  246. package/es/components/Input/FieldShell/index.js +1 -1
  247. package/es/components/Input/Input/Input.js +1 -1
  248. package/es/components/Input/Input/index.js +1 -1
  249. package/es/components/Input/Mask/Mask.js +1 -1
  250. package/es/components/Input/Mask/index.js +1 -1
  251. package/es/components/Input/OTP/OTP.js +1 -1
  252. package/es/components/Input/OTP/index.js +1 -1
  253. package/es/components/Input/Password/Password.js +1 -1
  254. package/es/components/Input/Password/index.js +1 -1
  255. package/es/components/Input/Search/Search.js +1 -1
  256. package/es/components/Input/Search/index.js +1 -1
  257. package/es/components/Input/TextArea/TextArea.js +1 -1
  258. package/es/components/Input/TextArea/index.js +1 -1
  259. package/es/components/Input/Trade/Trade.js +1 -1
  260. package/es/components/Input/Trade/index.js +1 -1
  261. package/es/components/Input/constants.js +1 -1
  262. package/es/components/Input/index.js +1 -1
  263. package/es/components/Input/interface.js +1 -1
  264. package/es/components/Input/style/css.js +1 -1
  265. package/es/components/Input/style/index.js +1 -1
  266. package/es/components/Input/useAmountInput.js +1 -1
  267. package/es/components/Input/useSyncRef.js +1 -1
  268. package/es/components/Link/Link.js +1 -1
  269. package/es/components/Link/constants.js +1 -1
  270. package/es/components/Link/index.js +1 -1
  271. package/es/components/Link/interface.js +1 -1
  272. package/es/components/Link/style/css.js +1 -1
  273. package/es/components/Link/style/index.js +1 -1
  274. package/es/components/Navigation/Nav.js +1 -1
  275. package/es/components/Navigation/Navigation.js +1 -1
  276. package/es/components/Navigation/NavigationLogo.js +1 -1
  277. package/es/components/Navigation/NavigationStepper.js +1 -1
  278. package/es/components/Navigation/index.js +1 -1
  279. package/es/components/Navigation/interface.js +1 -1
  280. package/es/components/Navigation/style/css.js +1 -1
  281. package/es/components/Navigation/style/index.js +1 -1
  282. package/es/components/Notification/Notification.js +1 -1
  283. package/es/components/Notification/NotificationStatic.js +27 -32
  284. package/es/components/Notification/constants.js +1 -1
  285. package/es/components/Notification/index.js +1 -1
  286. package/es/components/Notification/interface.js +1 -1
  287. package/es/components/Notification/style/css.js +1 -1
  288. package/es/components/Notification/style/index.js +1 -1
  289. package/es/components/Pagination/Pagination.js +1 -1
  290. package/es/components/Pagination/constants.js +1 -1
  291. package/es/components/Pagination/index.js +1 -1
  292. package/es/components/Pagination/interface.js +1 -1
  293. package/es/components/Pagination/style/css.js +1 -1
  294. package/es/components/Pagination/style/index.js +1 -1
  295. package/es/components/Pagination/usePagination.js +1 -1
  296. package/es/components/PanelLayout/PanelLayout.js +1 -1
  297. package/es/components/PanelLayout/constants.js +1 -1
  298. package/es/components/PanelLayout/index.js +1 -1
  299. package/es/components/PanelLayout/interface.js +1 -1
  300. package/es/components/PanelLayout/style/css.js +1 -1
  301. package/es/components/PanelLayout/style/index.js +1 -1
  302. package/es/components/Popconfirm/Popconfirm.js +1 -1
  303. package/es/components/Popconfirm/constants.js +1 -1
  304. package/es/components/Popconfirm/index.js +1 -1
  305. package/es/components/Popconfirm/interface.js +1 -1
  306. package/es/components/Popconfirm/style/css.js +1 -1
  307. package/es/components/Popconfirm/style/index.js +1 -1
  308. package/es/components/Portal/Portal.js +1 -1
  309. package/es/components/Portal/index.js +1 -1
  310. package/es/components/Portal/interface.js +1 -1
  311. package/es/components/ProForm/ProForm.js +47 -51
  312. package/es/components/ProForm/ProFormDependency.js +1 -1
  313. package/es/components/ProForm/ProFormGroup.js +1 -1
  314. package/es/components/ProForm/ProFormItem.js +1 -1
  315. package/es/components/ProForm/ProFormList.js +1 -1
  316. package/es/components/ProForm/SchemaForm.js +1 -1
  317. package/es/components/ProForm/Submitter.js +8 -8
  318. package/es/components/ProForm/constants.js +1 -1
  319. package/es/components/ProForm/context.js +1 -1
  320. package/es/components/ProForm/core/constants.js +1 -1
  321. package/es/components/ProForm/core/devWarning.js +1 -1
  322. package/es/components/ProForm/core/formStore.js +1 -1
  323. package/es/components/ProForm/core/hooks/useForm.js +77 -88
  324. package/es/components/ProForm/core/hooks/useFormCore.js +1 -1
  325. package/es/components/ProForm/core/index.js +1 -1
  326. package/es/components/ProForm/core/interface.js +1 -1
  327. package/es/components/ProForm/core/namePathType.js +1 -1
  328. package/es/components/ProForm/core/pathUtils.js +1 -1
  329. package/es/components/ProForm/core/runRules.js +56 -61
  330. package/es/components/ProForm/core/useFormItem.js +1 -1
  331. package/es/components/ProForm/core/validationError.js +1 -1
  332. package/es/components/ProForm/fields/ProFormCheckbox.js +1 -1
  333. package/es/components/ProForm/fields/ProFormCheckboxGroup.js +1 -1
  334. package/es/components/ProForm/fields/ProFormDatePicker.js +1 -1
  335. package/es/components/ProForm/fields/ProFormFieldSet.js +1 -1
  336. package/es/components/ProForm/fields/ProFormPassword.js +1 -1
  337. package/es/components/ProForm/fields/ProFormRadioGroup.js +1 -1
  338. package/es/components/ProForm/fields/ProFormSelect.js +1 -1
  339. package/es/components/ProForm/fields/ProFormSlider.js +1 -1
  340. package/es/components/ProForm/fields/ProFormSwitch.js +1 -1
  341. package/es/components/ProForm/fields/ProFormText.js +1 -1
  342. package/es/components/ProForm/fields/ProFormTextArea.js +1 -1
  343. package/es/components/ProForm/fields/ProFormUpload.js +1 -1
  344. package/es/components/ProForm/fields/createProFormField.js +1 -1
  345. package/es/components/ProForm/fields/index.js +1 -1
  346. package/es/components/ProForm/hooks/useFieldRequest.js +19 -19
  347. package/es/components/ProForm/hooks/useUrlSync.js +1 -1
  348. package/es/components/ProForm/index.js +1 -1
  349. package/es/components/ProForm/interface.js +1 -1
  350. package/es/components/ProForm/layouts/DialogForm.js +1 -1
  351. package/es/components/ProForm/layouts/DrawerForm.js +1 -1
  352. package/es/components/ProForm/layouts/QueryFilter.js +1 -1
  353. package/es/components/ProForm/layouts/index.js +1 -1
  354. package/es/components/ProForm/layouts/useOverlayForm.js +9 -11
  355. package/es/components/ProForm/style/css.js +1 -1
  356. package/es/components/ProForm/style/index.js +1 -1
  357. package/es/components/ProForm/utils.js +1 -1
  358. package/es/components/ProTable/ProTable.js +8 -8
  359. package/es/components/ProTable/constants.js +1 -1
  360. package/es/components/ProTable/core/genColumns.js +1 -1
  361. package/es/components/ProTable/core/genSearchFields.js +1 -1
  362. package/es/components/ProTable/core/useAwaitableReload.js +1 -1
  363. package/es/components/ProTable/core/utils.js +1 -1
  364. package/es/components/ProTable/index.js +1 -1
  365. package/es/components/ProTable/interface.js +1 -1
  366. package/es/components/ProTable/style/css.js +1 -1
  367. package/es/components/ProTable/style/index.js +1 -1
  368. package/es/components/ProTable/useFetchData.js +23 -23
  369. package/es/components/Progress/Progress.js +1 -1
  370. package/es/components/Progress/constants.js +1 -1
  371. package/es/components/Progress/index.js +1 -1
  372. package/es/components/Progress/interface.js +1 -1
  373. package/es/components/Progress/style/css.js +1 -1
  374. package/es/components/Progress/style/index.js +1 -1
  375. package/es/components/Radio/BaseRadio.js +1 -1
  376. package/es/components/Radio/Radio.js +1 -1
  377. package/es/components/Radio/RadioGroup.js +1 -1
  378. package/es/components/Radio/RadioGroupContext.js +1 -1
  379. package/es/components/Radio/constants.js +1 -1
  380. package/es/components/Radio/index.js +1 -1
  381. package/es/components/Radio/interface.js +1 -1
  382. package/es/components/Radio/style/css.js +1 -1
  383. package/es/components/Radio/style/index.js +1 -1
  384. package/es/components/ResizeObserver/Collection.js +1 -1
  385. package/es/components/ResizeObserver/ResizeObserver.js +1 -1
  386. package/es/components/ResizeObserver/SingleObserver/index.js +1 -1
  387. package/es/components/ResizeObserver/index.js +1 -1
  388. package/es/components/ResizeObserver/interface.js +1 -1
  389. package/es/components/ResizeObserver/useResizeObserver.js +1 -1
  390. package/es/components/ResizeObserver/utils/observerUtil.js +1 -1
  391. package/es/components/ResizeObserver/utils/reactUtil.js +1 -1
  392. package/es/components/Segment/Segment.js +1 -1
  393. package/es/components/Segment/index.js +1 -1
  394. package/es/components/Segment/interface.js +1 -1
  395. package/es/components/Segment/style/css.js +1 -1
  396. package/es/components/Segment/style/index.js +1 -1
  397. package/es/components/Select/Select.js +1 -1
  398. package/es/components/Select/SelectCustom.js +1 -1
  399. package/es/components/Select/SelectFieldShell.js +1 -1
  400. package/es/components/Select/SelectOptionContent.js +8 -1
  401. package/es/components/Select/SelectSearchControl.js +1 -1
  402. package/es/components/Select/SelectValueContent.js +1 -1
  403. package/es/components/Select/constants.js +1 -1
  404. package/es/components/Select/index.js +1 -1
  405. package/es/components/Select/interface.d.ts +9 -0
  406. package/es/components/Select/interface.js +1 -1
  407. package/es/components/Select/style/Select.css +7 -0
  408. package/es/components/Select/style/css.js +1 -1
  409. package/es/components/Select/style/index.js +1 -1
  410. package/es/components/Select/useSelectShell.js +1 -1
  411. package/es/components/Select/utils.js +1 -1
  412. package/es/components/Skeleton/Skeleton.js +1 -1
  413. package/es/components/Skeleton/index.js +1 -1
  414. package/es/components/Skeleton/interface.js +1 -1
  415. package/es/components/Skeleton/style/css.js +1 -1
  416. package/es/components/Skeleton/style/index.js +1 -1
  417. package/es/components/Slider/Slider.js +1 -1
  418. package/es/components/Slider/index.js +1 -1
  419. package/es/components/Slider/interface.js +1 -1
  420. package/es/components/Slider/style/css.js +1 -1
  421. package/es/components/Slider/style/index.js +1 -1
  422. package/es/components/Space/Space.js +1 -1
  423. package/es/components/Space/constants.js +1 -1
  424. package/es/components/Space/index.js +1 -1
  425. package/es/components/Space/interface.js +1 -1
  426. package/es/components/Space/style/css.js +1 -1
  427. package/es/components/Space/style/index.js +1 -1
  428. package/es/components/Spinner/Spinner.js +11 -11
  429. package/es/components/Spinner/index.js +1 -1
  430. package/es/components/Spinner/interface.js +1 -1
  431. package/es/components/Spinner/style/css.js +1 -1
  432. package/es/components/Spinner/style/index.js +1 -1
  433. package/es/components/Step/Step.js +1 -1
  434. package/es/components/Step/constants.js +1 -1
  435. package/es/components/Step/index.js +1 -1
  436. package/es/components/Step/interface.js +1 -1
  437. package/es/components/Step/style/css.js +1 -1
  438. package/es/components/Step/style/index.js +1 -1
  439. package/es/components/Switch/Switch.js +1 -1
  440. package/es/components/Switch/constants.js +1 -1
  441. package/es/components/Switch/index.js +1 -1
  442. package/es/components/Switch/interface.js +1 -1
  443. package/es/components/Switch/style/css.js +1 -1
  444. package/es/components/Switch/style/index.js +1 -1
  445. package/es/components/Table/Table.js +1 -1
  446. package/es/components/Table/VirtualTable.js +1 -1
  447. package/es/components/Table/constants.js +1 -1
  448. package/es/components/Table/core/columnUtil.js +1 -1
  449. package/es/components/Table/core/useTableColumns.js +1 -1
  450. package/es/components/Table/core/useTableDataPipeline.js +1 -1
  451. package/es/components/Table/core/useTableExpand.js +1 -1
  452. package/es/components/Table/core/useTableSelection.js +1 -1
  453. package/es/components/Table/core/useTableSetup.d.ts +7 -1
  454. package/es/components/Table/core/useTableSetup.js +5 -3
  455. package/es/components/Table/features/ExpandTrigger.js +1 -1
  456. package/es/components/Table/features/FilterTrigger.js +1 -1
  457. package/es/components/Table/features/SelectionColumn.js +1 -1
  458. package/es/components/Table/features/SortTrigger.js +1 -1
  459. package/es/components/Table/index.js +1 -1
  460. package/es/components/Table/interface.js +1 -1
  461. package/es/components/Table/internal/index.js +1 -1
  462. package/es/components/Table/internal/kernel/Body/BodyRow.js +1 -1
  463. package/es/components/Table/internal/kernel/Body/ExpandedRow.js +1 -1
  464. package/es/components/Table/internal/kernel/Body/MeasureCell.js +1 -1
  465. package/es/components/Table/internal/kernel/Body/MeasureRow.js +1 -1
  466. package/es/components/Table/internal/kernel/Body/index.js +1 -1
  467. package/es/components/Table/internal/kernel/Cell/index.js +1 -1
  468. package/es/components/Table/internal/kernel/Cell/useCellRender.js +1 -1
  469. package/es/components/Table/internal/kernel/Cell/useHoverState.js +1 -1
  470. package/es/components/Table/internal/kernel/ColGroup.js +1 -1
  471. package/es/components/Table/internal/kernel/FixedHolder/index.js +1 -1
  472. package/es/components/Table/internal/kernel/Footer/Cell.js +1 -1
  473. package/es/components/Table/internal/kernel/Footer/Row.js +1 -1
  474. package/es/components/Table/internal/kernel/Footer/Summary.js +1 -1
  475. package/es/components/Table/internal/kernel/Footer/SummaryContext.js +1 -1
  476. package/es/components/Table/internal/kernel/Footer/index.js +1 -1
  477. package/es/components/Table/internal/kernel/Header/Header.js +1 -1
  478. package/es/components/Table/internal/kernel/Header/HeaderRow.js +1 -1
  479. package/es/components/Table/internal/kernel/Panel/index.js +1 -1
  480. package/es/components/Table/internal/kernel/Table.js +8 -8
  481. package/es/components/Table/internal/kernel/VirtualTable/BodyGrid.js +1 -1
  482. package/es/components/Table/internal/kernel/VirtualTable/BodyLine.js +1 -1
  483. package/es/components/Table/internal/kernel/VirtualTable/VirtualCell.js +1 -1
  484. package/es/components/Table/internal/kernel/VirtualTable/context.js +1 -1
  485. package/es/components/Table/internal/kernel/VirtualTable/index.js +1 -1
  486. package/es/components/Table/internal/kernel/constant.js +1 -1
  487. package/es/components/Table/internal/kernel/context/PerfContext.js +1 -1
  488. package/es/components/Table/internal/kernel/context/TableContext.js +1 -1
  489. package/es/components/Table/internal/kernel/hooks/useColumns/index.js +1 -1
  490. package/es/components/Table/internal/kernel/hooks/useColumns/useWidthColumns.js +1 -1
  491. package/es/components/Table/internal/kernel/hooks/useExpand.js +1 -1
  492. package/es/components/Table/internal/kernel/hooks/useFixedInfo.js +1 -1
  493. package/es/components/Table/internal/kernel/hooks/useFlattenRecords.js +1 -1
  494. package/es/components/Table/internal/kernel/hooks/useFrame.js +1 -1
  495. package/es/components/Table/internal/kernel/hooks/useHover.js +1 -1
  496. package/es/components/Table/internal/kernel/hooks/useRenderTimes.js +1 -1
  497. package/es/components/Table/internal/kernel/hooks/useRowInfo.js +1 -1
  498. package/es/components/Table/internal/kernel/hooks/useSticky.js +1 -1
  499. package/es/components/Table/internal/kernel/hooks/useStickyOffsets.js +1 -1
  500. package/es/components/Table/internal/kernel/index.js +1 -1
  501. package/es/components/Table/internal/kernel/interface.js +1 -1
  502. package/es/components/Table/internal/kernel/namePathType.js +1 -1
  503. package/es/components/Table/internal/kernel/selector-context/Immutable.js +1 -1
  504. package/es/components/Table/internal/kernel/selector-context/context.js +1 -1
  505. package/es/components/Table/internal/kernel/selector-context/index.js +1 -1
  506. package/es/components/Table/internal/kernel/selector-context/isEqual.js +1 -1
  507. package/es/components/Table/internal/kernel/stickyScrollBar.js +1 -1
  508. package/es/components/Table/internal/kernel/sugar/Column.js +1 -1
  509. package/es/components/Table/internal/kernel/sugar/ColumnGroup.js +1 -1
  510. package/es/components/Table/internal/kernel/utils/dom/canUseDom.js +1 -1
  511. package/es/components/Table/internal/kernel/utils/dom/isVisible.js +1 -1
  512. package/es/components/Table/internal/kernel/utils/expandUtil.js +1 -1
  513. package/es/components/Table/internal/kernel/utils/fixUtil.js +1 -1
  514. package/es/components/Table/internal/kernel/utils/get.js +1 -1
  515. package/es/components/Table/internal/kernel/utils/getScrollBarSize.js +1 -1
  516. package/es/components/Table/internal/kernel/utils/legacyUtil.js +1 -1
  517. package/es/components/Table/internal/kernel/utils/offsetUtil.js +1 -1
  518. package/es/components/Table/internal/kernel/utils/pickAttrs.js +1 -1
  519. package/es/components/Table/internal/kernel/utils/useMemo.js +1 -1
  520. package/es/components/Table/internal/kernel/utils/valueUtil.js +1 -1
  521. package/es/components/Table/internal/kernel/utils/warning.js +1 -1
  522. package/es/components/Table/renderers/BodyCell.js +1 -1
  523. package/es/components/Table/renderers/CellContent.js +1 -1
  524. package/es/components/Table/renderers/EmptyState.js +1 -1
  525. package/es/components/Table/renderers/ExpandedRowContainer.js +1 -1
  526. package/es/components/Table/renderers/HeaderCell.js +1 -1
  527. package/es/components/Table/renderers/TableShell.js +1 -1
  528. package/es/components/Table/style/css.js +1 -1
  529. package/es/components/Table/style/index.js +1 -1
  530. package/es/components/Tabs/Tabs.js +1 -1
  531. package/es/components/Tabs/index.js +1 -1
  532. package/es/components/Tabs/interface.js +1 -1
  533. package/es/components/Tabs/style/css.js +1 -1
  534. package/es/components/Tabs/style/index.js +1 -1
  535. package/es/components/Tag/Tag.js +1 -1
  536. package/es/components/Tag/constants.js +1 -1
  537. package/es/components/Tag/index.js +1 -1
  538. package/es/components/Tag/interface.js +1 -1
  539. package/es/components/Tag/style/css.js +1 -1
  540. package/es/components/Tag/style/index.js +1 -1
  541. package/es/components/Tooltip/Tooltip.js +1 -1
  542. package/es/components/Tooltip/index.js +1 -1
  543. package/es/components/Tooltip/interface.js +1 -1
  544. package/es/components/Tooltip/style/css.js +1 -1
  545. package/es/components/Tooltip/style/index.js +1 -1
  546. package/es/components/Tour/Tour.js +1 -1
  547. package/es/components/Tour/index.js +1 -1
  548. package/es/components/Tour/interface.js +1 -1
  549. package/es/components/Trigger/Trigger.js +1 -1
  550. package/es/components/Trigger/index.js +1 -1
  551. package/es/components/Trigger/interface.js +1 -1
  552. package/es/components/Trigger/style/css.js +1 -1
  553. package/es/components/Trigger/style/index.js +1 -1
  554. package/es/components/Typography/Typography.js +1 -1
  555. package/es/components/Typography/constants.js +1 -1
  556. package/es/components/Typography/index.js +1 -1
  557. package/es/components/Typography/interface.js +1 -1
  558. package/es/components/Typography/render.js +1 -1
  559. package/es/components/Typography/style/css.js +1 -1
  560. package/es/components/Typography/style/index.js +1 -1
  561. package/es/components/Typography/useTypographyEnhancements.js +1 -1
  562. package/es/components/Typography/utils.js +1 -1
  563. package/es/components/Upload/Upload.js +1 -1
  564. package/es/components/Upload/UploadFileBar.js +1 -1
  565. package/es/components/Upload/index.js +1 -1
  566. package/es/components/Upload/interface.js +1 -1
  567. package/es/components/Upload/style/css.js +1 -1
  568. package/es/components/Upload/style/index.js +1 -1
  569. package/es/components/VirtualList/Filler.js +1 -1
  570. package/es/components/VirtualList/Item.js +1 -1
  571. package/es/components/VirtualList/ScrollBar.js +1 -1
  572. package/es/components/VirtualList/VirtualList.js +27 -13
  573. package/es/components/VirtualList/constants.js +1 -1
  574. package/es/components/VirtualList/hooks/useChildren.js +1 -1
  575. package/es/components/VirtualList/hooks/useDiffItem.js +1 -1
  576. package/es/components/VirtualList/hooks/useFrameWheel.js +1 -1
  577. package/es/components/VirtualList/hooks/useGetSize.js +1 -1
  578. package/es/components/VirtualList/hooks/useHeights.js +1 -1
  579. package/es/components/VirtualList/hooks/useMobileTouchMove.js +1 -1
  580. package/es/components/VirtualList/hooks/useOriginScroll.js +1 -1
  581. package/es/components/VirtualList/hooks/useScrollDrag.js +1 -1
  582. package/es/components/VirtualList/hooks/useScrollTo.js +1 -1
  583. package/es/components/VirtualList/index.js +1 -1
  584. package/es/components/VirtualList/interface.js +1 -1
  585. package/es/components/VirtualList/style/css.js +1 -1
  586. package/es/components/VirtualList/style/index.js +1 -1
  587. package/es/components/VirtualList/utils/CacheMap.js +1 -1
  588. package/es/components/VirtualList/utils/algorithmUtil.js +1 -1
  589. package/es/components/VirtualList/utils/isFirefox.js +1 -1
  590. package/es/components/VirtualList/utils/raf.js +1 -1
  591. package/es/components/VirtualList/utils/scrollbarUtil.js +1 -1
  592. package/es/hooks/index.js +1 -1
  593. package/es/hooks/useFloatingAnimation.js +1 -1
  594. package/es/index.css +1 -1
  595. package/es/index.js +1 -1
  596. package/es/stories/docs/ComponentDocsPage.js +1 -1
  597. package/es/stories/docs/componentDocMeta.js +1 -1
  598. package/es/utils/classnames.js +1 -1
  599. package/es/utils/clipboard.js +1 -1
  600. package/es/utils/devWarn.js +1 -1
  601. package/es/utils/ref.js +1 -1
  602. package/es/utils/uuid.js +1 -1
  603. package/lib/business/Dialog/BaseDialog/BaseDialog.js +2 -3
  604. package/lib/business/Dialog/BaseDialog/constants.js +1 -1
  605. package/lib/business/Dialog/BaseDialog/index.js +1 -1
  606. package/lib/business/Dialog/BaseDialog/interface.js +1 -1
  607. package/lib/business/Dialog/Descriptions/Descriptions.js +2 -3
  608. package/lib/business/Dialog/Descriptions/constants.js +1 -1
  609. package/lib/business/Dialog/Descriptions/index.js +1 -1
  610. package/lib/business/Dialog/Descriptions/interface.js +1 -1
  611. package/lib/business/Dialog/Descriptions/style/css.js +1 -1
  612. package/lib/business/Dialog/Descriptions/style/index.js +1 -1
  613. package/lib/business/Dialog/DetailsDialog/DetailsDialog.js +2 -3
  614. package/lib/business/Dialog/DetailsDialog/index.js +1 -1
  615. package/lib/business/Dialog/DetailsDialog/interface.js +1 -1
  616. package/lib/business/Dialog/DetailsDialog/style/css.js +1 -1
  617. package/lib/business/Dialog/DetailsDialog/style/index.js +1 -1
  618. package/lib/business/Dialog/FormDialog/FormDialog.js +2 -3
  619. package/lib/business/Dialog/FormDialog/index.js +1 -1
  620. package/lib/business/Dialog/FormDialog/interface.js +1 -1
  621. package/lib/business/Dialog/FormDialog/style/css.js +1 -1
  622. package/lib/business/Dialog/FormDialog/style/index.js +1 -1
  623. package/lib/business/Dialog/VerificationDialog/VerificationDialog.js +39 -41
  624. package/lib/business/Dialog/VerificationDialog/constants.js +1 -1
  625. package/lib/business/Dialog/VerificationDialog/index.js +1 -1
  626. package/lib/business/Dialog/VerificationDialog/interface.js +1 -1
  627. package/lib/business/Dialog/VerificationDialog/style/css.js +1 -1
  628. package/lib/business/Dialog/VerificationDialog/style/index.js +1 -1
  629. package/lib/business/Dialog/index.js +1 -1
  630. package/lib/business/Dialog/variants/DeleteDialog.js +1 -1
  631. package/lib/business/Dialog/variants/FailureDialog.js +1 -1
  632. package/lib/business/Dialog/variants/LoadingDialog.js +18 -19
  633. package/lib/business/Dialog/variants/PendingDialog.js +1 -1
  634. package/lib/business/Dialog/variants/SuccessDialog.js +1 -1
  635. package/lib/business/Dialog/variants/index.js +1 -1
  636. package/lib/business/Dialog/variants/style/css.js +1 -1
  637. package/lib/business/Dialog/variants/style/index.js +1 -1
  638. package/lib/business/FieldList/index.js +2 -3
  639. package/lib/business/FieldList/style/css.js +1 -1
  640. package/lib/business/FieldList/style/index.js +1 -1
  641. package/lib/business/Filter/Account/Account.js +1 -1
  642. package/lib/business/Filter/Account/index.js +1 -1
  643. package/lib/business/Filter/Account/interface.js +1 -1
  644. package/lib/business/Filter/Account/style/css.js +1 -1
  645. package/lib/business/Filter/Account/style/index.js +1 -1
  646. package/lib/business/Filter/Asset/Asset.js +1 -1
  647. package/lib/business/Filter/Asset/index.js +1 -1
  648. package/lib/business/Filter/Asset/interface.js +1 -1
  649. package/lib/business/Filter/Asset/style/css.js +1 -1
  650. package/lib/business/Filter/Asset/style/index.js +1 -1
  651. package/lib/business/Filter/DateRange/DateRange.js +14 -14
  652. package/lib/business/Filter/DateRange/index.js +1 -1
  653. package/lib/business/Filter/DateRange/interface.js +1 -1
  654. package/lib/business/Filter/DateRange/style/css.js +1 -1
  655. package/lib/business/Filter/DateRange/style/index.js +1 -1
  656. package/lib/business/Filter/Option/Option.js +1 -1
  657. package/lib/business/Filter/Option/index.js +1 -1
  658. package/lib/business/Filter/Option/interface.js +1 -1
  659. package/lib/business/Filter/Option/style/css.js +1 -1
  660. package/lib/business/Filter/Option/style/index.js +1 -1
  661. package/lib/business/Filter/index.js +1 -1
  662. package/lib/business/Form/PageForm/PageForm.js +1 -1
  663. package/lib/business/Form/PageForm/index.js +1 -1
  664. package/lib/business/Form/PageForm/interface.js +1 -1
  665. package/lib/business/Form/ResultForm/ResultForm.js +1 -1
  666. package/lib/business/Form/ResultForm/index.js +1 -1
  667. package/lib/business/Form/ResultForm/interface.js +1 -1
  668. package/lib/business/Form/index.js +1 -1
  669. package/lib/business/Form/variants/ExpiredForm.js +1 -1
  670. package/lib/business/Form/variants/FailureForm.js +1 -1
  671. package/lib/business/Form/variants/PendingForm.js +1 -1
  672. package/lib/business/Form/variants/SuccessForm.js +1 -1
  673. package/lib/business/Form/variants/index.js +1 -1
  674. package/lib/business/Select/Asset/AssetSelect.js +1 -1
  675. package/lib/business/Select/Asset/index.js +1 -1
  676. package/lib/business/Select/Asset/interface.js +1 -1
  677. package/lib/business/Select/Asset/style/css.js +1 -1
  678. package/lib/business/Select/Asset/style/index.js +1 -1
  679. package/lib/business/Select/Country/CountrySelect.js +71 -40
  680. package/lib/business/Select/Country/index.js +1 -1
  681. package/lib/business/Select/Country/interface.d.ts +31 -15
  682. package/lib/business/Select/Country/interface.js +1 -1
  683. package/lib/business/Select/Country/style/CountrySelect.css +33 -0
  684. package/lib/business/Select/Country/style/css.js +4 -0
  685. package/lib/business/Select/Country/style/index.d.ts +1 -0
  686. package/lib/business/Select/Country/style/index.js +4 -0
  687. package/lib/business/Select/Currency/CurrencySelect.js +1 -1
  688. package/lib/business/Select/Currency/index.js +1 -1
  689. package/lib/business/Select/Currency/interface.js +1 -1
  690. package/lib/business/Select/Currency/style/css.js +1 -1
  691. package/lib/business/Select/Currency/style/index.js +1 -1
  692. package/lib/business/Select/Network/NetworkSelect.js +1 -1
  693. package/lib/business/Select/Network/index.js +1 -1
  694. package/lib/business/Select/Network/interface.js +1 -1
  695. package/lib/business/Select/Network/style/css.js +1 -1
  696. package/lib/business/Select/Network/style/index.js +1 -1
  697. package/lib/business/Select/PaymentMethod/PaymentMethodSelect.js +1 -1
  698. package/lib/business/Select/PaymentMethod/index.js +1 -1
  699. package/lib/business/Select/PaymentMethod/interface.js +1 -1
  700. package/lib/business/Select/PaymentMethod/style/css.js +1 -1
  701. package/lib/business/Select/PaymentMethod/style/index.js +1 -1
  702. package/lib/business/Select/index.js +1 -1
  703. package/lib/business/index.js +1 -1
  704. package/lib/business/shared/formCore/BaseProForm.js +1 -1
  705. package/lib/business/shared/formCore/useFormDomId.js +1 -1
  706. package/lib/business/shared/formCore/useRelayedFormRef.js +1 -1
  707. package/lib/business/shared/formCore/useSubmitAction.js +19 -19
  708. package/lib/components/Accordion/Accordion.js +2 -3
  709. package/lib/components/Accordion/constants.js +1 -1
  710. package/lib/components/Accordion/index.js +2 -3
  711. package/lib/components/Accordion/interface.js +1 -1
  712. package/lib/components/Accordion/style/css.js +1 -1
  713. package/lib/components/Accordion/style/index.js +1 -1
  714. package/lib/components/ActionBar/ActionBar.js +2 -3
  715. package/lib/components/ActionBar/constants.js +1 -1
  716. package/lib/components/ActionBar/index.js +1 -1
  717. package/lib/components/ActionBar/interface.js +1 -1
  718. package/lib/components/ActionBar/style/css.js +1 -1
  719. package/lib/components/ActionBar/style/index.js +1 -1
  720. package/lib/components/Alert/Alert.js +2 -3
  721. package/lib/components/Alert/index.js +2 -3
  722. package/lib/components/Alert/interface.js +1 -1
  723. package/lib/components/Alert/style/css.js +1 -1
  724. package/lib/components/Alert/style/index.js +1 -1
  725. package/lib/components/Button/Button.js +2 -3
  726. package/lib/components/Button/constants.js +1 -1
  727. package/lib/components/Button/index.js +2 -3
  728. package/lib/components/Button/interface.js +1 -1
  729. package/lib/components/Button/style/css.js +1 -1
  730. package/lib/components/Button/style/index.js +1 -1
  731. package/lib/components/Calendar/Calendar.js +2 -3
  732. package/lib/components/Calendar/constants.js +1 -1
  733. package/lib/components/Calendar/index.js +2 -3
  734. package/lib/components/Calendar/interface.js +1 -1
  735. package/lib/components/Calendar/style/css.js +1 -1
  736. package/lib/components/Calendar/style/index.js +1 -1
  737. package/lib/components/Carousel/Carousel.js +2 -3
  738. package/lib/components/Carousel/index.js +2 -3
  739. package/lib/components/Carousel/interface.js +1 -1
  740. package/lib/components/Carousel/style/css.js +1 -1
  741. package/lib/components/Carousel/style/index.js +1 -1
  742. package/lib/components/Cell/Cell.js +2 -3
  743. package/lib/components/Cell/index.js +2 -3
  744. package/lib/components/Cell/interface.js +1 -1
  745. package/lib/components/Cell/style/css.js +1 -1
  746. package/lib/components/Cell/style/index.js +1 -1
  747. package/lib/components/Checkbox/BaseCheckbox.js +2 -3
  748. package/lib/components/Checkbox/Checkbox.js +2 -3
  749. package/lib/components/Checkbox/CheckboxGroup.js +2 -3
  750. package/lib/components/Checkbox/CheckboxGroupContext.js +1 -1
  751. package/lib/components/Checkbox/constants.js +1 -1
  752. package/lib/components/Checkbox/index.js +2 -3
  753. package/lib/components/Checkbox/interface.js +1 -1
  754. package/lib/components/Checkbox/style/css.js +1 -1
  755. package/lib/components/Checkbox/style/index.js +1 -1
  756. package/lib/components/CoachMark/CoachMark.js +2 -3
  757. package/lib/components/CoachMark/index.js +2 -3
  758. package/lib/components/CoachMark/interface.js +1 -1
  759. package/lib/components/CoachMark/style/css.js +1 -1
  760. package/lib/components/CoachMark/style/index.js +1 -1
  761. package/lib/components/Copy/Clipboard.js +2 -3
  762. package/lib/components/Copy/Copy.js +2 -3
  763. package/lib/components/Copy/index.js +2 -3
  764. package/lib/components/Copy/interface.js +1 -1
  765. package/lib/components/Copy/style/css.js +1 -1
  766. package/lib/components/Copy/style/index.js +1 -1
  767. package/lib/components/Dialog/Dialog.js +1 -1
  768. package/lib/components/Dialog/DialogContent.js +1 -1
  769. package/lib/components/Dialog/DialogControls.js +1 -1
  770. package/lib/components/Dialog/className.js +1 -1
  771. package/lib/components/Dialog/constants.js +1 -1
  772. package/lib/components/Dialog/hooks.js +1 -1
  773. package/lib/components/Dialog/index.js +2 -3
  774. package/lib/components/Dialog/interface.js +1 -1
  775. package/lib/components/Dialog/style/css.js +1 -1
  776. package/lib/components/Dialog/style/index.js +1 -1
  777. package/lib/components/Dialog/types.js +1 -1
  778. package/lib/components/Divider/Divider.js +2 -3
  779. package/lib/components/Divider/constants.js +1 -1
  780. package/lib/components/Divider/index.js +1 -1
  781. package/lib/components/Divider/interface.js +1 -1
  782. package/lib/components/Divider/style/css.js +1 -1
  783. package/lib/components/Divider/style/index.js +1 -1
  784. package/lib/components/Drawer/Drawer.js +2 -3
  785. package/lib/components/Drawer/constants.js +1 -1
  786. package/lib/components/Drawer/hooks/index.js +1 -1
  787. package/lib/components/Drawer/hooks/useBodyScrollLock.js +1 -1
  788. package/lib/components/Drawer/hooks/useDialogFocus.js +1 -1
  789. package/lib/components/Drawer/hooks/useDrawerTransition.js +1 -1
  790. package/lib/components/Drawer/hooks/useEscapeClose.js +1 -1
  791. package/lib/components/Drawer/index.js +1 -1
  792. package/lib/components/Drawer/interface.js +1 -1
  793. package/lib/components/Drawer/style/css.js +1 -1
  794. package/lib/components/Drawer/style/index.js +1 -1
  795. package/lib/components/Dropdown/Dropdown.js +1 -1
  796. package/lib/components/Dropdown/index.js +1 -1
  797. package/lib/components/Dropdown/interface.js +1 -1
  798. package/lib/components/Dropdown/style/css.js +1 -1
  799. package/lib/components/Dropdown/style/index.js +1 -1
  800. package/lib/components/Empty/Empty.js +2 -3
  801. package/lib/components/Empty/index.js +2 -3
  802. package/lib/components/Empty/interface.js +1 -1
  803. package/lib/components/Empty/style/css.js +1 -1
  804. package/lib/components/Empty/style/index.js +1 -1
  805. package/lib/components/Filter/Filter.js +1 -1
  806. package/lib/components/Filter/index.js +1 -1
  807. package/lib/components/Filter/interface.js +1 -1
  808. package/lib/components/Filter/style/css.js +1 -1
  809. package/lib/components/Filter/style/index.js +1 -1
  810. package/lib/components/Flex/Flex.js +2 -3
  811. package/lib/components/Flex/constants.js +1 -1
  812. package/lib/components/Flex/index.js +1 -1
  813. package/lib/components/Flex/interface.js +1 -1
  814. package/lib/components/Flex/style/css.js +1 -1
  815. package/lib/components/Flex/style/index.js +1 -1
  816. package/lib/components/FormLayout/FormLayout.js +2 -3
  817. package/lib/components/FormLayout/config.js +1 -1
  818. package/lib/components/FormLayout/context.js +1 -1
  819. package/lib/components/FormLayout/index.js +1 -1
  820. package/lib/components/FormLayout/interface.js +1 -1
  821. package/lib/components/FormLayout/style/css.js +1 -1
  822. package/lib/components/FormLayout/style/index.js +1 -1
  823. package/lib/components/Grid/Col.js +2 -3
  824. package/lib/components/Grid/Grid.js +1 -1
  825. package/lib/components/Grid/Row.js +2 -3
  826. package/lib/components/Grid/constants.js +1 -1
  827. package/lib/components/Grid/helper.js +1 -1
  828. package/lib/components/Grid/index.js +1 -1
  829. package/lib/components/Grid/interface.js +1 -1
  830. package/lib/components/Grid/style/css.js +1 -1
  831. package/lib/components/Grid/style/index.js +1 -1
  832. package/lib/components/Icons/Icons.js +1 -1
  833. package/lib/components/Icons/Illustrations.js +15 -15
  834. package/lib/components/Icons/Logo.js +2 -3
  835. package/lib/components/Icons/SVGs.js +1 -1
  836. package/lib/components/Icons/Wrapper.js +2 -3
  837. package/lib/components/Icons/constants.js +1 -1
  838. package/lib/components/Icons/index.js +2 -3
  839. package/lib/components/Icons/interface.js +1 -1
  840. package/lib/components/Icons/style/css.js +1 -1
  841. package/lib/components/Icons/style/index.js +1 -1
  842. package/lib/components/Input/Amount/Amount.js +2 -3
  843. package/lib/components/Input/Amount/helper.js +1 -1
  844. package/lib/components/Input/Amount/index.js +2 -3
  845. package/lib/components/Input/Amount/style/css.js +1 -1
  846. package/lib/components/Input/Amount/style/index.js +1 -1
  847. package/lib/components/Input/FieldShell/FieldShell.js +2 -3
  848. package/lib/components/Input/FieldShell/index.js +2 -3
  849. package/lib/components/Input/Input/Input.js +2 -3
  850. package/lib/components/Input/Input/index.js +2 -3
  851. package/lib/components/Input/Mask/Mask.js +2 -3
  852. package/lib/components/Input/Mask/index.js +2 -3
  853. package/lib/components/Input/OTP/OTP.js +1 -1
  854. package/lib/components/Input/OTP/index.js +2 -3
  855. package/lib/components/Input/Password/Password.js +2 -3
  856. package/lib/components/Input/Password/index.js +2 -3
  857. package/lib/components/Input/Search/Search.js +2 -3
  858. package/lib/components/Input/Search/index.js +2 -3
  859. package/lib/components/Input/TextArea/TextArea.js +2 -3
  860. package/lib/components/Input/TextArea/index.js +2 -3
  861. package/lib/components/Input/Trade/Trade.js +2 -3
  862. package/lib/components/Input/Trade/index.js +2 -3
  863. package/lib/components/Input/constants.js +1 -1
  864. package/lib/components/Input/index.js +2 -3
  865. package/lib/components/Input/interface.js +1 -1
  866. package/lib/components/Input/style/css.js +1 -1
  867. package/lib/components/Input/style/index.js +1 -1
  868. package/lib/components/Input/useAmountInput.js +1 -1
  869. package/lib/components/Input/useSyncRef.js +1 -1
  870. package/lib/components/Link/Link.js +2 -3
  871. package/lib/components/Link/constants.js +1 -1
  872. package/lib/components/Link/index.js +2 -3
  873. package/lib/components/Link/interface.js +1 -1
  874. package/lib/components/Link/style/css.js +1 -1
  875. package/lib/components/Link/style/index.js +1 -1
  876. package/lib/components/Navigation/Nav.js +2 -3
  877. package/lib/components/Navigation/Navigation.js +2 -3
  878. package/lib/components/Navigation/NavigationLogo.js +1 -1
  879. package/lib/components/Navigation/NavigationStepper.js +2 -3
  880. package/lib/components/Navigation/index.js +2 -3
  881. package/lib/components/Navigation/interface.js +1 -1
  882. package/lib/components/Navigation/style/css.js +1 -1
  883. package/lib/components/Navigation/style/index.js +1 -1
  884. package/lib/components/Notification/Notification.js +2 -3
  885. package/lib/components/Notification/NotificationStatic.js +28 -34
  886. package/lib/components/Notification/constants.js +1 -1
  887. package/lib/components/Notification/index.js +2 -3
  888. package/lib/components/Notification/interface.js +1 -1
  889. package/lib/components/Notification/style/css.js +1 -1
  890. package/lib/components/Notification/style/index.js +1 -1
  891. package/lib/components/Pagination/Pagination.js +2 -3
  892. package/lib/components/Pagination/constants.js +1 -1
  893. package/lib/components/Pagination/index.js +2 -3
  894. package/lib/components/Pagination/interface.js +1 -1
  895. package/lib/components/Pagination/style/css.js +1 -1
  896. package/lib/components/Pagination/style/index.js +1 -1
  897. package/lib/components/Pagination/usePagination.js +1 -1
  898. package/lib/components/PanelLayout/PanelLayout.js +2 -3
  899. package/lib/components/PanelLayout/constants.js +1 -1
  900. package/lib/components/PanelLayout/index.js +1 -1
  901. package/lib/components/PanelLayout/interface.js +1 -1
  902. package/lib/components/PanelLayout/style/css.js +1 -1
  903. package/lib/components/PanelLayout/style/index.js +1 -1
  904. package/lib/components/Popconfirm/Popconfirm.js +2 -3
  905. package/lib/components/Popconfirm/constants.js +1 -1
  906. package/lib/components/Popconfirm/index.js +2 -3
  907. package/lib/components/Popconfirm/interface.js +1 -1
  908. package/lib/components/Popconfirm/style/css.js +1 -1
  909. package/lib/components/Popconfirm/style/index.js +1 -1
  910. package/lib/components/Portal/Portal.js +1 -1
  911. package/lib/components/Portal/index.js +2 -3
  912. package/lib/components/Portal/interface.js +1 -1
  913. package/lib/components/ProForm/ProForm.js +48 -53
  914. package/lib/components/ProForm/ProFormDependency.js +2 -3
  915. package/lib/components/ProForm/ProFormGroup.js +1 -1
  916. package/lib/components/ProForm/ProFormItem.js +2 -3
  917. package/lib/components/ProForm/ProFormList.js +1 -1
  918. package/lib/components/ProForm/SchemaForm.js +1 -1
  919. package/lib/components/ProForm/Submitter.js +8 -8
  920. package/lib/components/ProForm/constants.js +1 -1
  921. package/lib/components/ProForm/context.js +1 -1
  922. package/lib/components/ProForm/core/constants.js +1 -1
  923. package/lib/components/ProForm/core/devWarning.js +2 -3
  924. package/lib/components/ProForm/core/formStore.js +1 -1
  925. package/lib/components/ProForm/core/hooks/useForm.js +78 -90
  926. package/lib/components/ProForm/core/hooks/useFormCore.js +1 -1
  927. package/lib/components/ProForm/core/index.js +1 -1
  928. package/lib/components/ProForm/core/interface.js +1 -1
  929. package/lib/components/ProForm/core/namePathType.js +1 -1
  930. package/lib/components/ProForm/core/pathUtils.js +1 -1
  931. package/lib/components/ProForm/core/runRules.js +56 -61
  932. package/lib/components/ProForm/core/useFormItem.js +2 -3
  933. package/lib/components/ProForm/core/validationError.js +1 -1
  934. package/lib/components/ProForm/fields/ProFormCheckbox.js +1 -1
  935. package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +1 -1
  936. package/lib/components/ProForm/fields/ProFormDatePicker.js +1 -1
  937. package/lib/components/ProForm/fields/ProFormFieldSet.js +2 -3
  938. package/lib/components/ProForm/fields/ProFormPassword.js +1 -1
  939. package/lib/components/ProForm/fields/ProFormRadioGroup.js +1 -1
  940. package/lib/components/ProForm/fields/ProFormSelect.js +1 -1
  941. package/lib/components/ProForm/fields/ProFormSlider.js +1 -1
  942. package/lib/components/ProForm/fields/ProFormSwitch.js +1 -1
  943. package/lib/components/ProForm/fields/ProFormText.js +1 -1
  944. package/lib/components/ProForm/fields/ProFormTextArea.js +1 -1
  945. package/lib/components/ProForm/fields/ProFormUpload.js +1 -1
  946. package/lib/components/ProForm/fields/createProFormField.js +1 -1
  947. package/lib/components/ProForm/fields/index.js +1 -1
  948. package/lib/components/ProForm/hooks/useFieldRequest.js +19 -19
  949. package/lib/components/ProForm/hooks/useUrlSync.js +1 -1
  950. package/lib/components/ProForm/index.js +1 -1
  951. package/lib/components/ProForm/interface.js +1 -1
  952. package/lib/components/ProForm/layouts/DialogForm.js +1 -1
  953. package/lib/components/ProForm/layouts/DrawerForm.js +1 -1
  954. package/lib/components/ProForm/layouts/QueryFilter.js +2 -3
  955. package/lib/components/ProForm/layouts/index.js +1 -1
  956. package/lib/components/ProForm/layouts/useOverlayForm.js +10 -13
  957. package/lib/components/ProForm/style/css.js +1 -1
  958. package/lib/components/ProForm/style/index.js +1 -1
  959. package/lib/components/ProForm/utils.js +1 -1
  960. package/lib/components/ProTable/ProTable.js +8 -8
  961. package/lib/components/ProTable/constants.js +1 -1
  962. package/lib/components/ProTable/core/genColumns.js +1 -1
  963. package/lib/components/ProTable/core/genSearchFields.js +1 -1
  964. package/lib/components/ProTable/core/useAwaitableReload.js +1 -1
  965. package/lib/components/ProTable/core/utils.js +1 -1
  966. package/lib/components/ProTable/index.js +2 -3
  967. package/lib/components/ProTable/interface.js +1 -1
  968. package/lib/components/ProTable/style/css.js +1 -1
  969. package/lib/components/ProTable/style/index.js +1 -1
  970. package/lib/components/ProTable/useFetchData.js +23 -23
  971. package/lib/components/Progress/Progress.js +2 -3
  972. package/lib/components/Progress/constants.js +1 -1
  973. package/lib/components/Progress/index.js +2 -3
  974. package/lib/components/Progress/interface.js +1 -1
  975. package/lib/components/Progress/style/css.js +1 -1
  976. package/lib/components/Progress/style/index.js +1 -1
  977. package/lib/components/Radio/BaseRadio.js +1 -1
  978. package/lib/components/Radio/Radio.js +2 -3
  979. package/lib/components/Radio/RadioGroup.js +2 -3
  980. package/lib/components/Radio/RadioGroupContext.js +1 -1
  981. package/lib/components/Radio/constants.js +1 -1
  982. package/lib/components/Radio/index.js +2 -3
  983. package/lib/components/Radio/interface.js +1 -1
  984. package/lib/components/Radio/style/css.js +1 -1
  985. package/lib/components/Radio/style/index.js +1 -1
  986. package/lib/components/ResizeObserver/Collection.js +2 -3
  987. package/lib/components/ResizeObserver/ResizeObserver.js +2 -3
  988. package/lib/components/ResizeObserver/SingleObserver/index.js +2 -3
  989. package/lib/components/ResizeObserver/index.js +1 -1
  990. package/lib/components/ResizeObserver/interface.js +1 -1
  991. package/lib/components/ResizeObserver/useResizeObserver.js +2 -3
  992. package/lib/components/ResizeObserver/utils/observerUtil.js +1 -1
  993. package/lib/components/ResizeObserver/utils/reactUtil.js +2 -3
  994. package/lib/components/Segment/Segment.js +2 -3
  995. package/lib/components/Segment/index.js +2 -3
  996. package/lib/components/Segment/interface.js +1 -1
  997. package/lib/components/Segment/style/css.js +1 -1
  998. package/lib/components/Segment/style/index.js +1 -1
  999. package/lib/components/Select/Select.js +2 -3
  1000. package/lib/components/Select/SelectCustom.js +2 -3
  1001. package/lib/components/Select/SelectFieldShell.js +1 -1
  1002. package/lib/components/Select/SelectOptionContent.js +8 -1
  1003. package/lib/components/Select/SelectSearchControl.js +1 -1
  1004. package/lib/components/Select/SelectValueContent.js +1 -1
  1005. package/lib/components/Select/constants.js +1 -1
  1006. package/lib/components/Select/index.js +1 -1
  1007. package/lib/components/Select/interface.d.ts +9 -0
  1008. package/lib/components/Select/interface.js +1 -1
  1009. package/lib/components/Select/style/Select.css +7 -0
  1010. package/lib/components/Select/style/css.js +1 -1
  1011. package/lib/components/Select/style/index.js +1 -1
  1012. package/lib/components/Select/useSelectShell.js +1 -1
  1013. package/lib/components/Select/utils.js +1 -1
  1014. package/lib/components/Skeleton/Skeleton.js +2 -3
  1015. package/lib/components/Skeleton/index.js +2 -3
  1016. package/lib/components/Skeleton/interface.js +1 -1
  1017. package/lib/components/Skeleton/style/css.js +1 -1
  1018. package/lib/components/Skeleton/style/index.js +1 -1
  1019. package/lib/components/Slider/Slider.js +2 -3
  1020. package/lib/components/Slider/index.js +2 -3
  1021. package/lib/components/Slider/interface.js +1 -1
  1022. package/lib/components/Slider/style/css.js +1 -1
  1023. package/lib/components/Slider/style/index.js +1 -1
  1024. package/lib/components/Space/Space.js +2 -3
  1025. package/lib/components/Space/constants.js +1 -1
  1026. package/lib/components/Space/index.js +1 -1
  1027. package/lib/components/Space/interface.js +1 -1
  1028. package/lib/components/Space/style/css.js +1 -1
  1029. package/lib/components/Space/style/index.js +1 -1
  1030. package/lib/components/Spinner/Spinner.js +12 -13
  1031. package/lib/components/Spinner/index.js +2 -3
  1032. package/lib/components/Spinner/interface.js +1 -1
  1033. package/lib/components/Spinner/style/css.js +1 -1
  1034. package/lib/components/Spinner/style/index.js +1 -1
  1035. package/lib/components/Step/Step.js +2 -3
  1036. package/lib/components/Step/constants.js +1 -1
  1037. package/lib/components/Step/index.js +2 -3
  1038. package/lib/components/Step/interface.js +1 -1
  1039. package/lib/components/Step/style/css.js +1 -1
  1040. package/lib/components/Step/style/index.js +1 -1
  1041. package/lib/components/Switch/Switch.js +2 -3
  1042. package/lib/components/Switch/constants.js +1 -1
  1043. package/lib/components/Switch/index.js +2 -3
  1044. package/lib/components/Switch/interface.js +1 -1
  1045. package/lib/components/Switch/style/css.js +1 -1
  1046. package/lib/components/Switch/style/index.js +1 -1
  1047. package/lib/components/Table/Table.js +1 -1
  1048. package/lib/components/Table/VirtualTable.js +1 -1
  1049. package/lib/components/Table/constants.js +1 -1
  1050. package/lib/components/Table/core/columnUtil.js +1 -1
  1051. package/lib/components/Table/core/useTableColumns.js +1 -1
  1052. package/lib/components/Table/core/useTableDataPipeline.js +1 -1
  1053. package/lib/components/Table/core/useTableExpand.js +1 -1
  1054. package/lib/components/Table/core/useTableSelection.js +1 -1
  1055. package/lib/components/Table/core/useTableSetup.d.ts +7 -1
  1056. package/lib/components/Table/core/useTableSetup.js +6 -5
  1057. package/lib/components/Table/features/ExpandTrigger.js +1 -1
  1058. package/lib/components/Table/features/FilterTrigger.js +1 -1
  1059. package/lib/components/Table/features/SelectionColumn.js +1 -1
  1060. package/lib/components/Table/features/SortTrigger.js +1 -1
  1061. package/lib/components/Table/index.js +1 -1
  1062. package/lib/components/Table/interface.js +1 -1
  1063. package/lib/components/Table/internal/index.js +2 -3
  1064. package/lib/components/Table/internal/kernel/Body/BodyRow.js +2 -3
  1065. package/lib/components/Table/internal/kernel/Body/ExpandedRow.js +2 -3
  1066. package/lib/components/Table/internal/kernel/Body/MeasureCell.js +2 -3
  1067. package/lib/components/Table/internal/kernel/Body/MeasureRow.js +2 -3
  1068. package/lib/components/Table/internal/kernel/Body/index.js +2 -3
  1069. package/lib/components/Table/internal/kernel/Cell/index.js +2 -3
  1070. package/lib/components/Table/internal/kernel/Cell/useCellRender.js +2 -3
  1071. package/lib/components/Table/internal/kernel/Cell/useHoverState.js +1 -1
  1072. package/lib/components/Table/internal/kernel/ColGroup.js +2 -3
  1073. package/lib/components/Table/internal/kernel/FixedHolder/index.js +2 -3
  1074. package/lib/components/Table/internal/kernel/Footer/Cell.js +2 -3
  1075. package/lib/components/Table/internal/kernel/Footer/Row.js +2 -3
  1076. package/lib/components/Table/internal/kernel/Footer/Summary.js +1 -1
  1077. package/lib/components/Table/internal/kernel/Footer/SummaryContext.js +2 -3
  1078. package/lib/components/Table/internal/kernel/Footer/index.js +2 -3
  1079. package/lib/components/Table/internal/kernel/Header/Header.js +2 -3
  1080. package/lib/components/Table/internal/kernel/Header/HeaderRow.js +2 -3
  1081. package/lib/components/Table/internal/kernel/Panel/index.js +2 -3
  1082. package/lib/components/Table/internal/kernel/Table.js +9 -10
  1083. package/lib/components/Table/internal/kernel/VirtualTable/BodyGrid.js +2 -3
  1084. package/lib/components/Table/internal/kernel/VirtualTable/BodyLine.js +2 -3
  1085. package/lib/components/Table/internal/kernel/VirtualTable/VirtualCell.js +2 -3
  1086. package/lib/components/Table/internal/kernel/VirtualTable/context.js +1 -1
  1087. package/lib/components/Table/internal/kernel/VirtualTable/index.js +2 -3
  1088. package/lib/components/Table/internal/kernel/constant.js +1 -1
  1089. package/lib/components/Table/internal/kernel/context/PerfContext.js +2 -3
  1090. package/lib/components/Table/internal/kernel/context/TableContext.js +1 -1
  1091. package/lib/components/Table/internal/kernel/hooks/useColumns/index.js +2 -3
  1092. package/lib/components/Table/internal/kernel/hooks/useColumns/useWidthColumns.js +2 -3
  1093. package/lib/components/Table/internal/kernel/hooks/useExpand.js +2 -3
  1094. package/lib/components/Table/internal/kernel/hooks/useFixedInfo.js +2 -3
  1095. package/lib/components/Table/internal/kernel/hooks/useFlattenRecords.js +2 -3
  1096. package/lib/components/Table/internal/kernel/hooks/useFrame.js +1 -1
  1097. package/lib/components/Table/internal/kernel/hooks/useHover.js +2 -3
  1098. package/lib/components/Table/internal/kernel/hooks/useRenderTimes.js +2 -3
  1099. package/lib/components/Table/internal/kernel/hooks/useRowInfo.js +1 -1
  1100. package/lib/components/Table/internal/kernel/hooks/useSticky.js +2 -3
  1101. package/lib/components/Table/internal/kernel/hooks/useStickyOffsets.js +1 -1
  1102. package/lib/components/Table/internal/kernel/index.js +2 -3
  1103. package/lib/components/Table/internal/kernel/interface.js +1 -1
  1104. package/lib/components/Table/internal/kernel/namePathType.js +1 -1
  1105. package/lib/components/Table/internal/kernel/selector-context/Immutable.js +2 -3
  1106. package/lib/components/Table/internal/kernel/selector-context/context.js +2 -3
  1107. package/lib/components/Table/internal/kernel/selector-context/index.js +1 -1
  1108. package/lib/components/Table/internal/kernel/selector-context/isEqual.js +1 -1
  1109. package/lib/components/Table/internal/kernel/stickyScrollBar.js +2 -3
  1110. package/lib/components/Table/internal/kernel/sugar/Column.js +1 -1
  1111. package/lib/components/Table/internal/kernel/sugar/ColumnGroup.js +1 -1
  1112. package/lib/components/Table/internal/kernel/utils/dom/canUseDom.js +1 -1
  1113. package/lib/components/Table/internal/kernel/utils/dom/isVisible.js +1 -1
  1114. package/lib/components/Table/internal/kernel/utils/expandUtil.js +2 -3
  1115. package/lib/components/Table/internal/kernel/utils/fixUtil.js +1 -1
  1116. package/lib/components/Table/internal/kernel/utils/get.js +1 -1
  1117. package/lib/components/Table/internal/kernel/utils/getScrollBarSize.js +1 -1
  1118. package/lib/components/Table/internal/kernel/utils/legacyUtil.js +1 -1
  1119. package/lib/components/Table/internal/kernel/utils/offsetUtil.js +1 -1
  1120. package/lib/components/Table/internal/kernel/utils/pickAttrs.js +1 -1
  1121. package/lib/components/Table/internal/kernel/utils/useMemo.js +2 -3
  1122. package/lib/components/Table/internal/kernel/utils/valueUtil.js +1 -1
  1123. package/lib/components/Table/internal/kernel/utils/warning.js +1 -1
  1124. package/lib/components/Table/renderers/BodyCell.js +1 -1
  1125. package/lib/components/Table/renderers/CellContent.js +1 -1
  1126. package/lib/components/Table/renderers/EmptyState.js +1 -1
  1127. package/lib/components/Table/renderers/ExpandedRowContainer.js +1 -1
  1128. package/lib/components/Table/renderers/HeaderCell.js +1 -1
  1129. package/lib/components/Table/renderers/TableShell.js +1 -1
  1130. package/lib/components/Table/style/css.js +1 -1
  1131. package/lib/components/Table/style/index.js +1 -1
  1132. package/lib/components/Tabs/Tabs.js +2 -3
  1133. package/lib/components/Tabs/index.js +2 -3
  1134. package/lib/components/Tabs/interface.js +1 -1
  1135. package/lib/components/Tabs/style/css.js +1 -1
  1136. package/lib/components/Tabs/style/index.js +1 -1
  1137. package/lib/components/Tag/Tag.js +2 -3
  1138. package/lib/components/Tag/constants.js +1 -1
  1139. package/lib/components/Tag/index.js +2 -3
  1140. package/lib/components/Tag/interface.js +1 -1
  1141. package/lib/components/Tag/style/css.js +1 -1
  1142. package/lib/components/Tag/style/index.js +1 -1
  1143. package/lib/components/Tooltip/Tooltip.js +2 -3
  1144. package/lib/components/Tooltip/index.js +2 -3
  1145. package/lib/components/Tooltip/interface.js +1 -1
  1146. package/lib/components/Tooltip/style/css.js +1 -1
  1147. package/lib/components/Tooltip/style/index.js +1 -1
  1148. package/lib/components/Tour/Tour.js +1 -1
  1149. package/lib/components/Tour/index.js +2 -3
  1150. package/lib/components/Tour/interface.js +1 -1
  1151. package/lib/components/Trigger/Trigger.js +2 -3
  1152. package/lib/components/Trigger/index.js +1 -1
  1153. package/lib/components/Trigger/interface.js +1 -1
  1154. package/lib/components/Trigger/style/css.js +1 -1
  1155. package/lib/components/Trigger/style/index.js +1 -1
  1156. package/lib/components/Typography/Typography.js +1 -1
  1157. package/lib/components/Typography/constants.js +1 -1
  1158. package/lib/components/Typography/index.js +2 -3
  1159. package/lib/components/Typography/interface.js +1 -1
  1160. package/lib/components/Typography/render.js +1 -1
  1161. package/lib/components/Typography/style/css.js +1 -1
  1162. package/lib/components/Typography/style/index.js +1 -1
  1163. package/lib/components/Typography/useTypographyEnhancements.js +1 -1
  1164. package/lib/components/Typography/utils.js +2 -3
  1165. package/lib/components/Upload/Upload.js +2 -3
  1166. package/lib/components/Upload/UploadFileBar.js +2 -3
  1167. package/lib/components/Upload/index.js +2 -3
  1168. package/lib/components/Upload/interface.js +1 -1
  1169. package/lib/components/Upload/style/css.js +1 -1
  1170. package/lib/components/Upload/style/index.js +1 -1
  1171. package/lib/components/VirtualList/Filler.js +2 -3
  1172. package/lib/components/VirtualList/Item.js +2 -3
  1173. package/lib/components/VirtualList/ScrollBar.js +2 -3
  1174. package/lib/components/VirtualList/VirtualList.js +28 -15
  1175. package/lib/components/VirtualList/constants.js +1 -1
  1176. package/lib/components/VirtualList/hooks/useChildren.js +2 -3
  1177. package/lib/components/VirtualList/hooks/useDiffItem.js +2 -3
  1178. package/lib/components/VirtualList/hooks/useFrameWheel.js +1 -1
  1179. package/lib/components/VirtualList/hooks/useGetSize.js +2 -3
  1180. package/lib/components/VirtualList/hooks/useHeights.js +2 -3
  1181. package/lib/components/VirtualList/hooks/useMobileTouchMove.js +1 -1
  1182. package/lib/components/VirtualList/hooks/useOriginScroll.js +1 -1
  1183. package/lib/components/VirtualList/hooks/useScrollDrag.js +2 -3
  1184. package/lib/components/VirtualList/hooks/useScrollTo.js +2 -3
  1185. package/lib/components/VirtualList/index.js +1 -1
  1186. package/lib/components/VirtualList/interface.js +1 -1
  1187. package/lib/components/VirtualList/style/css.js +1 -1
  1188. package/lib/components/VirtualList/style/index.js +1 -1
  1189. package/lib/components/VirtualList/utils/CacheMap.js +1 -1
  1190. package/lib/components/VirtualList/utils/algorithmUtil.js +1 -1
  1191. package/lib/components/VirtualList/utils/isFirefox.js +1 -1
  1192. package/lib/components/VirtualList/utils/raf.js +1 -1
  1193. package/lib/components/VirtualList/utils/scrollbarUtil.js +1 -1
  1194. package/lib/hooks/index.js +1 -1
  1195. package/lib/hooks/useFloatingAnimation.js +1 -1
  1196. package/lib/index.css +1 -1
  1197. package/lib/index.js +1 -1
  1198. package/lib/stories/docs/ComponentDocsPage.js +2 -3
  1199. package/lib/stories/docs/componentDocMeta.js +1 -1
  1200. package/lib/utils/classnames.js +1 -1
  1201. package/lib/utils/clipboard.js +1 -1
  1202. package/lib/utils/devWarn.js +1 -1
  1203. package/lib/utils/ref.js +1 -1
  1204. package/lib/utils/uuid.js +1 -1
  1205. package/package.json +23 -17
@@ -2,7 +2,8 @@ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
2
  import _typeof from "@babel/runtime/helpers/esm/typeof";
3
3
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
4
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
- import _regeneratorRuntime from "@babel/runtime/regenerator";
5
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
6
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
6
7
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
7
8
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
8
9
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
@@ -175,16 +176,16 @@ export var useForm = function useForm() {
175
176
  // Async field validation – each rule is processed exactly once
176
177
  // ---------------------------------------------------------------------------
177
178
  var validateFieldAsync = useMemoizedFn(function (name, value, rules) {
178
- return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
179
+ return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator().m(function _callee() {
179
180
  var _a, epoch, values, resolved, flagged, outcome, _yield$runRulesAsync, error, warning, isCurrent, clearFlags, _t;
180
- return _regeneratorRuntime.wrap(function (_context) {
181
- while (1) switch (_context.prev = _context.next) {
181
+ return _regenerator().w(function (_context) {
182
+ while (1) switch (_context.p = _context.n) {
182
183
  case 0:
183
184
  if (!(!rules || rules.length === 0)) {
184
- _context.next = 1;
185
+ _context.n = 1;
185
186
  break;
186
187
  }
187
- return _context.abrupt("return", {
188
+ return _context.a(2, {
188
189
  isValid: true,
189
190
  error: null
190
191
  });
@@ -206,11 +207,11 @@ export var useForm = function useForm() {
206
207
  error: null,
207
208
  warning: null
208
209
  };
209
- _context.prev = 2;
210
- _context.next = 3;
210
+ _context.p = 2;
211
+ _context.n = 3;
211
212
  return runRulesAsync(name, value, values, resolved, formCore.getRuleContextInstance());
212
213
  case 3:
213
- _yield$runRulesAsync = _context.sent;
214
+ _yield$runRulesAsync = _context.v;
214
215
  error = _yield$runRulesAsync.error;
215
216
  warning = _yield$runRulesAsync.warning;
216
217
  outcome = {
@@ -218,11 +219,11 @@ export var useForm = function useForm() {
218
219
  error: error,
219
220
  warning: warning
220
221
  };
221
- _context.next = 5;
222
+ _context.n = 5;
222
223
  break;
223
224
  case 4:
224
- _context.prev = 4;
225
- _t = _context["catch"](2);
225
+ _context.p = 4;
226
+ _t = _context.v;
226
227
  // The engine contains rule-level throws itself; this is a last-resort
227
228
  // net so an unexpected failure surfaces as a field error instead of
228
229
  // leaving the field marked valid.
@@ -232,21 +233,18 @@ export var useForm = function useForm() {
232
233
  warning: null
233
234
  };
234
235
  case 5:
235
- _context.prev = 5;
236
+ _context.p = 5;
236
237
  isCurrent = formCore.isValidationRunCurrent(name, epoch);
237
238
  clearFlags = flagged.filter(function (flaggedName) {
238
239
  return lastAsyncEpochRef.current[flaggedName] === epoch;
239
240
  });
240
241
  commitRuleOutcomes(isCurrent ? [outcome] : [], clearFlags);
241
- return _context.finish(5);
242
+ return _context.f(5);
242
243
  case 6:
243
- return _context.abrupt("return", {
244
+ return _context.a(2, {
244
245
  isValid: outcome.error === null,
245
246
  error: outcome.error
246
247
  });
247
- case 7:
248
- case "end":
249
- return _context.stop();
250
248
  }
251
249
  }, _callee, null, [[2, 4, 5, 6]]);
252
250
  }));
@@ -255,10 +253,10 @@ export var useForm = function useForm() {
255
253
  // Async field blur handler
256
254
  // ---------------------------------------------------------------------------
257
255
  var handleFieldBlur = useEventCallback(function (name, fieldTrigger) {
258
- return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
256
+ return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator().m(function _callee2() {
259
257
  var touched, rules, values, applicable;
260
- return _regeneratorRuntime.wrap(function (_context2) {
261
- while (1) switch (_context2.prev = _context2.next) {
258
+ return _regenerator().w(function (_context2) {
259
+ while (1) switch (_context2.n) {
262
260
  case 0:
263
261
  touched = store.getState().touched;
264
262
  if (!touched[name]) {
@@ -268,22 +266,21 @@ export var useForm = function useForm() {
268
266
  }
269
267
  rules = formCore.getFieldRules(name);
270
268
  if (rules) {
271
- _context2.next = 1;
269
+ _context2.n = 1;
272
270
  break;
273
271
  }
274
- return _context2.abrupt("return");
272
+ return _context2.a(2);
275
273
  case 1:
276
274
  values = formCore.getFieldsValue();
277
275
  applicable = filterRulesByTrigger(resolveRules(rules, values, formCore.getRuleContextInstance()), 'onBlur', normalizeTriggers(fieldTrigger, validateTrigger), name);
278
276
  if (!(applicable.length > 0)) {
279
- _context2.next = 2;
277
+ _context2.n = 2;
280
278
  break;
281
279
  }
282
- _context2.next = 2;
280
+ _context2.n = 2;
283
281
  return validateFieldAsync(name, resolveValue(values, name), applicable);
284
282
  case 2:
285
- case "end":
286
- return _context2.stop();
283
+ return _context2.a(2);
287
284
  }
288
285
  }, _callee2);
289
286
  }));
@@ -292,10 +289,10 @@ export var useForm = function useForm() {
292
289
  // Validate all fields async
293
290
  // ---------------------------------------------------------------------------
294
291
  var validateFieldsAsync = useMemoizedFn(function (nameList) {
295
- return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
292
+ return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator().m(function _callee4() {
296
293
  var fieldsToValidate, fieldErrors, resolvedByField, epochByField, _iterator2, _step2, name, rules, flagged, outcomes, clearFlags;
297
- return _regeneratorRuntime.wrap(function (_context4) {
298
- while (1) switch (_context4.prev = _context4.next) {
294
+ return _regenerator().w(function (_context4) {
295
+ while (1) switch (_context4.p = _context4.n) {
299
296
  case 0:
300
297
  fieldsToValidate = nameList || Object.keys(formCore.fieldRules);
301
298
  fieldErrors = {}; // Resolve every field once up front: the flag decision needs resolved
@@ -331,35 +328,35 @@ export var useForm = function useForm() {
331
328
  lastAsyncEpochRef.current[name] = epochByField.get(name);
332
329
  });
333
330
  outcomes = [];
334
- _context4.prev = 1;
335
- _context4.next = 2;
331
+ _context4.p = 1;
332
+ _context4.n = 2;
336
333
  return Promise.all(fieldsToValidate.map(function (name) {
337
- return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
334
+ return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator().m(function _callee3() {
338
335
  var _a, resolved, error, warning, _yield$runRulesAsync2, epoch, _t2;
339
- return _regeneratorRuntime.wrap(function (_context3) {
340
- while (1) switch (_context3.prev = _context3.next) {
336
+ return _regenerator().w(function (_context3) {
337
+ while (1) switch (_context3.p = _context3.n) {
341
338
  case 0:
342
339
  resolved = resolvedByField.get(name);
343
340
  if (resolved) {
344
- _context3.next = 1;
341
+ _context3.n = 1;
345
342
  break;
346
343
  }
347
- return _context3.abrupt("return");
344
+ return _context3.a(2);
348
345
  case 1:
349
346
  error = null;
350
347
  warning = null;
351
- _context3.prev = 2;
352
- _context3.next = 3;
348
+ _context3.p = 2;
349
+ _context3.n = 3;
353
350
  return runRulesAsync(name, resolveValue(formCore.getFieldsValue(), name), formCore.getFieldsValue(), resolved, formCore.getRuleContextInstance());
354
351
  case 3:
355
- _yield$runRulesAsync2 = _context3.sent;
352
+ _yield$runRulesAsync2 = _context3.v;
356
353
  error = _yield$runRulesAsync2.error;
357
354
  warning = _yield$runRulesAsync2.warning;
358
- _context3.next = 5;
355
+ _context3.n = 5;
359
356
  break;
360
357
  case 4:
361
- _context3.prev = 4;
362
- _t2 = _context3["catch"](2);
358
+ _context3.p = 4;
359
+ _t2 = _context3.v;
363
360
  // Last-resort net (see validateFieldAsync) — keep the normal
364
361
  // constructed-error flow so onFinishFailed gets a real payload.
365
362
  error = (_a = coerceFailureReason(_t2)) !== null && _a !== void 0 ? _a : 'Validation failed';
@@ -379,39 +376,35 @@ export var useForm = function useForm() {
379
376
  fieldErrors[name] = error;
380
377
  }
381
378
  case 6:
382
- case "end":
383
- return _context3.stop();
379
+ return _context3.a(2);
384
380
  }
385
381
  }, _callee3, null, [[2, 4]]);
386
382
  }));
387
383
  }));
388
384
  case 2:
389
- _context4.prev = 2;
385
+ _context4.p = 2;
390
386
  clearFlags = flagged.filter(function (name) {
391
387
  return lastAsyncEpochRef.current[name] === epochByField.get(name);
392
388
  });
393
389
  commitRuleOutcomes(outcomes, clearFlags);
394
- return _context4.finish(2);
390
+ return _context4.f(2);
395
391
  case 3:
396
392
  if (!(Object.keys(fieldErrors).length > 0)) {
397
- _context4.next = 4;
393
+ _context4.n = 4;
398
394
  break;
399
395
  }
400
396
  throw new FormValidationError(formCore.getFieldsValue(), fieldErrors);
401
397
  case 4:
402
398
  if (!nameList) {
403
- _context4.next = 5;
399
+ _context4.n = 5;
404
400
  break;
405
401
  }
406
- return _context4.abrupt("return", nameList.reduce(function (acc, name) {
402
+ return _context4.a(2, nameList.reduce(function (acc, name) {
407
403
  acc[name] = resolveValue(formCore.getFieldsValue(), name);
408
404
  return acc;
409
405
  }, {}));
410
406
  case 5:
411
- return _context4.abrupt("return", formCore.getFieldsValue());
412
- case 6:
413
- case "end":
414
- return _context4.stop();
407
+ return _context4.a(2, formCore.getFieldsValue());
415
408
  }
416
409
  }, _callee4, null, [[1,, 2, 3]]);
417
410
  }));
@@ -536,23 +529,23 @@ export var useForm = function useForm() {
536
529
  // handleSubmit / handleReset – for <form> event handlers
537
530
  // ---------------------------------------------------------------------------
538
531
  var handleSubmit = useEventCallback(function (e) {
539
- return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
532
+ return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator().m(function _callee5() {
540
533
  var validatedValues, _t3;
541
- return _regeneratorRuntime.wrap(function (_context5) {
542
- while (1) switch (_context5.prev = _context5.next) {
534
+ return _regenerator().w(function (_context5) {
535
+ while (1) switch (_context5.p = _context5.n) {
543
536
  case 0:
544
537
  e === null || e === void 0 ? void 0 : e.preventDefault();
545
- _context5.prev = 1;
546
- _context5.next = 2;
538
+ _context5.p = 1;
539
+ _context5.n = 2;
547
540
  return validateFieldsAsync();
548
541
  case 2:
549
- validatedValues = _context5.sent;
542
+ validatedValues = _context5.v;
550
543
  onFinish === null || onFinish === void 0 ? void 0 : onFinish(validatedValues);
551
- _context5.next = 4;
544
+ _context5.n = 4;
552
545
  break;
553
546
  case 3:
554
- _context5.prev = 3;
555
- _t3 = _context5["catch"](1);
547
+ _context5.p = 3;
548
+ _t3 = _context5.v;
556
549
  // Only a VALIDATION failure reaches onFinishFailed — an exception out
557
550
  // of the consumer's own onFinish is not a validation result and is
558
551
  // surfaced instead of being misreported.
@@ -565,8 +558,7 @@ export var useForm = function useForm() {
565
558
  console.error('[ProForm] onFinish threw during submit:', _t3);
566
559
  }
567
560
  case 4:
568
- case "end":
569
- return _context5.stop();
561
+ return _context5.a(2);
570
562
  }
571
563
  }, _callee5, null, [[1, 3]]);
572
564
  }));
@@ -683,48 +675,45 @@ export var useForm = function useForm() {
683
675
  });
684
676
  });
685
677
  var submitWithValidation = useMemoizedFn(function (callback) {
686
- return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {
678
+ return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator().m(function _callee6() {
687
679
  var validatedValues, _t4, _t5;
688
- return _regeneratorRuntime.wrap(function (_context6) {
689
- while (1) switch (_context6.prev = _context6.next) {
680
+ return _regenerator().w(function (_context6) {
681
+ while (1) switch (_context6.p = _context6.n) {
690
682
  case 0:
691
- _context6.prev = 0;
692
- _context6.next = 1;
683
+ _context6.p = 0;
684
+ _context6.n = 1;
693
685
  return validateFieldsAsync();
694
686
  case 1:
695
- validatedValues = _context6.sent;
696
- _context6.next = 3;
687
+ validatedValues = _context6.v;
688
+ _context6.n = 3;
697
689
  break;
698
690
  case 2:
699
- _context6.prev = 2;
700
- _t4 = _context6["catch"](0);
701
- return _context6.abrupt("return", undefined);
691
+ _context6.p = 2;
692
+ _t4 = _context6.v;
693
+ return _context6.a(2, undefined);
702
694
  case 3:
703
695
  if (!callback) {
704
- _context6.next = 7;
696
+ _context6.n = 7;
705
697
  break;
706
698
  }
707
- _context6.prev = 4;
708
- _context6.next = 5;
699
+ _context6.p = 4;
700
+ _context6.n = 5;
709
701
  return callback(validatedValues);
710
702
  case 5:
711
- _context6.next = 7;
703
+ _context6.n = 7;
712
704
  break;
713
705
  case 6:
714
- _context6.prev = 6;
715
- _t5 = _context6["catch"](4);
706
+ _context6.p = 6;
707
+ _t5 = _context6.v;
716
708
  // A throwing callback is a consumer bug, not a validation failure —
717
709
  // surface it (mirroring rc-field-form's onFinish handling) instead
718
710
  // of swallowing it silently.
719
711
  console.error('[ProForm] submit callback threw:', _t5);
720
- return _context6.abrupt("return", undefined);
712
+ return _context6.a(2, undefined);
721
713
  case 7:
722
- return _context6.abrupt("return", validatedValues);
723
- case 8:
724
- case "end":
725
- return _context6.stop();
714
+ return _context6.a(2, validatedValues);
726
715
  }
727
- }, _callee6, null, [[0, 2], [4, 6]]);
716
+ }, _callee6, null, [[4, 6], [0, 2]]);
728
717
  }));
729
718
  });
730
719
  var formInstance = useMemo(function () {
@@ -796,4 +785,4 @@ export var useForm = function useForm() {
796
785
  };
797
786
  };
798
787
  export default useForm;
799
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm0uanMiLCJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaG9va3MvdXNlRm9ybS50cyJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJfX3Jlc3QiLCJzIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidXNlTWVtbyIsInVzZUVmZmVjdCIsInVzZVJlZiIsIm1lbW8iLCJGcmFnbWVudCIsIlJlYWN0IiwidXNlRXZlbnRDYWxsYmFjayIsInVzZU1lbW9pemVkRm4iLCJ1c2VGb3JtQ29yZSIsInJlc29sdmVWYWx1ZSIsInNldE5lc3RlZFZhbHVlIiwiY29lcmNlRmFpbHVyZVJlYXNvbiIsImZpbHRlclJ1bGVzQnlUcmlnZ2VyIiwibm9ybWFsaXplVHJpZ2dlcnMiLCJyZXNvbHZlUnVsZXMiLCJydW5SdWxlc0FzeW5jIiwidXNlU3RvcmVTZWxlY3RvciIsInNoYWxsb3dFcXVhbEFycmF5cyIsInNhbWVWYWxpZGF0aW9uTm9kZSIsIkZvcm1WYWxpZGF0aW9uRXJyb3IiLCJhc1J1bGVBcnJheSIsInJ1bGUiLCJBcnJheSIsImlzQXJyYXkiLCJydWxlSGFzVmFsaWRhdG9yIiwidmFsaWRhdG9yIiwiZGVmYXVsdEZpZWxkIiwic29tZSIsImZpZWxkcyIsInZhbHVlcyIsInN1YiIsImhhc1Jlc29sdmVkVmFsaWRhdG9yIiwicmVzb2x2ZWQiLCJ1c2VGb3JtIiwiY29uZmlnIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwib25GaW5pc2giLCJvbkZpbmlzaEZhaWxlZCIsIm9uUmVzZXQiLCJfY29uZmlnJHZhbGlkYXRlVHJpZ2ciLCJ2YWxpZGF0ZVRyaWdnZXIiLCJmb3JtQ29yZSIsInN0b3JlIiwibGFzdEFzeW5jRXBvY2hSZWYiLCJtYXJrVmFsaWRhdGluZyIsIm5hbWVzIiwiYXNzaWduIiwiZ2V0U3RhdGUiLCJ2YWxpZGF0aW5nIiwiZm9yRWFjaCIsIm5hbWUiLCJzZXRTdGF0ZSIsImNvbW1pdFJ1bGVPdXRjb21lcyIsIm91dGNvbWVzIiwiY2xlYXJWYWxpZGF0aW5nIiwic3RhdGUiLCJlcnJvcnNDaGFuZ2VkIiwid2FybmluZ3NDaGFuZ2VkIiwibmV3RXJyb3JzIiwiZXJyb3JzIiwibmV3V2FybmluZ3MiLCJ3YXJuaW5ncyIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJuIiwiX3N0ZXAkdmFsdWUiLCJlcnJvciIsIndhcm5pbmciLCJlcnIiLCJmIiwiZmxhZ3NUb0NsZWFyIiwiZmlsdGVyIiwicGF0Y2giLCJuZXdWYWxpZGF0aW5nIiwia2V5cyIsInZhbGlkYXRlRmllbGRBc3luYyIsInJ1bGVzIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX2EiLCJlcG9jaCIsImZsYWdnZWQiLCJvdXRjb21lIiwiX3lpZWxkJHJ1blJ1bGVzQXN5bmMiLCJpc0N1cnJlbnQiLCJjbGVhckZsYWdzIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwiYWJydXB0IiwiaXNWYWxpZCIsImJlZ2luVmFsaWRhdGlvblJ1biIsImdldEZpZWxkc1ZhbHVlIiwiZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSIsImZsYWdnZWROYW1lIiwiY3VycmVudCIsInNlbnQiLCJpc1ZhbGlkYXRpb25SdW5DdXJyZW50IiwiZmluaXNoIiwic3RvcCIsImhhbmRsZUZpZWxkQmx1ciIsImZpZWxkVHJpZ2dlciIsIl9jYWxsZWUyIiwidG91Y2hlZCIsImFwcGxpY2FibGUiLCJfY29udGV4dDIiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRGaWVsZFJ1bGVzIiwidmFsaWRhdGVGaWVsZHNBc3luYyIsIm5hbWVMaXN0IiwiX2NhbGxlZTQiLCJmaWVsZHNUb1ZhbGlkYXRlIiwiZmllbGRFcnJvcnMiLCJyZXNvbHZlZEJ5RmllbGQiLCJlcG9jaEJ5RmllbGQiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiX2NvbnRleHQ0IiwiZmllbGRSdWxlcyIsIk1hcCIsInNldCIsImdldCIsImFsbCIsIm1hcCIsIl9jYWxsZWUzIiwiX3lpZWxkJHJ1blJ1bGVzQXN5bmMyIiwiX3QyIiwiX2NvbnRleHQzIiwicHVzaCIsInJlZHVjZSIsImFjYyIsImRlZmluZUZpZWxkIiwiZmllbGRPcHRpb25zIiwiX2ZpZWxkT3B0aW9ucyRydWxlcyIsIkZpZWxkQ29tcG9uZW50IiwiY2hpbGRyZW4iLCJyZW5kZXIiLCJwcm9wcyIsIl91c2VTdG9yZVNlbGVjdG9yIiwiX3VzZVN0b3JlU2VsZWN0b3IyIiwiX3NsaWNlZFRvQXJyYXkiLCJmaWVsZFZhbHVlIiwiZmllbGRFcnJvciIsImZpZWxkVG91Y2hlZCIsImZpZWxkVmFsaWRhdGluZyIsInJldGFpbkZpZWxkIiwiZXhpc3RpbmdSdWxlcyIsInJlZ2lzdGVyRmllbGQiLCJyZWxlYXNlRmllbGQiLCJoYW5kbGVGaWVsZENoYW5nZSIsInNldEZpZWxkVmFsdWUiLCJoYW5kbGVCbHVyIiwiZmllbGRQcm9wcyIsIm9uQ2hhbmdlIiwib25CbHVyIiwiaGFuZGxlTWVyZ2VDaGFuZ2UiLCJfdHlwZW9mIiwidGFyZ2V0IiwiaXNWYWxpZEVsZW1lbnQiLCJoYW5kbGVNZXJnZUJsdXIiLCJkb21TYWZlUHJvcHMiLCJjbG9uZUVsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiY2hpbGQiLCJpbmRleCIsImtleSIsImRpc3BsYXlOYW1lIiwiaGFuZGxlU3VibWl0IiwiX2NhbGxlZTUiLCJ2YWxpZGF0ZWRWYWx1ZXMiLCJfdDMiLCJfY29udGV4dDUiLCJwcmV2ZW50RGVmYXVsdCIsImNvbnNvbGUiLCJoYW5kbGVSZXNldCIsInJlc2V0RmllbGRzIiwiZ2V0RmllbGRFcnJvciIsImdldEZpZWxkV2FybmluZyIsImdldEZpZWxkc0Vycm9yIiwiaXNGaWVsZFRvdWNoZWQiLCJpc0ZpZWxkc1RvdWNoZWQiLCJhbGxGaWVsZHNUb3VjaGVkIiwiZXZlcnkiLCJpc0ZpZWxkVmFsaWRhdGluZyIsInNldEZpZWxkc0Vycm9yIiwiZmllbGRzRXJyb3IiLCJlbnRyaWVzIiwiX3JlZiIsIl9yZWYyIiwic2V0RmllbGRFcnJvciIsInNldEZpZWxkVG91Y2hlZCIsImlzVG91Y2hlZCIsInNldEZpZWxkc1RvdWNoZWQiLCJmaWVsZHNUb3VjaCIsInJlc2V0Rm9ybUZpZWxkcyIsImluaXRpYWxWYWx1ZXMiLCJnZXRJbml0aWFsVmFsdWVzIiwibmV3VmFsdWVzIiwiZmllbGQiLCJpbml0aWFsIiwiaW5jbHVkZXMiLCJpbnZhbGlkYXRlVmFsaWRhdGlvblJ1bnMiLCJuZXdUb3VjaGVkIiwic3VibWl0V2l0aFZhbGlkYXRpb24iLCJjYWxsYmFjayIsIl9jYWxsZWU2IiwiX3Q0IiwiX3Q1IiwiX2NvbnRleHQ2IiwiZm9ybUluc3RhbmNlIiwiZ2V0RmllbGRWYWx1ZSIsInZhbGlkYXRlRmllbGRzIiwic2V0RmllbGRzVmFsdWUiLCJzdWJtaXQiLCJ1bnJlZ2lzdGVyRmllbGQiLCJzZXRSdWxlQ29udGV4dEluc3RhbmNlIiwiaW50ZXJuYWxzIiwic2V0RmllbGRXYXJuaW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUlBLFNBQVMsR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxTQUFTLElBQUssVUFBVUMsT0FBTyxFQUFFQyxVQUFVLEVBQUVDLENBQUMsRUFBRUMsU0FBUyxFQUFFO0VBQ3JGLFNBQVNDLEtBQUtBLENBQUNDLEtBQUssRUFBRTtJQUFFLE9BQU9BLEtBQUssWUFBWUgsQ0FBQyxHQUFHRyxLQUFLLEdBQUcsSUFBSUgsQ0FBQyxDQUFDLFVBQVVJLE9BQU8sRUFBRTtNQUFFQSxPQUFPLENBQUNELEtBQUssQ0FBQztJQUFFLENBQUMsQ0FBQztFQUFFO0VBQzNHLE9BQU8sS0FBS0gsQ0FBQyxLQUFLQSxDQUFDLEdBQUdLLE9BQU8sQ0FBQyxFQUFFLFVBQVVELE9BQU8sRUFBRUUsTUFBTSxFQUFFO0lBQ3ZELFNBQVNDLFNBQVNBLENBQUNKLEtBQUssRUFBRTtNQUFFLElBQUk7UUFBRUssSUFBSSxDQUFDUCxTQUFTLENBQUNRLElBQUksQ0FBQ04sS0FBSyxDQUFDLENBQUM7TUFBRSxDQUFDLENBQUMsT0FBT08sQ0FBQyxFQUFFO1FBQUVKLE1BQU0sQ0FBQ0ksQ0FBQyxDQUFDO01BQUU7SUFBRTtJQUMxRixTQUFTQyxRQUFRQSxDQUFDUixLQUFLLEVBQUU7TUFBRSxJQUFJO1FBQUVLLElBQUksQ0FBQ1AsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDRSxLQUFLLENBQUMsQ0FBQztNQUFFLENBQUMsQ0FBQyxPQUFPTyxDQUFDLEVBQUU7UUFBRUosTUFBTSxDQUFDSSxDQUFDLENBQUM7TUFBRTtJQUFFO0lBQzdGLFNBQVNGLElBQUlBLENBQUNJLE1BQU0sRUFBRTtNQUFFQSxNQUFNLENBQUNDLElBQUksR0FBR1QsT0FBTyxDQUFDUSxNQUFNLENBQUNULEtBQUssQ0FBQyxHQUFHRCxLQUFLLENBQUNVLE1BQU0sQ0FBQ1QsS0FBSyxDQUFDLENBQUNXLElBQUksQ0FBQ1AsU0FBUyxFQUFFSSxRQUFRLENBQUM7SUFBRTtJQUM3R0gsSUFBSSxDQUFDLENBQUNQLFNBQVMsR0FBR0EsU0FBUyxDQUFDYyxLQUFLLENBQUNqQixPQUFPLEVBQUVDLFVBQVUsSUFBSSxFQUFFLENBQUMsRUFBRVUsSUFBSSxDQUFDLENBQUMsQ0FBQztFQUN6RSxDQUFDLENBQUM7QUFDTixDQUFDO0FBQ0QsSUFBSU8sTUFBTSxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLE1BQU0sSUFBSyxVQUFVQyxDQUFDLEVBQUVQLENBQUMsRUFBRTtFQUNsRCxJQUFJUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQ1YsS0FBSyxJQUFJQyxDQUFDLElBQUlGLENBQUMsRUFBRSxJQUFJRyxNQUFNLENBQUNDLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNOLENBQUMsRUFBRUUsQ0FBQyxDQUFDLElBQUlULENBQUMsQ0FBQ2MsT0FBTyxDQUFDTCxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQy9FRCxDQUFDLENBQUNDLENBQUMsQ0FBQyxHQUFHRixDQUFDLENBQUNFLENBQUMsQ0FBQztFQUNmLElBQUlGLENBQUMsSUFBSSxJQUFJLElBQUksT0FBT0csTUFBTSxDQUFDSyxxQkFBcUIsS0FBSyxVQUFVLEVBQy9ELEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQUMsRUFBRVAsQ0FBQyxHQUFHQyxNQUFNLENBQUNLLHFCQUFxQixDQUFDUixDQUFDLENBQUMsRUFBRVMsQ0FBQyxHQUFHUCxDQUFDLENBQUNRLE1BQU0sRUFBRUQsQ0FBQyxFQUFFLEVBQUU7SUFDcEUsSUFBSWhCLENBQUMsQ0FBQ2MsT0FBTyxDQUFDTCxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJTixNQUFNLENBQUNDLFNBQVMsQ0FBQ08sb0JBQW9CLENBQUNMLElBQUksQ0FBQ04sQ0FBQyxFQUFFRSxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEVBQzFFUixDQUFDLENBQUNDLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLENBQUMsR0FBR1QsQ0FBQyxDQUFDRSxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDO0VBQ3pCO0VBQ0osT0FBT1IsQ0FBQztBQUNaLENBQUM7QUNuQkQsU0FBU1csT0FBTyxFQUFFQyxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUVsRSxPQUFPQyxLQUFLLE1BQU0sT0FBTztBQUN6QixPQUFPQyxnQkFBZ0IsTUFBTSxnQ0FBZ0M7QUFDN0QsT0FBT0MsYUFBYSxNQUFNLDZCQUE2QjtBQUN2RCxTQUFTQyxXQUFXLFFBQVEsZUFBZTtBQUMzQyxTQUFTQyxZQUFZLEVBQUVDLGNBQWMsUUFBUSxjQUFjO0FBQzNELFNBQ0VDLG1CQUFtQixFQUNuQkMsb0JBQW9CLEVBQ3BCQyxpQkFBaUIsRUFDakJDLFlBQVksRUFDWkMsYUFBYSxRQUNSLGFBQWE7QUFDcEIsU0FBU0MsZ0JBQWdCLEVBQUVDLGtCQUFrQixFQUFFQyxrQkFBa0IsUUFBUSxjQUFjO0FBQ3ZGLFNBQVNDLG1CQUFtQixRQUFRLG9CQUFvQjtBQXFCeEQ7QUROQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUNRQSxJQUFNQyxXQUFXLEdBQUcsU0FBZEEsV0FBV0EsQ0FBSUMsSUFBb0I7RUFBQSxPQUN2Q0EsSUFBSSxHQUFJQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0YsSUFBSSxDQUFDLEdBQUdBLElBQUksR0FBRyxDQUFDQSxJQUFJLENBQUMsR0FBSSxFQUFFO0FBQUE7QUFFbkQsSUFBTUcsaUJBQWdCLEdBQUcsU0FBbkJBLGdCQUFnQkEsQ0FBSUgsSUFBVSxFQUFhO0VBQy9DLElBQUksT0FBT0EsSUFBSSxDQUFDSSxTQUFTLEtBQUssVUFBVSxFQUFFLE9BQU8sSUFBSTtFQUNyRCxJQUFJTCxXQUFXLENBQUNDLElBQUksQ0FBQ0ssWUFBWSxDQUFDLENBQUNDLElBQUksQ0FBQ0gsaUJBQWdCLENBQUMsRUFBRSxPQUFPLElBQUk7RUFDdEUsSUFBSUgsSUFBSSxDQUFDTyxNQUFNLEVBQUU7SUFDZixPQUFPckMsTUFBTSxDQUFDc0MsTUFBTSxDQUFDUixJQUFJLENBQUNPLE1BQU0sQ0FBQyxDQUFDRCxJQUFJLENBQUMsVUFBQ0csR0FBRztNQUFBLE9BQUtWLFdBQVcsQ0FBQ1UsR0FBRyxDQUFDLENBQUNILElBQUksQ0FBQ0gsaUJBQWdCLENBQUM7SUFBQSxFQUFDO0VBQzFGO0VBQ0EsT0FBTyxLQUFLO0FBQ2QsQ0FBQztBQUVELElBQU1PLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlDLFFBQWdCO0VBQUEsT0FBY0EsUUFBUSxDQUFDTCxJQUFJLENBQUNILGlCQUFnQixDQUFDO0FBQUE7QUFFM0Y7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNUyxPQUFPLEdBQUcsU0FBVkEsT0FBT0EsQ0FBQSxFQUU4QjtFQUFBLElBRGhEQyxNQUFBLEdBQUFDLFNBQUEsQ0FBQXJDLE1BQUEsUUFBQXFDLFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQWdDLENBQUEsQ0FBRTtFQUVsQyxJQUNFRSxRQUFRLEdBSU5ILE1BQU0sQ0FKUkcsUUFBUTtJQUNSQyxjQUFjLEdBR1pKLE1BQU0sQ0FIUkksY0FBYztJQUNkQyxPQUFPLEdBRUxMLE1BQU0sQ0FGUkssT0FBTztJQUFBQyxxQkFBQSxHQUVMTixNQUFNLENBRFJPLGVBQWU7SUFBZkEsZUFBZSxHQUFBRCxxQkFBQSxjQUFHLFVBQVUsR0FBQUEscUJBQUE7RUFHOUIsSUFBTUUsUUFBUSxHQUFHbEMsV0FBVyxDQUFDMEIsTUFBTSxDQUFDO0VBQ3BDLElBQVFTLEtBQUssR0FBS0QsUUFBUSxDQUFsQkMsS0FBSztFQUViO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxJQUFNQyxpQkFBaUIsR0FBRzFDLE1BQU0sQ0FBeUIsQ0FBQSxDQUFFLENBQUM7RUFFNUQ7RUFDQTtFQUNBO0VBQ0EsSUFBTTJDLGNBQWMsR0FBR3RDLGFBQWEsQ0FBQyxVQUFDdUMsS0FBZSxFQUFJO0lBQ3ZELElBQUlBLEtBQUssQ0FBQ2hELE1BQU0sS0FBSyxDQUFDLEVBQUU7SUFDeEIsSUFBTWxCLElBQUksR0FBQVcsTUFBQSxDQUFBd0QsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFRSixLQUFLLENBQUNLLFFBQVEsQ0FBQSxDQUFFLENBQUNDLFVBQVUsQ0FBRTtJQUMvQ0gsS0FBSyxDQUFDSSxPQUFPLENBQUMsVUFBQ0MsSUFBSSxFQUFJO01BQ3JCdkUsSUFBSSxDQUFDdUUsSUFBSSxDQUFDLEdBQUcsSUFBSTtJQUNuQixDQUFDLENBQUM7SUFDRlIsS0FBSyxDQUFDUyxRQUFRLENBQUM7TUFBRUgsVUFBVSxFQUFFckU7SUFBSSxDQUFFLENBQUM7RUFDdEMsQ0FBQyxDQUFDO0VBRUY7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLElBQU15RSxrQkFBa0IsR0FBRzlDLGFBQWEsQ0FDdEMsVUFBQytDLFFBQTRCLEVBQUVDLGVBQXlCLEVBQUk7SUFDMUQsSUFBTUMsS0FBSyxHQUFHYixLQUFLLENBQUNLLFFBQVEsQ0FBQSxDQUFFO0lBQzlCLElBQUlTLGFBQWEsR0FBRyxLQUFLO0lBQ3pCLElBQUlDLGVBQWUsR0FBRyxLQUFLO0lBQzNCLElBQU1DLFNBQVMsR0FBQXBFLE1BQUEsQ0FBQXdELE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBUVMsS0FBSyxDQUFDSSxNQUFNLENBQUU7SUFDckMsSUFBTUMsV0FBVyxHQUFBdEUsTUFBQSxDQUFBd0QsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFRUyxLQUFLLENBQUNNLFFBQVEsQ0FBRTtJQUFDLElBQUFDLFNBQUEsR0FBQUMsMEJBQUEsQ0FFSFYsUUFBUTtNQUFBVyxLQUFBO0lBQUE7TUFBL0MsS0FBQUYsU0FBQSxDQUFBM0UsQ0FBQSxNQUFBNkUsS0FBQSxHQUFBRixTQUFBLENBQUFHLENBQUEsSUFBQWxGLElBQUEsR0FBaUQ7UUFBQSxJQUFBbUYsV0FBQSxHQUFBRixLQUFBLENBQUEzRixLQUFBO1VBQXBDNkUsSUFBSSxHQUFBZ0IsV0FBQSxDQUFKaEIsSUFBSTtVQUFFaUIsS0FBSyxHQUFBRCxXQUFBLENBQUxDLEtBQUs7VUFBRUMsT0FBTyxHQUFBRixXQUFBLENBQVBFLE9BQU87UUFDL0IsSUFBSUQsS0FBSyxLQUFLLElBQUksRUFBRTtVQUNsQixJQUFJakIsSUFBSSxJQUFJUSxTQUFTLEVBQUU7WUFDckIsT0FBT0EsU0FBUyxDQUFDUixJQUFJLENBQUM7WUFDdEJNLGFBQWEsR0FBRyxJQUFJO1VBQ3RCO1FBQ0YsQ0FBQyxNQUFNLElBQUksQ0FBQ3ZDLGtCQUFrQixDQUFDeUMsU0FBUyxDQUFDUixJQUFJLENBQUMsRUFBRWlCLEtBQUssQ0FBQyxFQUFFO1VBQ3REVCxTQUFTLENBQUNSLElBQUksQ0FBQyxHQUFHaUIsS0FBSztVQUN2QlgsYUFBYSxHQUFHLElBQUk7UUFDdEI7UUFDQSxJQUFJWSxPQUFPLEtBQUssSUFBSSxFQUFFO1VBQ3BCLElBQUlsQixJQUFJLElBQUlVLFdBQVcsRUFBRTtZQUN2QixPQUFPQSxXQUFXLENBQUNWLElBQUksQ0FBQztZQUN4Qk8sZUFBZSxHQUFHLElBQUk7VUFDeEI7UUFDRixDQUFDLE1BQU0sSUFBSSxDQUFDeEMsa0JBQWtCLENBQUMyQyxXQUFXLENBQUNWLElBQUksQ0FBQyxFQUFFa0IsT0FBTyxDQUFDLEVBQUU7VUFDMURSLFdBQVcsQ0FBQ1YsSUFBSSxDQUFDLEdBQUdrQixPQUFPO1VBQzNCWCxlQUFlLEdBQUcsSUFBSTtRQUN4QjtNQUNGO0lBQUMsU0FBQVksR0FBQTtNQUFBUCxTQUFBLENBQUFsRixDQUFBLENBQUF5RixHQUFBO0lBQUE7TUFBQVAsU0FBQSxDQUFBUSxDQUFBO0lBQUE7SUFFRCxJQUFNQyxZQUFZLEdBQUdqQixlQUFlLENBQUNrQixNQUFNLENBQUMsVUFBQ3RCLElBQUk7TUFBQSxPQUFLQSxJQUFJLElBQUlLLEtBQUssQ0FBQ1AsVUFBVTtJQUFBLEVBQUM7SUFFL0UsSUFBTXlCLEtBQUssR0FBNEIsQ0FBQSxDQUFFO0lBQ3pDLElBQUlqQixhQUFhLEVBQUVpQixLQUFLLENBQUNkLE1BQU0sR0FBR0QsU0FBUztJQUMzQyxJQUFJRCxlQUFlLEVBQUVnQixLQUFLLENBQUNaLFFBQVEsR0FBR0QsV0FBVztJQUNqRCxJQUFJVyxZQUFZLENBQUMxRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO01BQzNCLElBQU02RSxhQUFhLEdBQUFwRixNQUFBLENBQUF3RCxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQVFTLEtBQUssQ0FBQ1AsVUFBVSxDQUFFO01BQzdDdUIsWUFBWSxDQUFDdEIsT0FBTyxDQUFDLFVBQUNDLElBQUksRUFBSTtRQUM1QixPQUFPd0IsYUFBYSxDQUFDeEIsSUFBSSxDQUFDO01BQzVCLENBQUMsQ0FBQztNQUNGdUIsS0FBSyxDQUFDekIsVUFBVSxHQUFHMEIsYUFBYTtJQUNsQztJQUNBLElBQUlwRixNQUFNLENBQUNxRixJQUFJLENBQUNGLEtBQUssQ0FBQyxDQUFDNUUsTUFBTSxHQUFHLENBQUMsRUFBRTZDLEtBQUssQ0FBQ1MsUUFBUSxDQUFDc0IsS0FBSyxDQUFDO0VBQzFELENBQUMsQ0FDRjtFQUVEO0VBQ0E7RUFDQTtFQUNBLElBQU1HLGtCQUFrQixHQUFHdEUsYUFBYSxDQUN0QyxVQUNFNEMsSUFBWSxFQUNaN0UsS0FBVSxFQUNWd0csS0FBeUI7SUFBQSxPQUNpQzlHLFNBQUEsQ0FBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsZUFBQStHLG1CQUFBLENBQUFDLElBQUEsQ0FBQSxTQUFBQyxRQUFBO01BQUEsSUFBQUMsRUFBQSxFQUFBQyxLQUFBLEVBQUF0RCxNQUFBLEVBQUFHLFFBQUEsRUFBQW9ELE9BQUEsRUFBQUMsT0FBQSxFQUFBQyxvQkFBQSxFQUFBbEIsS0FBQSxFQUFBQyxPQUFBLEVBQUFrQixTQUFBLEVBQUFDLFVBQUEsRUFBQUMsRUFBQTtNQUFBLE9BQUFWLG1CQUFBLENBQUFXLElBQUEsV0FBQUMsUUFBQTtRQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEsR0FBQUQsUUFBQSxDQUFBL0csSUFBQTtVQUFBO1lBQUEsTUFDdEQsQ0FBQ2tHLEtBQUssSUFBSUEsS0FBSyxDQUFDaEYsTUFBTSxLQUFLLENBQUM7Y0FBQTZGLFFBQUEsQ0FBQS9HLElBQUE7Y0FBQTtZQUFBO1lBQUEsT0FBQStHLFFBQUEsQ0FBQUUsTUFBQSxXQUFTO2NBQUVDLE9BQU8sRUFBRSxJQUFJO2NBQUUxQixLQUFLLEVBQUU7WUFBSSxDQUFFO1VBQUE7WUFFdkU7WUFDQTtZQUNBO1lBQ01lLEtBQUssR0FBR3pDLFFBQVEsQ0FBQ3FELGtCQUFrQixDQUFDNUMsSUFBSSxDQUFDLEVBRS9DO1lBQ0E7WUFDTXRCLE1BQU0sR0FBR2EsUUFBUSxDQUFDc0QsY0FBYyxDQUFBLENBQUU7WUFDbENoRSxRQUFRLEdBQUdsQixZQUFZLENBQUNnRSxLQUFLLEVBQUVqRCxNQUFNLEVBQUVhLFFBQVEsQ0FBQ3VELHNCQUFzQixDQUFBLENBQUUsQ0FBQztZQUN6RWIsT0FBTyxHQUFHckQsb0JBQW9CLENBQUNDLFFBQVEsQ0FBQyxHQUFHLENBQUNtQixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQzVETixjQUFjLENBQUN1QyxPQUFPLENBQUM7WUFDdkJBLE9BQU8sQ0FBQ2xDLE9BQU8sQ0FBQyxVQUFDZ0QsV0FBVyxFQUFJO2NBQzlCdEQsaUJBQWlCLENBQUN1RCxPQUFPLENBQUNELFdBQVcsQ0FBQyxHQUFHZixLQUFLO1lBQ2hELENBQUMsQ0FBQztZQUVFRSxPQUFPLEdBQXFCO2NBQUVsQyxJQUFJLEVBQUpBLElBQUk7Y0FBRWlCLEtBQUssRUFBRSxJQUFJO2NBQUVDLE9BQU8sRUFBRTtZQUFJLENBQUU7WUFBQXNCLFFBQUEsQ0FBQUMsSUFBQTtZQUFBRCxRQUFBLENBQUEvRyxJQUFBO1lBRXZDLE9BQU1tQyxhQUFhLENBQzVDb0MsSUFBSSxFQUNKN0UsS0FBSyxFQUNMdUQsTUFBTSxFQUNORyxRQUFRLEVBQ1JVLFFBQVEsQ0FBQ3VELHNCQUFzQixDQUFBLENBQUUsQ0FDbEM7VUFBQTtZQUFBWCxvQkFBQSxHQUFBSyxRQUFBLENBQUFTLElBQUE7WUFOT2hDLEtBQUssR0FBQWtCLG9CQUFBLENBQUxsQixLQUFLO1lBQUVDLE9BQU8sR0FBQWlCLG9CQUFBLENBQVBqQixPQUFPO1lBT3RCZ0IsT0FBTyxHQUFHO2NBQUVsQyxJQUFJLEVBQUpBLElBQUk7Y0FBRWlCLEtBQUssRUFBTEEsS0FBSztjQUFFQyxPQUFPLEVBQVBBO1lBQU8sQ0FBRTtZQUFDc0IsUUFBQSxDQUFBL0csSUFBQTtZQUFBO1VBQUE7WUFBQStHLFFBQUEsQ0FBQUMsSUFBQTtZQUFBSCxFQUFBLEdBQUFFLFFBQUE7WUFFbkM7WUFDQTtZQUNBO1lBQ0FOLE9BQU8sR0FBRztjQUFFbEMsSUFBSSxFQUFKQSxJQUFJO2NBQUVpQixLQUFLLEVBQUUsQ0FBQWMsRUFBQSxHQUFBdkUsbUJBQW1CLENBQUE4RSxFQUFJLENBQUMsTUFBQSxJQUFBLElBQUFQLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJLG1CQUFtQjtjQUFFYixPQUFPLEVBQUU7WUFBSSxDQUFFO1VBQUM7WUFBQXNCLFFBQUEsQ0FBQUMsSUFBQTtZQUVwRkwsU0FBUyxHQUFHN0MsUUFBUSxDQUFDMkQsc0JBQXNCLENBQUNsRCxJQUFJLEVBQUVnQyxLQUFLLENBQUM7WUFDeERLLFVBQVUsR0FBR0osT0FBTyxDQUFDWCxNQUFNLENBQy9CLFVBQUN5QixXQUFXO2NBQUEsT0FBS3RELGlCQUFpQixDQUFDdUQsT0FBTyxDQUFDRCxXQUFXLENBQUMsS0FBS2YsS0FBSztZQUFBLEVBQ2xFO1lBQ0Q5QixrQkFBa0IsQ0FBQ2tDLFNBQVMsR0FBRyxDQUFDRixPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUVHLFVBQVUsQ0FBQztZQUFDLE9BQUFHLFFBQUEsQ0FBQVcsTUFBQTtVQUFBO1lBQUEsT0FBQVgsUUFBQSxDQUFBRSxNQUFBLFdBS3REO2NBQUVDLE9BQU8sRUFBRVQsT0FBTyxDQUFDakIsS0FBSyxLQUFLLElBQUk7Y0FBRUEsS0FBSyxFQUFFaUIsT0FBTyxDQUFDakI7WUFBSyxDQUFFO1VBQUE7VUFBQTtZQUFBLE9BQUF1QixRQUFBLENBQUFZLElBQUE7UUFBQTtNQUFBLEdBQUF0QixPQUFBO0lBQUEsQ0FDakUsRUFBQTtFQUFBLEVBQ0Y7RUFFRDtFQUNBO0VBQ0E7RUFDQSxJQUFNdUIsZUFBZSxHQUFHbEcsZ0JBQWdCLENBQ3RDLFVBQU82QyxJQUFZLEVBQUVzRCxZQUFrQztJQUFBLE9BQUl6SSxTQUFBLENBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLGVBQUErRyxtQkFBQSxDQUFBQyxJQUFBLENBQUEsU0FBQTBCLFNBQUE7TUFBQSxJQUFBQyxPQUFBLEVBQUE3QixLQUFBLEVBQUFqRCxNQUFBLEVBQUErRSxVQUFBO01BQUEsT0FBQTdCLG1CQUFBLENBQUFXLElBQUEsV0FBQW1CLFNBQUE7UUFBQSxrQkFBQUEsU0FBQSxDQUFBakIsSUFBQSxHQUFBaUIsU0FBQSxDQUFBakksSUFBQTtVQUFBO1lBQ25EK0gsT0FBTyxHQUFHaEUsS0FBSyxDQUFDSyxRQUFRLENBQUEsQ0FBRSxDQUFDMkQsT0FBTztZQUN4QyxJQUFJLENBQUNBLE9BQU8sQ0FBQ3hELElBQUksQ0FBQyxFQUFFO2NBQ2xCUixLQUFLLENBQUNTLFFBQVEsQ0FBQztnQkFBRXVELE9BQU8sRUFBQXBILE1BQUEsQ0FBQXdELE1BQUEsQ0FBQXhELE1BQUEsQ0FBQXdELE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBTzRELE9BQU8sQ0FBQSxFQUFBRyxlQUFBLEtBQUczRCxJQUFJLEVBQUcsSUFBSSxDQUFBO2NBQUUsQ0FBRSxDQUFDO1lBQzNEO1lBRU0yQixLQUFLLEdBQUdwQyxRQUFRLENBQUNxRSxhQUFhLENBQUM1RCxJQUFJLENBQUM7WUFBQSxJQUNyQzJCLEtBQUs7Y0FBQStCLFNBQUEsQ0FBQWpJLElBQUE7Y0FBQTtZQUFBO1lBQUEsT0FBQWlJLFNBQUEsQ0FBQWhCLE1BQUE7VUFBQTtZQUNKaEUsTUFBTSxHQUFHYSxRQUFRLENBQUNzRCxjQUFjLENBQUEsQ0FBRTtZQUNsQ1ksVUFBVSxHQUFHaEcsb0JBQW9CLENBQ3JDRSxZQUFZLENBQUNnRSxLQUFLLEVBQUVqRCxNQUFNLEVBQUVhLFFBQVEsQ0FBQ3VELHNCQUFzQixDQUFBLENBQUUsQ0FBQyxFQUM5RCxRQUFRLEVBQ1JwRixpQkFBaUIsQ0FBQzRGLFlBQVksRUFBRWhFLGVBQWUsQ0FBQyxFQUNoRFUsSUFBSSxDQUNMO1lBQUEsTUFDR3lELFVBQVUsQ0FBQzlHLE1BQU0sR0FBRyxDQUFDO2NBQUErRyxTQUFBLENBQUFqSSxJQUFBO2NBQUE7WUFBQTtZQUFBaUksU0FBQSxDQUFBakksSUFBQTtZQUN2QixPQUFNaUcsa0JBQWtCLENBQ3RCMUIsSUFBSSxFQUNKMUMsWUFBWSxDQUFDb0IsTUFBNkIsRUFBRXNCLElBQUksQ0FBQyxFQUNqRHlELFVBQVUsQ0FDWDtVQUFBO1VBQUE7WUFBQSxPQUFBQyxTQUFBLENBQUFOLElBQUE7UUFBQTtNQUFBLEdBQUFHLFFBQUE7SUFBQSxDQUVKLEVBQUE7RUFBQSxFQUNGO0VBRUQ7RUFDQTtFQUNBO0VBQ0EsSUFBTU0sbUJBQW1CLEdBQUd6RyxhQUFhLENBQ3ZDLFVBQU8wRyxRQUFtQjtJQUFBLE9BQWtDakosU0FBQSxDQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxlQUFBK0csbUJBQUEsQ0FBQUMsSUFBQSxDQUFBLFNBQUFrQyxTQUFBO01BQUEsSUFBQUMsZ0JBQUEsRUFBQUMsV0FBQSxFQUFBQyxlQUFBLEVBQUFDLFlBQUEsRUFBQUMsVUFBQSxFQUFBQyxNQUFBLEVBQUFyRSxJQUFBLEVBQUEyQixLQUFBLEVBQUFNLE9BQUEsRUFBQTlCLFFBQUEsRUFBQWtDLFVBQUE7TUFBQSxPQUFBVCxtQkFBQSxDQUFBVyxJQUFBLFdBQUErQixTQUFBO1FBQUEsa0JBQUFBLFNBQUEsQ0FBQTdCLElBQUEsR0FBQTZCLFNBQUEsQ0FBQTdJLElBQUE7VUFBQTtZQUNwRHVJLGdCQUFnQixHQUFHRixRQUFRLElBQUkxSCxNQUFNLENBQUNxRixJQUFJLENBQUNsQyxRQUFRLENBQUNnRixVQUFVLENBQUM7WUFDL0ROLFdBQVcsR0FBOEIsQ0FBQSxDQUFFLEVBRWpEO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDTUMsZUFBZSxHQUFHLElBQUlNLEdBQUcsQ0FBQSxDQUFrQjtZQUMzQ0wsWUFBWSxHQUFHLElBQUlLLEdBQUcsQ0FBQSxDQUFrQjtZQUFBSixVQUFBLEdBQUF2RCwwQkFBQSxDQUMzQm1ELGdCQUFnQjtZQUFBO2NBQW5DLEtBQUFJLFVBQUEsQ0FBQW5JLENBQUEsTUFBQW9JLE1BQUEsR0FBQUQsVUFBQSxDQUFBckQsQ0FBQSxJQUFBbEYsSUFBQSxHQUFxQztnQkFBMUJtRSxJQUFJLEdBQUFxRSxNQUFBLENBQUFsSixLQUFBO2dCQUNQd0csS0FBSyxHQUFHcEMsUUFBUSxDQUFDZ0YsVUFBVSxDQUFDdkUsSUFBSSxDQUFDO2dCQUN2QyxJQUFJMkIsS0FBSyxFQUFFO2tCQUNUd0MsWUFBWSxDQUFDTSxHQUFHLENBQUN6RSxJQUFJLEVBQUVULFFBQVEsQ0FBQ3FELGtCQUFrQixDQUFDNUMsSUFBSSxDQUFDLENBQUM7a0JBQ3pEa0UsZUFBZSxDQUFDTyxHQUFHLENBQ2pCekUsSUFBSSxFQUNKckMsWUFBWSxDQUFDZ0UsS0FBSyxFQUFFcEMsUUFBUSxDQUFDc0QsY0FBYyxDQUFBLENBQUUsRUFBRXRELFFBQVEsQ0FBQ3VELHNCQUFzQixDQUFBLENBQUUsQ0FBQyxDQUNsRjtnQkFDSDtjQUNGO2NBRUE7Y0FDQTtZQUFBLFNBQUEzQixHQUFBO2NBQUFpRCxVQUFBLENBQUExSSxDQUFBLENBQUF5RixHQUFBO1lBQUE7Y0FBQWlELFVBQUEsQ0FBQWhELENBQUE7WUFBQTtZQUNNYSxPQUFPLEdBQUcrQixnQkFBZ0IsQ0FBQzFDLE1BQU0sQ0FBQyxVQUFDdEIsSUFBSSxFQUFJO2NBQy9DLElBQU1uQixRQUFRLEdBQUdxRixlQUFlLENBQUNRLEdBQUcsQ0FBQzFFLElBQUksQ0FBQztjQUMxQyxPQUFPbkIsUUFBUSxHQUFHRCxvQkFBb0IsQ0FBQ0MsUUFBUSxDQUFDLEdBQUcsS0FBSztZQUMxRCxDQUFDLENBQUM7WUFDRmEsY0FBYyxDQUFDdUMsT0FBTyxDQUFDO1lBQ3ZCQSxPQUFPLENBQUNsQyxPQUFPLENBQUMsVUFBQ0MsSUFBSSxFQUFJO2NBQ3ZCUCxpQkFBaUIsQ0FBQ3VELE9BQU8sQ0FBQ2hELElBQUksQ0FBQyxHQUFHbUUsWUFBWSxDQUFDTyxHQUFHLENBQUMxRSxJQUFJLENBQVc7WUFDcEUsQ0FBQyxDQUFDO1lBRUlHLFFBQVEsR0FBdUIsRUFBRTtZQUFBbUUsU0FBQSxDQUFBN0IsSUFBQTtZQUFBNkIsU0FBQSxDQUFBN0ksSUFBQTtZQUVyQyxPQUFNSixPQUFPLENBQUNzSixHQUFHLENBQ2ZYLGdCQUFnQixDQUFDWSxHQUFHLENBQUMsVUFBTzVFLElBQUk7Y0FBQSxPQUFJbkYsU0FBQSxDQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxlQUFBK0csbUJBQUEsQ0FBQUMsSUFBQSxDQUFBLFNBQUFnRCxTQUFBO2dCQUFBLElBQUE5QyxFQUFBLEVBQUFsRCxRQUFBLEVBQUFvQyxLQUFBLEVBQUFDLE9BQUEsRUFBQTRELHFCQUFBLEVBQUE5QyxLQUFBLEVBQUErQyxHQUFBO2dCQUFBLE9BQUFuRCxtQkFBQSxDQUFBVyxJQUFBLFdBQUF5QyxTQUFBO2tCQUFBLGtCQUFBQSxTQUFBLENBQUF2QyxJQUFBLEdBQUF1QyxTQUFBLENBQUF2SixJQUFBO29CQUFBO3NCQUM1Qm9ELFFBQVEsR0FBR3FGLGVBQWUsQ0FBQ1EsR0FBRyxDQUFDMUUsSUFBSSxDQUFDO3NCQUFBLElBQ3JDbkIsUUFBUTt3QkFBQW1HLFNBQUEsQ0FBQXZKLElBQUE7d0JBQUE7c0JBQUE7c0JBQUEsT0FBQXVKLFNBQUEsQ0FBQXRDLE1BQUE7b0JBQUE7c0JBQ1R6QixLQUFLLEdBQThCLElBQUk7c0JBQ3ZDQyxPQUFPLEdBQWdDLElBQUk7c0JBQUE4RCxTQUFBLENBQUF2QyxJQUFBO3NCQUFBdUMsU0FBQSxDQUFBdkosSUFBQTtzQkFFdkIsT0FBTW1DLGFBQWEsQ0FDdkNvQyxJQUFJLEVBQ0oxQyxZQUFZLENBQUNpQyxRQUFRLENBQUNzRCxjQUFjLENBQUEsQ0FBeUIsRUFBRTdDLElBQUksQ0FBQyxFQUNwRVQsUUFBUSxDQUFDc0QsY0FBYyxDQUFBLENBQUUsRUFDekJoRSxRQUFRLEVBQ1JVLFFBQVEsQ0FBQ3VELHNCQUFzQixDQUFBLENBQUUsQ0FDbEM7b0JBQUE7c0JBQUFnQyxxQkFBQSxHQUFBRSxTQUFBLENBQUEvQixJQUFBO3NCQU5FaEMsS0FBSyxHQUFBNkQscUJBQUEsQ0FBTDdELEtBQUs7c0JBQUVDLE9BQU8sR0FBQTRELHFCQUFBLENBQVA1RCxPQUFPO3NCQUFBOEQsU0FBQSxDQUFBdkosSUFBQTtzQkFBQTtvQkFBQTtzQkFBQXVKLFNBQUEsQ0FBQXZDLElBQUE7c0JBQUFzQyxHQUFBLEdBQUFDLFNBQUE7c0JBUWpCO3NCQUNBO3NCQUNBL0QsS0FBSyxHQUFHLENBQUFjLEVBQUEsR0FBQXZFLG1CQUFtQixDQUFBdUgsR0FBSSxDQUFDLE1BQUEsSUFBQSxJQUFBaEQsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUksbUJBQW1CO29CQUFDO3NCQUUxRDtzQkFDQTtzQkFDQTtzQkFDTUMsS0FBSyxHQUFHbUMsWUFBWSxDQUFDTyxHQUFHLENBQUMxRSxJQUFJLENBQUM7c0JBQ3BDLElBQUlnQyxLQUFLLEtBQUsvQyxTQUFTLElBQUlNLFFBQVEsQ0FBQzJELHNCQUFzQixDQUFDbEQsSUFBSSxFQUFFZ0MsS0FBSyxDQUFDLEVBQUU7d0JBQ3ZFN0IsUUFBUSxDQUFDOEUsSUFBSSxDQUFDOzBCQUFFakYsSUFBSSxFQUFKQSxJQUFJOzBCQUFFaUIsS0FBSyxFQUFMQSxLQUFLOzBCQUFFQyxPQUFPLEVBQVBBO3dCQUFPLENBQUUsQ0FBQztzQkFDekM7c0JBQ0EsSUFBSUQsS0FBSyxLQUFLLElBQUksRUFBRTt3QkFDbEJnRCxXQUFXLENBQUNqRSxJQUFJLENBQUMsR0FBR2lCLEtBQUs7c0JBQzNCO29CQUFDO29CQUFBO3NCQUFBLE9BQUErRCxTQUFBLENBQUE1QixJQUFBO2tCQUFBO2dCQUFBLEdBQUF5QixRQUFBO2NBQUEsQ0FDRixFQUFBO1lBQUEsRUFBQyxDQUNIO1VBQUE7WUFBQVAsU0FBQSxDQUFBN0IsSUFBQTtZQUVLSixVQUFVLEdBQUdKLE9BQU8sQ0FBQ1gsTUFBTSxDQUMvQixVQUFDdEIsSUFBSTtjQUFBLE9BQUtQLGlCQUFpQixDQUFDdUQsT0FBTyxDQUFDaEQsSUFBSSxDQUFDLEtBQUttRSxZQUFZLENBQUNPLEdBQUcsQ0FBQzFFLElBQUksQ0FBQztZQUFBLEVBQ3JFO1lBQ0RFLGtCQUFrQixDQUFDQyxRQUFRLEVBQUVrQyxVQUFVLENBQUM7WUFBQyxPQUFBaUMsU0FBQSxDQUFBbkIsTUFBQTtVQUFBO1lBQUEsTUFHdkMvRyxNQUFNLENBQUNxRixJQUFJLENBQUN3QyxXQUFXLENBQUMsQ0FBQ3RILE1BQU0sR0FBRyxDQUFDO2NBQUEySCxTQUFBLENBQUE3SSxJQUFBO2NBQUE7WUFBQTtZQUFBLE1BQy9CLElBQUl1QyxtQkFBbUIsQ0FDM0J1QixRQUFRLENBQUNzRCxjQUFjLENBQUEsQ0FBeUIsRUFDaERvQixXQUFXLENBQ1o7VUFBQTtZQUFBLEtBR0NILFFBQVE7Y0FBQVEsU0FBQSxDQUFBN0ksSUFBQTtjQUFBO1lBQUE7WUFBQSxPQUFBNkksU0FBQSxDQUFBNUIsTUFBQSxXQUNIb0IsUUFBUSxDQUFDb0IsTUFBTSxDQUFzQixVQUFDQyxHQUFHLEVBQUVuRixJQUFJLEVBQUk7Y0FDeERtRixHQUFHLENBQUNuRixJQUFJLENBQUMsR0FBRzFDLFlBQVksQ0FDdEJpQyxRQUFRLENBQUNzRCxjQUFjLENBQUEsQ0FBeUIsRUFDaEQ3QyxJQUFJLENBQ0w7Y0FDRCxPQUFPbUYsR0FBRztZQUNaLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQztVQUFBO1lBQUEsT0FBQWIsU0FBQSxDQUFBNUIsTUFBQSxXQUdEbkQsUUFBUSxDQUFDc0QsY0FBYyxDQUFBLENBQXlCO1VBQUE7VUFBQTtZQUFBLE9BQUF5QixTQUFBLENBQUFsQixJQUFBO1FBQUE7TUFBQSxHQUFBVyxRQUFBO0lBQUEsQ0FDeEQsRUFBQTtFQUFBLEVBQ0Y7RUFFRDtFQUNBO0VBQ0E7RUFDQSxJQUFNcUIsV0FBVyxHQUFHaEksYUFBYSxDQUMvQixVQUFDNEMsSUFBWSxFQUFvRTtJQUFBLElBQWxFcUYsWUFBQSxHQUFBckcsU0FBQSxDQUFBckMsTUFBQSxRQUFBcUMsU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBNkIsQ0FBQSxDQUFFO0lBQzVDLElBQUFzRyxtQkFBQSxHQUF1QkQsWUFBWSxDQUEzQjFELEtBQUs7TUFBTEEsS0FBSyxHQUFBMkQsbUJBQUEsY0FBRyxFQUFFLEdBQUFBLG1CQUFBO0lBRWxCLElBQU1DLGNBQWMsZ0JBQWtDdkksSUFBSSxDQUN4RCxVQUFDK0UsRUFBOEIsRUFBSTtNRHhFL0IsSUN3RUR5RCxRQUFRLEdBQVF6RCxFQUFZLENBQTVCeUQsUUFBUTtRQUFFQyxNQUFNLEdBQUExRCxFQUFZLENBQWxCMEQsTUFBTTtRQUFLQyxLQUFLLEdBQUExSixNQUFBLENBQUErRixFQUFBLEVBQTVCLENBQUEsVUFBQSxFQUFBLFFBQUEsQ0FBOEIsQ0FBRjtNQUMzQjtNQUNBO01BQ0E7TUFDQSxJQUFBNEQsaUJBQUEsR0FBZ0U5SCxnQkFBZ0IsQ0FDOUUyQixLQUFLLEVBQ0wsVUFBQ2EsS0FBSyxFQUE0RTtVRHpFOUUsSUFBSTBCLEVBQUU7VUN5RXlFLE9BQUEsQ0FDakYsQ0FBQUEsRUFBQSxHQUFBekUsWUFBWSxDQUFDK0MsS0FBSyxDQUFDM0IsTUFBTSxFQUFFc0IsSUFBSSxDQUFDLE1BQUEsSUFBQSxJQUFBK0IsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUksRUFBRSxFQUN0QzFCLEtBQUssQ0FBQ0ksTUFBTSxDQUFDVCxJQUFJLENBQUMsRUFDbEJLLEtBQUssQ0FBQ21ELE9BQU8sQ0FBQ3hELElBQUksQ0FBQyxFQUNuQkssS0FBSyxDQUFDUCxVQUFVLENBQUNFLElBQUksQ0FBQyxDQUN2QjtRRHZFRCxDQ3VFQyxFQUNEbEMsa0JBQWtCLENBQ25CO1FBQUE4SCxrQkFBQSxHQUFBQyxjQUFBLENBQUFGLGlCQUFBO1FBVE1HLFVBQVUsR0FBQUYsa0JBQUE7UUFBRUcsVUFBVSxHQUFBSCxrQkFBQTtRQUFFSSxZQUFZLEdBQUFKLGtCQUFBO1FBQUVLLGVBQWUsR0FBQUwsa0JBQUE7TUFXNUQ5SSxTQUFTLENBQUMsWUFBSztRQUNiO1FBQ0E7UUFDQTtRQUNBO1FBQ0F5QyxRQUFRLENBQUMyRyxXQUFXLENBQUNsRyxJQUFJLENBQUM7UUFDMUIsSUFBTW1HLGFBQWEsR0FBRzVHLFFBQVEsQ0FBQ3FFLGFBQWEsQ0FBQzVELElBQUksQ0FBQztRQUNsRCxJQUFJLENBQUNtRyxhQUFhLElBQUl4RSxLQUFLLENBQUNoRixNQUFNLEdBQUcsQ0FBQyxFQUFFO1VBQ3RDNEMsUUFBUSxDQUFDNkcsYUFBYSxDQUFDcEcsSUFBSSxFQUFFMkIsS0FBMkIsQ0FBQztRQUMzRDtRQUNBLE9BQU8sWUFBSztVQUNWcEMsUUFBUSxDQUFDOEcsWUFBWSxDQUFDckcsSUFBSSxDQUFDO1FBQzdCLENBQUM7TUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztNQUVSLElBQU1zRyxpQkFBaUIsR0FBR25KLGdCQUFnQixDQUFDLFVBQUNoQyxLQUFVLEVBQUk7UUFDeERvRSxRQUFRLENBQUNnSCxhQUFhLENBQUN2RyxJQUFJLEVBQUU3RSxLQUFLLENBQUM7UUFDbkM7UUFDQTtRQUNBLElBQU1xSSxPQUFPLEdBQUdoRSxLQUFLLENBQUNLLFFBQVEsQ0FBQSxDQUFFLENBQUMyRCxPQUFPO1FBQ3hDLElBQUksQ0FBQ0EsT0FBTyxDQUFDeEQsSUFBSSxDQUFDLEVBQUU7VUFDbEJSLEtBQUssQ0FBQ1MsUUFBUSxDQUFDO1lBQUV1RCxPQUFPLEVBQUFwSCxNQUFBLENBQUF3RCxNQUFBLENBQUF4RCxNQUFBLENBQUF3RCxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQU80RCxPQUFPLENBQUEsRUFBQUcsZUFBQSxLQUFHM0QsSUFBSSxFQUFHLElBQUksQ0FBQTtVQUFFLENBQUUsQ0FBQztRQUMzRDtRQUNBLElBQU15RCxVQUFVLEdBQUdoRyxvQkFBb0IsQ0FDckNFLFlBQVksQ0FDVmdFLEtBQTJCLEVBQzNCcEMsUUFBUSxDQUFDc0QsY0FBYyxDQUFBLENBQUUsRUFDekJ0RCxRQUFRLENBQUN1RCxzQkFBc0IsQ0FBQSxDQUFFLENBQ2xDLEVBQ0QsVUFBVSxFQUNWcEYsaUJBQWlCLENBQUMySCxZQUFZLENBQUMvRixlQUFlLEVBQUVBLGVBQWUsQ0FBQyxFQUNoRVUsSUFBSSxDQUNMO1FBQ0QsSUFBSXlELFVBQVUsQ0FBQzlHLE1BQU0sR0FBRyxDQUFDLEVBQUU7VUFDekI7VUFDQTtVQUNBO1VBQ0ErRSxrQkFBa0IsQ0FBQzFCLElBQUksRUFBRTdFLEtBQUssRUFBRXNJLFVBQWdDLENBQUM7UUFDbkU7TUFDRixDQUFDLENBQUM7TUFFRixJQUFNK0MsVUFBVSxHQUFHckosZ0JBQWdCLENBQUMsWUFBSztRQUN2Q2tHLGVBQWUsQ0FBQ3JELElBQUksRUFBRXFGLFlBQVksQ0FBQy9GLGVBQWUsQ0FBQztNQUNyRCxDQUFDLENBQUM7TUFFRixJQUFNbUgsVUFBVSxHQUFBckssTUFBQSxDQUFBd0QsTUFBQSxDQUFBO1FBQ2RJLElBQUksRUFBSkEsSUFBSTtRQUNKN0UsS0FBSyxFQUFFMkssVUFBVTtRQUNqQjdFLEtBQUssRUFBRThFLFVBQVU7UUFDakJ2QyxPQUFPLEVBQUV3QyxZQUFZO1FBQ3JCbEcsVUFBVSxFQUFFbUcsZUFBZTtRQUMzQlMsUUFBUSxFQUFFSixpQkFBaUI7UUFDM0JLLE1BQU0sRUFBRUg7TUFBVSxDQUFBLEVBQ2ZkLEtBQUssQ0FDVDtNQUVELElBQU1rQixpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUFJbEwsQ0FBTSxFQUFJO1FEL0YvQixJQUFJcUcsRUFBRTtRQ2dHVixJQUFNNUcsS0FBSyxHQUNUTyxDQUFDLElBQUltTCxPQUFBLENBQU9uTCxDQUFDLE1BQUssUUFBUSxJQUFJLFFBQVEsSUFBSUEsQ0FBQyxHQUN0Q0EsQ0FBeUMsQ0FBQ29MLE1BQU0sQ0FBQzNMLEtBQUssR0FDdkRPLENBQUM7UUFDUDRLLGlCQUFpQixDQUFDbkwsS0FBSyxDQUFDO1FBQ3hCLElBQ0UsYUFBQStCLEtBQUssQ0FBQzZKLGNBQWMsQ0FBQ3ZCLFFBQVEsQ0FBQyxLQUM5QixDQUFBekQsRUFBQSxHQUFDeUQsUUFBUSxDQUFDRSxLQUE2QixNQUFBLElBQUEsSUFBQTNELEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFMkUsUUFBUSxDQUFBLEVBQ2pEO1VBQ0VsQixRQUFRLENBQUNFLEtBQTZCLENBQUNnQixRQUE2QixDQUFDdkwsS0FBSyxDQUFDO1FBQy9FO01BQ0YsQ0FBQztNQUVELElBQU02TCxlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQUEsRUFBUTtRRGxHdkIsSUFBSWpGLEVBQUU7UUNtR1Z5RSxVQUFVLENBQUEsQ0FBRTtRQUNaLElBQ0UsYUFBQXRKLEtBQUssQ0FBQzZKLGNBQWMsQ0FBQ3ZCLFFBQVEsQ0FBQyxLQUM5QixDQUFBekQsRUFBQSxHQUFDeUQsUUFBUSxDQUFDRSxLQUE2QixNQUFBLElBQUEsSUFBQTNELEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFNEUsTUFBTSxDQUFBLEVBQy9DO1VBQ0VuQixRQUFRLENBQUNFLEtBQTZCLENBQUNpQixNQUFxQixDQUFBLENBQUU7UUFDbEU7TUFDRixDQUFDO01BRUQsSUFBSWxCLE1BQU0sSUFBSSxPQUFPQSxNQUFNLEtBQUssVUFBVSxFQUFFO1FBQzFDLE9BQU9BLE1BQU0sQ0FBQ2dCLFVBQVUsQ0FBQztNQUMzQjtNQUVBLElBQUksT0FBT2pCLFFBQVEsS0FBSyxVQUFVLEVBQUU7UUFDbEMsT0FBUUEsUUFBbUQsQ0FBQ2lCLFVBQVUsQ0FBdUI7TUFDL0Y7TUFFQTtNQUNBO01BQ0E7TUFDQTtNQUNBLElBQU1RLFlBQVksR0FBQTdLLE1BQUEsQ0FBQXdELE1BQUEsQ0FBQTtRQUNoQkksSUFBSSxFQUFKQSxJQUFJO1FBQ0o3RSxLQUFLLEVBQUUySyxVQUFVO1FBQ2pCWSxRQUFRLEVBQUVFLGlCQUFpQjtRQUMzQkQsTUFBTSxFQUFFSztNQUFlLENBQUEsRUFDcEJ0QixLQUFLLENBQ1Q7TUFFRCxpQkFBSXhJLEtBQUssQ0FBQzZKLGNBQWMsQ0FBQ3ZCLFFBQVEsQ0FBQyxFQUFFO1FBQ2xDLG9CQUFPdEksS0FBSyxDQUFDZ0ssWUFBWSxDQUFDMUIsUUFBOEIsRUFBRXlCLFlBQVksQ0FBQztNQUN6RTtNQUVBLElBQUk5SSxLQUFLLENBQUNDLE9BQU8sQ0FBQ29ILFFBQVEsQ0FBQyxFQUFFO1FBQzNCLG9CQUFPdEksS0FBSyxDQUFDaUssYUFBYSxDQUFBcEwsS0FBQSxDQUFuQm1CLEtBQUssR0FDVkQsUUFBUSxFQUNSLElBQUksRUFBQW1LLE1BQUEsQ0FBQUMsa0JBQUEsQ0FDRDdCLFFBQVEsQ0FBQ1osR0FBRyxDQUFDLFVBQUMwQyxLQUFLLEVBQUVDLEtBQUssRUFBSTtVQUMvQixpQkFBSXJLLEtBQUssQ0FBQzZKLGNBQWMsQ0FBQ08sS0FBSyxDQUFDLEVBQUU7WUFDL0Isb0JBQU9wSyxLQUFLLENBQUNnSyxZQUFZLENBQUNJLEtBQTJCLEVBQUFsTCxNQUFBLENBQUF3RCxNQUFBLENBQUF4RCxNQUFBLENBQUF3RCxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQ2hEcUgsWUFBWSxDQUFBLEVBQUE7Y0FDZk8sR0FBRyxFQUFFRixLQUFLLENBQUNFLEdBQUcsSUFBSUQ7WUFBSyxDQUFBLENBQUEsQ0FDdkI7VUFDSjtVQUNBLE9BQU9ELEtBQUs7UUFDZCxDQUFDLENBQUMsR0FDSDtNQUNIO01BRUEsT0FBTyxJQUFJO0lBQ2IsQ0FBQyxDQUNGO0lBRUQvQixjQUFjLENBQUNrQyxXQUFXLFlBQUFMLE1BQUEsQ0FBWXBILElBQUksTUFBRztJQUU3QyxPQUFPdUYsY0FBYztFQUN2QixDQUFDLENBQ0Y7RUFFRDtFQUNBO0VBQ0E7RUFDQSxJQUFNbUMsWUFBWSxHQUFHdkssZ0JBQWdCLENBQUMsVUFBT3pCLENBQWE7SUFBQSxPQUFJYixTQUFBLENBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLGVBQUErRyxtQkFBQSxDQUFBQyxJQUFBLENBQUEsU0FBQThGLFNBQUE7TUFBQSxJQUFBQyxlQUFBLEVBQUFDLEdBQUE7TUFBQSxPQUFBakcsbUJBQUEsQ0FBQVcsSUFBQSxXQUFBdUYsU0FBQTtRQUFBLGtCQUFBQSxTQUFBLENBQUFyRixJQUFBLEdBQUFxRixTQUFBLENBQUFyTSxJQUFBO1VBQUE7WUFDNURDLENBQUMsS0FBQSxJQUFBLElBQURBLENBQUMsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBREEsQ0FBQyxDQUFFcU0sY0FBYyxDQUFBLENBQUU7WUFBQ0QsU0FBQSxDQUFBckYsSUFBQTtZQUFBcUYsU0FBQSxDQUFBck0sSUFBQTtZQUVNLE9BQU1vSSxtQkFBbUIsQ0FBQSxDQUFFO1VBQUE7WUFBN0MrRCxlQUFlLEdBQUFFLFNBQUEsQ0FBQTdFLElBQUE7WUFDckIvRCxRQUFRLEtBQUEsSUFBQSxJQUFSQSxRQUFRLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQVJBLFFBQVEsQ0FBRzBJLGVBQXlCLENBQUM7WUFBQ0UsU0FBQSxDQUFBck0sSUFBQTtZQUFBO1VBQUE7WUFBQXFNLFNBQUEsQ0FBQXJGLElBQUE7WUFBQW9GLEdBQUEsR0FBQUMsU0FBQTtZQUV0QztZQUNBO1lBQ0E7WUFDQSxJQUFJRCxHQUFBLFlBQWU3SixtQkFBbUIsRUFBRTtjQUN0Q21CLGNBQWMsS0FBQSxJQUFBLElBQWRBLGNBQWMsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBZEEsY0FBYyxDQUFHO2dCQUFFVCxNQUFNLEVBQUVtSixHQUFBLENBQUluSixNQUFnQjtnQkFBRStCLE1BQU0sRUFBRW9ILEdBQUEsQ0FBSXBIO2NBQU0sQ0FBRSxDQUFDO1lBQ3hFLENBQUMsTUFBTTtjQUNMdUgsT0FBTyxDQUFDL0csS0FBSyxDQUFDLHlDQUF5QyxFQUFBNEcsR0FBSyxDQUFDO1lBQy9EO1VBQUM7VUFBQTtZQUFBLE9BQUFDLFNBQUEsQ0FBQTFFLElBQUE7UUFBQTtNQUFBLEdBQUF1RSxRQUFBO0lBQUEsQ0FFSixFQUFBO0VBQUEsRUFBQztFQUVGLElBQU1NLFdBQVcsR0FBRzlLLGdCQUFnQixDQUFDLFVBQUN6QixDQUFhLEVBQUk7SUFDckRBLENBQUMsS0FBQSxJQUFBLElBQURBLENBQUMsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBREEsQ0FBQyxDQUFFcU0sY0FBYyxDQUFBLENBQUU7SUFDbkJ4SSxRQUFRLENBQUMySSxXQUFXLENBQUEsQ0FBRTtJQUN0QjlJLE9BQU8sS0FBQSxJQUFBLElBQVBBLE9BQU8sS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBUEEsT0FBTyxDQUFBLENBQUk7RUFDYixDQUFDLENBQUM7RUFFRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsSUFBTStJLGFBQWEsR0FBRy9LLGFBQWEsQ0FBQyxVQUFDNEMsSUFBWTtJQUFBLE9BQUtSLEtBQUssQ0FBQ0ssUUFBUSxDQUFBLENBQUUsQ0FBQ1ksTUFBTSxDQUFDVCxJQUFJLENBQUM7RUFBQSxFQUFDO0VBQ3BGLElBQU1vSSxlQUFlLEdBQUdoTCxhQUFhLENBQUMsVUFBQzRDLElBQVk7SUFBQSxPQUFLUixLQUFLLENBQUNLLFFBQVEsQ0FBQSxDQUFFLENBQUNjLFFBQVEsQ0FBQ1gsSUFBSSxDQUFDO0VBQUEsRUFBQztFQUN4RixJQUFNcUksY0FBYyxHQUFHakwsYUFBYSxDQUFDLFVBQUMwRyxRQUFtQixFQUFJO0lBQzNELElBQU1yRCxNQUFNLEdBQUdqQixLQUFLLENBQUNLLFFBQVEsQ0FBQSxDQUFFLENBQUNZLE1BQU07SUFDdEMsSUFBSSxDQUFDcUQsUUFBUSxFQUFFLE9BQU9yRCxNQUFNO0lBQzVCLElBQU03RSxNQUFNLEdBQThCLENBQUEsQ0FBRTtJQUM1Q2tJLFFBQVEsQ0FBQy9ELE9BQU8sQ0FBQyxVQUFDQyxJQUFJLEVBQUk7TUFDeEIsSUFBSVMsTUFBTSxDQUFDVCxJQUFJLENBQUMsRUFBRTtRQUNoQnBFLE1BQU0sQ0FBQ29FLElBQUksQ0FBQyxHQUFHUyxNQUFNLENBQUNULElBQUksQ0FBQztNQUM3QjtJQUNGLENBQUMsQ0FBQztJQUNGLE9BQU9wRSxNQUFNO0VBQ2YsQ0FBQyxDQUFDO0VBQ0YsSUFBTTBNLGNBQWMsR0FBR2xMLGFBQWEsQ0FBQyxVQUFDNEMsSUFBWTtJQUFBLE9BQUtSLEtBQUssQ0FBQ0ssUUFBUSxDQUFBLENBQUUsQ0FBQzJELE9BQU8sQ0FBQ3hELElBQUksQ0FBQyxJQUFJLEtBQUs7RUFBQSxFQUFDO0VBQy9GLElBQU11SSxlQUFlLEdBQUduTCxhQUFhLENBQ25DLFVBQUMwRyxRQUFtQixFQUE4QjtJQUFBLElBQTVCMEUsZ0JBQWdCLEdBQUF4SixTQUFBLENBQUFyQyxNQUFBLFFBQUFxQyxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLEtBQUs7SUFDNUMsSUFBTXdFLE9BQU8sR0FBR2hFLEtBQUssQ0FBQ0ssUUFBUSxDQUFBLENBQUUsQ0FBQzJELE9BQU87SUFDeEMsSUFBSSxDQUFDTSxRQUFRLEVBQUU7TUFDYixPQUFPMUgsTUFBTSxDQUFDcUYsSUFBSSxDQUFDK0IsT0FBTyxDQUFDLENBQUNoRixJQUFJLENBQUMsVUFBQ2dKLEdBQUc7UUFBQSxPQUFLaEUsT0FBTyxDQUFDZ0UsR0FBRyxDQUFDO01BQUEsRUFBQztJQUN6RDtJQUNBLElBQUlnQixnQkFBZ0IsRUFBRTtNQUNwQixPQUFPMUUsUUFBUSxDQUFDMkUsS0FBSyxDQUFDLFVBQUN6SSxJQUFJO1FBQUEsT0FBS3dELE9BQU8sQ0FBQ3hELElBQUksQ0FBQztNQUFBLEVBQUM7SUFDaEQ7SUFDQSxPQUFPOEQsUUFBUSxDQUFDdEYsSUFBSSxDQUFDLFVBQUN3QixJQUFJO01BQUEsT0FBS3dELE9BQU8sQ0FBQ3hELElBQUksQ0FBQztJQUFBLEVBQUM7RUFDL0MsQ0FBQyxDQUNGO0VBQ0QsSUFBTTBJLGlCQUFpQixHQUFHdEwsYUFBYSxDQUFDLFVBQUM0QyxJQUFZO0lBQUEsT0FBS1IsS0FBSyxDQUFDSyxRQUFRLENBQUEsQ0FBRSxDQUFDQyxVQUFVLENBQUNFLElBQUksQ0FBQyxJQUFJLEtBQUs7RUFBQSxFQUFDO0VBQ3JHLElBQU0ySSxjQUFjLEdBQUd2TCxhQUFhLENBQUMsVUFBQ3dMLFdBQXNDLEVBQUk7SUFDOUV4TSxNQUFNLENBQUN5TSxPQUFPLENBQUNELFdBQVcsQ0FBQyxDQUFDN0ksT0FBTyxDQUFDLFVBQUErSSxJQUFBLEVBQWtCO01BQUEsSUFBQUMsS0FBQSxHQUFBbEQsY0FBQSxDQUFBaUQsSUFBQTtRQUFoQjlJLElBQUksR0FBQStJLEtBQUE7UUFBRTlILEtBQUssR0FBQThILEtBQUE7TUFDL0N4SixRQUFRLENBQUN5SixhQUFhLENBQUNoSixJQUFJLEVBQUVpQixLQUFLLENBQUM7SUFDckMsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0VBQ0YsSUFBTWdJLGVBQWUsR0FBRzdMLGFBQWEsQ0FBQyxVQUFDNEMsSUFBWSxFQUErQjtJQUFBLElBQTdCa0osU0FBQSxHQUFBbEssU0FBQSxDQUFBckMsTUFBQSxRQUFBcUMsU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBcUIsSUFBSTtJQUM1RVEsS0FBSyxDQUFDUyxRQUFRLENBQUM7TUFBRXVELE9BQU8sRUFBQXBILE1BQUEsQ0FBQXdELE1BQUEsQ0FBQXhELE1BQUEsQ0FBQXdELE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBT0osS0FBSyxDQUFDSyxRQUFRLENBQUEsQ0FBRSxDQUFDMkQsT0FBTyxDQUFBLEVBQUFHLGVBQUEsS0FBRzNELElBQUksRUFBR2tKLFNBQVMsQ0FBQTtJQUFFLENBQUUsQ0FBQztFQUNqRixDQUFDLENBQUM7RUFDRixJQUFNQyxnQkFBZ0IsR0FBRy9MLGFBQWEsQ0FBQyxVQUFDZ00sV0FBb0MsRUFBSTtJQUM5RTVKLEtBQUssQ0FBQ1MsUUFBUSxDQUFDO01BQUV1RCxPQUFPLEVBQUFwSCxNQUFBLENBQUF3RCxNQUFBLENBQUF4RCxNQUFBLENBQUF3RCxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQU9KLEtBQUssQ0FBQ0ssUUFBUSxDQUFBLENBQUUsQ0FBQzJELE9BQU8sQ0FBQSxFQUFLNEYsV0FBVztJQUFFLENBQUUsQ0FBQztFQUM5RSxDQUFDLENBQUM7RUFDRixJQUFNQyxlQUFlLEdBQUdqTSxhQUFhLENBQUMsVUFBQ3FCLE1BQWlCLEVBQUk7SUFDMUQsSUFBSSxDQUFDQSxNQUFNLEVBQUU7TUFDWGMsUUFBUSxDQUFDMkksV0FBVyxDQUFBLENBQUU7TUFDdEI7SUFDRjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsSUFBTW9CLGFBQWEsR0FBRy9KLFFBQVEsQ0FBQ2dLLGdCQUFnQixDQUFBLENBQUU7SUFDakQsSUFBTWxKLEtBQUssR0FBR2IsS0FBSyxDQUFDSyxRQUFRLENBQUEsQ0FBRTtJQUM5QixJQUFJMkosU0FBUyxHQUFHbkosS0FBSyxDQUFDM0IsTUFBTTtJQUM1QkQsTUFBTSxDQUFDc0IsT0FBTyxDQUFDLFVBQUMwSixLQUFLLEVBQUk7TUFDdkIsSUFBTUMsT0FBTyxHQUFHcE0sWUFBWSxDQUFDZ00sYUFBYSxFQUFFRyxLQUFLLENBQUM7TUFDbERELFNBQVMsR0FBR0MsS0FBSyxDQUFDRSxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQzNCcE0sY0FBYyxDQUFDaU0sU0FBUyxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sQ0FBQyxHQUMxQ3ROLE1BQUEsQ0FBQXdELE1BQUEsQ0FBQXhELE1BQUEsQ0FBQXdELE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBTTRKLFNBQVMsQ0FBQSxFQUFBN0YsZUFBQSxLQUFHOEYsS0FBSyxFQUFHQyxPQUFPLENBQUEsQ0FBRTtJQUN4QyxDQUFDLENBQUM7SUFFRjtJQUNBO0lBQ0E7SUFDQTtJQUNBbkssUUFBUSxDQUFDcUssd0JBQXdCLENBQUNuTCxNQUFNLENBQUM7SUFDekMsSUFBTStCLFNBQVMsR0FBQXBFLE1BQUEsQ0FBQXdELE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBUVMsS0FBSyxDQUFDSSxNQUFNLENBQUU7SUFDckMsSUFBTUMsV0FBVyxHQUFBdEUsTUFBQSxDQUFBd0QsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFRUyxLQUFLLENBQUNNLFFBQVEsQ0FBRTtJQUN6QyxJQUFNa0osVUFBVSxHQUFBek4sTUFBQSxDQUFBd0QsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFRUyxLQUFLLENBQUNtRCxPQUFPLENBQUU7SUFDdkMsSUFBTWhDLGFBQWEsR0FBQXBGLE1BQUEsQ0FBQXdELE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBUVMsS0FBSyxDQUFDUCxVQUFVLENBQUU7SUFDN0NyQixNQUFNLENBQUNzQixPQUFPLENBQUMsVUFBQzBKLEtBQUssRUFBSTtNQUN2QixPQUFPakosU0FBUyxDQUFDaUosS0FBSyxDQUFDO01BQ3ZCLE9BQU8vSSxXQUFXLENBQUMrSSxLQUFLLENBQUM7TUFDekIsT0FBT0ksVUFBVSxDQUFDSixLQUFLLENBQUM7TUFDeEIsT0FBT2pJLGFBQWEsQ0FBQ2lJLEtBQUssQ0FBQztJQUM3QixDQUFDLENBQUM7SUFDRmpLLEtBQUssQ0FBQ1MsUUFBUSxDQUFDO01BQ2J2QixNQUFNLEVBQUU4SyxTQUFTO01BQ2pCL0ksTUFBTSxFQUFFRCxTQUFTO01BQ2pCRyxRQUFRLEVBQUVELFdBQVc7TUFDckI4QyxPQUFPLEVBQUVxRyxVQUFVO01BQ25CL0osVUFBVSxFQUFFMEI7SUQ3SFYsQ0M4SEgsQ0FBQztFQUNKLENBQUMsQ0FBQztFQUNGLElBQU1zSSxvQkFBb0IsR0FBRzFNLGFBQWEsQ0FDeEMsVUFBTzJNLFFBQW1EO0lBQUEsT0FBSWxQLFNBQUEsQ0FBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsZUFBQStHLG1CQUFBLENBQUFDLElBQUEsQ0FBQSxTQUFBbUksU0FBQTtNQUFBLElBQUFwQyxlQUFBLEVBQUFxQyxHQUFBLEVBQUFDLEdBQUE7TUFBQSxPQUFBdEksbUJBQUEsQ0FBQVcsSUFBQSxXQUFBNEgsU0FBQTtRQUFBLGtCQUFBQSxTQUFBLENBQUExSCxJQUFBLEdBQUEwSCxTQUFBLENBQUExTyxJQUFBO1VBQUE7WUFBQTBPLFNBQUEsQ0FBQTFILElBQUE7WUFBQTBILFNBQUEsQ0FBQTFPLElBQUE7WUFHeEMsT0FBTW9JLG1CQUFtQixDQUFBLENBQUU7VUFBQTtZQUE3QytELGVBQWUsR0FBQXVDLFNBQUEsQ0FBQWxILElBQUE7WUFBQWtILFNBQUEsQ0FBQTFPLElBQUE7WUFBQTtVQUFBO1lBQUEwTyxTQUFBLENBQUExSCxJQUFBO1lBQUF3SCxHQUFBLEdBQUFFLFNBQUE7WUFBQSxPQUFBQSxTQUFBLENBQUF6SCxNQUFBLFdBR1J6RCxTQUFTO1VBQUE7WUFBQSxLQUVkOEssUUFBUTtjQUFBSSxTQUFBLENBQUExTyxJQUFBO2NBQUE7WUFBQTtZQUFBME8sU0FBQSxDQUFBMUgsSUFBQTtZQUFBMEgsU0FBQSxDQUFBMU8sSUFBQTtZQUVSLE9BQU1zTyxRQUFRLENBQUNuQyxlQUF5QixDQUFDO1VBQUE7WUFBQXVDLFNBQUEsQ0FBQTFPLElBQUE7WUFBQTtVQUFBO1lBQUEwTyxTQUFBLENBQUExSCxJQUFBO1lBQUF5SCxHQUFBLEdBQUFDLFNBQUE7WUFFekM7WUFDQTtZQUNBO1lBQ0FuQyxPQUFPLENBQUMvRyxLQUFLLENBQUMsa0NBQWtDLEVBQUFpSixHQUFLLENBQUM7WUFBQyxPQUFBQyxTQUFBLENBQUF6SCxNQUFBLFdBQ2hEekQsU0FBUztVQUFBO1lBQUEsT0FBQWtMLFNBQUEsQ0FBQXpILE1BQUEsV0FHYmtGLGVBQXlCO1VBQUE7VUFBQTtZQUFBLE9BQUF1QyxTQUFBLENBQUEvRyxJQUFBO1FBQUE7TUFBQSxHQUFBNEcsUUFBQTtJQUFBLENBQ2pDLEVBQUE7RUFBQSxFQUNGO0VBRUQsSUFBTUksWUFBWSxHQUF5QnZOLE9BQU8sQ0FDaEQ7SUFBQSxPQUFNVCxNQUFBLENBQUF3RCxNQUFBLENBQUF4RCxNQUFBLENBQUF3RCxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQ0RMLFFBQVEsQ0FBQzZLLFlBQVksQ0FBQSxFQUFBO01BRXhCQyxhQUFhLEVBQUU5SyxRQUFRLENBQUM4SyxhQUFzRDtNQUM5RXhILGNBQWMsRUFBRXRELFFBQVEsQ0FBQ3NELGNBQXdEO01BQ2pGeUgsY0FBYyxFQUFFekcsbUJBQTZEO01BQzdFMEMsYUFBYSxFQUFFaEgsUUFBUSxDQUFDZ0gsYUFBc0Q7TUFDOUVnRSxjQUFjLEVBQUVoTCxRQUFRLENBQUNnTCxjQUF3RDtNQUVqRnBDLGFBQWEsRUFBRUEsYUFBc0Q7TUFDckVDLGVBQWUsRUFBRUEsZUFBMEQ7TUFDM0VDLGNBQWMsRUFBRUEsY0FBd0Q7TUFDeEVDLGNBQWMsRUFBRUEsY0FBd0Q7TUFDeEVDLGVBQWUsRUFBRUEsZUFBMEQ7TUFDM0VHLGlCQUFpQixFQUFFQSxpQkFBOEQ7TUFDakZNLGFBQWEsRUFBRXpKLFFBQVEsQ0FBQ3lKLGFBQXNEO01BQzlFTCxjQUFjLEVBQWRBLGNBQWM7TUFDZE0sZUFBZSxFQUFFQSxlQUEwRDtNQUMzRUUsZ0JBQWdCLEVBQWhCQSxnQkFBZ0I7TUFDaEJqQixXQUFXLEVBQUVtQixlQUFzRDtNQUNuRW1CLE1BQU0sRUFBRVYsb0JBQW9CO01BQzVCMUUsV0FBVyxFQUFYQSxXQUFXO01BQ1hnQixhQUFhLEVBQUU3RyxRQUFRLENBQUM2RyxhQUFhO01BQ3JDcUUsZUFBZSxFQUFFbEwsUUFBUSxDQUFDa0w7SUFBZSxDQUFBLENBQUE7RUFBQSxDQUN6QyxFQUNGLENBQ0VsTCxRQUFRLENBQUM2SyxZQUFZLEVBQ3JCN0ssUUFBUSxDQUFDOEssYUFBYSxFQUN0QjlLLFFBQVEsQ0FBQ3NELGNBQWMsRUFDdkJ0RCxRQUFRLENBQUNnSCxhQUFhLEVBQ3RCaEgsUUFBUSxDQUFDZ0wsY0FBYyxFQUN2QmhMLFFBQVEsQ0FBQ3lKLGFBQWEsRUFDdEJ6SixRQUFRLENBQUM2RyxhQUFhLEVBQ3RCN0csUUFBUSxDQUFDa0wsZUFBZSxFQUN4QjVHLG1CQUFtQixFQUNuQnNFLGFBQWEsRUFDYkMsZUFBZSxFQUNmQyxjQUFjLEVBQ2RDLGNBQWMsRUFDZEMsZUFBZSxFQUNmRyxpQkFBaUIsRUFDakJDLGNBQWMsRUFDZE0sZUFBZSxFQUNmRSxnQkFBZ0IsRUFDaEJFLGVBQWUsRUFDZlMsb0JBQW9CLEVBQ3BCMUUsV0FBVyxDQUNaLENBQ0Y7RUFFRDtFQUNBO0VBQ0E7RUFDQTdGLFFBQVEsQ0FBQ21MLHNCQUFzQixDQUFDTixZQUFZLENBQUM7RUFFN0M7RUFDQTtFQUNBO0VBQ0E7RUFDQSxJQUFNTyxTQUFTLEdBQTZCOU4sT0FBTyxDQUNqRDtJQUFBLE9BQU87TUFDTCxJQUFJNkIsTUFBTUEsQ0FBQSxFQUFBO1FBQ1IsT0FBT2MsS0FBSyxDQUFDSyxRQUFRLENBQUEsQ0FBRSxDQUFDbkIsTUFBTTtNQUNoQyxDQUFDO01BQ0QsSUFBSStCLE1BQU1BLENBQUEsRUFBQTtRQUNSLE9BQU9qQixLQUFLLENBQUNLLFFBQVEsQ0FBQSxDQUFFLENBQUNZLE1BQU07TUFDaEMsQ0FBQztNQUNELElBQUlFLFFBQVFBLENBQUEsRUFBQTtRQUNWLE9BQU9uQixLQUFLLENBQUNLLFFBQVEsQ0FBQSxDQUFFLENBQUNjLFFBQVE7TUFDbEMsQ0FBQztNQUNELElBQUk2QyxPQUFPQSxDQUFBLEVBQUE7UUFDVCxPQUFPaEUsS0FBSyxDQUFDSyxRQUFRLENBQUEsQ0FBRSxDQUFDMkQsT0FBTztNQUNqQyxDQUFDO01BQ0QsSUFBSTFELFVBQVVBLENBQUEsRUFBQTtRQUNaLE9BQU9OLEtBQUssQ0FBQ0ssUUFBUSxDQUFBLENBQUUsQ0FBQ0MsVUFBVTtNQUNwQyxDQUFDO01BQ0R5RSxVQUFVLEVBQUVoRixRQUFRLENBQUNnRixVQUFVO01BQy9CZ0MsYUFBYSxFQUFFaEgsUUFBUSxDQUFDZ0gsYUFBYTtNQUNyQ3lDLGFBQWEsRUFBRXpKLFFBQVEsQ0FBQ3lKLGFBQWE7TUFDckM0QixlQUFlLEVBQUVyTCxRQUFRLENBQUNxTCxlQUFlO01BQ3pDbEosa0JBQWtCLEVBQWxCQSxrQkFBa0I7TUFDbEIwRSxhQUFhLEVBQUU3RyxRQUFRLENBQUM2RyxhQUFhO01BQ3JDcUUsZUFBZSxFQUFFbEwsUUFBUSxDQUFDa0wsZUFBZTtNQUN6Q3ZFLFdBQVcsRUFBRTNHLFFBQVEsQ0FBQzJHLFdBQVc7TUFDakNHLFlBQVksRUFBRTlHLFFBQVEsQ0FBQzhHLFlBQVk7TUFDbkNxQixZQUFZLEVBQVpBLFlBQVk7TUFDWk8sV0FBVyxFQUFYQTtJRDVKRixDQzZKQztFQUFBLENBQUMsRUFDRixDQUNFekksS0FBSyxFQUNMRCxRQUFRLENBQUNnRixVQUFVLEVBQ25CaEYsUUFBUSxDQUFDZ0gsYUFBYSxFQUN0QmhILFFBQVEsQ0FBQ3lKLGFBQWEsRUFDdEJ6SixRQUFRLENBQUNxTCxlQUFlLEVBQ3hCbEosa0JBQWtCLEVBQ2xCbkMsUUFBUSxDQUFDNkcsYUFBYSxFQUN0QjdHLFFBQVEsQ0FBQ2tMLGVBQWUsRUFDeEJsTCxRQUFRLENBQUMyRyxXQUFXLEVBQ3BCM0csUUFBUSxDQUFDOEcsWUFBWSxFQUNyQnFCLFlBQVksRUFDWk8sV0FBVyxDQUNaLENBQ0Y7RUFFRCxPQUFPO0lBQUVtQyxZQUFZLEVBQVpBLFlBQVk7SUFBRU8sU0FBUyxFQUFUQSxTQUFTO0lBQUVuTCxLQUFLLEVBQUxBO0VBQUssQ0FBRTtBQUMzQyxDQUFDO0FBRUQsZUFBZVYsT0FBTyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyB1c2VNZW1vLCB1c2VFZmZlY3QsIHVzZVJlZiwgbWVtbywgRnJhZ21lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB1c2VNZW1vaXplZEZuIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlTWVtb2l6ZWRGbic7XG5pbXBvcnQgeyB1c2VGb3JtQ29yZSB9IGZyb20gJy4vdXNlRm9ybUNvcmUnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlLCBzZXROZXN0ZWRWYWx1ZSB9IGZyb20gJy4uL3BhdGhVdGlscyc7XG5pbXBvcnQgeyBjb2VyY2VGYWlsdXJlUmVhc29uLCBmaWx0ZXJSdWxlc0J5VHJpZ2dlciwgbm9ybWFsaXplVHJpZ2dlcnMsIHJlc29sdmVSdWxlcywgcnVuUnVsZXNBc3luYywgfSBmcm9tICcuLi9ydW5SdWxlcyc7XG5pbXBvcnQgeyB1c2VTdG9yZVNlbGVjdG9yLCBzaGFsbG93RXF1YWxBcnJheXMsIHNhbWVWYWxpZGF0aW9uTm9kZSB9IGZyb20gJy4uL2Zvcm1TdG9yZSc7XG5pbXBvcnQgeyBGb3JtVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi4vdmFsaWRhdGlvbkVycm9yJztcbi8qKlxuICogT25seSBydWxlcyB3aXRoIGEgY3VzdG9tIGB2YWxpZGF0b3JgIGNhbiBiZSBnZW51aW5lbHkgYXN5bmNocm9ub3VzIOKAlFxuICogYnVpbHRpbiBydWxlcyByZXNvbHZlIHdpdGhpbiBhIG1pY3JvdGFzaywgc28gZmxpcHBpbmcgYHZhbGlkYXRpbmdgIGZvclxuICogdGhlbSB3b3VsZCBvbmx5IGNodXJuIHN1YnNjcmliZXJzIHdpdGhvdXQgZXZlciBiZWluZyB2aXNpYmxlLiBEZWNpZGVkIG9uXG4gKiBSRVNPTFZFRCBydWxlczogYSBmdW5jdGlvbi1mb3JtIHJ1bGUgdGhhdCByZXNvbHZlcyB0byBidWlsdGluLW9ubHkgY2hlY2tzXG4gKiBtdXN0IG5vdCBmbGlja2VyIHRoZSBmbGFnLlxuICpcbiAqIFRoZSBhc3luYyBlbmdpbmUgYXdhaXRzIHZhbGlkYXRvcnMgbmVzdGVkIGluc2lkZSBgZmllbGRzYCAvIGBkZWZhdWx0RmllbGRgXG4gKiB0b28sIHNvIHRoZSBkZWNpc2lvbiBtdXN0IGRlc2NlbmQgdGhlIHNhbWUgd2F5IOKAlCBvdGhlcndpc2UgYSBkZWVwLW9ubHlcbiAqIHZhbGlkYXRvciAoZS5nLiBgeyBkZWZhdWx0RmllbGQ6IHsgdmFsaWRhdG9yIH0gfWApIHJ1bnMgcGVuZGluZyB3aXRoIHRoZVxuICogZmxhZyBzdHVjayBmYWxzZSwgYW5kIGBpc0ZpZWxkVmFsaWRhdGluZyhuYW1lKWAgdW5kZXItcmVwb3J0cyBmb3IgdGhlIHdob2xlXG4gKiB3aW5kb3cuIE92ZXItZmxhZ2dpbmcgd2hlbiB0aGUgZGVlcCB2YWxpZGF0b3Igd29uJ3QgYWN0dWFsbHkgZmlyZSAoZW1wdHkgL1xuICogcHJpbWl0aXZlIHZhbHVlKSBpcyBhY2NlcHRhYmxlOiB0aGUgZmxhZyBpcyBkZWNpZGVkIG9uIHJ1bGUgU0hBUEUsIGV4YWN0bHlcbiAqIGFzIHRoZSB0b3AtbGV2ZWwgY2FzZSBhbHJlYWR5IG92ZXItZmxhZ3MgYSB2YWxpZGF0b3Igc2hvcnQtY2lyY3VpdGVkIGJ5IGFuXG4gKiBlYXJsaWVyIGJ1aWx0aW4gZmFpbHVyZTsgdGhlIHJ1biBjbGVhcnMgaXQgb24gc2V0dGxlIGVpdGhlciB3YXkuXG4gKi9cbmNvbnN0IGFzUnVsZUFycmF5ID0gKHJ1bGUpID0+IHJ1bGUgPyAoQXJyYXkuaXNBcnJheShydWxlKSA/IHJ1bGUgOiBbcnVsZV0pIDogW107XG5jb25zdCBydWxlSGFzVmFsaWRhdG9yID0gKHJ1bGUpID0+IHtcbiAgICBpZiAodHlwZW9mIHJ1bGUudmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoYXNSdWxlQXJyYXkocnVsZS5kZWZhdWx0RmllbGQpLnNvbWUocnVsZUhhc1ZhbGlkYXRvcikpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIGlmIChydWxlLmZpZWxkcykge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhydWxlLmZpZWxkcykuc29tZSgoc3ViKSA9PiBhc1J1bGVBcnJheShzdWIpLnNvbWUocnVsZUhhc1ZhbGlkYXRvcikpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuY29uc3QgaGFzUmVzb2x2ZWRWYWxpZGF0b3IgPSAocmVzb2x2ZWQpID0+IHJlc29sdmVkLnNvbWUocnVsZUhhc1ZhbGlkYXRvcik7XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHVzZUZvcm1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZXhwb3J0IGNvbnN0IHVzZUZvcm0gPSAoY29uZmlnID0ge30pID0+IHtcbiAgICBjb25zdCB7IG9uRmluaXNoLCBvbkZpbmlzaEZhaWxlZCwgb25SZXNldCwgdmFsaWRhdGVUcmlnZ2VyID0gJ29uQ2hhbmdlJywgfSA9IGNvbmZpZztcbiAgICBjb25zdCBmb3JtQ29yZSA9IHVzZUZvcm1Db3JlKGNvbmZpZyk7XG4gICAgY29uc3QgeyBzdG9yZSB9ID0gZm9ybUNvcmU7XG4gICAgLy8gRXBvY2ggb2YgdGhlIExBVEVTVCBhc3luYyBydW4gdGhhdCByYWlzZWQgZWFjaCBmaWVsZCdzIGB2YWxpZGF0aW5nYCBmbGFnLlxuICAgIC8vIEEgc2V0dGxpbmcgcnVuIGNsZWFycyB0aGUgZmxhZyBvbmx5IHdoaWxlIGl0IGlzIHN0aWxsIHRoZSBsYXRlc3QgcmFpc2VyIOKAlFxuICAgIC8vIGFuIG9sZGVyIHJ1biBtdXN0IG5vdCBibGFuayB0aGUgc3Bpbm5lciBvZiBhIG5ld2VyIG9uZSwgYW5kIGEgcnVuXG4gICAgLy8gc3VwZXJzZWRlZCBieSBhIFNZTkMgY29tbWl0ICh3aGljaCBuZXZlciB0b3VjaGVzIGZsYWdzKSBtdXN0IHN0aWxsIGNsZWFuXG4gICAgLy8gdXAgYWZ0ZXIgaXRzZWxmLlxuICAgIGNvbnN0IGxhc3RBc3luY0Vwb2NoUmVmID0gdXNlUmVmKHt9KTtcbiAgICAvLyBNYXJrIGZpZWxkcyBhcyB2YWxpZGF0aW5nIGluIE9ORSBjb21taXQuIHZhbGlkYXRpbmcgLyB0b3VjaGVkIGxpdmUgaW4gdGhlXG4gICAgLy8gc3RvcmUgYWxvbmdzaWRlIHZhbHVlcyDigJQgZmxpcHBpbmcgdGhlbSAoZS5nLiBhc3luYyB2YWxpZGF0aW9uIGFyb3VuZCBhXG4gICAgLy8gYmx1cikgbXVzdCBub3QgcmUtcmVuZGVyIHRoZSBmb3JtIHJvb3QsIG9ubHkgdGhlIGZpZWxkcyB0aGF0IHN1YnNjcmliZWQuXG4gICAgY29uc3QgbWFya1ZhbGlkYXRpbmcgPSB1c2VNZW1vaXplZEZuKChuYW1lcykgPT4ge1xuICAgICAgICBpZiAobmFtZXMubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBuZXh0ID0gT2JqZWN0LmFzc2lnbih7fSwgc3RvcmUuZ2V0U3RhdGUoKS52YWxpZGF0aW5nKTtcbiAgICAgICAgbmFtZXMuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICAgICAgbmV4dFtuYW1lXSA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHZhbGlkYXRpbmc6IG5leHQgfSk7XG4gICAgfSk7XG4gICAgLy8gRm9sZCBwZXItZmllbGQgcnVsZSBvdXRjb21lcyBpbnRvIEFUIE1PU1Qgb25lIHN0b3JlIGNvbW1pdDogZXJyb3JzIGFuZFxuICAgIC8vIHdhcm5pbmdzIGFyZSBtZXJnZWQgb3ZlciB0aGUgY3VycmVudCBtYXBzIGFuZCB0aGUgYGNsZWFyVmFsaWRhdGluZ2AgZmxhZ3NcbiAgICAvLyBhcmUgcmVtb3ZlZCBpbiB0aGUgU0FNRSBwYXRjaC4gQSBuby1vcCBvdXRjb21lIGNvbW1pdHMgbm90aGluZyBhdCBhbGwg4oCUXG4gICAgLy8gcGVyLWZpZWxkIGNvbW1pdHMgaGVyZSBwcmV2aW91c2x5IG1hZGUgc3VibWl0LXRpbWUgdmFsaWRhdGlvbiBzd2VlcCBldmVyeVxuICAgIC8vIHN1YnNjcmliZXIgTyhmaWVsZHMpIHRpbWVzLlxuICAgIGNvbnN0IGNvbW1pdFJ1bGVPdXRjb21lcyA9IHVzZU1lbW9pemVkRm4oKG91dGNvbWVzLCBjbGVhclZhbGlkYXRpbmcpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICAgICAgICBsZXQgZXJyb3JzQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICBsZXQgd2FybmluZ3NDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmVycm9ycyk7XG4gICAgICAgIGNvbnN0IG5ld1dhcm5pbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUud2FybmluZ3MpO1xuICAgICAgICBmb3IgKGNvbnN0IHsgbmFtZSwgZXJyb3IsIHdhcm5pbmcgfSBvZiBvdXRjb21lcykge1xuICAgICAgICAgICAgaWYgKGVycm9yID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5hbWUgaW4gbmV3RXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdFcnJvcnNbbmFtZV07XG4gICAgICAgICAgICAgICAgICAgIGVycm9yc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFzYW1lVmFsaWRhdGlvbk5vZGUobmV3RXJyb3JzW25hbWVdLCBlcnJvcikpIHtcbiAgICAgICAgICAgICAgICBuZXdFcnJvcnNbbmFtZV0gPSBlcnJvcjtcbiAgICAgICAgICAgICAgICBlcnJvcnNDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh3YXJuaW5nID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5hbWUgaW4gbmV3V2FybmluZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG5ld1dhcm5pbmdzW25hbWVdO1xuICAgICAgICAgICAgICAgICAgICB3YXJuaW5nc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFzYW1lVmFsaWRhdGlvbk5vZGUobmV3V2FybmluZ3NbbmFtZV0sIHdhcm5pbmcpKSB7XG4gICAgICAgICAgICAgICAgbmV3V2FybmluZ3NbbmFtZV0gPSB3YXJuaW5nO1xuICAgICAgICAgICAgICAgIHdhcm5pbmdzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmxhZ3NUb0NsZWFyID0gY2xlYXJWYWxpZGF0aW5nLmZpbHRlcigobmFtZSkgPT4gbmFtZSBpbiBzdGF0ZS52YWxpZGF0aW5nKTtcbiAgICAgICAgY29uc3QgcGF0Y2ggPSB7fTtcbiAgICAgICAgaWYgKGVycm9yc0NoYW5nZWQpXG4gICAgICAgICAgICBwYXRjaC5lcnJvcnMgPSBuZXdFcnJvcnM7XG4gICAgICAgIGlmICh3YXJuaW5nc0NoYW5nZWQpXG4gICAgICAgICAgICBwYXRjaC53YXJuaW5ncyA9IG5ld1dhcm5pbmdzO1xuICAgICAgICBpZiAoZmxhZ3NUb0NsZWFyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbGlkYXRpbmcgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS52YWxpZGF0aW5nKTtcbiAgICAgICAgICAgIGZsYWdzVG9DbGVhci5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG5ld1ZhbGlkYXRpbmdbbmFtZV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHBhdGNoLnZhbGlkYXRpbmcgPSBuZXdWYWxpZGF0aW5nO1xuICAgICAgICB9XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhwYXRjaCkubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHN0b3JlLnNldFN0YXRlKHBhdGNoKTtcbiAgICB9KTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBBc3luYyBmaWVsZCB2YWxpZGF0aW9uIOKAkyBlYWNoIHJ1bGUgaXMgcHJvY2Vzc2VkIGV4YWN0bHkgb25jZVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IHZhbGlkYXRlRmllbGRBc3luYyA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHZhbHVlLCBydWxlcykgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCFydWxlcyB8fCBydWxlcy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBlcnJvcjogbnVsbCB9O1xuICAgICAgICAvLyBDYXB0dXJlIHRoaXMgcnVuJ3MgZXBvY2g6IGlmIGEgTkVXRVIgcnVuIChzeW5jIG9yIGFzeW5jKSBzdGFydHMgZm9yXG4gICAgICAgIC8vIHRoZSBmaWVsZCBiZWZvcmUgdGhpcyBvbmUgc2V0dGxlcywgdGhlIG91dGNvbWUgYmVsb3cgaXMgc3RhbGUgYW5kIGlzXG4gICAgICAgIC8vIGRpc2NhcmRlZCBpbnN0ZWFkIG9mIG92ZXJ3cml0aW5nIHRoZSBuZXdlciByZXN1bHQuXG4gICAgICAgIGNvbnN0IGVwb2NoID0gZm9ybUNvcmUuYmVnaW5WYWxpZGF0aW9uUnVuKG5hbWUpO1xuICAgICAgICAvLyBSZXNvbHZlIG9uY2U6IHRoZSBmbGFnIGRlY2lzaW9uIG5lZWRzIHJlc29sdmVkIHJ1bGVzLCBhbmQgcGFzc2luZyB0aGVcbiAgICAgICAgLy8gcmVzb2x2ZWQgYXJyYXkgb253YXJkIHNwYXJlcyB0aGUgZW5naW5lIGEgcmUtcmVzb2x1dGlvbi5cbiAgICAgICAgY29uc3QgdmFsdWVzID0gZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlUnVsZXMocnVsZXMsIHZhbHVlcywgZm9ybUNvcmUuZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSgpKTtcbiAgICAgICAgY29uc3QgZmxhZ2dlZCA9IGhhc1Jlc29sdmVkVmFsaWRhdG9yKHJlc29sdmVkKSA/IFtuYW1lXSA6IFtdO1xuICAgICAgICBtYXJrVmFsaWRhdGluZyhmbGFnZ2VkKTtcbiAgICAgICAgZmxhZ2dlZC5mb3JFYWNoKChmbGFnZ2VkTmFtZSkgPT4ge1xuICAgICAgICAgICAgbGFzdEFzeW5jRXBvY2hSZWYuY3VycmVudFtmbGFnZ2VkTmFtZV0gPSBlcG9jaDtcbiAgICAgICAgfSk7XG4gICAgICAgIGxldCBvdXRjb21lID0geyBuYW1lLCBlcnJvcjogbnVsbCwgd2FybmluZzogbnVsbCB9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgeyBlcnJvciwgd2FybmluZyB9ID0geWllbGQgcnVuUnVsZXNBc3luYyhuYW1lLCB2YWx1ZSwgdmFsdWVzLCByZXNvbHZlZCwgZm9ybUNvcmUuZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSgpKTtcbiAgICAgICAgICAgIG91dGNvbWUgPSB7IG5hbWUsIGVycm9yLCB3YXJuaW5nIH07XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgLy8gVGhlIGVuZ2luZSBjb250YWlucyBydWxlLWxldmVsIHRocm93cyBpdHNlbGY7IHRoaXMgaXMgYSBsYXN0LXJlc29ydFxuICAgICAgICAgICAgLy8gbmV0IHNvIGFuIHVuZXhwZWN0ZWQgZmFpbHVyZSBzdXJmYWNlcyBhcyBhIGZpZWxkIGVycm9yIGluc3RlYWQgb2ZcbiAgICAgICAgICAgIC8vIGxlYXZpbmcgdGhlIGZpZWxkIG1hcmtlZCB2YWxpZC5cbiAgICAgICAgICAgIG91dGNvbWUgPSB7IG5hbWUsIGVycm9yOiAoX2EgPSBjb2VyY2VGYWlsdXJlUmVhc29uKGVycikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdWYWxpZGF0aW9uIGZhaWxlZCcsIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIGNvbnN0IGlzQ3VycmVudCA9IGZvcm1Db3JlLmlzVmFsaWRhdGlvblJ1bkN1cnJlbnQobmFtZSwgZXBvY2gpO1xuICAgICAgICAgICAgY29uc3QgY2xlYXJGbGFncyA9IGZsYWdnZWQuZmlsdGVyKChmbGFnZ2VkTmFtZSkgPT4gbGFzdEFzeW5jRXBvY2hSZWYuY3VycmVudFtmbGFnZ2VkTmFtZV0gPT09IGVwb2NoKTtcbiAgICAgICAgICAgIGNvbW1pdFJ1bGVPdXRjb21lcyhpc0N1cnJlbnQgPyBbb3V0Y29tZV0gOiBbXSwgY2xlYXJGbGFncyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlIENBTExFUiBnZXRzIHRoaXMgcnVuJ3Mgb3duIHJlc3VsdCBlaXRoZXIgd2F5IChpdHMgcHJvbWlzZSBpc1xuICAgICAgICAvLyBhYm91dCB0aGUgdmFsdWUgaXQgd2FzIGFza2VkIHRvIHZhbGlkYXRlKTsgb25seSB0aGUgU1RPUkUgY29tbWl0IGlzXG4gICAgICAgIC8vIHN0YWxlbmVzcy1ndWFyZGVkLlxuICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiBvdXRjb21lLmVycm9yID09PSBudWxsLCBlcnJvcjogb3V0Y29tZS5lcnJvciB9O1xuICAgIH0pKTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBBc3luYyBmaWVsZCBibHVyIGhhbmRsZXJcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBoYW5kbGVGaWVsZEJsdXIgPSB1c2VFdmVudENhbGxiYWNrKChuYW1lLCBmaWVsZFRyaWdnZXIpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCB0b3VjaGVkID0gc3RvcmUuZ2V0U3RhdGUoKS50b3VjaGVkO1xuICAgICAgICBpZiAoIXRvdWNoZWRbbmFtZV0pIHtcbiAgICAgICAgICAgIHN0b3JlLnNldFN0YXRlKHsgdG91Y2hlZDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB0b3VjaGVkKSwgeyBbbmFtZV06IHRydWUgfSkgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcnVsZXMgPSBmb3JtQ29yZS5nZXRGaWVsZFJ1bGVzKG5hbWUpO1xuICAgICAgICBpZiAoIXJ1bGVzKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpO1xuICAgICAgICBjb25zdCBhcHBsaWNhYmxlID0gZmlsdGVyUnVsZXNCeVRyaWdnZXIocmVzb2x2ZVJ1bGVzKHJ1bGVzLCB2YWx1ZXMsIGZvcm1Db3JlLmdldFJ1bGVDb250ZXh0SW5zdGFuY2UoKSksICdvbkJsdXInLCBub3JtYWxpemVUcmlnZ2VycyhmaWVsZFRyaWdnZXIsIHZhbGlkYXRlVHJpZ2dlciksIG5hbWUpO1xuICAgICAgICBpZiAoYXBwbGljYWJsZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB5aWVsZCB2YWxpZGF0ZUZpZWxkQXN5bmMobmFtZSwgcmVzb2x2ZVZhbHVlKHZhbHVlcywgbmFtZSksIGFwcGxpY2FibGUpO1xuICAgICAgICB9XG4gICAgfSkpO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFZhbGlkYXRlIGFsbCBmaWVsZHMgYXN5bmNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCB2YWxpZGF0ZUZpZWxkc0FzeW5jID0gdXNlTWVtb2l6ZWRGbigobmFtZUxpc3QpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBmaWVsZHNUb1ZhbGlkYXRlID0gbmFtZUxpc3QgfHwgT2JqZWN0LmtleXMoZm9ybUNvcmUuZmllbGRSdWxlcyk7XG4gICAgICAgIGNvbnN0IGZpZWxkRXJyb3JzID0ge307XG4gICAgICAgIC8vIFJlc29sdmUgZXZlcnkgZmllbGQgb25jZSB1cCBmcm9udDogdGhlIGZsYWcgZGVjaXNpb24gbmVlZHMgcmVzb2x2ZWRcbiAgICAgICAgLy8gcnVsZXMsIGFuZCB0aGUgcmVzb2x2ZWQgYXJyYXlzIGFyZSByZXVzZWQgZm9yIHRoZSBhY3R1YWwgcnVucy4gRWFjaFxuICAgICAgICAvLyBmaWVsZCBhbHNvIGNhcHR1cmVzIGl0cyB2YWxpZGF0aW9uIGVwb2NoIOKAlCBhIGZpZWxkIHdob3NlIHZhbHVlXG4gICAgICAgIC8vIGNoYW5nZXMgbWlkLXN1Ym1pdCBnZXRzIGEgbmV3ZXIgcnVuLCBhbmQgdGhpcyBydW4ncyBzdGFsZSBvdXRjb21lXG4gICAgICAgIC8vIG11c3Qgbm90IG92ZXJ3cml0ZSBpdCBpbiB0aGUgc3RvcmUuXG4gICAgICAgIGNvbnN0IHJlc29sdmVkQnlGaWVsZCA9IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3QgZXBvY2hCeUZpZWxkID0gbmV3IE1hcCgpO1xuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgZmllbGRzVG9WYWxpZGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgcnVsZXMgPSBmb3JtQ29yZS5maWVsZFJ1bGVzW25hbWVdO1xuICAgICAgICAgICAgaWYgKHJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgZXBvY2hCeUZpZWxkLnNldChuYW1lLCBmb3JtQ29yZS5iZWdpblZhbGlkYXRpb25SdW4obmFtZSkpO1xuICAgICAgICAgICAgICAgIHJlc29sdmVkQnlGaWVsZC5zZXQobmFtZSwgcmVzb2x2ZVJ1bGVzKHJ1bGVzLCBmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpLCBmb3JtQ29yZS5nZXRSdWxlQ29udGV4dEluc3RhbmNlKCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBPbmUgY29tbWl0IHRvIHJhaXNlIHRoZSB2YWxpZGF0aW5nIGZsYWdzICh2YWxpZGF0b3ItYmVhcmluZyBmaWVsZHNcbiAgICAgICAgLy8gb25seSksIG9uZSBjb21taXQgdG8gbGFuZCBldmVyeSBlcnJvci93YXJuaW5nIGFuZCBjbGVhciB0aGUgZmxhZ3MuXG4gICAgICAgIGNvbnN0IGZsYWdnZWQgPSBmaWVsZHNUb1ZhbGlkYXRlLmZpbHRlcigobmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlZEJ5RmllbGQuZ2V0KG5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVkID8gaGFzUmVzb2x2ZWRWYWxpZGF0b3IocmVzb2x2ZWQpIDogZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICBtYXJrVmFsaWRhdGluZyhmbGFnZ2VkKTtcbiAgICAgICAgZmxhZ2dlZC5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgICAgICBsYXN0QXN5bmNFcG9jaFJlZi5jdXJyZW50W25hbWVdID0gZXBvY2hCeUZpZWxkLmdldChuYW1lKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IG91dGNvbWVzID0gW107XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB5aWVsZCBQcm9taXNlLmFsbChmaWVsZHNUb1ZhbGlkYXRlLm1hcCgobmFtZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZWRCeUZpZWxkLmdldChuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc29sdmVkKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgbGV0IGVycm9yID0gbnVsbDtcbiAgICAgICAgICAgICAgICBsZXQgd2FybmluZyA9IG51bGw7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgKHsgZXJyb3IsIHdhcm5pbmcgfSA9IHlpZWxkIHJ1blJ1bGVzQXN5bmMobmFtZSwgcmVzb2x2ZVZhbHVlKGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCksIG5hbWUpLCBmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpLCByZXNvbHZlZCwgZm9ybUNvcmUuZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSgpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTGFzdC1yZXNvcnQgbmV0IChzZWUgdmFsaWRhdGVGaWVsZEFzeW5jKSDigJQga2VlcCB0aGUgbm9ybWFsXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0cnVjdGVkLWVycm9yIGZsb3cgc28gb25GaW5pc2hGYWlsZWQgZ2V0cyBhIHJlYWwgcGF5bG9hZC5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSAoX2EgPSBjb2VyY2VGYWlsdXJlUmVhc29uKGVycikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdWYWxpZGF0aW9uIGZhaWxlZCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFRoZSBzdG9yZSBjb21taXQgaXMgc3RhbGVuZXNzLWd1YXJkZWQ7IHRoZSBTVUJNSVQgZGVjaXNpb25cbiAgICAgICAgICAgICAgICAvLyAoZmllbGRFcnJvcnMgLyB0aGUgdGhyb3duIEZvcm1WYWxpZGF0aW9uRXJyb3IpIHN0aWxsIHJlZmxlY3RzXG4gICAgICAgICAgICAgICAgLy8gdGhpcyBydW4ncyBvd24gcmVzdWx0cyBmb3IgdGhlIHZhbHVlcyBpdCB2YWxpZGF0ZWQuXG4gICAgICAgICAgICAgICAgY29uc3QgZXBvY2ggPSBlcG9jaEJ5RmllbGQuZ2V0KG5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChlcG9jaCAhPT0gdW5kZWZpbmVkICYmIGZvcm1Db3JlLmlzVmFsaWRhdGlvblJ1bkN1cnJlbnQobmFtZSwgZXBvY2gpKSB7XG4gICAgICAgICAgICAgICAgICAgIG91dGNvbWVzLnB1c2goeyBuYW1lLCBlcnJvciwgd2FybmluZyB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkRXJyb3JzW25hbWVdID0gZXJyb3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIGNvbnN0IGNsZWFyRmxhZ3MgPSBmbGFnZ2VkLmZpbHRlcigobmFtZSkgPT4gbGFzdEFzeW5jRXBvY2hSZWYuY3VycmVudFtuYW1lXSA9PT0gZXBvY2hCeUZpZWxkLmdldChuYW1lKSk7XG4gICAgICAgICAgICBjb21taXRSdWxlT3V0Y29tZXMob3V0Y29tZXMsIGNsZWFyRmxhZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhmaWVsZEVycm9ycykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1WYWxpZGF0aW9uRXJyb3IoZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKSwgZmllbGRFcnJvcnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuYW1lTGlzdCkge1xuICAgICAgICAgICAgcmV0dXJuIG5hbWVMaXN0LnJlZHVjZSgoYWNjLCBuYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgYWNjW25hbWVdID0gcmVzb2x2ZVZhbHVlKGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCksIG5hbWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCB7fSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCk7XG4gICAgfSkpO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIGRlZmluZUZpZWxkIOKAkyB1c2VkIGJ5IHN0YW5kYWxvbmUgKG5vbi1Qcm9Gb3JtKSBjb25zdW1lcnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBkZWZpbmVGaWVsZCA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIGZpZWxkT3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgcnVsZXMgPSBbXSB9ID0gZmllbGRPcHRpb25zO1xuICAgICAgICBjb25zdCBGaWVsZENvbXBvbmVudCA9IG1lbW8oKF9hKSA9PiB7XG4gICAgICAgICAgICB2YXIgeyBjaGlsZHJlbiwgcmVuZGVyIH0gPSBfYSwgcHJvcHMgPSBfX3Jlc3QoX2EsIFtcImNoaWxkcmVuXCIsIFwicmVuZGVyXCJdKTtcbiAgICAgICAgICAgIC8vIFBlci1maWVsZCBzdG9yZSBzdWJzY3JpcHRpb246IHRoaXMgZmllbGQgcmUtcmVuZGVycyBvbmx5IHdoZW4gaXRzXG4gICAgICAgICAgICAvLyBvd24gdmFsdWUvZXJyb3IvdG91Y2hlZC92YWxpZGF0aW5nIHNsaWNlIGNoYW5nZXMuIERvdC1wYXRoc1xuICAgICAgICAgICAgLy8gcmVzb2x2ZSBpbnRvIHRoZSBuZXN0ZWQgdmFsdWVzIGxpa2UgZXZlcnl3aGVyZSBlbHNlLlxuICAgICAgICAgICAgY29uc3QgW2ZpZWxkVmFsdWUsIGZpZWxkRXJyb3IsIGZpZWxkVG91Y2hlZCwgZmllbGRWYWxpZGF0aW5nXSA9IHVzZVN0b3JlU2VsZWN0b3Ioc3RvcmUsIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAoX2EgPSByZXNvbHZlVmFsdWUoc3RhdGUudmFsdWVzLCBuYW1lKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycsXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmVycm9yc1tuYW1lXSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUudG91Y2hlZFtuYW1lXSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUudmFsaWRhdGluZ1tuYW1lXSxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSwgc2hhbGxvd0VxdWFsQXJyYXlzKTtcbiAgICAgICAgICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gTW91bnQtY291bnRlZDogcmVsZWFzZUZpZWxkIHJlbW92ZXMgdGhlIHJ1bGVzIG9ubHkgd2hlbiB0aGVcbiAgICAgICAgICAgICAgICAvLyBMQVNUIHNhbWUtbmFtZSBpbnN0YW5jZSB1bm1vdW50cyDigJQgYW4gaW5zdGFuY2UgdGhhdCBwaWdneWJhY2tlZFxuICAgICAgICAgICAgICAgIC8vIG9uIGFuIGV4aXN0aW5nIHJlZ2lzdHJhdGlvbiAoZS5nLiBhIFByb0Zvcm0uSXRlbSdzKSBjYW4gbmV2ZXJcbiAgICAgICAgICAgICAgICAvLyB3aXBlIGl0IG9uIGl0cyBvd24gdW5tb3VudC5cbiAgICAgICAgICAgICAgICBmb3JtQ29yZS5yZXRhaW5GaWVsZChuYW1lKTtcbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ1J1bGVzID0gZm9ybUNvcmUuZ2V0RmllbGRSdWxlcyhuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoIWV4aXN0aW5nUnVsZXMgJiYgcnVsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBmb3JtQ29yZS5yZWdpc3RlckZpZWxkKG5hbWUsIHJ1bGVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvcmUucmVsZWFzZUZpZWxkKG5hbWUpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LCBbXSk7IC8vIE9ubHkgcmVnaXN0ZXIgb24gbW91bnRcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZUZpZWxkQ2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZFZhbHVlKG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAvLyBUb3VjaGVkIGlzIHNldCBieSB0aGUgdXNlciBjaGFuZ2UgdHJpZ2dlciAobWF0Y2hpbmcgdGhlXG4gICAgICAgICAgICAgICAgLy8gUHJvRm9ybS5JdGVtIHBhdGgpIOKAlCBwcm9ncmFtbWF0aWMgc2V0RmllbGRzVmFsdWUgZG9lcyBub3QuXG4gICAgICAgICAgICAgICAgY29uc3QgdG91Y2hlZCA9IHN0b3JlLmdldFN0YXRlKCkudG91Y2hlZDtcbiAgICAgICAgICAgICAgICBpZiAoIXRvdWNoZWRbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmUuc2V0U3RhdGUoeyB0b3VjaGVkOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHRvdWNoZWQpLCB7IFtuYW1lXTogdHJ1ZSB9KSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgYXBwbGljYWJsZSA9IGZpbHRlclJ1bGVzQnlUcmlnZ2VyKHJlc29sdmVSdWxlcyhydWxlcywgZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKSwgZm9ybUNvcmUuZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSgpKSwgJ29uQ2hhbmdlJywgbm9ybWFsaXplVHJpZ2dlcnMoZmllbGRPcHRpb25zLnZhbGlkYXRlVHJpZ2dlciwgdmFsaWRhdGVUcmlnZ2VyKSwgbmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGFwcGxpY2FibGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBBc3luYyBwYXRoIChtYXRjaGluZyBQcm9Gb3JtLkl0ZW0pIHNvIGEgUHJvbWlzZS1yZXR1cm5pbmdcbiAgICAgICAgICAgICAgICAgICAgLy8gdmFsaWRhdG9yIGlzIGhvbm9yZWQgb24gY2hhbmdlIGluc3RlYWQgb2YgYmVpbmcgc2lsZW50bHlcbiAgICAgICAgICAgICAgICAgICAgLy8gc2tpcHBlZDsgZmlyZS1hbmQtZm9yZ2V0IOKAlCB0aGUgcmVzdWx0IGxhbmRzIG9uIHRoZSBzdG9yZS5cbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVGaWVsZEFzeW5jKG5hbWUsIHZhbHVlLCBhcHBsaWNhYmxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZUJsdXIgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVGaWVsZEJsdXIobmFtZSwgZmllbGRPcHRpb25zLnZhbGlkYXRlVHJpZ2dlcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkUHJvcHMgPSBPYmplY3QuYXNzaWduKHsgbmFtZSwgdmFsdWU6IGZpZWxkVmFsdWUsIGVycm9yOiBmaWVsZEVycm9yLCB0b3VjaGVkOiBmaWVsZFRvdWNoZWQsIHZhbGlkYXRpbmc6IGZpZWxkVmFsaWRhdGluZywgb25DaGFuZ2U6IGhhbmRsZUZpZWxkQ2hhbmdlLCBvbkJsdXI6IGhhbmRsZUJsdXIgfSwgcHJvcHMpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlTWVyZ2VDaGFuZ2UgPSAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGUgJiYgdHlwZW9mIGUgPT09ICdvYmplY3QnICYmICd0YXJnZXQnIGluIGVcbiAgICAgICAgICAgICAgICAgICAgPyBlLnRhcmdldC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICA6IGU7XG4gICAgICAgICAgICAgICAgaGFuZGxlRmllbGRDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikgJiZcbiAgICAgICAgICAgICAgICAgICAgKChfYSA9IGNoaWxkcmVuLnByb3BzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub25DaGFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnByb3BzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlTWVyZ2VCbHVyID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBoYW5kbGVCbHVyKCk7XG4gICAgICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSAmJlxuICAgICAgICAgICAgICAgICAgICAoKF9hID0gY2hpbGRyZW4ucHJvcHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vbkJsdXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnByb3BzLm9uQmx1cigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAocmVuZGVyICYmIHR5cGVvZiByZW5kZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyKGZpZWxkUHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbihmaWVsZFByb3BzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEVsZW1lbnQgY2hpbGRyZW4gcmVjZWl2ZSBvbmx5IERPTS1zYWZlIHByb3BzIOKAlCBlcnJvci90b3VjaGVkL1xuICAgICAgICAgICAgLy8gdmFsaWRhdGluZyBhcmUgZmllbGQgTUVUQSwgbm90IGNvbnRyb2wgcHJvcHM7IHNwcmVhZGluZyB0aGVtIG9udG9cbiAgICAgICAgICAgIC8vIGEgaG9zdCBlbGVtZW50IHdvdWxkIGxlYWsgYW55IGF0dHJpYnV0ZXMuIFJlbmRlci1wcm9wIGFuZFxuICAgICAgICAgICAgLy8gZnVuY3Rpb24gY2hpbGRyZW4ga2VlcCB0aGUgZnVsbCBmaWVsZFByb3BzLlxuICAgICAgICAgICAgY29uc3QgZG9tU2FmZVByb3BzID0gT2JqZWN0LmFzc2lnbih7IG5hbWUsIHZhbHVlOiBmaWVsZFZhbHVlLCBvbkNoYW5nZTogaGFuZGxlTWVyZ2VDaGFuZ2UsIG9uQmx1cjogaGFuZGxlTWVyZ2VCbHVyIH0sIHByb3BzKTtcbiAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCBkb21TYWZlUHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRnJhZ21lbnQsIG51bGwsIC4uLmNoaWxkcmVuLm1hcCgoY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGQsIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZG9tU2FmZVByb3BzKSwgeyBrZXk6IGNoaWxkLmtleSB8fCBpbmRleCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KTtcbiAgICAgICAgRmllbGRDb21wb25lbnQuZGlzcGxheU5hbWUgPSBgRmllbGQoJHtuYW1lfSlgO1xuICAgICAgICByZXR1cm4gRmllbGRDb21wb25lbnQ7XG4gICAgfSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gaGFuZGxlU3VibWl0IC8gaGFuZGxlUmVzZXQg4oCTIGZvciA8Zm9ybT4gZXZlbnQgaGFuZGxlcnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBoYW5kbGVTdWJtaXQgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0ZWRWYWx1ZXMgPSB5aWVsZCB2YWxpZGF0ZUZpZWxkc0FzeW5jKCk7XG4gICAgICAgICAgICBvbkZpbmlzaCA9PT0gbnVsbCB8fCBvbkZpbmlzaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2godmFsaWRhdGVkVmFsdWVzKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBPbmx5IGEgVkFMSURBVElPTiBmYWlsdXJlIHJlYWNoZXMgb25GaW5pc2hGYWlsZWQg4oCUIGFuIGV4Y2VwdGlvbiBvdXRcbiAgICAgICAgICAgIC8vIG9mIHRoZSBjb25zdW1lcidzIG93biBvbkZpbmlzaCBpcyBub3QgYSB2YWxpZGF0aW9uIHJlc3VsdCBhbmQgaXNcbiAgICAgICAgICAgIC8vIHN1cmZhY2VkIGluc3RlYWQgb2YgYmVpbmcgbWlzcmVwb3J0ZWQuXG4gICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRm9ybVZhbGlkYXRpb25FcnJvcikge1xuICAgICAgICAgICAgICAgIG9uRmluaXNoRmFpbGVkID09PSBudWxsIHx8IG9uRmluaXNoRmFpbGVkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaEZhaWxlZCh7IHZhbHVlczogZXJyLnZhbHVlcywgZXJyb3JzOiBlcnIuZXJyb3JzIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignW1Byb0Zvcm1dIG9uRmluaXNoIHRocmV3IGR1cmluZyBzdWJtaXQ6JywgZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pKTtcbiAgICBjb25zdCBoYW5kbGVSZXNldCA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGZvcm1Db3JlLnJlc2V0RmllbGRzKCk7XG4gICAgICAgIG9uUmVzZXQgPT09IG51bGwgfHwgb25SZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SZXNldCgpO1xuICAgIH0pO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEZvcm1JbnN0YW5jZSDigJMgZW5oYW5jZWQgQVBJIGZvciBjb25zdW1lcnMuXG4gICAgLy9cbiAgICAvLyBFdmVyeSBtZXRob2QgaXMgd3JhcHBlZCBpbiB1c2VNZW1vaXplZEZuIChzdGFibGUgaWRlbnRpdHksIGFsd2F5cyByZWFkcyB0aGVcbiAgICAvLyBsYXRlc3Qgc3RvcmUgc3RhdGUpIHNvIHRoZSBpbnN0YW5jZSBvYmplY3QgaXRzZWxmIGlzIElERU5USVRZLVNUQUJMRSBmb3JcbiAgICAvLyB0aGUgbGlmZXRpbWUgb2YgdGhlIGZvcm0g4oCUIHRoaXMgaXMgd2hhdCBsZXRzIFByb0Zvcm0gcHVibGlzaCBpdCB0aHJvdWdoIHRoZVxuICAgIC8vIHN0YWJsZSBjb250ZXh0IHdpdGhvdXQgcmUtcmVuZGVyaW5nIHN1YnNjcmliZXJzIG9uIGVhY2gga2V5c3Ryb2tlLlxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGdldEZpZWxkRXJyb3IgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiBzdG9yZS5nZXRTdGF0ZSgpLmVycm9yc1tuYW1lXSk7XG4gICAgY29uc3QgZ2V0RmllbGRXYXJuaW5nID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4gc3RvcmUuZ2V0U3RhdGUoKS53YXJuaW5nc1tuYW1lXSk7XG4gICAgY29uc3QgZ2V0RmllbGRzRXJyb3IgPSB1c2VNZW1vaXplZEZuKChuYW1lTGlzdCkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvcnMgPSBzdG9yZS5nZXRTdGF0ZSgpLmVycm9ycztcbiAgICAgICAgaWYgKCFuYW1lTGlzdClcbiAgICAgICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgICBuYW1lTGlzdC5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3JzW25hbWVdKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W25hbWVdID0gZXJyb3JzW25hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcbiAgICBjb25zdCBpc0ZpZWxkVG91Y2hlZCA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHN0b3JlLmdldFN0YXRlKCkudG91Y2hlZFtuYW1lXSB8fCBmYWxzZSk7XG4gICAgY29uc3QgaXNGaWVsZHNUb3VjaGVkID0gdXNlTWVtb2l6ZWRGbigobmFtZUxpc3QsIGFsbEZpZWxkc1RvdWNoZWQgPSBmYWxzZSkgPT4ge1xuICAgICAgICBjb25zdCB0b3VjaGVkID0gc3RvcmUuZ2V0U3RhdGUoKS50b3VjaGVkO1xuICAgICAgICBpZiAoIW5hbWVMaXN0KSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModG91Y2hlZCkuc29tZSgoa2V5KSA9PiB0b3VjaGVkW2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxGaWVsZHNUb3VjaGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gbmFtZUxpc3QuZXZlcnkoKG5hbWUpID0+IHRvdWNoZWRbbmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuYW1lTGlzdC5zb21lKChuYW1lKSA9PiB0b3VjaGVkW25hbWVdKTtcbiAgICB9KTtcbiAgICBjb25zdCBpc0ZpZWxkVmFsaWRhdGluZyA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHN0b3JlLmdldFN0YXRlKCkudmFsaWRhdGluZ1tuYW1lXSB8fCBmYWxzZSk7XG4gICAgY29uc3Qgc2V0RmllbGRzRXJyb3IgPSB1c2VNZW1vaXplZEZuKChmaWVsZHNFcnJvcikgPT4ge1xuICAgICAgICBPYmplY3QuZW50cmllcyhmaWVsZHNFcnJvcikuZm9yRWFjaCgoW25hbWUsIGVycm9yXSkgPT4ge1xuICAgICAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRFcnJvcihuYW1lLCBlcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkVG91Y2hlZCA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIGlzVG91Y2hlZCA9IHRydWUpID0+IHtcbiAgICAgICAgc3RvcmUuc2V0U3RhdGUoeyB0b3VjaGVkOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHN0b3JlLmdldFN0YXRlKCkudG91Y2hlZCksIHsgW25hbWVdOiBpc1RvdWNoZWQgfSkgfSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmllbGRzVG91Y2hlZCA9IHVzZU1lbW9pemVkRm4oKGZpZWxkc1RvdWNoKSA9PiB7XG4gICAgICAgIHN0b3JlLnNldFN0YXRlKHsgdG91Y2hlZDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWQpLCBmaWVsZHNUb3VjaCkgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgcmVzZXRGb3JtRmllbGRzID0gdXNlTWVtb2l6ZWRGbigoZmllbGRzKSA9PiB7XG4gICAgICAgIGlmICghZmllbGRzKSB7XG4gICAgICAgICAgICBmb3JtQ29yZS5yZXNldEZpZWxkcygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIE1vdW50LWZyb3plbiBpbml0aWFsVmFsdWVzIOKAlCBjb25zaXN0ZW50IHdpdGggdGhlIGZ1bGwgcmVzZXRGaWVsZHMuXG4gICAgICAgIC8vIFJlYWRzIEFORCB3cml0ZXMgYXJlIG5lc3RlZC1wYXRoIGF3YXJlLCBzbyBkb3QtcGF0aCBuYW1lc1xuICAgICAgICAvLyAoYGFkZHJlc3MuY2l0eWAsIGBpdGVtcy4wLnRpdGxlYCkgcmVzZXQgY29ycmVjdGx5IGluc3RlYWQgb2YgcHJvYmluZyBhXG4gICAgICAgIC8vIGxpdGVyYWwga2V5IGFuZCBzaGFsbG93LW1lcmdpbmcgb25lIGJhY2suXG4gICAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZXMgPSBmb3JtQ29yZS5nZXRJbml0aWFsVmFsdWVzKCk7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgICAgICAgbGV0IG5ld1ZhbHVlcyA9IHN0YXRlLnZhbHVlcztcbiAgICAgICAgZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbml0aWFsID0gcmVzb2x2ZVZhbHVlKGluaXRpYWxWYWx1ZXMsIGZpZWxkKTtcbiAgICAgICAgICAgIG5ld1ZhbHVlcyA9IGZpZWxkLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgICAgICA/IHNldE5lc3RlZFZhbHVlKG5ld1ZhbHVlcywgZmllbGQsIGluaXRpYWwpXG4gICAgICAgICAgICAgICAgOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG5ld1ZhbHVlcyksIHsgW2ZpZWxkXTogaW5pdGlhbCB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIExpa2UgdGhlIGZ1bGwgcmVzZXQ6IGNsZWFyIEFMTCBwZXItZmllbGQgbWV0YSAoZXJyb3JzIEFORCB3YXJuaW5ncyBBTkRcbiAgICAgICAgLy8gdG91Y2hlZC92YWxpZGF0aW5nKSwgaW52YWxpZGF0ZSBpbi1mbGlnaHQgdmFsaWRhdGlvbiBydW5zLCBhbmQgbGFuZFxuICAgICAgICAvLyBldmVyeXRoaW5nIGluIE9ORSBjb21taXQuIE5vIG9uVmFsdWVzQ2hhbmdlIOKAlCByZXNldCBpcyBub3QgYSBjaGFuZ2VcbiAgICAgICAgLy8gZXZlbnQgb24gZWl0aGVyIHBhdGguXG4gICAgICAgIGZvcm1Db3JlLmludmFsaWRhdGVWYWxpZGF0aW9uUnVucyhmaWVsZHMpO1xuICAgICAgICBjb25zdCBuZXdFcnJvcnMgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5lcnJvcnMpO1xuICAgICAgICBjb25zdCBuZXdXYXJuaW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLndhcm5pbmdzKTtcbiAgICAgICAgY29uc3QgbmV3VG91Y2hlZCA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnRvdWNoZWQpO1xuICAgICAgICBjb25zdCBuZXdWYWxpZGF0aW5nID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUudmFsaWRhdGluZyk7XG4gICAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgZGVsZXRlIG5ld0Vycm9yc1tmaWVsZF07XG4gICAgICAgICAgICBkZWxldGUgbmV3V2FybmluZ3NbZmllbGRdO1xuICAgICAgICAgICAgZGVsZXRlIG5ld1RvdWNoZWRbZmllbGRdO1xuICAgICAgICAgICAgZGVsZXRlIG5ld1ZhbGlkYXRpbmdbZmllbGRdO1xuICAgICAgICB9KTtcbiAgICAgICAgc3RvcmUuc2V0U3RhdGUoe1xuICAgICAgICAgICAgdmFsdWVzOiBuZXdWYWx1ZXMsXG4gICAgICAgICAgICBlcnJvcnM6IG5ld0Vycm9ycyxcbiAgICAgICAgICAgIHdhcm5pbmdzOiBuZXdXYXJuaW5ncyxcbiAgICAgICAgICAgIHRvdWNoZWQ6IG5ld1RvdWNoZWQsXG4gICAgICAgICAgICB2YWxpZGF0aW5nOiBuZXdWYWxpZGF0aW5nLFxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBzdWJtaXRXaXRoVmFsaWRhdGlvbiA9IHVzZU1lbW9pemVkRm4oKGNhbGxiYWNrKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgbGV0IHZhbGlkYXRlZFZhbHVlcztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhbGlkYXRlZFZhbHVlcyA9IHlpZWxkIHZhbGlkYXRlRmllbGRzQXN5bmMoKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoX2EpIHtcbiAgICAgICAgICAgIC8vIFZhbGlkYXRpb24gZmFpbHVyZSDigJQgdGhlIGZpZWxkIGVycm9ycyBhcmUgYWxyZWFkeSBpbiB0aGUgc3RvcmUuXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB5aWVsZCBjYWxsYmFjayh2YWxpZGF0ZWRWYWx1ZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIC8vIEEgdGhyb3dpbmcgY2FsbGJhY2sgaXMgYSBjb25zdW1lciBidWcsIG5vdCBhIHZhbGlkYXRpb24gZmFpbHVyZSDigJRcbiAgICAgICAgICAgICAgICAvLyBzdXJmYWNlIGl0IChtaXJyb3JpbmcgcmMtZmllbGQtZm9ybSdzIG9uRmluaXNoIGhhbmRsaW5nKSBpbnN0ZWFkXG4gICAgICAgICAgICAgICAgLy8gb2Ygc3dhbGxvd2luZyBpdCBzaWxlbnRseS5cbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbUHJvRm9ybV0gc3VibWl0IGNhbGxiYWNrIHRocmV3OicsIGVycik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsaWRhdGVkVmFsdWVzO1xuICAgIH0pKTtcbiAgICBjb25zdCBmb3JtSW5zdGFuY2UgPSB1c2VNZW1vKCgpID0+IChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGZvcm1Db3JlLmZvcm1JbnN0YW5jZSksIHsgZ2V0RmllbGRWYWx1ZTogZm9ybUNvcmUuZ2V0RmllbGRWYWx1ZSwgZ2V0RmllbGRzVmFsdWU6IGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlLCB2YWxpZGF0ZUZpZWxkczogdmFsaWRhdGVGaWVsZHNBc3luYywgc2V0RmllbGRWYWx1ZTogZm9ybUNvcmUuc2V0RmllbGRWYWx1ZSwgc2V0RmllbGRzVmFsdWU6IGZvcm1Db3JlLnNldEZpZWxkc1ZhbHVlLCBnZXRGaWVsZEVycm9yOiBnZXRGaWVsZEVycm9yLCBnZXRGaWVsZFdhcm5pbmc6IGdldEZpZWxkV2FybmluZywgZ2V0RmllbGRzRXJyb3I6IGdldEZpZWxkc0Vycm9yLCBpc0ZpZWxkVG91Y2hlZDogaXNGaWVsZFRvdWNoZWQsIGlzRmllbGRzVG91Y2hlZDogaXNGaWVsZHNUb3VjaGVkLCBpc0ZpZWxkVmFsaWRhdGluZzogaXNGaWVsZFZhbGlkYXRpbmcsIHNldEZpZWxkRXJyb3I6IGZvcm1Db3JlLnNldEZpZWxkRXJyb3IsIHNldEZpZWxkc0Vycm9yLCBzZXRGaWVsZFRvdWNoZWQ6IHNldEZpZWxkVG91Y2hlZCwgc2V0RmllbGRzVG91Y2hlZCwgcmVzZXRGaWVsZHM6IHJlc2V0Rm9ybUZpZWxkcywgc3VibWl0OiBzdWJtaXRXaXRoVmFsaWRhdGlvbiwgZGVmaW5lRmllbGQsIHJlZ2lzdGVyRmllbGQ6IGZvcm1Db3JlLnJlZ2lzdGVyRmllbGQsIHVucmVnaXN0ZXJGaWVsZDogZm9ybUNvcmUudW5yZWdpc3RlckZpZWxkIH0pKSwgW1xuICAgICAgICBmb3JtQ29yZS5mb3JtSW5zdGFuY2UsXG4gICAgICAgIGZvcm1Db3JlLmdldEZpZWxkVmFsdWUsXG4gICAgICAgIGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlLFxuICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZFZhbHVlLFxuICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRFcnJvcixcbiAgICAgICAgZm9ybUNvcmUucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgZm9ybUNvcmUudW5yZWdpc3RlckZpZWxkLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkc0FzeW5jLFxuICAgICAgICBnZXRGaWVsZEVycm9yLFxuICAgICAgICBnZXRGaWVsZFdhcm5pbmcsXG4gICAgICAgIGdldEZpZWxkc0Vycm9yLFxuICAgICAgICBpc0ZpZWxkVG91Y2hlZCxcbiAgICAgICAgaXNGaWVsZHNUb3VjaGVkLFxuICAgICAgICBpc0ZpZWxkVmFsaWRhdGluZyxcbiAgICAgICAgc2V0RmllbGRzRXJyb3IsXG4gICAgICAgIHNldEZpZWxkVG91Y2hlZCxcbiAgICAgICAgc2V0RmllbGRzVG91Y2hlZCxcbiAgICAgICAgcmVzZXRGb3JtRmllbGRzLFxuICAgICAgICBzdWJtaXRXaXRoVmFsaWRhdGlvbixcbiAgICAgICAgZGVmaW5lRmllbGQsXG4gICAgXSk7XG4gICAgLy8gRnVuY3Rpb24tZm9ybSBydWxlcyBnZXQgdGhlIEZVTEwgZm9ybSBpbnN0YW5jZSAoZXJyb3IgZ2V0dGVycywgdG91Y2hlZFxuICAgIC8vIHN0YXRlLCBtdXRhdG9ycykgaW5zdGVhZCBvZiB0aGUgYmFyZSBjb3JlIG1ldGhvZHMuIFJlZiB3cml0ZSDigJQgY2hlYXAgYW5kXG4gICAgLy8gaWRlbXBvdGVudCBwZXIgcmVuZGVyLlxuICAgIGZvcm1Db3JlLnNldFJ1bGVDb250ZXh0SW5zdGFuY2UoZm9ybUluc3RhbmNlKTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBJbnRlcm5hbHMg4oCTIGV4cG9zZWQgZm9yIFByb0Zvcm0gaW50ZWdyYXRpb24uIERhdGEgZmllbGRzIGFyZSBHRVRURVJTIHRoYXRcbiAgICAvLyByZWFkIHRoZSBsaXZlIHN0b3JlLCBzbyB0aGUgb2JqZWN0IGlzIGlkZW50aXR5LXN0YWJsZSB5ZXQgbmV2ZXIgc3RhbGUuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgaW50ZXJuYWxzID0gdXNlTWVtbygoKSA9PiAoe1xuICAgICAgICBnZXQgdmFsdWVzKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmdldFN0YXRlKCkudmFsdWVzO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgZXJyb3JzKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmdldFN0YXRlKCkuZXJyb3JzO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgd2FybmluZ3MoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuZ2V0U3RhdGUoKS53YXJuaW5ncztcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHRvdWNoZWQoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuZ2V0U3RhdGUoKS50b3VjaGVkO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgdmFsaWRhdGluZygpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5nZXRTdGF0ZSgpLnZhbGlkYXRpbmc7XG4gICAgICAgIH0sXG4gICAgICAgIGZpZWxkUnVsZXM6IGZvcm1Db3JlLmZpZWxkUnVsZXMsXG4gICAgICAgIHNldEZpZWxkVmFsdWU6IGZvcm1Db3JlLnNldEZpZWxkVmFsdWUsXG4gICAgICAgIHNldEZpZWxkRXJyb3I6IGZvcm1Db3JlLnNldEZpZWxkRXJyb3IsXG4gICAgICAgIHNldEZpZWxkV2FybmluZzogZm9ybUNvcmUuc2V0RmllbGRXYXJuaW5nLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkQXN5bmMsXG4gICAgICAgIHJlZ2lzdGVyRmllbGQ6IGZvcm1Db3JlLnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHVucmVnaXN0ZXJGaWVsZDogZm9ybUNvcmUudW5yZWdpc3RlckZpZWxkLFxuICAgICAgICByZXRhaW5GaWVsZDogZm9ybUNvcmUucmV0YWluRmllbGQsXG4gICAgICAgIHJlbGVhc2VGaWVsZDogZm9ybUNvcmUucmVsZWFzZUZpZWxkLFxuICAgICAgICBoYW5kbGVTdWJtaXQsXG4gICAgICAgIGhhbmRsZVJlc2V0LFxuICAgIH0pLCBbXG4gICAgICAgIHN0b3JlLFxuICAgICAgICBmb3JtQ29yZS5maWVsZFJ1bGVzLFxuICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZFZhbHVlLFxuICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZEVycm9yLFxuICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZFdhcm5pbmcsXG4gICAgICAgIHZhbGlkYXRlRmllbGRBc3luYyxcbiAgICAgICAgZm9ybUNvcmUucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgZm9ybUNvcmUudW5yZWdpc3RlckZpZWxkLFxuICAgICAgICBmb3JtQ29yZS5yZXRhaW5GaWVsZCxcbiAgICAgICAgZm9ybUNvcmUucmVsZWFzZUZpZWxkLFxuICAgICAgICBoYW5kbGVTdWJtaXQsXG4gICAgICAgIGhhbmRsZVJlc2V0LFxuICAgIF0pO1xuICAgIHJldHVybiB7IGZvcm1JbnN0YW5jZSwgaW50ZXJuYWxzLCBzdG9yZSB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IHVzZUZvcm07IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
788
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm0uanMiLCJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaG9va3MvdXNlRm9ybS50cyJdLCJuYW1lcyI6WyJlIiwidCIsInIiLCJTeW1ib2wiLCJuIiwiaXRlcmF0b3IiLCJvIiwidG9TdHJpbmdUYWciLCJpIiwiYyIsInByb3RvdHlwZSIsIkdlbmVyYXRvciIsInUiLCJPYmplY3QiLCJjcmVhdGUiLCJfcmVnZW5lcmF0b3JEZWZpbmUyIiwiZiIsInAiLCJ5IiwiRyIsInYiLCJhIiwiZCIsImJpbmQiLCJsZW5ndGgiLCJsIiwiVHlwZUVycm9yIiwiY2FsbCIsImRvbmUiLCJ2YWx1ZSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJnZXRQcm90b3R5cGVPZiIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiZGlzcGxheU5hbWUiLCJfcmVnZW5lcmF0b3IiLCJ3IiwibSIsImRlZmluZVByb3BlcnR5IiwiX3JlZ2VuZXJhdG9yRGVmaW5lIiwiX2ludm9rZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX24iLCJGIiwicyIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIl9fYXdhaXRlciIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiUCIsImdlbmVyYXRvciIsImFkb3B0IiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJ0aGVuIiwiYXBwbHkiLCJfX3Jlc3QiLCJoYXNPd25Qcm9wZXJ0eSIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInVzZU1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJtZW1vIiwiRnJhZ21lbnQiLCJSZWFjdCIsInVzZUV2ZW50Q2FsbGJhY2siLCJ1c2VNZW1vaXplZEZuIiwidXNlRm9ybUNvcmUiLCJyZXNvbHZlVmFsdWUiLCJzZXROZXN0ZWRWYWx1ZSIsImNvZXJjZUZhaWx1cmVSZWFzb24iLCJmaWx0ZXJSdWxlc0J5VHJpZ2dlciIsIm5vcm1hbGl6ZVRyaWdnZXJzIiwicmVzb2x2ZVJ1bGVzIiwicnVuUnVsZXNBc3luYyIsInVzZVN0b3JlU2VsZWN0b3IiLCJzaGFsbG93RXF1YWxBcnJheXMiLCJzYW1lVmFsaWRhdGlvbk5vZGUiLCJGb3JtVmFsaWRhdGlvbkVycm9yIiwiYXNSdWxlQXJyYXkiLCJydWxlIiwicnVsZUhhc1ZhbGlkYXRvciIsInZhbGlkYXRvciIsImRlZmF1bHRGaWVsZCIsInNvbWUiLCJmaWVsZHMiLCJ2YWx1ZXMiLCJzdWIiLCJoYXNSZXNvbHZlZFZhbGlkYXRvciIsInJlc29sdmVkIiwidXNlRm9ybSIsImNvbmZpZyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIm9uRmluaXNoIiwib25GaW5pc2hGYWlsZWQiLCJvblJlc2V0IiwiX2NvbmZpZyR2YWxpZGF0ZVRyaWdnIiwidmFsaWRhdGVUcmlnZ2VyIiwiZm9ybUNvcmUiLCJzdG9yZSIsImxhc3RBc3luY0Vwb2NoUmVmIiwibWFya1ZhbGlkYXRpbmciLCJuYW1lcyIsImFzc2lnbiIsImdldFN0YXRlIiwidmFsaWRhdGluZyIsImZvckVhY2giLCJzZXRTdGF0ZSIsImNvbW1pdFJ1bGVPdXRjb21lcyIsIm91dGNvbWVzIiwiY2xlYXJWYWxpZGF0aW5nIiwic3RhdGUiLCJlcnJvcnNDaGFuZ2VkIiwid2FybmluZ3NDaGFuZ2VkIiwibmV3RXJyb3JzIiwiZXJyb3JzIiwibmV3V2FybmluZ3MiLCJ3YXJuaW5ncyIsIl9pdGVyYXRvciIsIl9zdGVwIiwiX3N0ZXAkdmFsdWUiLCJlcnJvciIsIndhcm5pbmciLCJlcnIiLCJmbGFnc1RvQ2xlYXIiLCJmaWx0ZXIiLCJwYXRjaCIsIm5ld1ZhbGlkYXRpbmciLCJrZXlzIiwidmFsaWRhdGVGaWVsZEFzeW5jIiwicnVsZXMiLCJfY2FsbGVlIiwiX2EiLCJlcG9jaCIsImZsYWdnZWQiLCJvdXRjb21lIiwiX3lpZWxkJHJ1blJ1bGVzQXN5bmMiLCJpc0N1cnJlbnQiLCJjbGVhckZsYWdzIiwiX3QiLCJfY29udGV4dCIsImlzVmFsaWQiLCJiZWdpblZhbGlkYXRpb25SdW4iLCJnZXRGaWVsZHNWYWx1ZSIsImdldFJ1bGVDb250ZXh0SW5zdGFuY2UiLCJmbGFnZ2VkTmFtZSIsImN1cnJlbnQiLCJpc1ZhbGlkYXRpb25SdW5DdXJyZW50IiwiaGFuZGxlRmllbGRCbHVyIiwiZmllbGRUcmlnZ2VyIiwiX2NhbGxlZTIiLCJ0b3VjaGVkIiwiYXBwbGljYWJsZSIsIl9jb250ZXh0MiIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldEZpZWxkUnVsZXMiLCJ2YWxpZGF0ZUZpZWxkc0FzeW5jIiwibmFtZUxpc3QiLCJfY2FsbGVlNCIsImZpZWxkc1RvVmFsaWRhdGUiLCJmaWVsZEVycm9ycyIsInJlc29sdmVkQnlGaWVsZCIsImVwb2NoQnlGaWVsZCIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfY29udGV4dDQiLCJmaWVsZFJ1bGVzIiwiTWFwIiwic2V0IiwiZ2V0IiwiYWxsIiwibWFwIiwiX2NhbGxlZTMiLCJfeWllbGQkcnVuUnVsZXNBc3luYzIiLCJfdDIiLCJfY29udGV4dDMiLCJwdXNoIiwicmVkdWNlIiwiYWNjIiwiZGVmaW5lRmllbGQiLCJmaWVsZE9wdGlvbnMiLCJfZmllbGRPcHRpb25zJHJ1bGVzIiwiRmllbGRDb21wb25lbnQiLCJjaGlsZHJlbiIsInJlbmRlciIsInByb3BzIiwiX3VzZVN0b3JlU2VsZWN0b3IiLCJfdXNlU3RvcmVTZWxlY3RvcjIiLCJfc2xpY2VkVG9BcnJheSIsImZpZWxkVmFsdWUiLCJmaWVsZEVycm9yIiwiZmllbGRUb3VjaGVkIiwiZmllbGRWYWxpZGF0aW5nIiwicmV0YWluRmllbGQiLCJleGlzdGluZ1J1bGVzIiwicmVnaXN0ZXJGaWVsZCIsInJlbGVhc2VGaWVsZCIsImhhbmRsZUZpZWxkQ2hhbmdlIiwic2V0RmllbGRWYWx1ZSIsImhhbmRsZUJsdXIiLCJmaWVsZFByb3BzIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJoYW5kbGVNZXJnZUNoYW5nZSIsIl90eXBlb2YiLCJ0YXJnZXQiLCJpc1ZhbGlkRWxlbWVudCIsImhhbmRsZU1lcmdlQmx1ciIsImRvbVNhZmVQcm9wcyIsImNsb25lRWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJjaGlsZCIsImluZGV4Iiwia2V5IiwiaGFuZGxlU3VibWl0IiwiX2NhbGxlZTUiLCJ2YWxpZGF0ZWRWYWx1ZXMiLCJfdDMiLCJfY29udGV4dDUiLCJwcmV2ZW50RGVmYXVsdCIsImNvbnNvbGUiLCJoYW5kbGVSZXNldCIsInJlc2V0RmllbGRzIiwiZ2V0RmllbGRFcnJvciIsImdldEZpZWxkV2FybmluZyIsImdldEZpZWxkc0Vycm9yIiwiaXNGaWVsZFRvdWNoZWQiLCJpc0ZpZWxkc1RvdWNoZWQiLCJhbGxGaWVsZHNUb3VjaGVkIiwiZXZlcnkiLCJpc0ZpZWxkVmFsaWRhdGluZyIsInNldEZpZWxkc0Vycm9yIiwiZmllbGRzRXJyb3IiLCJlbnRyaWVzIiwiX3JlZiIsIl9yZWYyIiwic2V0RmllbGRFcnJvciIsInNldEZpZWxkVG91Y2hlZCIsImlzVG91Y2hlZCIsInNldEZpZWxkc1RvdWNoZWQiLCJmaWVsZHNUb3VjaCIsInJlc2V0Rm9ybUZpZWxkcyIsImluaXRpYWxWYWx1ZXMiLCJnZXRJbml0aWFsVmFsdWVzIiwibmV3VmFsdWVzIiwiZmllbGQiLCJpbml0aWFsIiwiaW5jbHVkZXMiLCJpbnZhbGlkYXRlVmFsaWRhdGlvblJ1bnMiLCJuZXdUb3VjaGVkIiwic3VibWl0V2l0aFZhbGlkYXRpb24iLCJjYWxsYmFjayIsIl9jYWxsZWU2IiwiX3Q0IiwiX3Q1IiwiX2NvbnRleHQ2IiwiZm9ybUluc3RhbmNlIiwiZ2V0RmllbGRWYWx1ZSIsInZhbGlkYXRlRmllbGRzIiwic2V0RmllbGRzVmFsdWUiLCJzdWJtaXQiLCJ1bnJlZ2lzdGVyRmllbGQiLCJzZXRSdWxlQ29udGV4dEluc3RhbmNlIiwiaW50ZXJuYWxzIiwic2V0RmllbGRXYXJuaW5nIl0sIm1hcHBpbmdzIjoiOzs7OzBCQUNBLHVLQUFBQSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssV0FBQSw4QkFBQUMsRUFBQU4sQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBQyxDQUFBLEdBQUFMLENBQUEsSUFBQUEsQ0FBQSxDQUFBTSxTQUFBLFlBQUFDLFNBQUEsR0FBQVAsQ0FBQSxHQUFBTyxTQUFBLEVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxNQUFBLENBQUFMLENBQUEsQ0FBQUMsU0FBQSxVQUFBSyxtQkFBQSxDQUFBSCxDQUFBLHVCQUFBVixDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEVBQUFDLENBQUEsRUFBQUcsQ0FBQSxFQUFBSSxDQUFBLE1BQUFDLENBQUEsR0FBQVgsQ0FBQSxRQUFBWSxDQUFBLE9BQUFDLENBQUEsS0FBQUYsQ0FBQSxLQUFBYixDQUFBLEtBQUFnQixDQUFBLEVBQUFwQixDQUFBLEVBQUFxQixDQUFBLEVBQUFDLENBQUEsRUFBQU4sQ0FBQSxFQUFBTSxDQUFBLENBQUFDLElBQUEsQ0FBQXZCLENBQUEsTUFBQXNCLENBQUEsV0FBQUEsRUFBQXJCLENBQUEsRUFBQUMsQ0FBQSxXQUFBTSxDQUFBLEdBQUFQLENBQUEsRUFBQVEsQ0FBQSxNQUFBRyxDQUFBLEdBQUFaLENBQUEsRUFB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TUFDckNvRSxlQUFlLEVBQUVySyxRQUFRLENBQUNxSyxlQUFlO01BQ3pDdEUsV0FBVyxFQUFFL0YsUUFBUSxDQUFDK0YsV0FBVztNQUNqQ0csWUFBWSxFQUFFbEcsUUFBUSxDQUFDa0csWUFBWTtNQUNuQ29CLFlBQVksRUFBWkEsWUFBWTtNQUNaTyxXQUFXLEVBQVhBO0lENUpGLENDNkpDO0VBQUEsQ0FBQyxFQUNGLENBQ0U1SCxLQUFLLEVBQ0xELFFBQVEsQ0FBQ29FLFVBQVUsRUFDbkJwRSxRQUFRLENBQUNvRyxhQUFhLEVBQ3RCcEcsUUFBUSxDQUFDNEksYUFBYSxFQUN0QjVJLFFBQVEsQ0FBQ3dLLGVBQWUsRUFDeEJ6SSxrQkFBa0IsRUFDbEIvQixRQUFRLENBQUNpRyxhQUFhLEVBQ3RCakcsUUFBUSxDQUFDcUssZUFBZSxFQUN4QnJLLFFBQVEsQ0FBQytGLFdBQVcsRUFDcEIvRixRQUFRLENBQUNrRyxZQUFZLEVBQ3JCb0IsWUFBWSxFQUNaTyxXQUFXLENBQ1osQ0FDRjtFQUVELE9BQU87SUFBRW1DLFlBQVksRUFBWkEsWUFBWTtJQUFFTyxTQUFTLEVBQVRBLFNBQVM7SUFBRXRLLEtBQUssRUFBTEE7RUFBSyxDQUFFO0FBQzNDLENBQUM7QUFFRCxlQUFlVixPQUFPIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IHVzZU1lbW8sIHVzZUVmZmVjdCwgdXNlUmVmLCBtZW1vLCBGcmFnbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCB7IHVzZUZvcm1Db3JlIH0gZnJvbSAnLi91c2VGb3JtQ29yZSc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUsIHNldE5lc3RlZFZhbHVlIH0gZnJvbSAnLi4vcGF0aFV0aWxzJztcbmltcG9ydCB7IGNvZXJjZUZhaWx1cmVSZWFzb24sIGZpbHRlclJ1bGVzQnlUcmlnZ2VyLCBub3JtYWxpemVUcmlnZ2VycywgcmVzb2x2ZVJ1bGVzLCBydW5SdWxlc0FzeW5jLCB9IGZyb20gJy4uL3J1blJ1bGVzJztcbmltcG9ydCB7IHVzZVN0b3JlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbEFycmF5cywgc2FtZVZhbGlkYXRpb25Ob2RlIH0gZnJvbSAnLi4vZm9ybVN0b3JlJztcbmltcG9ydCB7IEZvcm1WYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi92YWxpZGF0aW9uRXJyb3InO1xuLyoqXG4gKiBPbmx5IHJ1bGVzIHdpdGggYSBjdXN0b20gYHZhbGlkYXRvcmAgY2FuIGJlIGdlbnVpbmVseSBhc3luY2hyb25vdXMg4oCUXG4gKiBidWlsdGluIHJ1bGVzIHJlc29sdmUgd2l0aGluIGEgbWljcm90YXNrLCBzbyBmbGlwcGluZyBgdmFsaWRhdGluZ2AgZm9yXG4gKiB0aGVtIHdvdWxkIG9ubHkgY2h1cm4gc3Vic2NyaWJlcnMgd2l0aG91dCBldmVyIGJlaW5nIHZpc2libGUuIERlY2lkZWQgb25cbiAqIFJFU09MVkVEIHJ1bGVzOiBhIGZ1bmN0aW9uLWZvcm0gcnVsZSB0aGF0IHJlc29sdmVzIHRvIGJ1aWx0aW4tb25seSBjaGVja3NcbiAqIG11c3Qgbm90IGZsaWNrZXIgdGhlIGZsYWcuXG4gKlxuICogVGhlIGFzeW5jIGVuZ2luZSBhd2FpdHMgdmFsaWRhdG9ycyBuZXN0ZWQgaW5zaWRlIGBmaWVsZHNgIC8gYGRlZmF1bHRGaWVsZGBcbiAqIHRvbywgc28gdGhlIGRlY2lzaW9uIG11c3QgZGVzY2VuZCB0aGUgc2FtZSB3YXkg4oCUIG90aGVyd2lzZSBhIGRlZXAtb25seVxuICogdmFsaWRhdG9yIChlLmcuIGB7IGRlZmF1bHRGaWVsZDogeyB2YWxpZGF0b3IgfSB9YCkgcnVucyBwZW5kaW5nIHdpdGggdGhlXG4gKiBmbGFnIHN0dWNrIGZhbHNlLCBhbmQgYGlzRmllbGRWYWxpZGF0aW5nKG5hbWUpYCB1bmRlci1yZXBvcnRzIGZvciB0aGUgd2hvbGVcbiAqIHdpbmRvdy4gT3Zlci1mbGFnZ2luZyB3aGVuIHRoZSBkZWVwIHZhbGlkYXRvciB3b24ndCBhY3R1YWxseSBmaXJlIChlbXB0eSAvXG4gKiBwcmltaXRpdmUgdmFsdWUpIGlzIGFjY2VwdGFibGU6IHRoZSBmbGFnIGlzIGRlY2lkZWQgb24gcnVsZSBTSEFQRSwgZXhhY3RseVxuICogYXMgdGhlIHRvcC1sZXZlbCBjYXNlIGFscmVhZHkgb3Zlci1mbGFncyBhIHZhbGlkYXRvciBzaG9ydC1jaXJjdWl0ZWQgYnkgYW5cbiAqIGVhcmxpZXIgYnVpbHRpbiBmYWlsdXJlOyB0aGUgcnVuIGNsZWFycyBpdCBvbiBzZXR0bGUgZWl0aGVyIHdheS5cbiAqL1xuY29uc3QgYXNSdWxlQXJyYXkgPSAocnVsZSkgPT4gcnVsZSA/IChBcnJheS5pc0FycmF5KHJ1bGUpID8gcnVsZSA6IFtydWxlXSkgOiBbXTtcbmNvbnN0IHJ1bGVIYXNWYWxpZGF0b3IgPSAocnVsZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgcnVsZS52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIGlmIChhc1J1bGVBcnJheShydWxlLmRlZmF1bHRGaWVsZCkuc29tZShydWxlSGFzVmFsaWRhdG9yKSlcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgaWYgKHJ1bGUuZmllbGRzKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKHJ1bGUuZmllbGRzKS5zb21lKChzdWIpID0+IGFzUnVsZUFycmF5KHN1Yikuc29tZShydWxlSGFzVmFsaWRhdG9yKSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5jb25zdCBoYXNSZXNvbHZlZFZhbGlkYXRvciA9IChyZXNvbHZlZCkgPT4gcmVzb2x2ZWQuc29tZShydWxlSGFzVmFsaWRhdG9yKTtcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gdXNlRm9ybVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5leHBvcnQgY29uc3QgdXNlRm9ybSA9IChjb25maWcgPSB7fSkgPT4ge1xuICAgIGNvbnN0IHsgb25GaW5pc2gsIG9uRmluaXNoRmFpbGVkLCBvblJlc2V0LCB2YWxpZGF0ZVRyaWdnZXIgPSAnb25DaGFuZ2UnLCB9ID0gY29uZmlnO1xuICAgIGNvbnN0IGZvcm1Db3JlID0gdXNlRm9ybUNvcmUoY29uZmlnKTtcbiAgICBjb25zdCB7IHN0b3JlIH0gPSBmb3JtQ29yZTtcbiAgICAvLyBFcG9jaCBvZiB0aGUgTEFURVNUIGFzeW5jIHJ1biB0aGF0IHJhaXNlZCBlYWNoIGZpZWxkJ3MgYHZhbGlkYXRpbmdgIGZsYWcuXG4gICAgLy8gQSBzZXR0bGluZyBydW4gY2xlYXJzIHRoZSBmbGFnIG9ubHkgd2hpbGUgaXQgaXMgc3RpbGwgdGhlIGxhdGVzdCByYWlzZXIg4oCUXG4gICAgLy8gYW4gb2xkZXIgcnVuIG11c3Qgbm90IGJsYW5rIHRoZSBzcGlubmVyIG9mIGEgbmV3ZXIgb25lLCBhbmQgYSBydW5cbiAgICAvLyBzdXBlcnNlZGVkIGJ5IGEgU1lOQyBjb21taXQgKHdoaWNoIG5ldmVyIHRvdWNoZXMgZmxhZ3MpIG11c3Qgc3RpbGwgY2xlYW5cbiAgICAvLyB1cCBhZnRlciBpdHNlbGYuXG4gICAgY29uc3QgbGFzdEFzeW5jRXBvY2hSZWYgPSB1c2VSZWYoe30pO1xuICAgIC8vIE1hcmsgZmllbGRzIGFzIHZhbGlkYXRpbmcgaW4gT05FIGNvbW1pdC4gdmFsaWRhdGluZyAvIHRvdWNoZWQgbGl2ZSBpbiB0aGVcbiAgICAvLyBzdG9yZSBhbG9uZ3NpZGUgdmFsdWVzIOKAlCBmbGlwcGluZyB0aGVtIChlLmcuIGFzeW5jIHZhbGlkYXRpb24gYXJvdW5kIGFcbiAgICAvLyBibHVyKSBtdXN0IG5vdCByZS1yZW5kZXIgdGhlIGZvcm0gcm9vdCwgb25seSB0aGUgZmllbGRzIHRoYXQgc3Vic2NyaWJlZC5cbiAgICBjb25zdCBtYXJrVmFsaWRhdGluZyA9IHVzZU1lbW9pemVkRm4oKG5hbWVzKSA9PiB7XG4gICAgICAgIGlmIChuYW1lcy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG5leHQgPSBPYmplY3QuYXNzaWduKHt9LCBzdG9yZS5nZXRTdGF0ZSgpLnZhbGlkYXRpbmcpO1xuICAgICAgICBuYW1lcy5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgICAgICBuZXh0W25hbWVdID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHN0b3JlLnNldFN0YXRlKHsgdmFsaWRhdGluZzogbmV4dCB9KTtcbiAgICB9KTtcbiAgICAvLyBGb2xkIHBlci1maWVsZCBydWxlIG91dGNvbWVzIGludG8gQVQgTU9TVCBvbmUgc3RvcmUgY29tbWl0OiBlcnJvcnMgYW5kXG4gICAgLy8gd2FybmluZ3MgYXJlIG1lcmdlZCBvdmVyIHRoZSBjdXJyZW50IG1hcHMgYW5kIHRoZSBgY2xlYXJWYWxpZGF0aW5nYCBmbGFnc1xuICAgIC8vIGFyZSByZW1vdmVkIGluIHRoZSBTQU1FIHBhdGNoLiBBIG5vLW9wIG91dGNvbWUgY29tbWl0cyBub3RoaW5nIGF0IGFsbCDigJRcbiAgICAvLyBwZXItZmllbGQgY29tbWl0cyBoZXJlIHByZXZpb3VzbHkgbWFkZSBzdWJtaXQtdGltZSB2YWxpZGF0aW9uIHN3ZWVwIGV2ZXJ5XG4gICAgLy8gc3Vic2NyaWJlciBPKGZpZWxkcykgdGltZXMuXG4gICAgY29uc3QgY29tbWl0UnVsZU91dGNvbWVzID0gdXNlTWVtb2l6ZWRGbigob3V0Y29tZXMsIGNsZWFyVmFsaWRhdGluZykgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHN0b3JlLmdldFN0YXRlKCk7XG4gICAgICAgIGxldCBlcnJvcnNDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIGxldCB3YXJuaW5nc0NoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgbmV3RXJyb3JzID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuZXJyb3JzKTtcbiAgICAgICAgY29uc3QgbmV3V2FybmluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS53YXJuaW5ncyk7XG4gICAgICAgIGZvciAoY29uc3QgeyBuYW1lLCBlcnJvciwgd2FybmluZyB9IG9mIG91dGNvbWVzKSB7XG4gICAgICAgICAgICBpZiAoZXJyb3IgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAobmFtZSBpbiBuZXdFcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG5ld0Vycm9yc1tuYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIXNhbWVWYWxpZGF0aW9uTm9kZShuZXdFcnJvcnNbbmFtZV0sIGVycm9yKSkge1xuICAgICAgICAgICAgICAgIG5ld0Vycm9yc1tuYW1lXSA9IGVycm9yO1xuICAgICAgICAgICAgICAgIGVycm9yc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdhcm5pbmcgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAobmFtZSBpbiBuZXdXYXJuaW5ncykge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbmV3V2FybmluZ3NbbmFtZV07XG4gICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIXNhbWVWYWxpZGF0aW9uTm9kZShuZXdXYXJuaW5nc1tuYW1lXSwgd2FybmluZykpIHtcbiAgICAgICAgICAgICAgICBuZXdXYXJuaW5nc1tuYW1lXSA9IHdhcm5pbmc7XG4gICAgICAgICAgICAgICAgd2FybmluZ3NDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmbGFnc1RvQ2xlYXIgPSBjbGVhclZhbGlkYXRpbmcuZmlsdGVyKChuYW1lKSA9PiBuYW1lIGluIHN0YXRlLnZhbGlkYXRpbmcpO1xuICAgICAgICBjb25zdCBwYXRjaCA9IHt9O1xuICAgICAgICBpZiAoZXJyb3JzQ2hhbmdlZClcbiAgICAgICAgICAgIHBhdGNoLmVycm9ycyA9IG5ld0Vycm9ycztcbiAgICAgICAgaWYgKHdhcm5pbmdzQ2hhbmdlZClcbiAgICAgICAgICAgIHBhdGNoLndhcm5pbmdzID0gbmV3V2FybmluZ3M7XG4gICAgICAgIGlmIChmbGFnc1RvQ2xlYXIubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsaWRhdGluZyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnZhbGlkYXRpbmcpO1xuICAgICAgICAgICAgZmxhZ3NUb0NsZWFyLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBkZWxldGUgbmV3VmFsaWRhdGluZ1tuYW1lXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcGF0Y2gudmFsaWRhdGluZyA9IG5ld1ZhbGlkYXRpbmc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHBhdGNoKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgc3RvcmUuc2V0U3RhdGUocGF0Y2gpO1xuICAgIH0pO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEFzeW5jIGZpZWxkIHZhbGlkYXRpb24g4oCTIGVhY2ggcnVsZSBpcyBwcm9jZXNzZWQgZXhhY3RseSBvbmNlXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgdmFsaWRhdGVGaWVsZEFzeW5jID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgdmFsdWUsIHJ1bGVzKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIXJ1bGVzIHx8IHJ1bGVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIGVycm9yOiBudWxsIH07XG4gICAgICAgIC8vIENhcHR1cmUgdGhpcyBydW4ncyBlcG9jaDogaWYgYSBORVdFUiBydW4gKHN5bmMgb3IgYXN5bmMpIHN0YXJ0cyBmb3JcbiAgICAgICAgLy8gdGhlIGZpZWxkIGJlZm9yZSB0aGlzIG9uZSBzZXR0bGVzLCB0aGUgb3V0Y29tZSBiZWxvdyBpcyBzdGFsZSBhbmQgaXNcbiAgICAgICAgLy8gZGlzY2FyZGVkIGluc3RlYWQgb2Ygb3ZlcndyaXRpbmcgdGhlIG5ld2VyIHJlc3VsdC5cbiAgICAgICAgY29uc3QgZXBvY2ggPSBmb3JtQ29yZS5iZWdpblZhbGlkYXRpb25SdW4obmFtZSk7XG4gICAgICAgIC8vIFJlc29sdmUgb25jZTogdGhlIGZsYWcgZGVjaXNpb24gbmVlZHMgcmVzb2x2ZWQgcnVsZXMsIGFuZCBwYXNzaW5nIHRoZVxuICAgICAgICAvLyByZXNvbHZlZCBhcnJheSBvbndhcmQgc3BhcmVzIHRoZSBlbmdpbmUgYSByZS1yZXNvbHV0aW9uLlxuICAgICAgICBjb25zdCB2YWx1ZXMgPSBmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpO1xuICAgICAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVSdWxlcyhydWxlcywgdmFsdWVzLCBmb3JtQ29yZS5nZXRSdWxlQ29udGV4dEluc3RhbmNlKCkpO1xuICAgICAgICBjb25zdCBmbGFnZ2VkID0gaGFzUmVzb2x2ZWRWYWxpZGF0b3IocmVzb2x2ZWQpID8gW25hbWVdIDogW107XG4gICAgICAgIG1hcmtWYWxpZGF0aW5nKGZsYWdnZWQpO1xuICAgICAgICBmbGFnZ2VkLmZvckVhY2goKGZsYWdnZWROYW1lKSA9PiB7XG4gICAgICAgICAgICBsYXN0QXN5bmNFcG9jaFJlZi5jdXJyZW50W2ZsYWdnZWROYW1lXSA9IGVwb2NoO1xuICAgICAgICB9KTtcbiAgICAgICAgbGV0IG91dGNvbWUgPSB7IG5hbWUsIGVycm9yOiBudWxsLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB7IGVycm9yLCB3YXJuaW5nIH0gPSB5aWVsZCBydW5SdWxlc0FzeW5jKG5hbWUsIHZhbHVlLCB2YWx1ZXMsIHJlc29sdmVkLCBmb3JtQ29yZS5nZXRSdWxlQ29udGV4dEluc3RhbmNlKCkpO1xuICAgICAgICAgICAgb3V0Y29tZSA9IHsgbmFtZSwgZXJyb3IsIHdhcm5pbmcgfTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBUaGUgZW5naW5lIGNvbnRhaW5zIHJ1bGUtbGV2ZWwgdGhyb3dzIGl0c2VsZjsgdGhpcyBpcyBhIGxhc3QtcmVzb3J0XG4gICAgICAgICAgICAvLyBuZXQgc28gYW4gdW5leHBlY3RlZCBmYWlsdXJlIHN1cmZhY2VzIGFzIGEgZmllbGQgZXJyb3IgaW5zdGVhZCBvZlxuICAgICAgICAgICAgLy8gbGVhdmluZyB0aGUgZmllbGQgbWFya2VkIHZhbGlkLlxuICAgICAgICAgICAgb3V0Y29tZSA9IHsgbmFtZSwgZXJyb3I6IChfYSA9IGNvZXJjZUZhaWx1cmVSZWFzb24oZXJyKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ1ZhbGlkYXRpb24gZmFpbGVkJywgd2FybmluZzogbnVsbCB9O1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50ID0gZm9ybUNvcmUuaXNWYWxpZGF0aW9uUnVuQ3VycmVudChuYW1lLCBlcG9jaCk7XG4gICAgICAgICAgICBjb25zdCBjbGVhckZsYWdzID0gZmxhZ2dlZC5maWx0ZXIoKGZsYWdnZWROYW1lKSA9PiBsYXN0QXN5bmNFcG9jaFJlZi5jdXJyZW50W2ZsYWdnZWROYW1lXSA9PT0gZXBvY2gpO1xuICAgICAgICAgICAgY29tbWl0UnVsZU91dGNvbWVzKGlzQ3VycmVudCA/IFtvdXRjb21lXSA6IFtdLCBjbGVhckZsYWdzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGUgQ0FMTEVSIGdldHMgdGhpcyBydW4ncyBvd24gcmVzdWx0IGVpdGhlciB3YXkgKGl0cyBwcm9taXNlIGlzXG4gICAgICAgIC8vIGFib3V0IHRoZSB2YWx1ZSBpdCB3YXMgYXNrZWQgdG8gdmFsaWRhdGUpOyBvbmx5IHRoZSBTVE9SRSBjb21taXQgaXNcbiAgICAgICAgLy8gc3RhbGVuZXNzLWd1YXJkZWQuXG4gICAgICAgIHJldHVybiB7IGlzVmFsaWQ6IG91dGNvbWUuZXJyb3IgPT09IG51bGwsIGVycm9yOiBvdXRjb21lLmVycm9yIH07XG4gICAgfSkpO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEFzeW5jIGZpZWxkIGJsdXIgaGFuZGxlclxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGhhbmRsZUZpZWxkQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKG5hbWUsIGZpZWxkVHJpZ2dlcikgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHRvdWNoZWQgPSBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWQ7XG4gICAgICAgIGlmICghdG91Y2hlZFtuYW1lXSkge1xuICAgICAgICAgICAgc3RvcmUuc2V0U3RhdGUoeyB0b3VjaGVkOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHRvdWNoZWQpLCB7IFtuYW1lXTogdHJ1ZSB9KSB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBydWxlcyA9IGZvcm1Db3JlLmdldEZpZWxkUnVsZXMobmFtZSk7XG4gICAgICAgIGlmICghcnVsZXMpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCk7XG4gICAgICAgIGNvbnN0IGFwcGxpY2FibGUgPSBmaWx0ZXJSdWxlc0J5VHJpZ2dlcihyZXNvbHZlUnVsZXMocnVsZXMsIHZhbHVlcywgZm9ybUNvcmUuZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSgpKSwgJ29uQmx1cicsIG5vcm1hbGl6ZVRyaWdnZXJzKGZpZWxkVHJpZ2dlciwgdmFsaWRhdGVUcmlnZ2VyKSwgbmFtZSk7XG4gICAgICAgIGlmIChhcHBsaWNhYmxlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHlpZWxkIHZhbGlkYXRlRmllbGRBc3luYyhuYW1lLCByZXNvbHZlVmFsdWUodmFsdWVzLCBuYW1lKSwgYXBwbGljYWJsZSk7XG4gICAgICAgIH1cbiAgICB9KSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gVmFsaWRhdGUgYWxsIGZpZWxkcyBhc3luY1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IHZhbGlkYXRlRmllbGRzQXN5bmMgPSB1c2VNZW1vaXplZEZuKChuYW1lTGlzdCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkc1RvVmFsaWRhdGUgPSBuYW1lTGlzdCB8fCBPYmplY3Qua2V5cyhmb3JtQ29yZS5maWVsZFJ1bGVzKTtcbiAgICAgICAgY29uc3QgZmllbGRFcnJvcnMgPSB7fTtcbiAgICAgICAgLy8gUmVzb2x2ZSBldmVyeSBmaWVsZCBvbmNlIHVwIGZyb250OiB0aGUgZmxhZyBkZWNpc2lvbiBuZWVkcyByZXNvbHZlZFxuICAgICAgICAvLyBydWxlcywgYW5kIHRoZSByZXNvbHZlZCBhcnJheXMgYXJlIHJldXNlZCBmb3IgdGhlIGFjdHVhbCBydW5zLiBFYWNoXG4gICAgICAgIC8vIGZpZWxkIGFsc28gY2FwdHVyZXMgaXRzIHZhbGlkYXRpb24gZXBvY2gg4oCUIGEgZmllbGQgd2hvc2UgdmFsdWVcbiAgICAgICAgLy8gY2hhbmdlcyBtaWQtc3VibWl0IGdldHMgYSBuZXdlciBydW4sIGFuZCB0aGlzIHJ1bidzIHN0YWxlIG91dGNvbWVcbiAgICAgICAgLy8gbXVzdCBub3Qgb3ZlcndyaXRlIGl0IGluIHRoZSBzdG9yZS5cbiAgICAgICAgY29uc3QgcmVzb2x2ZWRCeUZpZWxkID0gbmV3IE1hcCgpO1xuICAgICAgICBjb25zdCBlcG9jaEJ5RmllbGQgPSBuZXcgTWFwKCk7XG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBvZiBmaWVsZHNUb1ZhbGlkYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBydWxlcyA9IGZvcm1Db3JlLmZpZWxkUnVsZXNbbmFtZV07XG4gICAgICAgICAgICBpZiAocnVsZXMpIHtcbiAgICAgICAgICAgICAgICBlcG9jaEJ5RmllbGQuc2V0KG5hbWUsIGZvcm1Db3JlLmJlZ2luVmFsaWRhdGlvblJ1bihuYW1lKSk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRCeUZpZWxkLnNldChuYW1lLCByZXNvbHZlUnVsZXMocnVsZXMsIGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCksIGZvcm1Db3JlLmdldFJ1bGVDb250ZXh0SW5zdGFuY2UoKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIE9uZSBjb21taXQgdG8gcmFpc2UgdGhlIHZhbGlkYXRpbmcgZmxhZ3MgKHZhbGlkYXRvci1iZWFyaW5nIGZpZWxkc1xuICAgICAgICAvLyBvbmx5KSwgb25lIGNvbW1pdCB0byBsYW5kIGV2ZXJ5IGVycm9yL3dhcm5pbmcgYW5kIGNsZWFyIHRoZSBmbGFncy5cbiAgICAgICAgY29uc3QgZmxhZ2dlZCA9IGZpZWxkc1RvVmFsaWRhdGUuZmlsdGVyKChuYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVkQnlGaWVsZC5nZXQobmFtZSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWQgPyBoYXNSZXNvbHZlZFZhbGlkYXRvcihyZXNvbHZlZCkgOiBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIG1hcmtWYWxpZGF0aW5nKGZsYWdnZWQpO1xuICAgICAgICBmbGFnZ2VkLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgIGxhc3RBc3luY0Vwb2NoUmVmLmN1cnJlbnRbbmFtZV0gPSBlcG9jaEJ5RmllbGQuZ2V0KG5hbWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgb3V0Y29tZXMgPSBbXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHlpZWxkIFByb21pc2UuYWxsKGZpZWxkc1RvVmFsaWRhdGUubWFwKChuYW1lKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlZEJ5RmllbGQuZ2V0KG5hbWUpO1xuICAgICAgICAgICAgICAgIGlmICghcmVzb2x2ZWQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IgPSBudWxsO1xuICAgICAgICAgICAgICAgIGxldCB3YXJuaW5nID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAoeyBlcnJvciwgd2FybmluZyB9ID0geWllbGQgcnVuUnVsZXNBc3luYyhuYW1lLCByZXNvbHZlVmFsdWUoZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKSwgbmFtZSksIGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCksIHJlc29sdmVkLCBmb3JtQ29yZS5nZXRSdWxlQ29udGV4dEluc3RhbmNlKCkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAvLyBMYXN0LXJlc29ydCBuZXQgKHNlZSB2YWxpZGF0ZUZpZWxkQXN5bmMpIOKAlCBrZWVwIHRoZSBub3JtYWxcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc3RydWN0ZWQtZXJyb3IgZmxvdyBzbyBvbkZpbmlzaEZhaWxlZCBnZXRzIGEgcmVhbCBwYXlsb2FkLlxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IChfYSA9IGNvZXJjZUZhaWx1cmVSZWFzb24oZXJyKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ1ZhbGlkYXRpb24gZmFpbGVkJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVGhlIHN0b3JlIGNvbW1pdCBpcyBzdGFsZW5lc3MtZ3VhcmRlZDsgdGhlIFNVQk1JVCBkZWNpc2lvblxuICAgICAgICAgICAgICAgIC8vIChmaWVsZEVycm9ycyAvIHRoZSB0aHJvd24gRm9ybVZhbGlkYXRpb25FcnJvcikgc3RpbGwgcmVmbGVjdHNcbiAgICAgICAgICAgICAgICAvLyB0aGlzIHJ1bidzIG93biByZXN1bHRzIGZvciB0aGUgdmFsdWVzIGl0IHZhbGlkYXRlZC5cbiAgICAgICAgICAgICAgICBjb25zdCBlcG9jaCA9IGVwb2NoQnlGaWVsZC5nZXQobmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGVwb2NoICE9PSB1bmRlZmluZWQgJiYgZm9ybUNvcmUuaXNWYWxpZGF0aW9uUnVuQ3VycmVudChuYW1lLCBlcG9jaCkpIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0Y29tZXMucHVzaCh7IG5hbWUsIGVycm9yLCB3YXJuaW5nIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGRFcnJvcnNbbmFtZV0gPSBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgY29uc3QgY2xlYXJGbGFncyA9IGZsYWdnZWQuZmlsdGVyKChuYW1lKSA9PiBsYXN0QXN5bmNFcG9jaFJlZi5jdXJyZW50W25hbWVdID09PSBlcG9jaEJ5RmllbGQuZ2V0KG5hbWUpKTtcbiAgICAgICAgICAgIGNvbW1pdFJ1bGVPdXRjb21lcyhvdXRjb21lcywgY2xlYXJGbGFncyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGZpZWxkRXJyb3JzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRm9ybVZhbGlkYXRpb25FcnJvcihmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpLCBmaWVsZEVycm9ycyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5hbWVMaXN0KSB7XG4gICAgICAgICAgICByZXR1cm4gbmFtZUxpc3QucmVkdWNlKChhY2MsIG5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBhY2NbbmFtZV0gPSByZXNvbHZlVmFsdWUoZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKSwgbmFtZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sIHt9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKTtcbiAgICB9KSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gZGVmaW5lRmllbGQg4oCTIHVzZWQgYnkgc3RhbmRhbG9uZSAobm9uLVByb0Zvcm0pIGNvbnN1bWVyc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGRlZmluZUZpZWxkID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgZmllbGRPcHRpb25zID0ge30pID0+IHtcbiAgICAgICAgY29uc3QgeyBydWxlcyA9IFtdIH0gPSBmaWVsZE9wdGlvbnM7XG4gICAgICAgIGNvbnN0IEZpZWxkQ29tcG9uZW50ID0gbWVtbygoX2EpID0+IHtcbiAgICAgICAgICAgIHZhciB7IGNoaWxkcmVuLCByZW5kZXIgfSA9IF9hLCBwcm9wcyA9IF9fcmVzdChfYSwgW1wiY2hpbGRyZW5cIiwgXCJyZW5kZXJcIl0pO1xuICAgICAgICAgICAgLy8gUGVyLWZpZWxkIHN0b3JlIHN1YnNjcmlwdGlvbjogdGhpcyBmaWVsZCByZS1yZW5kZXJzIG9ubHkgd2hlbiBpdHNcbiAgICAgICAgICAgIC8vIG93biB2YWx1ZS9lcnJvci90b3VjaGVkL3ZhbGlkYXRpbmcgc2xpY2UgY2hhbmdlcy4gRG90LXBhdGhzXG4gICAgICAgICAgICAvLyByZXNvbHZlIGludG8gdGhlIG5lc3RlZCB2YWx1ZXMgbGlrZSBldmVyeXdoZXJlIGVsc2UuXG4gICAgICAgICAgICBjb25zdCBbZmllbGRWYWx1ZSwgZmllbGRFcnJvciwgZmllbGRUb3VjaGVkLCBmaWVsZFZhbGlkYXRpbmddID0gdXNlU3RvcmVTZWxlY3RvcihzdG9yZSwgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIChfYSA9IHJlc29sdmVWYWx1ZShzdGF0ZS52YWx1ZXMsIG5hbWUpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuZXJyb3JzW25hbWVdLFxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS50b3VjaGVkW25hbWVdLFxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS52YWxpZGF0aW5nW25hbWVdLFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9LCBzaGFsbG93RXF1YWxBcnJheXMpO1xuICAgICAgICAgICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBNb3VudC1jb3VudGVkOiByZWxlYXNlRmllbGQgcmVtb3ZlcyB0aGUgcnVsZXMgb25seSB3aGVuIHRoZVxuICAgICAgICAgICAgICAgIC8vIExBU1Qgc2FtZS1uYW1lIGluc3RhbmNlIHVubW91bnRzIOKAlCBhbiBpbnN0YW5jZSB0aGF0IHBpZ2d5YmFja2VkXG4gICAgICAgICAgICAgICAgLy8gb24gYW4gZXhpc3RpbmcgcmVnaXN0cmF0aW9uIChlLmcuIGEgUHJvRm9ybS5JdGVtJ3MpIGNhbiBuZXZlclxuICAgICAgICAgICAgICAgIC8vIHdpcGUgaXQgb24gaXRzIG93biB1bm1vdW50LlxuICAgICAgICAgICAgICAgIGZvcm1Db3JlLnJldGFpbkZpZWxkKG5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nUnVsZXMgPSBmb3JtQ29yZS5nZXRGaWVsZFJ1bGVzKG5hbWUpO1xuICAgICAgICAgICAgICAgIGlmICghZXhpc3RpbmdSdWxlcyAmJiBydWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db3JlLnJlZ2lzdGVyRmllbGQobmFtZSwgcnVsZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBmb3JtQ29yZS5yZWxlYXNlRmllbGQobmFtZSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sIFtdKTsgLy8gT25seSByZWdpc3RlciBvbiBtb3VudFxuICAgICAgICAgICAgY29uc3QgaGFuZGxlRmllbGRDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGZvcm1Db3JlLnNldEZpZWxkVmFsdWUobmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIC8vIFRvdWNoZWQgaXMgc2V0IGJ5IHRoZSB1c2VyIGNoYW5nZSB0cmlnZ2VyIChtYXRjaGluZyB0aGVcbiAgICAgICAgICAgICAgICAvLyBQcm9Gb3JtLkl0ZW0gcGF0aCkg4oCUIHByb2dyYW1tYXRpYyBzZXRGaWVsZHNWYWx1ZSBkb2VzIG5vdC5cbiAgICAgICAgICAgICAgICBjb25zdCB0b3VjaGVkID0gc3RvcmUuZ2V0U3RhdGUoKS50b3VjaGVkO1xuICAgICAgICAgICAgICAgIGlmICghdG91Y2hlZFtuYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHRvdWNoZWQ6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdG91Y2hlZCksIHsgW25hbWVdOiB0cnVlIH0pIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBhcHBsaWNhYmxlID0gZmlsdGVyUnVsZXNCeVRyaWdnZXIocmVzb2x2ZVJ1bGVzKHJ1bGVzLCBmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpLCBmb3JtQ29yZS5nZXRSdWxlQ29udGV4dEluc3RhbmNlKCkpLCAnb25DaGFuZ2UnLCBub3JtYWxpemVUcmlnZ2VycyhmaWVsZE9wdGlvbnMudmFsaWRhdGVUcmlnZ2VyLCB2YWxpZGF0ZVRyaWdnZXIpLCBuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoYXBwbGljYWJsZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEFzeW5jIHBhdGggKG1hdGNoaW5nIFByb0Zvcm0uSXRlbSkgc28gYSBQcm9taXNlLXJldHVybmluZ1xuICAgICAgICAgICAgICAgICAgICAvLyB2YWxpZGF0b3IgaXMgaG9ub3JlZCBvbiBjaGFuZ2UgaW5zdGVhZCBvZiBiZWluZyBzaWxlbnRseVxuICAgICAgICAgICAgICAgICAgICAvLyBza2lwcGVkOyBmaXJlLWFuZC1mb3JnZXQg4oCUIHRoZSByZXN1bHQgbGFuZHMgb24gdGhlIHN0b3JlLlxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZUZpZWxkQXN5bmMobmFtZSwgdmFsdWUsIGFwcGxpY2FibGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZUZpZWxkQmx1cihuYW1lLCBmaWVsZE9wdGlvbnMudmFsaWRhdGVUcmlnZ2VyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgZmllbGRQcm9wcyA9IE9iamVjdC5hc3NpZ24oeyBuYW1lLCB2YWx1ZTogZmllbGRWYWx1ZSwgZXJyb3I6IGZpZWxkRXJyb3IsIHRvdWNoZWQ6IGZpZWxkVG91Y2hlZCwgdmFsaWRhdGluZzogZmllbGRWYWxpZGF0aW5nLCBvbkNoYW5nZTogaGFuZGxlRmllbGRDaGFuZ2UsIG9uQmx1cjogaGFuZGxlQmx1ciB9LCBwcm9wcyk7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVNZXJnZUNoYW5nZSA9IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZSAmJiB0eXBlb2YgZSA9PT0gJ29iamVjdCcgJiYgJ3RhcmdldCcgaW4gZVxuICAgICAgICAgICAgICAgICAgICA/IGUudGFyZ2V0LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIDogZTtcbiAgICAgICAgICAgICAgICBoYW5kbGVGaWVsZENoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSAmJlxuICAgICAgICAgICAgICAgICAgICAoKF9hID0gY2hpbGRyZW4ucHJvcHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vbkNoYW5nZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVNZXJnZUJsdXIgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGhhbmRsZUJsdXIoKTtcbiAgICAgICAgICAgICAgICBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pICYmXG4gICAgICAgICAgICAgICAgICAgICgoX2EgPSBjaGlsZHJlbi5wcm9wcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9uQmx1cikpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHJvcHMub25CbHVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChyZW5kZXIgJiYgdHlwZW9mIHJlbmRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXIoZmllbGRQcm9wcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuKGZpZWxkUHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRWxlbWVudCBjaGlsZHJlbiByZWNlaXZlIG9ubHkgRE9NLXNhZmUgcHJvcHMg4oCUIGVycm9yL3RvdWNoZWQvXG4gICAgICAgICAgICAvLyB2YWxpZGF0aW5nIGFyZSBmaWVsZCBNRVRBLCBub3QgY29udHJvbCBwcm9wczsgc3ByZWFkaW5nIHRoZW0gb250b1xuICAgICAgICAgICAgLy8gYSBob3N0IGVsZW1lbnQgd291bGQgbGVhayBhbnkgYXR0cmlidXRlcy4gUmVuZGVyLXByb3AgYW5kXG4gICAgICAgICAgICAvLyBmdW5jdGlvbiBjaGlsZHJlbiBrZWVwIHRoZSBmdWxsIGZpZWxkUHJvcHMuXG4gICAgICAgICAgICBjb25zdCBkb21TYWZlUHJvcHMgPSBPYmplY3QuYXNzaWduKHsgbmFtZSwgdmFsdWU6IGZpZWxkVmFsdWUsIG9uQ2hhbmdlOiBoYW5kbGVNZXJnZUNoYW5nZSwgb25CbHVyOiBoYW5kbGVNZXJnZUJsdXIgfSwgcHJvcHMpO1xuICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIGRvbVNhZmVQcm9wcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChGcmFnbWVudCwgbnVsbCwgLi4uY2hpbGRyZW4ubWFwKChjaGlsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBkb21TYWZlUHJvcHMpLCB7IGtleTogY2hpbGQua2V5IHx8IGluZGV4IH0pKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pO1xuICAgICAgICBGaWVsZENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IGBGaWVsZCgke25hbWV9KWA7XG4gICAgICAgIHJldHVybiBGaWVsZENvbXBvbmVudDtcbiAgICB9KTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBoYW5kbGVTdWJtaXQgLyBoYW5kbGVSZXNldCDigJMgZm9yIDxmb3JtPiBldmVudCBoYW5kbGVyc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlZFZhbHVlcyA9IHlpZWxkIHZhbGlkYXRlRmllbGRzQXN5bmMoKTtcbiAgICAgICAgICAgIG9uRmluaXNoID09PSBudWxsIHx8IG9uRmluaXNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaCh2YWxpZGF0ZWRWYWx1ZXMpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8vIE9ubHkgYSBWQUxJREFUSU9OIGZhaWx1cmUgcmVhY2hlcyBvbkZpbmlzaEZhaWxlZCDigJQgYW4gZXhjZXB0aW9uIG91dFxuICAgICAgICAgICAgLy8gb2YgdGhlIGNvbnN1bWVyJ3Mgb3duIG9uRmluaXNoIGlzIG5vdCBhIHZhbGlkYXRpb24gcmVzdWx0IGFuZCBpc1xuICAgICAgICAgICAgLy8gc3VyZmFjZWQgaW5zdGVhZCBvZiBiZWluZyBtaXNyZXBvcnRlZC5cbiAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBGb3JtVmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgb25GaW5pc2hGYWlsZWQgPT09IG51bGwgfHwgb25GaW5pc2hGYWlsZWQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoRmFpbGVkKHsgdmFsdWVzOiBlcnIudmFsdWVzLCBlcnJvcnM6IGVyci5lcnJvcnMgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbUHJvRm9ybV0gb25GaW5pc2ggdGhyZXcgZHVyaW5nIHN1Ym1pdDonLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSkpO1xuICAgIGNvbnN0IGhhbmRsZVJlc2V0ID0gdXNlRXZlbnRDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICBlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZm9ybUNvcmUucmVzZXRGaWVsZHMoKTtcbiAgICAgICAgb25SZXNldCA9PT0gbnVsbCB8fCBvblJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblJlc2V0KCk7XG4gICAgfSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gRm9ybUluc3RhbmNlIOKAkyBlbmhhbmNlZCBBUEkgZm9yIGNvbnN1bWVycy5cbiAgICAvL1xuICAgIC8vIEV2ZXJ5IG1ldGhvZCBpcyB3cmFwcGVkIGluIHVzZU1lbW9pemVkRm4gKHN0YWJsZSBpZGVudGl0eSwgYWx3YXlzIHJlYWRzIHRoZVxuICAgIC8vIGxhdGVzdCBzdG9yZSBzdGF0ZSkgc28gdGhlIGluc3RhbmNlIG9iamVjdCBpdHNlbGYgaXMgSURFTlRJVFktU1RBQkxFIGZvclxuICAgIC8vIHRoZSBsaWZldGltZSBvZiB0aGUgZm9ybSDigJQgdGhpcyBpcyB3aGF0IGxldHMgUHJvRm9ybSBwdWJsaXNoIGl0IHRocm91Z2ggdGhlXG4gICAgLy8gc3RhYmxlIGNvbnRleHQgd2l0aG91dCByZS1yZW5kZXJpbmcgc3Vic2NyaWJlcnMgb24gZWFjaCBrZXlzdHJva2UuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgZ2V0RmllbGRFcnJvciA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHN0b3JlLmdldFN0YXRlKCkuZXJyb3JzW25hbWVdKTtcbiAgICBjb25zdCBnZXRGaWVsZFdhcm5pbmcgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiBzdG9yZS5nZXRTdGF0ZSgpLndhcm5pbmdzW25hbWVdKTtcbiAgICBjb25zdCBnZXRGaWVsZHNFcnJvciA9IHVzZU1lbW9pemVkRm4oKG5hbWVMaXN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IHN0b3JlLmdldFN0YXRlKCkuZXJyb3JzO1xuICAgICAgICBpZiAoIW5hbWVMaXN0KVxuICAgICAgICAgICAgcmV0dXJuIGVycm9ycztcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIG5hbWVMaXN0LmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvcnNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbbmFtZV0gPSBlcnJvcnNbbmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuICAgIGNvbnN0IGlzRmllbGRUb3VjaGVkID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4gc3RvcmUuZ2V0U3RhdGUoKS50b3VjaGVkW25hbWVdIHx8IGZhbHNlKTtcbiAgICBjb25zdCBpc0ZpZWxkc1RvdWNoZWQgPSB1c2VNZW1vaXplZEZuKChuYW1lTGlzdCwgYWxsRmllbGRzVG91Y2hlZCA9IGZhbHNlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdWNoZWQgPSBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWQ7XG4gICAgICAgIGlmICghbmFtZUxpc3QpIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0b3VjaGVkKS5zb21lKChrZXkpID0+IHRvdWNoZWRba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFsbEZpZWxkc1RvdWNoZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBuYW1lTGlzdC5ldmVyeSgobmFtZSkgPT4gdG91Y2hlZFtuYW1lXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5hbWVMaXN0LnNvbWUoKG5hbWUpID0+IHRvdWNoZWRbbmFtZV0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGlzRmllbGRWYWxpZGF0aW5nID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4gc3RvcmUuZ2V0U3RhdGUoKS52YWxpZGF0aW5nW25hbWVdIHx8IGZhbHNlKTtcbiAgICBjb25zdCBzZXRGaWVsZHNFcnJvciA9IHVzZU1lbW9pemVkRm4oKGZpZWxkc0Vycm9yKSA9PiB7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGZpZWxkc0Vycm9yKS5mb3JFYWNoKChbbmFtZSwgZXJyb3JdKSA9PiB7XG4gICAgICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZEVycm9yKG5hbWUsIGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmllbGRUb3VjaGVkID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgaXNUb3VjaGVkID0gdHJ1ZSkgPT4ge1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHRvdWNoZWQ6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3RvcmUuZ2V0U3RhdGUoKS50b3VjaGVkKSwgeyBbbmFtZV06IGlzVG91Y2hlZCB9KSB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBzZXRGaWVsZHNUb3VjaGVkID0gdXNlTWVtb2l6ZWRGbigoZmllbGRzVG91Y2gpID0+IHtcbiAgICAgICAgc3RvcmUuc2V0U3RhdGUoeyB0b3VjaGVkOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHN0b3JlLmdldFN0YXRlKCkudG91Y2hlZCksIGZpZWxkc1RvdWNoKSB9KTtcbiAgICB9KTtcbiAgICBjb25zdCByZXNldEZvcm1GaWVsZHMgPSB1c2VNZW1vaXplZEZuKChmaWVsZHMpID0+IHtcbiAgICAgICAgaWYgKCFmaWVsZHMpIHtcbiAgICAgICAgICAgIGZvcm1Db3JlLnJlc2V0RmllbGRzKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gTW91bnQtZnJvemVuIGluaXRpYWxWYWx1ZXMg4oCUIGNvbnNpc3RlbnQgd2l0aCB0aGUgZnVsbCByZXNldEZpZWxkcy5cbiAgICAgICAgLy8gUmVhZHMgQU5EIHdyaXRlcyBhcmUgbmVzdGVkLXBhdGggYXdhcmUsIHNvIGRvdC1wYXRoIG5hbWVzXG4gICAgICAgIC8vIChgYWRkcmVzcy5jaXR5YCwgYGl0ZW1zLjAudGl0bGVgKSByZXNldCBjb3JyZWN0bHkgaW5zdGVhZCBvZiBwcm9iaW5nIGFcbiAgICAgICAgLy8gbGl0ZXJhbCBrZXkgYW5kIHNoYWxsb3ctbWVyZ2luZyBvbmUgYmFjay5cbiAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IGZvcm1Db3JlLmdldEluaXRpYWxWYWx1ZXMoKTtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICAgICAgICBsZXQgbmV3VmFsdWVzID0gc3RhdGUudmFsdWVzO1xuICAgICAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluaXRpYWwgPSByZXNvbHZlVmFsdWUoaW5pdGlhbFZhbHVlcywgZmllbGQpO1xuICAgICAgICAgICAgbmV3VmFsdWVzID0gZmllbGQuaW5jbHVkZXMoJy4nKVxuICAgICAgICAgICAgICAgID8gc2V0TmVzdGVkVmFsdWUobmV3VmFsdWVzLCBmaWVsZCwgaW5pdGlhbClcbiAgICAgICAgICAgICAgICA6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgbmV3VmFsdWVzKSwgeyBbZmllbGRdOiBpbml0aWFsIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gTGlrZSB0aGUgZnVsbCByZXNldDogY2xlYXIgQUxMIHBlci1maWVsZCBtZXRhIChlcnJvcnMgQU5EIHdhcm5pbmdzIEFORFxuICAgICAgICAvLyB0b3VjaGVkL3ZhbGlkYXRpbmcpLCBpbnZhbGlkYXRlIGluLWZsaWdodCB2YWxpZGF0aW9uIHJ1bnMsIGFuZCBsYW5kXG4gICAgICAgIC8vIGV2ZXJ5dGhpbmcgaW4gT05FIGNvbW1pdC4gTm8gb25WYWx1ZXNDaGFuZ2Ug4oCUIHJlc2V0IGlzIG5vdCBhIGNoYW5nZVxuICAgICAgICAvLyBldmVudCBvbiBlaXRoZXIgcGF0aC5cbiAgICAgICAgZm9ybUNvcmUuaW52YWxpZGF0ZVZhbGlkYXRpb25SdW5zKGZpZWxkcyk7XG4gICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmVycm9ycyk7XG4gICAgICAgIGNvbnN0IG5ld1dhcm5pbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUud2FybmluZ3MpO1xuICAgICAgICBjb25zdCBuZXdUb3VjaGVkID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUudG91Y2hlZCk7XG4gICAgICAgIGNvbnN0IG5ld1ZhbGlkYXRpbmcgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS52YWxpZGF0aW5nKTtcbiAgICAgICAgZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBkZWxldGUgbmV3RXJyb3JzW2ZpZWxkXTtcbiAgICAgICAgICAgIGRlbGV0ZSBuZXdXYXJuaW5nc1tmaWVsZF07XG4gICAgICAgICAgICBkZWxldGUgbmV3VG91Y2hlZFtmaWVsZF07XG4gICAgICAgICAgICBkZWxldGUgbmV3VmFsaWRhdGluZ1tmaWVsZF07XG4gICAgICAgIH0pO1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICB2YWx1ZXM6IG5ld1ZhbHVlcyxcbiAgICAgICAgICAgIGVycm9yczogbmV3RXJyb3JzLFxuICAgICAgICAgICAgd2FybmluZ3M6IG5ld1dhcm5pbmdzLFxuICAgICAgICAgICAgdG91Y2hlZDogbmV3VG91Y2hlZCxcbiAgICAgICAgICAgIHZhbGlkYXRpbmc6IG5ld1ZhbGlkYXRpbmcsXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHN1Ym1pdFdpdGhWYWxpZGF0aW9uID0gdXNlTWVtb2l6ZWRGbigoY2FsbGJhY2spID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBsZXQgdmFsaWRhdGVkVmFsdWVzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFsaWRhdGVkVmFsdWVzID0geWllbGQgdmFsaWRhdGVGaWVsZHNBc3luYygpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfYSkge1xuICAgICAgICAgICAgLy8gVmFsaWRhdGlvbiBmYWlsdXJlIOKAlCB0aGUgZmllbGQgZXJyb3JzIGFyZSBhbHJlYWR5IGluIHRoZSBzdG9yZS5cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHlpZWxkIGNhbGxiYWNrKHZhbGlkYXRlZFZhbHVlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gQSB0aHJvd2luZyBjYWxsYmFjayBpcyBhIGNvbnN1bWVyIGJ1Zywgbm90IGEgdmFsaWRhdGlvbiBmYWlsdXJlIOKAlFxuICAgICAgICAgICAgICAgIC8vIHN1cmZhY2UgaXQgKG1pcnJvcmluZyByYy1maWVsZC1mb3JtJ3Mgb25GaW5pc2ggaGFuZGxpbmcpIGluc3RlYWRcbiAgICAgICAgICAgICAgICAvLyBvZiBzd2FsbG93aW5nIGl0IHNpbGVudGx5LlxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tQcm9Gb3JtXSBzdWJtaXQgY2FsbGJhY2sgdGhyZXc6JywgZXJyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZWRWYWx1ZXM7XG4gICAgfSkpO1xuICAgIGNvbnN0IGZvcm1JbnN0YW5jZSA9IHVzZU1lbW8oKCkgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZm9ybUNvcmUuZm9ybUluc3RhbmNlKSwgeyBnZXRGaWVsZFZhbHVlOiBmb3JtQ29yZS5nZXRGaWVsZFZhbHVlLCBnZXRGaWVsZHNWYWx1ZTogZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUsIHZhbGlkYXRlRmllbGRzOiB2YWxpZGF0ZUZpZWxkc0FzeW5jLCBzZXRGaWVsZFZhbHVlOiBmb3JtQ29yZS5zZXRGaWVsZFZhbHVlLCBzZXRGaWVsZHNWYWx1ZTogZm9ybUNvcmUuc2V0RmllbGRzVmFsdWUsIGdldEZpZWxkRXJyb3I6IGdldEZpZWxkRXJyb3IsIGdldEZpZWxkV2FybmluZzogZ2V0RmllbGRXYXJuaW5nLCBnZXRGaWVsZHNFcnJvcjogZ2V0RmllbGRzRXJyb3IsIGlzRmllbGRUb3VjaGVkOiBpc0ZpZWxkVG91Y2hlZCwgaXNGaWVsZHNUb3VjaGVkOiBpc0ZpZWxkc1RvdWNoZWQsIGlzRmllbGRWYWxpZGF0aW5nOiBpc0ZpZWxkVmFsaWRhdGluZywgc2V0RmllbGRFcnJvcjogZm9ybUNvcmUuc2V0RmllbGRFcnJvciwgc2V0RmllbGRzRXJyb3IsIHNldEZpZWxkVG91Y2hlZDogc2V0RmllbGRUb3VjaGVkLCBzZXRGaWVsZHNUb3VjaGVkLCByZXNldEZpZWxkczogcmVzZXRGb3JtRmllbGRzLCBzdWJtaXQ6IHN1Ym1pdFdpdGhWYWxpZGF0aW9uLCBkZWZpbmVGaWVsZCwgcmVnaXN0ZXJGaWVsZDogZm9ybUNvcmUucmVnaXN0ZXJGaWVsZCwgdW5yZWdpc3RlckZpZWxkOiBmb3JtQ29yZS51bnJlZ2lzdGVyRmllbGQgfSkpLCBbXG4gICAgICAgIGZvcm1Db3JlLmZvcm1JbnN0YW5jZSxcbiAgICAgICAgZm9ybUNvcmUuZ2V0RmllbGRWYWx1ZSxcbiAgICAgICAgZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkVmFsdWUsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkc1ZhbHVlLFxuICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZEVycm9yLFxuICAgICAgICBmb3JtQ29yZS5yZWdpc3RlckZpZWxkLFxuICAgICAgICBmb3JtQ29yZS51bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHZhbGlkYXRlRmllbGRzQXN5bmMsXG4gICAgICAgIGdldEZpZWxkRXJyb3IsXG4gICAgICAgIGdldEZpZWxkV2FybmluZyxcbiAgICAgICAgZ2V0RmllbGRzRXJyb3IsXG4gICAgICAgIGlzRmllbGRUb3VjaGVkLFxuICAgICAgICBpc0ZpZWxkc1RvdWNoZWQsXG4gICAgICAgIGlzRmllbGRWYWxpZGF0aW5nLFxuICAgICAgICBzZXRGaWVsZHNFcnJvcixcbiAgICAgICAgc2V0RmllbGRUb3VjaGVkLFxuICAgICAgICBzZXRGaWVsZHNUb3VjaGVkLFxuICAgICAgICByZXNldEZvcm1GaWVsZHMsXG4gICAgICAgIHN1Ym1pdFdpdGhWYWxpZGF0aW9uLFxuICAgICAgICBkZWZpbmVGaWVsZCxcbiAgICBdKTtcbiAgICAvLyBGdW5jdGlvbi1mb3JtIHJ1bGVzIGdldCB0aGUgRlVMTCBmb3JtIGluc3RhbmNlIChlcnJvciBnZXR0ZXJzLCB0b3VjaGVkXG4gICAgLy8gc3RhdGUsIG11dGF0b3JzKSBpbnN0ZWFkIG9mIHRoZSBiYXJlIGNvcmUgbWV0aG9kcy4gUmVmIHdyaXRlIOKAlCBjaGVhcCBhbmRcbiAgICAvLyBpZGVtcG90ZW50IHBlciByZW5kZXIuXG4gICAgZm9ybUNvcmUuc2V0UnVsZUNvbnRleHRJbnN0YW5jZShmb3JtSW5zdGFuY2UpO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEludGVybmFscyDigJMgZXhwb3NlZCBmb3IgUHJvRm9ybSBpbnRlZ3JhdGlvbi4gRGF0YSBmaWVsZHMgYXJlIEdFVFRFUlMgdGhhdFxuICAgIC8vIHJlYWQgdGhlIGxpdmUgc3RvcmUsIHNvIHRoZSBvYmplY3QgaXMgaWRlbnRpdHktc3RhYmxlIHlldCBuZXZlciBzdGFsZS5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBpbnRlcm5hbHMgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgICAgIGdldCB2YWx1ZXMoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuZ2V0U3RhdGUoKS52YWx1ZXM7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBlcnJvcnMoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuZ2V0U3RhdGUoKS5lcnJvcnM7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB3YXJuaW5ncygpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5nZXRTdGF0ZSgpLndhcm5pbmdzO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgdG91Y2hlZCgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWQ7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB2YWxpZGF0aW5nKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmdldFN0YXRlKCkudmFsaWRhdGluZztcbiAgICAgICAgfSxcbiAgICAgICAgZmllbGRSdWxlczogZm9ybUNvcmUuZmllbGRSdWxlcyxcbiAgICAgICAgc2V0RmllbGRWYWx1ZTogZm9ybUNvcmUuc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRFcnJvcjogZm9ybUNvcmUuc2V0RmllbGRFcnJvcixcbiAgICAgICAgc2V0RmllbGRXYXJuaW5nOiBmb3JtQ29yZS5zZXRGaWVsZFdhcm5pbmcsXG4gICAgICAgIHZhbGlkYXRlRmllbGRBc3luYyxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZDogZm9ybUNvcmUucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdW5yZWdpc3RlckZpZWxkOiBmb3JtQ29yZS51bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHJldGFpbkZpZWxkOiBmb3JtQ29yZS5yZXRhaW5GaWVsZCxcbiAgICAgICAgcmVsZWFzZUZpZWxkOiBmb3JtQ29yZS5yZWxlYXNlRmllbGQsXG4gICAgICAgIGhhbmRsZVN1Ym1pdCxcbiAgICAgICAgaGFuZGxlUmVzZXQsXG4gICAgfSksIFtcbiAgICAgICAgc3RvcmUsXG4gICAgICAgIGZvcm1Db3JlLmZpZWxkUnVsZXMsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkVmFsdWUsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkRXJyb3IsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkV2FybmluZyxcbiAgICAgICAgdmFsaWRhdGVGaWVsZEFzeW5jLFxuICAgICAgICBmb3JtQ29yZS5yZWdpc3RlckZpZWxkLFxuICAgICAgICBmb3JtQ29yZS51bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIGZvcm1Db3JlLnJldGFpbkZpZWxkLFxuICAgICAgICBmb3JtQ29yZS5yZWxlYXNlRmllbGQsXG4gICAgICAgIGhhbmRsZVN1Ym1pdCxcbiAgICAgICAgaGFuZGxlUmVzZXQsXG4gICAgXSk7XG4gICAgcmV0dXJuIHsgZm9ybUluc3RhbmNlLCBpbnRlcm5hbHMsIHN0b3JlIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgdXNlRm9ybTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=