@payloadcms/ui 3.0.0-alpha.14 → 3.0.0-alpha.16

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 (409) hide show
  1. package/dist/@types/assets.d.js +0 -1
  2. package/dist/config.js +2 -12
  3. package/dist/elements/ArrayAction/index.js +25 -81
  4. package/dist/elements/ArrayAction/types.js +2 -5
  5. package/dist/elements/Autosave/index.js +37 -92
  6. package/dist/elements/Autosave/types.js +2 -5
  7. package/dist/elements/Banner/index.js +10 -34
  8. package/dist/elements/Banner/types.js +2 -5
  9. package/dist/elements/Button/index.js +30 -89
  10. package/dist/elements/Button/types.js +2 -5
  11. package/dist/elements/Card/index.js +9 -24
  12. package/dist/elements/Card/types.js +2 -5
  13. package/dist/elements/CodeEditor/CodeEditor.js +10 -25
  14. package/dist/elements/CodeEditor/index.js +8 -59
  15. package/dist/elements/CodeEditor/types.js +2 -5
  16. package/dist/elements/Collapsible/index.js +26 -82
  17. package/dist/elements/Collapsible/provider.js +7 -66
  18. package/dist/elements/Collapsible/types.js +2 -5
  19. package/dist/elements/ColumnSelector/index.js +20 -76
  20. package/dist/elements/ColumnSelector/types.js +2 -5
  21. package/dist/elements/CopyToClipboard/index.js +14 -65
  22. package/dist/elements/CopyToClipboard/types.js +2 -5
  23. package/dist/elements/DatePicker/DatePicker.js +19 -75
  24. package/dist/elements/DatePicker/index.js +8 -59
  25. package/dist/elements/DatePicker/types.js +2 -5
  26. package/dist/elements/DeleteDocument/index.js +36 -86
  27. package/dist/elements/DeleteDocument/types.js +2 -5
  28. package/dist/elements/DeleteMany/index.js +38 -102
  29. package/dist/elements/DeleteMany/types.js +2 -5
  30. package/dist/elements/DocumentControls/index.js +46 -102
  31. package/dist/elements/DocumentDrawer/DrawerContent.js +62 -114
  32. package/dist/elements/DocumentDrawer/index.js +33 -98
  33. package/dist/elements/DocumentDrawer/types.js +2 -5
  34. package/dist/elements/DocumentFields/index.js +16 -31
  35. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js +4 -14
  36. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +9 -24
  37. package/dist/elements/DocumentHeader/Tabs/Tab/index.js +9 -68
  38. package/dist/elements/DocumentHeader/Tabs/getCustomViews.js +5 -15
  39. package/dist/elements/DocumentHeader/Tabs/getViewConfig.js +2 -12
  40. package/dist/elements/DocumentHeader/Tabs/index.js +18 -33
  41. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +8 -23
  42. package/dist/elements/DocumentHeader/Tabs/tabs/index.js +5 -23
  43. package/dist/elements/DocumentHeader/index.js +10 -66
  44. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js +7 -66
  45. package/dist/elements/DraggableSortable/DraggableSortableItem/types.js +2 -5
  46. package/dist/elements/DraggableSortable/index.js +15 -66
  47. package/dist/elements/DraggableSortable/types.js +2 -5
  48. package/dist/elements/DraggableSortable/useDraggableSortable/index.js +4 -14
  49. package/dist/elements/DraggableSortable/useDraggableSortable/types.js +2 -5
  50. package/dist/elements/Drawer/index.js +32 -94
  51. package/dist/elements/Drawer/types.js +2 -5
  52. package/dist/elements/Drawer/useDrawerSlug.js +8 -18
  53. package/dist/elements/Dropzone/index.js +20 -35
  54. package/dist/elements/DuplicateDocument/index.js +33 -83
  55. package/dist/elements/DuplicateDocument/types.js +2 -5
  56. package/dist/elements/EditMany/index.js +72 -128
  57. package/dist/elements/EditMany/types.js +2 -5
  58. package/dist/elements/EditUpload/index.js +66 -122
  59. package/dist/elements/ErrorPill/index.js +7 -22
  60. package/dist/elements/ErrorPill/types.js +2 -5
  61. package/dist/elements/FieldSelect/index.js +23 -79
  62. package/dist/elements/FileDetails/FileMeta/index.js +19 -75
  63. package/dist/elements/FileDetails/FileMeta/types.js +2 -5
  64. package/dist/elements/FileDetails/index.js +15 -30
  65. package/dist/elements/FileDetails/types.js +2 -5
  66. package/dist/elements/GenerateConfirmation/index.js +22 -37
  67. package/dist/elements/GenerateConfirmation/types.js +2 -5
  68. package/dist/elements/GetFilterOptions/index.js +18 -33
  69. package/dist/elements/Gutter/index.js +5 -56
  70. package/dist/elements/Hamburger/index.js +18 -33
  71. package/dist/elements/Header/index.js +39 -95
  72. package/dist/elements/HydrateClientUser/index.js +6 -16
  73. package/dist/elements/IDLabel/index.js +5 -20
  74. package/dist/elements/ListControls/getTextFieldsToBeSearched.js +6 -16
  75. package/dist/elements/ListControls/index.js +52 -104
  76. package/dist/elements/ListControls/types.js +2 -5
  77. package/dist/elements/ListDrawer/DrawerContent.js +72 -128
  78. package/dist/elements/ListDrawer/index.js +32 -100
  79. package/dist/elements/ListDrawer/types.js +2 -5
  80. package/dist/elements/ListSelection/index.js +11 -62
  81. package/dist/elements/Loading/index.js +25 -51
  82. package/dist/elements/LoadingOverlay/index.js +17 -79
  83. package/dist/elements/LoadingOverlay/reducer.js +3 -21
  84. package/dist/elements/LoadingOverlay/types.js +2 -5
  85. package/dist/elements/Localizer/LocalizerLabel/index.js +15 -30
  86. package/dist/elements/Localizer/index.js +24 -80
  87. package/dist/elements/Logout/index.js +13 -28
  88. package/dist/elements/Nav/NavHamburger/index.js +8 -23
  89. package/dist/elements/Nav/NavToggler/index.js +13 -28
  90. package/dist/elements/Nav/NavWrapper/index.js +8 -23
  91. package/dist/elements/Nav/context.js +20 -82
  92. package/dist/elements/Nav/index.js +36 -51
  93. package/dist/elements/NavGroup/index.js +21 -77
  94. package/dist/elements/Pagination/ClickableArrow/index.js +7 -22
  95. package/dist/elements/Pagination/ClickableArrow/types.js +2 -5
  96. package/dist/elements/Pagination/Page/index.js +4 -19
  97. package/dist/elements/Pagination/Page/types.js +2 -5
  98. package/dist/elements/Pagination/Separator/index.js +4 -19
  99. package/dist/elements/Pagination/index.js +20 -35
  100. package/dist/elements/Pagination/types.js +2 -5
  101. package/dist/elements/PerPage/index.js +28 -83
  102. package/dist/elements/Pill/index.js +16 -40
  103. package/dist/elements/Pill/types.js +2 -5
  104. package/dist/elements/Popup/PopupButtonList/index.js +10 -75
  105. package/dist/elements/Popup/PopupTrigger/index.js +6 -21
  106. package/dist/elements/Popup/PopupTrigger/types.js +2 -5
  107. package/dist/elements/Popup/index.js +29 -80
  108. package/dist/elements/Popup/types.js +2 -5
  109. package/dist/elements/PreviewButton/index.js +22 -73
  110. package/dist/elements/PreviewSizes/index.js +24 -80
  111. package/dist/elements/Publish/index.js +23 -79
  112. package/dist/elements/PublishMany/index.js +37 -93
  113. package/dist/elements/PublishMany/types.js +2 -5
  114. package/dist/elements/ReactSelect/ClearIndicator/index.js +7 -22
  115. package/dist/elements/ReactSelect/Control/index.js +5 -20
  116. package/dist/elements/ReactSelect/MultiValue/index.js +8 -23
  117. package/dist/elements/ReactSelect/MultiValueLabel/index.js +7 -22
  118. package/dist/elements/ReactSelect/MultiValueRemove/index.js +12 -27
  119. package/dist/elements/ReactSelect/SingleValue/index.js +5 -20
  120. package/dist/elements/ReactSelect/ValueContainer/index.js +7 -22
  121. package/dist/elements/ReactSelect/index.js +45 -60
  122. package/dist/elements/ReactSelect/types.js +2 -5
  123. package/dist/elements/RenderCustomComponent/index.js +5 -20
  124. package/dist/elements/RenderCustomComponent/types.js +2 -5
  125. package/dist/elements/RenderTitle/index.js +9 -24
  126. package/dist/elements/RenderTitle/types.js +2 -5
  127. package/dist/elements/Save/index.js +16 -72
  128. package/dist/elements/SaveDraft/index.js +24 -80
  129. package/dist/elements/SearchFilter/index.js +31 -86
  130. package/dist/elements/SearchFilter/types.js +2 -5
  131. package/dist/elements/SelectAll/index.js +13 -28
  132. package/dist/elements/SelectRow/index.js +10 -25
  133. package/dist/elements/ShimmerEffect/index.js +12 -71
  134. package/dist/elements/SortColumn/index.js +27 -90
  135. package/dist/elements/SortColumn/types.js +2 -5
  136. package/dist/elements/SortComplex/index.js +35 -90
  137. package/dist/elements/SortComplex/types.js +2 -5
  138. package/dist/elements/Status/index.js +38 -88
  139. package/dist/elements/StayLoggedIn/index.js +20 -34
  140. package/dist/elements/StayLoggedIn/types.js +2 -5
  141. package/dist/elements/StepNav/SetStepNav.js +6 -16
  142. package/dist/elements/StepNav/index.js +27 -93
  143. package/dist/elements/StepNav/types.js +2 -5
  144. package/dist/elements/Table/TableCellProvider/index.js +7 -30
  145. package/dist/elements/Table/index.js +15 -38
  146. package/dist/elements/Table/types.js +2 -5
  147. package/dist/elements/TableColumns/buildColumns.js +7 -22
  148. package/dist/elements/TableColumns/columnReducer.js +2 -12
  149. package/dist/elements/TableColumns/index.js +24 -86
  150. package/dist/elements/Thumbnail/index.js +12 -68
  151. package/dist/elements/Thumbnail/types.js +2 -5
  152. package/dist/elements/ThumbnailCard/index.js +13 -28
  153. package/dist/elements/ThumbnailCard/types.js +2 -5
  154. package/dist/elements/Tooltip/index.js +14 -65
  155. package/dist/elements/Tooltip/types.js +2 -5
  156. package/dist/elements/Translation/index.js +7 -58
  157. package/dist/elements/UnpublishMany/index.js +37 -93
  158. package/dist/elements/UnpublishMany/types.js +2 -5
  159. package/dist/elements/Upload/index.js +57 -127
  160. package/dist/elements/Upload/types.js +2 -5
  161. package/dist/elements/ViewDescription/index.js +12 -27
  162. package/dist/elements/ViewDescription/types.js +4 -19
  163. package/dist/elements/WhereBuilder/Condition/Date/index.js +6 -21
  164. package/dist/elements/WhereBuilder/Condition/Date/types.js +2 -5
  165. package/dist/elements/WhereBuilder/Condition/Number/index.js +7 -22
  166. package/dist/elements/WhereBuilder/Condition/Number/types.js +2 -5
  167. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +28 -84
  168. package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.js +5 -15
  169. package/dist/elements/WhereBuilder/Condition/Relationship/types.js +2 -5
  170. package/dist/elements/WhereBuilder/Condition/Select/index.js +15 -30
  171. package/dist/elements/WhereBuilder/Condition/Select/types.js +2 -5
  172. package/dist/elements/WhereBuilder/Condition/Text/index.js +7 -22
  173. package/dist/elements/WhereBuilder/Condition/Text/types.js +2 -5
  174. package/dist/elements/WhereBuilder/Condition/index.js +37 -93
  175. package/dist/elements/WhereBuilder/Condition/types.js +2 -5
  176. package/dist/elements/WhereBuilder/field-types.js +2 -12
  177. package/dist/elements/WhereBuilder/index.js +43 -98
  178. package/dist/elements/WhereBuilder/reducer.js +2 -12
  179. package/dist/elements/WhereBuilder/transformWhereQuery.js +6 -12
  180. package/dist/elements/WhereBuilder/types.js +2 -5
  181. package/dist/elements/WhereBuilder/validateWhereQuery.js +4 -14
  182. package/dist/exports/assets.js +3 -26
  183. package/dist/exports/elements.js +48 -249
  184. package/dist/exports/forms.js +38 -173
  185. package/dist/exports/graphics.js +3 -26
  186. package/dist/exports/hooks.js +10 -54
  187. package/dist/exports/icons.js +18 -81
  188. package/dist/exports/index.js +10 -27
  189. package/dist/exports/providers.js +24 -118
  190. package/dist/exports/templates.js +3 -21
  191. package/dist/exports/types.js +2 -5
  192. package/dist/exports/utilities.js +11 -61
  193. package/dist/forms/Error/index.js +11 -26
  194. package/dist/forms/FieldDescription/index.js +9 -24
  195. package/dist/forms/FieldDescription/types.js +2 -5
  196. package/dist/forms/FieldPathProvider/index.js +7 -30
  197. package/dist/forms/FieldPathProvider/types.js +2 -5
  198. package/dist/forms/Form/buildFieldSchemaMap.js +14 -14
  199. package/dist/forms/Form/buildInitialState.js +2 -12
  200. package/dist/forms/Form/context.js +17 -67
  201. package/dist/forms/Form/createNestedFieldPath.js +5 -15
  202. package/dist/forms/Form/errorMessages.js +2 -12
  203. package/dist/forms/Form/fieldReducer.js +25 -38
  204. package/dist/forms/Form/getDataByPath.js +4 -14
  205. package/dist/forms/Form/getSiblingData.js +6 -21
  206. package/dist/forms/Form/index.js +84 -140
  207. package/dist/forms/Form/initContextState.js +2 -12
  208. package/dist/forms/Form/mergeServerFormState.js +4 -14
  209. package/dist/forms/Form/reduceFieldsToValues.js +4 -14
  210. package/dist/forms/Form/rows.js +3 -21
  211. package/dist/forms/Form/types.js +2 -5
  212. package/dist/forms/Label/index.js +9 -24
  213. package/dist/forms/NullifyField/index.js +15 -71
  214. package/dist/forms/RenderFields/RenderField.js +6 -21
  215. package/dist/forms/RenderFields/index.js +13 -28
  216. package/dist/forms/RenderFields/types.js +2 -5
  217. package/dist/forms/RowLabel/index.js +13 -28
  218. package/dist/forms/RowLabel/types.js +4 -19
  219. package/dist/forms/Submit/index.js +11 -62
  220. package/dist/forms/WatchChildErrors/buildPathSegments.js +2 -12
  221. package/dist/forms/WatchChildErrors/getFieldStateFromPaths.js +2 -12
  222. package/dist/forms/WatchChildErrors/getNestedFieldState.js +5 -14
  223. package/dist/forms/WatchChildErrors/index.js +11 -26
  224. package/dist/forms/fields/Array/ArrayRow.js +24 -39
  225. package/dist/forms/fields/Array/index.js +59 -115
  226. package/dist/forms/fields/Array/types.js +2 -5
  227. package/dist/forms/fields/Blocks/BlockRow.js +27 -42
  228. package/dist/forms/fields/Blocks/BlocksDrawer/BlockSearch/index.js +10 -25
  229. package/dist/forms/fields/Blocks/BlocksDrawer/index.js +29 -85
  230. package/dist/forms/fields/Blocks/BlocksDrawer/types.js +2 -5
  231. package/dist/forms/fields/Blocks/RowActions.js +12 -27
  232. package/dist/forms/fields/Blocks/SectionTitle/index.js +10 -25
  233. package/dist/forms/fields/Blocks/SectionTitle/types.js +2 -5
  234. package/dist/forms/fields/Blocks/index.js +64 -120
  235. package/dist/forms/fields/Blocks/types.js +2 -5
  236. package/dist/forms/fields/Checkbox/Input.js +11 -34
  237. package/dist/forms/fields/Checkbox/index.js +19 -75
  238. package/dist/forms/fields/Checkbox/types.js +2 -5
  239. package/dist/forms/fields/Code/index.js +15 -71
  240. package/dist/forms/fields/Code/types.js +2 -5
  241. package/dist/forms/fields/Collapsible/index.js +31 -87
  242. package/dist/forms/fields/Collapsible/types.js +2 -5
  243. package/dist/forms/fields/ConfirmPassword/index.js +19 -75
  244. package/dist/forms/fields/ConfirmPassword/types.js +2 -5
  245. package/dist/forms/fields/DateTime/index.js +18 -74
  246. package/dist/forms/fields/DateTime/types.js +2 -5
  247. package/dist/forms/fields/Email/index.js +19 -83
  248. package/dist/forms/fields/Email/types.js +2 -5
  249. package/dist/forms/fields/Group/index.js +32 -88
  250. package/dist/forms/fields/Group/provider.js +7 -69
  251. package/dist/forms/fields/Group/types.js +2 -5
  252. package/dist/forms/fields/HiddenInput/index.js +8 -64
  253. package/dist/forms/fields/HiddenInput/types.js +2 -5
  254. package/dist/forms/fields/JSON/index.js +20 -76
  255. package/dist/forms/fields/JSON/types.js +2 -5
  256. package/dist/forms/fields/Number/index.js +26 -82
  257. package/dist/forms/fields/Number/types.js +2 -5
  258. package/dist/forms/fields/Password/index.js +15 -79
  259. package/dist/forms/fields/Password/types.js +2 -5
  260. package/dist/forms/fields/Point/index.js +24 -80
  261. package/dist/forms/fields/Point/types.js +2 -5
  262. package/dist/forms/fields/RadioGroup/Radio/index.js +13 -28
  263. package/dist/forms/fields/RadioGroup/index.js +23 -79
  264. package/dist/forms/fields/RadioGroup/types.js +2 -5
  265. package/dist/forms/fields/Relationship/AddNew/index.js +43 -99
  266. package/dist/forms/fields/Relationship/AddNew/types.js +2 -5
  267. package/dist/forms/fields/Relationship/AddNew/useRelatedCollections.js +6 -16
  268. package/dist/forms/fields/Relationship/createRelationMap.js +2 -12
  269. package/dist/forms/fields/Relationship/findOptionsByValue.js +2 -12
  270. package/dist/forms/fields/Relationship/index.js +64 -120
  271. package/dist/forms/fields/Relationship/optionsReducer.js +7 -17
  272. package/dist/forms/fields/Relationship/select-components/MultiValueLabel/index.js +21 -72
  273. package/dist/forms/fields/Relationship/select-components/SingleValue/index.js +22 -73
  274. package/dist/forms/fields/Relationship/types.js +2 -5
  275. package/dist/forms/fields/RichText/index.js +2 -12
  276. package/dist/forms/fields/RichText/types.js +2 -5
  277. package/dist/forms/fields/Row/index.js +11 -26
  278. package/dist/forms/fields/Row/provider.js +7 -69
  279. package/dist/forms/fields/Row/types.js +2 -5
  280. package/dist/forms/fields/Select/index.js +24 -88
  281. package/dist/forms/fields/Select/types.js +2 -5
  282. package/dist/forms/fields/Tabs/Tab/index.js +13 -64
  283. package/dist/forms/fields/Tabs/index.js +35 -91
  284. package/dist/forms/fields/Tabs/provider.js +7 -69
  285. package/dist/forms/fields/Tabs/types.js +2 -5
  286. package/dist/forms/fields/Text/Input.js +14 -29
  287. package/dist/forms/fields/Text/index.js +23 -79
  288. package/dist/forms/fields/Text/types.js +2 -5
  289. package/dist/forms/fields/Textarea/Input.js +15 -30
  290. package/dist/forms/fields/Textarea/index.js +20 -76
  291. package/dist/forms/fields/Textarea/types.js +2 -5
  292. package/dist/forms/fields/UI/index.js +2 -12
  293. package/dist/forms/fields/Upload/Input.js +35 -91
  294. package/dist/forms/fields/Upload/index.js +14 -70
  295. package/dist/forms/fields/Upload/types.js +2 -5
  296. package/dist/forms/fields/getFilterOptionsQuery.js +2 -12
  297. package/dist/forms/fields/index.js +50 -65
  298. package/dist/forms/fields/shared.js +7 -21
  299. package/dist/forms/useField/index.js +25 -40
  300. package/dist/forms/useField/types.js +2 -5
  301. package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.js +21 -33
  302. package/dist/forms/utilities/buildStateFromSchema/buildStateFromSchema.spec.js +5 -14
  303. package/dist/forms/utilities/buildStateFromSchema/index.js +4 -14
  304. package/dist/forms/utilities/buildStateFromSchema/iterateFields.js +8 -16
  305. package/dist/forms/withCondition/WatchCondition.js +7 -57
  306. package/dist/forms/withCondition/index.js +8 -23
  307. package/dist/graphics/Account/Default/index.js +7 -22
  308. package/dist/graphics/Account/Gravatar/index.js +10 -25
  309. package/dist/graphics/Account/index.js +15 -30
  310. package/dist/graphics/DefaultBlockImage/index.js +11 -62
  311. package/dist/graphics/ExternalLink/index.js +5 -20
  312. package/dist/graphics/File/index.js +7 -22
  313. package/dist/graphics/Icon/index.js +13 -28
  314. package/dist/graphics/Logo/index.js +15 -30
  315. package/dist/graphics/Search/index.js +6 -21
  316. package/dist/hooks/useAdminThumbnail.js +5 -15
  317. package/dist/hooks/useDebounce.js +6 -16
  318. package/dist/hooks/useDebouncedCallback.js +10 -15
  319. package/dist/hooks/useDebouncedEffect.js +6 -16
  320. package/dist/hooks/useDelay.js +7 -58
  321. package/dist/hooks/useDelayedRender.js +11 -62
  322. package/dist/hooks/useHotkey.js +10 -20
  323. package/dist/hooks/useIntersect.js +7 -17
  324. package/dist/hooks/usePayloadAPI.js +17 -32
  325. package/dist/hooks/useResize.js +5 -15
  326. package/dist/hooks/useThrottledEffect.js +5 -15
  327. package/dist/hooks/useThumbnail.js +8 -18
  328. package/dist/hooks/useUseAsTitle.js +6 -16
  329. package/dist/icons/Calendar/index.js +8 -23
  330. package/dist/icons/Check/index.js +6 -21
  331. package/dist/icons/Chevron/index.js +5 -20
  332. package/dist/icons/CloseMenu/index.js +6 -21
  333. package/dist/icons/CodeBlock/index.js +5 -20
  334. package/dist/icons/Copy/index.js +6 -21
  335. package/dist/icons/DragHandle/index.js +10 -25
  336. package/dist/icons/Edit/index.js +7 -22
  337. package/dist/icons/Line/index.js +5 -20
  338. package/dist/icons/Link/index.js +6 -21
  339. package/dist/icons/LogOut/index.js +7 -22
  340. package/dist/icons/Menu/index.js +7 -22
  341. package/dist/icons/MinimizeMaximize/index.js +12 -63
  342. package/dist/icons/More/index.js +7 -22
  343. package/dist/icons/Plus/index.js +6 -21
  344. package/dist/icons/Search/index.js +6 -21
  345. package/dist/icons/Swap/index.js +8 -23
  346. package/dist/icons/X/index.js +6 -21
  347. package/dist/index.js +2 -19
  348. package/dist/providers/ActionsProvider/SetViewActions/index.js +6 -16
  349. package/dist/providers/ActionsProvider/index.js +11 -70
  350. package/dist/providers/Auth/HydrateClientUser/index.js +6 -16
  351. package/dist/providers/Auth/index.js +52 -116
  352. package/dist/providers/Auth/types.js +2 -5
  353. package/dist/providers/ClientFunction/index.js +14 -40
  354. package/dist/providers/ComponentMapProvider/index.js +9 -68
  355. package/dist/providers/Config/index.js +6 -65
  356. package/dist/providers/CustomProvider/index.js +9 -24
  357. package/dist/providers/DocumentEvents/index.js +7 -66
  358. package/dist/providers/DocumentEvents/types.js +2 -5
  359. package/dist/providers/DocumentInfo/SetDocumentInfo/index.js +9 -19
  360. package/dist/providers/DocumentInfo/index.js +42 -100
  361. package/dist/providers/DocumentInfo/types.js +2 -5
  362. package/dist/providers/EditDepth/index.js +5 -67
  363. package/dist/providers/FormQueryParams/index.js +7 -69
  364. package/dist/providers/ListInfo/index.js +9 -68
  365. package/dist/providers/ListInfo/types.js +2 -5
  366. package/dist/providers/Locale/index.js +28 -87
  367. package/dist/providers/OperationProvider/index.js +5 -67
  368. package/dist/providers/Params/index.js +9 -67
  369. package/dist/providers/Portal/index.js +4 -19
  370. package/dist/providers/Preferences/index.js +25 -89
  371. package/dist/providers/Root/index.js +31 -82
  372. package/dist/providers/SearchParams/index.js +14 -77
  373. package/dist/providers/SearchParams/types.js +2 -5
  374. package/dist/providers/SelectionProvider/index.js +23 -90
  375. package/dist/providers/Theme/index.js +11 -73
  376. package/dist/providers/Theme/types.js +2 -5
  377. package/dist/providers/Theme/utilities.js +3 -21
  378. package/dist/providers/Translation/index.js +8 -67
  379. package/dist/templates/Default/NavHamburger/index.js +7 -22
  380. package/dist/templates/Default/Wrapper/index.js +7 -22
  381. package/dist/templates/Default/index.js +17 -68
  382. package/dist/templates/Default/types.js +2 -5
  383. package/dist/templates/Minimal/index.js +6 -21
  384. package/dist/templates/Minimal/types.js +2 -5
  385. package/dist/utilities/api.js +4 -19
  386. package/dist/utilities/arraysHaveSameStrings.js +2 -12
  387. package/dist/utilities/buildComponentMap/index.js +16 -31
  388. package/dist/utilities/buildComponentMap/mapActions.js +5 -20
  389. package/dist/utilities/buildComponentMap/mapFields.js +34 -90
  390. package/dist/utilities/buildComponentMap/types.js +2 -5
  391. package/dist/utilities/buildFieldSchemaMap/index.js +5 -15
  392. package/dist/utilities/buildFieldSchemaMap/traverseFields.js +9 -19
  393. package/dist/utilities/buildFieldSchemaMap/types.js +2 -5
  394. package/dist/utilities/canUseDOM.js +2 -12
  395. package/dist/utilities/findLocaleFromCode.js +4 -12
  396. package/dist/utilities/formatDate/getSupportedDateLocale.js +2 -12
  397. package/dist/utilities/formatDate/index.js +10 -69
  398. package/dist/utilities/formatDocTitle.js +6 -16
  399. package/dist/utilities/formatFields.js +3 -13
  400. package/dist/utilities/getFormState.js +2 -12
  401. package/dist/utilities/getOffsetTop.js +2 -12
  402. package/dist/utilities/getRequestLanguage.js +2 -12
  403. package/dist/utilities/getSupportedMonacoLocale.js +2 -12
  404. package/dist/utilities/groupNavItems.js +7 -25
  405. package/dist/utilities/scrollToID.js +2 -12
  406. package/dist/utilities/setsAreEqual.js +2 -12
  407. package/dist/utilities/withMergedProps/index.js +23 -21
  408. package/dist/views/Global/RenderCustomView.js +0 -1
  409. package/package.json +4 -4
