payload 2.0.0-beta.8 → 2.0.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 (351) hide show
  1. package/README.md +132 -0
  2. package/config.d.ts +1 -0
  3. package/config.js +5 -1
  4. package/database.d.ts +1 -2
  5. package/database.js +1 -8
  6. package/dist/admin/Root.d.ts +5 -1
  7. package/dist/admin/Root.d.ts.map +1 -1
  8. package/dist/admin/Root.js +3 -3
  9. package/dist/admin/components/elements/ArrayAction/index.js +2 -2
  10. package/dist/admin/components/elements/DocumentControls/index.d.ts +1 -1
  11. package/dist/admin/components/elements/DocumentControls/index.d.ts.map +1 -1
  12. package/dist/admin/components/elements/DocumentControls/index.js +2 -3
  13. package/dist/admin/components/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  14. package/dist/admin/components/elements/DocumentDrawer/DrawerContent.js +5 -2
  15. package/dist/admin/components/elements/DocumentHeader/Tabs/Tab/index.d.ts.map +1 -1
  16. package/dist/admin/components/elements/DocumentHeader/Tabs/Tab/index.js +7 -3
  17. package/dist/admin/components/elements/DocumentHeader/Tabs/index.d.ts.map +1 -1
  18. package/dist/admin/components/elements/DocumentHeader/Tabs/index.js +4 -2
  19. package/dist/admin/components/elements/DocumentHeader/Tabs/index.scss +6 -10
  20. package/dist/admin/components/elements/DocumentHeader/Tabs/tabs.d.ts.map +1 -1
  21. package/dist/admin/components/elements/DocumentHeader/Tabs/tabs.js +10 -2
  22. package/dist/admin/components/elements/DocumentHeader/Tabs/types.d.ts +4 -0
  23. package/dist/admin/components/elements/DocumentHeader/Tabs/types.d.ts.map +1 -1
  24. package/dist/admin/components/elements/Drawer/index.d.ts.map +1 -1
  25. package/dist/admin/components/elements/Drawer/index.js +4 -3
  26. package/dist/admin/components/elements/Drawer/types.d.ts +1 -0
  27. package/dist/admin/components/elements/Drawer/types.d.ts.map +1 -1
  28. package/dist/admin/components/elements/Dropzone/index.d.ts +10 -0
  29. package/dist/admin/components/elements/Dropzone/index.d.ts.map +1 -0
  30. package/dist/admin/components/elements/Dropzone/index.js +120 -0
  31. package/dist/admin/components/elements/Dropzone/index.scss +52 -0
  32. package/dist/admin/components/elements/DuplicateDocument/index.d.ts.map +1 -1
  33. package/dist/admin/components/elements/DuplicateDocument/index.js +4 -3
  34. package/dist/admin/components/elements/EditUpload/index.d.ts +13 -0
  35. package/dist/admin/components/elements/EditUpload/index.d.ts.map +1 -0
  36. package/dist/admin/components/elements/EditUpload/index.js +378 -0
  37. package/dist/admin/components/elements/EditUpload/index.scss +218 -0
  38. package/dist/admin/components/elements/FileDetails/index.d.ts.map +1 -1
  39. package/dist/admin/components/elements/FileDetails/index.js +14 -99
  40. package/dist/admin/components/elements/FileDetails/index.scss +21 -0
  41. package/dist/admin/components/elements/FileDetails/types.d.ts +3 -0
  42. package/dist/admin/components/elements/FileDetails/types.d.ts.map +1 -1
  43. package/dist/admin/components/elements/Hamburger/index.d.ts.map +1 -1
  44. package/dist/admin/components/elements/Hamburger/index.js +12 -16
  45. package/dist/admin/components/elements/Hamburger/index.scss +41 -54
  46. package/dist/admin/components/elements/Header/index.d.ts.map +1 -1
  47. package/dist/admin/components/elements/Header/index.js +6 -6
  48. package/dist/admin/components/elements/Header/index.scss +6 -1
  49. package/dist/admin/components/elements/Localizer/index.d.ts.map +1 -1
  50. package/dist/admin/components/elements/Localizer/index.js +1 -3
  51. package/dist/admin/components/elements/Nav/NavToggler/index.d.ts.map +1 -1
  52. package/dist/admin/components/elements/Nav/NavToggler/index.js +2 -1
  53. package/dist/admin/components/elements/Nav/NavToggler/index.scss +4 -0
  54. package/dist/admin/components/elements/Nav/context.d.ts +1 -1
  55. package/dist/admin/components/elements/Nav/context.d.ts.map +1 -1
  56. package/dist/admin/components/elements/Nav/context.js +12 -7
  57. package/dist/admin/components/elements/Nav/index.d.ts.map +1 -1
  58. package/dist/admin/components/elements/Nav/index.js +19 -18
  59. package/dist/admin/components/elements/Nav/index.scss +3 -1
  60. package/dist/admin/components/elements/PreviewSizes/index.d.ts +14 -0
  61. package/dist/admin/components/elements/PreviewSizes/index.d.ts.map +1 -0
  62. package/dist/admin/components/elements/PreviewSizes/index.js +146 -0
  63. package/dist/admin/components/elements/PreviewSizes/index.scss +146 -0
  64. package/dist/admin/components/elements/Thumbnail/index.d.ts.map +1 -1
  65. package/dist/admin/components/elements/Thumbnail/index.js +61 -7
  66. package/dist/admin/components/elements/Thumbnail/types.d.ts +4 -2
  67. package/dist/admin/components/elements/Thumbnail/types.d.ts.map +1 -1
  68. package/dist/admin/components/elements/WhereBuilder/Condition/index.js +6 -6
  69. package/dist/admin/components/elements/WhereBuilder/field-types.js +2 -2
  70. package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.d.ts +3 -1
  71. package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
  72. package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.js +12 -6
  73. package/dist/admin/components/forms/Form/buildStateFromSchema/index.d.ts +4 -2
  74. package/dist/admin/components/forms/Form/buildStateFromSchema/index.d.ts.map +1 -1
  75. package/dist/admin/components/forms/Form/buildStateFromSchema/index.js +3 -2
  76. package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.d.ts +3 -1
  77. package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.d.ts.map +1 -1
  78. package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.js +3 -2
  79. package/dist/admin/components/forms/Form/fieldReducer.js +7 -7
  80. package/dist/admin/components/forms/Form/index.d.ts.map +1 -1
  81. package/dist/admin/components/forms/Form/index.js +23 -8
  82. package/dist/admin/components/forms/Form/types.d.ts +1 -0
  83. package/dist/admin/components/forms/Form/types.d.ts.map +1 -1
  84. package/dist/admin/components/forms/field-types/Array/index.d.ts.map +1 -1
  85. package/dist/admin/components/forms/field-types/Array/index.js +10 -10
  86. package/dist/admin/components/forms/field-types/Blocks/index.js +8 -8
  87. package/dist/admin/components/forms/field-types/Checkbox/index.scss +4 -0
  88. package/dist/admin/components/forms/field-types/RichText/index.d.ts.map +1 -1
  89. package/dist/admin/components/forms/field-types/RichText/index.js +2 -4
  90. package/dist/admin/components/forms/field-types/RichText/types.d.ts +2 -1
  91. package/dist/admin/components/forms/field-types/RichText/types.d.ts.map +1 -1
  92. package/dist/admin/components/forms/field-types/Select/Input.d.ts.map +1 -1
  93. package/dist/admin/components/forms/field-types/Select/Input.js +4 -4
  94. package/dist/admin/components/forms/field-types/Upload/index.scss +1 -5
  95. package/dist/admin/components/forms/useField/index.d.ts.map +1 -1
  96. package/dist/admin/components/forms/useField/index.js +4 -1
  97. package/dist/admin/components/icons/MinimizeMaximize/index.d.ts +8 -0
  98. package/dist/admin/components/icons/MinimizeMaximize/index.d.ts.map +1 -0
  99. package/dist/admin/components/icons/MinimizeMaximize/index.js +85 -0
  100. package/dist/admin/components/templates/Default/index.d.ts.map +1 -1
  101. package/dist/admin/components/templates/Default/index.js +10 -10
  102. package/dist/admin/components/templates/Default/index.scss +39 -6
  103. package/dist/admin/components/utilities/FormQueryParams/index.d.ts +17 -0
  104. package/dist/admin/components/utilities/FormQueryParams/index.d.ts.map +1 -0
  105. package/dist/admin/components/utilities/FormQueryParams/index.js +23 -0
  106. package/dist/admin/components/utilities/Locale/index.d.ts +2 -2
  107. package/dist/admin/components/utilities/Locale/index.d.ts.map +1 -1
  108. package/dist/admin/components/utilities/Locale/index.js +2 -2
  109. package/dist/admin/components/utilities/OperationProvider/index.d.ts +1 -1
  110. package/dist/admin/components/utilities/OperationProvider/index.d.ts.map +1 -1
  111. package/dist/admin/components/utilities/OperationProvider/index.js +2 -2
  112. package/dist/admin/components/utilities/RenderCustomComponent/types.d.ts +1 -1
  113. package/dist/admin/components/utilities/RenderCustomComponent/types.d.ts.map +1 -1
  114. package/dist/admin/components/views/API/index.d.ts +6 -0
  115. package/dist/admin/components/views/API/index.d.ts.map +1 -0
  116. package/dist/admin/components/views/API/index.js +283 -0
  117. package/dist/admin/components/views/API/index.scss +203 -0
  118. package/dist/admin/components/views/Account/Default.d.ts.map +1 -1
  119. package/dist/admin/components/views/Account/Default.js +4 -4
  120. package/dist/admin/components/views/Account/index.d.ts.map +1 -1
  121. package/dist/admin/components/views/Account/index.js +15 -10
  122. package/dist/admin/components/views/Dashboard/index.d.ts.map +1 -1
  123. package/dist/admin/components/views/Dashboard/index.js +3 -5
  124. package/dist/admin/components/views/Global/Default/index.scss +12 -0
  125. package/dist/admin/components/views/Global/Routes/CustomComponent.d.ts.map +1 -1
  126. package/dist/admin/components/views/Global/Routes/CustomComponent.js +3 -2
  127. package/dist/admin/components/views/Global/Routes/custom.d.ts +2 -2
  128. package/dist/admin/components/views/Global/Routes/custom.d.ts.map +1 -1
  129. package/dist/admin/components/views/Global/Routes/custom.js +27 -18
  130. package/dist/admin/components/views/Global/Routes/index.d.ts.map +1 -1
  131. package/dist/admin/components/views/Global/Routes/index.js +11 -3
  132. package/dist/admin/components/views/Global/index.d.ts.map +1 -1
  133. package/dist/admin/components/views/Global/index.js +11 -4
  134. package/dist/admin/components/views/LivePreview/Context/context.d.ts +4 -4
  135. package/dist/admin/components/views/LivePreview/Context/context.d.ts.map +1 -1
  136. package/dist/admin/components/views/LivePreview/Context/context.js +1 -1
  137. package/dist/admin/components/views/LivePreview/Context/index.d.ts +2 -2
  138. package/dist/admin/components/views/LivePreview/Context/index.d.ts.map +1 -1
  139. package/dist/admin/components/views/LivePreview/Context/index.js +1 -1
  140. package/dist/admin/components/views/LivePreview/Device/index.js +2 -2
  141. package/dist/admin/components/views/LivePreview/DeviceContainer/index.js +3 -3
  142. package/dist/admin/components/views/LivePreview/Preview/index.d.ts +2 -0
  143. package/dist/admin/components/views/LivePreview/Preview/index.d.ts.map +1 -1
  144. package/dist/admin/components/views/LivePreview/Preview/index.js +30 -20
  145. package/dist/admin/components/views/LivePreview/Preview/index.scss +20 -6
  146. package/dist/admin/components/views/LivePreview/Toolbar/Controls/index.d.ts +5 -0
  147. package/dist/admin/components/views/LivePreview/Toolbar/Controls/index.d.ts.map +1 -0
  148. package/dist/admin/components/views/LivePreview/Toolbar/Controls/index.js +71 -0
  149. package/dist/admin/components/views/LivePreview/Toolbar/Controls/index.scss +54 -0
  150. package/dist/admin/components/views/LivePreview/Toolbar/index.d.ts +4 -1
  151. package/dist/admin/components/views/LivePreview/Toolbar/index.d.ts.map +1 -1
  152. package/dist/admin/components/views/LivePreview/Toolbar/index.js +24 -51
  153. package/dist/admin/components/views/LivePreview/Toolbar/index.scss +19 -60
  154. package/dist/admin/components/views/LivePreview/index.d.ts.map +1 -1
  155. package/dist/admin/components/views/LivePreview/index.js +26 -5
  156. package/dist/admin/components/views/LivePreview/index.scss +6 -2
  157. package/dist/admin/components/views/Login/index.js +3 -3
  158. package/dist/admin/components/views/Routes/collections.d.ts.map +1 -1
  159. package/dist/admin/components/views/Routes/collections.js +1 -1
  160. package/dist/admin/components/views/Routes/custom.d.ts +5 -4
  161. package/dist/admin/components/views/Routes/custom.d.ts.map +1 -1
  162. package/dist/admin/components/views/Routes/custom.js +23 -7
  163. package/dist/admin/components/views/Routes/globals.d.ts.map +1 -1
  164. package/dist/admin/components/views/Routes/globals.js +1 -1
  165. package/dist/admin/components/views/Routes/index.d.ts.map +1 -1
  166. package/dist/admin/components/views/Routes/index.js +12 -8
  167. package/dist/admin/components/views/Verify/index.js +1 -1
  168. package/dist/admin/components/views/collections/Edit/Default/index.d.ts.map +1 -1
  169. package/dist/admin/components/views/collections/Edit/Default/index.js +6 -6
  170. package/dist/admin/components/views/collections/Edit/Default/index.scss +12 -0
  171. package/dist/admin/components/views/collections/Edit/Routes/CustomComponent.js +3 -3
  172. package/dist/admin/components/views/collections/Edit/Routes/custom.d.ts.map +1 -1
  173. package/dist/admin/components/views/collections/Edit/Routes/custom.js +27 -18
  174. package/dist/admin/components/views/collections/Edit/Routes/index.d.ts.map +1 -1
  175. package/dist/admin/components/views/collections/Edit/Routes/index.js +4 -3
  176. package/dist/admin/components/views/collections/Edit/SetStepNav.js +3 -3
  177. package/dist/admin/components/views/collections/Edit/Upload/index.d.ts +7 -2
  178. package/dist/admin/components/views/collections/Edit/Upload/index.d.ts.map +1 -1
  179. package/dist/admin/components/views/collections/Edit/Upload/index.js +116 -121
  180. package/dist/admin/components/views/collections/Edit/Upload/index.scss +68 -68
  181. package/dist/admin/components/views/collections/Edit/Upload/types.d.ts +2 -3
  182. package/dist/admin/components/views/collections/Edit/Upload/types.d.ts.map +1 -1
  183. package/dist/admin/components/views/collections/Edit/formatFields.d.ts +1 -1
  184. package/dist/admin/components/views/collections/Edit/formatFields.d.ts.map +1 -1
  185. package/dist/admin/components/views/collections/Edit/formatFields.js +1 -1
  186. package/dist/admin/components/views/collections/Edit/index.d.ts.map +1 -1
  187. package/dist/admin/components/views/collections/Edit/index.js +36 -7
  188. package/dist/admin/components/views/collections/Edit/types.d.ts +12 -0
  189. package/dist/admin/components/views/collections/Edit/types.d.ts.map +1 -1
  190. package/dist/admin/components/views/collections/List/Cell/field-types/Code/index.d.ts +4 -1
  191. package/dist/admin/components/views/collections/List/Cell/field-types/Code/index.d.ts.map +1 -1
  192. package/dist/admin/components/views/collections/List/Cell/field-types/Code/index.js +7 -3
  193. package/dist/admin/components/views/collections/List/Cell/field-types/Code/index.scss +7 -2
  194. package/dist/admin/components/views/collections/List/Cell/field-types/Richtext/index.d.ts.map +1 -1
  195. package/dist/admin/components/views/collections/List/Cell/field-types/Richtext/index.js +2 -4
  196. package/dist/admin/components/views/collections/List/Cell/field-types/index.d.ts +1 -1
  197. package/dist/admin/components/views/collections/List/Cell/index.d.ts.map +1 -1
  198. package/dist/admin/components/views/collections/List/Cell/index.js +11 -1
  199. package/dist/admin/components/views/types.d.ts +8 -8
  200. package/dist/admin/components/views/types.d.ts.map +1 -1
  201. package/dist/auth/operations/me.d.ts.map +1 -1
  202. package/dist/auth/operations/me.js +13 -5
  203. package/dist/auth/strategies/jwt.js +3 -3
  204. package/dist/bin/build.d.ts.map +1 -1
  205. package/dist/bin/build.js +9 -5
  206. package/dist/bin/generateGraphQLSchema.js +2 -2
  207. package/dist/bin/index.js +3 -3
  208. package/dist/bin/migrate.d.ts +2 -1
  209. package/dist/bin/migrate.d.ts.map +1 -1
  210. package/dist/bin/migrate.js +16 -4
  211. package/dist/collections/config/sanitize.js +4 -4
  212. package/dist/collections/config/schema.d.ts.map +1 -1
  213. package/dist/collections/config/schema.js +7 -10
  214. package/dist/collections/config/types.d.ts +5 -41
  215. package/dist/collections/config/types.d.ts.map +1 -1
  216. package/dist/collections/config/types.js +1 -1
  217. package/dist/collections/dataloader.js +2 -2
  218. package/dist/config/defaults.js +2 -2
  219. package/dist/config/schema.d.ts.map +1 -1
  220. package/dist/config/schema.js +14 -8
  221. package/dist/config/shared/adminViewSchema.d.ts +3 -0
  222. package/dist/config/shared/adminViewSchema.d.ts.map +1 -0
  223. package/dist/config/shared/adminViewSchema.js +26 -0
  224. package/dist/config/shared/componentSchema.d.ts +4 -0
  225. package/dist/config/shared/componentSchema.d.ts.map +1 -1
  226. package/dist/config/shared/componentSchema.js +13 -1
  227. package/dist/config/types.d.ts +55 -37
  228. package/dist/config/types.d.ts.map +1 -1
  229. package/dist/config/types.js +1 -1
  230. package/dist/database/createDatabaseAdapter.d.ts +1 -1
  231. package/dist/database/createDatabaseAdapter.d.ts.map +1 -1
  232. package/dist/database/createDatabaseAdapter.js +1 -10
  233. package/dist/database/migrations/createMigration.js +2 -2
  234. package/dist/database/migrations/getMigrations.d.ts +3 -0
  235. package/dist/database/migrations/getMigrations.d.ts.map +1 -1
  236. package/dist/database/migrations/getMigrations.js +7 -2
  237. package/dist/database/migrations/migrateDown.d.ts.map +1 -1
  238. package/dist/database/migrations/migrateDown.js +5 -6
  239. package/dist/database/migrations/migrateRefresh.d.ts +1 -1
  240. package/dist/database/migrations/migrateRefresh.d.ts.map +1 -1
  241. package/dist/database/migrations/migrateRefresh.js +63 -8
  242. package/dist/database/migrations/migrateReset.d.ts.map +1 -1
  243. package/dist/database/migrations/migrateReset.js +17 -1
  244. package/dist/database/migrations/migrationTemplate.d.ts +1 -1
  245. package/dist/database/migrations/migrationTemplate.d.ts.map +1 -1
  246. package/dist/database/migrations/migrationTemplate.js +2 -2
  247. package/dist/database/migrations/migrationsCollection.d.ts.map +1 -1
  248. package/dist/database/migrations/migrationsCollection.js +1 -5
  249. package/dist/database/types.d.ts +5 -15
  250. package/dist/database/types.d.ts.map +1 -1
  251. package/dist/exports/config.d.ts +1 -0
  252. package/dist/exports/config.d.ts.map +1 -1
  253. package/dist/exports/config.js +5 -1
  254. package/dist/exports/database.d.ts +1 -2
  255. package/dist/exports/database.d.ts.map +1 -1
  256. package/dist/exports/database.js +1 -8
  257. package/dist/exports/utilities.d.ts +2 -0
  258. package/dist/exports/utilities.d.ts.map +1 -1
  259. package/dist/exports/utilities.js +9 -1
  260. package/dist/fields/config/sanitize.d.ts +7 -3
  261. package/dist/fields/config/sanitize.d.ts.map +1 -1
  262. package/dist/fields/config/sanitize.js +17 -12
  263. package/dist/fields/config/sanitize.spec.js +19 -24
  264. package/dist/fields/config/schema.d.ts.map +1 -1
  265. package/dist/fields/config/schema.js +3 -2
  266. package/dist/fields/config/types.d.ts +2 -0
  267. package/dist/fields/config/types.d.ts.map +1 -1
  268. package/dist/fields/config/types.js +1 -1
  269. package/dist/fields/hooks/afterRead/promise.js +2 -2
  270. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  271. package/dist/fields/hooks/beforeChange/promise.js +3 -9
  272. package/dist/fields/validations.d.ts +3 -1
  273. package/dist/fields/validations.d.ts.map +1 -1
  274. package/dist/fields/validations.js +41 -32
  275. package/dist/globals/config/sanitize.js +4 -4
  276. package/dist/globals/config/schema.d.ts.map +1 -1
  277. package/dist/globals/config/schema.js +5 -10
  278. package/dist/globals/config/types.d.ts +6 -3
  279. package/dist/globals/config/types.d.ts.map +1 -1
  280. package/dist/graphql/schema/buildObjectType.js +2 -2
  281. package/dist/payload.d.ts.map +1 -1
  282. package/dist/payload.js +2 -2
  283. package/dist/preferences/deleteUserPreferences.d.ts.map +1 -1
  284. package/dist/preferences/deleteUserPreferences.js +13 -7
  285. package/dist/preferences/preferencesCollection.d.ts.map +1 -1
  286. package/dist/preferences/preferencesCollection.js +1 -13
  287. package/dist/translations/ar.json +14 -2
  288. package/dist/translations/az.json +14 -2
  289. package/dist/translations/bg.json +14 -2
  290. package/dist/translations/cs.json +14 -2
  291. package/dist/translations/de.json +14 -2
  292. package/dist/translations/en.json +12 -0
  293. package/dist/translations/es.json +14 -2
  294. package/dist/translations/fa.json +14 -2
  295. package/dist/translations/fr.json +14 -2
  296. package/dist/translations/hr.json +14 -2
  297. package/dist/translations/hu.json +14 -2
  298. package/dist/translations/index.d.ts +340 -26
  299. package/dist/translations/index.d.ts.map +1 -1
  300. package/dist/translations/it.json +16 -3
  301. package/dist/translations/ja.json +14 -2
  302. package/dist/translations/my.json +14 -2
  303. package/dist/translations/nb.json +14 -2
  304. package/dist/translations/nl.json +14 -2
  305. package/dist/translations/pl.json +15 -2
  306. package/dist/translations/pt.json +14 -2
  307. package/dist/translations/ro.json +14 -2
  308. package/dist/translations/ru.json +14 -2
  309. package/dist/translations/sv.json +14 -2
  310. package/dist/translations/th.json +14 -2
  311. package/dist/translations/tr.json +14 -2
  312. package/dist/translations/translation-schema.json +36 -0
  313. package/dist/translations/ua.json +14 -2
  314. package/dist/translations/vi.json +14 -2
  315. package/dist/translations/zh.json +14 -2
  316. package/dist/uploads/cropImage.d.ts +12 -0
  317. package/dist/uploads/cropImage.d.ts.map +1 -0
  318. package/dist/uploads/cropImage.js +47 -0
  319. package/dist/uploads/generateFileData.d.ts.map +1 -1
  320. package/dist/uploads/generateFileData.js +49 -14
  321. package/dist/uploads/imageResizer.d.ts +6 -1
  322. package/dist/uploads/imageResizer.d.ts.map +1 -1
  323. package/dist/uploads/imageResizer.js +48 -3
  324. package/dist/uploads/types.d.ts +5 -1
  325. package/dist/uploads/types.d.ts.map +1 -1
  326. package/dist/uploads/types.js +1 -1
  327. package/dist/utilities/fieldSchemaToJSON.d.ts +3 -0
  328. package/dist/utilities/fieldSchemaToJSON.d.ts.map +1 -0
  329. package/dist/utilities/fieldSchemaToJSON.js +77 -0
  330. package/dist/utilities/getIDType.d.ts +2 -1
  331. package/dist/utilities/getIDType.d.ts.map +1 -1
  332. package/dist/utilities/getIDType.js +3 -3
  333. package/dist/utilities/isValidID.js +2 -2
  334. package/package.json +2 -5
  335. package/utilities.d.ts +2 -0
  336. package/utilities.js +9 -1
  337. package/components/rich-text.d.ts +0 -4
  338. package/components/rich-text.js +0 -31
  339. package/dist/admin/components/views/LivePreview/useLivePreview.d.ts +0 -8
  340. package/dist/admin/components/views/LivePreview/useLivePreview.d.ts.map +0 -1
  341. package/dist/admin/components/views/LivePreview/useLivePreview.js +0 -43
  342. package/dist/admin/components/views/RestAPI/index.d.ts +0 -4
  343. package/dist/admin/components/views/RestAPI/index.d.ts.map +0 -1
  344. package/dist/admin/components/views/RestAPI/index.js +0 -113
  345. package/dist/admin/components/views/RestAPI/index.scss +0 -107
  346. package/dist/config/shared/routeSchema.d.ts +0 -3
  347. package/dist/config/shared/routeSchema.d.ts.map +0 -1
  348. package/dist/config/shared/routeSchema.js +0 -26
  349. package/dist/database/transaction.d.ts +0 -3
  350. package/dist/database/transaction.d.ts.map +0 -1
  351. package/dist/database/transaction.js +0 -21
