@atlasauth/cli 0.24.0 → 0.25.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 (530) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/package.json +4 -4
  3. package/dist/args.d.ts +0 -601
  4. package/dist/args.js +0 -289
  5. package/dist/args.js.map +0 -1
  6. package/dist/cli.d.ts +0 -2
  7. package/dist/cli.js +0 -19
  8. package/dist/cli.js.map +0 -1
  9. package/dist/commands/actions-gallery.d.ts +0 -8
  10. package/dist/commands/actions-gallery.js +0 -197
  11. package/dist/commands/actions-gallery.js.map +0 -1
  12. package/dist/commands/actions.d.ts +0 -13
  13. package/dist/commands/actions.js +0 -135
  14. package/dist/commands/actions.js.map +0 -1
  15. package/dist/commands/admin.d.ts +0 -49
  16. package/dist/commands/admin.js +0 -353
  17. package/dist/commands/admin.js.map +0 -1
  18. package/dist/commands/api-keys.d.ts +0 -4
  19. package/dist/commands/api-keys.js +0 -96
  20. package/dist/commands/api-keys.js.map +0 -1
  21. package/dist/commands/auth.d.ts +0 -25
  22. package/dist/commands/auth.js +0 -102
  23. package/dist/commands/auth.js.map +0 -1
  24. package/dist/commands/config.d.ts +0 -104
  25. package/dist/commands/config.js +0 -1506
  26. package/dist/commands/config.js.map +0 -1
  27. package/dist/commands/csp.d.ts +0 -32
  28. package/dist/commands/csp.js +0 -180
  29. package/dist/commands/csp.js.map +0 -1
  30. package/dist/commands/dev.d.ts +0 -8
  31. package/dist/commands/dev.js +0 -84
  32. package/dist/commands/dev.js.map +0 -1
  33. package/dist/commands/fga.d.ts +0 -10
  34. package/dist/commands/fga.js +0 -146
  35. package/dist/commands/fga.js.map +0 -1
  36. package/dist/commands/golive.d.ts +0 -40
  37. package/dist/commands/golive.js +0 -285
  38. package/dist/commands/golive.js.map +0 -1
  39. package/dist/commands/id-accounts.d.ts +0 -13
  40. package/dist/commands/id-accounts.js +0 -195
  41. package/dist/commands/id-accounts.js.map +0 -1
  42. package/dist/commands/import-better-auth.d.ts +0 -3
  43. package/dist/commands/import-better-auth.js +0 -164
  44. package/dist/commands/import-better-auth.js.map +0 -1
  45. package/dist/commands/import.d.ts +0 -3
  46. package/dist/commands/import.js +0 -123
  47. package/dist/commands/import.js.map +0 -1
  48. package/dist/commands/info.d.ts +0 -75
  49. package/dist/commands/info.js +0 -362
  50. package/dist/commands/info.js.map +0 -1
  51. package/dist/commands/init.d.ts +0 -3
  52. package/dist/commands/init.js +0 -438
  53. package/dist/commands/init.js.map +0 -1
  54. package/dist/commands/integrations.d.ts +0 -8
  55. package/dist/commands/integrations.js +0 -112
  56. package/dist/commands/integrations.js.map +0 -1
  57. package/dist/commands/listen.d.ts +0 -17
  58. package/dist/commands/listen.js +0 -223
  59. package/dist/commands/listen.js.map +0 -1
  60. package/dist/commands/mcp.d.ts +0 -38
  61. package/dist/commands/mcp.js +0 -111
  62. package/dist/commands/mcp.js.map +0 -1
  63. package/dist/commands/migrate.d.ts +0 -16
  64. package/dist/commands/migrate.js +0 -114
  65. package/dist/commands/migrate.js.map +0 -1
  66. package/dist/commands/move-origin.d.ts +0 -11
  67. package/dist/commands/move-origin.js +0 -95
  68. package/dist/commands/move-origin.js.map +0 -1
  69. package/dist/commands/operator.d.ts +0 -18
  70. package/dist/commands/operator.js +0 -238
  71. package/dist/commands/operator.js.map +0 -1
  72. package/dist/commands/orgs.d.ts +0 -4
  73. package/dist/commands/orgs.js +0 -72
  74. package/dist/commands/orgs.js.map +0 -1
  75. package/dist/commands/pages.d.ts +0 -14
  76. package/dist/commands/pages.js +0 -113
  77. package/dist/commands/pages.js.map +0 -1
  78. package/dist/commands/partner-platforms.d.ts +0 -10
  79. package/dist/commands/partner-platforms.js +0 -157
  80. package/dist/commands/partner-platforms.js.map +0 -1
  81. package/dist/commands/project-commands.d.ts +0 -38
  82. package/dist/commands/project-commands.js +0 -361
  83. package/dist/commands/project-commands.js.map +0 -1
  84. package/dist/commands/referrals.d.ts +0 -69
  85. package/dist/commands/referrals.js +0 -1056
  86. package/dist/commands/referrals.js.map +0 -1
  87. package/dist/commands/resources.d.ts +0 -44
  88. package/dist/commands/resources.js +0 -234
  89. package/dist/commands/resources.js.map +0 -1
  90. package/dist/commands/sessions.d.ts +0 -4
  91. package/dist/commands/sessions.js +0 -28
  92. package/dist/commands/sessions.js.map +0 -1
  93. package/dist/commands/shared.d.ts +0 -38
  94. package/dist/commands/shared.js +0 -69
  95. package/dist/commands/shared.js.map +0 -1
  96. package/dist/commands/status.d.ts +0 -3
  97. package/dist/commands/status.js +0 -77
  98. package/dist/commands/status.js.map +0 -1
  99. package/dist/commands/users.d.ts +0 -4
  100. package/dist/commands/users.js +0 -100
  101. package/dist/commands/users.js.map +0 -1
  102. package/dist/commands/webhooks.d.ts +0 -34
  103. package/dist/commands/webhooks.js +0 -301
  104. package/dist/commands/webhooks.js.map +0 -1
  105. package/dist/config-http.d.ts +0 -29
  106. package/dist/config-http.js +0 -64
  107. package/dist/config-http.js.map +0 -1
  108. package/dist/config.d.ts +0 -64
  109. package/dist/config.js +0 -69
  110. package/dist/config.js.map +0 -1
  111. package/dist/context.d.ts +0 -72
  112. package/dist/context.js +0 -27
  113. package/dist/context.js.map +0 -1
  114. package/dist/define-config.d.ts +0 -9
  115. package/dist/define-config.js +0 -8
  116. package/dist/define-config.js.map +0 -1
  117. package/dist/errors.d.ts +0 -15
  118. package/dist/errors.js +0 -25
  119. package/dist/errors.js.map +0 -1
  120. package/dist/help.d.ts +0 -8
  121. package/dist/help.js +0 -868
  122. package/dist/help.js.map +0 -1
  123. package/dist/import/csv.d.ts +0 -6
  124. package/dist/import/csv.js +0 -63
  125. package/dist/import/csv.js.map +0 -1
  126. package/dist/import/vendors.d.ts +0 -57
  127. package/dist/import/vendors.js +0 -568
  128. package/dist/import/vendors.js.map +0 -1
  129. package/dist/index.d.ts +0 -33
  130. package/dist/index.js +0 -81
  131. package/dist/index.js.map +0 -1
  132. package/dist/io.d.ts +0 -21
  133. package/dist/io.js +0 -28
  134. package/dist/io.js.map +0 -1
  135. package/dist/migrate/appwrite/plugin.d.ts +0 -2
  136. package/dist/migrate/appwrite/plugin.js +0 -103
  137. package/dist/migrate/appwrite/plugin.js.map +0 -1
  138. package/dist/migrate/auth0/plugin.d.ts +0 -2
  139. package/dist/migrate/auth0/plugin.js +0 -126
  140. package/dist/migrate/auth0/plugin.js.map +0 -1
  141. package/dist/migrate/authentik/plugin.d.ts +0 -2
  142. package/dist/migrate/authentik/plugin.js +0 -135
  143. package/dist/migrate/authentik/plugin.js.map +0 -1
  144. package/dist/migrate/azure-ad-b2c/plugin.d.ts +0 -8
  145. package/dist/migrate/azure-ad-b2c/plugin.js +0 -165
  146. package/dist/migrate/azure-ad-b2c/plugin.js.map +0 -1
  147. package/dist/migrate/better-auth/integration.d.ts +0 -59
  148. package/dist/migrate/better-auth/integration.js +0 -81
  149. package/dist/migrate/better-auth/integration.js.map +0 -1
  150. package/dist/migrate/better-auth/orchestrator.d.ts +0 -43
  151. package/dist/migrate/better-auth/orchestrator.js +0 -525
  152. package/dist/migrate/better-auth/orchestrator.js.map +0 -1
  153. package/dist/migrate/better-auth/output.d.ts +0 -20
  154. package/dist/migrate/better-auth/output.js +0 -146
  155. package/dist/migrate/better-auth/output.js.map +0 -1
  156. package/dist/migrate/better-auth/translate.d.ts +0 -77
  157. package/dist/migrate/better-auth/translate.js +0 -1989
  158. package/dist/migrate/better-auth/translate.js.map +0 -1
  159. package/dist/migrate/clerk/plugin.d.ts +0 -2
  160. package/dist/migrate/clerk/plugin.js +0 -76
  161. package/dist/migrate/clerk/plugin.js.map +0 -1
  162. package/dist/migrate/cognito/plugin.d.ts +0 -5
  163. package/dist/migrate/cognito/plugin.js +0 -170
  164. package/dist/migrate/cognito/plugin.js.map +0 -1
  165. package/dist/migrate/corbado/plugin.d.ts +0 -2
  166. package/dist/migrate/corbado/plugin.js +0 -63
  167. package/dist/migrate/corbado/plugin.js.map +0 -1
  168. package/dist/migrate/descope/plugin.d.ts +0 -2
  169. package/dist/migrate/descope/plugin.js +0 -83
  170. package/dist/migrate/descope/plugin.js.map +0 -1
  171. package/dist/migrate/entra-external-id/plugin.d.ts +0 -8
  172. package/dist/migrate/entra-external-id/plugin.js +0 -12
  173. package/dist/migrate/entra-external-id/plugin.js.map +0 -1
  174. package/dist/migrate/export/appwrite-config.d.ts +0 -28
  175. package/dist/migrate/export/appwrite-config.js +0 -170
  176. package/dist/migrate/export/appwrite-config.js.map +0 -1
  177. package/dist/migrate/export/appwrite.d.ts +0 -51
  178. package/dist/migrate/export/appwrite.js +0 -288
  179. package/dist/migrate/export/appwrite.js.map +0 -1
  180. package/dist/migrate/export/auth0-config.d.ts +0 -29
  181. package/dist/migrate/export/auth0-config.js +0 -249
  182. package/dist/migrate/export/auth0-config.js.map +0 -1
  183. package/dist/migrate/export/auth0.d.ts +0 -62
  184. package/dist/migrate/export/auth0.js +0 -575
  185. package/dist/migrate/export/auth0.js.map +0 -1
  186. package/dist/migrate/export/authentik-config.d.ts +0 -45
  187. package/dist/migrate/export/authentik-config.js +0 -357
  188. package/dist/migrate/export/authentik-config.js.map +0 -1
  189. package/dist/migrate/export/authentik.d.ts +0 -110
  190. package/dist/migrate/export/authentik.js +0 -838
  191. package/dist/migrate/export/authentik.js.map +0 -1
  192. package/dist/migrate/export/azure-config.d.ts +0 -58
  193. package/dist/migrate/export/azure-config.js +0 -344
  194. package/dist/migrate/export/azure-config.js.map +0 -1
  195. package/dist/migrate/export/azure.d.ts +0 -85
  196. package/dist/migrate/export/azure.js +0 -373
  197. package/dist/migrate/export/azure.js.map +0 -1
  198. package/dist/migrate/export/clerk-config.d.ts +0 -26
  199. package/dist/migrate/export/clerk-config.js +0 -227
  200. package/dist/migrate/export/clerk-config.js.map +0 -1
  201. package/dist/migrate/export/clerk.d.ts +0 -46
  202. package/dist/migrate/export/clerk.js +0 -486
  203. package/dist/migrate/export/clerk.js.map +0 -1
  204. package/dist/migrate/export/cognito-config.d.ts +0 -25
  205. package/dist/migrate/export/cognito-config.js +0 -273
  206. package/dist/migrate/export/cognito-config.js.map +0 -1
  207. package/dist/migrate/export/cognito.d.ts +0 -103
  208. package/dist/migrate/export/cognito.js +0 -441
  209. package/dist/migrate/export/cognito.js.map +0 -1
  210. package/dist/migrate/export/corbado-config.d.ts +0 -20
  211. package/dist/migrate/export/corbado-config.js +0 -63
  212. package/dist/migrate/export/corbado-config.js.map +0 -1
  213. package/dist/migrate/export/corbado.d.ts +0 -37
  214. package/dist/migrate/export/corbado.js +0 -132
  215. package/dist/migrate/export/corbado.js.map +0 -1
  216. package/dist/migrate/export/descope.d.ts +0 -35
  217. package/dist/migrate/export/descope.js +0 -208
  218. package/dist/migrate/export/descope.js.map +0 -1
  219. package/dist/migrate/export/fake-vendor.test-helper.d.ts +0 -27
  220. package/dist/migrate/export/fake-vendor.test-helper.js +0 -41
  221. package/dist/migrate/export/fake-vendor.test-helper.js.map +0 -1
  222. package/dist/migrate/export/firebase-config.d.ts +0 -24
  223. package/dist/migrate/export/firebase-config.js +0 -215
  224. package/dist/migrate/export/firebase-config.js.map +0 -1
  225. package/dist/migrate/export/firebase.d.ts +0 -102
  226. package/dist/migrate/export/firebase.js +0 -464
  227. package/dist/migrate/export/firebase.js.map +0 -1
  228. package/dist/migrate/export/frameworks/app-users.d.ts +0 -42
  229. package/dist/migrate/export/frameworks/app-users.js +0 -161
  230. package/dist/migrate/export/frameworks/app-users.js.map +0 -1
  231. package/dist/migrate/export/frameworks/authjs.d.ts +0 -41
  232. package/dist/migrate/export/frameworks/authjs.js +0 -146
  233. package/dist/migrate/export/frameworks/authjs.js.map +0 -1
  234. package/dist/migrate/export/frameworks/devise.d.ts +0 -39
  235. package/dist/migrate/export/frameworks/devise.js +0 -218
  236. package/dist/migrate/export/frameworks/devise.js.map +0 -1
  237. package/dist/migrate/export/frameworks/django.d.ts +0 -45
  238. package/dist/migrate/export/frameworks/django.js +0 -315
  239. package/dist/migrate/export/frameworks/django.js.map +0 -1
  240. package/dist/migrate/export/frameworks/lucia.d.ts +0 -42
  241. package/dist/migrate/export/frameworks/lucia.js +0 -263
  242. package/dist/migrate/export/frameworks/lucia.js.map +0 -1
  243. package/dist/migrate/export/frameworks/tables.d.ts +0 -90
  244. package/dist/migrate/export/frameworks/tables.js +0 -325
  245. package/dist/migrate/export/frameworks/tables.js.map +0 -1
  246. package/dist/migrate/export/frameworks/webauthn.d.ts +0 -25
  247. package/dist/migrate/export/frameworks/webauthn.js +0 -130
  248. package/dist/migrate/export/frameworks/webauthn.js.map +0 -1
  249. package/dist/migrate/export/frontegg-config.d.ts +0 -29
  250. package/dist/migrate/export/frontegg-config.js +0 -238
  251. package/dist/migrate/export/frontegg-config.js.map +0 -1
  252. package/dist/migrate/export/frontegg.d.ts +0 -67
  253. package/dist/migrate/export/frontegg.js +0 -410
  254. package/dist/migrate/export/frontegg.js.map +0 -1
  255. package/dist/migrate/export/fusionauth-config.d.ts +0 -26
  256. package/dist/migrate/export/fusionauth-config.js +0 -226
  257. package/dist/migrate/export/fusionauth-config.js.map +0 -1
  258. package/dist/migrate/export/fusionauth.d.ts +0 -99
  259. package/dist/migrate/export/fusionauth.js +0 -642
  260. package/dist/migrate/export/fusionauth.js.map +0 -1
  261. package/dist/migrate/export/hanko-config.d.ts +0 -27
  262. package/dist/migrate/export/hanko-config.js +0 -265
  263. package/dist/migrate/export/hanko-config.js.map +0 -1
  264. package/dist/migrate/export/hanko.d.ts +0 -52
  265. package/dist/migrate/export/hanko.js +0 -605
  266. package/dist/migrate/export/hanko.js.map +0 -1
  267. package/dist/migrate/export/keycloak-config.d.ts +0 -19
  268. package/dist/migrate/export/keycloak-config.js +0 -219
  269. package/dist/migrate/export/keycloak-config.js.map +0 -1
  270. package/dist/migrate/export/keycloak.d.ts +0 -155
  271. package/dist/migrate/export/keycloak.js +0 -878
  272. package/dist/migrate/export/keycloak.js.map +0 -1
  273. package/dist/migrate/export/kinde-descope-config.d.ts +0 -38
  274. package/dist/migrate/export/kinde-descope-config.js +0 -172
  275. package/dist/migrate/export/kinde-descope-config.js.map +0 -1
  276. package/dist/migrate/export/kinde.d.ts +0 -57
  277. package/dist/migrate/export/kinde.js +0 -333
  278. package/dist/migrate/export/kinde.js.map +0 -1
  279. package/dist/migrate/export/ldap.d.ts +0 -53
  280. package/dist/migrate/export/ldap.js +0 -277
  281. package/dist/migrate/export/ldap.js.map +0 -1
  282. package/dist/migrate/export/logto-config.d.ts +0 -27
  283. package/dist/migrate/export/logto-config.js +0 -264
  284. package/dist/migrate/export/logto-config.js.map +0 -1
  285. package/dist/migrate/export/logto.d.ts +0 -150
  286. package/dist/migrate/export/logto.js +0 -809
  287. package/dist/migrate/export/logto.js.map +0 -1
  288. package/dist/migrate/export/magic-config.d.ts +0 -14
  289. package/dist/migrate/export/magic-config.js +0 -28
  290. package/dist/migrate/export/magic-config.js.map +0 -1
  291. package/dist/migrate/export/magic.d.ts +0 -31
  292. package/dist/migrate/export/magic.js +0 -93
  293. package/dist/migrate/export/magic.js.map +0 -1
  294. package/dist/migrate/export/mini-yaml.d.ts +0 -19
  295. package/dist/migrate/export/mini-yaml.js +0 -581
  296. package/dist/migrate/export/mini-yaml.js.map +0 -1
  297. package/dist/migrate/export/nhost-config.d.ts +0 -26
  298. package/dist/migrate/export/nhost-config.js +0 -360
  299. package/dist/migrate/export/nhost-config.js.map +0 -1
  300. package/dist/migrate/export/nhost.d.ts +0 -64
  301. package/dist/migrate/export/nhost.js +0 -304
  302. package/dist/migrate/export/nhost.js.map +0 -1
  303. package/dist/migrate/export/okta-config.d.ts +0 -30
  304. package/dist/migrate/export/okta-config.js +0 -205
  305. package/dist/migrate/export/okta-config.js.map +0 -1
  306. package/dist/migrate/export/okta.d.ts +0 -43
  307. package/dist/migrate/export/okta.js +0 -337
  308. package/dist/migrate/export/okta.js.map +0 -1
  309. package/dist/migrate/export/onelogin.d.ts +0 -22
  310. package/dist/migrate/export/onelogin.js +0 -123
  311. package/dist/migrate/export/onelogin.js.map +0 -1
  312. package/dist/migrate/export/ory-config.d.ts +0 -58
  313. package/dist/migrate/export/ory-config.js +0 -451
  314. package/dist/migrate/export/ory-config.js.map +0 -1
  315. package/dist/migrate/export/ory.d.ts +0 -81
  316. package/dist/migrate/export/ory.js +0 -555
  317. package/dist/migrate/export/ory.js.map +0 -1
  318. package/dist/migrate/export/password-detect.d.ts +0 -29
  319. package/dist/migrate/export/password-detect.js +0 -81
  320. package/dist/migrate/export/password-detect.js.map +0 -1
  321. package/dist/migrate/export/pingone.d.ts +0 -36
  322. package/dist/migrate/export/pingone.js +0 -218
  323. package/dist/migrate/export/pingone.js.map +0 -1
  324. package/dist/migrate/export/plugin-kit.d.ts +0 -25
  325. package/dist/migrate/export/plugin-kit.js +0 -82
  326. package/dist/migrate/export/plugin-kit.js.map +0 -1
  327. package/dist/migrate/export/pocketbase-config.d.ts +0 -28
  328. package/dist/migrate/export/pocketbase-config.js +0 -180
  329. package/dist/migrate/export/pocketbase-config.js.map +0 -1
  330. package/dist/migrate/export/pocketbase.d.ts +0 -52
  331. package/dist/migrate/export/pocketbase.js +0 -243
  332. package/dist/migrate/export/pocketbase.js.map +0 -1
  333. package/dist/migrate/export/project-files.d.ts +0 -15
  334. package/dist/migrate/export/project-files.js +0 -43
  335. package/dist/migrate/export/project-files.js.map +0 -1
  336. package/dist/migrate/export/propelauth-config.d.ts +0 -18
  337. package/dist/migrate/export/propelauth-config.js +0 -58
  338. package/dist/migrate/export/propelauth-config.js.map +0 -1
  339. package/dist/migrate/export/propelauth-harness.test-helper.d.ts +0 -62
  340. package/dist/migrate/export/propelauth-harness.test-helper.js +0 -109
  341. package/dist/migrate/export/propelauth-harness.test-helper.js.map +0 -1
  342. package/dist/migrate/export/propelauth.d.ts +0 -48
  343. package/dist/migrate/export/propelauth.js +0 -255
  344. package/dist/migrate/export/propelauth.js.map +0 -1
  345. package/dist/migrate/export/record-set.d.ts +0 -44
  346. package/dist/migrate/export/record-set.js +0 -98
  347. package/dist/migrate/export/record-set.js.map +0 -1
  348. package/dist/migrate/export/source-lines.d.ts +0 -17
  349. package/dist/migrate/export/source-lines.js +0 -43
  350. package/dist/migrate/export/source-lines.js.map +0 -1
  351. package/dist/migrate/export/sso-metadata.d.ts +0 -47
  352. package/dist/migrate/export/sso-metadata.js +0 -180
  353. package/dist/migrate/export/sso-metadata.js.map +0 -1
  354. package/dist/migrate/export/stytch-config.d.ts +0 -22
  355. package/dist/migrate/export/stytch-config.js +0 -102
  356. package/dist/migrate/export/stytch-config.js.map +0 -1
  357. package/dist/migrate/export/stytch.d.ts +0 -68
  358. package/dist/migrate/export/stytch.js +0 -510
  359. package/dist/migrate/export/stytch.js.map +0 -1
  360. package/dist/migrate/export/supabase-config.d.ts +0 -48
  361. package/dist/migrate/export/supabase-config.js +0 -408
  362. package/dist/migrate/export/supabase-config.js.map +0 -1
  363. package/dist/migrate/export/supabase.d.ts +0 -86
  364. package/dist/migrate/export/supabase.js +0 -524
  365. package/dist/migrate/export/supabase.js.map +0 -1
  366. package/dist/migrate/export/supertokens-config.d.ts +0 -20
  367. package/dist/migrate/export/supertokens-config.js +0 -150
  368. package/dist/migrate/export/supertokens-config.js.map +0 -1
  369. package/dist/migrate/export/supertokens.d.ts +0 -125
  370. package/dist/migrate/export/supertokens.js +0 -464
  371. package/dist/migrate/export/supertokens.js.map +0 -1
  372. package/dist/migrate/export/table.d.ts +0 -35
  373. package/dist/migrate/export/table.js +0 -248
  374. package/dist/migrate/export/table.js.map +0 -1
  375. package/dist/migrate/export/translate-kit.d.ts +0 -46
  376. package/dist/migrate/export/translate-kit.js +0 -148
  377. package/dist/migrate/export/translate-kit.js.map +0 -1
  378. package/dist/migrate/export/userfront-config.d.ts +0 -15
  379. package/dist/migrate/export/userfront-config.js +0 -49
  380. package/dist/migrate/export/userfront-config.js.map +0 -1
  381. package/dist/migrate/export/userfront.d.ts +0 -38
  382. package/dist/migrate/export/userfront.js +0 -189
  383. package/dist/migrate/export/userfront.js.map +0 -1
  384. package/dist/migrate/export/vendor-http.d.ts +0 -46
  385. package/dist/migrate/export/vendor-http.js +0 -138
  386. package/dist/migrate/export/vendor-http.js.map +0 -1
  387. package/dist/migrate/export/workos-config.d.ts +0 -23
  388. package/dist/migrate/export/workos-config.js +0 -125
  389. package/dist/migrate/export/workos-config.js.map +0 -1
  390. package/dist/migrate/export/workos.d.ts +0 -46
  391. package/dist/migrate/export/workos.js +0 -272
  392. package/dist/migrate/export/workos.js.map +0 -1
  393. package/dist/migrate/export/zip.d.ts +0 -8
  394. package/dist/migrate/export/zip.js +0 -66
  395. package/dist/migrate/export/zip.js.map +0 -1
  396. package/dist/migrate/export/zitadel-config.d.ts +0 -37
  397. package/dist/migrate/export/zitadel-config.js +0 -279
  398. package/dist/migrate/export/zitadel-config.js.map +0 -1
  399. package/dist/migrate/export/zitadel.d.ts +0 -82
  400. package/dist/migrate/export/zitadel.js +0 -447
  401. package/dist/migrate/export/zitadel.js.map +0 -1
  402. package/dist/migrate/firebase/plugin.d.ts +0 -2
  403. package/dist/migrate/firebase/plugin.js +0 -152
  404. package/dist/migrate/firebase/plugin.js.map +0 -1
  405. package/dist/migrate/framework/builtins.d.ts +0 -2
  406. package/dist/migrate/framework/builtins.js +0 -52
  407. package/dist/migrate/framework/builtins.js.map +0 -1
  408. package/dist/migrate/framework/commands.d.ts +0 -20
  409. package/dist/migrate/framework/commands.js +0 -58
  410. package/dist/migrate/framework/commands.js.map +0 -1
  411. package/dist/migrate/framework/custom.d.ts +0 -12
  412. package/dist/migrate/framework/custom.js +0 -96
  413. package/dist/migrate/framework/custom.js.map +0 -1
  414. package/dist/migrate/framework/orchestrator.d.ts +0 -113
  415. package/dist/migrate/framework/orchestrator.js +0 -532
  416. package/dist/migrate/framework/orchestrator.js.map +0 -1
  417. package/dist/migrate/framework/plugin.d.ts +0 -167
  418. package/dist/migrate/framework/plugin.js +0 -3
  419. package/dist/migrate/framework/plugin.js.map +0 -1
  420. package/dist/migrate/framework/registry.d.ts +0 -11
  421. package/dist/migrate/framework/registry.js +0 -44
  422. package/dist/migrate/framework/registry.js.map +0 -1
  423. package/dist/migrate/framework/report.d.ts +0 -17
  424. package/dist/migrate/framework/report.js +0 -103
  425. package/dist/migrate/framework/report.js.map +0 -1
  426. package/dist/migrate/frameworks/plugins.d.ts +0 -29
  427. package/dist/migrate/frameworks/plugins.js +0 -402
  428. package/dist/migrate/frameworks/plugins.js.map +0 -1
  429. package/dist/migrate/frameworks/report.d.ts +0 -92
  430. package/dist/migrate/frameworks/report.js +0 -207
  431. package/dist/migrate/frameworks/report.js.map +0 -1
  432. package/dist/migrate/frameworks/translate-js.d.ts +0 -5
  433. package/dist/migrate/frameworks/translate-js.js +0 -503
  434. package/dist/migrate/frameworks/translate-js.js.map +0 -1
  435. package/dist/migrate/frameworks/translate-rails-django.d.ts +0 -3
  436. package/dist/migrate/frameworks/translate-rails-django.js +0 -1391
  437. package/dist/migrate/frameworks/translate-rails-django.js.map +0 -1
  438. package/dist/migrate/frontegg/plugin.d.ts +0 -2
  439. package/dist/migrate/frontegg/plugin.js +0 -78
  440. package/dist/migrate/frontegg/plugin.js.map +0 -1
  441. package/dist/migrate/fusionauth/plugin.d.ts +0 -2
  442. package/dist/migrate/fusionauth/plugin.js +0 -109
  443. package/dist/migrate/fusionauth/plugin.js.map +0 -1
  444. package/dist/migrate/hanko/plugin.d.ts +0 -2
  445. package/dist/migrate/hanko/plugin.js +0 -100
  446. package/dist/migrate/hanko/plugin.js.map +0 -1
  447. package/dist/migrate/keycloak/plugin.d.ts +0 -2
  448. package/dist/migrate/keycloak/plugin.js +0 -148
  449. package/dist/migrate/keycloak/plugin.js.map +0 -1
  450. package/dist/migrate/kinde/plugin.d.ts +0 -2
  451. package/dist/migrate/kinde/plugin.js +0 -105
  452. package/dist/migrate/kinde/plugin.js.map +0 -1
  453. package/dist/migrate/ldap/plugin.d.ts +0 -2
  454. package/dist/migrate/ldap/plugin.js +0 -73
  455. package/dist/migrate/ldap/plugin.js.map +0 -1
  456. package/dist/migrate/logto/plugin.d.ts +0 -2
  457. package/dist/migrate/logto/plugin.js +0 -131
  458. package/dist/migrate/logto/plugin.js.map +0 -1
  459. package/dist/migrate/magic/plugin.d.ts +0 -2
  460. package/dist/migrate/magic/plugin.js +0 -56
  461. package/dist/migrate/magic/plugin.js.map +0 -1
  462. package/dist/migrate/nhost/plugin.d.ts +0 -2
  463. package/dist/migrate/nhost/plugin.js +0 -115
  464. package/dist/migrate/nhost/plugin.js.map +0 -1
  465. package/dist/migrate/oidc/plugin.d.ts +0 -2
  466. package/dist/migrate/oidc/plugin.js +0 -73
  467. package/dist/migrate/oidc/plugin.js.map +0 -1
  468. package/dist/migrate/okta/plugin.d.ts +0 -2
  469. package/dist/migrate/okta/plugin.js +0 -105
  470. package/dist/migrate/okta/plugin.js.map +0 -1
  471. package/dist/migrate/onelogin/plugin.d.ts +0 -2
  472. package/dist/migrate/onelogin/plugin.js +0 -61
  473. package/dist/migrate/onelogin/plugin.js.map +0 -1
  474. package/dist/migrate/ory/plugin.d.ts +0 -2
  475. package/dist/migrate/ory/plugin.js +0 -186
  476. package/dist/migrate/ory/plugin.js.map +0 -1
  477. package/dist/migrate/ping-identity/plugin.d.ts +0 -2
  478. package/dist/migrate/ping-identity/plugin.js +0 -100
  479. package/dist/migrate/ping-identity/plugin.js.map +0 -1
  480. package/dist/migrate/pocketbase/plugin.d.ts +0 -2
  481. package/dist/migrate/pocketbase/plugin.js +0 -99
  482. package/dist/migrate/pocketbase/plugin.js.map +0 -1
  483. package/dist/migrate/propelauth/plugin.d.ts +0 -2
  484. package/dist/migrate/propelauth/plugin.js +0 -65
  485. package/dist/migrate/propelauth/plugin.js.map +0 -1
  486. package/dist/migrate/saml/plugin.d.ts +0 -2
  487. package/dist/migrate/saml/plugin.js +0 -79
  488. package/dist/migrate/saml/plugin.js.map +0 -1
  489. package/dist/migrate/stytch/plugin.d.ts +0 -2
  490. package/dist/migrate/stytch/plugin.js +0 -97
  491. package/dist/migrate/stytch/plugin.js.map +0 -1
  492. package/dist/migrate/supabase/plugin.d.ts +0 -2
  493. package/dist/migrate/supabase/plugin.js +0 -149
  494. package/dist/migrate/supabase/plugin.js.map +0 -1
  495. package/dist/migrate/supertokens/plugin.d.ts +0 -2
  496. package/dist/migrate/supertokens/plugin.js +0 -114
  497. package/dist/migrate/supertokens/plugin.js.map +0 -1
  498. package/dist/migrate/user-table/plugin.d.ts +0 -2
  499. package/dist/migrate/user-table/plugin.js +0 -62
  500. package/dist/migrate/user-table/plugin.js.map +0 -1
  501. package/dist/migrate/userfront/plugin.d.ts +0 -2
  502. package/dist/migrate/userfront/plugin.js +0 -60
  503. package/dist/migrate/userfront/plugin.js.map +0 -1
  504. package/dist/migrate/workos/plugin.d.ts +0 -2
  505. package/dist/migrate/workos/plugin.js +0 -81
  506. package/dist/migrate/workos/plugin.js.map +0 -1
  507. package/dist/migrate/zitadel/plugin.d.ts +0 -2
  508. package/dist/migrate/zitadel/plugin.js +0 -114
  509. package/dist/migrate/zitadel/plugin.js.map +0 -1
  510. package/dist/output.d.ts +0 -41
  511. package/dist/output.js +0 -72
  512. package/dist/output.js.map +0 -1
  513. package/dist/project.d.ts +0 -64
  514. package/dist/project.js +0 -86
  515. package/dist/project.js.map +0 -1
  516. package/dist/prompt.d.ts +0 -15
  517. package/dist/prompt.js +0 -46
  518. package/dist/prompt.js.map +0 -1
  519. package/dist/run.d.ts +0 -12
  520. package/dist/run.js +0 -157
  521. package/dist/run.js.map +0 -1
  522. package/dist/secrets.d.ts +0 -41
  523. package/dist/secrets.js +0 -142
  524. package/dist/secrets.js.map +0 -1
  525. package/dist/serialize.d.ts +0 -30
  526. package/dist/serialize.js +0 -131
  527. package/dist/serialize.js.map +0 -1
  528. package/dist/version.d.ts +0 -7
  529. package/dist/version.js +0 -21
  530. package/dist/version.js.map +0 -1