@@ -1,100 +1,36 @@
1
1
  'use client';
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- function _export(target, all) {
7
- for(var name in all)Object.defineProperty(target, name, {
8
- enumerable: true,
9
- get: all[name]
10
- });
11
- }
12
- _export(exports, {
13
- AuthProvider: function() {
14
- return AuthProvider;
15
- },
16
- useAuth: function() {
17
- return useAuth;
18
- }
19
- });
20
- const _modal = require("@faceless-ui/modal");
21
- const _navigation = require("next/navigation");
22
- const _qs = /*#__PURE__*/ _interop_require_default(require("qs"));
23
- const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
24
- const _reacttoastify = require("react-toastify");
25
- const _useDebounce = /*#__PURE__*/ _interop_require_default(require("../../hooks/useDebounce"));
26
- const _Translation = require("../../providers/Translation");
27
- const _api = require("../../utilities/api");
28
- const _Config = require("../Config");
29
- const _SearchParams = require("../SearchParams");
30
- function _interop_require_default(obj) {
31
- return obj && obj.__esModule ? obj : {
32
- default: obj
33
- };
34
- }
35
- function _getRequireWildcardCache(nodeInterop) {
36
- if (typeof WeakMap !== "function") return null;
37
- var cacheBabelInterop = new WeakMap();
38
- var cacheNodeInterop = new WeakMap();
39
- return (_getRequireWildcardCache = function(nodeInterop) {
40
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
41
- })(nodeInterop);
42
- }
43
- function _interop_require_wildcard(obj, nodeInterop) {
44
- if (!nodeInterop && obj && obj.__esModule) {
45
- return obj;
46
- }
47
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
48
- return {
49
- default: obj
50
- };
51
- }
52
- var cache = _getRequireWildcardCache(nodeInterop);
53
- if (cache && cache.has(obj)) {
54
- return cache.get(obj);
55
- }
56
- var newObj = {
57
- __proto__: null
58
- };
59
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
60
- for(var key in obj){
61
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
62
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
63
- if (desc && (desc.get || desc.set)) {
64
- Object.defineProperty(newObj, key, desc);
65
- } else {
66
- newObj[key] = obj[key];
67
- }
68
- }
69
- }
70
- newObj.default = obj;
71
- if (cache) {
72
- cache.set(obj, newObj);
73
- }
74
- return newObj;
75
- }
2
+ import { useModal } from '@faceless-ui/modal';
3
+ import { usePathname, useRouter } from 'next/navigation';
4
+ import qs from 'qs';
5
+ import React, { createContext, useCallback, useContext, useEffect, useState } from 'react';
6
+ import { toast } from 'react-toastify';
7
+ import useDebounce from '../../hooks/useDebounce';
8
+ import { useTranslation } from '../../providers/Translation';
9
+ import { requests } from '../../utilities/api';
10
+ import { useConfig } from '../Config';
11
+ import { useSearchParams } from '../SearchParams';
76
12
  // import { useLocale } from '../Locale'