@@ -119,7 +119,7 @@ function fieldReducer(state, action) {
119
119
  ...state[path],
120
120
  disableFormData: rows.length > 0,
121
121
  rows: rowsMetadata,
122
- value: rows.length
122
+ value: rows
123
123
  },
124
124
  ...(0, _rows.flattenRows)(path, rows)
125
125
  };
@@ -131,7 +131,7 @@ function fieldReducer(state, action) {
131
131
  const rowsMetadata = [
132
132
  ...state[path]?.rows || []
133
133
  ];
134
- rowsMetadata.splice(rowIndex + 1, 0, // new row
134
+ rowsMetadata.splice(rowIndex, 0, // new row
135
135
  {
136
136
  id: new _bsonobjectid.default().toHexString(),
137
137
  blockType: blockType || undefined,
@@ -147,7 +147,7 @@ function fieldReducer(state, action) {
147
147
  }
148
148
  const { remainingFields, rows } = (0, _rows.separateRows)(path, state);
149
149
  // actual form state (value saved in db)
150
- rows.splice(rowIndex + 1, 0, subFieldState);
150
+ rows.splice(rowIndex, 0, subFieldState);
151
151
  const newState = {
152
152
  ...remainingFields,
153
153
  ...(0, _rows.flattenRows)(path, rows),
@@ -155,7 +155,7 @@ function fieldReducer(state, action) {
155
155
  ...state[path],
156
156
  disableFormData: true,
157
157
  rows: rowsMetadata,
158
- value: rows.length
158
+ value: rows
159
159
  }
160
160
  };
161
161
  return newState;
@@ -190,7 +190,7 @@ function fieldReducer(state, action) {
190
190
  ...state[path],
191
191
  disableFormData: true,
192
192
  rows: rowsMetadata,
193
- value: rows.length
193
+ value: rows
194
194
  }
195
195
  };
196
196
  return newState;
@@ -216,7 +216,7 @@ function fieldReducer(state, action) {
216
216
  ...state[path],
217
217
  disableFormData: true,
218
218
  rows: rowsMetadata,
219
- value: rows.length
219
+ value: rows
220
220
  },
221
221
  ...(0, _rows.flattenRows)(path, rows)
222
222
  };
@@ -311,4 +311,4 @@ function fieldReducer(state, action) {
311
311
  }
312
312
  }
313
313
 
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL0Zvcm0vZmllbGRSZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBPYmplY3RJRCBmcm9tICdic29uLW9iamVjdGlkJ1xuaW1wb3J0IGVxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5cbmltcG9ydCB0eXBlIHsgRmllbGRBY3Rpb24sIEZpZWxkcywgRm9ybUZpZWxkIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgZGVlcENvcHlPYmplY3QgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvZGVlcENvcHlPYmplY3QnXG5pbXBvcnQgZ2V0U2libGluZ0RhdGEgZnJvbSAnLi9nZXRTaWJsaW5nRGF0YSdcbmltcG9ydCByZWR1Y2VGaWVsZHNUb1ZhbHVlcyBmcm9tICcuL3JlZHVjZUZpZWxkc1RvVmFsdWVzJ1xuaW1wb3J0IHsgZmxhdHRlblJvd3MsIHNlcGFyYXRlUm93cyB9IGZyb20gJy4vcm93cydcblxuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkUmVkdWNlcihzdGF0ZTogRmllbGRzLCBhY3Rpb246IEZpZWxkQWN0aW9uKTogRmllbGRzIHtcbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgIGNhc2UgJ1JFUExBQ0VfU1RBVEUnOiB7XG4gICAgICBjb25zdCBuZXdTdGF0ZSA9IHt9XG5cbiAgICAgIC8vIE9ubHkgdXBkYXRlIGZpZWxkcyB0aGF0IGhhdmUgY2hhbmdlZFxuICAgICAgLy8gYnkgY29tcGFyaW5nIG9sZCB2YWx1ZSAvIGluaXRpYWxWYWx1ZSB0byBuZXdcbiAgICAgIC8vIC4uXG4gICAgICAvLyBUaGlzIGlzIGEgcGVyZm9ybWFuY2UgZW5oYW5jZW1lbnQgZm9yIHNhdmluZ1xuICAgICAgLy8gbGFyZ2UgZG9jdW1lbnRzIHdpdGggaHVuZHJlZHMgb2YgZmllbGRzXG5cbiAgICAgIE9iamVjdC5lbnRyaWVzKGFjdGlvbi5zdGF0ZSkuZm9yRWFjaCgoW3BhdGgsIGZpZWxkXSkgPT4ge1xuICAgICAgICBjb25zdCBvbGRGaWVsZCA9IHN0YXRlW3BhdGhdXG4gICAgICAgIGNvbnN0IG5ld0ZpZWxkID0gZmllbGRcblxuICAgICAgICBpZiAoIWVxdWFsKG9sZEZpZWxkLCBuZXdGaWVsZCkpIHtcbiAgICAgICAgICBuZXdTdGF0ZVtwYXRoXSA9IG5ld0ZpZWxkXG4gICAgICAgIH0gZWxzZSBpZiAob2xkRmllbGQpIHtcbiAgICAgICAgICBuZXdTdGF0ZVtwYXRoXSA9IG9sZEZpZWxkXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHJldHVybiBuZXdTdGF0ZVxuICAgIH1cblxuICAgIGNhc2UgJ1JFTU9WRSc6IHtcbiAgICAgIGNvbnN0IG5ld1N0YXRlID0geyAuLi5zdGF0ZSB9XG4gICAgICBpZiAobmV3U3RhdGVbYWN0aW9uLnBhdGhdKSBkZWxldGUgbmV3U3RhdGVbYWN0aW9uLnBhdGhdXG4gICAgICByZXR1cm4gbmV3U3RhdGVcbiAgICB9XG5cbiAgICBjYXNlICdNT0RJRllfQ09ORElUSU9OJzoge1xuICAgICAgY29uc3QgeyBwYXRoLCByZXN1bHQsIHVzZXIgfSA9IGFjdGlvblxuXG4gICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoc3RhdGUpLnJlZHVjZSgobmV3U3RhdGUsIFtmaWVsZFBhdGgsIGZpZWxkXSkgPT4ge1xuICAgICAgICBpZiAoZmllbGRQYXRoID09PSBwYXRoIHx8IGZpZWxkUGF0aC5pbmRleE9mKGAke3BhdGh9LmApID09PSAwKSB7XG4gICAgICAgICAgbGV0IHBhc3Nlc0NvbmRpdGlvbiA9IHJlc3VsdFxuXG4gICAgICAgICAgLy8gSWYgYSBjb25kaXRpb24gaXMgYmVpbmcgc2V0IHRvIHRydWUsXG4gICAgICAgICAgLy8gU2V0IGFsbCBjb25kaXRpb25zIHRvIHRydWVcbiAgICAgICAgICAvLyBCZXNpZGVzIHRob3NlIHdobyBzdGlsbCBmYWlsIHRoZWlyIG93biBjb25kaXRpb25zXG5cbiAgICAgICAgICBpZiAocGFzc2VzQ29uZGl0aW9uICYmIGZpZWxkLmNvbmRpdGlvbikge1xuICAgICAgICAgICAgcGFzc2VzQ29uZGl0aW9uID0gZmllbGQuY29uZGl0aW9uKFxuICAgICAgICAgICAgICByZWR1Y2VGaWVsZHNUb1ZhbHVlcyhzdGF0ZSwgdHJ1ZSksXG4gICAgICAgICAgICAgIGdldFNpYmxpbmdEYXRhKHN0YXRlLCBwYXRoKSxcbiAgICAgICAgICAgICAgeyB1c2VyIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLm5ld1N0YXRlLFxuICAgICAgICAgICAgW2ZpZWxkUGF0aF06IHtcbiAgICAgICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgICAgIHBhc3Nlc0NvbmRpdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5uZXdTdGF0ZSxcbiAgICAgICAgICBbZmllbGRQYXRoXToge1xuICAgICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgfSwge30pXG4gICAgfVxuXG4gICAgY2FzZSAnVVBEQVRFJzoge1xuICAgICAgY29uc3QgbmV3RmllbGQgPSBPYmplY3QuZW50cmllcyhhY3Rpb24pLnJlZHVjZShcbiAgICAgICAgKGZpZWxkLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICdjb25kaXRpb24nLFxuICAgICAgICAgICAgICAnZGlzYWJsZUZvcm1EYXRhJyxcbiAgICAgICAgICAgICAgJ2Vycm9yTWVzc2FnZScsXG4gICAgICAgICAgICAgICdpbml0aWFsVmFsdWUnLFxuICAgICAgICAgICAgICAncGFzc2VzQ29uZGl0aW9uJyxcbiAgICAgICAgICAgICAgJ3Jvd3MnLFxuICAgICAgICAgICAgICAndmFsaWQnLFxuICAgICAgICAgICAgICAndmFsaWRhdGUnLFxuICAgICAgICAgICAgICAndmFsdWUnLFxuICAgICAgICAgICAgXS5pbmNsdWRlcyhrZXkpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgICAgICAgW2tleV06IHZhbHVlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmaWVsZFxuICAgICAgICB9LFxuICAgICAgICBzdGF0ZVthY3Rpb24ucGF0aF0gfHwgKHt9IGFzIEZvcm1GaWVsZCksXG4gICAgICApXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBbYWN0aW9uLnBhdGhdOiBuZXdGaWVsZCxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYXNlICdSRU1PVkVfUk9XJzoge1xuICAgICAgY29uc3QgeyBwYXRoLCByb3dJbmRleCB9ID0gYWN0aW9uXG4gICAgICBjb25zdCB7IHJlbWFpbmluZ0ZpZWxkcywgcm93cyB9ID0gc2VwYXJhdGVSb3dzKHBhdGgsIHN0YXRlKVxuICAgICAgY29uc3Qgcm93c01ldGFkYXRhID0gWy4uLihzdGF0ZVtwYXRoXT8ucm93cyB8fCBbXSldXG5cbiAgICAgIHJvd3Muc3BsaWNlKHJvd0luZGV4LCAxKVxuICAgICAgcm93c01ldGFkYXRhLnNwbGljZShyb3dJbmRleCwgMSlcblxuICAgICAgY29uc3QgbmV3U3RhdGU6IEZpZWxkcyA9IHtcbiAgICAgICAgLi4ucmVtYWluaW5nRmllbGRzLFxuICAgICAgICBbcGF0aF06IHtcbiAgICAgICAgICAuLi5zdGF0ZVtwYXRoXSxcbiAgICAgICAgICBkaXNhYmxlRm9ybURhdGE6IHJvd3MubGVuZ3RoID4gMCxcbiAgICAgICAgICByb3dzOiByb3dzTWV0YWRhdGEsXG4gICAgICAgICAgdmFsdWU6IHJvd3MubGVuZ3RoLFxuICAgICAgICB9LFxuICAgICAgICAuLi5mbGF0dGVuUm93cyhwYXRoLCByb3dzKSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld1N0YXRlXG4gICAgfVxuXG4gICAgY2FzZSAnQUREX1JPVyc6IHtcbiAgICAgIGNvbnN0IHsgYmxvY2tUeXBlLCBwYXRoLCByb3dJbmRleCwgc3ViRmllbGRTdGF0ZSB9ID0gYWN0aW9uXG5cbiAgICAgIGNvbnN0IHJvd3NNZXRhZGF0YSA9IFsuLi4oc3RhdGVbcGF0aF0/LnJvd3MgfHwgW10pXVxuICAgICAgcm93c01ldGFkYXRhLnNwbGljZShcbiAgICAgICAgcm93SW5kZXggKyAxLFxuICAgICAgICAwLFxuICAgICAgICAvLyBuZXcgcm93XG4gICAgICAgIHtcbiAgICAgICAgICBpZDogbmV3IE9iamVjdElEKCkudG9IZXhTdHJpbmcoKSxcbiAgICAgICAgICBibG9ja1R5cGU6IGJsb2NrVHlwZSB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgY2hpbGRFcnJvclBhdGhzOiBuZXcgU2V0KCksXG4gICAgICAgICAgY29sbGFwc2VkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIClcblxuICAgICAgaWYgKGJsb2NrVHlwZSkge1xuICAgICAgICBzdWJGaWVsZFN0YXRlLmJsb2NrVHlwZSA9IHtcbiAgICAgICAgICBpbml0aWFsVmFsdWU6IGJsb2NrVHlwZSxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICB2YWx1ZTogYmxvY2tUeXBlLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgcmVtYWluaW5nRmllbGRzLCByb3dzIH0gPSBzZXBhcmF0ZVJvd3MocGF0aCwgc3RhdGUpXG5cbiAgICAgIC8vIGFjdHVhbCBmb3JtIHN0YXRlICh2YWx1ZSBzYXZlZCBpbiBkYilcbiAgICAgIHJvd3Muc3BsaWNlKHJvd0luZGV4ICsgMSwgMCwgc3ViRmllbGRTdGF0ZSlcblxuICAgICAgY29uc3QgbmV3U3RhdGU6IEZpZWxkcyA9IHtcbiAgICAgICAgLi4ucmVtYWluaW5nRmllbGRzLFxuICAgICAgICAuLi5mbGF0dGVuUm93cyhwYXRoLCByb3dzKSxcbiAgICAgICAgW3BhdGhdOiB7XG4gICAgICAgICAgLi4uc3RhdGVbcGF0aF0sXG4gICAgICAgICAgZGlzYWJsZUZvcm1EYXRhOiB0cnVlLFxuICAgICAgICAgIHJvd3M6IHJvd3NNZXRhZGF0YSxcbiAgICAgICAgICB2YWx1ZTogcm93cy5sZW5ndGgsXG4gICAgICAgIH0sXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXdTdGF0ZVxuICAgIH1cblxuICAgIGNhc2UgJ1JFUExBQ0VfUk9XJzoge1xuICAgICAgY29uc3QgeyBibG9ja1R5cGUsIHBhdGgsIHJvd0luZGV4OiByb3dJbmRleEFyZywgc3ViRmllbGRTdGF0ZSB9ID0gYWN0aW9uXG4gICAgICBjb25zdCB7IHJlbWFpbmluZ0ZpZWxkcywgcm93cyB9ID0gc2VwYXJhdGVSb3dzKHBhdGgsIHN0YXRlKVxuICAgICAgY29uc3Qgcm93SW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihyb3dJbmRleEFyZywgcm93cz8ubGVuZ3RoIC0gMSB8fCAwKSlcblxuICAgICAgY29uc3Qgcm93c01ldGFkYXRhID0gWy4uLihzdGF0ZVtwYXRoXT8ucm93cyB8fCBbXSldXG4gICAgICByb3dzTWV0YWRhdGFbcm93SW5kZXhdID0ge1xuICAgICAgICBpZDogbmV3IE9iamVjdElEKCkudG9IZXhTdHJpbmcoKSxcbiAgICAgICAgYmxvY2tUeXBlOiBibG9ja1R5cGUgfHwgdW5kZWZpbmVkLFxuICAgICAgICBjaGlsZEVycm9yUGF0aHM6IG5ldyBTZXQoKSxcbiAgICAgICAgY29sbGFwc2VkOiBmYWxzZSxcbiAgICAgIH1cblxuICAgICAgaWYgKGJsb2NrVHlwZSkge1xuICAgICAgICBzdWJGaWVsZFN0YXRlLmJsb2NrVHlwZSA9IHtcbiAgICAgICAgICBpbml0aWFsVmFsdWU6IGJsb2NrVHlwZSxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICB2YWx1ZTogYmxvY2tUeXBlLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIHJlcGxhY2UgZm9ybSBmaWVsZCBzdGF0ZVxuICAgICAgcm93c1tyb3dJbmRleF0gPSBzdWJGaWVsZFN0YXRlXG5cbiAgICAgIGNvbnN0IG5ld1N0YXRlOiBGaWVsZHMgPSB7XG4gICAgICAgIC4uLnJlbWFpbmluZ0ZpZWxkcyxcbiAgICAgICAgLi4uZmxhdHRlblJvd3MocGF0aCwgcm93cyksXG4gICAgICAgIFtwYXRoXToge1xuICAgICAgICAgIC4uLnN0YXRlW3BhdGhdLFxuICAgICAgICAgIGRpc2FibGVGb3JtRGF0YTogdHJ1ZSxcbiAgICAgICAgICByb3dzOiByb3dzTWV0YWRhdGEsXG4gICAgICAgICAgdmFsdWU6IHJvd3MubGVuZ3RoLFxuICAgICAgICB9LFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3U3RhdGVcbiAgICB9XG5cbiAgICBjYXNlICdEVVBMSUNBVEVfUk9XJzoge1xuICAgICAgY29uc3QgeyBwYXRoLCByb3dJbmRleCB9ID0gYWN0aW9uXG4gICAgICBjb25zdCB7IHJlbWFpbmluZ0ZpZWxkcywgcm93cyB9ID0gc2VwYXJhdGVSb3dzKHBhdGgsIHN0YXRlKVxuICAgICAgY29uc3Qgcm93c01ldGFkYXRhID0gc3RhdGVbcGF0aF0/LnJvd3MgfHwgW11cblxuICAgICAgY29uc3QgZHVwbGljYXRlUm93TWV0YWRhdGEgPSBkZWVwQ29weU9iamVjdChyb3dzTWV0YWRhdGFbcm93SW5kZXhdKVxuICAgICAgaWYgKGR1cGxpY2F0ZVJvd01ldGFkYXRhLmlkKSBkdXBsaWNhdGVSb3dNZXRhZGF0YS5pZCA9IG5ldyBPYmplY3RJRCgpLnRvSGV4U3RyaW5nKClcblxuICAgICAgY29uc3QgZHVwbGljYXRlUm93U3RhdGUgPSBkZWVwQ29weU9iamVjdChyb3dzW3Jvd0luZGV4XSlcbiAgICAgIGlmIChkdXBsaWNhdGVSb3dTdGF0ZS5pZCkgZHVwbGljYXRlUm93U3RhdGUuaWQgPSBuZXcgT2JqZWN0SUQoKS50b0hleFN0cmluZygpXG5cbiAgICAgIC8vIElmIHRoZXJlIGFyZSBzdWJmaWVsZHNcbiAgICAgIGlmIChPYmplY3Qua2V5cyhkdXBsaWNhdGVSb3dTdGF0ZSkubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyBBZGQgbmV3IG9iamVjdCBjb250YWluaW5nIHN1YmZpZWxkIG5hbWVzIHRvIHVuZmxhdHRlbmVkUm93cyBhcnJheVxuICAgICAgICByb3dzLnNwbGljZShyb3dJbmRleCArIDEsIDAsIGR1cGxpY2F0ZVJvd1N0YXRlKVxuICAgICAgICByb3dzTWV0YWRhdGEuc3BsaWNlKHJvd0luZGV4ICsgMSwgMCwgZHVwbGljYXRlUm93TWV0YWRhdGEpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICAuLi5yZW1haW5pbmdGaWVsZHMsXG4gICAgICAgIFtwYXRoXToge1xuICAgICAgICAgIC4uLnN0YXRlW3BhdGhdLFxuICAgICAgICAgIGRpc2FibGVGb3JtRGF0YTogdHJ1ZSxcbiAgICAgICAgICByb3dzOiByb3dzTWV0YWRhdGEsXG4gICAgICAgICAgdmFsdWU6IHJvd3MubGVuZ3RoLFxuICAgICAgICB9LFxuICAgICAgICAuLi5mbGF0dGVuUm93cyhwYXRoLCByb3dzKSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld1N0YXRlXG4gICAgfVxuXG4gICAgY2FzZSAnTU9WRV9ST1cnOiB7XG4gICAgICBjb25zdCB7IG1vdmVGcm9tSW5kZXgsIG1vdmVUb0luZGV4LCBwYXRoIH0gPSBhY3Rpb25cbiAgICAgIGNvbnN0IHsgcmVtYWluaW5nRmllbGRzLCByb3dzIH0gPSBzZXBhcmF0ZVJvd3MocGF0aCwgc3RhdGUpXG5cbiAgICAgIC8vIGNvcHkgdGhlIHJvdyB0byBtb3ZlXG4gICAgICBjb25zdCBjb3B5T2ZNb3ZpbmdSb3cgPSByb3dzW21vdmVGcm9tSW5kZXhdXG4gICAgICAvLyBkZWxldGUgdGhlIHJvdyBieSBpbmRleFxuICAgICAgcm93cy5zcGxpY2UobW92ZUZyb21JbmRleCwgMSlcbiAgICAgIC8vIGluc2VydCByb3cgY29weU9mTW92aW5nUm93IGJhY2sgaW5cbiAgICAgIHJvd3Muc3BsaWNlKG1vdmVUb0luZGV4LCAwLCBjb3B5T2ZNb3ZpbmdSb3cpXG5cbiAgICAgIC8vIG1vZGlmeSBhcnJheS9ibG9jayBpbnRlcm5hbCByb3cgc3RhdGUgKGkuZS4gY29sbGFwc2VkLCBibG9ja1R5cGUpXG4gICAgICBjb25zdCByb3dTdGF0ZUNvcHkgPSBbLi4uKHN0YXRlW3BhdGhdPy5yb3dzIHx8IFtdKV1cbiAgICAgIGNvbnN0IG1vdmluZ1Jvd1N0YXRlID0geyAuLi5yb3dTdGF0ZUNvcHlbbW92ZUZyb21JbmRleF0gfVxuICAgICAgcm93U3RhdGVDb3B5LnNwbGljZShtb3ZlRnJvbUluZGV4LCAxKVxuICAgICAgcm93U3RhdGVDb3B5LnNwbGljZShtb3ZlVG9JbmRleCwgMCwgbW92aW5nUm93U3RhdGUpXG5cbiAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICAuLi5yZW1haW5pbmdGaWVsZHMsXG4gICAgICAgIC4uLmZsYXR0ZW5Sb3dzKHBhdGgsIHJvd3MpLFxuICAgICAgICBbcGF0aF06IHtcbiAgICAgICAgICAuLi5zdGF0ZVtwYXRoXSxcbiAgICAgICAgICByb3dzOiByb3dTdGF0ZUNvcHksXG4gICAgICAgIH0sXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXdTdGF0ZVxuICAgIH1cblxuICAgIGNhc2UgJ1NFVF9ST1dfQ09MTEFQU0VEJzoge1xuICAgICAgY29uc3QgeyBjb2xsYXBzZWQsIHBhdGgsIHJvd0lELCBzZXREb2NGaWVsZFByZWZlcmVuY2VzIH0gPSBhY3Rpb25cblxuICAgICAgY29uc3QgYXJyYXlTdGF0ZSA9IHN0YXRlW3BhdGhdXG5cbiAgICAgIGNvbnN0IHsgY29sbGFwc2VkUm93SURzLCBtYXRjaGVkSW5kZXggfSA9IHN0YXRlW3BhdGhdLnJvd3MucmVkdWNlKFxuICAgICAgICAoYWNjLCByb3csIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNNYXRjaGluZ1JvdyA9IHJvdy5pZCA9PT0gcm93SURcbiAgICAgICAgICBpZiAoaXNNYXRjaGluZ1JvdykgYWNjLm1hdGNoZWRJbmRleCA9IGluZGV4XG5cbiAgICAgICAgICBpZiAoIWlzTWF0Y2hpbmdSb3cgJiYgcm93LmNvbGxhcHNlZCkgYWNjLmNvbGxhcHNlZFJvd0lEcy5wdXNoKHJvdy5pZClcbiAgICAgICAgICBlbHNlIGlmIChpc01hdGNoaW5nUm93ICYmIGNvbGxhcHNlZCkgYWNjLmNvbGxhcHNlZFJvd0lEcy5wdXNoKHJvdy5pZClcblxuICAgICAgICAgIHJldHVybiBhY2NcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvbGxhcHNlZFJvd0lEczogW10sXG4gICAgICAgICAgbWF0Y2hlZEluZGV4OiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICApXG5cbiAgICAgIGlmIChtYXRjaGVkSW5kZXggPiAtMSkge1xuICAgICAgICBhcnJheVN0YXRlLnJvd3NbbWF0Y2hlZEluZGV4XS5jb2xsYXBzZWQgPSBjb2xsYXBzZWRcbiAgICAgICAgc2V0RG9jRmllbGRQcmVmZXJlbmNlcyhwYXRoLCB7IGNvbGxhcHNlZDogY29sbGFwc2VkUm93SURzIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgW3BhdGhdOiB7XG4gICAgICAgICAgLi4uYXJyYXlTdGF0ZSxcbiAgICAgICAgfSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld1N0YXRlXG4gICAgfVxuXG4gICAgY2FzZSAnU0VUX0FMTF9ST1dTX0NPTExBUFNFRCc6IHtcbiAgICAgIGNvbnN0IHsgY29sbGFwc2VkLCBwYXRoLCBzZXREb2NGaWVsZFByZWZlcmVuY2VzIH0gPSBhY3Rpb25cblxuICAgICAgY29uc3QgeyBjb2xsYXBzZWRSb3dJRHMsIHJvd3MgfSA9IHN0YXRlW3BhdGhdLnJvd3MucmVkdWNlKFxuICAgICAgICAoYWNjLCByb3cpID0+IHtcbiAgICAgICAgICBpZiAoY29sbGFwc2VkKSBhY2MuY29sbGFwc2VkUm93SURzLnB1c2gocm93LmlkKVxuXG4gICAgICAgICAgYWNjLnJvd3MucHVzaCh7XG4gICAgICAgICAgICAuLi5yb3csXG4gICAgICAgICAgICBjb2xsYXBzZWQsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIHJldHVybiBhY2NcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvbGxhcHNlZFJvd0lEczogW10sXG4gICAgICAgICAgcm93czogW10sXG4gICAgICAgIH0sXG4gICAgICApXG5cbiAgICAgIHNldERvY0ZpZWxkUHJlZmVyZW5jZXMocGF0aCwgeyBjb2xsYXBzZWQ6IGNvbGxhcHNlZFJvd0lEcyB9KVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgW3BhdGhdOiB7XG4gICAgICAgICAgLi4uc3RhdGVbcGF0aF0sXG4gICAgICAgICAgcm93cyxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJmaWVsZFJlZHVjZXIiLCJzdGF0ZSIsImFjdGlvbiIsInR5cGUiLCJuZXdTdGF0ZSIsIk9iamVjdCIsImVudHJpZXMiLCJmb3JFYWNoIiwicGF0aCIsImZpZWxkIiwib2xkRmllbGQiLCJuZXdGaWVsZCIsImVxdWFsIiwicmVzdWx0IiwidXNlciIsInJlZHVjZSIsImZpZWxkUGF0aCIsImluZGV4T2YiLCJwYXNzZXNDb25kaXRpb24iLCJjb25kaXRpb24iLCJyZWR1Y2VGaWVsZHNUb1ZhbHVlcyIsImdldFNpYmxpbmdEYXRhIiwia2V5IiwidmFsdWUiLCJpbmNsdWRlcyIsInJvd0luZGV4IiwicmVtYWluaW5nRmllbGRzIiwicm93cyIsInNlcGFyYXRlUm93cyIsInJvd3NNZXRhZGF0YSIsInNwbGljZSIsImRpc2FibGVGb3JtRGF0YSIsImxlbmd0aCIsImZsYXR0ZW5Sb3dzIiwiYmxvY2tUeXBlIiwic3ViRmllbGRTdGF0ZSIsImlkIiwiT2JqZWN0SUQiLCJ0b0hleFN0cmluZyIsInVuZGVmaW5lZCIsImNoaWxkRXJyb3JQYXRocyIsIlNldCIsImNvbGxhcHNlZCIsImluaXRpYWxWYWx1ZSIsInZhbGlkIiwicm93SW5kZXhBcmciLCJNYXRoIiwibWF4IiwibWluIiwiZHVwbGljYXRlUm93TWV0YWRhdGEiLCJkZWVwQ29weU9iamVjdCIsImR1cGxpY2F0ZVJvd1N0YXRlIiwia2V5cyIsIm1vdmVGcm9tSW5kZXgiLCJtb3ZlVG9JbmRleCIsImNvcHlPZk1vdmluZ1JvdyIsInJvd1N0YXRlQ29weSIsIm1vdmluZ1Jvd1N0YXRlIiwicm93SUQiLCJzZXREb2NGaWVsZFByZWZlcmVuY2VzIiwiYXJyYXlTdGF0ZSIsImNvbGxhcHNlZFJvd0lEcyIsIm1hdGNoZWRJbmRleCIsImFjYyIsInJvdyIsImluZGV4IiwiaXNNYXRjaGluZ1JvdyIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7K0JBVWdCQTs7O2VBQUFBOzs7cUVBVks7a0VBQ0g7Z0NBSWE7dUVBQ0o7NkVBQ007c0JBQ1M7Ozs7OztBQUVuQyxTQUFTQSxhQUFhQyxLQUFhLEVBQUVDLE1BQW1CO0lBQzdELE9BQVFBLE9BQU9DLElBQUk7UUFDakIsS0FBSztZQUFpQjtnQkFDcEIsTUFBTUMsV0FBVyxDQUFDO2dCQUVsQix1Q0FBdUM7Z0JBQ3ZDLCtDQUErQztnQkFDL0MsS0FBSztnQkFDTCwrQ0FBK0M7Z0JBQy9DLDBDQUEwQztnQkFFMUNDLE9BQU9DLE9BQU8sQ0FBQ0osT0FBT0QsS0FBSyxFQUFFTSxPQUFPLENBQUMsQ0FBQyxDQUFDQyxNQUFNQyxNQUFNO29CQUNqRCxNQUFNQyxXQUFXVCxLQUFLLENBQUNPLEtBQUs7b0JBQzVCLE1BQU1HLFdBQVdGO29CQUVqQixJQUFJLENBQUNHLElBQUFBLGtCQUFLLEVBQUNGLFVBQVVDLFdBQVc7d0JBQzlCUCxRQUFRLENBQUNJLEtBQUssR0FBR0c7b0JBQ25CLE9BQU8sSUFB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
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL0Zvcm0vZmllbGRSZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBPYmplY3RJRCBmcm9tICdic29uLW9iamVjdGlkJ1xuaW1wb3J0IGVxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5cbmltcG9ydCB0eXBlIHsgRmllbGRBY3Rpb24sIEZpZWxkcywgRm9ybUZpZWxkIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgZGVlcENvcHlPYmplY3QgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvZGVlcENvcHlPYmplY3QnXG5pbXBvcnQgZ2V0U2libGluZ0RhdGEgZnJvbSAnLi9nZXRTaWJsaW5nRGF0YSdcbmltcG9ydCByZWR1Y2VGaWVsZHNUb1ZhbHVlcyBmcm9tICcuL3JlZHVjZUZpZWxkc1RvVmFsdWVzJ1xuaW1wb3J0IHsgZmxhdHRlblJvd3MsIHNlcGFyYXRlUm93cyB9IGZyb20gJy4vcm93cydcblxuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkUmVkdWNlcihzdGF0ZTogRmllbGRzLCBhY3Rpb246IEZpZWxkQWN0aW9uKTogRmllbGRzIHtcbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgIGNhc2UgJ1JFUExBQ0VfU1RBVEUnOiB7XG4gICAgICBjb25zdCBuZXdTdGF0ZSA9IHt9XG5cbiAgICAgIC8vIE9ubHkgdXBkYXRlIGZpZWxkcyB0aGF0IGhhdmUgY2hhbmdlZFxuICAgICAgLy8gYnkgY29tcGFyaW5nIG9sZCB2YWx1ZSAvIGluaXRpYWxWYWx1ZSB0byBuZXdcbiAgICAgIC8vIC4uXG4gICAgICAvLyBUaGlzIGlzIGEgcGVyZm9ybWFuY2UgZW5oYW5jZW1lbnQgZm9yIHNhdmluZ1xuICAgICAgLy8gbGFyZ2UgZG9jdW1lbnRzIHdpdGggaHVuZHJlZHMgb2YgZmllbGRzXG5cbiAgICAgIE9iamVjdC5lbnRyaWVzKGFjdGlvbi5zdGF0ZSkuZm9yRWFjaCgoW3BhdGgsIGZpZWxkXSkgPT4ge1xuICAgICAgICBjb25zdCBvbGRGaWVsZCA9IHN0YXRlW3BhdGhdXG4gICAgICAgIGNvbnN0IG5ld0ZpZWxkID0gZmllbGRcblxuICAgICAgICBpZiAoIWVxdWFsKG9sZEZpZWxkLCBuZXdGaWVsZCkpIHtcbiAgICAgICAgICBuZXdTdGF0ZVtwYXRoXSA9IG5ld0ZpZWxkXG4gICAgICAgIH0gZWxzZSBpZiAob2xkRmllbGQpIHtcbiAgICAgICAgICBuZXdTdGF0ZVtwYXRoXSA9IG9sZEZpZWxkXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHJldHVybiBuZXdTdGF0ZVxuICAgIH1cblxuICAgIGNhc2UgJ1JFTU9WRSc6IHtcbiAgICAgIGNvbnN0IG5ld1N0YXRlID0geyAuLi5zdGF0ZSB9XG4gICAgICBpZiAobmV3U3RhdGVbYWN0aW9uLnBhdGhdKSBkZWxldGUgbmV3U3RhdGVbYWN0aW9uLnBhdGhdXG4gICAgICByZXR1cm4gbmV3U3RhdGVcbiAgICB9XG5cbiAgICBjYXNlICdNT0RJRllfQ09ORElUSU9OJzoge1xuICAgICAgY29uc3QgeyBwYXRoLCByZXN1bHQsIHVzZXIgfSA9IGFjdGlvblxuXG4gICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoc3RhdGUpLnJlZHVjZSgobmV3U3RhdGUsIFtmaWVsZFBhdGgsIGZpZWxkXSkgPT4ge1xuICAgICAgICBpZiAoZmllbGRQYXRoID09PSBwYXRoIHx8IGZpZWxkUGF0aC5pbmRleE9mKGAke3BhdGh9LmApID09PSAwKSB7XG4gICAgICAgICAgbGV0IHBhc3Nlc0NvbmRpdGlvbiA9IHJlc3VsdFxuXG4gICAgICAgICAgLy8gSWYgYSBjb25kaXRpb24gaXMgYmVpbmcgc2V0IHRvIHRydWUsXG4gICAgICAgICAgLy8gU2V0IGFsbCBjb25kaXRpb25zIHRvIHRydWVcbiAgICAgICAgICAvLyBCZXNpZGVzIHRob3NlIHdobyBzdGlsbCBmYWlsIHRoZWlyIG93biBjb25kaXRpb25zXG5cbiAgICAgICAgICBpZiAocGFzc2VzQ29uZGl0aW9uICYmIGZpZWxkLmNvbmRpdGlvbikge1xuICAgICAgICAgICAgcGFzc2VzQ29uZGl0aW9uID0gZmllbGQuY29uZGl0aW9uKFxuICAgICAgICAgICAgICByZWR1Y2VGaWVsZHNUb1ZhbHVlcyhzdGF0ZSwgdHJ1ZSksXG4gICAgICAgICAgICAgIGdldFNpYmxpbmdEYXRhKHN0YXRlLCBwYXRoKSxcbiAgICAgICAgICAgICAgeyB1c2VyIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLm5ld1N0YXRlLFxuICAgICAgICAgICAgW2ZpZWxkUGF0aF06IHtcbiAgICAgICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgICAgIHBhc3Nlc0NvbmRpdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5uZXdTdGF0ZSxcbiAgICAgICAgICBbZmllbGRQYXRoXToge1xuICAgICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgfSwge30pXG4gICAgfVxuXG4gICAgY2FzZSAnVVBEQVRFJzoge1xuICAgICAgY29uc3QgbmV3RmllbGQgPSBPYmplY3QuZW50cmllcyhhY3Rpb24pLnJlZHVjZShcbiAgICAgICAgKGZpZWxkLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICdjb25kaXRpb24nLFxuICAgICAgICAgICAgICAnZGlzYWJsZUZvcm1EYXRhJyxcbiAgICAgICAgICAgICAgJ2Vycm9yTWVzc2FnZScsXG4gICAgICAgICAgICAgICdpbml0aWFsVmFsdWUnLFxuICAgICAgICAgICAgICAncGFzc2VzQ29uZGl0aW9uJyxcbiAgICAgICAgICAgICAgJ3Jvd3MnLFxuICAgICAgICAgICAgICAndmFsaWQnLFxuICAgICAgICAgICAgICAndmFsaWRhdGUnLFxuICAgICAgICAgICAgICAndmFsdWUnLFxuICAgICAgICAgICAgXS5pbmNsdWRlcyhrZXkpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgICAgICAgW2tleV06IHZhbHVlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmaWVsZFxuICAgICAgICB9LFxuICAgICAgICBzdGF0ZVthY3Rpb24ucGF0aF0gfHwgKHt9IGFzIEZvcm1GaWVsZCksXG4gICAgICApXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBbYWN0aW9uLnBhdGhdOiBuZXdGaWVsZCxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYXNlICdSRU1PVkVfUk9XJzoge1xuICAgICAgY29uc3QgeyBwYXRoLCByb3dJbmRleCB9ID0gYWN0aW9uXG4gICAgICBjb25zdCB7IHJlbWFpbmluZ0ZpZWxkcywgcm93cyB9ID0gc2VwYXJhdGVSb3dzKHBhdGgsIHN0YXRlKVxuICAgICAgY29uc3Qgcm93c01ldGFkYXRhID0gWy4uLihzdGF0ZVtwYXRoXT8ucm93cyB8fCBbXSldXG5cbiAgICAgIHJvd3Muc3BsaWNlKHJvd0luZGV4LCAxKVxuICAgICAgcm93c01ldGFkYXRhLnNwbGljZShyb3dJbmRleCwgMSlcblxuICAgICAgY29uc3QgbmV3U3RhdGU6IEZpZWxkcyA9IHtcbiAgICAgICAgLi4ucmVtYWluaW5nRmllbGRzLFxuICAgICAgICBbcGF0aF06IHtcbiAgICAgICAgICAuLi5zdGF0ZVtwYXRoXSxcbiAgICAgICAgICBkaXNhYmxlRm9ybURhdGE6IHJvd3MubGVuZ3RoID4gMCxcbiAgICAgICAgICByb3dzOiByb3dzTWV0YWRhdGEsXG4gICAgICAgICAgdmFsdWU6IHJvd3MsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLmZsYXR0ZW5Sb3dzKHBhdGgsIHJvd3MpLFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3U3RhdGVcbiAgICB9XG5cbiAgICBjYXNlICdBRERfUk9XJzoge1xuICAgICAgY29uc3QgeyBibG9ja1R5cGUsIHBhdGgsIHJvd0luZGV4LCBzdWJGaWVsZFN0YXRlIH0gPSBhY3Rpb25cblxuICAgICAgY29uc3Qgcm93c01ldGFkYXRhID0gWy4uLihzdGF0ZVtwYXRoXT8ucm93cyB8fCBbXSldXG4gICAgICByb3dzTWV0YWRhdGEuc3BsaWNlKFxuICAgICAgICByb3dJbmRleCxcbiAgICAgICAgMCxcbiAgICAgICAgLy8gbmV3IHJvd1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IG5ldyBPYmplY3RJRCgpLnRvSGV4U3RyaW5nKCksXG4gICAgICAgICAgYmxvY2tUeXBlOiBibG9ja1R5cGUgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgIGNoaWxkRXJyb3JQYXRoczogbmV3IFNldCgpLFxuICAgICAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICApXG5cbiAgICAgIGlmIChibG9ja1R5cGUpIHtcbiAgICAgICAgc3ViRmllbGRTdGF0ZS5ibG9ja1R5cGUgPSB7XG4gICAgICAgICAgaW5pdGlhbFZhbHVlOiBibG9ja1R5cGUsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgdmFsdWU6IGJsb2NrVHlwZSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHJlbWFpbmluZ0ZpZWxkcywgcm93cyB9ID0gc2VwYXJhdGVSb3dzKHBhdGgsIHN0YXRlKVxuXG4gICAgICAvLyBhY3R1YWwgZm9ybSBzdGF0ZSAodmFsdWUgc2F2ZWQgaW4gZGIpXG4gICAgICByb3dzLnNwbGljZShyb3dJbmRleCwgMCwgc3ViRmllbGRTdGF0ZSlcblxuICAgICAgY29uc3QgbmV3U3RhdGU6IEZpZWxkcyA9IHtcbiAgICAgICAgLi4ucmVtYWluaW5nRmllbGRzLFxuICAgICAgICAuLi5mbGF0dGVuUm93cyhwYXRoLCByb3dzKSxcbiAgICAgICAgW3BhdGhdOiB7XG4gICAgICAgICAgLi4uc3RhdGVbcGF0aF0sXG4gICAgICAgICAgZGlzYWJsZUZvcm1EYXRhOiB0cnVlLFxuICAgICAgICAgIHJvd3M6IHJvd3NNZXRhZGF0YSxcbiAgICAgICAgICB2YWx1ZTogcm93cyxcbiAgICAgICAgfSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld1N0YXRlXG4gICAgfVxuXG4gICAgY2FzZSAnUkVQTEFDRV9ST1cnOiB7XG4gICAgICBjb25zdCB7IGJsb2NrVHlwZSwgcGF0aCwgcm93SW5kZXg6IHJvd0luZGV4QXJnLCBzdWJGaWVsZFN0YXRlIH0gPSBhY3Rpb25cbiAgICAgIGNvbnN0IHsgcmVtYWluaW5nRmllbGRzLCByb3dzIH0gPSBzZXBhcmF0ZVJvd3MocGF0aCwgc3RhdGUpXG4gICAgICBjb25zdCByb3dJbmRleCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHJvd0luZGV4QXJnLCByb3dzPy5sZW5ndGggLSAxIHx8IDApKVxuXG4gICAgICBjb25zdCByb3dzTWV0YWRhdGEgPSBbLi4uKHN0YXRlW3BhdGhdPy5yb3dzIHx8IFtdKV1cbiAgICAgIHJvd3NNZXRhZGF0YVtyb3dJbmRleF0gPSB7XG4gICAgICAgIGlkOiBuZXcgT2JqZWN0SUQoKS50b0hleFN0cmluZygpLFxuICAgICAgICBibG9ja1R5cGU6IGJsb2NrVHlwZSB8fCB1bmRlZmluZWQsXG4gICAgICAgIGNoaWxkRXJyb3JQYXRoczogbmV3IFNldCgpLFxuICAgICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgICAgfVxuXG4gICAgICBpZiAoYmxvY2tUeXBlKSB7XG4gICAgICAgIHN1YkZpZWxkU3RhdGUuYmxvY2tUeXBlID0ge1xuICAgICAgICAgIGluaXRpYWxWYWx1ZTogYmxvY2tUeXBlLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICAgIHZhbHVlOiBibG9ja1R5cGUsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gcmVwbGFjZSBmb3JtIGZpZWxkIHN0YXRlXG4gICAgICByb3dzW3Jvd0luZGV4XSA9IHN1YkZpZWxkU3RhdGVcblxuICAgICAgY29uc3QgbmV3U3RhdGU6IEZpZWxkcyA9IHtcbiAgICAgICAgLi4ucmVtYWluaW5nRmllbGRzLFxuICAgICAgICAuLi5mbGF0dGVuUm93cyhwYXRoLCByb3dzKSxcbiAgICAgICAgW3BhdGhdOiB7XG4gICAgICAgICAgLi4uc3RhdGVbcGF0aF0sXG4gICAgICAgICAgZGlzYWJsZUZvcm1EYXRhOiB0cnVlLFxuICAgICAgICAgIHJvd3M6IHJvd3NNZXRhZGF0YSxcbiAgICAgICAgICB2YWx1ZTogcm93cyxcbiAgICAgICAgfSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld1N0YXRlXG4gICAgfVxuXG4gICAgY2FzZSAnRFVQTElDQVRFX1JPVyc6IHtcbiAgICAgIGNvbnN0IHsgcGF0aCwgcm93SW5kZXggfSA9IGFjdGlvblxuICAgICAgY29uc3QgeyByZW1haW5pbmdGaWVsZHMsIHJvd3MgfSA9IHNlcGFyYXRlUm93cyhwYXRoLCBzdGF0ZSlcbiAgICAgIGNvbnN0IHJvd3NNZXRhZGF0YSA9IHN0YXRlW3BhdGhdPy5yb3dzIHx8IFtdXG5cbiAgICAgIGNvbnN0IGR1cGxpY2F0ZVJvd01ldGFkYXRhID0gZGVlcENvcHlPYmplY3Qocm93c01ldGFkYXRhW3Jvd0luZGV4XSlcbiAgICAgIGlmIChkdXBsaWNhdGVSb3dNZXRhZGF0YS5pZCkgZHVwbGljYXRlUm93TWV0YWRhdGEuaWQgPSBuZXcgT2JqZWN0SUQoKS50b0hleFN0cmluZygpXG5cbiAgICAgIGNvbnN0IGR1cGxpY2F0ZVJvd1N0YXRlID0gZGVlcENvcHlPYmplY3Qocm93c1tyb3dJbmRleF0pXG4gICAgICBpZiAoZHVwbGljYXRlUm93U3RhdGUuaWQpIGR1cGxpY2F0ZVJvd1N0YXRlLmlkID0gbmV3IE9iamVjdElEKCkudG9IZXhTdHJpbmcoKVxuXG4gICAgICAvLyBJZiB0aGVyZSBhcmUgc3ViZmllbGRzXG4gICAgICBpZiAoT2JqZWN0LmtleXMoZHVwbGljYXRlUm93U3RhdGUpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gQWRkIG5ldyBvYmplY3QgY29udGFpbmluZyBzdWJmaWVsZCBuYW1lcyB0byB1bmZsYXR0ZW5lZFJvd3MgYXJyYXlcbiAgICAgICAgcm93cy5zcGxpY2Uocm93SW5kZXggKyAxLCAwLCBkdXBsaWNhdGVSb3dTdGF0ZSlcbiAgICAgICAgcm93c01ldGFkYXRhLnNwbGljZShyb3dJbmRleCArIDEsIDAsIGR1cGxpY2F0ZVJvd01ldGFkYXRhKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgLi4ucmVtYWluaW5nRmllbGRzLFxuICAgICAgICBbcGF0aF06IHtcbiAgICAgICAgICAuLi5zdGF0ZVtwYXRoXSxcbiAgICAgICAgICBkaXNhYmxlRm9ybURhdGE6IHRydWUsXG4gICAgICAgICAgcm93czogcm93c01ldGFkYXRhLFxuICAgICAgICAgIHZhbHVlOiByb3dzLFxuICAgICAgICB9LFxuICAgICAgICAuLi5mbGF0dGVuUm93cyhwYXRoLCByb3dzKSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld1N0YXRlXG4gICAgfVxuXG4gICAgY2FzZSAnTU9WRV9ST1cnOiB7XG4gICAgICBjb25zdCB7IG1vdmVGcm9tSW5kZXgsIG1vdmVUb0luZGV4LCBwYXRoIH0gPSBhY3Rpb25cbiAgICAgIGNvbnN0IHsgcmVtYWluaW5nRmllbGRzLCByb3dzIH0gPSBzZXBhcmF0ZVJvd3MocGF0aCwgc3RhdGUpXG5cbiAgICAgIC8vIGNvcHkgdGhlIHJvdyB0byBtb3ZlXG4gICAgICBjb25zdCBjb3B5T2ZNb3ZpbmdSb3cgPSByb3dzW21vdmVGcm9tSW5kZXhdXG4gICAgICAvLyBkZWxldGUgdGhlIHJvdyBieSBpbmRleFxuICAgICAgcm93cy5zcGxpY2UobW92ZUZyb21JbmRleCwgMSlcbiAgICAgIC8vIGluc2VydCByb3cgY29weU9mTW92aW5nUm93IGJhY2sgaW5cbiAgICAgIHJvd3Muc3BsaWNlKG1vdmVUb0luZGV4LCAwLCBjb3B5T2ZNb3ZpbmdSb3cpXG5cbiAgICAgIC8vIG1vZGlmeSBhcnJheS9ibG9jayBpbnRlcm5hbCByb3cgc3RhdGUgKGkuZS4gY29sbGFwc2VkLCBibG9ja1R5cGUpXG4gICAgICBjb25zdCByb3dTdGF0ZUNvcHkgPSBbLi4uKHN0YXRlW3BhdGhdPy5yb3dzIHx8IFtdKV1cbiAgICAgIGNvbnN0IG1vdmluZ1Jvd1N0YXRlID0geyAuLi5yb3dTdGF0ZUNvcHlbbW92ZUZyb21JbmRleF0gfVxuICAgICAgcm93U3RhdGVDb3B5LnNwbGljZShtb3ZlRnJvbUluZGV4LCAxKVxuICAgICAgcm93U3RhdGVDb3B5LnNwbGljZShtb3ZlVG9JbmRleCwgMCwgbW92aW5nUm93U3RhdGUpXG5cbiAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICAuLi5yZW1haW5pbmdGaWVsZHMsXG4gICAgICAgIC4uLmZsYXR0ZW5Sb3dzKHBhdGgsIHJvd3MpLFxuICAgICAgICBbcGF0aF06IHtcbiAgICAgICAgICAuLi5zdGF0ZVtwYXRoXSxcbiAgICAgICAgICByb3dzOiByb3dTdGF0ZUNvcHksXG4gICAgICAgIH0sXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXdTdGF0ZVxuICAgIH1cblxuICAgIGNhc2UgJ1NFVF9ST1dfQ09MTEFQU0VEJzoge1xuICAgICAgY29uc3QgeyBjb2xsYXBzZWQsIHBhdGgsIHJvd0lELCBzZXREb2NGaWVsZFByZWZlcmVuY2VzIH0gPSBhY3Rpb25cblxuICAgICAgY29uc3QgYXJyYXlTdGF0ZSA9IHN0YXRlW3BhdGhdXG5cbiAgICAgIGNvbnN0IHsgY29sbGFwc2VkUm93SURzLCBtYXRjaGVkSW5kZXggfSA9IHN0YXRlW3BhdGhdLnJvd3MucmVkdWNlKFxuICAgICAgICAoYWNjLCByb3csIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNNYXRjaGluZ1JvdyA9IHJvdy5pZCA9PT0gcm93SURcbiAgICAgICAgICBpZiAoaXNNYXRjaGluZ1JvdykgYWNjLm1hdGNoZWRJbmRleCA9IGluZGV4XG5cbiAgICAgICAgICBpZiAoIWlzTWF0Y2hpbmdSb3cgJiYgcm93LmNvbGxhcHNlZCkgYWNjLmNvbGxhcHNlZFJvd0lEcy5wdXNoKHJvdy5pZClcbiAgICAgICAgICBlbHNlIGlmIChpc01hdGNoaW5nUm93ICYmIGNvbGxhcHNlZCkgYWNjLmNvbGxhcHNlZFJvd0lEcy5wdXNoKHJvdy5pZClcblxuICAgICAgICAgIHJldHVybiBhY2NcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvbGxhcHNlZFJvd0lEczogW10sXG4gICAgICAgICAgbWF0Y2hlZEluZGV4OiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICApXG5cbiAgICAgIGlmIChtYXRjaGVkSW5kZXggPiAtMSkge1xuICAgICAgICBhcnJheVN0YXRlLnJvd3NbbWF0Y2hlZEluZGV4XS5jb2xsYXBzZWQgPSBjb2xsYXBzZWRcbiAgICAgICAgc2V0RG9jRmllbGRQcmVmZXJlbmNlcyhwYXRoLCB7IGNvbGxhcHNlZDogY29sbGFwc2VkUm93SURzIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgW3BhdGhdOiB7XG4gICAgICAgICAgLi4uYXJyYXlTdGF0ZSxcbiAgICAgICAgfSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld1N0YXRlXG4gICAgfVxuXG4gICAgY2FzZSAnU0VUX0FMTF9ST1dTX0NPTExBUFNFRCc6IHtcbiAgICAgIGNvbnN0IHsgY29sbGFwc2VkLCBwYXRoLCBzZXREb2NGaWVsZFByZWZlcmVuY2VzIH0gPSBhY3Rpb25cblxuICAgICAgY29uc3QgeyBjb2xsYXBzZWRSb3dJRHMsIHJvd3MgfSA9IHN0YXRlW3BhdGhdLnJvd3MucmVkdWNlKFxuICAgICAgICAoYWNjLCByb3cpID0+IHtcbiAgICAgICAgICBpZiAoY29sbGFwc2VkKSBhY2MuY29sbGFwc2VkUm93SURzLnB1c2gocm93LmlkKVxuXG4gICAgICAgICAgYWNjLnJvd3MucHVzaCh7XG4gICAgICAgICAgICAuLi5yb3csXG4gICAgICAgICAgICBjb2xsYXBzZWQsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIHJldHVybiBhY2NcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvbGxhcHNlZFJvd0lEczogW10sXG4gICAgICAgICAgcm93czogW10sXG4gICAgICAgIH0sXG4gICAgICApXG5cbiAgICAgIHNldERvY0ZpZWxkUHJlZmVyZW5jZXMocGF0aCwgeyBjb2xsYXBzZWQ6IGNvbGxhcHNlZFJvd0lEcyB9KVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgW3BhdGhdOiB7XG4gICAgICAgICAgLi4uc3RhdGVbcGF0aF0sXG4gICAgICAgICAgcm93cyxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJmaWVsZFJlZHVjZXIiLCJzdGF0ZSIsImFjdGlvbiIsInR5cGUiLCJuZXdTdGF0ZSIsIk9iamVjdCIsImVudHJpZXMiLCJmb3JFYWNoIiwicGF0aCIsImZpZWxkIiwib2xkRmllbGQiLCJuZXdGaWVsZCIsImVxdWFsIiwicmVzdWx0IiwidXNlciIsInJlZHVjZSIsImZpZWxkUGF0aCIsImluZGV4T2YiLCJwYXNzZXNDb25kaXRpb24iLCJjb25kaXRpb24iLCJyZWR1Y2VGaWVsZHNUb1ZhbHVlcyIsImdldFNpYmxpbmdEYXRhIiwia2V5IiwidmFsdWUiLCJpbmNsdWRlcyIsInJvd0luZGV4IiwicmVtYWluaW5nRmllbGRzIiwicm93cyIsInNlcGFyYXRlUm93cyIsInJvd3NNZXRhZGF0YSIsInNwbGljZSIsImRpc2FibGVGb3JtRGF0YSIsImxlbmd0aCIsImZsYXR0ZW5Sb3dzIiwiYmxvY2tUeXBlIiwic3ViRmllbGRTdGF0ZSIsImlkIiwiT2JqZWN0SUQiLCJ0b0hleFN0cmluZyIsInVuZGVmaW5lZCIsImNoaWxkRXJyb3JQYXRocyIsIlNldCIsImNvbGxhcHNlZCIsImluaXRpYWxWYWx1ZSIsInZhbGlkIiwicm93SW5kZXhBcmciLCJNYXRoIiwibWF4IiwibWluIiwiZHVwbGljYXRlUm93TWV0YWRhdGEiLCJkZWVwQ29weU9iamVjdCIsImR1cGxpY2F0ZVJvd1N0YXRlIiwia2V5cyIsIm1vdmVGcm9tSW5kZXgiLCJtb3ZlVG9JbmRleCIsImNvcHlPZk1vdmluZ1JvdyIsInJvd1N0YXRlQ29weSIsIm1vdmluZ1Jvd1N0YXRlIiwicm93SUQiLCJzZXREb2NGaWVsZFByZWZlcmVuY2VzIiwiYXJyYXlTdGF0ZSIsImNvbGxhcHNlZFJvd0lEcyIsIm1hdGNoZWRJbmRleCIsImFjYyIsInJvdyIsImluZGV4IiwiaXNNYXRjaGluZ1JvdyIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7K0JBVWdCQTs7O2VBQUFBOzs7cUVBVks7a0VBQ0g7Z0NBSWE7dUVBQ0o7NkVBQ007c0JBQ1M7Ozs7OztBQUVuQyxTQUFTQSxhQUFhQyxLQUFhLEVBQUVDLE1BQW1CO0lBQzdELE9BQVFBLE9BQU9DLElBQUk7UUFDakIsS0FBSztZQUFpQjtnQkFDcEIsTUFBTUMsV0FBVyxDQUFDO2dCQUVsQix1Q0FBdUM7Z0JBQ3ZDLCtDQUErQztnQkFDL0MsS0FBSztnQkFDTCwrQ0FBK0M7Z0JBQy9DLDBDQUEwQztnQkFFMUNDLE9BQU9DLE9BQU8sQ0FBQ0osT0FBT0QsS0FBSyxFQUFFTSxPQUFPLENBQUMsQ0FBQyxDQUFDQyxNQUFNQyxNQUFNO29CQUNqRCxNQUFNQyxXQUFXVCxLQUFLLENBQUNPLEtBQUs7b0JBQzVCLE1BQU1HLFdBQVdGO29CQUVqQixJQUFJLENBQUNHLElBQUFBLGtCQUFLLEVBQUNGLFVBQVVDLFdBQVc7d0JBQzlCUCxRQUFRLENBQUNJLEtBQUssR0FBR0c7b0JBQ25CLE9BQU8sSUFBSUQsVUFBVTt3QkFDbkJOLFFBQVEsQ0FBQ0ksS0FBSyxHQUFH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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/forms/Form/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAMnF,OAAO,KAAK,EAKV,KAAK,EAGN,MAAM,SAAS,CAAA;AAiChB,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAsmBzB,CAAA;AAED,eAAe,IAAI,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/forms/Form/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAMnF,OAAO,KAAK,EAKV,KAAK,EAGN,MAAM,SAAS,CAAA;AAkChB,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAinBzB,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -21,6 +21,7 @@ const _wait = /*#__PURE__*/ _interop_require_default(require("../../../../utilit
21
21
  const _api = require("../../../api");
22
22
  const _useThrottledEffect = /*#__PURE__*/ _interop_require_default(require("../../../hooks/useThrottledEffect"));
23
23
  const _Auth = require("../../utilities/Auth");
24
+ const _Config = require("../../utilities/Config");
24
25
  const _DocumentInfo = require("../../utilities/DocumentInfo");
25
26
  const _Locale = require("../../utilities/Locale");
26
27
  const _OperationProvider = require("../../utilities/OperationProvider");
@@ -81,13 +82,14 @@ function _interop_require_wildcard(obj, nodeInterop) {
81
82
  }
82
83
  const baseClass = 'form';
83
84
  const Form = (props)=>{
84
- const { action, children, className, disableSuccessStatus, disabled, handleResponse, initialData, initialState, method, onSubmit, onSuccess, redirect, waitForAutocomplete } = props;
85
+ const { action, children, className, disableSuccessStatus, disabled, handleResponse, initialData, initialState, method, onSubmit, onSuccess, redirect, submitted: submittedFromProps, waitForAutocomplete } = props;
85
86
  const history = (0, _reactrouterdom.useHistory)();
86
87
  const { code: locale } = (0, _Locale.useLocale)();
87
88
  const { i18n, t } = (0, _reacti18next.useTranslation)('general');
88
89
  const { refreshCookie, user } = (0, _Auth.useAuth)();
89
90
  const { id, collection, getDocPreferences, global } = (0, _DocumentInfo.useDocumentInfo)();
90
91
  const operation = (0, _OperationProvider.useOperation)();
92
+ const config = (0, _Config.useConfig)();
91
93
  const [modified, setModified] = (0, _react.useState)(false);
92
94
  const [processing, setProcessing] = (0, _react.useState)(false);
93
95
  const [submitted, setSubmitted] = (0, _react.useState)(false);
@@ -165,6 +167,7 @@ const Form = (props)=>{
165
167
  if (typeof field.validate === 'function') {
166
168
  validationResult = await field.validate(field.value, {
167
169
  id,
170
+ config,
168
171
  data,
169
172
  operation,
170
173
  siblingData: contextRef.current.getSiblingData(path),
@@ -194,7 +197,8 @@ const Form = (props)=>{
194
197
  user,
195
198
  operation,
196
199
  t,
197
- dispatchFields
200
+ dispatchFields,
201
+ config
198
202
  ]);
199
203
  const submit = (0, _react.useCallback)(async (options = {}, e)=>{
200
204
  const { action: actionToUse = action, method: methodToUse = method, overrides = {}, skipValidation } = options;
@@ -403,6 +407,7 @@ const Form = (props)=>{
403
407
  if (fieldConfig) {
404
408
  const subFieldState = await (0, _buildStateFromSchema.default)({
405
409
  id,
410
+ config,
406
411
  data,
407
412
  fieldSchema: fieldConfig,
408
413
  locale,
@@ -414,7 +419,7 @@ const Form = (props)=>{
414
419
  dispatchFields({
415
420
  blockType: data?.blockType,
416
421
  path,
417
- rowIndex: rowIndex - 1,
422
+ rowIndex,
418
423
  subFieldState,
419
424
  type: 'ADD_ROW'
420
425
  });
@@ -427,7 +432,8 @@ const Form = (props)=>{
427
432
  operation,
428
433
  locale,
429
434
  t,
430
- getRowConfigByPath
435
+ getRowConfigByPath,
436
+ config
431
437
  ]);
432
438
  const removeFieldRow = (0, _react.useCallback)(async ({ path, rowIndex })=>{
433
439
  dispatchFields({
@@ -447,6 +453,7 @@ const Form = (props)=>{
447
453
  if (fieldConfig) {
448
454
  const subFieldState = await (0, _buildStateFromSchema.default)({
449
455
  id,
456
+ config,
450
457
  data,
451
458
  fieldSchema: fieldConfig,
452
459
  locale,
@@ -458,7 +465,7 @@ const Form = (props)=>{
458
465
  dispatchFields({
459
466
  blockType: data?.blockType,
460
467
  path,
461
- rowIndex: rowIndex - 1,
468
+ rowIndex,
462
469
  subFieldState,
463
470
  type: 'REPLACE_ROW'
464
471
  });
@@ -471,7 +478,8 @@ const Form = (props)=>{
471
478
  operation,
472
479
  locale,
473
480
  t,
474
- getRowConfigByPath
481
+ getRowConfigByPath,
482
+ config
475
483
  ]);
476
484
  const getFields = (0, _react.useCallback)(()=>contextRef.current.fields, [
477
485
  contextRef
@@ -515,6 +523,7 @@ const Form = (props)=>{
515
523
  const preferences = await getDocPreferences();
516
524
  const state = await (0, _buildStateFromSchema.default)({
517
525
  id,
526
+ config,
518
527
  data,
519
528
  fieldSchema,
520
529
  locale,
@@ -538,7 +547,8 @@ const Form = (props)=>{
538
547
  locale,
539
548
  t,
540
549
  dispatchFields,
541
- getDocPreferences
550
+ getDocPreferences,
551
+ config
542
552
  ]);
543
553
  const replaceState = (0, _react.useCallback)((state)=>{
544
554
  contextRef.current = {
@@ -571,6 +581,11 @@ const Form = (props)=>{
571
581
  contextRef.current.addFieldRow = addFieldRow;
572
582
  contextRef.current.removeFieldRow = removeFieldRow;
573
583
  contextRef.current.replaceFieldRow = replaceFieldRow;
584
+ (0, _react.useEffect)(()=>{
585
+ if (typeof submittedFromProps === 'boolean') setSubmitted(submittedFromProps);
586
+ }, [
587
+ submittedFromProps
588
+ ]);
574
589
  (0, _react.useEffect)(()=>{
575
590
  if (initialState) {
576
591
  contextRef.current = {
@@ -647,4 +662,4 @@ const Form = (props)=>{
647
662
  };
648
663
  const _default = Form;
649
664
 
650
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL0Zvcm0vaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLW5vbmludGVyYWN0aXZlLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgaXNEZWVwRXF1YWwgZnJvbSAnZGVlcC1lcXVhbCdcbmltcG9ydCB7IHNlcmlhbGl6ZSB9IGZyb20gJ29iamVjdC10by1mb3JtZGF0YSdcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWR1Y2VyLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyB1c2VIaXN0b3J5IH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSdcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSAncmVhY3QtdG9hc3RpZnknXG5cbmltcG9ydCB0eXBlIHsgRmllbGQgfSBmcm9tICcuLi8uLi8uLi8uLi9maWVsZHMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBDb250ZXh0LFxuICBGaWVsZHMsXG4gIENvbnRleHQgYXMgRm9ybUNvbnRleHRUeXBlLFxuICBHZXREYXRhQnlQYXRoLFxuICBQcm9wcyxcbiAgUm93LFxuICBTdWJtaXRPcHRpb25zLFxufSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdGllcy9pc051bWJlcidcbmltcG9ydCB7IHNldHNBcmVFcXVhbCB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdGllcy9zZXRzQXJlRXF1YWwnXG5pbXBvcnQgeyBzcGxpdFBhdGhCeUFycmF5RmllbGRzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzL3NwbGl0UGF0aEJ5QXJyYXlGaWVsZHMnXG5pbXBvcnQgd2FpdCBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvd2FpdCdcbmltcG9ydCB7IHJlcXVlc3RzIH0gZnJvbSAnLi4vLi4vLi4vYXBpJ1xuaW1wb3J0IHVzZVRocm90dGxlZEVmZmVjdCBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUaHJvdHRsZWRFZmZlY3QnXG5pbXBvcnQgeyB1c2VBdXRoIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0F1dGgnXG5pbXBvcnQgeyB1c2VEb2N1bWVudEluZm8gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvRG9jdW1lbnRJbmZvJ1xuaW1wb3J0IHsgdXNlTG9jYWxlIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0xvY2FsZSdcbmltcG9ydCB7IHVzZU9wZXJhdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9PcGVyYXRpb25Qcm92aWRlcidcbmltcG9ydCB7IFdhdGNoRm9ybUVycm9ycyB9IGZyb20gJy4vV2F0Y2hGb3JtRXJyb3JzJ1xuaW1wb3J0IHsgYnVpbGRGaWVsZFNjaGVtYU1hcCB9IGZyb20gJy4vYnVpbGRGaWVsZFNjaGVtYU1hcCdcbmltcG9ydCBidWlsZEluaXRpYWxTdGF0ZSBmcm9tICcuL2J1aWxkSW5pdGlhbFN0YXRlJ1xuaW1wb3J0IGJ1aWxkU3RhdGVGcm9tU2NoZW1hIGZyb20gJy4vYnVpbGRTdGF0ZUZyb21TY2hlbWEnXG5pbXBvcnQge1xuICBGb3JtQ29udGV4dCxcbiAgRm9ybUZpZWxkc0NvbnRleHQsXG4gIEZvcm1XYXRjaENvbnRleHQsXG4gIE1vZGlmaWVkQ29udGV4dCxcbiAgUHJvY2Vzc2luZ0NvbnRleHQsXG4gIFN1Ym1pdHRlZENvbnRleHQsXG59IGZyb20gJy4vY29udGV4dCdcbmltcG9ydCBlcnJvck1lc3NhZ2VzIGZyb20gJy4vZXJyb3JNZXNzYWdlcydcbmltcG9ydCB7IGZpZWxkUmVkdWNlciB9IGZyb20gJy4vZmllbGRSZWR1Y2VyJ1xuaW1wb3J0IGdldERhdGFCeVBhdGhGdW5jIGZyb20gJy4vZ2V0RGF0YUJ5UGF0aCdcbmltcG9ydCBnZXRTaWJsaW5nRGF0YUZ1bmMgZnJvbSAnLi9nZXRTaWJsaW5nRGF0YSdcbmltcG9ydCBpbml0Q29udGV4dFN0YXRlIGZyb20gJy4vaW5pdENvbnRleHRTdGF0ZSdcbmltcG9ydCByZWR1Y2VGaWVsZHNUb1ZhbHVlcyBmcm9tICcuL3JlZHVjZUZpZWxkc1RvVmFsdWVzJ1xuXG5jb25zdCBiYXNlQ2xhc3MgPSAnZm9ybSdcblxuY29uc3QgRm9ybTogUmVhY3QuRkM8UHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhY3Rpb24sXG4gICAgY2hpbGRyZW4sXG4gICAgY2xhc3NOYW1lLFxuICAgIGRpc2FibGVTdWNjZXNzU3RhdHVzLFxuICAgIGRpc2FibGVkLFxuICAgIGhhbmRsZVJlc3BvbnNlLFxuICAgIGluaXRpYWxEYXRhLCAvLyB2YWx1ZXMgb25seSwgcGF0aHMgYXJlIHJlcXVpcmVkIGFzIGtleSAtIGZvcm0gc2hvdWxkIGJ1aWxkIGluaXRpYWwgc3RhdGUgYXMgY29udmVuaWVuY2VcbiAgICBpbml0aWFsU3RhdGUsIC8vIGZ1bGx5IGZvcm1lZCBpbml0aWFsIGZpZWxkIHN0YXRlXG4gICAgbWV0aG9kLFxuICAgIG9uU3VibWl0LFxuICAgIG9uU3VjY2VzcyxcbiAgICByZWRpcmVjdCxcbiAgICB3YWl0Rm9yQXV0b2NvbXBsZXRlLFxuICB9ID0gcHJvcHNcblxuICBjb25zdCBoaXN0b3J5ID0gdXNlSGlzdG9yeSgpXG4gIGNvbnN0IHsgY29kZTogbG9jYWxlIH0gPSB1c2VMb2NhbGUoKVxuICBjb25zdCB7IGkxOG4sIHQgfSA9IHVzZVRyYW5zbGF0aW9uKCdnZW5lcmFsJylcbiAgY29uc3QgeyByZWZyZXNoQ29va2llLCB1c2VyIH0gPSB1c2VBdXRoKClcbiAgY29uc3QgeyBpZCwgY29sbGVjdGlvbiwgZ2V0RG9jUHJlZmVyZW5jZXMsIGdsb2JhbCB9ID0gdXNlRG9jdW1lbnRJbmZvKClcbiAgY29uc3Qgb3BlcmF0aW9uID0gdXNlT3BlcmF0aW9uKClcblxuICBjb25zdCBbbW9kaWZpZWQsIHNldE1vZGlmaWVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbcHJvY2Vzc2luZywgc2V0UHJvY2Vzc2luZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3N1Ym1pdHRlZCwgc2V0U3VibWl0dGVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZm9ybWF0dGVkSW5pdGlhbERhdGEsIHNldEZvcm1hdHRlZEluaXRpYWxEYXRhXSA9IHVzZVN0YXRlKGJ1aWxkSW5pdGlhbFN0YXRlKGluaXRpYWxEYXRhKSlcblxuICBjb25zdCBmb3JtUmVmID0gdXNlUmVmPEhUTUxGb3JtRWxlbWVudD4obnVsbClcbiAgY29uc3QgY29udGV4dFJlZiA9IHVzZVJlZih7fSBhcyBGb3JtQ29udGV4dFR5cGUpXG5cbiAgbGV0IGluaXRpYWxGaWVsZFN0YXRlID0ge31cblxuICBpZiAoZm9ybWF0dGVkSW5pdGlhbERhdGEpIGluaXRpYWxGaWVsZFN0YXRlID0gZm9ybWF0dGVkSW5pdGlhbERhdGFcbiAgaWYgKGluaXRpYWxTdGF0ZSkgaW5pdGlhbEZpZWxkU3RhdGUgPSBpbml0aWFsU3RhdGVcblxuICBjb25zdCBmaWVsZHNSZWR1Y2VyID0gdXNlUmVkdWNlcihmaWVsZFJlZHVjZXIsIHt9LCAoKSA9PiBpbml0aWFsRmllbGRTdGF0ZSlcbiAgY29uc3QgW2ZpZWxkcywgZGlzcGF0Y2hGaWVsZHNdID0gZmllbGRzUmVkdWNlclxuXG4gIGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMgPSBmaWVsZHNcbiAgY29udGV4dFJlZi5jdXJyZW50LmRpc3BhdGNoRmllbGRzID0gZGlzcGF0Y2hGaWVsZHNcblxuICAvLyBCdWlsZCBhIGN1cnJlbnQgc2V0IG9mIGNoaWxkIGVycm9ycyBmb3IgYWxsIHJvd3MgaW4gZm9ybSBzdGF0ZVxuICBjb25zdCBidWlsZFJvd0Vycm9ycyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBleGlzdGluZ0ZpZWxkUm93czogeyBbcGF0aDogc3RyaW5nXTogUm93W10gfSA9IHt9XG4gICAgY29uc3QgbmV3RmllbGRSb3dzOiB7IFtwYXRoOiBzdHJpbmddOiBSb3dbXSB9ID0ge31cblxuICAgIE9iamVjdC5lbnRyaWVzKGZpZWxkcykuZm9yRWFjaCgoW3BhdGgsIGZpZWxkXSkgPT4ge1xuICAgICAgY29uc3QgcGF0aFNlZ21lbnRzID0gc3BsaXRQYXRoQnlBcnJheUZpZWxkcyhwYXRoKVxuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGhTZWdtZW50cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBjb25zdCBmaWVsZFBhdGggPSBwYXRoU2VnbWVudHMuc2xpY2UoMCwgaSArIDEpLmpvaW4oJy4nKVxuICAgICAgICBjb25zdCBmb3JtRmllbGQgPSBmaWVsZHM/LltmaWVsZFBhdGhdXG5cbiAgICAgICAgLy8gSXMgdGhpcyBhbiBhcnJheSBvciBibG9ja3MgZmllbGQ/XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZvcm1GaWVsZD8ucm93cykpIHtcbiAgICAgICAgICAvLyBLZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBleGlzdGluZyByb3cgc3RhdGVcbiAgICAgICAgICBleGlzdGluZ0ZpZWxkUm93c1tmaWVsZFBhdGhdID0gZm9ybUZpZWxkLnJvd3NcblxuICAgICAgICAgIC8vIEEgbmV3IHJvdyBzdGF0ZSB3aWxsIGJlIHVzZWQgdG8gY29tcGFyZVxuICAgICAgICAgIC8vIGFnYWluc3QgdGhlIG9sZCBzdGF0ZSBsYXRlcixcbiAgICAgICAgICAvLyB0byBzZWUgaWYgd2UgbmVlZCB0byBkaXNwYXRjaCBhbiB1cGRhdGVcbiAgICAgICAgICBpZiAoIW5ld0ZpZWxkUm93c1tmaWVsZFBhdGhdKSB7XG4gICAgICAgICAgICBuZXdGaWVsZFJvd3NbZmllbGRQYXRoXSA9IGZvcm1GaWVsZC5yb3dzLm1hcCgoZXhpc3RpbmdSb3cpID0+ICh7XG4gICAgICAgICAgICAgIC4uLmV4aXN0aW5nUm93LFxuICAgICAgICAgICAgICBjaGlsZEVycm9yUGF0aHM6IG5ldyBTZXQoKSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHJvd0luZGV4ID0gcGF0aFNlZ21lbnRzW2kgKyAxXVxuICAgICAgICAgIGNvbnN0IGNoaWxkRmllbGRQYXRoID0gcGF0aFNlZ21lbnRzLnNsaWNlKGkgKyAxKS5qb2luKCcuJylcblxuICAgICAgICAgIGlmIChmaWVsZC52YWxpZCA9PT0gZmFsc2UgJiYgY2hpbGRGaWVsZFBhdGgpIHtcbiAgICAgICAgICAgIG5ld0ZpZWxkUm93c1tmaWVsZFBhdGhdW3Jvd0luZGV4XS5jaGlsZEVycm9yUGF0aHMuYWRkKGAke2ZpZWxkUGF0aH0uJHtjaGlsZEZpZWxkUGF0aH1gKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG5cbiAgICAvLyBOb3cgbG9vcCBvdmVyIGFsbCBmaWVsZHMgd2l0aCByb3dzIC1cbiAgICAvLyBpZiBhbnl0aGluZyBjaGFuZ2VkLCBkaXNwYXRjaCBhbiB1cGRhdGUgZm9yIHRoZSBmaWVsZFxuICAgIC8vIHdpdGggdGhlIG5ldyByb3cgc3RhdGVcbiAgICBPYmplY3QuZW50cmllcyhuZXdGaWVsZFJvd3MpLmZvckVhY2goKFtwYXRoLCBuZXdSb3dzXSkgPT4ge1xuICAgICAgY29uc3Qgc3RhdGVNYXRjaGVzID0gbmV3Um93cy5ldmVyeSgobmV3Um93LCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nUm93RXJyb3JQYXRocyA9IGV4aXN0aW5nRmllbGRSb3dzW3BhdGhdW2ldPy5jaGlsZEVycm9yUGF0aHNcbiAgICAgICAgcmV0dXJuIHNldHNBcmVFcXVhbChuZXdSb3cuY2hpbGRFcnJvclBhdGhzLCBleGlzdGluZ1Jvd0Vycm9yUGF0aHMpXG4gICAgICB9KVxuXG4gICAgICBpZiAoIXN0YXRlTWF0Y2hlcykge1xuICAgICAgICBkaXNwYXRjaEZpZWxkcyh7XG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICByb3dzOiBuZXdSb3dzLFxuICAgICAgICAgIHR5cGU6ICdVUERBVEUnLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG4gIH0sIFtmaWVsZHMsIGRpc3BhdGNoRmllbGRzXSlcblxuICBjb25zdCB2YWxpZGF0ZUZvcm0gPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdmFsaWRhdGVkRmllbGRTdGF0ZSA9IHt9XG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlXG4gICAgY29uc3QgZGF0YSA9IGNvbnRleHRSZWYuY3VycmVudC5nZXREYXRhKClcblxuICAgIGNvbnN0IHZhbGlkYXRpb25Qcm9taXNlcyA9IE9iamVjdC5lbnRyaWVzKGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMpLm1hcChcbiAgICAgIGFzeW5jIChbcGF0aCwgZmllbGRdKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlZEZpZWxkID0ge1xuICAgICAgICAgIC4uLmZpZWxkLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkLnBhc3Nlc0NvbmRpdGlvbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBsZXQgdmFsaWRhdGlvblJlc3VsdDogYm9vbGVhbiB8IHN0cmluZyA9IHRydWVcblxuICAgICAgICAgIGlmICh0eXBlb2YgZmllbGQudmFsaWRhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSBhd2FpdCBmaWVsZC52YWxpZGF0ZShmaWVsZC52YWx1ZSwge1xuICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICAgICAgICBzaWJsaW5nRGF0YTogY29udGV4dFJlZi5jdXJyZW50LmdldFNpYmxpbmdEYXRhKHBhdGgpLFxuICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICB1c2VyLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodHlwZW9mIHZhbGlkYXRpb25SZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZWRGaWVsZC5lcnJvck1lc3NhZ2UgPSB2YWxpZGF0aW9uUmVzdWx0XG4gICAgICAgICAgICB2YWxpZGF0ZWRGaWVsZC52YWxpZCA9IGZhbHNlXG4gICAgICAgICAgICBpc1ZhbGlkID0gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YWxpZGF0ZWRGaWVsZFN0YXRlW3BhdGhdID0gdmFsaWRhdGVkRmllbGRcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodmFsaWRhdGlvblByb21pc2VzKVxuXG4gICAgaWYgKCFpc0RlZXBFcXVhbChjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCB2YWxpZGF0ZWRGaWVsZFN0YXRlKSkge1xuICAgICAgZGlzcGF0Y2hGaWVsZHMoeyBzdGF0ZTogdmFsaWRhdGVkRmllbGRTdGF0ZSwgdHlwZTogJ1JFUExBQ0VfU1RBVEUnIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmFsaWRcbiAgfSwgW2NvbnRleHRSZWYsIGlkLCB1c2VyLCBvcGVyYXRpb24sIHQsIGRpc3BhdGNoRmllbGRzXSlcblxuICBjb25zdCBzdWJtaXQgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAob3B0aW9uczogU3VibWl0T3B0aW9ucyA9IHt9LCBlKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGFjdGlvbjogYWN0aW9uVG9Vc2UgPSBhY3Rpb24sXG4gICAgICAgIG1ldGhvZDogbWV0aG9kVG9Vc2UgPSBtZXRob2QsXG4gICAgICAgIG92ZXJyaWRlcyA9IHt9LFxuICAgICAgICBza2lwVmFsaWRhdGlvbixcbiAgICAgIH0gPSBvcHRpb25zXG5cbiAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICBpZiAoZSkge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoZSkge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgfVxuXG4gICAgICBzZXRQcm9jZXNzaW5nKHRydWUpXG5cbiAgICAgIGlmICh3YWl0Rm9yQXV0b2NvbXBsZXRlKSBhd2FpdCB3YWl0KDEwMClcblxuICAgICAgY29uc3QgaXNWYWxpZCA9IHNraXBWYWxpZGF0aW9uID8gdHJ1ZSA6IGF3YWl0IGNvbnRleHRSZWYuY3VycmVudC52YWxpZGF0ZUZvcm0oKVxuICAgICAgY29udGV4dFJlZi5jdXJyZW50LmJ1aWxkUm93RXJyb3JzKClcblxuICAgICAgaWYgKCFza2lwVmFsaWRhdGlvbikgc2V0U3VibWl0dGVkKHRydWUpXG5cbiAgICAgIC8vIElmIG5vdCB2YWxpZCwgcHJldmVudCBzdWJtaXNzaW9uXG4gICAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgICAgdG9hc3QuZXJyb3IodCgnZXJyb3I6Y29ycmVjdEludmFsaWRGaWVsZHMnKSlcbiAgICAgICAgc2V0UHJvY2Vzc2luZyhmYWxzZSlcblxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gSWYgc3VibWl0IGhhbmRsZXIgY29tZXMgdGhyb3VnaCB2aWEgcHJvcHMsIHJ1biB0aGF0XG4gICAgICBpZiAob25TdWJtaXQpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAuLi5yZWR1Y2VGaWVsZHNUb1ZhbHVlcyhmaWVsZHMsIHRydWUpLFxuICAgICAgICAgIC4uLm92ZXJyaWRlcyxcbiAgICAgICAgfVxuXG4gICAgICAgIG9uU3VibWl0KGZpZWxkcywgZGF0YSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm9ybURhdGEgPSBjb250ZXh0UmVmLmN1cnJlbnQuY3JlYXRlRm9ybURhdGEob3ZlcnJpZGVzKVxuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCByZXF1ZXN0c1ttZXRob2RUb1VzZS50b0xvd2VyQ2FzZSgpXShhY3Rpb25Ub1VzZSwge1xuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiBpMThuLmxhbmd1YWdlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG5cbiAgICAgICAgc2V0TW9kaWZpZWQoZmFsc2UpXG5cbiAgICAgICAgaWYgKHR5cGVvZiBoYW5kbGVSZXNwb25zZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGhhbmRsZVJlc3BvbnNlKHJlcylcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIHNldFByb2Nlc3NpbmcoZmFsc2UpXG5cbiAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSByZXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpXG4gICAgICAgIGNvbnN0IGlzSlNPTiA9IGNvbnRlbnRUeXBlICYmIGNvbnRlbnRUeXBlLmluZGV4T2YoJ2FwcGxpY2F0aW9uL2pzb24nKSAhPT0gLTFcblxuICAgICAgICBsZXQganNvbjogYW55ID0ge31cblxuICAgICAgICBpZiAoaXNKU09OKSBqc29uID0gYXdhaXQgcmVzLmpzb24oKVxuXG4gICAgICAgIGlmIChyZXMuc3RhdHVzIDwgNDAwKSB7XG4gICAgICAgICAgc2V0U3VibWl0dGVkKGZhbHNlKVxuXG4gICAgICAgICAgaWYgKHR5cGVvZiBvblN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIG9uU3VjY2Vzcyhqc29uKVxuXG4gICAgICAgICAgaWYgKHJlZGlyZWN0KSB7XG4gICAgICAgICAgICBjb25zdCBkZXN0aW5hdGlvbiA9IHtcbiAgICAgICAgICAgICAgcGF0aG5hbWU6IHJlZGlyZWN0LFxuICAgICAgICAgICAgICBzdGF0ZToge30sXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YganNvbiA9PT0gJ29iamVjdCcgJiYganNvbi5tZXNzYWdlICYmICFkaXNhYmxlU3VjY2Vzc1N0YXR1cykge1xuICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5zdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICBzdGF0dXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZToganNvbi5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaGlzdG9yeS5wdXNoKGRlc3RpbmF0aW9uKVxuICAgICAgICAgIH0gZWxzZSBpZiAoIWRpc2FibGVTdWNjZXNzU3RhdHVzKSB7XG4gICAgICAgICAgICB0b2FzdC5zdWNjZXNzKGpzb24ubWVzc2FnZSB8fCB0KCdzdWJtaXNzaW9uU3VjY2Vzc2Z1bCcpLCB7IGF1dG9DbG9zZTogMzAwMCB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IC4uLmNvbnRleHRSZWYuY3VycmVudCB9IC8vIHRyaWdnZXJzIHJlcmVuZGVyIG9mIGFsbCBjb21wb25lbnRzIHRoYXQgc3Vic2NyaWJlIHRvIGZvcm1cblxuICAgICAgICAgIGlmIChqc29uLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHRvYXN0LmVycm9yKGpzb24ubWVzc2FnZSlcblxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoanNvbi5lcnJvcnMpKSB7XG4gICAgICAgICAgICBjb25zdCBbZmllbGRFcnJvcnMsIG5vbkZpZWxkRXJyb3JzXSA9IGpzb24uZXJyb3JzLnJlZHVjZShcbiAgICAgICAgICAgICAgKFtmaWVsZEVycnMsIG5vbkZpZWxkRXJyc10sIGVycikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0ZpZWxkRXJycyA9IFtdXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3Tm9uRmllbGRFcnJzID0gW11cblxuICAgICAgICAgICAgICAgIGlmIChlcnI/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgIG5ld05vbkZpZWxkRXJycy5wdXNoKGVycilcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlcnI/LmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICBlcnIuZGF0YS5mb3JFYWNoKChkYXRhRXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFFcnJvcj8uZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBuZXdGaWVsZEVycnMucHVzaChkYXRhRXJyb3IpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgbmV3Tm9uRmllbGRFcnJzLnB1c2goZGF0YUVycm9yKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICBbLi4uZmllbGRFcnJzLCAuLi5uZXdGaWVsZEVycnNdLFxuICAgICAgICAgICAgICAgICAgWy4uLm5vbkZpZWxkRXJycywgLi4ubmV3Tm9uRmllbGRFcnJzXSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtbXSwgW11dLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBmaWVsZEVycm9ycy5mb3JFYWNoKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgZGlzcGF0Y2hGaWVsZHMoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdVUERBVEUnLFxuICAgICAgICAgICAgICAgIC4uLihjb250ZXh0UmVmLmN1cnJlbnQ/LmZpZWxkcz8uW2Vyci5maWVsZF0gfHwge30pLFxuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZTogZXJyLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgcGF0aDogZXJyLmZpZWxkLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIG5vbkZpZWxkRXJyb3JzLmZvckVhY2goKGVycikgPT4ge1xuICAgICAgICAgICAgICB0b2FzdC5lcnJvcihlcnIubWVzc2FnZSB8fCB0KCdlcnJvcjp1bmtub3duJykpXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyb3JNZXNzYWdlc1tyZXMuc3RhdHVzXSB8fCB0KCdlcnJvcjp1bmtub3duJylcblxuICAgICAgICAgIHRvYXN0LmVycm9yKG1lc3NhZ2UpXG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBzZXRQcm9jZXNzaW5nKGZhbHNlKVxuXG4gICAgICAgIHRvYXN0LmVycm9yKGVycilcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIGFjdGlvbixcbiAgICAgIGRpc2FibGVTdWNjZXNzU3RhdHVzLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBkaXNwYXRjaEZpZWxkcyxcbiAgICAgIGZpZWxkcyxcbiAgICAgIGhhbmRsZVJlc3BvbnNlLFxuICAgICAgaGlzdG9yeSxcbiAgICAgIG1ldGhvZCxcbiAgICAgIG9uU3VibWl0LFxuICAgICAgb25TdWNjZXNzLFxuICAgICAgcmVkaXJlY3QsXG4gICAgICB0LFxuICAgICAgaTE4bixcbiAgICAgIHdhaXRGb3JBdXRvY29tcGxldGUsXG4gICAgXSxcbiAgKVxuXG4gIGNvbnN0IHRyYXZlcnNlUm93Q29uZmlncyA9IFJlYWN0LnVzZUNhbGxiYWNrKFxuICAgICh7XG4gICAgICBmaWVsZENvbmZpZyxcbiAgICAgIHBhdGgsXG4gICAgICBwYXRoUHJlZml4LFxuICAgIH06IHtcbiAgICAgIGZpZWxkQ29uZmlnOiBGaWVsZFtdXG4gICAgICBwYXRoOiBzdHJpbmdcbiAgICAgIHBhdGhQcmVmaXg/OiBzdHJpbmdcbiAgICB9KSA9PiB7XG4gICAgICBjb25zdCBjb25maWcgPSBmaWVsZENvbmZpZ1xuICAgICAgY29uc3QgcGF0aFNlZ21lbnRzID0gc3BsaXRQYXRoQnlBcnJheUZpZWxkcyhwYXRoKVxuICAgICAgY29uc3QgY29uZmlnTWFwID0gYnVpbGRGaWVsZFNjaGVtYU1hcChjb25maWcpXG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aFNlZ21lbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGNvbnN0IHBhdGhTZWdtZW50ID0gcGF0aFNlZ21lbnRzW2ldXG5cbiAgICAgICAgaWYgKGlzTnVtYmVyKHBhdGhTZWdtZW50KSkge1xuICAgICAgICAgIGNvbnN0IHJvd0luZGV4ID0gcGFyc2VJbnQocGF0aFNlZ21lbnQsIDEwKVxuICAgICAgICAgIGNvbnN0IHBhcmVudEZpZWxkUGF0aCA9IHBhdGhTZWdtZW50cy5zbGljZSgwLCBpKS5qb2luKCcuJylcbiAgICAgICAgICBjb25zdCByZW1haW5pbmdQYXRoID0gcGF0aFNlZ21lbnRzLnNsaWNlKGkgKyAxKS5qb2luKCcuJylcbiAgICAgICAgICBjb25zdCBhcnJheUZpZWxkUGF0aCA9IHBhdGhQcmVmaXggPyBgJHtwYXRoUHJlZml4fS4ke3BhcmVudEZpZWxkUGF0aH1gIDogcGFyZW50RmllbGRQYXRoXG4gICAgICAgICAgY29uc3QgcGFyZW50QXJyYXlGaWVsZCA9IGNvbnRleHRSZWYuY3VycmVudC5nZXRGaWVsZChhcnJheUZpZWxkUGF0aClcbiAgICAgICAgICBjb25zdCByb3dGaWVsZCA9IHBhcmVudEFycmF5RmllbGQucm93c1tyb3dJbmRleF1cblxuICAgICAgICAgIGlmIChyb3dGaWVsZC5ibG9ja1R5cGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrQ29uZmlnID0gY29uZmlnTWFwLmdldChgJHtwYXJlbnRGaWVsZFBhdGh9LiR7cm93RmllbGQuYmxvY2tUeXBlfWApXG4gICAgICAgICAgICBpZiAoYmxvY2tDb25maWcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlUm93Q29uZmlncyh7XG4gICAgICAgICAgICAgICAgZmllbGRDb25maWc6IGJsb2NrQ29uZmlnLFxuICAgICAgICAgICAgICAgIHBhdGg6IHJlbWFpbmluZ1BhdGgsXG4gICAgICAgICAgICAgICAgcGF0aFByZWZpeDogYCR7YXJyYXlGaWVsZFBhdGh9LiR7cm93SW5kZXh9YCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBCbG9jayBjb25maWcgbm90IGZvdW5kIGZvciAke3Jvd0ZpZWxkLmJsb2NrVHlwZX0gYXQgcGF0aCAke3BhdGh9YClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlUm93Q29uZmlncyh7XG4gICAgICAgICAgICAgIGZpZWxkQ29uZmlnOiBjb25maWdNYXAuZ2V0KHBhcmVudEZpZWxkUGF0aCksXG4gICAgICAgICAgICAgIHBhdGg6IHJlbWFpbmluZ1BhdGgsXG4gICAgICAgICAgICAgIHBhdGhQcmVmaXg6IGAke2FycmF5RmllbGRQYXRofS4ke3Jvd0luZGV4fWAsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29uZmlnXG4gICAgfSxcbiAgICBbXSxcbiAgKVxuXG4gIGNvbnN0IGdldFJvd0NvbmZpZ0J5UGF0aCA9IFJlYWN0LnVzZUNhbGxiYWNrKFxuICAgICh7IGJsb2NrVHlwZSwgcGF0aCB9OiB7IGJsb2NrVHlwZT86IHN0cmluZzsgcGF0aDogc3RyaW5nIH0pID0+IHtcbiAgICAgIGNvbnN0IHJvd0NvbmZpZyA9IHRyYXZlcnNlUm93Q29uZmlncyh7XG4gICAgICAgIGZpZWxkQ29uZmlnOiBjb2xsZWN0aW9uPy5maWVsZHMgfHwgZ2xvYmFsPy5maWVsZHMsXG4gICAgICAgIHBhdGgsXG4gICAgICB9KVxuICAgICAgY29uc3Qgcm93RmllbGRDb25maWdzID0gYnVpbGRGaWVsZFNjaGVtYU1hcChyb3dDb25maWcpXG4gICAgICBjb25zdCBwYXRoU2VnbWVudHMgPSBzcGxpdFBhdGhCeUFycmF5RmllbGRzKHBhdGgpXG4gICAgICBjb25zdCBmaWVsZEtleSA9IHBhdGhTZWdtZW50cy5hdCgtMSlcbiAgICAgIHJldHVybiByb3dGaWVsZENvbmZpZ3MuZ2V0KGJsb2NrVHlwZSA/IGAke2ZpZWxkS2V5fS4ke2Jsb2NrVHlwZX1gIDogZmllbGRLZXkpXG4gICAgfSxcbiAgICBbdHJhdmVyc2VSb3dDb25maWdzLCBjb2xsZWN0aW9uPy5maWVsZHMsIGdsb2JhbD8uZmllbGRzXSxcbiAgKVxuXG4gIC8vIEFycmF5L0Jsb2NrIHJvdyBtYW5pcHVsYXRpb25cbiAgY29uc3QgYWRkRmllbGRSb3c6IENvbnRleHRbJ2FkZEZpZWxkUm93J10gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoeyBkYXRhLCBwYXRoLCByb3dJbmRleCB9KSA9PiB7XG4gICAgICBjb25zdCBwcmVmZXJlbmNlcyA9IGF3YWl0IGdldERvY1ByZWZlcmVuY2VzKClcbiAgICAgIGNvbnN0IGZpZWxkQ29uZmlnID0gZ2V0Um93Q29uZmlnQnlQYXRoKHtcbiAgICAgICAgYmxvY2tUeXBlOiBkYXRhPy5ibG9ja1R5cGUsXG4gICAgICAgIHBhdGgsXG4gICAgICB9KVxuXG4gICAgICBpZiAoZmllbGRDb25maWcpIHtcbiAgICAgICAgY29uc3Qgc3ViRmllbGRTdGF0ZSA9IGF3YWl0IGJ1aWxkU3RhdGVGcm9tU2NoZW1hKHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGZpZWxkU2NoZW1hOiBmaWVsZENvbmZpZyxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICAgIHByZWZlcmVuY2VzLFxuICAgICAgICAgIHQsXG4gICAgICAgICAgdXNlcixcbiAgICAgICAgfSlcbiAgICAgICAgZGlzcGF0Y2hGaWVsZHMoe1xuICAgICAgICAgIGJsb2NrVHlwZTogZGF0YT8uYmxvY2tUeXBlLFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgcm93SW5kZXg6IHJvd0luZGV4IC0gMSxcbiAgICAgICAgICBzdWJGaWVsZFN0YXRlLFxuICAgICAgICAgIHR5cGU6ICdBRERfUk9XJyxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtkaXNwYXRjaEZpZWxkcywgZ2V0RG9jUHJlZmVyZW5jZXMsIGlkLCB1c2VyLCBvcGVyYXRpb24sIGxvY2FsZSwgdCwgZ2V0Um93Q29uZmlnQnlQYXRoXSxcbiAgKVxuXG4gIGNvbnN0IHJlbW92ZUZpZWxkUm93OiBDb250ZXh0WydyZW1vdmVGaWVsZFJvdyddID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHsgcGF0aCwgcm93SW5kZXggfSkgPT4ge1xuICAgICAgZGlzcGF0Y2hGaWVsZHMoeyBwYXRoLCByb3dJbmRleCwgdHlwZTogJ1JFTU9WRV9ST1cnIH0pXG4gICAgfSxcbiAgICBbZGlzcGF0Y2hGaWVsZHNdLFxuICApXG5cbiAgY29uc3QgcmVwbGFjZUZpZWxkUm93OiBDb250ZXh0WydyZXBsYWNlRmllbGRSb3cnXSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7IGRhdGEsIHBhdGgsIHJvd0luZGV4IH0pID0+IHtcbiAgICAgIGNvbnN0IHByZWZlcmVuY2VzID0gYXdhaXQgZ2V0RG9jUHJlZmVyZW5jZXMoKVxuICAgICAgY29uc3QgZmllbGRDb25maWcgPSBnZXRSb3dDb25maWdCeVBhdGgoe1xuICAgICAgICBibG9ja1R5cGU6IGRhdGE/LmJsb2NrVHlwZSxcbiAgICAgICAgcGF0aCxcbiAgICAgIH0pXG5cbiAgICAgIGlmIChmaWVsZENvbmZpZykge1xuICAgICAgICBjb25zdCBzdWJGaWVsZFN0YXRlID0gYXdhaXQgYnVpbGRTdGF0ZUZyb21TY2hlbWEoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgZmllbGRTY2hlbWE6IGZpZWxkQ29uZmlnLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgcHJlZmVyZW5jZXMsXG4gICAgICAgICAgdCxcbiAgICAgICAgICB1c2VyLFxuICAgICAgICB9KVxuICAgICAgICBkaXNwYXRjaEZpZWxkcyh7XG4gICAgICAgICAgYmxvY2tUeXBlOiBkYXRhPy5ibG9ja1R5cGUsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICByb3dJbmRleDogcm93SW5kZXggLSAxLFxuICAgICAgICAgIHN1YkZpZWxkU3RhdGUsXG4gICAgICAgICAgdHlwZTogJ1JFUExBQ0VfUk9XJyxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtkaXNwYXRjaEZpZWxkcywgZ2V0RG9jUHJlZmVyZW5jZXMsIGlkLCB1c2VyLCBvcGVyYXRpb24sIGxvY2FsZSwgdCwgZ2V0Um93Q29uZmlnQnlQYXRoXSxcbiAgKVxuXG4gIGNvbnN0IGdldEZpZWxkcyA9IHVzZUNhbGxiYWNrKCgpID0+IGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMsIFtjb250ZXh0UmVmXSlcbiAgY29uc3QgZ2V0RmllbGQgPSB1c2VDYWxsYmFjaygocGF0aDogc3RyaW5nKSA9PiBjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzW3BhdGhdLCBbY29udGV4dFJlZl0pXG4gIGNvbnN0IGdldERhdGEgPSB1c2VDYWxsYmFjayhcbiAgICAoKSA9PiByZWR1Y2VGaWVsZHNUb1ZhbHVlcyhjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCB0cnVlKSxcbiAgICBbY29udGV4dFJlZl0sXG4gIClcbiAgY29uc3QgZ2V0U2libGluZ0RhdGEgPSB1c2VDYWxsYmFjayhcbiAgICAocGF0aDogc3RyaW5nKSA9PiBnZXRTaWJsaW5nRGF0YUZ1bmMoY29udGV4dFJlZi5jdXJyZW50LmZpZWxkcywgcGF0aCksXG4gICAgW2NvbnRleHRSZWZdLFxuICApXG4gIGNvbnN0IGdldERhdGFCeVBhdGggPSB1c2VDYWxsYmFjazxHZXREYXRhQnlQYXRoPihcbiAgICAocGF0aDogc3RyaW5nKSA9PiBnZXREYXRhQnlQYXRoRnVuYyhjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCBwYXRoKSxcbiAgICBbY29udGV4dFJlZl0sXG4gIClcblxuICBjb25zdCBjcmVhdGVGb3JtRGF0YSA9IHVzZUNhbGxiYWNrKFxuICAgIChvdmVycmlkZXM6IGFueSA9IHt9KSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gcmVkdWNlRmllbGRzVG9WYWx1ZXMoY29udGV4dFJlZi5jdXJyZW50LmZpZWxkcywgdHJ1ZSlcblxuICAgICAgY29uc3QgZmlsZSA9IGRhdGE/LmZpbGVcblxuICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgZGVsZXRlIGRhdGEuZmlsZVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhV2l0aE92ZXJyaWRlcyA9IHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgLi4ub3ZlcnJpZGVzLFxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhVG9TZXJpYWxpemUgPSB7XG4gICAgICAgIF9wYXlsb2FkOiBKU09OLnN0cmluZ2lmeShkYXRhV2l0aE92ZXJyaWRlcyksXG4gICAgICAgIGZpbGUsXG4gICAgICB9XG5cbiAgICAgIC8vIG51bGxBc1VuZGVmaW5lZHMgaXMgaW1wb3J0YW50IHRvIGFsbG93IHVwbG9hZHMgYW5kIHJlbGF0aW9uc2hpcCBmaWVsZHMgdG8gY2xlYXIgdGhlbXNlbHZlc1xuICAgICAgY29uc3QgZm9ybURhdGEgPSBzZXJpYWxpemUoZGF0YVRvU2VyaWFsaXplLCB7IGluZGljZXM6IHRydWUsIG51bGxzQXNVbmRlZmluZWRzOiBmYWxzZSB9KVxuICAgICAgcmV0dXJuIGZvcm1EYXRhXG4gICAgfSxcbiAgICBbY29udGV4dFJlZl0sXG4gIClcblxuICBjb25zdCByZXNldCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChmaWVsZFNjaGVtYTogRmllbGRbXSwgZGF0YTogdW5rbm93bikgPT4ge1xuICAgICAgY29uc3QgcHJlZmVyZW5jZXMgPSBhd2FpdCBnZXREb2NQcmVmZXJlbmNlcygpXG4gICAgICBjb25zdCBzdGF0ZSA9IGF3YWl0IGJ1aWxkU3RhdGVGcm9tU2NoZW1hKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGZpZWxkU2NoZW1hLFxuICAgICAgICBsb2NhbGUsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgcHJlZmVyZW5jZXMsXG4gICAgICAgIHQsXG4gICAgICAgIHVzZXIsXG4gICAgICB9KVxuICAgICAgY29udGV4dFJlZi5jdXJyZW50ID0geyAuLi5pbml0Q29udGV4dFN0YXRlIH0gYXMgRm9ybUNvbnRleHRUeXBlXG4gICAgICBzZXRNb2RpZmllZChmYWxzZSlcbiAgICAgIGRpc3BhdGNoRmllbGRzKHsgc3RhdGUsIHR5cGU6ICdSRVBMQUNFX1NUQVRFJyB9KVxuICAgIH0sXG4gICAgW2lkLCB1c2VyLCBvcGVyYXRpb24sIGxvY2FsZSwgdCwgZGlzcGF0Y2hGaWVsZHMsIGdldERvY1ByZWZlcmVuY2VzXSxcbiAgKVxuXG4gIGNvbnN0IHJlcGxhY2VTdGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChzdGF0ZTogRmllbGRzKSA9PiB7XG4gICAgICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IC4uLmluaXRDb250ZXh0U3RhdGUgfSBhcyBGb3JtQ29udGV4dFR5cGVcbiAgICAgIHNldE1vZGlmaWVkKGZhbHNlKVxuICAgICAgZGlzcGF0Y2hGaWVsZHMoeyBzdGF0ZSwgdHlwZTogJ1JFUExBQ0VfU1RBVEUnIH0pXG4gICAgfSxcbiAgICBbZGlzcGF0Y2hGaWVsZHNdLFxuICApXG5cbiAgY29udGV4dFJlZi5jdXJyZW50LnN1Ym1pdCA9IHN1Ym1pdFxuICBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0RmllbGRzID0gZ2V0RmllbGRzXG4gIGNvbnRleHRSZWYuY3VycmVudC5nZXRGaWVsZCA9IGdldEZpZWxkXG4gIGNvbnRleHRSZWYuY3VycmVudC5nZXREYXRhID0gZ2V0RGF0YVxuICBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0U2libGluZ0RhdGEgPSBnZXRTaWJsaW5nRGF0YVxuICBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0RGF0YUJ5UGF0aCA9IGdldERhdGFCeVBhdGhcbiAgY29udGV4dFJlZi5jdXJyZW50LnZhbGlkYXRlRm9ybSA9IHZhbGlkYXRlRm9ybVxuICBjb250ZXh0UmVmLmN1cnJlbnQuY3JlYXRlRm9ybURhdGEgPSBjcmVhdGVGb3JtRGF0YVxuICBjb250ZXh0UmVmLmN1cnJlbnQuc2V0TW9kaWZpZWQgPSBzZXRNb2RpZmllZFxuICBjb250ZXh0UmVmLmN1cnJlbnQuc2V0UHJvY2Vzc2luZyA9IHNldFByb2Nlc3NpbmdcbiAgY29udGV4dFJlZi5jdXJyZW50LnNldFN1Ym1pdHRlZCA9IHNldFN1Ym1pdHRlZFxuICBjb250ZXh0UmVmLmN1cnJlbnQuZGlzYWJsZWQgPSBkaXNhYmxlZFxuICBjb250ZXh0UmVmLmN1cnJlbnQuZm9ybVJlZiA9IGZvcm1SZWZcbiAgY29udGV4dFJlZi5jdXJyZW50LnJlc2V0ID0gcmVzZXRcbiAgY29udGV4dFJlZi5jdXJyZW50LnJlcGxhY2VTdGF0ZSA9IHJlcGxhY2VTdGF0ZVxuICBjb250ZXh0UmVmLmN1cnJlbnQuYnVpbGRSb3dFcnJvcnMgPSBidWlsZFJvd0Vycm9yc1xuICBjb250ZXh0UmVmLmN1cnJlbnQuYWRkRmllbGRSb3cgPSBhZGRGaWVsZFJvd1xuICBjb250ZXh0UmVmLmN1cnJlbnQucmVtb3ZlRmllbGRSb3cgPSByZW1vdmVGaWVsZFJvd1xuICBjb250ZXh0UmVmLmN1cnJlbnQucmVwbGFjZUZpZWxkUm93ID0gcmVwbGFjZUZpZWxkUm93XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5pdGlhbFN0YXRlKSB7XG4gICAgICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IC4uLmluaXRDb250ZXh0U3RhdGUgfSBhcyBGb3JtQ29udGV4dFR5cGVcbiAgICAgIGRpc3BhdGNoRmllbGRzKHsgc3RhdGU6IGluaXRpYWxTdGF0ZSwgdHlwZTogJ1JFUExBQ0VfU1RBVEUnIH0pXG4gICAgfVxuICB9LCBbaW5pdGlhbFN0YXRlLCBkaXNwYXRjaEZpZWxkc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5pdGlhbERhdGEpIHtcbiAgICAgIGNvbnRleHRSZWYuY3VycmVudCA9IHsgLi4uaW5pdENvbnRleHRTdGF0ZSB9IGFzIEZvcm1Db250ZXh0VHlwZVxuICAgICAgY29uc3QgYnVpbHRTdGF0ZSA9IGJ1aWxkSW5pdGlhbFN0YXRlKGluaXRpYWxEYXRhKVxuICAgICAgc2V0Rm9ybWF0dGVkSW5pdGlhbERhdGEoYnVpbHRTdGF0ZSlcbiAgICAgIGRpc3BhdGNoRmllbGRzKHsgc3RhdGU6IGJ1aWx0U3RhdGUsIHR5cGU6ICdSRVBMQUNFX1NUQVRFJyB9KVxuICAgIH1cbiAgfSwgW2luaXRpYWxEYXRhLCBkaXNwYXRjaEZpZWxkc10pXG5cbiAgdXNlVGhyb3R0bGVkRWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIHJlZnJlc2hDb29raWUoKVxuICAgIH0sXG4gICAgMTUwMDAsXG4gICAgW2ZpZWxkc10sXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnRleHRSZWYuY3VycmVudCA9IHsgLi4uY29udGV4dFJlZi5jdXJyZW50IH0gLy8gdHJpZ2dlcnMgcmVyZW5kZXIgb2YgYWxsIGNvbXBvbmVudHMgdGhhdCBzdWJzY3JpYmUgdG8gZm9ybVxuICAgIHNldE1vZGlmaWVkKGZhbHNlKVxuICB9LCBbbG9jYWxlXSlcblxuICBjb25zdCBjbGFzc2VzID0gW2NsYXNzTmFtZSwgYmFzZUNsYXNzXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpXG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybVxuICAgICAgYWN0aW9uPXthY3Rpb259XG4gICAgICBjbGFzc05hbWU9e2NsYXNzZXN9XG4gICAgICBtZXRob2Q9e21ldGhvZH1cbiAgICAgIG5vVmFsaWRhdGVcbiAgICAgIG9uU3VibWl0PXsoZSkgPT4gY29udGV4dFJlZi5jdXJyZW50LnN1Ym1pdCh7fSwgZSl9XG4gICAgICByZWY9e2Zvcm1SZWZ9XG4gICAgPlxuICAgICAgPEZvcm1Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb250ZXh0UmVmLmN1cnJlbnR9PlxuICAgICAgICA8Rm9ybVdhdGNoQ29udGV4dC5Qcm92aWRlclxuICAgICAgICAgIHZhbHVlPXt7XG4gICAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgICAuLi5jb250ZXh0UmVmLmN1cnJlbnQsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxTdWJtaXR0ZWRDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtzdWJtaXR0ZWR9PlxuICAgICAgICAgICAgPFByb2Nlc3NpbmdDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtwcm9jZXNzaW5nfT5cbiAgICAgICAgICAgICAgPE1vZGlmaWVkQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bW9kaWZpZWR9PlxuICAgICAgICAgICAgICAgIDxGb3JtRmllbGRzQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17ZmllbGRzUmVkdWNlcn0+XG4gICAgICAgICAgICAgICAgICA8V2F0Y2hGb3JtRXJyb3JzIGJ1aWxkUm93RXJyb3JzPXtidWlsZFJvd0Vycm9yc30gLz5cbiAgICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgICAgICA8L0Zvcm1GaWVsZHNDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgICAgICA8L01vZGlmaWVkQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgICAgIDwvUHJvY2Vzc2luZ0NvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgICAgPC9TdWJtaXR0ZWRDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICA8L0Zvcm1XYXRjaENvbnRleHQuUHJvdmlkZXI+XG4gICAgICA8L0Zvcm1Db250ZXh0LlByb3ZpZGVyPlxuICAgIDwvZm9ybT5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBGb3JtXG4iXSwibmFtZXMiOlsiYmFzZUNsYXNzIiwiRm9ybSIsInByb3BzIiwiYWN0aW9uIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJkaXNhYmxlU3VjY2Vzc1N0YXR1cyIsImRpc2FibGVkIiwiaGFuZGxlUmVzcG9uc2UiLCJpbml0aWFsRGF0YSIsImluaXRpYWxTdGF0ZSIsIm1ldGhvZCIsIm9uU3VibWl0Iiwib25TdWNjZXNzIiwicmVkaXJlY3QiLCJ3YWl0Rm9yQXV0b2NvbXBsZXRlIiwiaGlzdG9yeSIsInVzZUhpc3RvcnkiLCJjb2RlIiwibG9jYWxlIiwidXNlTG9jYWxlIiwiaTE4biIsInQiLCJ1c2VUcmFuc2xhdGlvbiIsInJlZnJlc2hDb29raWUiLCJ1c2VyIiwidXNlQXV0aCIsImlkIiwiY29sbGVjdGlvbiIsImdldERvY1ByZWZlcmVuY2VzIiwiZ2xvYmFsIiwidXNlRG9jdW1lbnRJbmZvIiwib3BlcmF0aW9uIiwidXNlT3BlcmF0aW9uIiwibW9kaWZpZWQiLCJzZXRNb2RpZmllZCIsInVzZVN0YXRlIiwicHJvY2Vzc2luZyIsInNldFByb2Nlc3NpbmciLCJzdWJtaXR0ZWQiLCJzZXRTdWJtaXR0ZWQiLCJmb3JtYXR0ZWRJbml0aWFsRGF0YSIsInNldEZvcm1hdHRlZEluaXRpYWxEYXRhIiwiYnVpbGRJbml0aWFsU3RhdGUiLCJmb3JtUmVmIiwidXNlUmVmIiwiY29udGV4dFJlZiIsImluaXRpYWxGaWVsZFN0YXRlIiwiZmllbGRzUmVkdWNlciIsInVzZVJlZHVjZXIiLCJmaWVsZFJlZHVjZXIiLCJmaWVsZHMiLCJkaXNwYXRjaEZpZWxkcyIsImN1cnJlbnQiLCJidWlsZFJvd0Vycm9ycyIsInVzZUNhbGxiYWNrIiwiZXhpc3RpbmdGaWVsZFJvd3MiLCJuZXdGaWVsZFJvd3MiLCJPYmplY3QiLCJlbnRyaWVzIiwiZm9yRWFjaCIsInBhdGgiLCJmaWVsZCIsInBhdGhTZWdtZW50cyIsInNwbGl0UGF0aEJ5QXJyYXlGaWVsZHMiLCJpIiwibGVuZ3RoIiwiZmllbGRQYXRoIiwic2xpY2UiLCJqb2luIiwiZm9ybUZpZWxkIiwiQXJyYXkiLCJpc0FycmF5Iiwicm93cyIsIm1hcCIsImV4aXN0aW5nUm93IiwiY2hpbGRFcnJvclBhdGhzIiwiU2V0Iiwicm93SW5kZXgiLCJjaGlsZEZpZWxkUGF0aCIsInZhbGlkIiwiYWRkIiwibmV3Um93cyIsInN0YXRlTWF0Y2hlcyIsImV2ZXJ5IiwibmV3Um93IiwiZXhpc3RpbmdSb3dFcnJvclBhdGhzIiwic2V0c0FyZUVxdWFsIiwidHlwZSIsInZhbGlkYXRlRm9ybSIsInZhbGlkYXRlZEZpZWxkU3RhdGUiLCJpc1ZhbGlkIiwiZGF0YSIsImdldERhdGEiLCJ2YWxpZGF0aW9uUHJvbWlzZXMiLCJ2YWxpZGF0ZWRGaWVsZCIsInBhc3Nlc0NvbmRpdGlvbiIsInZhbGlkYXRpb25SZXN1bHQiLCJ2YWxpZGF0ZSIsInZhbHVlIiwic2libGluZ0RhdGEiLCJnZXRTaWJsaW5nRGF0YSIsImVycm9yTWVzc2FnZSIsIlByb21pc2UiLCJhbGwiLCJpc0RlZXBFcXVhbCIsInN0YXRlIiwic3VibWl0Iiwib3B0aW9ucyIsImUiLCJhY3Rpb25Ub1VzZSIsIm1ldGhvZFRvVXNlIiwib3ZlcnJpZGVzIiwic2tpcFZhbGlkYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsIndhaXQiLCJ0b2FzdCIsImVycm9yIiwicmVkdWNlRmllbGRzVG9WYWx1ZXMiLCJmb3JtRGF0YSIsImNyZWF0ZUZvcm1EYXRhIiwicmVzIiwicmVxdWVzdHMiLCJ0b0xvd2VyQ2FzZSIsImJvZHkiLCJoZWFkZXJzIiwibGFuZ3VhZ2UiLCJjb250ZW50VHlwZSIsImdldCIsImlzSlNPTiIsImluZGV4T2YiLCJqc29uIiwic3RhdHVzIiwiZGVzdGluYXRpb24iLCJwYXRobmFtZSIsIm1lc3NhZ2UiLCJwdXNoIiwic3VjY2VzcyIsImF1dG9DbG9zZSIsImVycm9ycyIsImZpZWxkRXJyb3JzIiwibm9uRmllbGRFcnJvcnMiLCJyZWR1Y2UiLCJmaWVsZEVycnMiLCJub25GaWVsZEVycnMiLCJlcnIiLCJuZXdGaWVsZEVycnMiLCJuZXdOb25GaWVsZEVycnMiLCJkYXRhRXJyb3IiLCJlcnJvck1lc3NhZ2VzIiwidHJhdmVyc2VSb3dDb25maWdzIiwiUmVhY3QiLCJmaWVsZENvbmZpZyIsInBhdGhQcmVmaXgiLCJjb25maWciLCJjb25maWdNYXAiLCJidWlsZEZpZWxkU2NoZW1hTWFwIiwicGF0aFNlZ21lbnQiLCJpc051bWJlciIsInBhcnNlSW50IiwicGFyZW50RmllbGRQYXRoIiwicmVtYWluaW5nUGF0aCIsImFycmF5RmllbGRQYXRoIiwicGFyZW50QXJyYXlGaWVsZCIsImdldEZpZWxkIiwicm93RmllbGQiLCJibG9ja1R5cGUiLCJibG9ja0NvbmZpZyIsIkVycm9yIiwiZ2V0Um93Q29uZmlnQnlQYXRoIiwicm93Q29uZmlnIiwicm93RmllbGRDb25maWdzIiwiZmllbGRLZXkiLCJhdCIsImFkZEZpZWxkUm93IiwicHJlZmVyZW5jZXMiLCJzdWJGaWVsZFN0YXRlIiwiYnVpbGRTdGF0ZUZyb21TY2hlbWEiLCJmaWVsZFNjaGVtYSIsInJlbW92ZUZpZWxkUm93IiwicmVwbGFjZUZpZWxkUm93IiwiZ2V0RmllbGRzIiwiZ2V0U2libGluZ0RhdGFGdW5jIiwiZ2V0RGF0YUJ5UGF0aCIsImdldERhdGFCeVBhdGhGdW5jIiwiZmlsZSIsImRhdGFXaXRoT3ZlcnJpZGVzIiwiZGF0YVRvU2VyaWFsaXplIiwiX3BheWxvYWQiLCJKU09OIiwic3RyaW5naWZ5Iiwic2VyaWFsaXplIiwiaW5kaWNlcyIsIm51bGxzQXNVbmRlZmluZWRzIiwicmVzZXQiLCJpbml0Q29udGV4dFN0YXRlIiwicmVwbGFjZVN0YXRlIiwidXNlRWZmZWN0IiwiYnVpbHRTdGF0ZSIsInVzZVRocm90dGxlZEVmZmVjdCIsImNsYXNzZXMiLCJmaWx0ZXIiLCJCb29sZWFuIiwiZm9ybSIsIm5vVmFsaWRhdGUiLCJyZWYiLCJGb3JtQ29udGV4dCIsIlByb3ZpZGVyIiwiRm9ybVdhdGNoQ29udGV4dCIsIlN1Ym1pdHRlZENvbnRleHQiLCJQcm9jZXNzaW5nQ29udGV4dCIsIk1vZGlmaWVkQ29udGV4dCIsIkZvcm1GaWVsZHNDb250ZXh0IiwiV2F0Y2hGb3JtRXJyb3JzIl0sIm1hcHBpbmdzIjoiQUFBQSxrRUFBa0U7Ozs7K0JBMHBCbEU7OztlQUFBOzs7a0VBenBCd0I7a0NBQ0U7K0RBQ2tEOzhCQUM3QztnQ0FDSjsrQkFDTDswQkFhRzs4QkFDSTt3Q0FDVTs2REFDdEI7cUJBQ1E7MkVBQ007c0JBQ1A7OEJBQ1E7d0JBQ047bUNBQ0c7aUNBQ0c7cUNBQ0k7MEVBQ047NkVBQ0c7eUJBUTFCO3NFQUNtQjs4QkFDRztzRUFDQzt1RUFDQzt5RUFDRjs2RUFDSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWpDLE1BQU1BLFlBQVk7QUFFbEIsTUFBTUMsT0FBd0IsQ0FBQ0M7SUFDN0IsTUFBTSxFQUNKQyxNQUFNLEVBQ05DLFFBQVEsRUFDUkMsU0FBUyxFQUNUQyxvQkFBb0IsRUFDcEJDLFFBQVEsRUFDUkMsY0FBYyxFQUNkQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsTUFBTSxFQUNOQyxRQUFRLEVBQ1JDLFNBQVMsRUFDVEMsUUFBUSxFQUNSQyxtQkFBbUIsRUFDcEIsR0FBR2I7SUFFSixNQUFNYyxVQUFVQyxJQUFBQSwwQkFBVTtJQUMxQixNQUFNLEVBQUVDLE1BQU1DLE1BQU0sRUFBRSxHQUFHQyxJQUFBQSxpQkFBUztJQUNsQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsQ0FBQyxFQUFFLEdBQUdDLElBQUFBLDRCQUFjLEVBQUM7SUFDbkMsTUFBTSxFQUFFQyxhQUFhLEVBQUVDLElBQUksRUFBRSxHQUFHQyxJQUFBQSxhQUFPO0lBQ3ZDLE1BQU0sRUFBRUMsRUFBRSxFQUFFQyxVQUFVLEVBQUVDLGlCQUFpQixFQUFFQyxNQUFN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
665
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL0Zvcm0vaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLW5vbmludGVyYWN0aXZlLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgaXNEZWVwRXF1YWwgZnJvbSAnZGVlcC1lcXVhbCdcbmltcG9ydCB7IHNlcmlhbGl6ZSB9IGZyb20gJ29iamVjdC10by1mb3JtZGF0YSdcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWR1Y2VyLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyB1c2VIaXN0b3J5IH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSdcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSAncmVhY3QtdG9hc3RpZnknXG5cbmltcG9ydCB0eXBlIHsgRmllbGQgfSBmcm9tICcuLi8uLi8uLi8uLi9maWVsZHMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBDb250ZXh0LFxuICBGaWVsZHMsXG4gIENvbnRleHQgYXMgRm9ybUNvbnRleHRUeXBlLFxuICBHZXREYXRhQnlQYXRoLFxuICBQcm9wcyxcbiAgUm93LFxuICBTdWJtaXRPcHRpb25zLFxufSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdGllcy9pc051bWJlcidcbmltcG9ydCB7IHNldHNBcmVFcXVhbCB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdGllcy9zZXRzQXJlRXF1YWwnXG5pbXBvcnQgeyBzcGxpdFBhdGhCeUFycmF5RmllbGRzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzL3NwbGl0UGF0aEJ5QXJyYXlGaWVsZHMnXG5pbXBvcnQgd2FpdCBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvd2FpdCdcbmltcG9ydCB7IHJlcXVlc3RzIH0gZnJvbSAnLi4vLi4vLi4vYXBpJ1xuaW1wb3J0IHVzZVRocm90dGxlZEVmZmVjdCBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUaHJvdHRsZWRFZmZlY3QnXG5pbXBvcnQgeyB1c2VBdXRoIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0F1dGgnXG5pbXBvcnQgeyB1c2VDb25maWcgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvQ29uZmlnJ1xuaW1wb3J0IHsgdXNlRG9jdW1lbnRJbmZvIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0RvY3VtZW50SW5mbydcbmltcG9ydCB7IHVzZUxvY2FsZSB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9Mb2NhbGUnXG5pbXBvcnQgeyB1c2VPcGVyYXRpb24gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvT3BlcmF0aW9uUHJvdmlkZXInXG5pbXBvcnQgeyBXYXRjaEZvcm1FcnJvcnMgfSBmcm9tICcuL1dhdGNoRm9ybUVycm9ycydcbmltcG9ydCB7IGJ1aWxkRmllbGRTY2hlbWFNYXAgfSBmcm9tICcuL2J1aWxkRmllbGRTY2hlbWFNYXAnXG5pbXBvcnQgYnVpbGRJbml0aWFsU3RhdGUgZnJvbSAnLi9idWlsZEluaXRpYWxTdGF0ZSdcbmltcG9ydCBidWlsZFN0YXRlRnJvbVNjaGVtYSBmcm9tICcuL2J1aWxkU3RhdGVGcm9tU2NoZW1hJ1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRleHQsXG4gIEZvcm1GaWVsZHNDb250ZXh0LFxuICBGb3JtV2F0Y2hDb250ZXh0LFxuICBNb2RpZmllZENvbnRleHQsXG4gIFByb2Nlc3NpbmdDb250ZXh0LFxuICBTdWJtaXR0ZWRDb250ZXh0LFxufSBmcm9tICcuL2NvbnRleHQnXG5pbXBvcnQgZXJyb3JNZXNzYWdlcyBmcm9tICcuL2Vycm9yTWVzc2FnZXMnXG5pbXBvcnQgeyBmaWVsZFJlZHVjZXIgfSBmcm9tICcuL2ZpZWxkUmVkdWNlcidcbmltcG9ydCBnZXREYXRhQnlQYXRoRnVuYyBmcm9tICcuL2dldERhdGFCeVBhdGgnXG5pbXBvcnQgZ2V0U2libGluZ0RhdGFGdW5jIGZyb20gJy4vZ2V0U2libGluZ0RhdGEnXG5pbXBvcnQgaW5pdENvbnRleHRTdGF0ZSBmcm9tICcuL2luaXRDb250ZXh0U3RhdGUnXG5pbXBvcnQgcmVkdWNlRmllbGRzVG9WYWx1ZXMgZnJvbSAnLi9yZWR1Y2VGaWVsZHNUb1ZhbHVlcydcblxuY29uc3QgYmFzZUNsYXNzID0gJ2Zvcm0nXG5cbmNvbnN0IEZvcm06IFJlYWN0LkZDPFByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgYWN0aW9uLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICBkaXNhYmxlU3VjY2Vzc1N0YXR1cyxcbiAgICBkaXNhYmxlZCxcbiAgICBoYW5kbGVSZXNwb25zZSxcbiAgICBpbml0aWFsRGF0YSwgLy8gdmFsdWVzIG9ubHksIHBhdGhzIGFyZSByZXF1aXJlZCBhcyBrZXkgLSBmb3JtIHNob3VsZCBidWlsZCBpbml0aWFsIHN0YXRlIGFzIGNvbnZlbmllbmNlXG4gICAgaW5pdGlhbFN0YXRlLCAvLyBmdWxseSBmb3JtZWQgaW5pdGlhbCBmaWVsZCBzdGF0ZVxuICAgIG1ldGhvZCxcbiAgICBvblN1Ym1pdCxcbiAgICBvblN1Y2Nlc3MsXG4gICAgcmVkaXJlY3QsXG4gICAgc3VibWl0dGVkOiBzdWJtaXR0ZWRGcm9tUHJvcHMsXG4gICAgd2FpdEZvckF1dG9jb21wbGV0ZSxcbiAgfSA9IHByb3BzXG5cbiAgY29uc3QgaGlzdG9yeSA9IHVzZUhpc3RvcnkoKVxuICBjb25zdCB7IGNvZGU6IGxvY2FsZSB9ID0gdXNlTG9jYWxlKClcbiAgY29uc3QgeyBpMThuLCB0IH0gPSB1c2VUcmFuc2xhdGlvbignZ2VuZXJhbCcpXG4gIGNvbnN0IHsgcmVmcmVzaENvb2tpZSwgdXNlciB9ID0gdXNlQXV0aCgpXG4gIGNvbnN0IHsgaWQsIGNvbGxlY3Rpb24sIGdldERvY1ByZWZlcmVuY2VzLCBnbG9iYWwgfSA9IHVzZURvY3VtZW50SW5mbygpXG4gIGNvbnN0IG9wZXJhdGlvbiA9IHVzZU9wZXJhdGlvbigpXG5cbiAgY29uc3QgY29uZmlnID0gdXNlQ29uZmlnKClcblxuICBjb25zdCBbbW9kaWZpZWQsIHNldE1vZGlmaWVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbcHJvY2Vzc2luZywgc2V0UHJvY2Vzc2luZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3N1Ym1pdHRlZCwgc2V0U3VibWl0dGVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZm9ybWF0dGVkSW5pdGlhbERhdGEsIHNldEZvcm1hdHRlZEluaXRpYWxEYXRhXSA9IHVzZVN0YXRlKGJ1aWxkSW5pdGlhbFN0YXRlKGluaXRpYWxEYXRhKSlcblxuICBjb25zdCBmb3JtUmVmID0gdXNlUmVmPEhUTUxGb3JtRWxlbWVudD4obnVsbClcbiAgY29uc3QgY29udGV4dFJlZiA9IHVzZVJlZih7fSBhcyBGb3JtQ29udGV4dFR5cGUpXG5cbiAgbGV0IGluaXRpYWxGaWVsZFN0YXRlID0ge31cblxuICBpZiAoZm9ybWF0dGVkSW5pdGlhbERhdGEpIGluaXRpYWxGaWVsZFN0YXRlID0gZm9ybWF0dGVkSW5pdGlhbERhdGFcbiAgaWYgKGluaXRpYWxTdGF0ZSkgaW5pdGlhbEZpZWxkU3RhdGUgPSBpbml0aWFsU3RhdGVcblxuICBjb25zdCBmaWVsZHNSZWR1Y2VyID0gdXNlUmVkdWNlcihmaWVsZFJlZHVjZXIsIHt9LCAoKSA9PiBpbml0aWFsRmllbGRTdGF0ZSlcbiAgY29uc3QgW2ZpZWxkcywgZGlzcGF0Y2hGaWVsZHNdID0gZmllbGRzUmVkdWNlclxuXG4gIGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMgPSBmaWVsZHNcbiAgY29udGV4dFJlZi5jdXJyZW50LmRpc3BhdGNoRmllbGRzID0gZGlzcGF0Y2hGaWVsZHNcblxuICAvLyBCdWlsZCBhIGN1cnJlbnQgc2V0IG9mIGNoaWxkIGVycm9ycyBmb3IgYWxsIHJvd3MgaW4gZm9ybSBzdGF0ZVxuICBjb25zdCBidWlsZFJvd0Vycm9ycyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBleGlzdGluZ0ZpZWxkUm93czogeyBbcGF0aDogc3RyaW5nXTogUm93W10gfSA9IHt9XG4gICAgY29uc3QgbmV3RmllbGRSb3dzOiB7IFtwYXRoOiBzdHJpbmddOiBSb3dbXSB9ID0ge31cblxuICAgIE9iamVjdC5lbnRyaWVzKGZpZWxkcykuZm9yRWFjaCgoW3BhdGgsIGZpZWxkXSkgPT4ge1xuICAgICAgY29uc3QgcGF0aFNlZ21lbnRzID0gc3BsaXRQYXRoQnlBcnJheUZpZWxkcyhwYXRoKVxuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGhTZWdtZW50cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBjb25zdCBmaWVsZFBhdGggPSBwYXRoU2VnbWVudHMuc2xpY2UoMCwgaSArIDEpLmpvaW4oJy4nKVxuICAgICAgICBjb25zdCBmb3JtRmllbGQgPSBmaWVsZHM/LltmaWVsZFBhdGhdXG5cbiAgICAgICAgLy8gSXMgdGhpcyBhbiBhcnJheSBvciBibG9ja3MgZmllbGQ/XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZvcm1GaWVsZD8ucm93cykpIHtcbiAgICAgICAgICAvLyBLZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBleGlzdGluZyByb3cgc3RhdGVcbiAgICAgICAgICBleGlzdGluZ0ZpZWxkUm93c1tmaWVsZFBhdGhdID0gZm9ybUZpZWxkLnJvd3NcblxuICAgICAgICAgIC8vIEEgbmV3IHJvdyBzdGF0ZSB3aWxsIGJlIHVzZWQgdG8gY29tcGFyZVxuICAgICAgICAgIC8vIGFnYWluc3QgdGhlIG9sZCBzdGF0ZSBsYXRlcixcbiAgICAgICAgICAvLyB0byBzZWUgaWYgd2UgbmVlZCB0byBkaXNwYXRjaCBhbiB1cGRhdGVcbiAgICAgICAgICBpZiAoIW5ld0ZpZWxkUm93c1tmaWVsZFBhdGhdKSB7XG4gICAgICAgICAgICBuZXdGaWVsZFJvd3NbZmllbGRQYXRoXSA9IGZvcm1GaWVsZC5yb3dzLm1hcCgoZXhpc3RpbmdSb3cpID0+ICh7XG4gICAgICAgICAgICAgIC4uLmV4aXN0aW5nUm93LFxuICAgICAgICAgICAgICBjaGlsZEVycm9yUGF0aHM6IG5ldyBTZXQoKSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHJvd0luZGV4ID0gcGF0aFNlZ21lbnRzW2kgKyAxXVxuICAgICAgICAgIGNvbnN0IGNoaWxkRmllbGRQYXRoID0gcGF0aFNlZ21lbnRzLnNsaWNlKGkgKyAxKS5qb2luKCcuJylcblxuICAgICAgICAgIGlmIChmaWVsZC52YWxpZCA9PT0gZmFsc2UgJiYgY2hpbGRGaWVsZFBhdGgpIHtcbiAgICAgICAgICAgIG5ld0ZpZWxkUm93c1tmaWVsZFBhdGhdW3Jvd0luZGV4XS5jaGlsZEVycm9yUGF0aHMuYWRkKGAke2ZpZWxkUGF0aH0uJHtjaGlsZEZpZWxkUGF0aH1gKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG5cbiAgICAvLyBOb3cgbG9vcCBvdmVyIGFsbCBmaWVsZHMgd2l0aCByb3dzIC1cbiAgICAvLyBpZiBhbnl0aGluZyBjaGFuZ2VkLCBkaXNwYXRjaCBhbiB1cGRhdGUgZm9yIHRoZSBmaWVsZFxuICAgIC8vIHdpdGggdGhlIG5ldyByb3cgc3RhdGVcbiAgICBPYmplY3QuZW50cmllcyhuZXdGaWVsZFJvd3MpLmZvckVhY2goKFtwYXRoLCBuZXdSb3dzXSkgPT4ge1xuICAgICAgY29uc3Qgc3RhdGVNYXRjaGVzID0gbmV3Um93cy5ldmVyeSgobmV3Um93LCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nUm93RXJyb3JQYXRocyA9IGV4aXN0aW5nRmllbGRSb3dzW3BhdGhdW2ldPy5jaGlsZEVycm9yUGF0aHNcbiAgICAgICAgcmV0dXJuIHNldHNBcmVFcXVhbChuZXdSb3cuY2hpbGRFcnJvclBhdGhzLCBleGlzdGluZ1Jvd0Vycm9yUGF0aHMpXG4gICAgICB9KVxuXG4gICAgICBpZiAoIXN0YXRlTWF0Y2hlcykge1xuICAgICAgICBkaXNwYXRjaEZpZWxkcyh7XG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICByb3dzOiBuZXdSb3dzLFxuICAgICAgICAgIHR5cGU6ICdVUERBVEUnLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG4gIH0sIFtmaWVsZHMsIGRpc3BhdGNoRmllbGRzXSlcblxuICBjb25zdCB2YWxpZGF0ZUZvcm0gPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdmFsaWRhdGVkRmllbGRTdGF0ZSA9IHt9XG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlXG4gICAgY29uc3QgZGF0YSA9IGNvbnRleHRSZWYuY3VycmVudC5nZXREYXRhKClcblxuICAgIGNvbnN0IHZhbGlkYXRpb25Qcm9taXNlcyA9IE9iamVjdC5lbnRyaWVzKGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMpLm1hcChcbiAgICAgIGFzeW5jIChbcGF0aCwgZmllbGRdKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlZEZpZWxkID0ge1xuICAgICAgICAgIC4uLmZpZWxkLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkLnBhc3Nlc0NvbmRpdGlvbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBsZXQgdmFsaWRhdGlvblJlc3VsdDogYm9vbGVhbiB8IHN0cmluZyA9IHRydWVcblxuICAgICAgICAgIGlmICh0eXBlb2YgZmllbGQudmFsaWRhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSBhd2FpdCBmaWVsZC52YWxpZGF0ZShmaWVsZC52YWx1ZSwge1xuICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgICAgIHNpYmxpbmdEYXRhOiBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0U2libGluZ0RhdGEocGF0aCksXG4gICAgICAgICAgICAgIHQsXG4gICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsaWRhdGlvblJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHZhbGlkYXRlZEZpZWxkLmVycm9yTWVzc2FnZSA9IHZhbGlkYXRpb25SZXN1bHRcbiAgICAgICAgICAgIHZhbGlkYXRlZEZpZWxkLnZhbGlkID0gZmFsc2VcbiAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhbGlkYXRlZEZpZWxkU3RhdGVbcGF0aF0gPSB2YWxpZGF0ZWRGaWVsZFxuICAgICAgfSxcbiAgICApXG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbCh2YWxpZGF0aW9uUHJvbWlzZXMpXG5cbiAgICBpZiAoIWlzRGVlcEVxdWFsKGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMsIHZhbGlkYXRlZEZpZWxkU3RhdGUpKSB7XG4gICAgICBkaXNwYXRjaEZpZWxkcyh7IHN0YXRlOiB2YWxpZGF0ZWRGaWVsZFN0YXRlLCB0eXBlOiAnUkVQTEFDRV9TVEFURScgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gaXNWYWxpZFxuICB9LCBbY29udGV4dFJlZiwgaWQsIHVzZXIsIG9wZXJhdGlvbiwgdCwgZGlzcGF0Y2hGaWVsZHMsIGNvbmZpZ10pXG5cbiAgY29uc3Qgc3VibWl0ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKG9wdGlvbnM6IFN1Ym1pdE9wdGlvbnMgPSB7fSwgZSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgY29uc3Qge1xuICAgICAgICBhY3Rpb246IGFjdGlvblRvVXNlID0gYWN0aW9uLFxuICAgICAgICBtZXRob2Q6IG1ldGhvZFRvVXNlID0gbWV0aG9kLFxuICAgICAgICBvdmVycmlkZXMgPSB7fSxcbiAgICAgICAgc2tpcFZhbGlkYXRpb24sXG4gICAgICB9ID0gb3B0aW9uc1xuXG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKGUpIHtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cblxuICAgICAgc2V0UHJvY2Vzc2luZyh0cnVlKVxuXG4gICAgICBpZiAod2FpdEZvckF1dG9jb21wbGV0ZSkgYXdhaXQgd2FpdCgxMDApXG5cbiAgICAgIGNvbnN0IGlzVmFsaWQgPSBza2lwVmFsaWRhdGlvbiA/IHRydWUgOiBhd2FpdCBjb250ZXh0UmVmLmN1cnJlbnQudmFsaWRhdGVGb3JtKClcbiAgICAgIGNvbnRleHRSZWYuY3VycmVudC5idWlsZFJvd0Vycm9ycygpXG5cbiAgICAgIGlmICghc2tpcFZhbGlkYXRpb24pIHNldFN1Ym1pdHRlZCh0cnVlKVxuXG4gICAgICAvLyBJZiBub3QgdmFsaWQsIHByZXZlbnQgc3VibWlzc2lvblxuICAgICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICAgIHRvYXN0LmVycm9yKHQoJ2Vycm9yOmNvcnJlY3RJbnZhbGlkRmllbGRzJykpXG4gICAgICAgIHNldFByb2Nlc3NpbmcoZmFsc2UpXG5cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHN1Ym1pdCBoYW5kbGVyIGNvbWVzIHRocm91Z2ggdmlhIHByb3BzLCBydW4gdGhhdFxuICAgICAgaWYgKG9uU3VibWl0KSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgLi4ucmVkdWNlRmllbGRzVG9WYWx1ZXMoZmllbGRzLCB0cnVlKSxcbiAgICAgICAgICAuLi5vdmVycmlkZXMsXG4gICAgICAgIH1cblxuICAgICAgICBvblN1Ym1pdChmaWVsZHMsIGRhdGEpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvcm1EYXRhID0gY29udGV4dFJlZi5jdXJyZW50LmNyZWF0ZUZvcm1EYXRhKG92ZXJyaWRlcylcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgcmVxdWVzdHNbbWV0aG9kVG9Vc2UudG9Mb3dlckNhc2UoKV0oYWN0aW9uVG9Vc2UsIHtcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuXG4gICAgICAgIHNldE1vZGlmaWVkKGZhbHNlKVxuXG4gICAgICAgIGlmICh0eXBlb2YgaGFuZGxlUmVzcG9uc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBoYW5kbGVSZXNwb25zZShyZXMpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBzZXRQcm9jZXNzaW5nKGZhbHNlKVxuXG4gICAgICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gcmVzLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKVxuICAgICAgICBjb25zdCBpc0pTT04gPSBjb250ZW50VHlwZSAmJiBjb250ZW50VHlwZS5pbmRleE9mKCdhcHBsaWNhdGlvbi9qc29uJykgIT09IC0xXG5cbiAgICAgICAgbGV0IGpzb246IGFueSA9IHt9XG5cbiAgICAgICAgaWYgKGlzSlNPTikganNvbiA9IGF3YWl0IHJlcy5qc29uKClcblxuICAgICAgICBpZiAocmVzLnN0YXR1cyA8IDQwMCkge1xuICAgICAgICAgIHNldFN1Ym1pdHRlZChmYWxzZSlcblxuICAgICAgICAgIGlmICh0eXBlb2Ygb25TdWNjZXNzID09PSAnZnVuY3Rpb24nKSBvblN1Y2Nlc3MoanNvbilcblxuICAgICAgICAgIGlmIChyZWRpcmVjdCkge1xuICAgICAgICAgICAgY29uc3QgZGVzdGluYXRpb24gPSB7XG4gICAgICAgICAgICAgIHBhdGhuYW1lOiByZWRpcmVjdCxcbiAgICAgICAgICAgICAgc3RhdGU6IHt9LFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGpzb24gPT09ICdvYmplY3QnICYmIGpzb24ubWVzc2FnZSAmJiAhZGlzYWJsZVN1Y2Nlc3NTdGF0dXMpIHtcbiAgICAgICAgICAgICAgZGVzdGluYXRpb24uc3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgc3RhdHVzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGpzb24ubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGhpc3RvcnkucHVzaChkZXN0aW5hdGlvbilcbiAgICAgICAgICB9IGVsc2UgaWYgKCFkaXNhYmxlU3VjY2Vzc1N0YXR1cykge1xuICAgICAgICAgICAgdG9hc3Quc3VjY2Vzcyhqc29uLm1lc3NhZ2UgfHwgdCgnc3VibWlzc2lvblN1Y2Nlc3NmdWwnKSwgeyBhdXRvQ2xvc2U6IDMwMDAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udGV4dFJlZi5jdXJyZW50ID0geyAuLi5jb250ZXh0UmVmLmN1cnJlbnQgfSAvLyB0cmlnZ2VycyByZXJlbmRlciBvZiBhbGwgY29tcG9uZW50cyB0aGF0IHN1YnNjcmliZSB0byBmb3JtXG5cbiAgICAgICAgICBpZiAoanNvbi5tZXNzYWdlKSB7XG4gICAgICAgICAgICB0b2FzdC5lcnJvcihqc29uLm1lc3NhZ2UpXG5cbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGpzb24uZXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgW2ZpZWxkRXJyb3JzLCBub25GaWVsZEVycm9yc10gPSBqc29uLmVycm9ycy5yZWR1Y2UoXG4gICAgICAgICAgICAgIChbZmllbGRFcnJzLCBub25GaWVsZEVycnNdLCBlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdGaWVsZEVycnMgPSBbXVxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld05vbkZpZWxkRXJycyA9IFtdXG5cbiAgICAgICAgICAgICAgICBpZiAoZXJyPy5tZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICBuZXdOb25GaWVsZEVycnMucHVzaChlcnIpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXJyPy5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgZXJyLmRhdGEuZm9yRWFjaCgoZGF0YUVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhRXJyb3I/LmZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgbmV3RmllbGRFcnJzLnB1c2goZGF0YUVycm9yKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIG5ld05vbkZpZWxkRXJycy5wdXNoKGRhdGFFcnJvcilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgWy4uLmZpZWxkRXJycywgLi4ubmV3RmllbGRFcnJzXSxcbiAgICAgICAgICAgICAgICAgIFsuLi5ub25GaWVsZEVycnMsIC4uLm5ld05vbkZpZWxkRXJyc10sXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBbW10sIFtdXSxcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgZmllbGRFcnJvcnMuZm9yRWFjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgIGRpc3BhdGNoRmllbGRzKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnVVBEQVRFJyxcbiAgICAgICAgICAgICAgICAuLi4oY29udGV4dFJlZi5jdXJyZW50Py5maWVsZHM/LltlcnIuZmllbGRdIHx8IHt9KSxcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2U6IGVyci5tZXNzYWdlLFxuICAgICAgICAgICAgICAgIHBhdGg6IGVyci5maWVsZCxcbiAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBub25GaWVsZEVycm9ycy5mb3JFYWNoKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgdG9hc3QuZXJyb3IoZXJyLm1lc3NhZ2UgfHwgdCgnZXJyb3I6dW5rbm93bicpKVxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGVycm9yTWVzc2FnZXNbcmVzLnN0YXR1c10gfHwgdCgnZXJyb3I6dW5rbm93bicpXG5cbiAgICAgICAgICB0b2FzdC5lcnJvcihtZXNzYWdlKVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgc2V0UHJvY2Vzc2luZyhmYWxzZSlcblxuICAgICAgICB0b2FzdC5lcnJvcihlcnIpXG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBhY3Rpb24sXG4gICAgICBkaXNhYmxlU3VjY2Vzc1N0YXR1cyxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgZGlzcGF0Y2hGaWVsZHMsXG4gICAgICBmaWVsZHMsXG4gICAgICBoYW5kbGVSZXNwb25zZSxcbiAgICAgIGhpc3RvcnksXG4gICAgICBtZXRob2QsXG4gICAgICBvblN1Ym1pdCxcbiAgICAgIG9uU3VjY2VzcyxcbiAgICAgIHJlZGlyZWN0LFxuICAgICAgdCxcbiAgICAgIGkxOG4sXG4gICAgICB3YWl0Rm9yQXV0b2NvbXBsZXRlLFxuICAgIF0sXG4gIClcblxuICBjb25zdCB0cmF2ZXJzZVJvd0NvbmZpZ3MgPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAoe1xuICAgICAgZmllbGRDb25maWcsXG4gICAgICBwYXRoLFxuICAgICAgcGF0aFByZWZpeCxcbiAgICB9OiB7XG4gICAgICBmaWVsZENvbmZpZzogRmllbGRbXVxuICAgICAgcGF0aDogc3RyaW5nXG4gICAgICBwYXRoUHJlZml4Pzogc3RyaW5nXG4gICAgfSkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gZmllbGRDb25maWdcbiAgICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IHNwbGl0UGF0aEJ5QXJyYXlGaWVsZHMocGF0aClcbiAgICAgIGNvbnN0IGNvbmZpZ01hcCA9IGJ1aWxkRmllbGRTY2hlbWFNYXAoY29uZmlnKVxuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGhTZWdtZW50cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBjb25zdCBwYXRoU2VnbWVudCA9IHBhdGhTZWdtZW50c1tpXVxuXG4gICAgICAgIGlmIChpc051bWJlcihwYXRoU2VnbWVudCkpIHtcbiAgICAgICAgICBjb25zdCByb3dJbmRleCA9IHBhcnNlSW50KHBhdGhTZWdtZW50LCAxMClcbiAgICAgICAgICBjb25zdCBwYXJlbnRGaWVsZFBhdGggPSBwYXRoU2VnbWVudHMuc2xpY2UoMCwgaSkuam9pbignLicpXG4gICAgICAgICAgY29uc3QgcmVtYWluaW5nUGF0aCA9IHBhdGhTZWdtZW50cy5zbGljZShpICsgMSkuam9pbignLicpXG4gICAgICAgICAgY29uc3QgYXJyYXlGaWVsZFBhdGggPSBwYXRoUHJlZml4ID8gYCR7cGF0aFByZWZpeH0uJHtwYXJlbnRGaWVsZFBhdGh9YCA6IHBhcmVudEZpZWxkUGF0aFxuICAgICAgICAgIGNvbnN0IHBhcmVudEFycmF5RmllbGQgPSBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0RmllbGQoYXJyYXlGaWVsZFBhdGgpXG4gICAgICAgICAgY29uc3Qgcm93RmllbGQgPSBwYXJlbnRBcnJheUZpZWxkLnJvd3Nbcm93SW5kZXhdXG5cbiAgICAgICAgICBpZiAocm93RmllbGQuYmxvY2tUeXBlKSB7XG4gICAgICAgICAgICBjb25zdCBibG9ja0NvbmZpZyA9IGNvbmZpZ01hcC5nZXQoYCR7cGFyZW50RmllbGRQYXRofS4ke3Jvd0ZpZWxkLmJsb2NrVHlwZX1gKVxuICAgICAgICAgICAgaWYgKGJsb2NrQ29uZmlnKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZVJvd0NvbmZpZ3Moe1xuICAgICAgICAgICAgICAgIGZpZWxkQ29uZmlnOiBibG9ja0NvbmZpZyxcbiAgICAgICAgICAgICAgICBwYXRoOiByZW1haW5pbmdQYXRoLFxuICAgICAgICAgICAgICAgIHBhdGhQcmVmaXg6IGAke2FycmF5RmllbGRQYXRofS4ke3Jvd0luZGV4fWAsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQmxvY2sgY29uZmlnIG5vdCBmb3VuZCBmb3IgJHtyb3dGaWVsZC5ibG9ja1R5cGV9IGF0IHBhdGggJHtwYXRofWApXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZVJvd0NvbmZpZ3Moe1xuICAgICAgICAgICAgICBmaWVsZENvbmZpZzogY29uZmlnTWFwLmdldChwYXJlbnRGaWVsZFBhdGgpLFxuICAgICAgICAgICAgICBwYXRoOiByZW1haW5pbmdQYXRoLFxuICAgICAgICAgICAgICBwYXRoUHJlZml4OiBgJHthcnJheUZpZWxkUGF0aH0uJHtyb3dJbmRleH1gLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbmZpZ1xuICAgIH0sXG4gICAgW10sXG4gIClcblxuICBjb25zdCBnZXRSb3dDb25maWdCeVBhdGggPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAoeyBibG9ja1R5cGUsIHBhdGggfTogeyBibG9ja1R5cGU/OiBzdHJpbmc7IHBhdGg6IHN0cmluZyB9KSA9PiB7XG4gICAgICBjb25zdCByb3dDb25maWcgPSB0cmF2ZXJzZVJvd0NvbmZpZ3Moe1xuICAgICAgICBmaWVsZENvbmZpZzogY29sbGVjdGlvbj8uZmllbGRzIHx8IGdsb2JhbD8uZmllbGRzLFxuICAgICAgICBwYXRoLFxuICAgICAgfSlcbiAgICAgIGNvbnN0IHJvd0ZpZWxkQ29uZmlncyA9IGJ1aWxkRmllbGRTY2hlbWFNYXAocm93Q29uZmlnKVxuICAgICAgY29uc3QgcGF0aFNlZ21lbnRzID0gc3BsaXRQYXRoQnlBcnJheUZpZWxkcyhwYXRoKVxuICAgICAgY29uc3QgZmllbGRLZXkgPSBwYXRoU2VnbWVudHMuYXQoLTEpXG4gICAgICByZXR1cm4gcm93RmllbGRDb25maWdzLmdldChibG9ja1R5cGUgPyBgJHtmaWVsZEtleX0uJHtibG9ja1R5cGV9YCA6IGZpZWxkS2V5KVxuICAgIH0sXG4gICAgW3RyYXZlcnNlUm93Q29uZmlncywgY29sbGVjdGlvbj8uZmllbGRzLCBnbG9iYWw/LmZpZWxkc10sXG4gIClcblxuICAvLyBBcnJheS9CbG9jayByb3cgbWFuaXB1bGF0aW9uXG4gIGNvbnN0IGFkZEZpZWxkUm93OiBDb250ZXh0WydhZGRGaWVsZFJvdyddID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHsgZGF0YSwgcGF0aCwgcm93SW5kZXggfSkgPT4ge1xuICAgICAgY29uc3QgcHJlZmVyZW5jZXMgPSBhd2FpdCBnZXREb2NQcmVmZXJlbmNlcygpXG4gICAgICBjb25zdCBmaWVsZENvbmZpZyA9IGdldFJvd0NvbmZpZ0J5UGF0aCh7XG4gICAgICAgIGJsb2NrVHlwZTogZGF0YT8uYmxvY2tUeXBlLFxuICAgICAgICBwYXRoLFxuICAgICAgfSlcblxuICAgICAgaWYgKGZpZWxkQ29uZmlnKSB7XG4gICAgICAgIGNvbnN0IHN1YkZpZWxkU3RhdGUgPSBhd2FpdCBidWlsZFN0YXRlRnJvbVNjaGVtYSh7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgZmllbGRTY2hlbWE6IGZpZWxkQ29uZmlnLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgcHJlZmVyZW5jZXMsXG4gICAgICAgICAgdCxcbiAgICAgICAgICB1c2VyLFxuICAgICAgICB9KVxuICAgICAgICBkaXNwYXRjaEZpZWxkcyh7XG4gICAgICAgICAgYmxvY2tUeXBlOiBkYXRhPy5ibG9ja1R5cGUsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICByb3dJbmRleCxcbiAgICAgICAgICBzdWJGaWVsZFN0YXRlLFxuICAgICAgICAgIHR5cGU6ICdBRERfUk9XJyxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtkaXNwYXRjaEZpZWxkcywgZ2V0RG9jUHJlZmVyZW5jZXMsIGlkLCB1c2VyLCBvcGVyYXRpb24sIGxvY2FsZSwgdCwgZ2V0Um93Q29uZmlnQnlQYXRoLCBjb25maWddLFxuICApXG5cbiAgY29uc3QgcmVtb3ZlRmllbGRSb3c6IENvbnRleHRbJ3JlbW92ZUZpZWxkUm93J10gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoeyBwYXRoLCByb3dJbmRleCB9KSA9PiB7XG4gICAgICBkaXNwYXRjaEZpZWxkcyh7IHBhdGgsIHJvd0luZGV4LCB0eXBlOiAnUkVNT1ZFX1JPVycgfSlcbiAgICB9LFxuICAgIFtkaXNwYXRjaEZpZWxkc10sXG4gIClcblxuICBjb25zdCByZXBsYWNlRmllbGRSb3c6IENvbnRleHRbJ3JlcGxhY2VGaWVsZFJvdyddID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHsgZGF0YSwgcGF0aCwgcm93SW5kZXggfSkgPT4ge1xuICAgICAgY29uc3QgcHJlZmVyZW5jZXMgPSBhd2FpdCBnZXREb2NQcmVmZXJlbmNlcygpXG4gICAgICBjb25zdCBmaWVsZENvbmZpZyA9IGdldFJvd0NvbmZpZ0J5UGF0aCh7XG4gICAgICAgIGJsb2NrVHlwZTogZGF0YT8uYmxvY2tUeXBlLFxuICAgICAgICBwYXRoLFxuICAgICAgfSlcblxuICAgICAgaWYgKGZpZWxkQ29uZmlnKSB7XG4gICAgICAgIGNvbnN0IHN1YkZpZWxkU3RhdGUgPSBhd2FpdCBidWlsZFN0YXRlRnJvbVNjaGVtYSh7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgZmllbGRTY2hlbWE6IGZpZWxkQ29uZmlnLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgcHJlZmVyZW5jZXMsXG4gICAgICAgICAgdCxcbiAgICAgICAgICB1c2VyLFxuICAgICAgICB9KVxuICAgICAgICBkaXNwYXRjaEZpZWxkcyh7XG4gICAgICAgICAgYmxvY2tUeXBlOiBkYXRhPy5ibG9ja1R5cGUsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICByb3dJbmRleCxcbiAgICAgICAgICBzdWJGaWVsZFN0YXRlLFxuICAgICAgICAgIHR5cGU6ICdSRVBMQUNFX1JPVycsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbZGlzcGF0Y2hGaWVsZHMsIGdldERvY1ByZWZlcmVuY2VzLCBpZCwgdXNlciwgb3BlcmF0aW9uLCBsb2NhbGUsIHQsIGdldFJvd0NvbmZpZ0J5UGF0aCwgY29uZmlnXSxcbiAgKVxuXG4gIGNvbnN0IGdldEZpZWxkcyA9IHVzZUNhbGxiYWNrKCgpID0+IGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMsIFtjb250ZXh0UmVmXSlcbiAgY29uc3QgZ2V0RmllbGQgPSB1c2VDYWxsYmFjaygocGF0aDogc3RyaW5nKSA9PiBjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzW3BhdGhdLCBbY29udGV4dFJlZl0pXG4gIGNvbnN0IGdldERhdGEgPSB1c2VDYWxsYmFjayhcbiAgICAoKSA9PiByZWR1Y2VGaWVsZHNUb1ZhbHVlcyhjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCB0cnVlKSxcbiAgICBbY29udGV4dFJlZl0sXG4gIClcbiAgY29uc3QgZ2V0U2libGluZ0RhdGEgPSB1c2VDYWxsYmFjayhcbiAgICAocGF0aDogc3RyaW5nKSA9PiBnZXRTaWJsaW5nRGF0YUZ1bmMoY29udGV4dFJlZi5jdXJyZW50LmZpZWxkcywgcGF0aCksXG4gICAgW2NvbnRleHRSZWZdLFxuICApXG4gIGNvbnN0IGdldERhdGFCeVBhdGggPSB1c2VDYWxsYmFjazxHZXREYXRhQnlQYXRoPihcbiAgICAocGF0aDogc3RyaW5nKSA9PiBnZXREYXRhQnlQYXRoRnVuYyhjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCBwYXRoKSxcbiAgICBbY29udGV4dFJlZl0sXG4gIClcblxuICBjb25zdCBjcmVhdGVGb3JtRGF0YSA9IHVzZUNhbGxiYWNrKFxuICAgIChvdmVycmlkZXM6IGFueSA9IHt9KSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gcmVkdWNlRmllbGRzVG9WYWx1ZXMoY29udGV4dFJlZi5jdXJyZW50LmZpZWxkcywgdHJ1ZSlcblxuICAgICAgY29uc3QgZmlsZSA9IGRhdGE/LmZpbGVcblxuICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgZGVsZXRlIGRhdGEuZmlsZVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhV2l0aE92ZXJyaWRlcyA9IHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgLi4ub3ZlcnJpZGVzLFxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhVG9TZXJpYWxpemUgPSB7XG4gICAgICAgIF9wYXlsb2FkOiBKU09OLnN0cmluZ2lmeShkYXRhV2l0aE92ZXJyaWRlcyksXG4gICAgICAgIGZpbGUsXG4gICAgICB9XG5cbiAgICAgIC8vIG51bGxBc1VuZGVmaW5lZHMgaXMgaW1wb3J0YW50IHRvIGFsbG93IHVwbG9hZHMgYW5kIHJlbGF0aW9uc2hpcCBmaWVsZHMgdG8gY2xlYXIgdGhlbXNlbHZlc1xuICAgICAgY29uc3QgZm9ybURhdGEgPSBzZXJpYWxpemUoZGF0YVRvU2VyaWFsaXplLCB7IGluZGljZXM6IHRydWUsIG51bGxzQXNVbmRlZmluZWRzOiBmYWxzZSB9KVxuICAgICAgcmV0dXJuIGZvcm1EYXRhXG4gICAgfSxcbiAgICBbY29udGV4dFJlZl0sXG4gIClcblxuICBjb25zdCByZXNldCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChmaWVsZFNjaGVtYTogRmllbGRbXSwgZGF0YTogdW5rbm93bikgPT4ge1xuICAgICAgY29uc3QgcHJlZmVyZW5jZXMgPSBhd2FpdCBnZXREb2NQcmVmZXJlbmNlcygpXG4gICAgICBjb25zdCBzdGF0ZSA9IGF3YWl0IGJ1aWxkU3RhdGVGcm9tU2NoZW1hKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZmllbGRTY2hlbWEsXG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBwcmVmZXJlbmNlcyxcbiAgICAgICAgdCxcbiAgICAgICAgdXNlcixcbiAgICAgIH0pXG4gICAgICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IC4uLmluaXRDb250ZXh0U3RhdGUgfSBhcyBGb3JtQ29udGV4dFR5cGVcbiAgICAgIHNldE1vZGlmaWVkKGZhbHNlKVxuICAgICAgZGlzcGF0Y2hGaWVsZHMoeyBzdGF0ZSwgdHlwZTogJ1JFUExBQ0VfU1RBVEUnIH0pXG4gICAgfSxcbiAgICBbaWQsIHVzZXIsIG9wZXJhdGlvbiwgbG9jYWxlLCB0LCBkaXNwYXRjaEZpZWxkcywgZ2V0RG9jUHJlZmVyZW5jZXMsIGNvbmZpZ10sXG4gIClcblxuICBjb25zdCByZXBsYWNlU3RhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAoc3RhdGU6IEZpZWxkcykgPT4ge1xuICAgICAgY29udGV4dFJlZi5jdXJyZW50ID0geyAuLi5pbml0Q29udGV4dFN0YXRlIH0gYXMgRm9ybUNvbnRleHRUeXBlXG4gICAgICBzZXRNb2RpZmllZChmYWxzZSlcbiAgICAgIGRpc3BhdGNoRmllbGRzKHsgc3RhdGUsIHR5cGU6ICdSRVBMQUNFX1NUQVRFJyB9KVxuICAgIH0sXG4gICAgW2Rpc3BhdGNoRmllbGRzXSxcbiAgKVxuXG4gIGNvbnRleHRSZWYuY3VycmVudC5zdWJtaXQgPSBzdWJtaXRcbiAgY29udGV4dFJlZi5jdXJyZW50LmdldEZpZWxkcyA9IGdldEZpZWxkc1xuICBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0RmllbGQgPSBnZXRGaWVsZFxuICBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0RGF0YSA9IGdldERhdGFcbiAgY29udGV4dFJlZi5jdXJyZW50LmdldFNpYmxpbmdEYXRhID0gZ2V0U2libGluZ0RhdGFcbiAgY29udGV4dFJlZi5jdXJyZW50LmdldERhdGFCeVBhdGggPSBnZXREYXRhQnlQYXRoXG4gIGNvbnRleHRSZWYuY3VycmVudC52YWxpZGF0ZUZvcm0gPSB2YWxpZGF0ZUZvcm1cbiAgY29udGV4dFJlZi5jdXJyZW50LmNyZWF0ZUZvcm1EYXRhID0gY3JlYXRlRm9ybURhdGFcbiAgY29udGV4dFJlZi5jdXJyZW50LnNldE1vZGlmaWVkID0gc2V0TW9kaWZpZWRcbiAgY29udGV4dFJlZi5jdXJyZW50LnNldFByb2Nlc3NpbmcgPSBzZXRQcm9jZXNzaW5nXG4gIGNvbnRleHRSZWYuY3VycmVudC5zZXRTdWJtaXR0ZWQgPSBzZXRTdWJtaXR0ZWRcbiAgY29udGV4dFJlZi5jdXJyZW50LmRpc2FibGVkID0gZGlzYWJsZWRcbiAgY29udGV4dFJlZi5jdXJyZW50LmZvcm1SZWYgPSBmb3JtUmVmXG4gIGNvbnRleHRSZWYuY3VycmVudC5yZXNldCA9IHJlc2V0XG4gIGNvbnRleHRSZWYuY3VycmVudC5yZXBsYWNlU3RhdGUgPSByZXBsYWNlU3RhdGVcbiAgY29udGV4dFJlZi5jdXJyZW50LmJ1aWxkUm93RXJyb3JzID0gYnVpbGRSb3dFcnJvcnNcbiAgY29udGV4dFJlZi5jdXJyZW50LmFkZEZpZWxkUm93ID0gYWRkRmllbGRSb3dcbiAgY29udGV4dFJlZi5jdXJyZW50LnJlbW92ZUZpZWxkUm93ID0gcmVtb3ZlRmllbGRSb3dcbiAgY29udGV4dFJlZi5jdXJyZW50LnJlcGxhY2VGaWVsZFJvdyA9IHJlcGxhY2VGaWVsZFJvd1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBzdWJtaXR0ZWRGcm9tUHJvcHMgPT09ICdib29sZWFuJykgc2V0U3VibWl0dGVkKHN1Ym1pdHRlZEZyb21Qcm9wcylcbiAgfSwgW3N1Ym1pdHRlZEZyb21Qcm9wc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5pdGlhbFN0YXRlKSB7XG4gICAgICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IC4uLmluaXRDb250ZXh0U3RhdGUgfSBhcyBGb3JtQ29udGV4dFR5cGVcbiAgICAgIGRpc3BhdGNoRmllbGRzKHsgc3RhdGU6IGluaXRpYWxTdGF0ZSwgdHlwZTogJ1JFUExBQ0VfU1RBVEUnIH0pXG4gICAgfVxuICB9LCBbaW5pdGlhbFN0YXRlLCBkaXNwYXRjaEZpZWxkc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5pdGlhbERhdGEpIHtcbiAgICAgIGNvbnRleHRSZWYuY3VycmVudCA9IHsgLi4uaW5pdENvbnRleHRTdGF0ZSB9IGFzIEZvcm1Db250ZXh0VHlwZVxuICAgICAgY29uc3QgYnVpbHRTdGF0ZSA9IGJ1aWxkSW5pdGlhbFN0YXRlKGluaXRpYWxEYXRhKVxuICAgICAgc2V0Rm9ybWF0dGVkSW5pdGlhbERhdGEoYnVpbHRTdGF0ZSlcbiAgICAgIGRpc3BhdGNoRmllbGRzKHsgc3RhdGU6IGJ1aWx0U3RhdGUsIHR5cGU6ICdSRVBMQUNFX1NUQVRFJyB9KVxuICAgIH1cbiAgfSwgW2luaXRpYWxEYXRhLCBkaXNwYXRjaEZpZWxkc10pXG5cbiAgdXNlVGhyb3R0bGVkRWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIHJlZnJlc2hDb29raWUoKVxuICAgIH0sXG4gICAgMTUwMDAsXG4gICAgW2ZpZWxkc10sXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnRleHRSZWYuY3VycmVudCA9IHsgLi4uY29udGV4dFJlZi5jdXJyZW50IH0gLy8gdHJpZ2dlcnMgcmVyZW5kZXIgb2YgYWxsIGNvbXBvbmVudHMgdGhhdCBzdWJzY3JpYmUgdG8gZm9ybVxuICAgIHNldE1vZGlmaWVkKGZhbHNlKVxuICB9LCBbbG9jYWxlXSlcblxuICBjb25zdCBjbGFzc2VzID0gW2NsYXNzTmFtZSwgYmFzZUNsYXNzXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpXG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybVxuICAgICAgYWN0aW9uPXthY3Rpb259XG4gICAgICBjbGFzc05hbWU9e2NsYXNzZXN9XG4gICAgICBtZXRob2Q9e21ldGhvZH1cbiAgICAgIG5vVmFsaWRhdGVcbiAgICAgIG9uU3VibWl0PXsoZSkgPT4gY29udGV4dFJlZi5jdXJyZW50LnN1Ym1pdCh7fSwgZSl9XG4gICAgICByZWY9e2Zvcm1SZWZ9XG4gICAgPlxuICAgICAgPEZvcm1Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb250ZXh0UmVmLmN1cnJlbnR9PlxuICAgICAgICA8Rm9ybVdhdGNoQ29udGV4dC5Qcm92aWRlclxuICAgICAgICAgIHZhbHVlPXt7XG4gICAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgICAuLi5jb250ZXh0UmVmLmN1cnJlbnQsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxTdWJtaXR0ZWRDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtzdWJtaXR0ZWR9PlxuICAgICAgICAgICAgPFByb2Nlc3NpbmdDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtwcm9jZXNzaW5nfT5cbiAgICAgICAgICAgICAgPE1vZGlmaWVkQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bW9kaWZpZWR9PlxuICAgICAgICAgICAgICAgIDxGb3JtRmllbGRzQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17ZmllbGRzUmVkdWNlcn0+XG4gICAgICAgICAgICAgICAgICA8V2F0Y2hGb3JtRXJyb3JzIGJ1aWxkUm93RXJyb3JzPXtidWlsZFJvd0Vycm9yc30gLz5cbiAgICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgICAgICA8L0Zvcm1GaWVsZHNDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgICAgICA8L01vZGlmaWVkQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgICAgIDwvUHJvY2Vzc2luZ0NvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgICAgPC9TdWJtaXR0ZWRDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICA8L0Zvcm1XYXRjaENvbnRleHQuUHJvdmlkZXI+XG4gICAgICA8L0Zvcm1Db250ZXh0LlByb3ZpZGVyPlxuICAgIDwvZm9ybT5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBGb3JtXG4iXSwibmFtZXMiOlsiYmFzZUNsYXNzIiwiRm9ybSIsInByb3BzIiwiYWN0aW9uIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJkaXNhYmxlU3VjY2Vzc1N0YXR1cyIsImRpc2FibGVkIiwiaGFuZGxlUmVzcG9uc2UiLCJpbml0aWFsRGF0YSIsImluaXRpYWxTdGF0ZSIsIm1ldGhvZCIsIm9uU3VibWl0Iiwib25TdWNjZXNzIiwicmVkaXJlY3QiLCJzdWJtaXR0ZWQiLCJzdWJtaXR0ZWRGcm9tUHJvcHMiLCJ3YWl0Rm9yQXV0b2NvbXBsZXRlIiwiaGlzdG9yeSIsInVzZUhpc3RvcnkiLCJjb2RlIiwibG9jYWxlIiwidXNlTG9jYWxlIiwiaTE4biIsInQiLCJ1c2VUcmFuc2xhdGlvbiIsInJlZnJlc2hDb29raWUiLCJ1c2VyIiwidXNlQXV0aCIsImlkIiwiY29sbGVjdGlvbiIsImdldERvY1ByZWZlcmVuY2VzIiwiZ2xvYmFsIiwidXNlRG9jdW1lbnRJbmZvIiwib3BlcmF0aW9uIiwidXNlT3BlcmF0aW9uIiwiY29uZmlnIiwidXNlQ29uZmlnIiwibW9kaWZpZWQiLCJzZXRNb2RpZmllZCIsInVzZVN0YXRlIiwicHJvY2Vzc2luZyIsInNldFByb2Nlc3NpbmciLCJzZXRTdWJtaXR0ZWQiLCJmb3JtYXR0ZWRJbml0aWFsRGF0YSIsInNldEZvcm1hdHRlZEluaXRpYWxEYXRhIiwiYnVpbGRJbml0aWFsU3RhdGUiLCJmb3JtUmVmIiwidXNlUmVmIiwiY29udGV4dFJlZiIsImluaXRpYWxGaWVsZFN0YXRlIiwiZmllbGRzUmVkdWNlciIsInVzZVJlZHVjZXIiLCJmaWVsZFJlZHVjZXIiLCJmaWVsZHMiLCJkaXNwYXRjaEZpZWxkcyIsImN1cnJlbnQiLCJidWlsZFJvd0Vycm9ycyIsInVzZUNhbGxiYWNrIiwiZXhpc3RpbmdGaWVsZFJvd3MiLCJuZXdGaWVsZFJvd3MiLCJPYmplY3QiLCJlbnRyaWVzIiwiZm9yRWFjaCIsInBhdGgiLCJmaWVsZCIsInBhdGhTZWdtZW50cyIsInNwbGl0UGF0aEJ5QXJyYXlGaWVsZHMiLCJpIiwibGVuZ3RoIiwiZmllbGRQYXRoIiwic2xpY2UiLCJqb2luIiwiZm9ybUZpZWxkIiwiQXJyYXkiLCJpc0FycmF5Iiwicm93cyIsIm1hcCIsImV4aXN0aW5nUm93IiwiY2hpbGRFcnJvclBhdGhzIiwiU2V0Iiwicm93SW5kZXgiLCJjaGlsZEZpZWxkUGF0aCIsInZhbGlkIiwiYWRkIiwibmV3Um93cyIsInN0YXRlTWF0Y2hlcyIsImV2ZXJ5IiwibmV3Um93IiwiZXhpc3RpbmdSb3dFcnJvclBhdGhzIiwic2V0c0FyZUVxdWFsIiwidHlwZSIsInZhbGlkYXRlRm9ybSIsInZhbGlkYXRlZEZpZWxkU3RhdGUiLCJpc1ZhbGlkIiwiZGF0YSIsImdldERhdGEiLCJ2YWxpZGF0aW9uUHJvbWlzZXMiLCJ2YWxpZGF0ZWRGaWVsZCIsInBhc3Nlc0NvbmRpdGlvbiIsInZhbGlkYXRpb25SZXN1bHQiLCJ2YWxpZGF0ZSIsInZhbHVlIiwic2libGluZ0RhdGEiLCJnZXRTaWJsaW5nRGF0YSIsImVycm9yTWVzc2FnZSIsIlByb21pc2UiLCJhbGwiLCJpc0RlZXBFcXVhbCIsInN0YXRlIiwic3VibWl0Iiwib3B0aW9ucyIsImUiLCJhY3Rpb25Ub1VzZSIsIm1ldGhvZFRvVXNlIiwib3ZlcnJpZGVzIiwic2tpcFZhbGlkYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsIndhaXQiLCJ0b2FzdCIsImVycm9yIiwicmVkdWNlRmllbGRzVG9WYWx1ZXMiLCJmb3JtRGF0YSIsImNyZWF0ZUZvcm1EYXRhIiwicmVzIiwicmVxdWVzdHMiLCJ0b0xvd2VyQ2FzZSIsImJvZHkiLCJoZWFkZXJzIiwibGFuZ3VhZ2UiLCJjb250ZW50VHlwZSIsImdldCIsImlzSlNPTiIsImluZGV4T2YiLCJqc29uIiwic3RhdHVzIiwiZGVzdGluYXRpb24iLCJwYXRobmFtZSIsIm1lc3NhZ2UiLCJwdXNoIiwic3VjY2VzcyIsImF1dG9DbG9zZSIsImVycm9ycyIsImZpZWxkRXJyb3JzIiwibm9uRmllbGRFcnJvcnMiLCJyZWR1Y2UiLCJmaWVsZEVycnMiLCJub25GaWVsZEVycnMiLCJlcnIiLCJuZXdGaWVsZEVycnMiLCJuZXdOb25GaWVsZEVycnMiLCJkYXRhRXJyb3IiLCJlcnJvck1lc3NhZ2VzIiwidHJhdmVyc2VSb3dDb25maWdzIiwiUmVhY3QiLCJmaWVsZENvbmZpZyIsInBhdGhQcmVmaXgiLCJjb25maWdNYXAiLCJidWlsZEZpZWxkU2NoZW1hTWFwIiwicGF0aFNlZ21lbnQiLCJpc051bWJlciIsInBhcnNlSW50IiwicGFyZW50RmllbGRQYXRoIiwicmVtYWluaW5nUGF0aCIsImFycmF5RmllbGRQYXRoIiwicGFyZW50QXJyYXlGaWVsZCIsImdldEZpZWxkIiwicm93RmllbGQiLCJibG9ja1R5cGUiLCJibG9ja0NvbmZpZyIsIkVycm9yIiwiZ2V0Um93Q29uZmlnQnlQYXRoIiwicm93Q29uZmlnIiwicm93RmllbGRDb25maWdzIiwiZmllbGRLZXkiLCJhdCIsImFkZEZpZWxkUm93IiwicHJlZmVyZW5jZXMiLCJzdWJGaWVsZFN0YXRlIiwiYnVpbGRTdGF0ZUZyb21TY2hlbWEiLCJmaWVsZFNjaGVtYSIsInJlbW92ZUZpZWxkUm93IiwicmVwbGFjZUZpZWxkUm93IiwiZ2V0RmllbGRzIiwiZ2V0U2libGluZ0RhdGFGdW5jIiwiZ2V0RGF0YUJ5UGF0aCIsImdldERhdGFCeVBhdGhGdW5jIiwiZmlsZSIsImRhdGFXaXRoT3ZlcnJpZGVzIiwiZGF0YVRvU2VyaWFsaXplIiwiX3BheWxvYWQiLCJKU09OIiwic3RyaW5naWZ5Iiwic2VyaWFsaXplIiwiaW5kaWNlcyIsIm51bGxzQXNVbmRlZmluZWRzIiwicmVzZXQiLCJpbml0Q29udGV4dFN0YXRlIiwicmVwbGFjZVN0YXRlIiwidXNlRWZmZWN0IiwiYnVpbHRTdGF0ZSIsInVzZVRocm90dGxlZEVmZmVjdCIsImNsYXNzZXMiLCJmaWx0ZXIiLCJCb29sZWFuIiwiZm9ybSIsIm5vVmFsaWRhdGUiLCJyZWYiLCJGb3JtQ29udGV4dCIsIlByb3ZpZGVyIiwiRm9ybVdhdGNoQ29udGV4dCIsIlN1Ym1pdHRlZENvbnRleHQiLCJQcm9jZXNzaW5nQ29udGV4dCIsIk1vZGlmaWVkQ29udGV4dCIsIkZvcm1GaWVsZHNDb250ZXh0IiwiV2F0Y2hGb3JtRXJyb3JzIl0sIm1hcHBpbmdzIjoiQUFBQSxrRUFBa0U7Ozs7K0JBc3FCbEU7OztlQUFBOzs7a0VBcnFCd0I7a0NBQ0U7K0RBQ2tEOzhCQUM3QztnQ0FDSjsrQkFDTDswQkFhRzs4QkFDSTt3Q0FDVTs2REFDdEI7cUJBQ1E7MkVBQ007c0JBQ1A7d0JBQ0U7OEJBQ007d0JBQ047bUNBQ0c7aUNBQ0c7cUNBQ0k7MEVBQ047NkVBQ0c7eUJBUTFCO3NFQUNtQjs4QkFDRztzRUFDQzt1RUFDQzt5RUFDRjs2RUFDSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWpDLE1BQU1BLFlBQVk7QUFFbEIsTUFBTUMsT0FBd0IsQ0FBQ0M7SUFDN0IsTUFBTSxFQUNKQyxNQUFNLEVBQ05DLFFBQVEsRUFDUkMsU0FBUyxFQUNU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
@@ -42,6 +42,7 @@ export type Props = {
42
42
  onSubmit?: (fields: Fields, data: Data) => void;
43
43
  onSuccess?: (json: unknown) => void;
44
44
  redirect?: string;
45
+ submitted?: boolean;
45
46
  validationOperation?: 'create' | 'update';
46
47
  waitForAutocomplete?: boolean;
47
48
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/forms/Form/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/forms/Form/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/admin/components/forms/field-types/Array/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAG1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAoBpC,OAAO,cAAc,CAAA;;AA0QrB,wBAA4C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/admin/components/forms/field-types/Array/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAG1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAqBpC,OAAO,cAAc,CAAA;;AAyQrB,wBAA4C"}