@@ -1,218 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEVISE_EXPORT_SCRIPT = void 0;
4
- exports.exportDevise = exportDevise;
5
- const tables_1 = require("./tables");
6
- function exportDevise(tables, options = {}) {
7
- const out = new tables_1.FrameworkExport();
8
- const now = (options.now ?? new Date()).getTime();
9
- const config = tables.rows('devise_config')[0] ?? {};
10
- const pepper = (0, tables_1.text)(config.pepper);
11
- const modules = new Set(String(config.modules ?? '').split(/[\s,]+/).filter(Boolean));
12
- const confirmable = modules.size ? modules.has('confirmable') : undefined;
13
- out.manifest.sourceVersion = (0, tables_1.text)(config.devise_version) ? `devise ${(0, tables_1.text)(config.devise_version)}` : 'devise';
14
- if (pepper)
15
- out.manifest.settings = { pepper_set: true };
16
- const users = tables.find(...(options.usersTable ? [options.usersTable] : ['users', 'user', 'accounts', 'admins']));
17
- if (!users) {
18
- out.warn('No users rows found (run the Rails export script with your Devise model).');
19
- return out;
20
- }
21
- const ids = new Set();
22
- const providers = new Set();
23
- let encryptable = 0;
24
- let mfa = 0;
25
- for (const row of users.rows) {
26
- const id = (0, tables_1.text)((0, tables_1.col)(row, 'id'));
27
- const email = (0, tables_1.text)((0, tables_1.col)(row, 'email'))?.toLowerCase();
28
- if (!id || !email) {
29
- out.omit('user', 'row without an id or email');
30
- continue;
31
- }
32
- const encrypted = (0, tables_1.text)((0, tables_1.col)(row, 'encrypted_password'));
33
- let password;
34
- if (encrypted && /^\$2[aby]\$\d{2}\$[./A-Za-z0-9]{53}$/.test(encrypted)) {
35
- password = pepper ? { algorithm: 'bcrypt_pepper', hash: encrypted, params: { pepper } } : { algorithm: 'bcrypt', hash: encrypted };
36
- }
37
- else if (encrypted)
38
- encryptable++;
39
- const confirmedAt = (0, tables_1.col)(row, 'confirmed_at');
40
- const verified = confirmable === false || (confirmable === undefined && !('confirmed_at' in row))
41
- ? options.trustUnconfirmable === true
42
- : Boolean(confirmedAt);
43
- const name = (0, tables_1.text)((0, tables_1.col)(row, 'name', 'full_name'));
44
- const roles = new Set();
45
- if ((0, tables_1.bool)((0, tables_1.col)(row, 'admin', 'is_admin')))
46
- roles.add('admin');
47
- const role = (0, tables_1.text)((0, tables_1.col)(row, 'role'));
48
- if (role)
49
- roles.add(role);
50
- ids.add(id);
51
- out.add('user', {
52
- id,
53
- emails: [{ email, verified, primary: true }],
54
- username: (0, tables_1.text)((0, tables_1.col)(row, 'username')),
55
- name,
56
- first_name: (0, tables_1.text)((0, tables_1.col)(row, 'first_name')) ?? (0, tables_1.splitName)(name).first_name,
57
- last_name: (0, tables_1.text)((0, tables_1.col)(row, 'last_name')) ?? (0, tables_1.splitName)(name).last_name,
58
- password,
59
- locked: Boolean((0, tables_1.col)(row, 'locked_at')) || undefined,
60
- roles: roles.size ? [...roles] : undefined,
61
- created_at: (0, tables_1.time)((0, tables_1.col)(row, 'created_at')),
62
- last_sign_in_at: (0, tables_1.time)((0, tables_1.col)(row, 'current_sign_in_at', 'last_sign_in_at')),
63
- private_metadata: (0, tables_1.text)((0, tables_1.col)(row, 'unconfirmed_email')) ? { unconfirmed_email: (0, tables_1.text)((0, tables_1.col)(row, 'unconfirmed_email')) } : undefined,
64
- });
65
- // omniauth's single-provider convention: provider + uid columns on the user.
66
- const provider = (0, tables_1.text)((0, tables_1.col)(row, 'provider'));
67
- const uid = (0, tables_1.text)((0, tables_1.col)(row, 'uid'));
68
- if (provider && uid && provider !== 'email') {
69
- providers.add(provider);
70
- out.add('identity', { user_id: id, provider, provider_user_id: uid, kind: 'oauth' });
71
- }
72
- // devise-two-factor.
73
- const secret = (0, tables_1.text)((0, tables_1.col)(row, 'otp_secret'));
74
- if (secret && ((0, tables_1.bool)((0, tables_1.col)(row, 'otp_required_for_login')) || !('otp_required_for_login' in row))) {
75
- mfa++;
76
- out.add('mfa_factor', { user_id: id, type: 'totp', secret_base32: secret.toUpperCase(), digits: 6, period: 30, algorithm: 'SHA1', verified: true });
77
- const codes = backupCodes((0, tables_1.col)(row, 'otp_backup_codes'));
78
- if (codes.length) {
79
- out.add('mfa_factor', {
80
- user_id: id,
81
- type: 'backup_codes',
82
- backup_code_hashes: codes.map((hash) => pepper ? { algorithm: 'bcrypt_pepper', hash, params: { pepper } } : { algorithm: 'bcrypt', hash }),
83
- });
84
- }
85
- }
86
- }
87
- if (encryptable)
88
- out.warn(`${encryptable} encrypted_password value(s) are not bcrypt (devise-encryptable): those users reset their password or migrate lazily.`);
89
- if (mfa)
90
- out.warn(`${mfa} devise-two-factor TOTP secret(s) carried over; authenticator apps keep working.`);
91
- for (const row of tables.rows('identities', 'authentications', 'user_identities', 'omniauth_identities')) {
92
- const userId = (0, tables_1.text)((0, tables_1.col)(row, 'user_id'));
93
- const provider = (0, tables_1.text)((0, tables_1.col)(row, 'provider'));
94
- const uid = (0, tables_1.text)((0, tables_1.col)(row, 'uid', 'provider_uid'));
95
- if (!userId || !provider || !uid || !ids.has(userId)) {
96
- out.omit('identity', 'identity row without a known user, provider or uid');
97
- continue;
98
- }
99
- providers.add(provider);
100
- out.add('identity', { user_id: userId, provider, provider_user_id: uid, kind: 'oauth', email: (0, tables_1.text)((0, tables_1.col)(row, 'email')) });
101
- }
102
- out.manifest.providers = [...providers].sort();
103
- // rolify: roles(id, name, resource_type, resource_id) + users_roles(user_id, role_id). Global roles only.
104
- const roleNames = new Map();
105
- for (const r of tables.rows('roles')) {
106
- const rid = (0, tables_1.text)((0, tables_1.col)(r, 'id'));
107
- const name = (0, tables_1.text)((0, tables_1.col)(r, 'name'));
108
- if (rid && name && !(0, tables_1.text)((0, tables_1.col)(r, 'resource_type')))
109
- roleNames.set(rid, name);
110
- }
111
- if (roleNames.size) {
112
- for (const name of new Set(roleNames.values()))
113
- out.add('role', { key: name, name, scope: 'app' });
114
- const extra = new Map();
115
- for (const ur of tables.rows('users_roles')) {
116
- const uid = (0, tables_1.text)((0, tables_1.col)(ur, 'user_id'));
117
- const name = roleNames.get((0, tables_1.text)((0, tables_1.col)(ur, 'role_id')) ?? '');
118
- if (!uid || !name || !ids.has(uid))
119
- continue;
120
- const set = extra.get(uid) ?? new Set();
121
- set.add(name);
122
- extra.set(uid, set);
123
- }
124
- for (const user of out.list('user')) {
125
- const more = extra.get(user.id);
126
- if (more)
127
- user.roles = [...new Set([...(user.roles ?? []), ...more])];
128
- }
129
- const scoped = tables.rows('roles').length - roleNames.size;
130
- if (scoped > 0)
131
- out.warn(`${scoped} rolify role(s) scoped to a resource were not carried: model them as Atlas organization roles or permissions.`);
132
- }
133
- // activerecord-session_store rows, as the export script decoded them.
134
- if (options.sessions !== false) {
135
- for (const row of tables.rows('sessions')) {
136
- const raw = (0, tables_1.text)((0, tables_1.col)(row, 'session_id'));
137
- const userId = (0, tables_1.text)((0, tables_1.col)(row, 'user_id'));
138
- const updated = (0, tables_1.timeMs)((0, tables_1.col)(row, 'expires_at')) ?? ((0, tables_1.timeMs)((0, tables_1.col)(row, 'updated_at')) !== undefined ? (0, tables_1.timeMs)((0, tables_1.col)(row, 'updated_at')) + Number(config.session_ttl_seconds ?? 1209600) * 1000 : undefined);
139
- if (!raw || !userId || !ids.has(userId) || updated === undefined) {
140
- out.omit('session', 'session row without an id, a known user or an expiry');
141
- continue;
142
- }
143
- if (updated <= now) {
144
- out.omit('session', 'expired');
145
- continue;
146
- }
147
- // Rack stores the PRIVATE id `2::<sha256 hex of the cookie's public id>`.
148
- const tokenHash = /^2::[0-9a-f]{64}$/.test(raw) ? raw.slice(3) : (0, tables_1.sha256Hex)(raw);
149
- out.add('session', { id: tokenHash.slice(0, 32), user_id: userId, token_hash: tokenHash, expires_at: new Date(updated).toISOString() });
150
- }
151
- }
152
- out.manifest.settings = {
153
- ...(out.manifest.settings ?? {}),
154
- session_store: (0, tables_1.text)(config.session_store) ?? 'cookie_store',
155
- session_cookie: (0, tables_1.text)(config.session_key) ?? null,
156
- };
157
- return out;
158
- }
159
- function backupCodes(v) {
160
- const list = Array.isArray(v) ? v : typeof v === 'string' ? (v.trim().startsWith('[') ? JSON.parse(v) : v.replace(/^\{|\}$/g, '').split(',')) : [];
161
- return list
162
- .map((c) => String(c).replace(/^"|"$/g, '').trim())
163
- .filter((c) => /^\$2[aby]\$\d{2}\$[./A-Za-z0-9]{53}$/.test(c));
164
- }
165
- /**
166
- * The Rails runner script that streams a Devise app's rows as NDJSON
167
- * (`{"table": …, "row": {…}}`), straight into `atlas migrate export devise
168
- * --file -`, so decrypted secrets only ever travel through the pipe:
169
- *
170
- * bin/rails runner atlas_export.rb | npx atlas migrate devise export --file -
171
- */
172
- exports.DEVISE_EXPORT_SCRIPT = `# Atlas export for a Devise app. Run: bin/rails runner atlas_export.rb [ModelName]
173
- require "json"
174
-
175
- model = (ARGV[0] || "User").constantize
176
- emit = ->(table, row) { $stdout.puts({ table: table, row: row }.to_json) }
177
-
178
- session_key = Rails.application.config.session_options[:key] rescue nil
179
- emit.call("devise_config", {
180
- devise_version: Devise::VERSION,
181
- pepper: Devise.pepper,
182
- stretches: Devise.stretches,
183
- modules: model.devise_modules.join(","),
184
- session_store: Rails.application.config.session_store.to_s.demodulize.underscore,
185
- session_key: session_key,
186
- session_ttl_seconds: (Rails.application.config.session_options[:expire_after] || 1209600).to_i,
187
- })
188
-
189
- attrs = model.column_names - %w[encrypted_otp_secret encrypted_otp_secret_iv encrypted_otp_secret_salt]
190
- model.find_each(batch_size: 1000) do |u|
191
- row = attrs.index_with { |c| u.read_attribute(c) }
192
- # devise-two-factor: read the secret through the model so Rails decrypts it.
193
- row["otp_secret"] = u.otp_secret if u.respond_to?(:otp_secret)
194
- emit.call(model.table_name, row)
195
- end
196
-
197
- %w[Identity Authentication].each do |name|
198
- next unless Object.const_defined?(name)
199
- klass = name.constantize
200
- next unless klass < ActiveRecord::Base
201
- klass.find_each { |i| emit.call(klass.table_name, i.attributes.slice("user_id", "provider", "uid", "email")) }
202
- end
203
-
204
- if Object.const_defined?(:Role) && ActiveRecord::Base.connection.table_exists?("users_roles")
205
- Role.find_each { |r| emit.call("roles", r.attributes.slice("id", "name", "resource_type", "resource_id")) }
206
- ActiveRecord::Base.connection.select_all("SELECT user_id, role_id FROM users_roles").each { |r| emit.call("users_roles", r) }
207
- end
208
-
209
- if defined?(ActiveRecord::SessionStore::Session)
210
- scope = "warden.user.#{Devise::Mapping.find_scope!(model)}.key"
211
- ActiveRecord::SessionStore::Session.find_each do |s|
212
- entry = s.data[scope] rescue nil
213
- next unless entry
214
- emit.call("sessions", { session_id: s.session_id, user_id: Array(entry[0]).first, updated_at: s.updated_at })
215
- end
216
- end
217
- `;
218
- //# sourceMappingURL=devise.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"devise.js","sourceRoot":"","sources":["../../../../src/migrate/export/frameworks/devise.ts"],"names":[],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- import { FrameworkExport, type Row, type Tables } from './tables';
2
- /**
3
- * Django (django.contrib.auth, django-allauth) → canonical records, from
4
- * `manage.py dumpdata` JSON (`[{ "model", "pk", "fields" }]`) — or the export
5
- * script ({@link DJANGO_EXPORT_SCRIPT}), which runs the same dump inside the
6
- * app and adds what only the app's own code can produce: allauth TOTP secrets
7
- * through the MFA adapter's `decrypt`, and the unused recovery codes.
8
- *
9
- * auth.user (or your AUTH_USER_MODEL) → user: the `password` column verbatim
10
- * (pbkdf2_sha256 / argon2 / bcrypt_sha256 / scrypt / legacy md5+sha1 —
11
- * every Django hasher Atlas verifies); `!`-prefixed unusable passwords are
12
- * dropped; is_active=false → banned; is_staff / is_superuser and groups →
13
- * app roles
14
- * account.emailaddress → every address with its verified / primary flags
15
- * socialaccount.socialaccount (+ socialtoken) → identity
16
- * mfa.authenticator → totp, recovery codes (script), WebAuthn passkeys
17
- * sessions.session (database backend) → session (sha256 of the session key)
18
- */
19
- export interface DjangoExportOptions {
20
- /** `app_label.model` of AUTH_USER_MODEL (detected: a model with a `password` field and `username` or `email`). */
21
- userModel?: string;
22
- /** The WebAuthn RP id allauth registered passkeys against. */
23
- rpId?: string;
24
- oauthTokens?: boolean;
25
- sessions?: boolean;
26
- /** Treat users.email as verified when allauth is absent. Default false. */
27
- trustEmails?: boolean;
28
- now?: Date;
29
- }
30
- export declare function exportDjango(tables: Tables, options?: DjangoExportOptions): FrameworkExport;
31
- /**
32
- * Decode `django_session.session_data` without the SECRET_KEY (the rows come
33
- * from the app's own database): Django ≥ 3.1 `signing.dumps` (`payload:ts:sig`,
34
- * payload zlib-compressed when it starts with `.`), and the pre-3.1 form,
35
- * base64(`<hash>:<json>`).
36
- */
37
- export declare function decodeSessionData(raw: string): Row | null;
38
- /**
39
- * The export script, run inside the Django app so allauth's own code decrypts
40
- * TOTP secrets and lists the unused recovery codes; it streams NDJSON straight
41
- * into the CLI:
42
- *
43
- * python manage.py shell < atlas_export.py | npx atlas migrate django export --file -
44
- */
45
- export declare const DJANGO_EXPORT_SCRIPT = "# Atlas export for a Django app (django.contrib.auth + django-allauth).\nimport io, json, sys\nfrom django.apps import apps\nfrom django.conf import settings\nfrom django.core.management import call_command\n\ndef emit(table, row):\n sys.stdout.write(json.dumps({\"table\": table, \"row\": row}, default=str) + \"\\n\")\n\nlabels = [settings.AUTH_USER_MODEL, \"auth.group\", \"auth.permission\"]\nfor label in [\"account.emailaddress\", \"socialaccount.socialaccount\", \"socialaccount.socialtoken\", \"mfa.authenticator\", \"sessions.session\"]:\n try:\n apps.get_model(label)\n labels.append(label)\n except (LookupError, ValueError):\n pass\n\nbuf = io.StringIO()\ncall_command(\"dumpdata\", *labels, format=\"json\", stdout=buf)\nfor obj in json.loads(buf.getvalue()):\n emit(\"dumpdata\", obj)\n\ntry:\n from allauth.mfa.models import Authenticator\n from allauth.mfa.adapter import get_adapter\nexcept ImportError:\n Authenticator = None\n\nif Authenticator is not None:\n try:\n from allauth.mfa.recovery_codes.internal.auth import RecoveryCodes\n except ImportError:\n try:\n from allauth.mfa.recovery_codes import RecoveryCodes\n except ImportError:\n RecoveryCodes = None\n adapter = get_adapter()\n for a in Authenticator.objects.all():\n if a.type == \"totp\":\n emit(\"mfa_secrets\", {\"authenticator_id\": a.pk, \"secret\": adapter.decrypt(a.data[\"secret\"])})\n elif a.type == \"recovery_codes\" and RecoveryCodes is not None:\n emit(\"mfa_secrets\", {\"authenticator_id\": a.pk, \"codes\": RecoveryCodes(a).get_unused_codes()})\n";
@@ -1,315 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DJANGO_EXPORT_SCRIPT = void 0;
4
- exports.exportDjango = exportDjango;
5
- exports.decodeSessionData = decodeSessionData;
6
- const node_zlib_1 = require("node:zlib");
7
- const tables_1 = require("./tables");
8
- const webauthn_1 = require("./webauthn");
9
- function fixtures(tables) {
10
- const byModel = new Map();
11
- for (const name of tables.names()) {
12
- for (const row of tables.rows(name)) {
13
- const model = (0, tables_1.text)(row.model)?.toLowerCase();
14
- const fields = (0, tables_1.json)(row.fields);
15
- if (!model || !fields)
16
- continue;
17
- const list = byModel.get(model) ?? [];
18
- list.push({ model, pk: row.pk, fields });
19
- byModel.set(model, list);
20
- }
21
- }
22
- return byModel;
23
- }
24
- function exportDjango(tables, options = {}) {
25
- const out = new tables_1.FrameworkExport();
26
- const now = (options.now ?? new Date()).getTime();
27
- const fx = fixtures(tables);
28
- const userModel = options.userModel?.toLowerCase() ??
29
- (fx.has('auth.user')
30
- ? 'auth.user'
31
- : [...fx.keys()].find((m) => {
32
- const f = fx.get(m)[0].fields;
33
- return 'password' in f && ('username' in f || 'email' in f) && 'last_login' in f;
34
- }));
35
- if (!userModel || !fx.has(userModel)) {
36
- out.warn('No user model rows found: dump auth.user (or your AUTH_USER_MODEL) with manage.py dumpdata.');
37
- return out;
38
- }
39
- // Groups → app roles (permission codenames when auth.permission was dumped).
40
- const permissions = new Map();
41
- for (const p of fx.get('auth.permission') ?? []) {
42
- const codename = (0, tables_1.text)(p.fields.codename);
43
- if (codename)
44
- permissions.set(String(p.pk), codename);
45
- }
46
- const groups = new Map();
47
- for (const g of fx.get('auth.group') ?? []) {
48
- const name = (0, tables_1.text)(g.fields.name);
49
- if (!name)
50
- continue;
51
- groups.set(String(g.pk), name);
52
- const perms = (Array.isArray(g.fields.permissions) ? g.fields.permissions : [])
53
- .map((pk) => (Array.isArray(pk) ? (0, tables_1.text)(pk[0]) : permissions.get(String(pk))))
54
- .filter((p) => Boolean(p));
55
- out.add('role', { key: name, name, scope: 'app', permissions: perms.length ? perms : undefined });
56
- }
57
- const emails = new Map();
58
- for (const e of fx.get('account.emailaddress') ?? []) {
59
- const uid = (0, tables_1.text)(e.fields.user);
60
- const email = (0, tables_1.text)(e.fields.email)?.toLowerCase();
61
- if (!uid || !email)
62
- continue;
63
- const list = emails.get(uid) ?? [];
64
- list.push({ email, verified: (0, tables_1.bool)(e.fields.verified), primary: (0, tables_1.bool)(e.fields.primary) });
65
- emails.set(uid, list);
66
- }
67
- const allauth = fx.has('account.emailaddress');
68
- const ids = new Set();
69
- let unusable = 0;
70
- for (const u of fx.get(userModel)) {
71
- const id = (0, tables_1.text)(u.pk);
72
- if (!id)
73
- continue;
74
- const f = u.fields;
75
- const email = (0, tables_1.text)(f.email)?.toLowerCase();
76
- const list = emails.get(id) ?? (email ? [{ email, verified: options.trustEmails === true, primary: true }] : []);
77
- const username = (0, tables_1.text)(f.username);
78
- if (!list.length && !username) {
79
- out.omit('user', 'no email or username');
80
- continue;
81
- }
82
- const digest = (0, tables_1.text)(f.password);
83
- const usable = Boolean(digest) && !digest.startsWith('!');
84
- if (!usable && digest)
85
- unusable++;
86
- const roles = (Array.isArray(f.groups) ? f.groups : [])
87
- .map((g) => (Array.isArray(g) ? (0, tables_1.text)(g[0]) : groups.get(String(g))))
88
- .filter((g) => Boolean(g));
89
- if ((0, tables_1.bool)(f.is_superuser))
90
- roles.push('superuser');
91
- if ((0, tables_1.bool)(f.is_staff))
92
- roles.push('staff');
93
- const active = f.is_active === undefined ? true : (0, tables_1.bool)(f.is_active);
94
- ids.add(id);
95
- out.add('user', {
96
- id,
97
- emails: list,
98
- username,
99
- first_name: (0, tables_1.text)(f.first_name),
100
- last_name: (0, tables_1.text)(f.last_name),
101
- password: usable ? { algorithm: 'auto', hash: digest } : undefined,
102
- roles: roles.length ? [...new Set(roles)] : undefined,
103
- banned: active ? undefined : true,
104
- ban_reason: active ? undefined : 'is_active was false in Django',
105
- created_at: (0, tables_1.time)(f.date_joined),
106
- last_sign_in_at: (0, tables_1.time)(f.last_login),
107
- });
108
- }
109
- if (unusable)
110
- out.warn(`${unusable} user(s) had an unusable password (social-only or set_unusable_password): they sign in through their identities.`);
111
- if (!allauth)
112
- out.warn('django-allauth email addresses were not in the dump: email verification state comes from --trust-emails.');
113
- for (const key of ['superuser', 'staff']) {
114
- const used = out.list('user').some((u) => u.roles?.includes(key));
115
- if (used && !out.list('role').some((r) => r.key === key))
116
- out.add('role', { key, name: key, scope: 'app' });
117
- }
118
- // Social accounts (+ tokens).
119
- const tokens = new Map();
120
- for (const t of fx.get('socialaccount.socialtoken') ?? []) {
121
- const account = (0, tables_1.text)(t.fields.account);
122
- if (account)
123
- tokens.set(account, t.fields);
124
- }
125
- const providers = new Set();
126
- for (const s of fx.get('socialaccount.socialaccount') ?? []) {
127
- const uid = (0, tables_1.text)(s.fields.user);
128
- const provider = (0, tables_1.text)(s.fields.provider);
129
- const subject = (0, tables_1.text)(s.fields.uid);
130
- if (!uid || !provider || !subject || !ids.has(uid)) {
131
- out.omit('identity', 'social account without a known user, provider or uid');
132
- continue;
133
- }
134
- providers.add(provider);
135
- const token = tokens.get(String(s.pk));
136
- const extra = (0, tables_1.json)(s.fields.extra_data);
137
- out.add('identity', {
138
- user_id: uid,
139
- provider,
140
- provider_user_id: subject,
141
- kind: provider === 'openid_connect' || provider === 'saml' ? (provider === 'saml' ? 'saml' : 'oidc') : 'oauth',
142
- email: (0, tables_1.text)(extra?.email),
143
- profile: extra,
144
- ...(options.oauthTokens && token
145
- ? { access_token: (0, tables_1.text)(token.token), refresh_token: (0, tables_1.text)(token.token_secret), expires_at: (0, tables_1.time)(token.expires_at) }
146
- : {}),
147
- });
148
- }
149
- out.manifest.providers = [...providers].sort();
150
- // allauth MFA. The script's decrypted extras win over the dump's raw data.
151
- const extras = tables.rows('mfa_secrets');
152
- const extraBy = new Map(extras.map((r) => [`${(0, tables_1.text)(r.authenticator_id)}`, r]));
153
- const rawPasskeys = [];
154
- for (const a of fx.get('mfa.authenticator') ?? []) {
155
- const uid = (0, tables_1.text)(a.fields.user);
156
- const type = (0, tables_1.text)(a.fields.type);
157
- const data = (0, tables_1.json)(a.fields.data) ?? {};
158
- if (!uid || !ids.has(uid))
159
- continue;
160
- const extra = extraBy.get(String(a.pk));
161
- if (type === 'totp') {
162
- const secret = (0, tables_1.text)(extra?.secret) ?? (0, tables_1.text)(data.secret);
163
- if (!secret || !/^[A-Z2-7]+=*$/i.test(secret)) {
164
- out.omit('mfa_factor', 'TOTP secret encrypted by a custom MFA adapter: run the export script so the adapter decrypts it');
165
- continue;
166
- }
167
- out.add('mfa_factor', { user_id: uid, type: 'totp', secret_base32: secret.toUpperCase(), digits: 6, period: 30, algorithm: 'SHA1', verified: true, created_at: (0, tables_1.time)(a.fields.created_at) });
168
- }
169
- else if (type === 'recovery_codes') {
170
- const codes = Array.isArray(extra?.codes) ? extra.codes.map(String) : [];
171
- if (!codes.length) {
172
- out.omit('mfa_factor', 'recovery codes are derived from an encrypted seed: run the export script to carry the unused ones');
173
- continue;
174
- }
175
- out.add('mfa_factor', { user_id: uid, type: 'backup_codes', backup_codes: codes });
176
- }
177
- else if (type === 'webauthn') {
178
- rawPasskeys.push(a);
179
- }
180
- }
181
- if (rawPasskeys.length && !options.rpId) {
182
- out.omit('passkey', 'no RP id given (--rp-id): a passkey only works on the domain it was registered for', rawPasskeys.length);
183
- }
184
- for (const a of options.rpId ? rawPasskeys : []) {
185
- const data = (0, tables_1.json)(a.fields.data) ?? {};
186
- const credential = (0, tables_1.json)(data.credential);
187
- const response = (0, tables_1.json)(credential?.response);
188
- const parsed = typeof response?.attestationObject === 'string' ? (0, webauthn_1.parseAttestationObject)(response.attestationObject) : null;
189
- if (!parsed) {
190
- out.omit('passkey', 'WebAuthn authenticator whose registration response could not be read');
191
- continue;
192
- }
193
- out.add('passkey', {
194
- user_id: (0, tables_1.text)(a.fields.user),
195
- credential_id: parsed.credentialId.toString('base64url'),
196
- public_key: parsed.publicKey.toString('base64url'),
197
- sign_count: parsed.signCount,
198
- aaguid: parsed.aaguid,
199
- backed_up: parsed.backedUp,
200
- transports: Array.isArray(response?.transports) ? response.transports.map(String) : undefined,
201
- rp_id: options.rpId,
202
- name: (0, tables_1.text)(data.name),
203
- created_at: (0, tables_1.time)(a.fields.created_at),
204
- });
205
- }
206
- if (options.rpId)
207
- out.manifest.rpId = options.rpId;
208
- // Database-backed sessions.
209
- if (options.sessions !== false) {
210
- for (const s of fx.get('sessions.session') ?? []) {
211
- const key = (0, tables_1.text)(s.pk);
212
- const expires = (0, tables_1.timeMs)(s.fields.expire_date);
213
- const data = decodeSessionData(String(s.fields.session_data ?? ''));
214
- const uid = (0, tables_1.text)(data?._auth_user_id);
215
- if (!key || expires === undefined || !data) {
216
- out.omit('session', 'session row that could not be decoded');
217
- continue;
218
- }
219
- if (!uid) {
220
- out.omit('session', 'anonymous session');
221
- continue;
222
- }
223
- if (!ids.has(uid)) {
224
- out.omit('session', 'session of a user not in the export');
225
- continue;
226
- }
227
- if (expires <= now) {
228
- out.omit('session', 'expired');
229
- continue;
230
- }
231
- out.add('session', { id: (0, tables_1.sha256Hex)(key).slice(0, 32), user_id: uid, token_hash: (0, tables_1.sha256Hex)(key), expires_at: new Date(expires).toISOString() });
232
- }
233
- }
234
- out.manifest.settings = { session_cookie: 'sessionid' };
235
- return out;
236
- }
237
- /**
238
- * Decode `django_session.session_data` without the SECRET_KEY (the rows come
239
- * from the app's own database): Django ≥ 3.1 `signing.dumps` (`payload:ts:sig`,
240
- * payload zlib-compressed when it starts with `.`), and the pre-3.1 form,
241
- * base64(`<hash>:<json>`).
242
- */
243
- function decodeSessionData(raw) {
244
- const value = raw.trim();
245
- if (!value)
246
- return null;
247
- try {
248
- if (value.split(':').length === 3) {
249
- const payload = value.split(':')[0];
250
- const compressed = payload.startsWith('.');
251
- const bytes = Buffer.from(compressed ? payload.slice(1) : payload, 'base64url');
252
- const parsed = JSON.parse((compressed ? (0, node_zlib_1.inflateSync)(bytes) : bytes).toString('utf8'));
253
- return (0, tables_1.json)(parsed) ?? null;
254
- }
255
- const legacy = Buffer.from(value, 'base64').toString('utf8');
256
- const colon = legacy.indexOf(':');
257
- if (colon < 0)
258
- return null;
259
- return (0, tables_1.json)(legacy.slice(colon + 1)) ?? null;
260
- }
261
- catch {
262
- return null;
263
- }
264
- }
265
- /**
266
- * The export script, run inside the Django app so allauth's own code decrypts
267
- * TOTP secrets and lists the unused recovery codes; it streams NDJSON straight
268
- * into the CLI:
269
- *
270
- * python manage.py shell < atlas_export.py | npx atlas migrate django export --file -
271
- */
272
- exports.DJANGO_EXPORT_SCRIPT = `# Atlas export for a Django app (django.contrib.auth + django-allauth).
273
- import io, json, sys
274
- from django.apps import apps
275
- from django.conf import settings
276
- from django.core.management import call_command
277
-
278
- def emit(table, row):
279
- sys.stdout.write(json.dumps({"table": table, "row": row}, default=str) + "\\n")
280
-
281
- labels = [settings.AUTH_USER_MODEL, "auth.group", "auth.permission"]
282
- for label in ["account.emailaddress", "socialaccount.socialaccount", "socialaccount.socialtoken", "mfa.authenticator", "sessions.session"]:
283
- try:
284
- apps.get_model(label)
285
- labels.append(label)
286
- except (LookupError, ValueError):
287
- pass
288
-
289
- buf = io.StringIO()
290
- call_command("dumpdata", *labels, format="json", stdout=buf)
291
- for obj in json.loads(buf.getvalue()):
292
- emit("dumpdata", obj)
293
-
294
- try:
295
- from allauth.mfa.models import Authenticator
296
- from allauth.mfa.adapter import get_adapter
297
- except ImportError:
298
- Authenticator = None
299
-
300
- if Authenticator is not None:
301
- try:
302
- from allauth.mfa.recovery_codes.internal.auth import RecoveryCodes
303
- except ImportError:
304
- try:
305
- from allauth.mfa.recovery_codes import RecoveryCodes
306
- except ImportError:
307
- RecoveryCodes = None
308
- adapter = get_adapter()
309
- for a in Authenticator.objects.all():
310
- if a.type == "totp":
311
- emit("mfa_secrets", {"authenticator_id": a.pk, "secret": adapter.decrypt(a.data["secret"])})
312
- elif a.type == "recovery_codes" and RecoveryCodes is not None:
313
- emit("mfa_secrets", {"authenticator_id": a.pk, "codes": RecoveryCodes(a).get_unused_codes()})
314
- `;
315
- //# sourceMappingURL=django.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"django.js","sourceRoot":"","sources":["../../../../src/migrate/export/frameworks/django.ts"],"names":[],"mappings":";;;AAgEA,oCA4MC;AAQD,8CAkBC;AAtSD,yCAAwC;AACxC,qCAUkB;AAClB,yCAAoD;AAqCpD,SAAS,QAAQ,CAAC,MAAc;IAC9B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAA,aAAI,EAAC,GAAG,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAA,aAAI,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM;gBAAE,SAAS;YAChC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,YAAY,CAAC,MAAc,EAAE,UAA+B,EAAE;IAC5E,MAAM,GAAG,GAAG,IAAI,wBAAe,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAClD,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,SAAS,GACb,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE;QAChC,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC;YAClB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;gBACxB,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC;gBAChC,OAAO,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC,CAAC;YACnF,CAAC,CAAC,CAAC,CAAC;IACV,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,GAAG,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAC;QACxG,OAAO,GAAG,CAAC;IACb,CAAC;IAED,6EAA6E;IAC7E,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAA,aAAI,EAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,QAAQ;YAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAA,aAAI,EAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5E,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAA,aAAI,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aAC5E,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IACpG,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyE,CAAC;IAChG,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,EAAE,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,IAAA,aAAI,EAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,IAAA,aAAI,EAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;QAClD,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK;YAAE,SAAS;QAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAA,aAAI,EAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAA,aAAI,EAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzF,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,MAAM,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAE/C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,CAAE,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,IAAA,aAAI,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtB,IAAI,CAAC,EAAE;YAAE,SAAS;QAClB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QACnB,MAAM,KAAK,GAAG,IAAA,aAAI,EAAC,CAAC,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,WAAW,KAAK,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjH,MAAM,QAAQ,GAAG,IAAA,aAAI,EAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,IAAA,aAAI,EAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,IAAI,MAAM;YAAE,QAAQ,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;aACpD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,aAAI,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACnE,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,IAAA,aAAI,EAAC,CAAC,CAAC,YAAY,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClD,IAAI,IAAA,aAAI,EAAC,CAAC,CAAC,QAAQ,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,aAAI,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACpE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACZ,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE;YACd,EAAE;YACF,MAAM,EAAE,IAAI;YACZ,QAAQ;YACR,UAAU,EAAE,IAAA,aAAI,EAAC,CAAC,CAAC,UAAU,CAAC;YAC9B,SAAS,EAAE,IAAA,aAAI,EAAC,CAAC,CAAC,SAAS,CAAC;YAC5B,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAO,EAAE,CAAC,CAAC,CAAC,SAAS;YACnE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YACrD,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;YACjC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,+BAA+B;YAChE,UAAU,EAAE,IAAA,aAAI,EAAC,CAAC,CAAC,WAAW,CAAC;YAC/B,eAAe,EAAE,IAAA,aAAI,EAAC,CAAC,CAAC,UAAU,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,QAAQ;QAAE,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,kHAAkH,CAAC,CAAC;IACtJ,IAAI,CAAC,OAAO;QAAE,GAAG,CAAC,IAAI,CAAC,0GAA0G,CAAC,CAAC;IACnI,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9G,CAAC;IAED,8BAA8B;IAC9B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAe,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,2BAA2B,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,IAAA,aAAI,EAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,OAAO;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5D,MAAM,GAAG,GAAG,IAAA,aAAI,EAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAA,aAAI,EAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAA,aAAI,EAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,sDAAsD,CAAC,CAAC;YAC7E,SAAS;QACX,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,IAAA,aAAI,EAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACxC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE;YAClB,OAAO,EAAE,GAAG;YACZ,QAAQ;YACR,gBAAgB,EAAE,OAAO;YACzB,IAAI,EAAE,QAAQ,KAAK,gBAAgB,IAAI,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO;YAC9G,KAAK,EAAE,IAAA,aAAI,EAAC,KAAK,EAAE,KAAK,CAAC;YACzB,OAAO,EAAE,KAAK;YACd,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,KAAK;gBAC9B,CAAC,CAAC,EAAE,YAAY,EAAE,IAAA,aAAI,EAAC,KAAK,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAA,aAAI,EAAC,KAAK,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,IAAA,aAAI,EAAC,KAAK,CAAC,UAAU,CAAC,EAAE;gBAClH,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;IACL,CAAC;IACD,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;IAE/C,2EAA2E;IAC3E,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAA,aAAI,EAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,WAAW,GAAc,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,IAAA,aAAI,EAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,IAAA,aAAI,EAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,IAAA,aAAI,EAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,IAAA,aAAI,EAAC,KAAK,EAAE,MAAM,CAAC,IAAI,IAAA,aAAI,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxD,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9C,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,iGAAiG,CAAC,CAAC;gBAC1H,SAAS;YACX,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAA,aAAI,EAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC9L,CAAC;aAAM,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAE,KAAM,CAAC,KAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACzF,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAClB,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,mGAAmG,CAAC,CAAC;gBAC5H,SAAS;YACX,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;QACrF,CAAC;aAAM,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACxC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,oFAAoF,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAChI,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,IAAA,aAAI,EAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,IAAA,aAAI,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAA,aAAI,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,OAAO,QAAQ,EAAE,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAA,iCAAsB,EAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3H,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,sEAAsE,CAAC,CAAC;YAC5F,SAAS;QACX,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE;YACjB,OAAO,EAAE,IAAA,aAAI,EAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAE;YAC7B,aAAa,EAAE,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;YACxD,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;YAClD,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,QAAQ;YAC1B,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAE,QAAS,CAAC,UAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;YAC7G,KAAK,EAAE,OAAO,CAAC,IAAK;YACpB,IAAI,EAAE,IAAA,aAAI,EAAC,IAAI,CAAC,IAAI,CAAC;YACrB,UAAU,EAAE,IAAA,aAAI,EAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,CAAC,IAAI;QAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEnD,4BAA4B;IAC5B,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC;YACjD,MAAM,GAAG,GAAG,IAAA,aAAI,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACvB,MAAM,OAAO,GAAG,IAAA,eAAM,EAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC;YACpE,MAAM,GAAG,GAAG,IAAA,aAAI,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YACtC,IAAI,CAAC,GAAG,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC3C,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,uCAAuC,CAAC,CAAC;gBAC7D,SAAS;YACX,CAAC;YACD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;gBACzC,SAAS;YACX,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClB,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,qCAAqC,CAAC,CAAC;gBAC3D,SAAS;YACX,CAAC;YACD,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;gBACnB,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAC/B,SAAS;YACX,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,IAAA,kBAAS,EAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,IAAA,kBAAS,EAAC,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACjJ,CAAC;IACH,CAAC;IACD,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;IACxD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,GAAW;IAC3C,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,CAAC;QACH,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;YACrC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAChF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,uBAAW,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAY,CAAC;YACjG,OAAO,IAAA,aAAI,EAAC,MAAM,CAAC,IAAI,IAAI,CAAC;QAC9B,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3B,OAAO,IAAA,aAAI,EAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CnC,CAAC"}