77
- const Context = /*#__PURE__*/ (0, _react.createContext)({});
13
+ const Context = /*#__PURE__*/ createContext({});
78
14
  const maxTimeoutTime = 2147483647;
79
- const AuthProvider = ({ children })=>{
80
- const { searchParams } = (0, _SearchParams.useSearchParams)();
81
- const [user, setUser] = (0, _react.useState)();
82
- const [tokenInMemory, setTokenInMemory] = (0, _react.useState)();
83
- const [tokenExpiration, setTokenExpiration] = (0, _react.useState)();
84
- const pathname = (0, _navigation.usePathname)();
85
- const router = (0, _navigation.useRouter)();
15
+ export const AuthProvider = ({ children })=>{
16
+ const { searchParams } = useSearchParams();
17
+ const [user, setUser] = useState();
18
+ const [tokenInMemory, setTokenInMemory] = useState();
19
+ const [tokenExpiration, setTokenExpiration] = useState();
20
+ const pathname = usePathname();
21
+ const router = useRouter();
86
22
  // const { code } = useLocale()
87
23
  const code = 'en' // TODO: re-enable i18n asap
88
24
  ;
89
- const config = (0, _Config.useConfig)();
25
+ const config = useConfig();
90
26
  const { admin: { autoLogin, inactivityRoute: logoutInactivityRoute, user: userSlug }, routes: { admin, api }, serverURL } = config;
91
- const [permissions, setPermissions] = (0, _react.useState)();
92
- const { i18n } = (0, _Translation.useTranslation)();
93
- const { closeAllModals, openModal } = (0, _modal.useModal)();
94
- const [lastLocationChange, setLastLocationChange] = (0, _react.useState)(0);
95
- const debouncedLocationChange = (0, _useDebounce.default)(lastLocationChange, 10000);
27
+ const [permissions, setPermissions] = useState();
28
+ const { i18n } = useTranslation();
29
+ const { closeAllModals, openModal } = useModal();
30
+ const [lastLocationChange, setLastLocationChange] = useState(0);
31
+ const debouncedLocationChange = useDebounce(lastLocationChange, 10000);
96
32
  const id = user?.id;
97
- const redirectToInactivityRoute = (0, _react.useCallback)(()=>{
33
+ const redirectToInactivityRoute = useCallback(()=>{
98
34
  if (window.location.pathname.startsWith(admin)) {
99
35
  const redirectParam = `?redirect=${encodeURIComponent(window.location.pathname.replace(admin, ''))}`;
100
36
  router.replace(`${admin}${logoutInactivityRoute}${redirectParam}`);
@@ -108,11 +44,11 @@ const AuthProvider = ({ children })=>{
108
44
  logoutInactivityRoute,
109
45
  closeAllModals
110
46
  ]);
111
- const revokeTokenAndExpire = (0, _react.useCallback)(()=>{
47
+ const revokeTokenAndExpire = useCallback(()=>{
112
48
  setTokenInMemory(undefined);
113
49
  setTokenExpiration(undefined);
114
50
  }, []);
115
- const setTokenAndExpiration = (0, _react.useCallback)((json)=>{
51
+ const setTokenAndExpiration = useCallback((json)=>{
116
52
  const token = json?.token || json?.refreshedToken;
117
53
  if (token && json?.exp) {
118
54
  setTokenInMemory(token);
@@ -123,13 +59,13 @@ const AuthProvider = ({ children })=>{
123
59
  }, [
124
60
  revokeTokenAndExpire
125
61
  ]);
126
- const refreshCookie = (0, _react.useCallback)((forceRefresh)=>{
62
+ const refreshCookie = useCallback((forceRefresh)=>{
127
63
  const now = Math.round(new Date().getTime() / 1000);
128
64
  const remainingTime = (typeof tokenExpiration === 'number' ? tokenExpiration : 0) - now;
129
65
  if (forceRefresh || tokenExpiration && remainingTime < 120) {
130
66
  setTimeout(async ()=>{
131
67
  try {
132
- const request = await _api.requests.post(`${serverURL}${api}/${userSlug}/refresh-token`, {
68
+ const request = await requests.post(`${serverURL}${api}/${userSlug}/refresh-token`, {
133
69
  headers: {
134
70
  'Accept-Language': i18n.language
135
71
  }
@@ -143,7 +79,7 @@ const AuthProvider = ({ children })=>{
143
79
  redirectToInactivityRoute();
144
80
  }
145
81
  } catch (e) {
146
- _reacttoastify.toast.error(e.message);
82
+ toast.error(e.message);
147
83
  }
148
84
  }, 1000);
149
85
  }
@@ -156,9 +92,9 @@ const AuthProvider = ({ children })=>{
156
92
  redirectToInactivityRoute,
157
93
  setTokenAndExpiration
158
94
  ]);
159
- const refreshCookieAsync = (0, _react.useCallback)(async (skipSetUser)=>{
95
+ const refreshCookieAsync = useCallback(async (skipSetUser)=>{
160
96
  try {
161
- const request = await _api.requests.post(`${serverURL}${api}/${userSlug}/refresh-token`, {
97
+ const request = await requests.post(`${serverURL}${api}/${userSlug}/refresh-token`, {
162
98
  headers: {
163
99
  'Accept-Language': i18n.language
164
100
  }
@@ -175,7 +111,7 @@ const AuthProvider = ({ children })=>{
175
111
  redirectToInactivityRoute();
176
112
  return null;
177
113
  } catch (e) {
178
- _reacttoastify.toast.error(`Refreshing token failed: ${e.message}`);
114
+ toast.error(`Refreshing token failed: ${e.message}`);
179
115
  return null;
180
116
  }
181
117
  }, [
@@ -186,13 +122,13 @@ const AuthProvider = ({ children })=>{
186
122
  redirectToInactivityRoute,
187
123
  setTokenAndExpiration
188
124
  ]);
189
- const logOut = (0, _react.useCallback)(()=>{
125
+ const logOut = useCallback(()=>{
190
126
  setUser(null);
191
127
  revokeTokenAndExpire();
192
128
  try {
193
- _api.requests.post(`${serverURL}${api}/${userSlug}/logout`);
129
+ requests.post(`${serverURL}${api}/${userSlug}/logout`);
194
130
  } catch (e) {
195
- _reacttoastify.toast.error(`Logging out failed: ${e.message}`);
131
+ toast.error(`Logging out failed: ${e.message}`);
196
132
  }
197
133
  }, [
198
134
  serverURL,
@@ -200,12 +136,12 @@ const AuthProvider = ({ children })=>{
200
136
  userSlug,
201
137
  revokeTokenAndExpire
202
138
  ]);
203
- const refreshPermissions = (0, _react.useCallback)(async ()=>{
139
+ const refreshPermissions = useCallback(async ()=>{
204
140
  const params = {
205
141
  locale: code
206
142
  };
207
143
  try {
208
- const request = await _api.requests.get(`${serverURL}${api}/access?${_qs.default.stringify(params)}`, {
144
+ const request = await requests.get(`${serverURL}${api}/access?${qs.stringify(params)}`, {
209
145
  headers: {
210
146
  'Accept-Language': i18n.language
211
147
  }
@@ -217,7 +153,7 @@ const AuthProvider = ({ children })=>{
217
153
  throw new Error(`Fetching permissions failed with status code ${request.status}`);
218
154
  }
219
155
  } catch (e) {
220
- _reacttoastify.toast.error(`Refreshing permissions failed: ${e.message}`);
156
+ toast.error(`Refreshing permissions failed: ${e.message}`);
221
157
  }
222
158
  }, [
223
159
  serverURL,
@@ -225,9 +161,9 @@ const AuthProvider = ({ children })=>{
225
161
  i18n,
226
162
  code
227
163
  ]);
228
- const fetchFullUser = _react.default.useCallback(async ()=>{
164
+ const fetchFullUser = React.useCallback(async ()=>{
229
165
  try {
230
- const request = await _api.requests.get(`${serverURL}${api}/${userSlug}/me`, {
166
+ const request = await requests.get(`${serverURL}${api}/${userSlug}/me`, {
231
167
  headers: {
232
168
  'Accept-Language': i18n.language
233
169
  }
@@ -242,7 +178,7 @@ const AuthProvider = ({ children })=>{
242
178
  } else if (autoLogin && autoLogin.prefillOnly !== true) {
243
179
  // auto log-in with the provided autoLogin credentials. This is used in dev mode
244
180
  // so you don't have to log in over and over again
245
- const autoLoginResult = await _api.requests.post(`${serverURL}${api}/${userSlug}/login`, {
181
+ const autoLoginResult = await requests.post(`${serverURL}${api}/${userSlug}/login`, {
246
182
  body: JSON.stringify({
247
183
  email: autoLogin.email,
248
184
  password: autoLogin.password
@@ -269,7 +205,7 @@ const AuthProvider = ({ children })=>{
269
205
  }
270
206
  }
271
207
  } catch (e) {
272
- _reacttoastify.toast.error(`Fetching user failed: ${e.message}`);
208
+ toast.error(`Fetching user failed: ${e.message}`);
273
209
  }
274
210
  }, [
275
211
  serverURL,
@@ -284,13 +220,13 @@ const AuthProvider = ({ children })=>{
284
220
  revokeTokenAndExpire
285
221
  ]);
286
222
  // On mount, get user and set
287
- (0, _react.useEffect)(()=>{
223
+ useEffect(()=>{
288
224
  fetchFullUser();
289
225
  }, [
290
226
  fetchFullUser
291
227
  ]);
292
228
  // When location changes, refresh cookie
293
- (0, _react.useEffect)(()=>{
229
+ useEffect(()=>{
294
230
  if (id) {
295
231
  refreshCookie();
296
232
  }
@@ -299,13 +235,13 @@ const AuthProvider = ({ children })=>{
299
235
  refreshCookie,
300
236
  id
301
237
  ]);
302
- (0, _react.useEffect)(()=>{
238
+ useEffect(()=>{
303
239
  setLastLocationChange(Date.now());
304
240
  }, [
305
241
  pathname
306
242
  ]);
307
243
  // When user changes, get new access
308
- (0, _react.useEffect)(()=>{
244
+ useEffect(()=>{
309
245
  if (id) {
310
246
  refreshPermissions();
311
247
  }
@@ -316,7 +252,7 @@ const AuthProvider = ({ children })=>{
316
252
  serverURL,
317
253
  refreshPermissions
318
254
  ]);
319
- (0, _react.useEffect)(()=>{
255
+ useEffect(()=>{
320
256
  let reminder;
321
257
  const now = Math.round(new Date().getTime() / 1000);
322
258
  const remainingTime = typeof tokenExpiration === 'number' ? tokenExpiration - now : 0;
@@ -332,7 +268,7 @@ const AuthProvider = ({ children })=>{
332
268
  tokenExpiration,
333
269
  openModal
334
270
  ]);
335
- (0, _react.useEffect)(()=>{
271
+ useEffect(()=>{
336
272
  let forceLogOut;
337
273
  const now = Math.round(new Date().getTime() / 1000);
338
274
  const remainingTime = typeof tokenExpiration === 'number' ? tokenExpiration - now : 0;
@@ -353,7 +289,7 @@ const AuthProvider = ({ children })=>{
353
289
  redirectToInactivityRoute,
354
290
  revokeTokenAndExpire
355
291
  ]);
356
- return /*#__PURE__*/ _react.default.createElement(Context.Provider, {
292
+ return /*#__PURE__*/ React.createElement(Context.Provider, {
357
293
  value: {
358
294
  fetchFullUser,
359
295
  logOut,
@@ -368,6 +304,6 @@ const AuthProvider = ({ children })=>{
368
304
  }
369
305
  }, children);
370
306
  };
371
- const useAuth = ()=>(0, _react.useContext)(Context);
307
+ export const useAuth = ()=>useContext(Context);
372
308
 
373
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm92aWRlcnMvQXV0aC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgdHlwZSB7IFBlcm1pc3Npb25zLCBVc2VyIH0gZnJvbSAncGF5bG9hZC9hdXRoJ1xuXG5pbXBvcnQgeyB1c2VNb2RhbCB9IGZyb20gJ0BmYWNlbGVzcy11aS9tb2RhbCdcbmltcG9ydCB7IHVzZVBhdGhuYW1lLCB1c2VSb3V0ZXIgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXG5pbXBvcnQgcXMgZnJvbSAncXMnXG5pbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSAncmVhY3QtdG9hc3RpZnknXG5cbmltcG9ydCB0eXBlIHsgQXV0aENvbnRleHQgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgdXNlRGVib3VuY2UgZnJvbSAnLi4vLi4vaG9va3MvdXNlRGVib3VuY2UnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9UcmFuc2xhdGlvbidcbmltcG9ydCB7IHJlcXVlc3RzIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2FwaSdcbmltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gJy4uL0NvbmZpZydcbmltcG9ydCB7IHVzZVNlYXJjaFBhcmFtcyB9IGZyb20gJy4uL1NlYXJjaFBhcmFtcydcbi8vIGltcG9ydCB7IHVzZUxvY2FsZSB9IGZyb20gJy4uL0xvY2FsZSdcblxuY29uc3QgQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoe30gYXMgQXV0aENvbnRleHQpXG5cbmNvbnN0IG1heFRpbWVvdXRUaW1lID0gMjE0NzQ4MzY0N1xuXG5leHBvcnQgY29uc3QgQXV0aFByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfT4gPSAoeyBjaGlsZHJlbiB9KSA9PiB7XG4gIGNvbnN0IHsgc2VhcmNoUGFyYW1zIH0gPSB1c2VTZWFyY2hQYXJhbXMoKVxuICBjb25zdCBbdXNlciwgc2V0VXNlcl0gPSB1c2VTdGF0ZTxVc2VyIHwgbnVsbD4oKVxuICBjb25zdCBbdG9rZW5Jbk1lbW9yeSwgc2V0VG9rZW5Jbk1lbW9yeV0gPSB1c2VTdGF0ZTxzdHJpbmc+KClcbiAgY29uc3QgW3Rva2VuRXhwaXJhdGlvbiwgc2V0VG9rZW5FeHBpcmF0aW9uXSA9IHVzZVN0YXRlPG51bWJlcj4oKVxuICBjb25zdCBwYXRobmFtZSA9IHVzZVBhdGhuYW1lKClcbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKClcbiAgLy8gY29uc3QgeyBjb2RlIH0gPSB1c2VMb2NhbGUoKVxuICBjb25zdCBjb2RlID0gJ2VuJyAvLyBUT0RPOiByZS1lbmFibGUgaTE4biBhc2FwXG5cbiAgY29uc3QgY29uZmlnID0gdXNlQ29uZmlnKClcblxuICBjb25zdCB7XG4gICAgYWRtaW46IHsgYXV0b0xvZ2luLCBpbmFjdGl2aXR5Um91dGU6IGxvZ291dEluYWN0aXZpdHlSb3V0ZSwgdXNlcjogdXNlclNsdWcgfSxcbiAgICByb3V0ZXM6IHsgYWRtaW4sIGFwaSB9LFxuICAgIHNlcnZlclVSTCxcbiAgfSA9IGNvbmZpZ1xuXG4gIGNvbnN0IFtwZXJtaXNzaW9ucywgc2V0UGVybWlzc2lvbnNdID0gdXNlU3RhdGU8UGVybWlzc2lvbnM+KClcblxuICBjb25zdCB7IGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKClcbiAgY29uc3QgeyBjbG9zZUFsbE1vZGFscywgb3Blbk1vZGFsIH0gPSB1c2VNb2RhbCgpXG4gIGNvbnN0IFtsYXN0TG9jYXRpb25DaGFuZ2UsIHNldExhc3RMb2NhdGlvbkNoYW5nZV0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBkZWJvdW5jZWRMb2NhdGlvbkNoYW5nZSA9IHVzZURlYm91bmNlKGxhc3RMb2NhdGlvbkNoYW5nZSwgMTAwMDApXG5cbiAgY29uc3QgaWQgPSB1c2VyPy5pZFxuXG4gIGNvbnN0IHJlZGlyZWN0VG9JbmFjdGl2aXR5Um91dGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5zdGFydHNXaXRoKGFkbWluKSkge1xuICAgICAgY29uc3QgcmVkaXJlY3RQYXJhbSA9IGA/cmVkaXJlY3Q9JHtlbmNvZGVVUklDb21wb25lbnQoXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKGFkbWluLCAnJyksXG4gICAgICApfWBcbiAgICAgIHJvdXRlci5yZXBsYWNlKGAke2FkbWlufSR7bG9nb3V0SW5hY3Rpdml0eVJvdXRlfSR7cmVkaXJlY3RQYXJhbX1gKVxuICAgIH0gZWxzZSB7XG4gICAgICByb3V0ZXIucmVwbGFjZShgJHthZG1pbn0ke2xvZ291dEluYWN0aXZpdHlSb3V0ZX1gKVxuICAgIH1cbiAgICBjbG9zZUFsbE1vZGFscygpXG4gIH0sIFtyb3V0ZXIsIGFkbWluLCBsb2dvdXRJbmFjdGl2aXR5Um91dGUsIGNsb3NlQWxsTW9kYWxzXSlcblxuICBjb25zdCByZXZva2VUb2tlbkFuZEV4cGlyZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRUb2tlbkluTWVtb3J5KHVuZGVmaW5lZClcbiAgICBzZXRUb2tlbkV4cGlyYXRpb24odW5kZWZpbmVkKVxuICB9LCBbXSlcblxuICBjb25zdCBzZXRUb2tlbkFuZEV4cGlyYXRpb24gPSB1c2VDYWxsYmFjayhcbiAgICAoanNvbikgPT4ge1xuICAgICAgY29uc3QgdG9rZW4gPSBqc29uPy50b2tlbiB8fCBqc29uPy5yZWZyZXNoZWRUb2tlblxuICAgICAgaWYgKHRva2VuICYmIGpzb24/LmV4cCkge1xuICAgICAgICBzZXRUb2tlbkluTWVtb3J5KHRva2VuKVxuICAgICAgICBzZXRUb2tlbkV4cGlyYXRpb24oanNvbi5leHApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXZva2VUb2tlbkFuZEV4cGlyZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbcmV2b2tlVG9rZW5BbmRFeHBpcmVdLFxuICApXG5cbiAgY29uc3QgcmVmcmVzaENvb2tpZSA9IHVzZUNhbGxiYWNrKFxuICAgIChmb3JjZVJlZnJlc2g/OiBib29sZWFuKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBNYXRoLnJvdW5kKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMClcbiAgICAgIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSAodHlwZW9mIHRva2VuRXhwaXJhdGlvbiA9PT0gJ251bWJlcicgPyB0b2tlbkV4cGlyYXRpb24gOiAwKSAtIG5vd1xuXG4gICAgICBpZiAoZm9yY2VSZWZyZXNoIHx8ICh0b2tlbkV4cGlyYXRpb24gJiYgcmVtYWluaW5nVGltZSA8IDEyMCkpIHtcbiAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCByZXF1ZXN0cy5wb3N0KGAke3NlcnZlclVSTH0ke2FwaX0vJHt1c2VyU2x1Z30vcmVmcmVzaC10b2tlbmAsIHtcbiAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiBpMThuLmxhbmd1YWdlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgaWYgKHJlcXVlc3Quc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgY29uc3QganNvbiA9IGF3YWl0IHJlcXVlc3QuanNvbigpXG4gICAgICAgICAgICAgIHNldFVzZXIoanNvbi51c2VyKVxuICAgICAgICAgICAgICBzZXRUb2tlbkFuZEV4cGlyYXRpb24oanNvbilcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldFVzZXIobnVsbClcbiAgICAgICAgICAgICAgcmVkaXJlY3RUb0luYWN0aXZpdHlSb3V0ZSgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdG9hc3QuZXJyb3IoZS5tZXNzYWdlKVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwMClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIHRva2VuRXhwaXJhdGlvbixcbiAgICAgIHNlcnZlclVSTCxcbiAgICAgIGFwaSxcbiAgICAgIHVzZXJTbHVnLFxuICAgICAgaTE4bixcbiAgICAgIHJlZGlyZWN0VG9JbmFjdGl2aXR5Um91dGUsXG4gICAgICBzZXRUb2tlbkFuZEV4cGlyYXRpb24sXG4gICAgXSxcbiAgKVxuXG4gIGNvbnN0IHJlZnJlc2hDb29raWVBc3luYyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChza2lwU2V0VXNlcj86IGJvb2xlYW4pOiBQcm9taXNlPFVzZXI+ID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCByZXF1ZXN0cy5wb3N0KGAke3NlcnZlclVSTH0ke2FwaX0vJHt1c2VyU2x1Z30vcmVmcmVzaC10b2tlbmAsIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgY29uc3QganNvbiA9IGF3YWl0IHJlcXVlc3QuanNvbigpXG4gICAgICAgICAgaWYgKCFza2lwU2V0VXNlcikge1xuICAgICAgICAgICAgc2V0VXNlcihqc29uLnVzZXIpXG4gICAgICAgICAgICBzZXRUb2tlbkFuZEV4cGlyYXRpb24oanNvbilcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGpzb24udXNlclxuICAgICAgICB9XG5cbiAgICAgICAgc2V0VXNlcihudWxsKVxuICAgICAgICByZWRpcmVjdFRvSW5hY3Rpdml0eVJvdXRlKClcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdG9hc3QuZXJyb3IoYFJlZnJlc2hpbmcgdG9rZW4gZmFpbGVkOiAke2UubWVzc2FnZX1gKVxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlcnZlclVSTCwgYXBpLCB1c2VyU2x1ZywgaTE4biwgcmVkaXJlY3RUb0luYWN0aXZpdHlSb3V0ZSwgc2V0VG9rZW5BbmRFeHBpcmF0aW9uXSxcbiAgKVxuXG4gIGNvbnN0IGxvZ091dCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRVc2VyKG51bGwpXG4gICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUoKVxuICAgIHRyeSB7XG4gICAgICByZXF1ZXN0cy5wb3N0KGAke3NlcnZlclVSTH0ke2FwaX0vJHt1c2VyU2x1Z30vbG9nb3V0YClcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0b2FzdC5lcnJvcihgTG9nZ2luZyBvdXQgZmFpbGVkOiAke2UubWVzc2FnZX1gKVxuICAgIH1cbiAgfSwgW3NlcnZlclVSTCwgYXBpLCB1c2VyU2x1ZywgcmV2b2tlVG9rZW5BbmRFeHBpcmVdKVxuXG4gIGNvbnN0IHJlZnJlc2hQZXJtaXNzaW9ucyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBsb2NhbGU6IGNvZGUsXG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgcmVxdWVzdHMuZ2V0KGAke3NlcnZlclVSTH0ke2FwaX0vYWNjZXNzPyR7cXMuc3RyaW5naWZ5KHBhcmFtcyl9YCwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IGkxOG4ubGFuZ3VhZ2UsXG4gICAgICAgIH0sXG4gICAgICB9KVxuXG4gICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICBjb25zdCBqc29uOiBQZXJtaXNzaW9ucyA9IGF3YWl0IHJlcXVlc3QuanNvbigpXG4gICAgICAgIHNldFBlcm1pc3Npb25zKGpzb24pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZldGNoaW5nIHBlcm1pc3Npb25zIGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICR7cmVxdWVzdC5zdGF0dXN9YClcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0b2FzdC5lcnJvcihgUmVmcmVzaGluZyBwZXJtaXNzaW9ucyBmYWlsZWQ6ICR7ZS5tZXNzYWdlfWApXG4gICAgfVxuICB9LCBbc2VydmVyVVJMLCBhcGksIGkxOG4sIGNvZGVdKVxuXG4gIGNvbnN0IGZldGNoRnVsbFVzZXIgPSBSZWFjdC51c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCByZXF1ZXN0cy5nZXQoYCR7c2VydmVyVVJMfSR7YXBpfS8ke3VzZXJTbHVnfS9tZWAsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiBpMThuLmxhbmd1YWdlLFxuICAgICAgICB9LFxuICAgICAgfSlcblxuICAgICAgaWYgKHJlcXVlc3Quc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgY29uc3QganNvbiA9IGF3YWl0IHJlcXVlc3QuanNvbigpXG5cbiAgICAgICAgaWYgKGpzb24/LnVzZXIpIHtcbiAgICAgICAgICBzZXRVc2VyKGpzb24udXNlcilcbiAgICAgICAgICBpZiAoanNvbj8udG9rZW4pIHtcbiAgICAgICAgICAgIHNldFRva2VuQW5kRXhwaXJhdGlvbihqc29uKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChhdXRvTG9naW4gJiYgYXV0b0xvZ2luLnByZWZpbGxPbmx5ICE9PSB0cnVlKSB7XG4gICAgICAgICAgLy8gYXV0byBsb2ctaW4gd2l0aCB0aGUgcHJvdmlkZWQgYXV0b0xvZ2luIGNyZWRlbnRpYWxzLiBUaGlzIGlzIHVzZWQgaW4gZGV2IG1vZGVcbiAgICAgICAgICAvLyBzbyB5b3UgZG9uJ3QgaGF2ZSB0byBsb2cgaW4gb3ZlciBhbmQgb3ZlciBhZ2FpblxuICAgICAgICAgIGNvbnN0IGF1dG9Mb2dpblJlc3VsdCA9IGF3YWl0IHJlcXVlc3RzLnBvc3QoYCR7c2VydmVyVVJMfSR7YXBpfS8ke3VzZXJTbHVnfS9sb2dpbmAsIHtcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgZW1haWw6IGF1dG9Mb2dpbi5lbWFpbCxcbiAgICAgICAgICAgICAgcGFzc3dvcmQ6IGF1dG9Mb2dpbi5wYXNzd29yZCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICBpZiAoYXV0b0xvZ2luUmVzdWx0LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICBjb25zdCBhdXRvTG9naW5Kc29uID0gYXdhaXQgYXV0b0xvZ2luUmVzdWx0Lmpzb24oKVxuICAgICAgICAgICAgc2V0VXNlcihhdXRvTG9naW5Kc29uLnVzZXIpXG4gICAgICAgICAgICBpZiAoYXV0b0xvZ2luSnNvbj8udG9rZW4pIHtcbiAgICAgICAgICAgICAgc2V0VG9rZW5BbmRFeHBpcmF0aW9uKGF1dG9Mb2dpbkpzb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByb3V0ZXIucHVzaChcbiAgICAgICAgICAgICAgdHlwZW9mIHNlYXJjaFBhcmFtc1sncmVkaXJlY3QnXSA9PT0gJ3N0cmluZycgPyBzZWFyY2hQYXJhbXNbJ3JlZGlyZWN0J10gOiBhZG1pbixcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0VXNlcihudWxsKVxuICAgICAgICAgICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRVc2VyKG51bGwpXG4gICAgICAgICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdG9hc3QuZXJyb3IoYEZldGNoaW5nIHVzZXIgZmFpbGVkOiAke2UubWVzc2FnZX1gKVxuICAgIH1cbiAgfSwgW1xuICAgIHNlcnZlclVSTCxcbiAgICBhcGksXG4gICAgdXNlclNsdWcsXG4gICAgaTE4bi5sYW5ndWFnZSxcbiAgICBhdXRvTG9naW4sXG4gICAgc2V0VG9rZW5BbmRFeHBpcmF0aW9uLFxuICAgIHJvdXRlcixcbiAgICBzZWFyY2hQYXJhbXMsXG4gICAgYWRtaW4sXG4gICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUsXG4gIF0pXG5cbiAgLy8gT24gbW91bnQsIGdldCB1c2VyIGFuZCBzZXRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaEZ1bGxVc2VyKClcbiAgfSwgW2ZldGNoRnVsbFVzZXJdKVxuXG4gIC8vIFdoZW4gbG9jYXRpb24gY2hhbmdlcywgcmVmcmVzaCBjb29raWVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaWQpIHtcbiAgICAgIHJlZnJlc2hDb29raWUoKVxuICAgIH1cbiAgfSwgW2RlYm91bmNlZExvY2F0aW9uQ2hhbmdlLCByZWZyZXNoQ29va2llLCBpZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRMYXN0TG9jYXRpb25DaGFuZ2UoRGF0ZS5ub3coKSlcbiAgfSwgW3BhdGhuYW1lXSlcblxuICAvLyBXaGVuIHVzZXIgY2hhbmdlcywgZ2V0IG5ldyBhY2Nlc3NcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaWQpIHtcbiAgICAgIHJlZnJlc2hQZXJtaXNzaW9ucygpXG4gICAgfVxuICB9LCBbaTE4biwgaWQsIGFwaSwgc2VydmVyVVJMLCByZWZyZXNoUGVybWlzc2lvbnNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IHJlbWluZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PlxuICAgIGNvbnN0IG5vdyA9IE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKVxuICAgIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSB0eXBlb2YgdG9rZW5FeHBpcmF0aW9uID09PSAnbnVtYmVyJyA/IHRva2VuRXhwaXJhdGlvbiAtIG5vdyA6IDBcblxuICAgIGlmIChyZW1haW5pbmdUaW1lID4gMCkge1xuICAgICAgcmVtaW5kZXIgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgb3Blbk1vZGFsKCdzdGF5LWxvZ2dlZC1pbicpXG4gICAgICAgIH0sXG4gICAgICAgIE1hdGgubWF4KE1hdGgubWluKChyZW1haW5pbmdUaW1lIC0gNjApICogMTAwMCwgbWF4VGltZW91dFRpbWUpKSxcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHJlbWluZGVyKSBjbGVhclRpbWVvdXQocmVtaW5kZXIpXG4gICAgfVxuICB9LCBbdG9rZW5FeHBpcmF0aW9uLCBvcGVuTW9kYWxdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGZvcmNlTG9nT3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PlxuICAgIGNvbnN0IG5vdyA9IE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKVxuICAgIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSB0eXBlb2YgdG9rZW5FeHBpcmF0aW9uID09PSAnbnVtYmVyJyA/IHRva2VuRXhwaXJhdGlvbiAtIG5vdyA6IDBcblxuICAgIGlmIChyZW1haW5pbmdUaW1lID4gMCkge1xuICAgICAgZm9yY2VMb2dPdXQgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgc2V0VXNlcihudWxsKVxuICAgICAgICAgIHJldm9rZVRva2VuQW5kRXhwaXJlKClcbiAgICAgICAgICByZWRpcmVjdFRvSW5hY3Rpdml0eVJvdXRlKClcbiAgICAgICAgfSxcbiAgICAgICAgTWF0aC5tYXgoTWF0aC5taW4ocmVtYWluaW5nVGltZSAqIDEwMDAsIG1heFRpbWVvdXRUaW1lKSwgMCksXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChmb3JjZUxvZ091dCkgY2xlYXJUaW1lb3V0KGZvcmNlTG9nT3V0KVxuICAgIH1cbiAgfSwgW3Rva2VuRXhwaXJhdGlvbiwgY2xvc2VBbGxNb2RhbHMsIGkxOG4sIHJlZGlyZWN0VG9JbmFjdGl2aXR5Um91dGUsIHJldm9rZVRva2VuQW5kRXhwaXJlXSlcblxuICByZXR1cm4gKFxuICAgIDxDb250ZXh0LlByb3ZpZGVyXG4gICAgICB2YWx1ZT17e1xuICAgICAgICBmZXRjaEZ1bGxVc2VyLFxuICAgICAgICBsb2dPdXQsXG4gICAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgICByZWZyZXNoQ29va2llLFxuICAgICAgICByZWZyZXNoQ29va2llQXN5bmMsXG4gICAgICAgIHJlZnJlc2hQZXJtaXNzaW9ucyxcbiAgICAgICAgc2V0UGVybWlzc2lvbnMsXG4gICAgICAgIHNldFVzZXIsXG4gICAgICAgIHRva2VuOiB0b2tlbkluTWVtb3J5LFxuICAgICAgICB1c2VyLFxuICAgICAgfX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9Db250ZXh0LlByb3ZpZGVyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCB1c2VBdXRoID0gPFQgPSBVc2VyLD4oKTogQXV0aENvbnRleHQ8VD4gPT4gdXNlQ29udGV4dChDb250ZXh0KSBhcyBBdXRoQ29udGV4dDxUPlxuIl0sIm5hbWVzIjpbIkF1dGhQcm92aWRlciIsInVzZUF1dGgiLCJDb250ZXh0IiwiY3JlYXRlQ29udGV4dCIsIm1heFRpbWVvdXRUaW1lIiwiY2hpbGRyZW4iLCJzZWFyY2hQYXJhbXMiLCJ1c2VTZWFyY2hQYXJhbXMiLCJ1c2VyIiwic2V0VXNlciIsInVzZVN0YXRlIiwidG9rZW5Jbk1lbW9yeSIsInNldFRva2VuSW5NZW1vcnkiLCJ0b2tlbkV4cGlyYXRpb24iLCJzZXRUb2tlbkV4cGlyYXRpb24iLCJwYXRobmFtZSIsInVzZVBhdGhuYW1lIiwicm91dGVyIiwidXNlUm91dGVyIiwiY29kZSIsImNvbmZpZyIsInVzZUNvbmZpZyIsImFkbWluIiwiYXV0b0xvZ2luIiwiaW5hY3Rpdml0eVJvdXRlIiwibG9nb3V0SW5hY3Rpdml0eVJvdXRlIiwidXNlclNsdWciLCJyb3V0ZXMiLCJhcGkiLCJzZXJ2ZXJVUkwiLCJwZXJtaXNzaW9ucyIsInNldFBlcm1pc3Npb25zIiwiaTE4biIsInVzZVRyYW5zbGF0aW9uIiwiY2xvc2VBbGxNb2RhbHMiLCJvcGVuTW9kYWwiLCJ1c2VNb2RhbCIsImxhc3RMb2NhdGlvbkNoYW5nZSIsInNldExhc3RMb2NhdGlvbkNoYW5nZSIsImRlYm91bmNlZExvY2F0aW9uQ2hhbmdlIiwidXNlRGVib3VuY2UiLCJpZCIsInJlZGlyZWN0VG9JbmFjdGl2aXR5Um91dGUiLCJ1c2VDYWxsYmFjayIsIndpbmRvdyIsImxvY2F0aW9uIiwic3RhcnRzV2l0aCIsInJlZGlyZWN0UGFyYW0iLCJlbmNvZGVVUklDb21wb25lbnQiLCJyZXBsYWNlIiwicmV2b2tlVG9rZW5BbmRFeHBpcmUiLCJ1bmRlZmluZWQiLCJzZXRUb2tlbkFuZEV4cGlyYXRpb24iLCJqc29uIiwidG9rZW4iLCJyZWZyZXNoZWRUb2tlbiIsImV4cCIsInJlZnJlc2hDb29raWUiLCJmb3JjZVJlZnJlc2giLCJub3ciLCJNYXRoIiwicm91bmQiLCJEYXRlIiwiZ2V0VGltZSIsInJlbWFpbmluZ1RpbWUiLCJzZXRUaW1lb3V0IiwicmVxdWVzdCIsInJlcXVlc3RzIiwicG9zdCIsImhlYWRlcnMiLCJsYW5ndWFnZSIsInN0YXR1cyIsImUiLCJ0b2FzdCIsImVycm9yIiwibWVzc2FnZSIsInJlZnJlc2hDb29raWVBc3luYyIsInNraXBTZXRVc2VyIiwibG9nT3V0IiwicmVmcmVzaFBlcm1pc3Npb25zIiwicGFyYW1zIiwibG9jYWxlIiwiZ2V0IiwicXMiLCJzdHJpbmdpZnkiLCJFcnJvciIsImZldGNoRnVsbFVzZXIiLCJSZWFjdCIsInByZWZpbGxPbmx5IiwiYXV0b0xvZ2luUmVzdWx0IiwiYm9keSIsIkpTT04iLCJlbWFpbCIsInBhc3N3b3JkIiwiYXV0b0xvZ2luSnNvbiIsInB1c2giLCJ1c2VFZmZlY3QiLCJyZW1pbmRlciIsIm1heCIsIm1pbiIsImNsZWFyVGltZW91dCIsImZvcmNlTG9nT3V0IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsInVzZUNvbnRleHQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7SUFzQmFBLFlBQVk7ZUFBWkE7O0lBK1NBQyxPQUFPO2VBQVBBOzs7dUJBbFVZOzRCQUNjOzJEQUN4QjsrREFDb0U7K0JBQzdEO29FQUlFOzZCQUNPO3FCQUNOO3dCQUNDOzhCQUNNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNoQyx3Q0FBd0M7QUFFeEMsTUFBTUMsd0JBQVVDLElBQUFBLG9CQUFhLEVBQUMsQ0FBQztBQUUvQixNQUFNQyxpQkFBaUI7QUFFaEIsTUFBTUosZUFBd0QsQ0FBQyxFQUFFSyxRQUFRLEVBQUU7SUFDaEYsTUFBTSxFQUFFQyxZQUFZLEVBQUUsR0FBR0MsSUFBQUEsNkJBQWU7SUFDeEMsTUFBTSxDQUFDQyxNQUFNQyxRQUFRLEdBQUdDLElBQUFBLGVBQVE7SUFDaEMsTUFBTSxDQUFDQyxlQUFlQyxpQkFBaUIsR0FBR0YsSUFBQUEsZUFBUTtJQUNsRCxNQUFNLENBQUNHLGlCQUFpQkMsbUJBQW1CLEdBQUdKLElBQUFBLGVBQVE7SUFDdEQsTUFBTUssV0FBV0MsSUFBQUEsdUJBQVc7SUFDNUIsTUFBTUMsU0FBU0MsSUFBQUEscUJBQVM7SUFDeEIsK0JBQStCO0lBQy9CLE1BQU1DLE9BQU8sS0FBSyw0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
309
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm92aWRlcnMvQXV0aC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgdHlwZSB7IFBlcm1pc3Npb25zLCBVc2VyIH0gZnJvbSAncGF5bG9hZC9hdXRoJ1xuXG5pbXBvcnQgeyB1c2VNb2RhbCB9IGZyb20gJ0BmYWNlbGVzcy11aS9tb2RhbCdcbmltcG9ydCB7IHVzZVBhdGhuYW1lLCB1c2VSb3V0ZXIgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXG5pbXBvcnQgcXMgZnJvbSAncXMnXG5pbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSAncmVhY3QtdG9hc3RpZnknXG5cbmltcG9ydCB0eXBlIHsgQXV0aENvbnRleHQgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgdXNlRGVib3VuY2UgZnJvbSAnLi4vLi4vaG9va3MvdXNlRGVib3VuY2UnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9UcmFuc2xhdGlvbidcbmltcG9ydCB7IHJlcXVlc3RzIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2FwaSdcbmltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gJy4uL0NvbmZpZydcbmltcG9ydCB7IHVzZVNlYXJjaFBhcmFtcyB9IGZyb20gJy4uL1NlYXJjaFBhcmFtcydcbi8vIGltcG9ydCB7IHVzZUxvY2FsZSB9IGZyb20gJy4uL0xvY2FsZSdcblxuY29uc3QgQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoe30gYXMgQXV0aENvbnRleHQpXG5cbmNvbnN0IG1heFRpbWVvdXRUaW1lID0gMjE0NzQ4MzY0N1xuXG5leHBvcnQgY29uc3QgQXV0aFByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfT4gPSAoeyBjaGlsZHJlbiB9KSA9PiB7XG4gIGNvbnN0IHsgc2VhcmNoUGFyYW1zIH0gPSB1c2VTZWFyY2hQYXJhbXMoKVxuICBjb25zdCBbdXNlciwgc2V0VXNlcl0gPSB1c2VTdGF0ZTxVc2VyIHwgbnVsbD4oKVxuICBjb25zdCBbdG9rZW5Jbk1lbW9yeSwgc2V0VG9rZW5Jbk1lbW9yeV0gPSB1c2VTdGF0ZTxzdHJpbmc+KClcbiAgY29uc3QgW3Rva2VuRXhwaXJhdGlvbiwgc2V0VG9rZW5FeHBpcmF0aW9uXSA9IHVzZVN0YXRlPG51bWJlcj4oKVxuICBjb25zdCBwYXRobmFtZSA9IHVzZVBhdGhuYW1lKClcbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKClcbiAgLy8gY29uc3QgeyBjb2RlIH0gPSB1c2VMb2NhbGUoKVxuICBjb25zdCBjb2RlID0gJ2VuJyAvLyBUT0RPOiByZS1lbmFibGUgaTE4biBhc2FwXG5cbiAgY29uc3QgY29uZmlnID0gdXNlQ29uZmlnKClcblxuICBjb25zdCB7XG4gICAgYWRtaW46IHsgYXV0b0xvZ2luLCBpbmFjdGl2aXR5Um91dGU6IGxvZ291dEluYWN0aXZpdHlSb3V0ZSwgdXNlcjogdXNlclNsdWcgfSxcbiAgICByb3V0ZXM6IHsgYWRtaW4sIGFwaSB9LFxuICAgIHNlcnZlclVSTCxcbiAgfSA9IGNvbmZpZ1xuXG4gIGNvbnN0IFtwZXJtaXNzaW9ucywgc2V0UGVybWlzc2lvbnNdID0gdXNlU3RhdGU8UGVybWlzc2lvbnM+KClcblxuICBjb25zdCB7IGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKClcbiAgY29uc3QgeyBjbG9zZUFsbE1vZGFscywgb3Blbk1vZGFsIH0gPSB1c2VNb2RhbCgpXG4gIGNvbnN0IFtsYXN0TG9jYXRpb25DaGFuZ2UsIHNldExhc3RMb2NhdGlvbkNoYW5nZV0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBkZWJvdW5jZWRMb2NhdGlvbkNoYW5nZSA9IHVzZURlYm91bmNlKGxhc3RMb2NhdGlvbkNoYW5nZSwgMTAwMDApXG5cbiAgY29uc3QgaWQgPSB1c2VyPy5pZFxuXG4gIGNvbnN0IHJlZGlyZWN0VG9JbmFjdGl2aXR5Um91dGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5zdGFydHNXaXRoKGFkbWluKSkge1xuICAgICAgY29uc3QgcmVkaXJlY3RQYXJhbSA9IGA/cmVkaXJlY3Q9JHtlbmNvZGVVUklDb21wb25lbnQoXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKGFkbWluLCAnJyksXG4gICAgICApfWBcbiAgICAgIHJvdXRlci5yZXBsYWNlKGAke2FkbWlufSR7bG9nb3V0SW5hY3Rpdml0eVJvdXRlfSR7cmVkaXJlY3RQYXJhbX1gKVxuICAgIH0gZWxzZSB7XG4gICAgICByb3V0ZXIucmVwbGFjZShgJHthZG1pbn0ke2xvZ291dEluYWN0aXZpdHlSb3V0ZX1gKVxuICAgIH1cbiAgICBjbG9zZUFsbE1vZGFscygpXG4gIH0sIFtyb3V0ZXIsIGFkbWluLCBsb2dvdXRJbmFjdGl2aXR5Um91dGUsIGNsb3NlQWxsTW9kYWxzXSlcblxuICBjb25zdCByZXZva2VUb2tlbkFuZEV4cGlyZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRUb2tlbkluTWVtb3J5KHVuZGVmaW5lZClcbiAgICBzZXRUb2tlbkV4cGlyYXRpb24odW5kZWZpbmVkKVxuICB9LCBbXSlcblxuICBjb25zdCBzZXRUb2tlbkFuZEV4cGlyYXRpb24gPSB1c2VDYWxsYmFjayhcbiAgICAoanNvbikgPT4ge1xuICAgICAgY29uc3QgdG9rZW4gPSBqc29uPy50b2tlbiB8fCBqc29uPy5yZWZyZXNoZWRUb2tlblxuICAgICAgaWYgKHRva2VuICYmIGpzb24/LmV4cCkge1xuICAgICAgICBzZXRUb2tlbkluTWVtb3J5KHRva2VuKVxuICAgICAgICBzZXRUb2tlbkV4cGlyYXRpb24oanNvbi5leHApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXZva2VUb2tlbkFuZEV4cGlyZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbcmV2b2tlVG9rZW5BbmRFeHBpcmVdLFxuICApXG5cbiAgY29uc3QgcmVmcmVzaENvb2tpZSA9IHVzZUNhbGxiYWNrKFxuICAgIChmb3JjZVJlZnJlc2g/OiBib29sZWFuKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBNYXRoLnJvdW5kKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMClcbiAgICAgIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSAodHlwZW9mIHRva2VuRXhwaXJhdGlvbiA9PT0gJ251bWJlcicgPyB0b2tlbkV4cGlyYXRpb24gOiAwKSAtIG5vd1xuXG4gICAgICBpZiAoZm9yY2VSZWZyZXNoIHx8ICh0b2tlbkV4cGlyYXRpb24gJiYgcmVtYWluaW5nVGltZSA8IDEyMCkpIHtcbiAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCByZXF1ZXN0cy5wb3N0KGAke3NlcnZlclVSTH0ke2FwaX0vJHt1c2VyU2x1Z30vcmVmcmVzaC10b2tlbmAsIHtcbiAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiBpMThuLmxhbmd1YWdlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgaWYgKHJlcXVlc3Quc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgY29uc3QganNvbiA9IGF3YWl0IHJlcXVlc3QuanNvbigpXG4gICAgICAgICAgICAgIHNldFVzZXIoanNvbi51c2VyKVxuICAgICAgICAgICAgICBzZXRUb2tlbkFuZEV4cGlyYXRpb24oanNvbilcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldFVzZXIobnVsbClcbiAgICAgICAgICAgICAgcmVkaXJlY3RUb0luYWN0aXZpdHlSb3V0ZSgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdG9hc3QuZXJyb3IoZS5tZXNzYWdlKVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwMClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIHRva2VuRXhwaXJhdGlvbixcbiAgICAgIHNlcnZlclVSTCxcbiAgICAgIGFwaSxcbiAgICAgIHVzZXJTbHVnLFxuICAgICAgaTE4bixcbiAgICAgIHJlZGlyZWN0VG9JbmFjdGl2aXR5Um91dGUsXG4gICAgICBzZXRUb2tlbkFuZEV4cGlyYXRpb24sXG4gICAgXSxcbiAgKVxuXG4gIGNvbnN0IHJlZnJlc2hDb29raWVBc3luYyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChza2lwU2V0VXNlcj86IGJvb2xlYW4pOiBQcm9taXNlPFVzZXI+ID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCByZXF1ZXN0cy5wb3N0KGAke3NlcnZlclVSTH0ke2FwaX0vJHt1c2VyU2x1Z30vcmVmcmVzaC10b2tlbmAsIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgY29uc3QganNvbiA9IGF3YWl0IHJlcXVlc3QuanNvbigpXG4gICAgICAgICAgaWYgKCFza2lwU2V0VXNlcikge1xuICAgICAgICAgICAgc2V0VXNlcihqc29uLnVzZXIpXG4gICAgICAgICAgICBzZXRUb2tlbkFuZEV4cGlyYXRpb24oanNvbilcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGpzb24udXNlclxuICAgICAgICB9XG5cbiAgICAgICAgc2V0VXNlcihudWxsKVxuICAgICAgICByZWRpcmVjdFRvSW5hY3Rpdml0eVJvdXRlKClcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdG9hc3QuZXJyb3IoYFJlZnJlc2hpbmcgdG9rZW4gZmFpbGVkOiAke2UubWVzc2FnZX1gKVxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlcnZlclVSTCwgYXBpLCB1c2VyU2x1ZywgaTE4biwgcmVkaXJlY3RUb0luYWN0aXZpdHlSb3V0ZSwgc2V0VG9rZW5BbmRFeHBpcmF0aW9uXSxcbiAgKVxuXG4gIGNvbnN0IGxvZ091dCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRVc2VyKG51bGwpXG4gICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUoKVxuICAgIHRyeSB7XG4gICAgICByZXF1ZXN0cy5wb3N0KGAke3NlcnZlclVSTH0ke2FwaX0vJHt1c2VyU2x1Z30vbG9nb3V0YClcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0b2FzdC5lcnJvcihgTG9nZ2luZyBvdXQgZmFpbGVkOiAke2UubWVzc2FnZX1gKVxuICAgIH1cbiAgfSwgW3NlcnZlclVSTCwgYXBpLCB1c2VyU2x1ZywgcmV2b2tlVG9rZW5BbmRFeHBpcmVdKVxuXG4gIGNvbnN0IHJlZnJlc2hQZXJtaXNzaW9ucyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBsb2NhbGU6IGNvZGUsXG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgcmVxdWVzdHMuZ2V0KGAke3NlcnZlclVSTH0ke2FwaX0vYWNjZXNzPyR7cXMuc3RyaW5naWZ5KHBhcmFtcyl9YCwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IGkxOG4ubGFuZ3VhZ2UsXG4gICAgICAgIH0sXG4gICAgICB9KVxuXG4gICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICBjb25zdCBqc29uOiBQZXJtaXNzaW9ucyA9IGF3YWl0IHJlcXVlc3QuanNvbigpXG4gICAgICAgIHNldFBlcm1pc3Npb25zKGpzb24pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZldGNoaW5nIHBlcm1pc3Npb25zIGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICR7cmVxdWVzdC5zdGF0dXN9YClcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0b2FzdC5lcnJvcihgUmVmcmVzaGluZyBwZXJtaXNzaW9ucyBmYWlsZWQ6ICR7ZS5tZXNzYWdlfWApXG4gICAgfVxuICB9LCBbc2VydmVyVVJMLCBhcGksIGkxOG4sIGNvZGVdKVxuXG4gIGNvbnN0IGZldGNoRnVsbFVzZXIgPSBSZWFjdC51c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCByZXF1ZXN0cy5nZXQoYCR7c2VydmVyVVJMfSR7YXBpfS8ke3VzZXJTbHVnfS9tZWAsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiBpMThuLmxhbmd1YWdlLFxuICAgICAgICB9LFxuICAgICAgfSlcblxuICAgICAgaWYgKHJlcXVlc3Quc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgY29uc3QganNvbiA9IGF3YWl0IHJlcXVlc3QuanNvbigpXG5cbiAgICAgICAgaWYgKGpzb24/LnVzZXIpIHtcbiAgICAgICAgICBzZXRVc2VyKGpzb24udXNlcilcbiAgICAgICAgICBpZiAoanNvbj8udG9rZW4pIHtcbiAgICAgICAgICAgIHNldFRva2VuQW5kRXhwaXJhdGlvbihqc29uKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChhdXRvTG9naW4gJiYgYXV0b0xvZ2luLnByZWZpbGxPbmx5ICE9PSB0cnVlKSB7XG4gICAgICAgICAgLy8gYXV0byBsb2ctaW4gd2l0aCB0aGUgcHJvdmlkZWQgYXV0b0xvZ2luIGNyZWRlbnRpYWxzLiBUaGlzIGlzIHVzZWQgaW4gZGV2IG1vZGVcbiAgICAgICAgICAvLyBzbyB5b3UgZG9uJ3QgaGF2ZSB0byBsb2cgaW4gb3ZlciBhbmQgb3ZlciBhZ2FpblxuICAgICAgICAgIGNvbnN0IGF1dG9Mb2dpblJlc3VsdCA9IGF3YWl0IHJlcXVlc3RzLnBvc3QoYCR7c2VydmVyVVJMfSR7YXBpfS8ke3VzZXJTbHVnfS9sb2dpbmAsIHtcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgZW1haWw6IGF1dG9Mb2dpbi5lbWFpbCxcbiAgICAgICAgICAgICAgcGFzc3dvcmQ6IGF1dG9Mb2dpbi5wYXNzd29yZCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICBpZiAoYXV0b0xvZ2luUmVzdWx0LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICBjb25zdCBhdXRvTG9naW5Kc29uID0gYXdhaXQgYXV0b0xvZ2luUmVzdWx0Lmpzb24oKVxuICAgICAgICAgICAgc2V0VXNlcihhdXRvTG9naW5Kc29uLnVzZXIpXG4gICAgICAgICAgICBpZiAoYXV0b0xvZ2luSnNvbj8udG9rZW4pIHtcbiAgICAgICAgICAgICAgc2V0VG9rZW5BbmRFeHBpcmF0aW9uKGF1dG9Mb2dpbkpzb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByb3V0ZXIucHVzaChcbiAgICAgICAgICAgICAgdHlwZW9mIHNlYXJjaFBhcmFtc1sncmVkaXJlY3QnXSA9PT0gJ3N0cmluZycgPyBzZWFyY2hQYXJhbXNbJ3JlZGlyZWN0J10gOiBhZG1pbixcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0VXNlcihudWxsKVxuICAgICAgICAgICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRVc2VyKG51bGwpXG4gICAgICAgICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdG9hc3QuZXJyb3IoYEZldGNoaW5nIHVzZXIgZmFpbGVkOiAke2UubWVzc2FnZX1gKVxuICAgIH1cbiAgfSwgW1xuICAgIHNlcnZlclVSTCxcbiAgICBhcGksXG4gICAgdXNlclNsdWcsXG4gICAgaTE4bi5sYW5ndWFnZSxcbiAgICBhdXRvTG9naW4sXG4gICAgc2V0VG9rZW5BbmRFeHBpcmF0aW9uLFxuICAgIHJvdXRlcixcbiAgICBzZWFyY2hQYXJhbXMsXG4gICAgYWRtaW4sXG4gICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUsXG4gIF0pXG5cbiAgLy8gT24gbW91bnQsIGdldCB1c2VyIGFuZCBzZXRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaEZ1bGxVc2VyKClcbiAgfSwgW2ZldGNoRnVsbFVzZXJdKVxuXG4gIC8vIFdoZW4gbG9jYXRpb24gY2hhbmdlcywgcmVmcmVzaCBjb29raWVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaWQpIHtcbiAgICAgIHJlZnJlc2hDb29raWUoKVxuICAgIH1cbiAgfSwgW2RlYm91bmNlZExvY2F0aW9uQ2hhbmdlLCByZWZyZXNoQ29va2llLCBpZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRMYXN0TG9jYXRpb25DaGFuZ2UoRGF0ZS5ub3coKSlcbiAgfSwgW3BhdGhuYW1lXSlcblxuICAvLyBXaGVuIHVzZXIgY2hhbmdlcywgZ2V0IG5ldyBhY2Nlc3NcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaWQpIHtcbiAgICAgIHJlZnJlc2hQZXJtaXNzaW9ucygpXG4gICAgfVxuICB9LCBbaTE4biwgaWQsIGFwaSwgc2VydmVyVVJMLCByZWZyZXNoUGVybWlzc2lvbnNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IHJlbWluZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PlxuICAgIGNvbnN0IG5vdyA9IE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKVxuICAgIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSB0eXBlb2YgdG9rZW5FeHBpcmF0aW9uID09PSAnbnVtYmVyJyA/IHRva2VuRXhwaXJhdGlvbiAtIG5vdyA6IDBcblxuICAgIGlmIChyZW1haW5pbmdUaW1lID4gMCkge1xuICAgICAgcmVtaW5kZXIgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgb3Blbk1vZGFsKCdzdGF5LWxvZ2dlZC1pbicpXG4gICAgICAgIH0sXG4gICAgICAgIE1hdGgubWF4KE1hdGgubWluKChyZW1haW5pbmdUaW1lIC0gNjApICogMTAwMCwgbWF4VGltZW91dFRpbWUpKSxcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHJlbWluZGVyKSBjbGVhclRpbWVvdXQocmVtaW5kZXIpXG4gICAgfVxuICB9LCBbdG9rZW5FeHBpcmF0aW9uLCBvcGVuTW9kYWxdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGZvcmNlTG9nT3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PlxuICAgIGNvbnN0IG5vdyA9IE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKVxuICAgIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSB0eXBlb2YgdG9rZW5FeHBpcmF0aW9uID09PSAnbnVtYmVyJyA/IHRva2VuRXhwaXJhdGlvbiAtIG5vdyA6IDBcblxuICAgIGlmIChyZW1haW5pbmdUaW1lID4gMCkge1xuICAgICAgZm9yY2VMb2dPdXQgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgc2V0VXNlcihudWxsKVxuICAgICAgICAgIHJldm9rZVRva2VuQW5kRXhwaXJlKClcbiAgICAgICAgICByZWRpcmVjdFRvSW5hY3Rpdml0eVJvdXRlKClcbiAgICAgICAgfSxcbiAgICAgICAgTWF0aC5tYXgoTWF0aC5taW4ocmVtYWluaW5nVGltZSAqIDEwMDAsIG1heFRpbWVvdXRUaW1lKSwgMCksXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChmb3JjZUxvZ091dCkgY2xlYXJUaW1lb3V0KGZvcmNlTG9nT3V0KVxuICAgIH1cbiAgfSwgW3Rva2VuRXhwaXJhdGlvbiwgY2xvc2VBbGxNb2RhbHMsIGkxOG4sIHJlZGlyZWN0VG9JbmFjdGl2aXR5Um91dGUsIHJldm9rZVRva2VuQW5kRXhwaXJlXSlcblxuICByZXR1cm4gKFxuICAgIDxDb250ZXh0LlByb3ZpZGVyXG4gICAgICB2YWx1ZT17e1xuICAgICAgICBmZXRjaEZ1bGxVc2VyLFxuICAgICAgICBsb2dPdXQsXG4gICAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgICByZWZyZXNoQ29va2llLFxuICAgICAgICByZWZyZXNoQ29va2llQXN5bmMsXG4gICAgICAgIHJlZnJlc2hQZXJtaXNzaW9ucyxcbiAgICAgICAgc2V0UGVybWlzc2lvbnMsXG4gICAgICAgIHNldFVzZXIsXG4gICAgICAgIHRva2VuOiB0b2tlbkluTWVtb3J5LFxuICAgICAgICB1c2VyLFxuICAgICAgfX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9Db250ZXh0LlByb3ZpZGVyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCB1c2VBdXRoID0gPFQgPSBVc2VyLD4oKTogQXV0aENvbnRleHQ8VD4gPT4gdXNlQ29udGV4dChDb250ZXh0KSBhcyBBdXRoQ29udGV4dDxUPlxuIl0sIm5hbWVzIjpbInVzZU1vZGFsIiwidXNlUGF0aG5hbWUiLCJ1c2VSb3V0ZXIiLCJxcyIsIlJlYWN0IiwiY3JlYXRlQ29udGV4dCIsInVzZUNhbGxiYWNrIiwidXNlQ29udGV4dCIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidG9hc3QiLCJ1c2VEZWJvdW5jZSIsInVzZVRyYW5zbGF0aW9uIiwicmVxdWVzdHMiLCJ1c2VDb25maWciLCJ1c2VTZWFyY2hQYXJhbXMiLCJDb250ZXh0IiwibWF4VGltZW91dFRpbWUiLCJBdXRoUHJvdmlkZXIiLCJjaGlsZHJlbiIsInNlYXJjaFBhcmFtcyIsInVzZXIiLCJzZXRVc2VyIiwidG9rZW5Jbk1lbW9yeSIsInNldFRva2VuSW5NZW1vcnkiLCJ0b2tlbkV4cGlyYXRpb24iLCJzZXRUb2tlbkV4cGlyYXRpb24iLCJwYXRobmFtZSIsInJvdXRlciIsImNvZGUiLCJjb25maWciLCJhZG1pbiIsImF1dG9Mb2dpbiIsImluYWN0aXZpdHlSb3V0ZSIsImxvZ291dEluYWN0aXZpdHlSb3V0ZSIsInVzZXJTbHVnIiwicm91dGVzIiwiYXBpIiwic2VydmVyVVJMIiwicGVybWlzc2lvbnMiLCJzZXRQZXJtaXNzaW9ucyIsImkxOG4iLCJjbG9zZUFsbE1vZGFscyIsIm9wZW5Nb2RhbCIsImxhc3RMb2NhdGlvbkNoYW5nZSIsInNldExhc3RMb2NhdGlvbkNoYW5nZSIsImRlYm91bmNlZExvY2F0aW9uQ2hhbmdlIiwiaWQiLCJyZWRpcmVjdFRvSW5hY3Rpdml0eVJvdXRlIiwid2luZG93IiwibG9jYXRpb24iLCJzdGFydHNXaXRoIiwicmVkaXJlY3RQYXJhbSIsImVuY29kZVVSSUNvbXBvbmVudCIsInJlcGxhY2UiLCJyZXZva2VUb2tlbkFuZEV4cGlyZSIsInVuZGVmaW5lZCIsInNldFRva2VuQW5kRXhwaXJhdGlvbiIsImpzb24iLCJ0b2tlbiIsInJlZnJlc2hlZFRva2VuIiwiZXhwIiwicmVmcmVzaENvb2tpZSIsImZvcmNlUmVmcmVzaCIsIm5vdyIsIk1hdGgiLCJyb3VuZCIsIkRhdGUiLCJnZXRUaW1lIiwicmVtYWluaW5nVGltZSIsInNldFRpbWVvdXQiLCJyZXF1ZXN0IiwicG9zdCIsImhlYWRlcnMiLCJsYW5ndWFnZSIsInN0YXR1cyIsImUiLCJlcnJvciIsIm1lc3NhZ2UiLCJyZWZyZXNoQ29va2llQXN5bmMiLCJza2lwU2V0VXNlciIsImxvZ091dCIsInJlZnJlc2hQZXJtaXNzaW9ucyIsInBhcmFtcyIsImxvY2FsZSIsImdldCIsInN0cmluZ2lmeSIsIkVycm9yIiwiZmV0Y2hGdWxsVXNlciIsInByZWZpbGxPbmx5IiwiYXV0b0xvZ2luUmVzdWx0IiwiYm9keSIsIkpTT04iLCJlbWFpbCIsInBhc3N3b3JkIiwiYXV0b0xvZ2luSnNvbiIsInB1c2giLCJyZW1pbmRlciIsIm1heCIsIm1pbiIsImNsZWFyVGltZW91dCIsImZvcmNlTG9nT3V0IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsInVzZUF1dGgiXSwibWFwcGluZ3MiOiJBQUFBO0FBR0EsU0FBU0EsUUFBUSxRQUFRLHFCQUFvQjtBQUM3QyxTQUFTQyxXQUFXLEVBQUVDLFNBQVMsUUFBUSxrQkFBaUI7QUFDeEQsT0FBT0MsUUFBUSxLQUFJO0FBQ25CLE9BQU9DLFNBQVNDLGFBQWEsRUFBRUMsV0FBVyxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsRUFBRUMsUUFBUSxRQUFRLFFBQU87QUFDMUYsU0FBU0MsS0FBSyxRQUFRLGlCQUFnQjtBQUl0QyxPQUFPQyxpQkFBaUIsMEJBQXlCO0FBQ2pELFNBQVNDLGNBQWMsUUFBUSw4QkFBNkI7QUFDNUQsU0FBU0MsUUFBUSxRQUFRLHNCQUFxQjtBQUM5QyxTQUFTQyxTQUFTLFFBQVEsWUFBVztBQUNyQyxTQUFTQyxlQUFlLFFBQVEsa0JBQWlCO0FBQ2pELHdDQUF3QztBQUV4QyxNQUFNQyx3QkFBVVgsY0FBYyxDQUFDO0FBRS9CLE1BQU1ZLGlCQUFpQjtBQUV2QixPQUFPLE1BQU1DLGVBQXdELENBQUMsRUFBRUMsUUFBUSxFQUFFO0lBQ2hGLE1BQU0sRUFBRUMsWUFBWSxFQUFFLEdBQUdMO0lBQ3pCLE1BQU0sQ0FBQ00sTUFBTUMsUUFBUSxHQUFHYjtJQUN4QixNQUFNLENBQUNjLGVBQWVDLGlCQUFpQixHQUFHZjtJQUMxQyxNQUFN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
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
1
+ export { };
5
2
 
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm92aWRlcnMvQXV0aC90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBlcm1pc3Npb25zLCBVc2VyIH0gZnJvbSAncGF5bG9hZC9hdXRoJ1xuXG5leHBvcnQgdHlwZSBBdXRoQ29udGV4dDxUID0gVXNlcj4gPSB7XG4gIGZldGNoRnVsbFVzZXI6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgbG9nT3V0OiAoKSA9PiB2b2lkXG4gIHBlcm1pc3Npb25zPzogUGVybWlzc2lvbnNcbiAgcmVmcmVzaENvb2tpZTogKGZvcmNlUmVmcmVzaD86IGJvb2xlYW4pID0+IHZvaWRcbiAgcmVmcmVzaENvb2tpZUFzeW5jOiAoKSA9PiBQcm9taXNlPFVzZXI+XG4gIHJlZnJlc2hQZXJtaXNzaW9uczogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRQZXJtaXNzaW9uczogKHBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucykgPT4gdm9pZFxuICBzZXRVc2VyOiAodXNlcjogVCkgPT4gdm9pZFxuICB0b2tlbj86IHN0cmluZ1xuICB1c2VyPzogVCB8IG51bGxcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxXQVdDIn0=
@@ -1,36 +1,10 @@
1
1
  'use client';
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- function _export(target, all) {
7
- for(var name in all)Object.defineProperty(target, name, {
8
- enumerable: true,
9
- get: all[name]
10
- });
11
- }
12
- _export(exports, {
13
- ClientFunctionProvider: function() {
14
- return ClientFunctionProvider;
15
- },
16
- useAddClientFunction: function() {
17
- return useAddClientFunction;
18
- },
19
- useClientFunctions: function() {
20
- return useClientFunctions;
21
- }
22
- });
23
- const _react = /*#__PURE__*/ _interop_require_default(require("react"));
24
- function _interop_require_default(obj) {
25
- return obj && obj.__esModule ? obj : {
26
- default: obj
27
- };
28
- }
29
- const AddClientFunctionContext = /*#__PURE__*/ _react.default.createContext(()=>null);
30
- const ClientFunctionsContext = /*#__PURE__*/ _react.default.createContext({});
31
- const ClientFunctionProvider = ({ children })=>{
32
- const [clientFunctions, setClientFunctions] = _react.default.useState({});
33
- const addClientFunction = _react.default.useCallback((args)=>{
2
+ import React from 'react';
3
+ const AddClientFunctionContext = /*#__PURE__*/ React.createContext(()=>null);
4
+ const ClientFunctionsContext = /*#__PURE__*/ React.createContext({});
5
+ export const ClientFunctionProvider = ({ children })=>{
6
+ const [clientFunctions, setClientFunctions] = React.useState({});
7
+ const addClientFunction = React.useCallback((args)=>{
34
8
  setClientFunctions((state)=>{
35
9
  const newState = {
36
10
  ...state
@@ -39,15 +13,15 @@ const ClientFunctionProvider = ({ children })=>{
39
13
  return newState;
40
14
  });
41
15
  }, []);
42
- return /*#__PURE__*/ _react.default.createElement(AddClientFunctionContext.Provider, {
16
+ return /*#__PURE__*/ React.createElement(AddClientFunctionContext.Provider, {
43
17
  value: addClientFunction
44
- }, /*#__PURE__*/ _react.default.createElement(ClientFunctionsContext.Provider, {
18
+ }, /*#__PURE__*/ React.createElement(ClientFunctionsContext.Provider, {
45
19
  value: clientFunctions
46
20
  }, children));
47
21
  };
48
- const useAddClientFunction = (key, func)=>{
49
- const addClientFunction = _react.default.useContext(AddClientFunctionContext);
50
- _react.default.useEffect(()=>{
22
+ export const useAddClientFunction = (key, func)=>{
23
+ const addClientFunction = React.useContext(AddClientFunctionContext);
24
+ React.useEffect(()=>{
51
25
  addClientFunction({
52
26
  func,
53
27
  key
@@ -58,8 +32,8 @@ const useAddClientFunction = (key, func)=>{
58
32
  addClientFunction
59
33
  ]);
60
34
  };
61
- const useClientFunctions = ()=>{
62
- return _react.default.useContext(ClientFunctionsContext);
35
+ export const useClientFunctions = ()=>{
36
+ return React.useContext(ClientFunctionsContext);
63
37
  };
64
38
 
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm92aWRlcnMvQ2xpZW50RnVuY3Rpb24vaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG50eXBlIEFkZENsaWVudEZ1bmN0aW9uQ29udGV4dFR5cGUgPSAoZnVuYzogYW55KSA9PiB2b2lkXG50eXBlIENsaWVudEZ1bmN0aW9uc0NvbnRleHRUeXBlID0gUmVjb3JkPHN0cmluZywgYW55PlxuXG5jb25zdCBBZGRDbGllbnRGdW5jdGlvbkNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PEFkZENsaWVudEZ1bmN0aW9uQ29udGV4dFR5cGU+KCgpID0+IG51bGwpXG5jb25zdCBDbGllbnRGdW5jdGlvbnNDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxDbGllbnRGdW5jdGlvbnNDb250ZXh0VHlwZT4oe30pXG5cbnR5cGUgQWRkRnVuY3Rpb25BcmdzID0geyBmdW5jOiBhbnk7IGtleTogc3RyaW5nIH1cblxuZXhwb3J0IGNvbnN0IENsaWVudEZ1bmN0aW9uUHJvdmlkZXI6IFJlYWN0LkZDPHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9PiA9ICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgY29uc3QgW2NsaWVudEZ1bmN0aW9ucywgc2V0Q2xpZW50RnVuY3Rpb25zXSA9IFJlYWN0LnVzZVN0YXRlKHt9KVxuXG4gIGNvbnN0IGFkZENsaWVudEZ1bmN0aW9uID0gUmVhY3QudXNlQ2FsbGJhY2soKGFyZ3M6IEFkZEZ1bmN0aW9uQXJncykgPT4ge1xuICAgIHNldENsaWVudEZ1bmN0aW9ucygoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IG5ld1N0YXRlID0geyAuLi5zdGF0ZSB9XG4gICAgICBuZXdTdGF0ZVthcmdzLmtleV0gPSBhcmdzLmZ1bmNcbiAgICAgIHJldHVybiBuZXdTdGF0ZVxuICAgIH0pXG4gIH0sIFtdKVxuXG4gIHJldHVybiAoXG4gICAgPEFkZENsaWVudEZ1bmN0aW9uQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17YWRkQ2xpZW50RnVuY3Rpb259PlxuICAgICAgPENsaWVudEZ1bmN0aW9uc0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NsaWVudEZ1bmN0aW9uc30+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvQ2xpZW50RnVuY3Rpb25zQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L0FkZENsaWVudEZ1bmN0aW9uQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgdXNlQWRkQ2xpZW50RnVuY3Rpb24gPSAoa2V5OiBzdHJpbmcsIGZ1bmM6IGFueSkgPT4ge1xuICBjb25zdCBhZGRDbGllbnRGdW5jdGlvbiA9IFJlYWN0LnVzZUNvbnRleHQoQWRkQ2xpZW50RnVuY3Rpb25Db250ZXh0KVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgYWRkQ2xpZW50RnVuY3Rpb24oe1xuICAgICAgZnVuYyxcbiAgICAgIGtleSxcbiAgICB9KVxuICB9LCBbZnVuYywga2V5LCBhZGRDbGllbnRGdW5jdGlvbl0pXG59XG5cbmV4cG9ydCBjb25zdCB1c2VDbGllbnRGdW5jdGlvbnMgPSAoKSA9PiB7XG4gIHJldHVybiBSZWFjdC51c2VDb250ZXh0KENsaWVudEZ1bmN0aW9uc0NvbnRleHQpXG59XG4iXSwibmFtZXMiOlsiQ2xpZW50RnVuY3Rpb25Qcm92aWRlciIsInVzZUFkZENsaWVudEZ1bmN0aW9uIiwidXNlQ2xpZW50RnVuY3Rpb25zIiwiQWRkQ2xpZW50RnVuY3Rpb25Db250ZXh0IiwiUmVhY3QiLCJjcmVhdGVDb250ZXh0IiwiQ2xpZW50RnVuY3Rpb25zQ29udGV4dCIsImNoaWxkcmVuIiwiY2xpZW50RnVuY3Rpb25zIiwic2V0Q2xpZW50RnVuY3Rpb25zIiwidXNlU3RhdGUiLCJhZGRDbGllbnRGdW5jdGlvbiIsInVzZUNhbGxiYWNrIiwiYXJncyIsInN0YXRlIiwibmV3U3RhdGUiLCJrZXkiLCJmdW5jIiwiUHJvdmlkZXIiLCJ2YWx1ZSIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7SUFXYUEsc0JBQXNCO2VBQXRCQTs7SUFvQkFDLG9CQUFvQjtlQUFwQkE7O0lBV0FDLGtCQUFrQjtlQUFsQkE7Ozs4REF6Q0s7Ozs7OztBQUtsQixNQUFNQyx5Q0FBMkJDLGNBQUssQ0FBQ0MsYUFBYSxDQUErQixJQUFNO0FBQ3pGLE1BQU1DLHVDQUF5QkYsY0FBSyxDQUFDQyxhQUFhLENBQTZCLENBQUM7QUFJekUsTUFBTUwseUJBQWtFLENBQUMsRUFBRU8sUUFBUSxFQUFFO0lBQzFGLE1BQU0sQ0FBQ0MsaUJBQWlCQyxtQkFBbUIsR0FBR0wsY0FBSyxDQUFDTSxRQUFRLENBQUMsQ0FBQztJQUU5RCxNQUFNQyxvQkFBb0JQLGNBQUssQ0FBQ1EsV0FBVyxDQUFDLENBQUNDO1FBQzNDSixtQkFBbUIsQ0FBQ0s7WUFDbEIsTUFBTUMsV0FBVztnQkFBRSxHQUFHRCxLQUFLO1lBQUM7WUFDNUJDLFFBQVEsQ0FBQ0YsS0FBS0csR0FBRyxDQUFDLEdBQUdILEtBQUtJLElBQUk7WUFDOUIsT0FBT0Y7UUFDVDtJQUNGLEdBQUcsRUFBRTtJQUVMLHFCQUNFLDZCQUFDWix5QkFBeUJlLFFBQVE7UUFBQ0MsT0FBT1I7cUJBQ3hDLDZCQUFDTCx1QkFBdUJZLFFBQVE7UUFBQ0MsT0FBT1g7T0FDckNEO0FBSVQ7QUFFTyxNQUFNTix1QkFBdUIsQ0FBQ2UsS0FBYUM7SUFDaEQsTUFBTU4sb0JBQW9CUCxjQUFLLENBQUNnQixVQUFVLENBQUNqQjtJQUUzQ0MsY0FBSyxDQUFDaUIsU0FBUyxDQUFDO1FBQ2RWLGtCQUFrQjtZQUNoQk07WUFDQUQ7UUFDRjtJQUNGLEdBQUc7UUFBQ0M7UUFBTUQ7UUFBS0w7S0FBa0I7QUFDbkM7QUFFTyxNQUFNVCxxQkFBcUI7SUFDaEMsT0FBT0UsY0FBSyxDQUFDZ0IsVUFBVSxDQUFDZDtBQUMxQiJ9
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm92aWRlcnMvQ2xpZW50RnVuY3Rpb24vaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG50eXBlIEFkZENsaWVudEZ1bmN0aW9uQ29udGV4dFR5cGUgPSAoZnVuYzogYW55KSA9PiB2b2lkXG50eXBlIENsaWVudEZ1bmN0aW9uc0NvbnRleHRUeXBlID0gUmVjb3JkPHN0cmluZywgYW55PlxuXG5jb25zdCBBZGRDbGllbnRGdW5jdGlvbkNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PEFkZENsaWVudEZ1bmN0aW9uQ29udGV4dFR5cGU+KCgpID0+IG51bGwpXG5jb25zdCBDbGllbnRGdW5jdGlvbnNDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxDbGllbnRGdW5jdGlvbnNDb250ZXh0VHlwZT4oe30pXG5cbnR5cGUgQWRkRnVuY3Rpb25BcmdzID0geyBmdW5jOiBhbnk7IGtleTogc3RyaW5nIH1cblxuZXhwb3J0IGNvbnN0IENsaWVudEZ1bmN0aW9uUHJvdmlkZXI6IFJlYWN0LkZDPHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9PiA9ICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgY29uc3QgW2NsaWVudEZ1bmN0aW9ucywgc2V0Q2xpZW50RnVuY3Rpb25zXSA9IFJlYWN0LnVzZVN0YXRlKHt9KVxuXG4gIGNvbnN0IGFkZENsaWVudEZ1bmN0aW9uID0gUmVhY3QudXNlQ2FsbGJhY2soKGFyZ3M6IEFkZEZ1bmN0aW9uQXJncykgPT4ge1xuICAgIHNldENsaWVudEZ1bmN0aW9ucygoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IG5ld1N0YXRlID0geyAuLi5zdGF0ZSB9XG4gICAgICBuZXdTdGF0ZVthcmdzLmtleV0gPSBhcmdzLmZ1bmNcbiAgICAgIHJldHVybiBuZXdTdGF0ZVxuICAgIH0pXG4gIH0sIFtdKVxuXG4gIHJldHVybiAoXG4gICAgPEFkZENsaWVudEZ1bmN0aW9uQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17YWRkQ2xpZW50RnVuY3Rpb259PlxuICAgICAgPENsaWVudEZ1bmN0aW9uc0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NsaWVudEZ1bmN0aW9uc30+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvQ2xpZW50RnVuY3Rpb25zQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L0FkZENsaWVudEZ1bmN0aW9uQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgdXNlQWRkQ2xpZW50RnVuY3Rpb24gPSAoa2V5OiBzdHJpbmcsIGZ1bmM6IGFueSkgPT4ge1xuICBjb25zdCBhZGRDbGllbnRGdW5jdGlvbiA9IFJlYWN0LnVzZUNvbnRleHQoQWRkQ2xpZW50RnVuY3Rpb25Db250ZXh0KVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgYWRkQ2xpZW50RnVuY3Rpb24oe1xuICAgICAgZnVuYyxcbiAgICAgIGtleSxcbiAgICB9KVxuICB9LCBbZnVuYywga2V5LCBhZGRDbGllbnRGdW5jdGlvbl0pXG59XG5cbmV4cG9ydCBjb25zdCB1c2VDbGllbnRGdW5jdGlvbnMgPSAoKSA9PiB7XG4gIHJldHVybiBSZWFjdC51c2VDb250ZXh0KENsaWVudEZ1bmN0aW9uc0NvbnRleHQpXG59XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJBZGRDbGllbnRGdW5jdGlvbkNvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwiQ2xpZW50RnVuY3Rpb25zQ29udGV4dCIsIkNsaWVudEZ1bmN0aW9uUHJvdmlkZXIiLCJjaGlsZHJlbiIsImNsaWVudEZ1bmN0aW9ucyIsInNldENsaWVudEZ1bmN0aW9ucyIsInVzZVN0YXRlIiwiYWRkQ2xpZW50RnVuY3Rpb24iLCJ1c2VDYWxsYmFjayIsImFyZ3MiLCJzdGF0ZSIsIm5ld1N0YXRlIiwia2V5IiwiZnVuYyIsIlByb3ZpZGVyIiwidmFsdWUiLCJ1c2VBZGRDbGllbnRGdW5jdGlvbiIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VDbGllbnRGdW5jdGlvbnMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsT0FBT0EsV0FBVyxRQUFPO0FBS3pCLE1BQU1DLHlDQUEyQkQsTUFBTUUsYUFBYSxDQUErQixJQUFNO0FBQ3pGLE1BQU1DLHVDQUF5QkgsTUFBTUUsYUFBYSxDQUE2QixDQUFDO0FBSWhGLE9BQU8sTUFBTUUseUJBQWtFLENBQUMsRUFBRUMsUUFBUSxFQUFFO0lBQzFGLE1BQU0sQ0FBQ0MsaUJBQWlCQyxtQkFBbUIsR0FBR1AsTUFBTVEsUUFBUSxDQUFDLENBQUM7SUFFOUQsTUFBTUMsb0JBQW9CVCxNQUFNVSxXQUFXLENBQUMsQ0FBQ0M7UUFDM0NKLG1CQUFtQixDQUFDSztZQUNsQixNQUFNQyxXQUFXO2dCQUFFLEdBQUdELEtBQUs7WUFBQztZQUM1QkMsUUFBUSxDQUFDRixLQUFLRyxHQUFHLENBQUMsR0FBR0gsS0FBS0ksSUFBSTtZQUM5QixPQUFPRjtRQUNUO0lBQ0YsR0FBRyxFQUFFO0lBRUwscUJBQ0Usb0JBQUNaLHlCQUF5QmUsUUFBUTtRQUFDQyxPQUFPUjtxQkFDeEMsb0JBQUNOLHVCQUF1QmEsUUFBUTtRQUFDQyxPQUFPWDtPQUNyQ0Q7QUFJVCxFQUFDO0FBRUQsT0FBTyxNQUFNYSx1QkFBdUIsQ0FBQ0osS0FBYUM7SUFDaEQsTUFBTU4sb0JBQW9CVCxNQUFNbUIsVUFBVSxDQUFDbEI7SUFFM0NELE1BQU1vQixTQUFTLENBQUM7UUFDZFgsa0JBQWtCO1lBQ2hCTTtZQUNBRDtRQUNGO0lBQ0YsR0FBRztRQUFDQztRQUFNRDtRQUFLTDtLQUFrQjtBQUNuQyxFQUFDO0FBRUQsT0FBTyxNQUFNWSxxQkFBcUI7SUFDaEMsT0FBT3JCLE1BQU1tQixVQUFVLENBQUNoQjtBQUMxQixFQUFDIn0=