sonamu 0.10.12 → 0.10.13

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 (513) hide show
  1. package/dist/ai/agents/agent.d.ts +1 -1
  2. package/dist/ai/agents/agent.d.ts.map +1 -1
  3. package/dist/ai/agents/agent.js +5 -6
  4. package/dist/ai/agents/types.d.ts +1 -1
  5. package/dist/ai/agents/types.d.ts.map +1 -1
  6. package/dist/ai/providers/rtzr/api.js +18 -18
  7. package/dist/ai/providers/rtzr/error.d.ts.map +1 -1
  8. package/dist/ai/providers/rtzr/error.js +17 -15
  9. package/dist/ai/providers/rtzr/model.d.ts.map +1 -1
  10. package/dist/ai/providers/rtzr/model.js +3 -2
  11. package/dist/ai/providers/rtzr/options.d.ts.map +1 -1
  12. package/dist/ai/providers/rtzr/options.js +16 -16
  13. package/dist/ai/providers/rtzr/provider.d.ts.map +1 -1
  14. package/dist/ai/providers/rtzr/provider.js +9 -9
  15. package/dist/ai/providers/rtzr/utils.d.ts.map +1 -1
  16. package/dist/ai/providers/rtzr/utils.js +1 -1
  17. package/dist/api/caster.d.ts.map +1 -1
  18. package/dist/api/caster.js +17 -17
  19. package/dist/api/code-converters.d.ts +4 -2
  20. package/dist/api/code-converters.d.ts.map +1 -1
  21. package/dist/api/code-converters.js +100 -19
  22. package/dist/api/config.d.ts +16 -1
  23. package/dist/api/config.d.ts.map +1 -1
  24. package/dist/api/config.js +28 -21
  25. package/dist/api/context.d.ts +2 -2
  26. package/dist/api/context.d.ts.map +1 -1
  27. package/dist/api/context.js +1 -1
  28. package/dist/api/decorators.d.ts.map +1 -1
  29. package/dist/api/decorators.js +18 -11
  30. package/dist/api/http-validator.d.ts +36 -0
  31. package/dist/api/http-validator.d.ts.map +1 -0
  32. package/dist/api/http-validator.js +72 -0
  33. package/dist/api/index.js +6 -4
  34. package/dist/api/sonamu.d.ts +59 -20
  35. package/dist/api/sonamu.d.ts.map +1 -1
  36. package/dist/api/sonamu.js +250 -106
  37. package/dist/api/websocket-helpers.d.ts +7 -5
  38. package/dist/api/websocket-helpers.d.ts.map +1 -1
  39. package/dist/api/websocket-helpers.js +6 -6
  40. package/dist/auth/audit-log/builders.d.ts.map +1 -1
  41. package/dist/auth/audit-log/builders.js +1 -1
  42. package/dist/auth/audit-log/client-ip.d.ts +1 -1
  43. package/dist/auth/audit-log/client-ip.d.ts.map +1 -1
  44. package/dist/auth/audit-log/client-ip.js +4 -2
  45. package/dist/auth/audit-log/events.d.ts +5 -1
  46. package/dist/auth/audit-log/events.d.ts.map +1 -1
  47. package/dist/auth/audit-log/events.js +1 -1
  48. package/dist/auth/audit-log/plugin.d.ts +0 -8
  49. package/dist/auth/audit-log/plugin.d.ts.map +1 -1
  50. package/dist/auth/audit-log/plugin.js +48 -52
  51. package/dist/auth/audit-log-ingestor.d.ts.map +1 -1
  52. package/dist/auth/audit-log-ingestor.js +16 -12
  53. package/dist/auth/auth-generator.d.ts.map +1 -1
  54. package/dist/auth/auth-generator.js +1 -1
  55. package/dist/auth/better-auth-request.d.ts.map +1 -1
  56. package/dist/auth/better-auth-request.js +6 -5
  57. package/dist/auth/knex-adapter.js +1 -1
  58. package/dist/auth/plugins/entity-definitions/index.d.ts +13 -1
  59. package/dist/auth/plugins/entity-definitions/index.d.ts.map +1 -1
  60. package/dist/auth/plugins/entity-definitions/index.js +1 -1
  61. package/dist/auth/plugins/wrappers/admin.d.ts +1 -1
  62. package/dist/bin/build-config.d.ts +25 -0
  63. package/dist/bin/build-config.d.ts.map +1 -1
  64. package/dist/bin/build-config.js +105 -2
  65. package/dist/bin/cli.js +131 -27
  66. package/dist/bin/compiler-policy.d.ts +3 -0
  67. package/dist/bin/compiler-policy.d.ts.map +1 -0
  68. package/dist/bin/compiler-policy.js +24 -0
  69. package/dist/bin/fixture.d.ts.map +1 -1
  70. package/dist/bin/fixture.js +5 -3
  71. package/dist/bin/test-command.d.ts +22 -1
  72. package/dist/bin/test-command.d.ts.map +1 -1
  73. package/dist/bin/test-command.js +18 -10
  74. package/dist/bin/ts-loader-registration.d.ts +7 -1
  75. package/dist/bin/ts-loader-registration.d.ts.map +1 -1
  76. package/dist/bin/ts-loader-registration.js +13 -4
  77. package/dist/cache/decorator.d.ts.map +1 -1
  78. package/dist/cache/decorator.js +11 -4
  79. package/dist/compress/compress.d.ts.map +1 -1
  80. package/dist/compress/compress.js +1 -1
  81. package/dist/cone/cone-generator.d.ts +14 -1
  82. package/dist/cone/cone-generator.d.ts.map +1 -1
  83. package/dist/cone/cone-generator.js +13 -9
  84. package/dist/database/_batch_update.js +1 -1
  85. package/dist/database/base-model.d.ts +22 -10
  86. package/dist/database/base-model.d.ts.map +1 -1
  87. package/dist/database/base-model.js +26 -16
  88. package/dist/database/base-model.types.d.ts +15 -3
  89. package/dist/database/base-model.types.d.ts.map +1 -1
  90. package/dist/database/db.d.ts +12 -2
  91. package/dist/database/db.d.ts.map +1 -1
  92. package/dist/database/db.js +10 -7
  93. package/dist/database/knex.d.ts.map +1 -1
  94. package/dist/database/knex.js +17 -14
  95. package/dist/database/puri.d.ts +11 -9
  96. package/dist/database/puri.d.ts.map +1 -1
  97. package/dist/database/puri.js +93 -79
  98. package/dist/database/puri.types.d.ts +21 -21
  99. package/dist/database/puri.types.d.ts.map +1 -1
  100. package/dist/database/puri.types.js +1 -1
  101. package/dist/database/upsert-builder.d.ts +12 -10
  102. package/dist/database/upsert-builder.d.ts.map +1 -1
  103. package/dist/database/upsert-builder.js +20 -12
  104. package/dist/dict/sd.d.ts.map +1 -1
  105. package/dist/dict/sd.js +1 -1
  106. package/dist/dict/sonamu-dictionary.d.ts.map +1 -1
  107. package/dist/dict/sonamu-dictionary.js +1 -1
  108. package/dist/dict/utils.d.ts.map +1 -1
  109. package/dist/dict/utils.js +7 -2
  110. package/dist/entity/entity-manager.d.ts +13 -4
  111. package/dist/entity/entity-manager.d.ts.map +1 -1
  112. package/dist/entity/entity-manager.js +19 -11
  113. package/dist/entity/entity-template-cone.d.ts +73 -5
  114. package/dist/entity/entity-template-cone.d.ts.map +1 -1
  115. package/dist/entity/entity-template-cone.js +4 -2
  116. package/dist/entity/entity.d.ts +6 -2
  117. package/dist/entity/entity.d.ts.map +1 -1
  118. package/dist/entity/entity.js +30 -28
  119. package/dist/env.d.ts +3 -1
  120. package/dist/env.d.ts.map +1 -1
  121. package/dist/env.js +1 -1
  122. package/dist/exceptions/error-handler.d.ts.map +1 -1
  123. package/dist/exceptions/error-handler.js +7 -2
  124. package/dist/exceptions/so-exceptions.d.ts +24 -20
  125. package/dist/exceptions/so-exceptions.d.ts.map +1 -1
  126. package/dist/exceptions/so-exceptions.js +4 -2
  127. package/dist/filter/utils.d.ts +7 -2
  128. package/dist/filter/utils.d.ts.map +1 -1
  129. package/dist/filter/utils.js +8 -6
  130. package/dist/index.d.ts +3 -0
  131. package/dist/index.d.ts.map +1 -1
  132. package/dist/index.js +12 -6
  133. package/dist/logger/configure.d.ts.map +1 -1
  134. package/dist/logger/configure.js +10 -10
  135. package/dist/migration/code-generation.d.ts.map +1 -1
  136. package/dist/migration/code-generation.js +50 -46
  137. package/dist/migration/index-where-predicate.d.ts.map +1 -1
  138. package/dist/migration/index-where-predicate.js +22 -8
  139. package/dist/migration/migration-set.d.ts.map +1 -1
  140. package/dist/migration/migration-set.js +1 -1
  141. package/dist/migration/migrator.d.ts +3 -2
  142. package/dist/migration/migrator.d.ts.map +1 -1
  143. package/dist/migration/migrator.js +27 -21
  144. package/dist/migration/postgresql-schema-reader.d.ts.map +1 -1
  145. package/dist/migration/postgresql-schema-reader.js +51 -36
  146. package/dist/migration/slack-confirm.d.ts.map +1 -1
  147. package/dist/migration/slack-confirm.js +1 -1
  148. package/dist/naite/naite-reporter.js +2 -2
  149. package/dist/naite/naite.d.ts +74 -15
  150. package/dist/naite/naite.d.ts.map +1 -1
  151. package/dist/naite/naite.js +5 -19
  152. package/dist/runtime-type.d.ts +6 -0
  153. package/dist/runtime-type.d.ts.map +1 -0
  154. package/dist/runtime-type.js +26 -0
  155. package/dist/ssr/hmr-opt-out.d.ts +26 -0
  156. package/dist/ssr/hmr-opt-out.d.ts.map +1 -0
  157. package/dist/ssr/hmr-opt-out.js +59 -0
  158. package/dist/ssr/renderer.d.ts.map +1 -1
  159. package/dist/ssr/renderer.js +4 -1
  160. package/dist/storage/base-file.js +14 -14
  161. package/dist/storage/buffered-file.d.ts +2 -2
  162. package/dist/storage/buffered-file.d.ts.map +1 -1
  163. package/dist/storage/buffered-file.js +12 -12
  164. package/dist/storage/s3-driver.d.ts.map +1 -1
  165. package/dist/storage/s3-driver.js +1 -1
  166. package/dist/storage/uploaded-file.d.ts +2 -2
  167. package/dist/storage/uploaded-file.d.ts.map +1 -1
  168. package/dist/storage/uploaded-file.js +8 -8
  169. package/dist/stream/sse.js +11 -11
  170. package/dist/stream/ws-core.d.ts +1 -1
  171. package/dist/stream/ws-core.d.ts.map +1 -1
  172. package/dist/stream/ws-delivery.d.ts +1 -1
  173. package/dist/stream/ws-delivery.d.ts.map +1 -1
  174. package/dist/stream/ws-delivery.js +6 -4
  175. package/dist/stream/ws-local-connection-store.d.ts.map +1 -1
  176. package/dist/stream/ws-local-connection-store.js +4 -2
  177. package/dist/stream/ws-presence-store.js +1 -1
  178. package/dist/stream/ws-registry.d.ts +4 -4
  179. package/dist/stream/ws-registry.d.ts.map +1 -1
  180. package/dist/stream/ws-registry.js +4 -2
  181. package/dist/stream/ws-telemetry.d.ts +16 -12
  182. package/dist/stream/ws-telemetry.d.ts.map +1 -1
  183. package/dist/stream/ws-telemetry.js +22 -18
  184. package/dist/stream/ws.d.ts +18 -12
  185. package/dist/stream/ws.d.ts.map +1 -1
  186. package/dist/stream/ws.js +26 -22
  187. package/dist/syncer/api-parser.js +1 -1
  188. package/dist/syncer/checksum.d.ts.map +1 -1
  189. package/dist/syncer/checksum.js +7 -8
  190. package/dist/syncer/code-generator.d.ts.map +1 -1
  191. package/dist/syncer/code-generator.js +13 -14
  192. package/dist/syncer/entity-operations.d.ts.map +1 -1
  193. package/dist/syncer/entity-operations.js +5 -6
  194. package/dist/syncer/file-copy.d.ts +5 -0
  195. package/dist/syncer/file-copy.d.ts.map +1 -0
  196. package/dist/syncer/file-copy.js +36 -0
  197. package/dist/syncer/file-patterns.d.ts +1 -0
  198. package/dist/syncer/file-patterns.d.ts.map +1 -1
  199. package/dist/syncer/file-patterns.js +5 -2
  200. package/dist/syncer/file-tracking.d.ts.map +1 -1
  201. package/dist/syncer/file-tracking.js +5 -4
  202. package/dist/syncer/filesystem-dependencies.d.ts +15 -0
  203. package/dist/syncer/filesystem-dependencies.d.ts.map +1 -0
  204. package/dist/syncer/filesystem-dependencies.js +53 -0
  205. package/dist/syncer/module-loader.d.ts +1 -1
  206. package/dist/syncer/module-loader.d.ts.map +1 -1
  207. package/dist/syncer/module-loader.js +6 -4
  208. package/dist/syncer/syncer-actions.d.ts +4 -0
  209. package/dist/syncer/syncer-actions.d.ts.map +1 -1
  210. package/dist/syncer/syncer-actions.js +34 -17
  211. package/dist/syncer/syncer.d.ts +17 -6
  212. package/dist/syncer/syncer.d.ts.map +1 -1
  213. package/dist/syncer/syncer.js +71 -29
  214. package/dist/syncer/watcher.d.ts.map +1 -1
  215. package/dist/syncer/watcher.js +3 -3
  216. package/dist/tasks/decorator.d.ts +6 -6
  217. package/dist/tasks/decorator.d.ts.map +1 -1
  218. package/dist/tasks/decorator.js +4 -4
  219. package/dist/tasks/step-wrapper.d.ts +6 -4
  220. package/dist/tasks/step-wrapper.d.ts.map +1 -1
  221. package/dist/tasks/step-wrapper.js +5 -5
  222. package/dist/tasks/workflow-manager.d.ts.map +1 -1
  223. package/dist/tasks/workflow-manager.js +13 -7
  224. package/dist/template/entity-converter.d.ts +1 -1
  225. package/dist/template/entity-converter.d.ts.map +1 -1
  226. package/dist/template/entity-converter.js +2 -2
  227. package/dist/template/helpers.d.ts +8 -6
  228. package/dist/template/helpers.d.ts.map +1 -1
  229. package/dist/template/helpers.js +1 -1
  230. package/dist/template/implementations/generated.template.d.ts.map +1 -1
  231. package/dist/template/implementations/generated.template.js +4 -4
  232. package/dist/template/implementations/generated_http.template.d.ts +7 -4
  233. package/dist/template/implementations/generated_http.template.d.ts.map +1 -1
  234. package/dist/template/implementations/generated_http.template.js +21 -21
  235. package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
  236. package/dist/template/implementations/generated_sso.template.js +6 -3
  237. package/dist/template/implementations/http_validators.template.d.ts +18 -0
  238. package/dist/template/implementations/http_validators.template.d.ts.map +1 -0
  239. package/dist/template/implementations/http_validators.template.js +127 -0
  240. package/dist/template/implementations/model.template.d.ts.map +1 -1
  241. package/dist/template/implementations/model.template.js +1 -1
  242. package/dist/template/implementations/queries.template.js +1 -1
  243. package/dist/template/implementations/sd.template.d.ts.map +1 -1
  244. package/dist/template/implementations/sd.template.js +79 -39
  245. package/dist/template/implementations/services.template.d.ts.map +1 -1
  246. package/dist/template/implementations/services.template.js +6 -4
  247. package/dist/template/implementations/view_form.template.d.ts +6 -1
  248. package/dist/template/implementations/view_form.template.d.ts.map +1 -1
  249. package/dist/template/implementations/view_form.template.js +23 -15
  250. package/dist/template/implementations/view_list.template.d.ts.map +1 -1
  251. package/dist/template/implementations/view_list.template.js +11 -6
  252. package/dist/template/template-manager.d.ts.map +1 -1
  253. package/dist/template/template-manager.js +9 -7
  254. package/dist/template/template-types.d.ts +12 -5
  255. package/dist/template/template-types.d.ts.map +1 -1
  256. package/dist/template/template-types.js +1 -1
  257. package/dist/template/template.d.ts +2 -2
  258. package/dist/template/template.d.ts.map +1 -1
  259. package/dist/template/template.js +6 -4
  260. package/dist/template/zod-converter.d.ts +0 -19
  261. package/dist/template/zod-converter.d.ts.map +1 -1
  262. package/dist/template/zod-converter.js +100 -84
  263. package/dist/testing/_relation-graph.d.ts.map +1 -1
  264. package/dist/testing/_relation-graph.js +2 -1
  265. package/dist/testing/bootstrap.d.ts.map +1 -1
  266. package/dist/testing/bootstrap.js +9 -6
  267. package/dist/testing/data-explorer.d.ts +32 -7
  268. package/dist/testing/data-explorer.d.ts.map +1 -1
  269. package/dist/testing/data-explorer.js +77 -31
  270. package/dist/testing/dev-test-routes.d.ts +8 -1
  271. package/dist/testing/dev-test-routes.d.ts.map +1 -1
  272. package/dist/testing/dev-test-routes.js +125 -108
  273. package/dist/testing/dev-vitest-manager.d.ts +54 -8
  274. package/dist/testing/dev-vitest-manager.d.ts.map +1 -1
  275. package/dist/testing/dev-vitest-manager.js +24 -9
  276. package/dist/testing/faker-mappings.d.ts +412 -1
  277. package/dist/testing/faker-mappings.d.ts.map +1 -1
  278. package/dist/testing/faker-mappings.js +1 -1
  279. package/dist/testing/filesystem.d.ts +2 -0
  280. package/dist/testing/filesystem.d.ts.map +1 -0
  281. package/dist/testing/filesystem.js +7 -0
  282. package/dist/testing/fixture-generator.d.ts +25 -8
  283. package/dist/testing/fixture-generator.d.ts.map +1 -1
  284. package/dist/testing/fixture-generator.js +132 -73
  285. package/dist/testing/fixture-loader.d.ts +3 -1
  286. package/dist/testing/fixture-loader.d.ts.map +1 -1
  287. package/dist/testing/fixture-loader.js +1 -20
  288. package/dist/testing/fixture-manager.d.ts +8 -7
  289. package/dist/testing/fixture-manager.d.ts.map +1 -1
  290. package/dist/testing/fixture-manager.js +91 -59
  291. package/dist/testing/global-setup.d.ts.map +1 -1
  292. package/dist/testing/global-setup.js +5 -2
  293. package/dist/testing/index.d.ts +2 -0
  294. package/dist/testing/index.d.ts.map +1 -1
  295. package/dist/testing/index.js +6 -3
  296. package/dist/types/types.d.ts +101 -99
  297. package/dist/types/types.d.ts.map +1 -1
  298. package/dist/types/types.js +234 -225
  299. package/dist/ui/ai-api.d.ts.map +1 -1
  300. package/dist/ui/ai-api.js +1 -1
  301. package/dist/ui/ai-client.d.ts.map +1 -1
  302. package/dist/ui/ai-client.js +28 -18
  303. package/dist/ui/api.d.ts.map +1 -1
  304. package/dist/ui/api.js +135 -128
  305. package/dist/ui/async-route.d.ts +3 -0
  306. package/dist/ui/async-route.d.ts.map +1 -0
  307. package/dist/ui/async-route.js +12 -0
  308. package/dist/ui/cdd-service.d.ts +9 -7
  309. package/dist/ui/cdd-service.d.ts.map +1 -1
  310. package/dist/ui/cdd-service.js +7 -5
  311. package/dist/ui/migrations-api.d.ts.map +1 -1
  312. package/dist/ui/migrations-api.js +17 -15
  313. package/dist/ui-web/assets/index-DV1AAq6W.js +178 -0
  314. package/dist/ui-web/index.html +1 -1
  315. package/dist/utils/formatter.d.ts.map +1 -1
  316. package/dist/utils/formatter.js +7 -5
  317. package/dist/utils/fs-utils.d.ts +3 -3
  318. package/dist/utils/fs-utils.d.ts.map +1 -1
  319. package/dist/utils/fs-utils.js +6 -6
  320. package/dist/utils/model.d.ts +3 -5
  321. package/dist/utils/model.d.ts.map +1 -1
  322. package/dist/utils/model.js +1 -1
  323. package/dist/utils/object-utils.d.ts +1 -1
  324. package/dist/utils/object-utils.d.ts.map +1 -1
  325. package/dist/utils/object-utils.js +17 -16
  326. package/dist/utils/process-utils.d.ts.map +1 -1
  327. package/dist/utils/process-utils.js +4 -2
  328. package/dist/utils/runtime-value.d.ts +13 -0
  329. package/dist/utils/runtime-value.d.ts.map +1 -0
  330. package/dist/utils/runtime-value.js +40 -0
  331. package/dist/utils/sql-parser.d.ts +8 -1
  332. package/dist/utils/sql-parser.d.ts.map +1 -1
  333. package/dist/utils/sql-parser.js +6 -3
  334. package/dist/utils/type-utils.d.ts.map +1 -1
  335. package/dist/utils/type-utils.js +10 -8
  336. package/dist/utils/utils.d.ts +2 -2
  337. package/dist/utils/utils.d.ts.map +1 -1
  338. package/dist/utils/utils.js +11 -8
  339. package/dist/utils/zod-error.d.ts.map +1 -1
  340. package/dist/utils/zod-error.js +7 -4
  341. package/dist/vector/chunking.d.ts.map +1 -1
  342. package/dist/vector/chunking.js +1 -1
  343. package/dist/vector/embedding.d.ts.map +1 -1
  344. package/dist/vector/embedding.js +1 -1
  345. package/dist/vector/types.d.ts +3 -2
  346. package/dist/vector/types.d.ts.map +1 -1
  347. package/package.json +5 -3
  348. package/src/ai/agents/agent.ts +5 -5
  349. package/src/ai/agents/types.ts +1 -1
  350. package/src/ai/providers/rtzr/__tests__/model.test.ts +2 -2
  351. package/src/ai/providers/rtzr/error.ts +5 -3
  352. package/src/ai/providers/rtzr/model.ts +3 -2
  353. package/src/ai/providers/rtzr/options.ts +10 -5
  354. package/src/ai/providers/rtzr/provider.ts +10 -10
  355. package/src/ai/providers/rtzr/utils.ts +3 -1
  356. package/src/api/__tests__/config.test.ts +11 -21
  357. package/src/api/__tests__/sonamu.http-validator.test.ts +512 -0
  358. package/src/api/__tests__/sonamu.websocket.test.ts +51 -41
  359. package/src/api/__tests__/zod-compiler-policy.test.ts +95 -0
  360. package/src/api/caster.ts +6 -8
  361. package/src/api/code-converters.ts +136 -36
  362. package/src/api/config.ts +62 -4
  363. package/src/api/context.ts +3 -3
  364. package/src/api/decorators.ts +28 -17
  365. package/src/api/http-validator.ts +149 -0
  366. package/src/api/sonamu.ts +459 -152
  367. package/src/api/websocket-helpers.ts +24 -17
  368. package/src/auth/audit-log/builders.ts +3 -2
  369. package/src/auth/audit-log/client-ip.ts +4 -2
  370. package/src/auth/audit-log/events.ts +15 -1
  371. package/src/auth/audit-log/plugin.ts +129 -200
  372. package/src/auth/audit-log-ingestor.ts +19 -15
  373. package/src/auth/auth-generator.ts +10 -5
  374. package/src/auth/better-auth-request.ts +4 -3
  375. package/src/auth/knex-adapter.ts +8 -2
  376. package/src/auth/plugins/entity-definitions/index.ts +6 -5
  377. package/src/bin/__tests__/http-validator-benchmark.test.ts +94 -0
  378. package/src/bin/__tests__/test-command.test.ts +9 -15
  379. package/src/bin/__tests__/ts-loader-register.test.ts +15 -17
  380. package/src/bin/__tests__/zod-compiler-build.test.ts +307 -0
  381. package/src/bin/build-config.ts +167 -0
  382. package/src/bin/cli.ts +153 -36
  383. package/src/bin/compiler-policy.ts +35 -0
  384. package/src/bin/fixture.ts +14 -3
  385. package/src/bin/test-command.ts +74 -29
  386. package/src/bin/ts-loader-registration.ts +22 -4
  387. package/src/cache/decorator.ts +10 -3
  388. package/src/compress/compress.ts +17 -4
  389. package/src/cone/cone-generator.ts +34 -6
  390. package/src/database/__tests__/db.test.ts +1 -0
  391. package/src/database/__tests__/puri.test.ts +16 -15
  392. package/src/database/__tests__/transaction-scope.test.ts +5 -0
  393. package/src/database/_batch_update.ts +1 -0
  394. package/src/database/base-model.ts +81 -50
  395. package/src/database/base-model.types.ts +6 -6
  396. package/src/database/db.ts +29 -19
  397. package/src/database/knex.ts +30 -17
  398. package/src/database/puri-subset.test-d.ts +17 -0
  399. package/src/database/puri.ts +181 -143
  400. package/src/database/puri.types.test-d.ts +31 -1
  401. package/src/database/puri.types.ts +23 -21
  402. package/src/database/upsert-builder.ts +75 -53
  403. package/src/dict/sd.ts +15 -5
  404. package/src/dict/sonamu-dictionary.ts +6 -6
  405. package/src/dict/utils.ts +9 -1
  406. package/src/entity/entity-manager.ts +26 -9
  407. package/src/entity/entity-template-cone.ts +5 -10
  408. package/src/entity/entity.ts +50 -34
  409. package/src/env.ts +7 -3
  410. package/src/exceptions/error-handler.ts +17 -2
  411. package/src/exceptions/so-exceptions.ts +26 -20
  412. package/src/filter/utils.ts +21 -11
  413. package/src/index.ts +3 -0
  414. package/src/logger/configure.ts +26 -18
  415. package/src/migration/__tests__/migrator.test.ts +50 -57
  416. package/src/migration/code-generation.ts +132 -104
  417. package/src/migration/index-where-predicate.ts +51 -24
  418. package/src/migration/migration-set.ts +11 -5
  419. package/src/migration/migrator.ts +68 -41
  420. package/src/migration/postgresql-schema-reader.ts +52 -47
  421. package/src/migration/slack-confirm.ts +17 -15
  422. package/src/naite/naite-reporter.ts +1 -1
  423. package/src/naite/naite.ts +97 -24
  424. package/src/runtime-type.ts +34 -0
  425. package/src/ssr/hmr-opt-out.ts +78 -0
  426. package/src/ssr/renderer.ts +6 -0
  427. package/src/storage/base-file.ts +13 -13
  428. package/src/storage/buffered-file.ts +11 -11
  429. package/src/storage/s3-driver.ts +4 -1
  430. package/src/storage/uploaded-file.ts +8 -8
  431. package/src/stream/__tests__/ws-contracts.test.ts +4 -2
  432. package/src/stream/__tests__/ws-telemetry.test.ts +1 -1
  433. package/src/stream/__tests__/ws.test.ts +30 -6
  434. package/src/stream/sse.ts +12 -11
  435. package/src/stream/ws-core.ts +1 -1
  436. package/src/stream/ws-delivery.ts +16 -7
  437. package/src/stream/ws-local-connection-store.ts +2 -3
  438. package/src/stream/ws-presence-store.ts +6 -1
  439. package/src/stream/ws-registry.ts +16 -7
  440. package/src/stream/ws-telemetry.ts +66 -43
  441. package/src/stream/ws.ts +73 -39
  442. package/src/syncer/__tests__/api-parser.websocket-type-ref.test.ts +3 -2
  443. package/src/syncer/__tests__/http-validator-registry.test.ts +137 -0
  444. package/src/syncer/api-parser.ts +67 -27
  445. package/src/syncer/checksum.ts +17 -11
  446. package/src/syncer/code-generator.ts +25 -17
  447. package/src/syncer/entity-operations.ts +3 -5
  448. package/src/syncer/file-copy.ts +46 -0
  449. package/src/syncer/file-patterns.ts +11 -8
  450. package/src/syncer/file-tracking.ts +3 -4
  451. package/src/syncer/filesystem-dependencies.ts +73 -0
  452. package/src/syncer/module-loader.ts +8 -4
  453. package/src/syncer/syncer-actions.ts +56 -18
  454. package/src/syncer/syncer.ts +116 -43
  455. package/src/syncer/watcher.ts +8 -4
  456. package/src/tasks/decorator.ts +20 -12
  457. package/src/tasks/step-wrapper.ts +19 -9
  458. package/src/tasks/workflow-manager.ts +15 -9
  459. package/src/template/__tests__/http_validators.template.test.ts +160 -0
  460. package/src/template/__tests__/services.template.mutation.test.ts +24 -23
  461. package/src/template/__tests__/services.template.websocket.test.ts +21 -25
  462. package/src/template/entity-converter.ts +5 -2
  463. package/src/template/helpers.ts +8 -9
  464. package/src/template/implementations/generated.template.ts +5 -4
  465. package/src/template/implementations/generated_http.template.ts +61 -15
  466. package/src/template/implementations/generated_sso.template.ts +15 -4
  467. package/src/template/implementations/http_validators.template.ts +175 -0
  468. package/src/template/implementations/model.template.ts +3 -1
  469. package/src/template/implementations/sd.template.ts +81 -41
  470. package/src/template/implementations/services.template.ts +2 -2
  471. package/src/template/implementations/view_form.template.ts +56 -39
  472. package/src/template/implementations/view_list.template.ts +31 -23
  473. package/src/template/template-manager.ts +15 -13
  474. package/src/template/template-types.ts +13 -5
  475. package/src/template/template.ts +4 -3
  476. package/src/template/zod-converter.ts +206 -91
  477. package/src/testing/__tests__/dev-test-routes.test.ts +85 -25
  478. package/src/testing/__tests__/dev-vitest-manager.test.ts +15 -15
  479. package/src/testing/_relation-graph.ts +4 -1
  480. package/src/testing/bootstrap.ts +12 -5
  481. package/src/testing/data-explorer.ts +102 -53
  482. package/src/testing/dev-test-routes.ts +87 -50
  483. package/src/testing/dev-vitest-manager.ts +88 -32
  484. package/src/testing/faker-mappings.ts +2 -2
  485. package/src/testing/filesystem.ts +1 -0
  486. package/src/testing/fixture-generator.ts +191 -131
  487. package/src/testing/fixture-loader.ts +5 -1
  488. package/src/testing/fixture-manager.ts +129 -90
  489. package/src/testing/global-setup.ts +7 -3
  490. package/src/testing/index.ts +5 -0
  491. package/src/types/__tests__/entity-json-schema-search-text.test.ts +9 -3
  492. package/src/types/types.ts +184 -158
  493. package/src/ui/ai-api.ts +9 -7
  494. package/src/ui/ai-client.ts +61 -56
  495. package/src/ui/api.ts +727 -616
  496. package/src/ui/async-route.ts +4 -0
  497. package/src/ui/cdd-service.ts +35 -12
  498. package/src/ui/migrations-api.ts +63 -51
  499. package/src/utils/formatter.ts +7 -3
  500. package/src/utils/fs-utils.ts +5 -5
  501. package/src/utils/model.ts +4 -5
  502. package/src/utils/object-utils.ts +32 -22
  503. package/src/utils/process-utils.ts +4 -1
  504. package/src/utils/runtime-value.ts +43 -0
  505. package/src/utils/sql-parser.ts +13 -6
  506. package/src/utils/type-utils.ts +9 -7
  507. package/src/utils/utils.ts +19 -21
  508. package/src/utils/zod-error.ts +4 -2
  509. package/src/vector/chunking.ts +6 -1
  510. package/src/vector/embedding.ts +2 -1
  511. package/src/vector/types.ts +4 -2
  512. package/tsdown.api.config.ts +5 -2
  513. package/dist/ui-web/assets/index-C0m1pk6K.js +0 -177
@@ -1,6 +1,8 @@
1
+ import { init_runtime_value, isStringValue } from "../utils/runtime-value.js";
1
2
  import { getValidClientIp, init_client_ip } from "./audit-log/client-ip.js";
2
3
  import { createHash } from "node:crypto";
3
4
  //#region src/auth/audit-log-ingestor.ts
5
+ init_runtime_value();
4
6
  init_client_ip();
5
7
  const AUDIT_EVENT_SOURCE = "better_auth";
6
8
  const AUDIT_EVENT_SOURCE_VERSION = "better-auth|@better-auth/infra";
@@ -44,7 +46,7 @@ const USER_EVENT_TYPES = /* @__PURE__ */ new Set([
44
46
  ]);
45
47
  function pickString(source, key) {
46
48
  const value = source[key];
47
- return typeof value === "string" ? value : null;
49
+ return isStringValue(value) ? value : null;
48
50
  }
49
51
  function pickFirstString(source, keys) {
50
52
  for (const key of keys) {
@@ -55,7 +57,7 @@ function pickFirstString(source, keys) {
55
57
  }
56
58
  function parseOccurredAt(raw) {
57
59
  if (raw instanceof Date && !Number.isNaN(raw.getTime())) return raw;
58
- if (typeof raw === "string") {
60
+ if (isStringValue(raw)) {
59
61
  const parsed = new Date(raw);
60
62
  if (!Number.isNaN(parsed.getTime())) return parsed;
61
63
  }
@@ -71,23 +73,25 @@ function classifyCategory(eventType) {
71
73
  return "user";
72
74
  }
73
75
  function computeDedupeKey(parts) {
74
- const norm = (v) => v ?? "";
75
76
  const raw = [
76
77
  parts.source,
77
78
  parts.event_type,
78
79
  parts.event_key,
79
- norm(parts.actor_user_id),
80
- norm(parts.subject_user_id),
81
- norm(parts.organization_id),
82
- norm(parts.team_id),
83
- norm(parts.session_id),
84
- norm(parts.identifier),
85
- norm(parts.reason),
86
- norm(parts.action),
80
+ normalizeNullableKeyPart(parts.actor_user_id),
81
+ normalizeNullableKeyPart(parts.subject_user_id),
82
+ normalizeNullableKeyPart(parts.organization_id),
83
+ normalizeNullableKeyPart(parts.team_id),
84
+ normalizeNullableKeyPart(parts.session_id),
85
+ normalizeNullableKeyPart(parts.identifier),
86
+ normalizeNullableKeyPart(parts.reason),
87
+ normalizeNullableKeyPart(parts.action),
87
88
  parts.occurred_at.toISOString()
88
89
  ].join("|");
89
90
  return createHash("sha256").update(raw).digest("hex");
90
91
  }
92
+ function normalizeNullableKeyPart(value) {
93
+ return value ?? "";
94
+ }
91
95
  function computeEventIdDedupeKey(source, eventId) {
92
96
  return createHash("sha256").update(`${source}|${eventId}`).digest("hex");
93
97
  }
@@ -174,4 +178,4 @@ async function ingestAuditEvent(db, event) {
174
178
  //#endregion
175
179
  export { ingestAuditEvent };
176
180
 
177
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbG9nLWluZ2VzdG9yLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdXRoL2F1ZGl0LWxvZy1pbmdlc3Rvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5cbmltcG9ydCB7IHR5cGUgS25leCB9IGZyb20gXCJrbmV4XCI7XG5cbmltcG9ydCB7IGdldFZhbGlkQ2xpZW50SXAgfSBmcm9tIFwiLi9hdWRpdC1sb2cvY2xpZW50LWlwXCI7XG5pbXBvcnQgeyB0eXBlIEF1ZGl0TG9nRXZlbnQgfSBmcm9tIFwiLi9hdWRpdC1sb2cvZXZlbnRzXCI7XG5cbmNvbnN0IEFVRElUX0VWRU5UX1NPVVJDRSA9IFwiYmV0dGVyX2F1dGhcIjtcbmNvbnN0IEFVRElUX0VWRU5UX1NPVVJDRV9WRVJTSU9OID0gXCJiZXR0ZXItYXV0aHxAYmV0dGVyLWF1dGgvaW5mcmFcIjtcblxuY29uc3QgU0VTU0lPTl9FVkVOVF9UWVBFUyA9IG5ldyBTZXQ8c3RyaW5nPihbXG4gIFwidXNlcl9zaWduZWRfaW5cIixcbiAgXCJ1c2VyX3NpZ25lZF9vdXRcIixcbiAgXCJ1c2VyX3NpZ25faW5fZmFpbGVkXCIsXG4gIFwic2Vzc2lvbl9jcmVhdGVkXCIsXG4gIFwic2Vzc2lvbl9yZXZva2VkXCIsXG4gIFwiYWxsX3Nlc3Npb25zX3Jldm9rZWRcIixcbiAgXCJ1c2VyX2ltcGVyc29uYXRlZFwiLFxuICBcInVzZXJfaW1wZXJzb25hdGVkX3N0b3BwZWRcIixcbl0pO1xuXG5jb25zdCBBQ0NPVU5UX0VWRU5UX1RZUEVTID0gbmV3IFNldDxzdHJpbmc+KFtcbiAgXCJhY2NvdW50X2xpbmtlZFwiLFxuICBcImFjY291bnRfdW5saW5rZWRcIixcbiAgXCJwYXNzd29yZF9jaGFuZ2VkXCIsXG5cbiAgLy8gQGJldHRlci1hdXRoL2luZnJhQDAuMS4xNCDquLDspIAgRVZFTlRfVFlQRVMg7IOB7IiY7JeQ64qUIOygleydmOuQmOyWtCDsnojsnLzrgpgg7Iuk7KCcIHRyYWNrRXZlbnQoKSDtmLjstpzsnbQg7JeG64qUIOuvuOq1rO2YhCDsnbTrsqTtirjsnoRcbiAgLy8g7Zal7ZuEIOuyhOyghOyXkOyEnCBlbWl065CgIOqyveyasOulvCDrjIDruYTtlbQgYWNjb3VudOuhnCDsnoTsi5wg65Ox66GdXG4gIFwidHdvX2ZhY3Rvcl9lbmFibGVkXCIsXG4gIFwidHdvX2ZhY3Rvcl9kaXNhYmxlZFwiLFxuICBcInR3b19mYWN0b3JfdmVyaWZpZWRcIixcbl0pO1xuXG5jb25zdCBWRVJJRklDQVRJT05fRVZFTlRfVFlQRVMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICBcImVtYWlsX3ZlcmlmaWNhdGlvbl9zZW50XCIsXG4gIFwicGFzc3dvcmRfcmVzZXRfcmVxdWVzdGVkXCIsXG4gIFwicGFzc3dvcmRfcmVzZXRfY29tcGxldGVkXCIsXG5dKTtcblxuY29uc3QgU0VDVVJJVFlfRVZFTlRfVFlQRVMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICBcInNlY3VyaXR5X2Jsb2NrZWRcIixcbiAgXCJzZWN1cml0eV9hbGxvd2VkXCIsXG4gIFwic2VjdXJpdHlfY2hhbGxlbmdlZFwiLFxuICBcInNlY3VyaXR5X3N0YWxlX2FjY291bnRcIixcbl0pO1xuXG5jb25zdCBVU0VSX0VWRU5UX1RZUEVTID0gbmV3IFNldDxzdHJpbmc+KFtcbiAgXCJ1c2VyX2NyZWF0ZWRcIixcbiAgXCJwcm9maWxlX3VwZGF0ZWRcIixcbiAgXCJwcm9maWxlX2ltYWdlX3VwZGF0ZWRcIixcbiAgXCJlbWFpbF92ZXJpZmllZFwiLFxuICBcInVzZXJfYmFubmVkXCIsXG4gIFwidXNlcl91bmJhbm5lZFwiLFxuICBcInVzZXJfZGVsZXRlZFwiLFxuXSk7XG5cbmZ1bmN0aW9uIHBpY2tTdHJpbmcoc291cmNlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwga2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgdmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gcGlja0ZpcnN0U3RyaW5nKHNvdXJjZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGtleXM6IHJlYWRvbmx5IHN0cmluZ1tdKTogc3RyaW5nIHwgbnVsbCB7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBpY2tTdHJpbmcoc291cmNlLCBrZXkpO1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gcGFyc2VPY2N1cnJlZEF0KHJhdzogdW5rbm93bik6IERhdGUge1xuICBpZiAocmF3IGluc3RhbmNlb2YgRGF0ZSAmJiAhTnVtYmVyLmlzTmFOKHJhdy5nZXRUaW1lKCkpKSB7XG4gICAgcmV0dXJuIHJhdztcbiAgfVxuICBpZiAodHlwZW9mIHJhdyA9PT0gXCJzdHJpbmdcIikge1xuICAgIGNvbnN0IHBhcnNlZCA9IG5ldyBEYXRlKHJhdyk7XG4gICAgaWYgKCFOdW1iZXIuaXNOYU4ocGFyc2VkLmdldFRpbWUoKSkpIHtcbiAgICAgIHJldHVybiBwYXJzZWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXcgRGF0ZSgpO1xufVxuXG5mdW5jdGlvbiBjbGFzc2lmeUNhdGVnb3J5KFxuICBldmVudFR5cGU6IHN0cmluZyxcbik6IFwidXNlclwiIHwgXCJzZXNzaW9uXCIgfCBcImFjY291bnRcIiB8IFwidmVyaWZpY2F0aW9uXCIgfCBcIm9yZ2FuaXphdGlvblwiIHwgXCJzZWN1cml0eVwiIHtcbiAgaWYgKGV2ZW50VHlwZS5zdGFydHNXaXRoKFwib3JnYW5pemF0aW9uX1wiKSkge1xuICAgIHJldHVybiBcIm9yZ2FuaXphdGlvblwiO1xuICB9XG4gIGlmIChTRVNTSU9OX0VWRU5UX1RZUEVTLmhhcyhldmVudFR5cGUpKSB7XG4gICAgcmV0dXJuIFwic2Vzc2lvblwiO1xuICB9XG4gIGlmIChBQ0NPVU5UX0VWRU5UX1RZUEVTLmhhcyhldmVudFR5cGUpKSB7XG4gICAgcmV0dXJuIFwiYWNjb3VudFwiO1xuICB9XG4gIGlmIChWRVJJRklDQVRJT05fRVZFTlRfVFlQRVMuaGFzKGV2ZW50VHlwZSkpIHtcbiAgICByZXR1cm4gXCJ2ZXJpZmljYXRpb25cIjtcbiAgfVxuICBpZiAoU0VDVVJJVFlfRVZFTlRfVFlQRVMuaGFzKGV2ZW50VHlwZSkpIHtcbiAgICByZXR1cm4gXCJzZWN1cml0eVwiO1xuICB9XG4gIGlmIChVU0VSX0VWRU5UX1RZUEVTLmhhcyhldmVudFR5cGUpKSB7XG4gICAgcmV0dXJuIFwidXNlclwiO1xuICB9XG4gIHJldHVybiBcInVzZXJcIjtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZURlZHVwZUtleShwYXJ0czoge1xuICBzb3VyY2U6IHN0cmluZztcbiAgZXZlbnRfdHlwZTogc3RyaW5nO1xuICBldmVudF9rZXk6IHN0cmluZztcbiAgYWN0b3JfdXNlcl9pZDogc3RyaW5nIHwgbnVsbDtcbiAgc3ViamVjdF91c2VyX2lkOiBzdHJpbmcgfCBudWxsO1xuICBvcmdhbml6YXRpb25faWQ6IHN0cmluZyB8IG51bGw7XG4gIHRlYW1faWQ6IHN0cmluZyB8IG51bGw7XG4gIHNlc3Npb25faWQ6IHN0cmluZyB8IG51bGw7XG4gIGlkZW50aWZpZXI6IHN0cmluZyB8IG51bGw7XG4gIHJlYXNvbjogc3RyaW5nIHwgbnVsbDtcbiAgYWN0aW9uOiBzdHJpbmcgfCBudWxsO1xuICBvY2N1cnJlZF9hdDogRGF0ZTtcbn0pOiBzdHJpbmcge1xuICBjb25zdCBub3JtID0gKHY6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcgPT4gdiA/PyBcIlwiO1xuICBjb25zdCByYXcgPSBbXG4gICAgcGFydHMuc291cmNlLFxuICAgIHBhcnRzLmV2ZW50X3R5cGUsXG4gICAgcGFydHMuZXZlbnRfa2V5LFxuICAgIG5vcm0ocGFydHMuYWN0b3JfdXNlcl9pZCksXG4gICAgbm9ybShwYXJ0cy5zdWJqZWN0X3VzZXJfaWQpLFxuICAgIG5vcm0ocGFydHMub3JnYW5pemF0aW9uX2lkKSxcbiAgICBub3JtKHBhcnRzLnRlYW1faWQpLFxuICAgIG5vcm0ocGFydHMuc2Vzc2lvbl9pZCksXG4gICAgbm9ybShwYXJ0cy5pZGVudGlmaWVyKSxcbiAgICBub3JtKHBhcnRzLnJlYXNvbiksXG4gICAgbm9ybShwYXJ0cy5hY3Rpb24pLFxuICAgIHBhcnRzLm9jY3VycmVkX2F0LnRvSVNPU3RyaW5nKCksXG4gIF0uam9pbihcInxcIik7XG4gIHJldHVybiBjcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShyYXcpLmRpZ2VzdChcImhleFwiKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZUV2ZW50SWREZWR1cGVLZXkoc291cmNlOiBzdHJpbmcsIGV2ZW50SWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShgJHtzb3VyY2V9fCR7ZXZlbnRJZH1gKS5kaWdlc3QoXCJoZXhcIik7XG59XG5cbi8qKlxuICogc29uYW11QXVkaXRMb2cg7ZSM65+s6re47J247J20IOq1rOyEse2VnCBBdWRpdExvZ0V2ZW5066W8IGF1ZGl0X2V2ZW50cyDthYzsnbTruJTsl5Ag7KCB7J6s7ZWp64uI64ukLlxuICogT04gQ09ORkxJQ1QgKGRlZHVwZV9rZXkpIERPIE5PVEhJTkfsnLzroZwg7KSR67O17J2EIHNpbGVudCDrrLTsi5ztlanri4jri6QuXG4gKiBhdXRoLnBsdWdpbnPsl5Agc29uYW11QXVkaXRMb2coKSDstpTqsIAg7IucIHNvbmFtdSDrgrTrtoDsl5DshJwg7J6Q64+Z7Jy866GcIO2YuOy2nOuQqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluZ2VzdEF1ZGl0RXZlbnQoZGI6IEtuZXgsIGV2ZW50OiBBdWRpdExvZ0V2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGV2ZW50RGF0YSA9IGV2ZW50LmV2ZW50RGF0YTtcbiAgY29uc3Qgb2NjdXJyZWRfYXQgPSBwYXJzZU9jY3VycmVkQXQoZXZlbnREYXRhW1wib2NjdXJyZWRBdFwiXSk7XG5cbiAgY29uc3QgYWN0b3JfdXNlcl9pZCA9IHBpY2tTdHJpbmcoZXZlbnREYXRhLCBcInRyaWdnZXJlZEJ5XCIpO1xuICBjb25zdCBzdWJqZWN0X3VzZXJfaWQgPSBwaWNrRmlyc3RTdHJpbmcoZXZlbnREYXRhLCBbXG4gICAgXCJ1c2VySWRcIixcbiAgICBcInVzZXJpZFwiLFxuICAgIFwiYWNjZXB0ZWRCeUlkXCIsXG4gICAgXCJyZWplY3RlZEJ5SWRcIixcbiAgXSk7XG4gIGNvbnN0IG9yZ2FuaXphdGlvbl9pZCA9IHBpY2tTdHJpbmcoZXZlbnREYXRhLCBcIm9yZ2FuaXphdGlvbklkXCIpO1xuICBjb25zdCB0ZWFtX2lkID0gcGlja0ZpcnN0U3RyaW5nKGV2ZW50RGF0YSwgW1widGVhbUlkXCIsIFwiaW52aXRlZVRlYW1JZFwiXSk7XG4gIGNvbnN0IHNlc3Npb25faWQgPSBwaWNrU3RyaW5nKGV2ZW50RGF0YSwgXCJzZXNzaW9uSWRcIik7XG4gIGNvbnN0IHByb3ZpZGVyX2lkID0gcGlja1N0cmluZyhldmVudERhdGEsIFwicHJvdmlkZXJJZFwiKTtcbiAgY29uc3QgbG9naW5fbWV0aG9kID0gcGlja1N0cmluZyhldmVudERhdGEsIFwibG9naW5NZXRob2RcIik7XG4gIGNvbnN0IGlkZW50aWZpZXIgPSBwaWNrRmlyc3RTdHJpbmcoZXZlbnREYXRhLCBbXG4gICAgXCJpZGVudGlmaWVyXCIsXG4gICAgXCJ1c2VyRW1haWxcIixcbiAgICBcIm1lbWJlckVtYWlsXCIsXG4gICAgXCJpbnZpdGVlRW1haWxcIixcbiAgICBcImFjY2VwdGVkQnlFbWFpbFwiLFxuICAgIFwicmVqZWN0ZWRCeUVtYWlsXCIsXG4gIF0pO1xuICBjb25zdCB2aXNpdG9yX2lkID0gcGlja1N0cmluZyhldmVudERhdGEsIFwidmlzaXRvcklkXCIpO1xuICBjb25zdCByZWFzb24gPSBwaWNrRmlyc3RTdHJpbmcoZXZlbnREYXRhLCBbXCJyZWFzb25cIiwgXCJiYW5SZWFzb25cIl0pO1xuICBjb25zdCBhY3Rpb24gPSBwaWNrU3RyaW5nKGV2ZW50RGF0YSwgXCJhY3Rpb25cIik7XG4gIGNvbnN0IHRyaWdnZXJfY29udGV4dCA9IHBpY2tTdHJpbmcoZXZlbnREYXRhLCBcInRyaWdnZXJDb250ZXh0XCIpO1xuICBjb25zdCB1c2VyX2FnZW50ID0gcGlja1N0cmluZyhldmVudERhdGEsIFwidXNlckFnZW50XCIpO1xuXG4gIGNvbnN0IGlwX2FkZHJlc3MgPSBnZXRWYWxpZENsaWVudElwKGV2ZW50LmlwQWRkcmVzcyk7XG4gIGNvbnN0IGNpdHkgPSBldmVudC5jaXR5ID8/IG51bGw7XG4gIGNvbnN0IGNvdW50cnkgPSBldmVudC5jb3VudHJ5ID8/IG51bGw7XG4gIGNvbnN0IGNvdW50cnlfY29kZSA9IGV2ZW50LmNvdW50cnlDb2RlID8/IG51bGw7XG5cbiAgY29uc3QgY2F0ZWdvcnkgPSBjbGFzc2lmeUNhdGVnb3J5KGV2ZW50LmV2ZW50VHlwZSk7XG4gIGNvbnN0IGRlZHVwZV9rZXkgPSBldmVudC5ldmVudElkXG4gICAgPyBjb21wdXRlRXZlbnRJZERlZHVwZUtleShBVURJVF9FVkVOVF9TT1VSQ0UsIGV2ZW50LmV2ZW50SWQpXG4gICAgOiBjb21wdXRlRGVkdXBlS2V5KHtcbiAgICAgICAgc291cmNlOiBBVURJVF9FVkVOVF9TT1VSQ0UsXG4gICAgICAgIGV2ZW50X3R5cGU6IGV2ZW50LmV2ZW50VHlwZSxcbiAgICAgICAgZXZlbnRfa2V5OiBldmVudC5ldmVudEtleSxcbiAgICAgICAgYWN0b3JfdXNlcl9pZCxcbiAgICAgICAgc3ViamVjdF91c2VyX2lkLFxuICAgICAgICBvcmdhbml6YXRpb25faWQsXG4gICAgICAgIHRlYW1faWQsXG4gICAgICAgIHNlc3Npb25faWQsXG4gICAgICAgIGlkZW50aWZpZXIsXG4gICAgICAgIHJlYXNvbixcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBvY2N1cnJlZF9hdCxcbiAgICAgIH0pO1xuXG4gIC8vIE9OIENPTkZMSUNUIERPIE5PVEhJTkc6IGRlZHVwZV9rZXkgVU5JUVVFIOychOuwmOydhCBzaWxlbnQg66y07IucLlxuICAvLyB0cnkvY2F0Y2gg67Cp7Iud7J2AIFBHIOy7pOuEpeyFmOydhCBhYm9ydGVkIOyDge2DnOuhnCDrp4zrk5zrr4DroZwg7IKs7Jqp7ZWY7KeAIOyViuuKlOuLpC5cbiAgY29uc3QgaW5zZXJ0ZWQgPSBhd2FpdCBkYihcImF1ZGl0X2V2ZW50c1wiKVxuICAgIC5pbnNlcnQoe1xuICAgICAgc291cmNlOiBBVURJVF9FVkVOVF9TT1VSQ0UsXG4gICAgICBzb3VyY2VfdmVyc2lvbjogQVVESVRfRVZFTlRfU09VUkNFX1ZFUlNJT04sXG4gICAgICBjYXRlZ29yeSxcbiAgICAgIGV2ZW50X3R5cGU6IGV2ZW50LmV2ZW50VHlwZSxcbiAgICAgIGV2ZW50X2tleTogZXZlbnQuZXZlbnRLZXksXG4gICAgICBkZWR1cGVfa2V5LFxuICAgICAgYWN0b3JfdXNlcl9pZCxcbiAgICAgIHN1YmplY3RfdXNlcl9pZCxcbiAgICAgIG9yZ2FuaXphdGlvbl9pZCxcbiAgICAgIHRlYW1faWQsXG4gICAgICBzZXNzaW9uX2lkLFxuICAgICAgcHJvdmlkZXJfaWQsXG4gICAgICBsb2dpbl9tZXRob2QsXG4gICAgICBpZGVudGlmaWVyLFxuICAgICAgdmlzaXRvcl9pZCxcbiAgICAgIHJlYXNvbixcbiAgICAgIGFjdGlvbixcbiAgICAgIHRyaWdnZXJfY29udGV4dCxcbiAgICAgIGlwX2FkZHJlc3MsXG4gICAgICBjb3VudHJ5X2NvZGUsXG4gICAgICBjb3VudHJ5LFxuICAgICAgY2l0eSxcbiAgICAgIHVzZXJfYWdlbnQsXG4gICAgICBwYXlsb2FkX2pzb246IGV2ZW50RGF0YSxcbiAgICAgIG9jY3VycmVkX2F0LFxuICAgIH0pXG4gICAgLm9uQ29uZmxpY3QoXCJkZWR1cGVfa2V5XCIpXG4gICAgLmlnbm9yZSgpXG4gICAgLnJldHVybmluZyhcImRlZHVwZV9rZXlcIik7XG5cbiAgaWYgKGluc2VydGVkLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybjsgLy8gc2lsZW50IGRlZHVwZVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7OztlQUl3RDtBQUd4RCxNQUFNLHFCQUFxQjtBQUMzQixNQUFNLDZCQUE2QjtBQUVuQyxNQUFNLHNDQUFzQixJQUFJLElBQVk7Q0FDMUM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtBQUNGLENBQUM7QUFFRCxNQUFNLHNDQUFzQixJQUFJLElBQVk7Q0FDMUM7Q0FDQTtDQUNBO0NBSUE7Q0FDQTtDQUNBO0FBQ0YsQ0FBQztBQUVELE1BQU0sMkNBQTJCLElBQUksSUFBWTtDQUMvQztDQUNBO0NBQ0E7QUFDRixDQUFDO0FBRUQsTUFBTSx1Q0FBdUIsSUFBSSxJQUFZO0NBQzNDO0NBQ0E7Q0FDQTtDQUNBO0FBQ0YsQ0FBQztBQUVELE1BQU0sbUNBQW1CLElBQUksSUFBWTtDQUN2QztDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtBQUNGLENBQUM7QUFFRCxTQUFTLFdBQVcsUUFBaUMsS0FBNEI7Q0FDL0UsTUFBTSxRQUFRLE9BQU87Q0FDckIsT0FBTyxPQUFPLFVBQVUsV0FBVyxRQUFRO0FBQzdDO0FBRUEsU0FBUyxnQkFBZ0IsUUFBaUMsTUFBd0M7Q0FDaEcsS0FBSyxNQUFNLE9BQU8sTUFBTTtFQUN0QixNQUFNLFFBQVEsV0FBVyxRQUFRLEdBQUc7RUFDcEMsSUFBSSxVQUFVLE1BQ1osT0FBTztDQUVYO0NBQ0EsT0FBTztBQUNUO0FBRUEsU0FBUyxnQkFBZ0IsS0FBb0I7Q0FDM0MsSUFBSSxlQUFlLFFBQVEsQ0FBQyxPQUFPLE1BQU0sSUFBSSxRQUFRLENBQUMsR0FDcEQsT0FBTztDQUVULElBQUksT0FBTyxRQUFRLFVBQVU7RUFDM0IsTUFBTSxTQUFTLElBQUksS0FBSyxHQUFHO0VBQzNCLElBQUksQ0FBQyxPQUFPLE1BQU0sT0FBTyxRQUFRLENBQUMsR0FDaEMsT0FBTztD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
181
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbG9nLWluZ2VzdG9yLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdXRoL2F1ZGl0LWxvZy1pbmdlc3Rvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5cbmltcG9ydCB7IHR5cGUgS25leCB9IGZyb20gXCJrbmV4XCI7XG5cbmltcG9ydCB7IGlzU3RyaW5nVmFsdWUgfSBmcm9tIFwiLi4vdXRpbHMvcnVudGltZS12YWx1ZVwiO1xuaW1wb3J0IHsgZ2V0VmFsaWRDbGllbnRJcCB9IGZyb20gXCIuL2F1ZGl0LWxvZy9jbGllbnQtaXBcIjtcbmltcG9ydCB7IHR5cGUgQXVkaXRFdmVudERhdGEsIHR5cGUgQXVkaXRMb2dFdmVudCB9IGZyb20gXCIuL2F1ZGl0LWxvZy9ldmVudHNcIjtcblxuY29uc3QgQVVESVRfRVZFTlRfU09VUkNFID0gXCJiZXR0ZXJfYXV0aFwiO1xuY29uc3QgQVVESVRfRVZFTlRfU09VUkNFX1ZFUlNJT04gPSBcImJldHRlci1hdXRofEBiZXR0ZXItYXV0aC9pbmZyYVwiO1xuXG5jb25zdCBTRVNTSU9OX0VWRU5UX1RZUEVTID0gbmV3IFNldDxzdHJpbmc+KFtcbiAgXCJ1c2VyX3NpZ25lZF9pblwiLFxuICBcInVzZXJfc2lnbmVkX291dFwiLFxuICBcInVzZXJfc2lnbl9pbl9mYWlsZWRcIixcbiAgXCJzZXNzaW9uX2NyZWF0ZWRcIixcbiAgXCJzZXNzaW9uX3Jldm9rZWRcIixcbiAgXCJhbGxfc2Vzc2lvbnNfcmV2b2tlZFwiLFxuICBcInVzZXJfaW1wZXJzb25hdGVkXCIsXG4gIFwidXNlcl9pbXBlcnNvbmF0ZWRfc3RvcHBlZFwiLFxuXSk7XG5cbmNvbnN0IEFDQ09VTlRfRVZFTlRfVFlQRVMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICBcImFjY291bnRfbGlua2VkXCIsXG4gIFwiYWNjb3VudF91bmxpbmtlZFwiLFxuICBcInBhc3N3b3JkX2NoYW5nZWRcIixcblxuICAvLyBAYmV0dGVyLWF1dGgvaW5mcmFAMC4xLjE0IOq4sOykgCBFVkVOVF9UWVBFUyDsg4HsiJjsl5DripQg7KCV7J2Y65CY7Ja0IOyeiOycvOuCmCDsi6TsoJwgdHJhY2tFdmVudCgpIO2YuOy2nOydtCDsl4bripQg66+46rWs7ZiEIOydtOuypO2KuOyehFxuICAvLyDtlqXtm4Qg67KE7KCE7JeQ7IScIGVtaXTrkKAg6rK97Jqw66W8IOuMgOu5hO2VtCBhY2NvdW5066GcIOyehOyLnCDrk7HroZ1cbiAgXCJ0d29fZmFjdG9yX2VuYWJsZWRcIixcbiAgXCJ0d29fZmFjdG9yX2Rpc2FibGVkXCIsXG4gIFwidHdvX2ZhY3Rvcl92ZXJpZmllZFwiLFxuXSk7XG5cbmNvbnN0IFZFUklGSUNBVElPTl9FVkVOVF9UWVBFUyA9IG5ldyBTZXQ8c3RyaW5nPihbXG4gIFwiZW1haWxfdmVyaWZpY2F0aW9uX3NlbnRcIixcbiAgXCJwYXNzd29yZF9yZXNldF9yZXF1ZXN0ZWRcIixcbiAgXCJwYXNzd29yZF9yZXNldF9jb21wbGV0ZWRcIixcbl0pO1xuXG5jb25zdCBTRUNVUklUWV9FVkVOVF9UWVBFUyA9IG5ldyBTZXQ8c3RyaW5nPihbXG4gIFwic2VjdXJpdHlfYmxvY2tlZFwiLFxuICBcInNlY3VyaXR5X2FsbG93ZWRcIixcbiAgXCJzZWN1cml0eV9jaGFsbGVuZ2VkXCIsXG4gIFwic2VjdXJpdHlfc3RhbGVfYWNjb3VudFwiLFxuXSk7XG5cbmNvbnN0IFVTRVJfRVZFTlRfVFlQRVMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICBcInVzZXJfY3JlYXRlZFwiLFxuICBcInByb2ZpbGVfdXBkYXRlZFwiLFxuICBcInByb2ZpbGVfaW1hZ2VfdXBkYXRlZFwiLFxuICBcImVtYWlsX3ZlcmlmaWVkXCIsXG4gIFwidXNlcl9iYW5uZWRcIixcbiAgXCJ1c2VyX3VuYmFubmVkXCIsXG4gIFwidXNlcl9kZWxldGVkXCIsXG5dKTtcblxuZnVuY3Rpb24gcGlja1N0cmluZyhzb3VyY2U6IEF1ZGl0RXZlbnREYXRhLCBrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCB2YWx1ZSA9IHNvdXJjZVtrZXldO1xuICByZXR1cm4gaXNTdHJpbmdWYWx1ZSh2YWx1ZSkgPyB2YWx1ZSA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIHBpY2tGaXJzdFN0cmluZyhzb3VyY2U6IEF1ZGl0RXZlbnREYXRhLCBrZXlzOiByZWFkb25seSBzdHJpbmdbXSk6IHN0cmluZyB8IG51bGwge1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwaWNrU3RyaW5nKHNvdXJjZSwga2V5KTtcbiAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIHBhcnNlT2NjdXJyZWRBdDxWYWx1ZT4ocmF3OiBWYWx1ZSk6IERhdGUge1xuICBpZiAocmF3IGluc3RhbmNlb2YgRGF0ZSAmJiAhTnVtYmVyLmlzTmFOKHJhdy5nZXRUaW1lKCkpKSB7XG4gICAgcmV0dXJuIHJhdztcbiAgfVxuICBpZiAoaXNTdHJpbmdWYWx1ZShyYXcpKSB7XG4gICAgY29uc3QgcGFyc2VkID0gbmV3IERhdGUocmF3KTtcbiAgICBpZiAoIU51bWJlci5pc05hTihwYXJzZWQuZ2V0VGltZSgpKSkge1xuICAgICAgcmV0dXJuIHBhcnNlZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBEYXRlKCk7XG59XG5cbmZ1bmN0aW9uIGNsYXNzaWZ5Q2F0ZWdvcnkoXG4gIGV2ZW50VHlwZTogc3RyaW5nLFxuKTogXCJ1c2VyXCIgfCBcInNlc3Npb25cIiB8IFwiYWNjb3VudFwiIHwgXCJ2ZXJpZmljYXRpb25cIiB8IFwib3JnYW5pemF0aW9uXCIgfCBcInNlY3VyaXR5XCIge1xuICBpZiAoZXZlbnRUeXBlLnN0YXJ0c1dpdGgoXCJvcmdhbml6YXRpb25fXCIpKSB7XG4gICAgcmV0dXJuIFwib3JnYW5pemF0aW9uXCI7XG4gIH1cbiAgaWYgKFNFU1NJT05fRVZFTlRfVFlQRVMuaGFzKGV2ZW50VHlwZSkpIHtcbiAgICByZXR1cm4gXCJzZXNzaW9uXCI7XG4gIH1cbiAgaWYgKEFDQ09VTlRfRVZFTlRfVFlQRVMuaGFzKGV2ZW50VHlwZSkpIHtcbiAgICByZXR1cm4gXCJhY2NvdW50XCI7XG4gIH1cbiAgaWYgKFZFUklGSUNBVElPTl9FVkVOVF9UWVBFUy5oYXMoZXZlbnRUeXBlKSkge1xuICAgIHJldHVybiBcInZlcmlmaWNhdGlvblwiO1xuICB9XG4gIGlmIChTRUNVUklUWV9FVkVOVF9UWVBFUy5oYXMoZXZlbnRUeXBlKSkge1xuICAgIHJldHVybiBcInNlY3VyaXR5XCI7XG4gIH1cbiAgaWYgKFVTRVJfRVZFTlRfVFlQRVMuaGFzKGV2ZW50VHlwZSkpIHtcbiAgICByZXR1cm4gXCJ1c2VyXCI7XG4gIH1cbiAgcmV0dXJuIFwidXNlclwiO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlRGVkdXBlS2V5KHBhcnRzOiB7XG4gIHNvdXJjZTogc3RyaW5nO1xuICBldmVudF90eXBlOiBzdHJpbmc7XG4gIGV2ZW50X2tleTogc3RyaW5nO1xuICBhY3Rvcl91c2VyX2lkOiBzdHJpbmcgfCBudWxsO1xuICBzdWJqZWN0X3VzZXJfaWQ6IHN0cmluZyB8IG51bGw7XG4gIG9yZ2FuaXphdGlvbl9pZDogc3RyaW5nIHwgbnVsbDtcbiAgdGVhbV9pZDogc3RyaW5nIHwgbnVsbDtcbiAgc2Vzc2lvbl9pZDogc3RyaW5nIHwgbnVsbDtcbiAgaWRlbnRpZmllcjogc3RyaW5nIHwgbnVsbDtcbiAgcmVhc29uOiBzdHJpbmcgfCBudWxsO1xuICBhY3Rpb246IHN0cmluZyB8IG51bGw7XG4gIG9jY3VycmVkX2F0OiBEYXRlO1xufSk6IHN0cmluZyB7XG4gIGNvbnN0IHJhdyA9IFtcbiAgICBwYXJ0cy5zb3VyY2UsXG4gICAgcGFydHMuZXZlbnRfdHlwZSxcbiAgICBwYXJ0cy5ldmVudF9rZXksXG4gICAgbm9ybWFsaXplTnVsbGFibGVLZXlQYXJ0KHBhcnRzLmFjdG9yX3VzZXJfaWQpLFxuICAgIG5vcm1hbGl6ZU51bGxhYmxlS2V5UGFydChwYXJ0cy5zdWJqZWN0X3VzZXJfaWQpLFxuICAgIG5vcm1hbGl6ZU51bGxhYmxlS2V5UGFydChwYXJ0cy5vcmdhbml6YXRpb25faWQpLFxuICAgIG5vcm1hbGl6ZU51bGxhYmxlS2V5UGFydChwYXJ0cy50ZWFtX2lkKSxcbiAgICBub3JtYWxpemVOdWxsYWJsZUtleVBhcnQocGFydHMuc2Vzc2lvbl9pZCksXG4gICAgbm9ybWFsaXplTnVsbGFibGVLZXlQYXJ0KHBhcnRzLmlkZW50aWZpZXIpLFxuICAgIG5vcm1hbGl6ZU51bGxhYmxlS2V5UGFydChwYXJ0cy5yZWFzb24pLFxuICAgIG5vcm1hbGl6ZU51bGxhYmxlS2V5UGFydChwYXJ0cy5hY3Rpb24pLFxuICAgIHBhcnRzLm9jY3VycmVkX2F0LnRvSVNPU3RyaW5nKCksXG4gIF0uam9pbihcInxcIik7XG4gIHJldHVybiBjcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShyYXcpLmRpZ2VzdChcImhleFwiKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplTnVsbGFibGVLZXlQYXJ0KHZhbHVlOiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlID8/IFwiXCI7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVFdmVudElkRGVkdXBlS2V5KHNvdXJjZTogc3RyaW5nLCBldmVudElkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoYCR7c291cmNlfXwke2V2ZW50SWR9YCkuZGlnZXN0KFwiaGV4XCIpO1xufVxuXG4vKipcbiAqIHNvbmFtdUF1ZGl0TG9nIO2UjOufrOq3uOyduOydtCDqtazshLHtlZwgQXVkaXRMb2dFdmVudOulvCBhdWRpdF9ldmVudHMg7YWM7J2067iU7JeQIOyggeyerO2VqeuLiOuLpC5cbiAqIE9OIENPTkZMSUNUIChkZWR1cGVfa2V5KSBETyBOT1RISU5H7Jy866GcIOykkeuzteydhCBzaWxlbnQg66y07Iuc7ZWp64uI64ukLlxuICogYXV0aC5wbHVnaW5z7JeQIHNvbmFtdUF1ZGl0TG9nKCkg7LaU6rCAIOyLnCBzb25hbXUg64K067aA7JeQ7IScIOyekOuPmeycvOuhnCDtmLjstpzrkKnri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbmdlc3RBdWRpdEV2ZW50KGRiOiBLbmV4LCBldmVudDogQXVkaXRMb2dFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBldmVudERhdGEgPSBldmVudC5ldmVudERhdGE7XG4gIGNvbnN0IG9jY3VycmVkX2F0ID0gcGFyc2VPY2N1cnJlZEF0KGV2ZW50RGF0YVtcIm9jY3VycmVkQXRcIl0pO1xuXG4gIGNvbnN0IGFjdG9yX3VzZXJfaWQgPSBwaWNrU3RyaW5nKGV2ZW50RGF0YSwgXCJ0cmlnZ2VyZWRCeVwiKTtcbiAgY29uc3Qgc3ViamVjdF91c2VyX2lkID0gcGlja0ZpcnN0U3RyaW5nKGV2ZW50RGF0YSwgW1xuICAgIFwidXNlcklkXCIsXG4gICAgXCJ1c2VyaWRcIixcbiAgICBcImFjY2VwdGVkQnlJZFwiLFxuICAgIFwicmVqZWN0ZWRCeUlkXCIsXG4gIF0pO1xuICBjb25zdCBvcmdhbml6YXRpb25faWQgPSBwaWNrU3RyaW5nKGV2ZW50RGF0YSwgXCJvcmdhbml6YXRpb25JZFwiKTtcbiAgY29uc3QgdGVhbV9pZCA9IHBpY2tGaXJzdFN0cmluZyhldmVudERhdGEsIFtcInRlYW1JZFwiLCBcImludml0ZWVUZWFtSWRcIl0pO1xuICBjb25zdCBzZXNzaW9uX2lkID0gcGlja1N0cmluZyhldmVudERhdGEsIFwic2Vzc2lvbklkXCIpO1xuICBjb25zdCBwcm92aWRlcl9pZCA9IHBpY2tTdHJpbmcoZXZlbnREYXRhLCBcInByb3ZpZGVySWRcIik7XG4gIGNvbnN0IGxvZ2luX21ldGhvZCA9IHBpY2tTdHJpbmcoZXZlbnREYXRhLCBcImxvZ2luTWV0aG9kXCIpO1xuICBjb25zdCBpZGVudGlmaWVyID0gcGlja0ZpcnN0U3RyaW5nKGV2ZW50RGF0YSwgW1xuICAgIFwiaWRlbnRpZmllclwiLFxuICAgIFwidXNlckVtYWlsXCIsXG4gICAgXCJtZW1iZXJFbWFpbFwiLFxuICAgIFwiaW52aXRlZUVtYWlsXCIsXG4gICAgXCJhY2NlcHRlZEJ5RW1haWxcIixcbiAgICBcInJlamVjdGVkQnlFbWFpbFwiLFxuICBdKTtcbiAgY29uc3QgdmlzaXRvcl9pZCA9IHBpY2tTdHJpbmcoZXZlbnREYXRhLCBcInZpc2l0b3JJZFwiKTtcbiAgY29uc3QgcmVhc29uID0gcGlja0ZpcnN0U3RyaW5nKGV2ZW50RGF0YSwgW1wicmVhc29uXCIsIFwiYmFuUmVhc29uXCJdKTtcbiAgY29uc3QgYWN0aW9uID0gcGlja1N0cmluZyhldmVudERhdGEsIFwiYWN0aW9uXCIpO1xuICBjb25zdCB0cmlnZ2VyX2NvbnRleHQgPSBwaWNrU3RyaW5nKGV2ZW50RGF0YSwgXCJ0cmlnZ2VyQ29udGV4dFwiKTtcbiAgY29uc3QgdXNlcl9hZ2VudCA9IHBpY2tTdHJpbmcoZXZlbnREYXRhLCBcInVzZXJBZ2VudFwiKTtcblxuICBjb25zdCBpcF9hZGRyZXNzID0gZ2V0VmFsaWRDbGllbnRJcChldmVudC5pcEFkZHJlc3MpO1xuICBjb25zdCBjaXR5ID0gZXZlbnQuY2l0eSA/PyBudWxsO1xuICBjb25zdCBjb3VudHJ5ID0gZXZlbnQuY291bnRyeSA/PyBudWxsO1xuICBjb25zdCBjb3VudHJ5X2NvZGUgPSBldmVudC5jb3VudHJ5Q29kZSA/PyBudWxsO1xuXG4gIGNvbnN0IGNhdGVnb3J5ID0gY2xhc3NpZnlDYXRlZ29yeShldmVudC5ldmVudFR5cGUpO1xuICBjb25zdCBkZWR1cGVfa2V5ID0gZXZlbnQuZXZlbnRJZFxuICAgID8gY29tcHV0ZUV2ZW50SWREZWR1cGVLZXkoQVVESVRfRVZFTlRfU09VUkNFLCBldmVudC5ldmVudElkKVxuICAgIDogY29tcHV0ZURlZHVwZUtleSh7XG4gICAgICAgIHNvdXJjZTogQVVESVRfRVZFTlRfU09VUkNFLFxuICAgICAgICBldmVudF90eXBlOiBldmVudC5ldmVudFR5cGUsXG4gICAgICAgIGV2ZW50X2tleTogZXZlbnQuZXZlbnRLZXksXG4gICAgICAgIGFjdG9yX3VzZXJfaWQsXG4gICAgICAgIHN1YmplY3RfdXNlcl9pZCxcbiAgICAgICAgb3JnYW5pemF0aW9uX2lkLFxuICAgICAgICB0ZWFtX2lkLFxuICAgICAgICBzZXNzaW9uX2lkLFxuICAgICAgICBpZGVudGlmaWVyLFxuICAgICAgICByZWFzb24sXG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgb2NjdXJyZWRfYXQsXG4gICAgICB9KTtcblxuICAvLyBPTiBDT05GTElDVCBETyBOT1RISU5HOiBkZWR1cGVfa2V5IFVOSVFVRSDsnITrsJjsnYQgc2lsZW50IOustOyLnC5cbiAgLy8gdHJ5L2NhdGNoIOuwqeyLneydgCBQRyDsu6TrhKXshZjsnYQgYWJvcnRlZCDsg4Htg5zroZwg66eM65Oc66+A66GcIOyCrOyaqe2VmOyngCDslYrripTri6QuXG4gIGNvbnN0IGluc2VydGVkID0gYXdhaXQgZGIoXCJhdWRpdF9ldmVudHNcIilcbiAgICAuaW5zZXJ0KHtcbiAgICAgIHNvdXJjZTogQVVESVRfRVZFTlRfU09VUkNFLFxuICAgICAgc291cmNlX3ZlcnNpb246IEFVRElUX0VWRU5UX1NPVVJDRV9WRVJTSU9OLFxuICAgICAgY2F0ZWdvcnksXG4gICAgICBldmVudF90eXBlOiBldmVudC5ldmVudFR5cGUsXG4gICAgICBldmVudF9rZXk6IGV2ZW50LmV2ZW50S2V5LFxuICAgICAgZGVkdXBlX2tleSxcbiAgICAgIGFjdG9yX3VzZXJfaWQsXG4gICAgICBzdWJqZWN0X3VzZXJfaWQsXG4gICAgICBvcmdhbml6YXRpb25faWQsXG4gICAgICB0ZWFtX2lkLFxuICAgICAgc2Vzc2lvbl9pZCxcbiAgICAgIHByb3ZpZGVyX2lkLFxuICAgICAgbG9naW5fbWV0aG9kLFxuICAgICAgaWRlbnRpZmllcixcbiAgICAgIHZpc2l0b3JfaWQsXG4gICAgICByZWFzb24sXG4gICAgICBhY3Rpb24sXG4gICAgICB0cmlnZ2VyX2NvbnRleHQsXG4gICAgICBpcF9hZGRyZXNzLFxuICAgICAgY291bnRyeV9jb2RlLFxuICAgICAgY291bnRyeSxcbiAgICAgIGNpdHksXG4gICAgICB1c2VyX2FnZW50LFxuICAgICAgcGF5bG9hZF9qc29uOiBldmVudERhdGEsXG4gICAgICBvY2N1cnJlZF9hdCxcbiAgICB9KVxuICAgIC5vbkNvbmZsaWN0KFwiZGVkdXBlX2tleVwiKVxuICAgIC5pZ25vcmUoKVxuICAgIC5yZXR1cm5pbmcoXCJkZWR1cGVfa2V5XCIpO1xuXG4gIGlmIChpbnNlcnRlZC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47IC8vIHNpbGVudCBkZWR1cGVcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O21CQUlzRDtlQUNFO0FBR3hELE1BQU0scUJBQXFCO0FBQzNCLE1BQU0sNkJBQTZCO0FBRW5DLE1BQU0sc0NBQXNCLElBQUksSUFBWTtDQUMxQztDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0FBQ0YsQ0FBQztBQUVELE1BQU0sc0NBQXNCLElBQUksSUFBWTtDQUMxQztDQUNBO0NBQ0E7Q0FJQTtDQUNBO0NBQ0E7QUFDRixDQUFDO0FBRUQsTUFBTSwyQ0FBMkIsSUFBSSxJQUFZO0NBQy9DO0NBQ0E7Q0FDQTtBQUNGLENBQUM7QUFFRCxNQUFNLHVDQUF1QixJQUFJLElBQVk7Q0FDM0M7Q0FDQTtDQUNBO0NBQ0E7QUFDRixDQUFDO0FBRUQsTUFBTSxtQ0FBbUIsSUFBSSxJQUFZO0NBQ3ZDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0FBQ0YsQ0FBQztBQUVELFNBQVMsV0FBVyxRQUF3QixLQUE0QjtDQUN0RSxNQUFNLFFBQVEsT0FBTztDQUNyQixPQUFPLGNBQWMsS0FBSyxJQUFJLFFBQVE7QUFDeEM7QUFFQSxTQUFTLGdCQUFnQixRQUF3QixNQUF3QztDQUN2RixLQUFLLE1BQU0sT0FBTyxNQUFNO0VBQ3RCLE1BQU0s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
@@ -1 +1 @@
1
- {"version":3,"file":"auth-generator.d.ts","sourceRoot":"","sources":["../../src/auth/auth-generator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAyLvE,MAAM,WAAW,iCAAiC;IAChD;;;OAGG;IACH,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CA6B7D;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,GAAE,iCAAsC,GAC9C,OAAO,CAAC,IAAI,CAAC,CA0Cf"}
1
+ {"version":3,"file":"auth-generator.d.ts","sourceRoot":"","sources":["../../src/auth/auth-generator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AA8LvE,MAAM,WAAW,iCAAiC;IAChD;;;OAGG;IACH,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CA6B7D;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,GAAE,iCAAsC,GAC9C,OAAO,CAAC,IAAI,CAAC,CA0Cf"}
@@ -195,4 +195,4 @@ async function generateBetterAuthEntities(options = {}) {
195
195
  //#endregion
196
196
  export { addCompanionsToEntities, generateBetterAuthEntities };
197
197
 
198
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1nZW5lcmF0b3IuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F1dGgvYXV0aC1nZW5lcmF0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuXG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vYXBpL3NvbmFtdVwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IHR5cGUgRW50aXR5SW5kZXgsIHR5cGUgRW50aXR5SnNvbiwgdHlwZSBFbnRpdHlQcm9wIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBiZXR0ZXJBdXRoVjEgfSBmcm9tIFwiLi9iZXR0ZXItYXV0aC1lbnRpdGllc1wiO1xuaW1wb3J0IHsgRU5USVRZX0RFRklOSVRJT05TLCBpc1ZhbGlkUGx1Z2luSWQgfSBmcm9tIFwiLi9wbHVnaW5zL2VudGl0eS1kZWZpbml0aW9uc1wiO1xuaW1wb3J0IHsgdHlwZSBCZXR0ZXJBdXRoUGx1Z2luSWQgfSBmcm9tIFwiLi9wbHVnaW5zL2VudGl0eS1kZWZpbml0aW9uc1wiO1xuXG4vKipcbiAqIOuIhOudveuQnCBwcm9wcyDssL7quLBcbiAqL1xuZnVuY3Rpb24gZmluZE1pc3NpbmdQcm9wcyhleGlzdGluZ1Byb3BzOiBFbnRpdHlQcm9wW10sIHJlcXVpcmVkUHJvcHM6IEVudGl0eVByb3BbXSk6IEVudGl0eVByb3BbXSB7XG4gIGNvbnN0IGV4aXN0aW5nTmFtZXMgPSBuZXcgU2V0KGV4aXN0aW5nUHJvcHMubWFwKChwKSA9PiBwLm5hbWUpKTtcbiAgcmV0dXJuIHJlcXVpcmVkUHJvcHMuZmlsdGVyKChwKSA9PiAhZXhpc3RpbmdOYW1lcy5oYXMocC5uYW1lKSk7XG59XG5cbi8qKlxuICog7YOA7J6F7J20IOuzgOqyveuQnCBwcm9wcyDssL7quLAgKOuPmeydvCBuYW1lLCDri6TrpbggdHlwZSlcbiAqIEByZXR1cm5zIFvquLDsobQgcHJvcCBpbmRleCwg7IOIIHByb3BdW11cbiAqL1xuZnVuY3Rpb24gZmluZFByb3BzVG9VcGRhdGUoXG4gIGV4aXN0aW5nUHJvcHM6IEVudGl0eVByb3BbXSxcbiAgcmVxdWlyZWRQcm9wczogRW50aXR5UHJvcFtdLFxuKTogeyBpbmRleDogbnVtYmVyOyBuZXdQcm9wOiBFbnRpdHlQcm9wIH1bXSB7XG4gIGNvbnN0IHJlc3VsdDogeyBpbmRleDogbnVtYmVyOyBuZXdQcm9wOiBFbnRpdHlQcm9wIH1bXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgcmVxdWlyZWRQcm9wIG9mIHJlcXVpcmVkUHJvcHMpIHtcbiAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gZXhpc3RpbmdQcm9wcy5maW5kSW5kZXgoKHApID0+IHAubmFtZSA9PT0gcmVxdWlyZWRQcm9wLm5hbWUpO1xuICAgIGlmIChleGlzdGluZ0luZGV4ID09PSAtMSkgY29udGludWU7XG5cbiAgICBjb25zdCBleGlzdGluZ1Byb3AgPSBleGlzdGluZ1Byb3BzW2V4aXN0aW5nSW5kZXhdO1xuICAgIC8vIHR5cGXsnbQg64uk66W06rGw64KYIGNvbmUuZml4dHVyZVN0cmF0ZWd56rCAIOuLpOultOuptCDsl4XrjbDsnbTtirgg64yA7IOBXG4gICAgY29uc3QgY29uZUNoYW5nZWQgPSByZXF1aXJlZFByb3AuY29uZT8uZml4dHVyZVN0cmF0ZWd5ICE9PSBleGlzdGluZ1Byb3A/LmNvbmU/LmZpeHR1cmVTdHJhdGVneTtcbiAgICBpZiAoZXhpc3RpbmdQcm9wPy50eXBlICE9PSByZXF1aXJlZFByb3AudHlwZSB8fCBjb25lQ2hhbmdlZCkge1xuICAgICAgcmVzdWx0LnB1c2goeyBpbmRleDogZXhpc3RpbmdJbmRleCwgbmV3UHJvcDogcmVxdWlyZWRQcm9wIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICog64iE652965CcIGluZGV4ZXMg7LC+6riwXG4gKi9cbmZ1bmN0aW9uIGZpbmRNaXNzaW5nSW5kZXhlcyhcbiAgZXhpc3RpbmdJbmRleGVzOiBFbnRpdHlJbmRleFtdLFxuICByZXF1aXJlZEluZGV4ZXM6IEVudGl0eUluZGV4W10sXG4pOiBFbnRpdHlJbmRleFtdIHtcbiAgY29uc3QgZXhpc3RpbmdOYW1lcyA9IG5ldyBTZXQoZXhpc3RpbmdJbmRleGVzLm1hcCgoaSkgPT4gaS5uYW1lKSk7XG4gIHJldHVybiByZXF1aXJlZEluZGV4ZXMuZmlsdGVyKChpKSA9PiAhZXhpc3RpbmdOYW1lcy5oYXMoaS5uYW1lKSk7XG59XG5cbi8qKlxuICog64iE652965CcIHN1YnNldHMg7LC+6riwXG4gKi9cbmZ1bmN0aW9uIGZpbmRNaXNzaW5nU3Vic2V0cyhcbiAgZXhpc3RpbmdTdWJzZXRzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0sXG4gIHJlcXVpcmVkU3Vic2V0czogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9LFxuKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9IHtcbiAgY29uc3QgbWlzc2luZzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgZmllbGRzXSBvZiBPYmplY3QuZW50cmllcyhyZXF1aXJlZFN1YnNldHMpKSB7XG4gICAgaWYgKCFleGlzdGluZ1N1YnNldHNba2V5XSkge1xuICAgICAgbWlzc2luZ1trZXldID0gZmllbGRzO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbWlzc2luZztcbn1cblxuLyoqXG4gKiDsl5Tti7Dti7Drpbwg7IOd7ISx7ZWY6rGw64KYIOyXheuNsOydtO2KuO2VqeuLiOuLpC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY3JlYXRlT3JVcGRhdGVFbnRpdHkoZW50aXR5SnNvbjogRW50aXR5SnNvbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBleGlzdHMgPSBFbnRpdHlNYW5hZ2VyLmV4aXN0cyhlbnRpdHlKc29uLmlkKTtcblxuICBpZiAoIWV4aXN0cykge1xuICAgIC8vIOyDiCDsl5Tti7Dti7Ag7IOd7ISxXG4gICAgYXdhaXQgU29uYW11LnN5bmNlci5jcmVhdGVFbnRpdHkoe1xuICAgICAgZW50aXR5SWQ6IGVudGl0eUpzb24uaWQsXG4gICAgICB0YWJsZTogZW50aXR5SnNvbi50YWJsZSxcbiAgICAgIHRpdGxlOiBlbnRpdHlKc29uLnRpdGxlID8/IGVudGl0eUpzb24uaWQsXG4gICAgICBwcm9wczogZW50aXR5SnNvbi5wcm9wcyA/PyBbXSxcbiAgICAgIGluZGV4ZXM6IGVudGl0eUpzb24uaW5kZXhlcyA/PyBbXSxcbiAgICAgIHN1YnNldHM6IGVudGl0eUpzb24uc3Vic2V0cyA/PyB7fSxcbiAgICAgIGVudW1zOiBlbnRpdHlKc29uLmVudW1zID8/IHt9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgZW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQoZW50aXR5SnNvbi5pZCk7XG4gICAgYXdhaXQgZW50aXR5LnNhdmUoKTtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihgW0NSRUFURURdICR7ZW50aXR5SnNvbi5pZH1gKSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8g6riw7KG0IOyXlO2LsO2LsCDsl4XrjbDsnbTtirhcbiAgY29uc3QgZW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQoZW50aXR5SnNvbi5pZCk7XG4gIGxldCBoYXNDaGFuZ2VzID0gZmFsc2U7XG5cbiAgLy8g64iE652965CcIHByb3BzIOy2lOqwgFxuICBjb25zdCBtaXNzaW5nUHJvcHMgPSBmaW5kTWlzc2luZ1Byb3BzKGVudGl0eS5wcm9wcywgZW50aXR5SnNvbi5wcm9wcyA/PyBbXSk7XG4gIGZvciAoY29uc3QgcHJvcCBvZiBtaXNzaW5nUHJvcHMpIHtcbiAgICBhd2FpdCBlbnRpdHkuY3JlYXRlUHJvcChwcm9wKTtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihgW0FERCBQUk9QXSAke2VudGl0eUpzb24uaWR9LiR7cHJvcC5uYW1lfWApKTtcbiAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIO2DgOyeheydtCDrs4Dqsr3rkJwgcHJvcHMg7JeF642w7J207Yq4XG4gIGNvbnN0IHByb3BzVG9VcGRhdGUgPSBmaW5kUHJvcHNUb1VwZGF0ZShlbnRpdHkucHJvcHMsIGVudGl0eUpzb24ucHJvcHMgPz8gW10pO1xuICBmb3IgKGNvbnN0IHsgaW5kZXgsIG5ld1Byb3AgfSBvZiBwcm9wc1RvVXBkYXRlKSB7XG4gICAgY29uc3Qgb2xkVHlwZSA9IGVudGl0eS5wcm9wc1tpbmRleF0/LnR5cGU7XG4gICAgYXdhaXQgZW50aXR5Lm1vZGlmeVByb3AobmV3UHJvcCwgaW5kZXgpO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgY2hhbGsueWVsbG93KGBbVVBEQVRFIFBST1BdICR7ZW50aXR5SnNvbi5pZH0uJHtuZXdQcm9wLm5hbWV9OiAke29sZFR5cGV9IOKGkiAke25ld1Byb3AudHlwZX1gKSxcbiAgICApO1xuICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICB9XG5cbiAgLy8g64iE652965CcIGluZGV4ZXMg7LaU6rCAXG4gIGNvbnN0IG1pc3NpbmdJbmRleGVzID0gZmluZE1pc3NpbmdJbmRleGVzKGVudGl0eS5pbmRleGVzLCBlbnRpdHlKc29uLmluZGV4ZXMgPz8gW10pO1xuICBmb3IgKGNvbnN0IGluZGV4IG9mIG1pc3NpbmdJbmRleGVzKSB7XG4gICAgZW50aXR5LmluZGV4ZXMucHVzaChpbmRleCk7XG4gICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4oYFtBREQgSU5ERVhdICR7ZW50aXR5SnNvbi5pZH0uJHtpbmRleC5uYW1lfWApKTtcbiAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIOuIhOudveuQnCBzdWJzZXRzIOy2lOqwgFxuICBjb25zdCBtaXNzaW5nU3Vic2V0cyA9IGZpbmRNaXNzaW5nU3Vic2V0cyhcbiAgICBlbnRpdHkuc3Vic2V0cyxcbiAgICAoZW50aXR5SnNvbi5zdWJzZXRzID8/IHt9KSBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0sXG4gICk7XG4gIGZvciAoY29uc3QgW2tleSwgZmllbGRzXSBvZiBPYmplY3QuZW50cmllcyhtaXNzaW5nU3Vic2V0cykpIHtcbiAgICBlbnRpdHkuc3Vic2V0c1trZXldID0gZmllbGRzO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKGBbQUREIFNVQlNFVF0gJHtlbnRpdHlKc29uLmlkfS4ke2tleX1gKSk7XG4gICAgaGFzQ2hhbmdlcyA9IHRydWU7XG4gIH1cblxuICAvLyDrs4Dqsr3sgqztla0g7KCA7J6lXG4gIGlmIChoYXNDaGFuZ2VzKSB7XG4gICAgYXdhaXQgZW50aXR5LnNhdmUoKTtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5ibHVlKGBbVVBEQVRFRF0gJHtlbnRpdHlKc29uLmlkfWApKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5kaW0oYFtTS0lQXSAke2VudGl0eUpzb24uaWR9IC0gbm8gY2hhbmdlc2ApKTtcbiAgfVxufVxuXG4vKipcbiAqIOq4sOyhtCDsl5Tti7Dti7Dsl5AgcHJvcHPrpbwg7LaU6rCA7ZWp64uI64ukLlxuICovXG5hc3luYyBmdW5jdGlvbiBhZGRQcm9wc1RvRW50aXR5KGVudGl0eUlkOiBzdHJpbmcsIHByb3BzOiBFbnRpdHlQcm9wW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFFbnRpdHlNYW5hZ2VyLmV4aXN0cyhlbnRpdHlJZCkpIHtcbiAgICBjb25zb2xlLmxvZyhjaGFsay55ZWxsb3coYFtTS0lQXSAke2VudGl0eUlkfSAtIGVudGl0eSBub3QgZm91bmQsIGNhbm5vdCBhZGQgcHJvcHNgKSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQoZW50aXR5SWQpO1xuICBsZXQgaGFzQ2hhbmdlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG1pc3NpbmdQcm9wcyA9IGZpbmRNaXNzaW5nUHJvcHMoZW50aXR5LnByb3BzLCBwcm9wcyk7XG4gIGZvciAoY29uc3QgcHJvcCBvZiBtaXNzaW5nUHJvcHMpIHtcbiAgICBhd2FpdCBlbnRpdHkuY3JlYXRlUHJvcChwcm9wKTtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihgW0FERCBQUk9QXSAke2VudGl0eUlkfS4ke3Byb3AubmFtZX1gKSk7XG4gICAgaGFzQ2hhbmdlcyA9IHRydWU7XG4gIH1cblxuICBpZiAoaGFzQ2hhbmdlcykge1xuICAgIGF3YWl0IGVudGl0eS5zYXZlKCk7XG4gIH1cbn1cblxuLyoqXG4gKiDquLDsobQg7JeU7Yuw7Yuw7JeQIGluZGV4ZXPrpbwg7LaU6rCA7ZWp64uI64ukLlxuICovXG5hc3luYyBmdW5jdGlvbiBhZGRJbmRleGVzVG9FbnRpdHkoZW50aXR5SWQ6IHN0cmluZywgaW5kZXhlczogRW50aXR5SW5kZXhbXSk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIUVudGl0eU1hbmFnZXIuZXhpc3RzKGVudGl0eUlkKSkge1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLnllbGxvdyhgW1NLSVBdICR7ZW50aXR5SWR9IC0gZW50aXR5IG5vdCBmb3VuZCwgY2Fubm90IGFkZCBpbmRleGVzYCkpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUlkKTtcbiAgbGV0IGhhc0NoYW5nZXMgPSBmYWxzZTtcblxuICBjb25zdCBtaXNzaW5nSW5kZXhlcyA9IGZpbmRNaXNzaW5nSW5kZXhlcyhlbnRpdHkuaW5kZXhlcywgaW5kZXhlcyk7XG4gIGZvciAoY29uc3QgaW5kZXggb2YgbWlzc2luZ0luZGV4ZXMpIHtcbiAgICBlbnRpdHkuaW5kZXhlcy5wdXNoKGluZGV4KTtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihgW0FERCBJTkRFWF0gJHtlbnRpdHlJZH0uJHtpbmRleC5uYW1lfWApKTtcbiAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChoYXNDaGFuZ2VzKSB7XG4gICAgYXdhaXQgZW50aXR5LnNhdmUoKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlQmV0dGVyQXV0aEVudGl0aWVzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiDtmZzshLHtmZTtlaAg7ZSM65+s6re47J24IElEIOuqqeuhnVxuICAgKiDsmIg6IFtcInBob25lLW51bWJlclwiLCBcIjJmYVwiXVxuICAgKi9cbiAgcGx1Z2lucz86IEJldHRlckF1dGhQbHVnaW5JZFtdO1xufVxuXG4vKipcbiAqIOq4sOyhtCDtlITroZzsoJ3tirjsnZggZW50aXR5Lmpzb27sl5AgZml4dHVyZUNvbXBhbmlvbnPrpbwg7IaM6riJIOy2lOqwgO2VqeuLiOuLpC5cbiAqXG4gKiBiZXR0ZXJBdXRoVjEg6riw7KSA7Jy866GcIGZpeHR1cmVDb21wYW5pb25z6rCAIOygleydmOuQnCBlbnRpdHnrpbwg7LC+7JWEXG4gKiDtlITroZzsoJ3tirgg64K0IGVudGl0eS5qc29u7JeQIO2VtOuLuSBwcm9w7J2YIGNvbmXsl5AgZml4dHVyZUNvbXBhbmlvbnPqsIBcbiAqIOyXhuydhCDrlYzrp4wg7LaU6rCA7ZWp64uI64ukLiDsnbTrr7gg7J6I7Jy866m0IOyKpO2Cte2VqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkZENvbXBhbmlvbnNUb0VudGl0aWVzKCk6IFByb21pc2U8dm9pZD4ge1xuICBmb3IgKGNvbnN0IGVudGl0eUpzb24gb2YgYmV0dGVyQXV0aFYxKSB7XG4gICAgY29uc3QgaWRQcm9wID0gZW50aXR5SnNvbi5wcm9wcz8uZmluZCgocCkgPT4gcC5uYW1lID09PSBcImlkXCIpO1xuICAgIGlmICghaWRQcm9wPy5jb25lPy5maXh0dXJlQ29tcGFuaW9ucykgY29udGludWU7XG5cbiAgICBpZiAoIUVudGl0eU1hbmFnZXIuZXhpc3RzKGVudGl0eUpzb24uaWQpKSB7XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay55ZWxsb3coYFtTS0lQXSAke2VudGl0eUpzb24uaWR9IC0gbm90IGZvdW5kYCkpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgZW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQoZW50aXR5SnNvbi5pZCk7XG4gICAgY29uc3QgZXhpc3RpbmdJZFByb3AgPSBlbnRpdHkucHJvcHMuZmluZCgocCkgPT4gcC5uYW1lID09PSBcImlkXCIpO1xuICAgIGlmICghZXhpc3RpbmdJZFByb3ApIHtcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLnllbGxvdyhgW1NLSVBdICR7ZW50aXR5SnNvbi5pZH0uaWQgLSBwcm9wIG5vdCBmb3VuZGApKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChleGlzdGluZ0lkUHJvcC5jb25lPy5maXh0dXJlQ29tcGFuaW9ucykge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuZGltKGBbU0tJUF0gJHtlbnRpdHlKc29uLmlkfS5pZCAtIGZpeHR1cmVDb21wYW5pb25zIGFscmVhZHkgZXhpc3RzYCkpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgZXhpc3RpbmdJZFByb3AuY29uZSA9IHtcbiAgICAgIC4uLmV4aXN0aW5nSWRQcm9wLmNvbmUsXG4gICAgICBmaXh0dXJlQ29tcGFuaW9uczogaWRQcm9wLmNvbmUuZml4dHVyZUNvbXBhbmlvbnMsXG4gICAgfTtcbiAgICBhd2FpdCBlbnRpdHkuc2F2ZSgpO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKGBbVVBEQVRFRF0gJHtlbnRpdHlKc29uLmlkfS5pZCAtIGZpeHR1cmVDb21wYW5pb25zIGFkZGVkYCkpO1xuICB9XG59XG5cbi8qKlxuICogYmV0dGVyLWF1dGgg7JeU7Yuw7Yuw65Ok7J2EIFNvbmFtdeyXkCDsg53shLEv7JeF642w7J207Yq4XG4gKlxuICogQHBhcmFtIG9wdGlvbnMg7IOd7ISxIOyYteyFmFxuICogQHBhcmFtIG9wdGlvbnMucGx1Z2lucyDtmZzshLHtmZTtlaAg7ZSM65+s6re47J24IElEIOuqqeuhnVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVCZXR0ZXJBdXRoRW50aXRpZXMoXG4gIG9wdGlvbnM6IEdlbmVyYXRlQmV0dGVyQXV0aEVudGl0aWVzT3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgcGx1Z2lucyA9IFtdIH0gPSBvcHRpb25zO1xuXG4gIC8vIDEuIOq4sOuzuCDsl5Tti7Dti7Ag7IOd7ISxL+yXheuNsOydtO2KuFxuICBjb25zb2xlLmxvZyhjaGFsay5jeWFuKFwiXFxu8J+TpiBQcm9jZXNzaW5nIGNvcmUgZW50aXRpZXMuLi5cXG5cIikpO1xuICBmb3IgKGNvbnN0IGVudGl0eUpzb24gb2YgYmV0dGVyQXV0aFYxKSB7XG4gICAgYXdhaXQgY3JlYXRlT3JVcGRhdGVFbnRpdHkoZW50aXR5SnNvbik7XG4gIH1cblxuICAvLyAyLiDtlIzrn6zqt7jsnbgg7LKY66asXG4gIGlmIChwbHVnaW5zLmxlbmd0aCA+IDApIHtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5jeWFuKFwiXFxu8J+UjCBQcm9jZXNzaW5nIHBsdWdpbnMuLi5cXG5cIikpO1xuXG4gICAgZm9yIChjb25zdCBwbHVnaW5JZCBvZiBwbHVnaW5zKSB7XG4gICAgICBpZiAoIWlzVmFsaWRQbHVnaW5JZChwbHVnaW5JZCkpIHtcbiAgICAgICAgY29uc29sZS5sb2coY2hhbGsucmVkKGBbRVJST1JdIFVua25vd24gcGx1Z2luOiAke3BsdWdpbklkfWApKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVudGl0eURlZiA9IEVOVElUWV9ERUZJTklUSU9OU1twbHVnaW5JZF07XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5tYWdlbnRhKGBbUExVR0lOXSAke2VudGl0eURlZi5uYW1lfWApKTtcblxuICAgICAgLy8g7ZSM65+s6re47J247J2YIOyDiCDsl5Tti7Dti7Ag7IOd7ISxXG4gICAgICBmb3IgKGNvbnN0IGVudGl0eUpzb24gb2YgZW50aXR5RGVmLmVudGl0aWVzKSB7XG4gICAgICAgIGF3YWl0IGNyZWF0ZU9yVXBkYXRlRW50aXR5KGVudGl0eUpzb24pO1xuICAgICAgfVxuXG4gICAgICAvLyDquLDsobQg7JeU7Yuw7Yuw7JeQIO2VhOuTnCDstpTqsIBcbiAgICAgIGZvciAoY29uc3QgW2VudGl0eUlkLCBwcm9wc10gb2YgT2JqZWN0LmVudHJpZXMoZW50aXR5RGVmLmFkZGl0aW9uYWxQcm9wcykpIHtcbiAgICAgICAgYXdhaXQgYWRkUHJvcHNUb0VudGl0eShlbnRpdHlJZCwgcHJvcHMpO1xuICAgICAgfVxuXG4gICAgICAvLyDquLDsobQg7JeU7Yuw7Yuw7JeQIOyduOuNseyKpCDstpTqsIBcbiAgICAgIGlmIChlbnRpdHlEZWYuYWRkaXRpb25hbEluZGV4ZXMpIHtcbiAgICAgICAgZm9yIChjb25zdCBbZW50aXR5SWQsIGluZGV4ZXNdIG9mIE9iamVjdC5lbnRyaWVzKGVudGl0eURlZi5hZGRpdGlvbmFsSW5kZXhlcykpIHtcbiAgICAgICAgICBhd2FpdCBhZGRJbmRleGVzVG9FbnRpdHkoZW50aXR5SWQsIGluZGV4ZXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc29sZS5sb2coY2hhbGsuYm9sZChcIlxcbuKchSBEb25lISBiZXR0ZXItYXV0aCBlbnRpdGllcyBnZW5lcmF0ZWQuXCIpKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O1lBRXNDO29CQUNrQjswQkFFSDs7OztBQU9yRCxTQUFTLGlCQUFpQixlQUE2QixlQUEyQztDQUNoRyxNQUFNLGdCQUFnQixJQUFJLElBQUksY0FBYyxLQUFLLE1BQU0sRUFBRSxJQUFJLENBQUM7Q0FDOUQsT0FBTyxjQUFjLFFBQVEsTUFBTSxDQUFDLGNBQWMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUMvRDs7Ozs7QUFNQSxTQUFTLGtCQUNQLGVBQ0EsZUFDMEM7Q0FDMUMsTUFBTSxTQUFtRCxDQUFDO0NBRTFELEtBQUssTUFBTSxnQkFBZ0IsZUFBZTtFQUN4QyxNQUFNLGdCQUFnQixjQUFjLFdBQVcsTUFBTSxFQUFFLFNBQVMsYUFB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
198
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1nZW5lcmF0b3IuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F1dGgvYXV0aC1nZW5lcmF0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuXG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vYXBpL3NvbmFtdVwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IHR5cGUgRW50aXR5SW5kZXgsIHR5cGUgRW50aXR5SnNvbiwgdHlwZSBFbnRpdHlQcm9wIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBiZXR0ZXJBdXRoVjEgfSBmcm9tIFwiLi9iZXR0ZXItYXV0aC1lbnRpdGllc1wiO1xuaW1wb3J0IHsgRU5USVRZX0RFRklOSVRJT05TLCBpc1ZhbGlkUGx1Z2luSWQgfSBmcm9tIFwiLi9wbHVnaW5zL2VudGl0eS1kZWZpbml0aW9uc1wiO1xuaW1wb3J0IHsgdHlwZSBCZXR0ZXJBdXRoUGx1Z2luSWQgfSBmcm9tIFwiLi9wbHVnaW5zL2VudGl0eS1kZWZpbml0aW9uc1wiO1xuXG5pbnRlcmZhY2UgU3Vic2V0RmllbGRzIHtcbiAgW3N1YnNldEtleTogc3RyaW5nXTogc3RyaW5nW107XG59XG5cbi8qKlxuICog64iE652965CcIHByb3BzIOywvuq4sFxuICovXG5mdW5jdGlvbiBmaW5kTWlzc2luZ1Byb3BzKGV4aXN0aW5nUHJvcHM6IEVudGl0eVByb3BbXSwgcmVxdWlyZWRQcm9wczogRW50aXR5UHJvcFtdKTogRW50aXR5UHJvcFtdIHtcbiAgY29uc3QgZXhpc3RpbmdOYW1lcyA9IG5ldyBTZXQoZXhpc3RpbmdQcm9wcy5tYXAoKHApID0+IHAubmFtZSkpO1xuICByZXR1cm4gcmVxdWlyZWRQcm9wcy5maWx0ZXIoKHApID0+ICFleGlzdGluZ05hbWVzLmhhcyhwLm5hbWUpKTtcbn1cblxuLyoqXG4gKiDtg4DsnoXsnbQg67OA6rK965CcIHByb3BzIOywvuq4sCAo64+Z7J28IG5hbWUsIOuLpOuluCB0eXBlKVxuICogQHJldHVybnMgW+q4sOyhtCBwcm9wIGluZGV4LCDsg4ggcHJvcF1bXVxuICovXG5mdW5jdGlvbiBmaW5kUHJvcHNUb1VwZGF0ZShcbiAgZXhpc3RpbmdQcm9wczogRW50aXR5UHJvcFtdLFxuICByZXF1aXJlZFByb3BzOiBFbnRpdHlQcm9wW10sXG4pOiB7IGluZGV4OiBudW1iZXI7IG5ld1Byb3A6IEVudGl0eVByb3AgfVtdIHtcbiAgY29uc3QgcmVzdWx0OiB7IGluZGV4OiBudW1iZXI7IG5ld1Byb3A6IEVudGl0eVByb3AgfVtdID0gW107XG5cbiAgZm9yIChjb25zdCByZXF1aXJlZFByb3Agb2YgcmVxdWlyZWRQcm9wcykge1xuICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSBleGlzdGluZ1Byb3BzLmZpbmRJbmRleCgocCkgPT4gcC5uYW1lID09PSByZXF1aXJlZFByb3AubmFtZSk7XG4gICAgaWYgKGV4aXN0aW5nSW5kZXggPT09IC0xKSBjb250aW51ZTtcblxuICAgIGNvbnN0IGV4aXN0aW5nUHJvcCA9IGV4aXN0aW5nUHJvcHNbZXhpc3RpbmdJbmRleF07XG4gICAgLy8gdHlwZeydtCDri6TrpbTqsbDrgpggY29uZS5maXh0dXJlU3RyYXRlZ3nqsIAg64uk66W066m0IOyXheuNsOydtO2KuCDrjIDsg4FcbiAgICBjb25zdCBjb25lQ2hhbmdlZCA9IHJlcXVpcmVkUHJvcC5jb25lPy5maXh0dXJlU3RyYXRlZ3kgIT09IGV4aXN0aW5nUHJvcD8uY29uZT8uZml4dHVyZVN0cmF0ZWd5O1xuICAgIGlmIChleGlzdGluZ1Byb3A/LnR5cGUgIT09IHJlcXVpcmVkUHJvcC50eXBlIHx8IGNvbmVDaGFuZ2VkKSB7XG4gICAgICByZXN1bHQucHVzaCh7IGluZGV4OiBleGlzdGluZ0luZGV4LCBuZXdQcm9wOiByZXF1aXJlZFByb3AgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiDriITrnb3rkJwgaW5kZXhlcyDssL7quLBcbiAqL1xuZnVuY3Rpb24gZmluZE1pc3NpbmdJbmRleGVzKFxuICBleGlzdGluZ0luZGV4ZXM6IEVudGl0eUluZGV4W10sXG4gIHJlcXVpcmVkSW5kZXhlczogRW50aXR5SW5kZXhbXSxcbik6IEVudGl0eUluZGV4W10ge1xuICBjb25zdCBleGlzdGluZ05hbWVzID0gbmV3IFNldChleGlzdGluZ0luZGV4ZXMubWFwKChpKSA9PiBpLm5hbWUpKTtcbiAgcmV0dXJuIHJlcXVpcmVkSW5kZXhlcy5maWx0ZXIoKGkpID0+ICFleGlzdGluZ05hbWVzLmhhcyhpLm5hbWUpKTtcbn1cblxuLyoqXG4gKiDriITrnb3rkJwgc3Vic2V0cyDssL7quLBcbiAqL1xuZnVuY3Rpb24gZmluZE1pc3NpbmdTdWJzZXRzKFxuICBleGlzdGluZ1N1YnNldHM6IFN1YnNldEZpZWxkcyxcbiAgcmVxdWlyZWRTdWJzZXRzOiBTdWJzZXRGaWVsZHMsXG4pOiBTdWJzZXRGaWVsZHMge1xuICBjb25zdCBtaXNzaW5nOiBTdWJzZXRGaWVsZHMgPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCBmaWVsZHNdIG9mIE9iamVjdC5lbnRyaWVzKHJlcXVpcmVkU3Vic2V0cykpIHtcbiAgICBpZiAoIWV4aXN0aW5nU3Vic2V0c1trZXldKSB7XG4gICAgICBtaXNzaW5nW2tleV0gPSBmaWVsZHM7XG4gICAgfVxuICB9XG4gIHJldHVybiBtaXNzaW5nO1xufVxuXG4vKipcbiAqIOyXlO2LsO2LsOulvCDsg53shLHtlZjqsbDrgpgg7JeF642w7J207Yq47ZWp64uI64ukLlxuICovXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVPclVwZGF0ZUVudGl0eShlbnRpdHlKc29uOiBFbnRpdHlKc29uKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGV4aXN0cyA9IEVudGl0eU1hbmFnZXIuZXhpc3RzKGVudGl0eUpzb24uaWQpO1xuXG4gIGlmICghZXhpc3RzKSB7XG4gICAgLy8g7IOIIOyXlO2LsO2LsCDsg53shLFcbiAgICBhd2FpdCBTb25hbXUuc3luY2VyLmNyZWF0ZUVudGl0eSh7XG4gICAgICBlbnRpdHlJZDogZW50aXR5SnNvbi5pZCxcbiAgICAgIHRhYmxlOiBlbnRpdHlKc29uLnRhYmxlLFxuICAgICAgdGl0bGU6IGVudGl0eUpzb24udGl0bGUgPz8gZW50aXR5SnNvbi5pZCxcbiAgICAgIHByb3BzOiBlbnRpdHlKc29uLnByb3BzID8/IFtdLFxuICAgICAgaW5kZXhlczogZW50aXR5SnNvbi5pbmRleGVzID8/IFtdLFxuICAgICAgc3Vic2V0czogZW50aXR5SnNvbi5zdWJzZXRzID8/IHt9LFxuICAgICAgZW51bXM6IGVudGl0eUpzb24uZW51bXMgPz8ge30sXG4gICAgfSk7XG5cbiAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlKc29uLmlkKTtcbiAgICBhd2FpdCBlbnRpdHkuc2F2ZSgpO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKGBbQ1JFQVRFRF0gJHtlbnRpdHlKc29uLmlkfWApKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyDquLDsobQg7JeU7Yuw7YuwIOyXheuNsOydtO2KuFxuICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlKc29uLmlkKTtcbiAgbGV0IGhhc0NoYW5nZXMgPSBmYWxzZTtcblxuICAvLyDriITrnb3rkJwgcHJvcHMg7LaU6rCAXG4gIGNvbnN0IG1pc3NpbmdQcm9wcyA9IGZpbmRNaXNzaW5nUHJvcHMoZW50aXR5LnByb3BzLCBlbnRpdHlKc29uLnByb3BzID8/IFtdKTtcbiAgZm9yIChjb25zdCBwcm9wIG9mIG1pc3NpbmdQcm9wcykge1xuICAgIGF3YWl0IGVudGl0eS5jcmVhdGVQcm9wKHByb3ApO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKGBbQUREIFBST1BdICR7ZW50aXR5SnNvbi5pZH0uJHtwcm9wLm5hbWV9YCkpO1xuICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICB9XG5cbiAgLy8g7YOA7J6F7J20IOuzgOqyveuQnCBwcm9wcyDsl4XrjbDsnbTtirhcbiAgY29uc3QgcHJvcHNUb1VwZGF0ZSA9IGZpbmRQcm9wc1RvVXBkYXRlKGVudGl0eS5wcm9wcywgZW50aXR5SnNvbi5wcm9wcyA/PyBbXSk7XG4gIGZvciAoY29uc3QgeyBpbmRleCwgbmV3UHJvcCB9IG9mIHByb3BzVG9VcGRhdGUpIHtcbiAgICBjb25zdCBvbGRUeXBlID0gZW50aXR5LnByb3BzW2luZGV4XT8udHlwZTtcbiAgICBhd2FpdCBlbnRpdHkubW9kaWZ5UHJvcChuZXdQcm9wLCBpbmRleCk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBjaGFsay55ZWxsb3coYFtVUERBVEUgUFJPUF0gJHtlbnRpdHlKc29uLmlkfS4ke25ld1Byb3AubmFtZX06ICR7b2xkVHlwZX0g4oaSICR7bmV3UHJvcC50eXBlfWApLFxuICAgICk7XG4gICAgaGFzQ2hhbmdlcyA9IHRydWU7XG4gIH1cblxuICAvLyDriITrnb3rkJwgaW5kZXhlcyDstpTqsIBcbiAgY29uc3QgbWlzc2luZ0luZGV4ZXMgPSBmaW5kTWlzc2luZ0luZGV4ZXMoZW50aXR5LmluZGV4ZXMsIGVudGl0eUpzb24uaW5kZXhlcyA/PyBbXSk7XG4gIGZvciAoY29uc3QgaW5kZXggb2YgbWlzc2luZ0luZGV4ZXMpIHtcbiAgICBlbnRpdHkuaW5kZXhlcy5wdXNoKGluZGV4KTtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihgW0FERCBJTkRFWF0gJHtlbnRpdHlKc29uLmlkfS4ke2luZGV4Lm5hbWV9YCkpO1xuICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICB9XG5cbiAgLy8g64iE652965CcIHN1YnNldHMg7LaU6rCAXG4gIGNvbnN0IG1pc3NpbmdTdWJzZXRzID0gZmluZE1pc3NpbmdTdWJzZXRzKFxuICAgIGVudGl0eS5zdWJzZXRzLFxuICAgIC8qIFNBRkVUWTogYmV0dGVyLWF1dGgg7ZuF6rO8IOyWtOuMke2EsCDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoZW50aXR5SnNvbi5zdWJzZXRzID8/XG4gICAgICB7fSkgYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9LFxuICApO1xuICBmb3IgKGNvbnN0IFtrZXksIGZpZWxkc10gb2YgT2JqZWN0LmVudHJpZXMobWlzc2luZ1N1YnNldHMpKSB7XG4gICAgZW50aXR5LnN1YnNldHNba2V5XSA9IGZpZWxkcztcbiAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihgW0FERCBTVUJTRVRdICR7ZW50aXR5SnNvbi5pZH0uJHtrZXl9YCkpO1xuICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICB9XG5cbiAgLy8g67OA6rK97IKs7ZWtIOyggOyepVxuICBpZiAoaGFzQ2hhbmdlcykge1xuICAgIGF3YWl0IGVudGl0eS5zYXZlKCk7XG4gICAgY29uc29sZS5sb2coY2hhbGsuYmx1ZShgW1VQREFURURdICR7ZW50aXR5SnNvbi5pZH1gKSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5sb2coY2hhbGsuZGltKGBbU0tJUF0gJHtlbnRpdHlKc29uLmlkfSAtIG5vIGNoYW5nZXNgKSk7XG4gIH1cbn1cblxuLyoqXG4gKiDquLDsobQg7JeU7Yuw7Yuw7JeQIHByb3Bz66W8IOy2lOqwgO2VqeuLiOuLpC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gYWRkUHJvcHNUb0VudGl0eShlbnRpdHlJZDogc3RyaW5nLCBwcm9wczogRW50aXR5UHJvcFtdKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghRW50aXR5TWFuYWdlci5leGlzdHMoZW50aXR5SWQpKSB7XG4gICAgY29uc29sZS5sb2coY2hhbGsueWVsbG93KGBbU0tJUF0gJHtlbnRpdHlJZH0gLSBlbnRpdHkgbm90IGZvdW5kLCBjYW5ub3QgYWRkIHByb3BzYCkpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUlkKTtcbiAgbGV0IGhhc0NoYW5nZXMgPSBmYWxzZTtcblxuICBjb25zdCBtaXNzaW5nUHJvcHMgPSBmaW5kTWlzc2luZ1Byb3BzKGVudGl0eS5wcm9wcywgcHJvcHMpO1xuICBmb3IgKGNvbnN0IHByb3Agb2YgbWlzc2luZ1Byb3BzKSB7XG4gICAgYXdhaXQgZW50aXR5LmNyZWF0ZVByb3AocHJvcCk7XG4gICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4oYFtBREQgUFJPUF0gJHtlbnRpdHlJZH0uJHtwcm9wLm5hbWV9YCkpO1xuICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGhhc0NoYW5nZXMpIHtcbiAgICBhd2FpdCBlbnRpdHkuc2F2ZSgpO1xuICB9XG59XG5cbi8qKlxuICog6riw7KG0IOyXlO2LsO2LsOyXkCBpbmRleGVz66W8IOy2lOqwgO2VqeuLiOuLpC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gYWRkSW5kZXhlc1RvRW50aXR5KGVudGl0eUlkOiBzdHJpbmcsIGluZGV4ZXM6IEVudGl0eUluZGV4W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFFbnRpdHlNYW5hZ2VyLmV4aXN0cyhlbnRpdHlJZCkpIHtcbiAgICBjb25zb2xlLmxvZyhjaGFsay55ZWxsb3coYFtTS0lQXSAke2VudGl0eUlkfSAtIGVudGl0eSBub3QgZm91bmQsIGNhbm5vdCBhZGQgaW5kZXhlc2ApKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCk7XG4gIGxldCBoYXNDaGFuZ2VzID0gZmFsc2U7XG5cbiAgY29uc3QgbWlzc2luZ0luZGV4ZXMgPSBmaW5kTWlzc2luZ0luZGV4ZXMoZW50aXR5LmluZGV4ZXMsIGluZGV4ZXMpO1xuICBmb3IgKGNvbnN0IGluZGV4IG9mIG1pc3NpbmdJbmRleGVzKSB7XG4gICAgZW50aXR5LmluZGV4ZXMucHVzaChpbmRleCk7XG4gICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4oYFtBREQgSU5ERVhdICR7ZW50aXR5SWR9LiR7aW5kZXgubmFtZX1gKSk7XG4gICAgaGFzQ2hhbmdlcyA9IHRydWU7XG4gIH1cblxuICBpZiAoaGFzQ2hhbmdlcykge1xuICAgIGF3YWl0IGVudGl0eS5zYXZlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZUJldHRlckF1dGhFbnRpdGllc09wdGlvbnMge1xuICAvKipcbiAgICog7Zmc7ISx7ZmU7ZWgIO2UjOufrOq3uOyduCBJRCDrqqnroZ1cbiAgICog7JiIOiBbXCJwaG9uZS1udW1iZXJcIiwgXCIyZmFcIl1cbiAgICovXG4gIHBsdWdpbnM/OiBCZXR0ZXJBdXRoUGx1Z2luSWRbXTtcbn1cblxuLyoqXG4gKiDquLDsobQg7ZSE66Gc7KCd7Yq47J2YIGVudGl0eS5qc29u7JeQIGZpeHR1cmVDb21wYW5pb25z66W8IOyGjOq4iSDstpTqsIDtlanri4jri6QuXG4gKlxuICogYmV0dGVyQXV0aFYxIOq4sOykgOycvOuhnCBmaXh0dXJlQ29tcGFuaW9uc+qwgCDsoJXsnZjrkJwgZW50aXR566W8IOywvuyVhFxuICog7ZSE66Gc7KCd7Yq4IOuCtCBlbnRpdHkuanNvbuyXkCDtlbTri7kgcHJvcOydmCBjb25l7JeQIGZpeHR1cmVDb21wYW5pb25z6rCAXG4gKiDsl4bsnYQg65WM66eMIOy2lOqwgO2VqeuLiOuLpC4g7J2066+4IOyeiOycvOuptCDsiqTtgrXtlanri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRDb21wYW5pb25zVG9FbnRpdGllcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgZm9yIChjb25zdCBlbnRpdHlKc29uIG9mIGJldHRlckF1dGhWMSkge1xuICAgIGNvbnN0IGlkUHJvcCA9IGVudGl0eUpzb24ucHJvcHM/LmZpbmQoKHApID0+IHAubmFtZSA9PT0gXCJpZFwiKTtcbiAgICBpZiAoIWlkUHJvcD8uY29uZT8uZml4dHVyZUNvbXBhbmlvbnMpIGNvbnRpbnVlO1xuXG4gICAgaWYgKCFFbnRpdHlNYW5hZ2VyLmV4aXN0cyhlbnRpdHlKc29uLmlkKSkge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsueWVsbG93KGBbU0tJUF0gJHtlbnRpdHlKc29uLmlkfSAtIG5vdCBmb3VuZGApKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUpzb24uaWQpO1xuICAgIGNvbnN0IGV4aXN0aW5nSWRQcm9wID0gZW50aXR5LnByb3BzLmZpbmQoKHApID0+IHAubmFtZSA9PT0gXCJpZFwiKTtcbiAgICBpZiAoIWV4aXN0aW5nSWRQcm9wKSB7XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay55ZWxsb3coYFtTS0lQXSAke2VudGl0eUpzb24uaWR9LmlkIC0gcHJvcCBub3QgZm91bmRgKSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoZXhpc3RpbmdJZFByb3AuY29uZT8uZml4dHVyZUNvbXBhbmlvbnMpIHtcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmRpbShgW1NLSVBdICR7ZW50aXR5SnNvbi5pZH0uaWQgLSBmaXh0dXJlQ29tcGFuaW9ucyBhbHJlYWR5IGV4aXN0c2ApKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGV4aXN0aW5nSWRQcm9wLmNvbmUgPSB7XG4gICAgICAuLi5leGlzdGluZ0lkUHJvcC5jb25lLFxuICAgICAgZml4dHVyZUNvbXBhbmlvbnM6IGlkUHJvcC5jb25lLmZpeHR1cmVDb21wYW5pb25zLFxuICAgIH07XG4gICAgYXdhaXQgZW50aXR5LnNhdmUoKTtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihgW1VQREFURURdICR7ZW50aXR5SnNvbi5pZH0uaWQgLSBmaXh0dXJlQ29tcGFuaW9ucyBhZGRlZGApKTtcbiAgfVxufVxuXG4vKipcbiAqIGJldHRlci1hdXRoIOyXlO2LsO2LsOuTpOydhCBTb25hbXXsl5Ag7IOd7ISxL+yXheuNsOydtO2KuFxuICpcbiAqIEBwYXJhbSBvcHRpb25zIOyDneyEsSDsmLXshZhcbiAqIEBwYXJhbSBvcHRpb25zLnBsdWdpbnMg7Zmc7ISx7ZmU7ZWgIO2UjOufrOq3uOyduCBJRCDrqqnroZ1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlQmV0dGVyQXV0aEVudGl0aWVzKFxuICBvcHRpb25zOiBHZW5lcmF0ZUJldHRlckF1dGhFbnRpdGllc09wdGlvbnMgPSB7fSxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IHBsdWdpbnMgPSBbXSB9ID0gb3B0aW9ucztcblxuICAvLyAxLiDquLDrs7gg7JeU7Yuw7YuwIOyDneyEsS/sl4XrjbDsnbTtirhcbiAgY29uc29sZS5sb2coY2hhbGsuY3lhbihcIlxcbvCfk6YgUHJvY2Vzc2luZyBjb3JlIGVudGl0aWVzLi4uXFxuXCIpKTtcbiAgZm9yIChjb25zdCBlbnRpdHlKc29uIG9mIGJldHRlckF1dGhWMSkge1xuICAgIGF3YWl0IGNyZWF0ZU9yVXBkYXRlRW50aXR5KGVudGl0eUpzb24pO1xuICB9XG5cbiAgLy8gMi4g7ZSM65+s6re47J24IOyymOumrFxuICBpZiAocGx1Z2lucy5sZW5ndGggPiAwKSB7XG4gICAgY29uc29sZS5sb2coY2hhbGsuY3lhbihcIlxcbvCflIwgUHJvY2Vzc2luZyBwbHVnaW5zLi4uXFxuXCIpKTtcblxuICAgIGZvciAoY29uc3QgcGx1Z2luSWQgb2YgcGx1Z2lucykge1xuICAgICAgaWYgKCFpc1ZhbGlkUGx1Z2luSWQocGx1Z2luSWQpKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLnJlZChgW0VSUk9SXSBVbmtub3duIHBsdWdpbjogJHtwbHVnaW5JZH1gKSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlbnRpdHlEZWYgPSBFTlRJVFlfREVGSU5JVElPTlNbcGx1Z2luSWRdO1xuICAgICAgY29uc29sZS5sb2coY2hhbGsubWFnZW50YShgW1BMVUdJTl0gJHtlbnRpdHlEZWYubmFtZX1gKSk7XG5cbiAgICAgIC8vIO2UjOufrOq3uOyduOydmCDsg4gg7JeU7Yuw7YuwIOyDneyEsVxuICAgICAgZm9yIChjb25zdCBlbnRpdHlKc29uIG9mIGVudGl0eURlZi5lbnRpdGllcykge1xuICAgICAgICBhd2FpdCBjcmVhdGVPclVwZGF0ZUVudGl0eShlbnRpdHlKc29uKTtcbiAgICAgIH1cblxuICAgICAgLy8g6riw7KG0IOyXlO2LsO2LsOyXkCDtlYTrk5wg7LaU6rCAXG4gICAgICBmb3IgKGNvbnN0IFtlbnRpdHlJZCwgcHJvcHNdIG9mIE9iamVjdC5lbnRyaWVzKGVudGl0eURlZi5hZGRpdGlvbmFsUHJvcHMpKSB7XG4gICAgICAgIGF3YWl0IGFkZFByb3BzVG9FbnRpdHkoZW50aXR5SWQsIHByb3BzKTtcbiAgICAgIH1cblxuICAgICAgLy8g6riw7KG0IOyXlO2LsO2LsOyXkCDsnbjrjbHsiqQg7LaU6rCAXG4gICAgICBpZiAoZW50aXR5RGVmLmFkZGl0aW9uYWxJbmRleGVzKSB7XG4gICAgICAgIGZvciAoY29uc3QgW2VudGl0eUlkLCBpbmRleGVzXSBvZiBPYmplY3QuZW50cmllcyhlbnRpdHlEZWYuYWRkaXRpb25hbEluZGV4ZXMpKSB7XG4gICAgICAgICAgYXdhaXQgYWRkSW5kZXhlc1RvRW50aXR5KGVudGl0eUlkLCBpbmRleGVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnNvbGUubG9nKGNoYWxrLmJvbGQoXCJcXG7inIUgRG9uZSEgYmV0dGVyLWF1dGggZW50aXRpZXMgZ2VuZXJhdGVkLlwiKSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztZQUVzQztvQkFDa0I7MEJBRUg7Ozs7QUFXckQsU0FBUyxpQkFBaUIsZUFBNkIsZUFBMkM7Q0FDaEcsTUFBTSxnQkFBZ0IsSUFBSSxJQUFJLGNBQWMsS0FBSyxNQUFNLEVBQUUsSUFBSSxDQUFDO0NBQzlELE9BQU8sY0FBYyxRQUFRLE1BQU0sQ0FBQyxjQUFjLElBQUksRUFBRSxJQUFJLENBQUM7QUFDL0Q7Ozs7O0FBTUEsU0FBUyxrQkFDUCxlQUNBLGVBQzBDO0NBQzFDLE1BQU0sU0FBbUQsQ0FBQztDQUUxRCxLQUFLLE1BQU0sZ0JBQWdCLGVBQWU7RUFDeEMsTUFBTSxnQkFBZ0IsY0FBYyxXQUFXLE1BQU0sRUFBRSxTQUFTLGFBQWEsSUFBSTtFQUNqRixJQUFJLGtCQUFrQixJQUFJO0VBRTFCLE1BQU0sZUFBZSxjQUFjO0VBRW5DLE1BQU0sY0FBYyxhQUFhLE1BQU0sb0JBQW9CLGNBQWMsTUFBTTtFQUMvRSxJQUFJLGNBQWMsU0FBUyxhQUFhLFFBQVEsYUFDOUMsT0FBTyxLQUFLO0dBQUUsT0FBTztHQUFlLFNBQVM7RUFBYSxDQUFDO0NBRS9EO0NBRUEsT0FBTztBQUNUOzs7O0FBS0EsU0FBUyxtQkFDUCxpQkFDQSxpQkFDZTtDQUNmLE1BQU0sZ0JBQWdCLElBQUksSUFBSSxnQkFBZ0IsS0FBSyxNQUFNLEVBQUUsSUFBSSxDQUFDO0NBQ2hFLE9BQU8sZ0JBQWdCLFFBQVEsTUFBTSxDQUFDLGNBQWMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNqRTs7OztBQUtBLFNBQVMsbUJBQ1AsaUJBQ0EsaUJBQ2M7Q0FDZCxNQUFNLFVBQXdCLENBQUM7Q0FDL0IsS0FBSyxNQUFNLENBQUMsS0FBSyxXQUFXLE9BQU8sUUFBUSxlQUFlLEdBQ3hELElBQUksQ0FBQyxnQkFBZ0IsTUFDbkIsUUFBUSxPQUFPO0NBR25CLE9BQU87QUFDVDs7OztBQUtBLGVBQWUscUJBQXFCLFlBQXVDO0NBR3pFLElBQUksQ0FGVyxjQUFjLE9BQU8sV0FBVyxFQUUxQyxHQUFRO0VBRVgsTUFBTSxPQUFPLE9BQU8sYUFBYTtHQUMvQixVQUFVLFdBQVc7R0FDckIsT0FBTyxXQUFXO0dBQ2xCLE9BQU8sV0FBVyxTQUFTLFdBQVc7R0FDdEMsT0FBTyxXQUFXLFNBQVMsQ0FBQztHQUM1QixTQUFTLFdBQVcsV0FBVyxDQUFDO0dBQ2hDLFNBQVMsV0FBVyxXQUFXLENBQUM7R0FDaEMsT0FBTyxXQUFXLFNBQVMsQ0FBQztFQUM5QixDQUFDO0VBR0QsTUFEZSxjQUFjLElBQUksV0FBVyxFQUN0QyxDQUFBLENBQU8sS0FBSztFQUNsQixRQUFRLElBQUksTUFBTSxNQUFNLGFBQWEsV0FBVyxJQUFJLENBQUM7RUFDckQ7Q0FDRjtDQUdBLE1BQU0sU0FBUyxjQUFjLElBQUksV0FBVyxFQUFFO0NBQzlDLElBQUksYUFBYTtDQUdqQixNQUFNLGVBQWUsaUJBQWlCLE9BQU8sT0FBTyxXQUFXLFNBQVMsQ0FBQyxDQUFDO0NBQzFFLEtBQUssTUFBTSxRQUFRLGNBQWM7RUFDL0IsTUFBTSxPQUFPLFdBQVcsSUFBSTtFQUM1QixRQUFRLElBQUksTUFBTSxNQUFNLGNBQWMsV0FBVyxHQUFHLEdBQUcsS0FBSyxNQUFNLENBQUM7RUFDbkUsYUFBYTtDQUNmO0NBR0EsTUFBTSxnQkFBZ0Isa0JBQWtCLE9BQU8sT0FBTyxXQUFXLFNBQVMsQ0FBQyxDQUFDO0NBQzVFLEtBQUssTUFBTSxFQUFFLE9BQU8sYUFBYSxlQUFlO0VBQzlDLE1BQU0sVUFBVSxPQUFPLE1BQU0sTUFBTSxFQUFFO0VBQ3JDLE1BQU0sT0FBTyxXQUFXLFNBQVMsS0FBSztFQUN0QyxRQUFRLElBQ04sTUFBTSxPQUFPLGlCQUFpQixXQUFXLEdBQUcsR0FBRyxRQUFRLEtBQUssSUFBSSxRQUFRLEtBQUssUUFBUSxNQUFNLENBQzdGO0VBQ0EsYUFBYTtDQUNmO0NBR0EsTUFBTSxpQkFBaUIsbUJBQW1CLE9BQU8sU0FBUyxXQUFXLFdBQVcsQ0FBQyxDQUFDO0NBQ2xGLEtBQUssTUFBTSxTQUFTLGdCQUFnQjtFQUNsQyxPQUFPLFFBQVEsS0FBSyxLQUFLO0VBQ3pCLFFBQVEsSUFBSSxNQUFNLE1BQU0sZUFBZSxXQUFXLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQztFQUNyRSxhQUFhO0NBQ2Y7Q0FHQSxNQUFNLGlCQUFpQixtQkFDckIsT0FBTyxTQUM4QyxXQUFXLFdBQzlELENBQUMsQ0FDTDtDQUNBLEtBQUssTUFBTSxDQUFDLEtBQUssV0FBVyxPQUFPLFFBQVEsY0FBYyxHQUFHO0VBQzFELE9BQU8sUUFBUSxPQUFPO0VBQ3RCLFFBQVEsSUFBSSxNQUFNLE1BQU0sZ0JBQWdCLFdBQVcsR0FBRyxHQUFHLEtBQUssQ0FBQztFQUMvRCxhQUFhO0NBQ2Y7Q0FHQSxJQUFJLFlBQVk7RUFDZCxNQUFNLE9BQU8sS0FBSztFQUNsQixRQUFRLElBQUksTUFBTSxLQUFLLGFBQWEsV0FBVyxJQUFJLENBQUM7Q0FDdEQsT0FDRSxRQUFRLElBQUksTUFBTSxJQUFJLFVBQVUsV0FBVyxHQUFHLGNBQWMsQ0FBQztBQUVqRTs7OztBQUtBLGVBQWUsaUJBQWlCLFVBQWtCLE9BQW9DO0NBQ3BGLElBQUksQ0FBQyxjQUFjLE9BQU8sUUFBUSxHQUFHO0VBQ25DLFFBQVEsSUFBSSxNQUFNLE9BQU8sVUFBVSxTQUFTLHNDQUFzQyxDQUFDO0VBQ25GO0NBQ0Y7Q0FFQSxNQUFNLFNBQVMsY0FBYyxJQUFJLFFBQVE7Q0FDekMsSUFBSSxhQUFhO0NBRWpCLE1BQU0sZUFBZSxpQkFBaUIsT0FBTyxPQUFPLEtBQUs7Q0FDekQsS0FBSyxNQUFNLFFBQVEsY0FBYztFQUMvQixNQUFNLE9BQU8sV0FBVyxJQUFJO0VBQzVCLFFBQVEsSUFBSSxNQUFNLE1BQU0sY0FBYyxTQUFTLEdBQUcsS0FBSyxNQUFNLENBQUM7RUFDOUQsYUFBYTtDQUNmO0NBRUEsSUFBSSxZQUNGLE1BQU0sT0FBTyxLQUFLO0FBRXRCOzs7O0FBS0EsZUFBZSxtQkFBbUIsVUFBa0IsU0FBdUM7Q0FDekYsSUFBSSxDQUFDLGNBQWMsT0FBTyxRQUFRLEdBQUc7RUFDbkMsUUFBUSxJQUFJLE1BQU0sT0FBTyxVQUFVLFNBQVMsd0NBQXdDLENBQUM7RUFDckY7Q0FDRjtDQUVBLE1BQU0sU0FBUyxjQUFjLElBQUksUUFBUTtDQUN6QyxJQUFJLGFBQWE7Q0FFakIsTUFBTSxpQkFBaUIsbUJBQW1CLE9BQU8sU0FBUyxPQUFPO0NBQ2pFLEtBQUssTUFBTSxTQUFTLGdCQUFnQjtFQUNsQyxPQUFPLFFBQVEsS0FBSyxLQUFLO0VBQ3pCLFFBQVEsSUFBSSxNQUFNLE1BQU0sZUFBZSxTQUFTLEdBQUcsTUFBTSxNQUFNLENBQUM7RUFDaEUsYUFBYTtDQUNmO0NBRUEsSUFBSSxZQUNGLE1BQU0sT0FBTyxLQUFLO0FBRXRCOzs7Ozs7OztBQWlCQSxlQUFzQiwwQkFBeUM7Q0FDN0QsS0FBSyxNQUFNLGNBQWMsY0FBYztFQUNyQyxNQUFNLFNBQVMsV0FBVyxPQUFPLE1BQU0sTUFBTSxFQUFFLFNBQVMsSUFBSTtFQUM1RCxJQUFJLENBQUMsUUFBUSxNQUFNLG1CQUFtQjtFQUV0QyxJQUFJLENBQUMsY0FBYyxPQUFPLFdBQVcsRUFBRSxHQUFHO0dBQ3hDLFFBQVEsSUFBSSxNQUFNLE9BQU8sVUFBVSxXQUFXLEdBQUcsYUFBYSxDQUFDO0dBQy9EO0VBQ0Y7RUFFQSxNQUFNLFNBQVMsY0FBYyxJQUFJLFdBQVcsRUFBRTtFQUM5QyxNQUFNLGlCQUFpQixPQUFPLE1BQU0sTUFBTSxNQUFNLEVBQUUsU0FBUyxJQUFJO0VBQy9ELElBQUksQ0FBQyxnQkFBZ0I7R0FDbkIsUUFBUSxJQUFJLE1BQU0sT0FBTyxVQUFVLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQztHQUN2RTtFQUNGO0VBRUEsSUFBSSxlQUFlLE1BQU0sbUJBQW1CO0dBQzFDLFFBQVEsSUFBSSxNQUFNLElBQUksVUFBVSxXQUFXLEdBQUcsdUNBQXVDLENBQUM7R0FDdEY7RUFDRjtFQUVBLGVBQWUsT0FBTztHQUNwQixHQUFHLGVBQWU7R0FDbEIsbUJBQW1CLE9BQU8sS0FBSztFQUNqQztFQUNBLE1BQU0sT0FBTyxLQUFLO0VBQ2xCLFFBQVEsSUFBSSxNQUFNLE1BQU0sYUFBYSxXQUFXLEdBQUcsOEJBQThCLENBQUM7Q0FDcEY7QUFDRjs7Ozs7OztBQVFBLGVBQXNCLDJCQUNwQixVQUE2QyxDQUFDLEdBQy9CO0NBQ2YsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO0NBR3pCLFFBQVEsSUFBSSxNQUFNLEtBQUssb0NBQW9DLENBQUM7Q0FDNUQsS0FBSyxNQUFNLGNBQWMsY0FDdkIsTUFBTSxxQkFBcUIsVUFBVTtDQUl2QyxJQUFJLFFBQVEsU0FBUyxHQUFHO0VBQ3RCLFFBQVEsSUFBSSxNQUFNLEtBQUssOEJBQThCLENBQUM7RUFFdEQsS0FBSyxNQUFNLFlBQVksU0FBUztHQUM5QixJQUFJLENBQUMsZ0JBQWdCLFFBQVEsR0FBRztJQUM5QixRQUFRLElBQUksTUFBTSxJQUFJLDJCQUEyQixVQUFVLENBQUM7SUFDNUQ7R0FDRjtHQUVBLE1BQU0sWUFBWSxtQkFBbUI7R0FDckMsUUFBUSxJQUFJLE1BQU0sUUFBUSxZQUFZLFVBQVUsTUFBTSxDQUFDO0dBR3ZELEtBQUssTUFBTSxjQUFjLFVBQVUsVUFDakMsTUFBTSxxQkFBcUIsVUFBVTtHQUl2QyxLQUFLLE1BQU0sQ0FBQyxVQUFVLFVBQVUsT0FBTyxRQUFRLFVBQVUsZUFBZSxHQUN0RSxNQUFNLGlCQUFpQixVQUFVLEtBQUs7R0FJeEMsSUFBSSxVQUFVLG1CQUNaLEtBQUssTUFBTSxDQUFDLFVBQVUsWUFBWSxPQUFPLFFBQVEsVUFBVSxpQkFBaUIsR0FDMUUsTUFBTSxtQkFBbUIsVUFBVSxPQUFPO0VBR2hEO0NBQ0Y7Q0FFQSxRQUFRLElBQUksTUFBTSxLQUFLLDJDQUEyQyxDQUFDO0FBQ3JFIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"better-auth-request.d.ts","sourceRoot":"","sources":["../../src/auth/better-auth-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAK9C,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,cAAc,EACvB,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,GACnC,OAAO,CAWT"}
1
+ {"version":3,"file":"better-auth-request.d.ts","sourceRoot":"","sources":["../../src/auth/better-auth-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAK9C,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,cAAc,EACvB,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,GACnC,OAAO,CAYT"}
@@ -6,11 +6,12 @@ function createBetterAuthRequest(request, ipAddressHeaders) {
6
6
  const url = new URL(request.url, `http://${request.headers.host}`);
7
7
  const headers = convertFastifyHeadersToStandard(request.headers);
8
8
  replaceClientIpHeaders(headers, request.ip, ipAddressHeaders);
9
- return new Request(url.toString(), {
9
+ const init = {
10
10
  method: request.method,
11
- headers,
12
- ...request.body ? { body: JSON.stringify(request.body) } : {}
13
- });
11
+ headers
12
+ };
13
+ if (request.body) init.body = JSON.stringify(request.body);
14
+ return new Request(url.toString(), init);
14
15
  }
15
16
  var init_better_auth_request = __esmMin((() => {
16
17
  init_utils();
@@ -20,4 +21,4 @@ var init_better_auth_request = __esmMin((() => {
20
21
  init_better_auth_request();
21
22
  export { createBetterAuthRequest, init_better_auth_request };
22
23
 
23
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmV0dGVyLWF1dGgtcmVxdWVzdC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYXV0aC9iZXR0ZXItYXV0aC1yZXF1ZXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRmFzdGlmeVJlcXVlc3QgfSBmcm9tIFwiZmFzdGlmeVwiO1xuXG5pbXBvcnQgeyBjb252ZXJ0RmFzdGlmeUhlYWRlcnNUb1N0YW5kYXJkIH0gZnJvbSBcIi4uL3V0aWxzL3V0aWxzXCI7XG5pbXBvcnQgeyByZXBsYWNlQ2xpZW50SXBIZWFkZXJzIH0gZnJvbSBcIi4vYXVkaXQtbG9nL2NsaWVudC1pcFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmV0dGVyQXV0aFJlcXVlc3QoXG4gIHJlcXVlc3Q6IEZhc3RpZnlSZXF1ZXN0LFxuICBpcEFkZHJlc3NIZWFkZXJzPzogcmVhZG9ubHkgc3RyaW5nW10sXG4pOiBSZXF1ZXN0IHtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChyZXF1ZXN0LnVybCwgYGh0dHA6Ly8ke3JlcXVlc3QuaGVhZGVycy5ob3N0fWApO1xuICBjb25zdCBoZWFkZXJzID0gY29udmVydEZhc3RpZnlIZWFkZXJzVG9TdGFuZGFyZChyZXF1ZXN0LmhlYWRlcnMpO1xuXG4gIHJlcGxhY2VDbGllbnRJcEhlYWRlcnMoaGVhZGVycywgcmVxdWVzdC5pcCwgaXBBZGRyZXNzSGVhZGVycyk7XG5cbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KHVybC50b1N0cmluZygpLCB7XG4gICAgbWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcbiAgICBoZWFkZXJzLFxuICAgIC4uLihyZXF1ZXN0LmJvZHkgPyB7IGJvZHk6IEpTT04uc3RyaW5naWZ5KHJlcXVlc3QuYm9keSkgfSA6IHt9KSxcbiAgfSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFLQSxTQUFnQix3QkFDZCxTQUNBLGtCQUNTO0NBQ1QsTUFBTSxNQUFNLElBQUksSUFBSSxRQUFRLEtBQUssVUFBVSxRQUFRLFFBQVEsTUFBTTtDQUNqRSxNQUFNLFVBQVUsZ0NBQWdDLFFBQVEsT0FBTztDQUUvRCx1QkFBdUIsU0FBUyxRQUFRLElBQUksZ0JBQWdCO0NBRTVELE9BQU8sSUFBSSxRQUFRLElBQUksU0FBUyxHQUFHO0VBQ2pDLFFBQVEsUUFBUTtFQUNoQjtFQUNBLEdBQUksUUFBUSxPQUFPLEVBQUUsTUFBTSxLQUFLLFVBQVUsUUFBUSxJQUFJLEVBQUUsSUFBSSxDQUFDO0NBQy9ELENBQUM7QUFDSDs7WUFqQmdFO2dCQUNGIn0=
24
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmV0dGVyLWF1dGgtcmVxdWVzdC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYXV0aC9iZXR0ZXItYXV0aC1yZXF1ZXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRmFzdGlmeVJlcXVlc3QgfSBmcm9tIFwiZmFzdGlmeVwiO1xuXG5pbXBvcnQgeyBjb252ZXJ0RmFzdGlmeUhlYWRlcnNUb1N0YW5kYXJkIH0gZnJvbSBcIi4uL3V0aWxzL3V0aWxzXCI7XG5pbXBvcnQgeyByZXBsYWNlQ2xpZW50SXBIZWFkZXJzIH0gZnJvbSBcIi4vYXVkaXQtbG9nL2NsaWVudC1pcFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmV0dGVyQXV0aFJlcXVlc3QoXG4gIHJlcXVlc3Q6IEZhc3RpZnlSZXF1ZXN0LFxuICBpcEFkZHJlc3NIZWFkZXJzPzogcmVhZG9ubHkgc3RyaW5nW10sXG4pOiBSZXF1ZXN0IHtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChyZXF1ZXN0LnVybCwgYGh0dHA6Ly8ke3JlcXVlc3QuaGVhZGVycy5ob3N0fWApO1xuICBjb25zdCBoZWFkZXJzID0gY29udmVydEZhc3RpZnlIZWFkZXJzVG9TdGFuZGFyZChyZXF1ZXN0LmhlYWRlcnMpO1xuXG4gIHJlcGxhY2VDbGllbnRJcEhlYWRlcnMoaGVhZGVycywgcmVxdWVzdC5pcCwgaXBBZGRyZXNzSGVhZGVycyk7XG5cbiAgY29uc3QgaW5pdDogUmVxdWVzdEluaXQgPSB7XG4gICAgbWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcbiAgICBoZWFkZXJzLFxuICB9O1xuICBpZiAocmVxdWVzdC5ib2R5KSBpbml0LmJvZHkgPSBKU09OLnN0cmluZ2lmeShyZXF1ZXN0LmJvZHkpO1xuICByZXR1cm4gbmV3IFJlcXVlc3QodXJsLnRvU3RyaW5nKCksIGluaXQpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBS0EsU0FBZ0Isd0JBQ2QsU0FDQSxrQkFDUztDQUNULE1BQU0sTUFBTSxJQUFJLElBQUksUUFBUSxLQUFLLFVBQVUsUUFBUSxRQUFRLE1BQU07Q0FDakUsTUFBTSxVQUFVLGdDQUFnQyxRQUFRLE9BQU87Q0FFL0QsdUJBQXVCLFNBQVMsUUFBUSxJQUFJLGdCQUFnQjtDQUU1RCxNQUFNLE9BQW9CO0VBQ3hCLFFBQVEsUUFBUTtFQUNoQjtDQUNGO0NBQ0EsSUFBSSxRQUFRLE1BQU0sS0FBSyxPQUFPLEtBQUssVUFBVSxRQUFRLElBQUk7Q0FDekQsT0FBTyxJQUFJLFFBQVEsSUFBSSxTQUFTLEdBQUcsSUFBSTtBQUN6Qzs7WUFsQmdFO2dCQUNGIn0=
@@ -129,4 +129,4 @@ var init_knex_adapter = __esmMin((() => {
129
129
  init_knex_adapter();
130
130
  export { applyWhere, init_knex_adapter, sonamuKnexAdapter };
131
131
 
132
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia25leC1hZGFwdGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdXRoL2tuZXgtYWRhcHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEJldHRlckF1dGhPcHRpb25zIH0gZnJvbSBcImJldHRlci1hdXRoXCI7XG5pbXBvcnQge1xuICB0eXBlIEFkYXB0ZXJGYWN0b3J5Q3VzdG9taXplQWRhcHRlckNyZWF0b3IsXG4gIHR5cGUgREJUcmFuc2FjdGlvbkFkYXB0ZXIsXG59IGZyb20gXCJiZXR0ZXItYXV0aC9hZGFwdGVyc1wiO1xuaW1wb3J0IHsgY3JlYXRlQWRhcHRlckZhY3RvcnkgfSBmcm9tIFwiYmV0dGVyLWF1dGgvYWRhcHRlcnNcIjtcbmltcG9ydCB7IHR5cGUgS25leCB9IGZyb20gXCJrbmV4XCI7XG5cbmltcG9ydCB7IERCIH0gZnJvbSBcIi4uL2RhdGFiYXNlL2RiXCI7XG5cbmludGVyZmFjZSBDbGVhbmVkV2hlcmUge1xuICBmaWVsZDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHN0cmluZ1tdIHwgbnVtYmVyW10gfCBEYXRlIHwgbnVsbDtcbiAgb3BlcmF0b3I6IHN0cmluZztcbiAgY29ubmVjdG9yOiBzdHJpbmc7XG59XG5cbi8qKlxuICogYmV0dGVyLWF1dGjsmqkgU29uYW11IGtuZXgg7Ja064yR7YSwXG4gKlxuICogYmV0dGVyLWF1dGjsnZgg66qo65OgIOy/vOumrOulvCBEQi5nZXREQigp66W8IO2Gte2VtCDsi6TtlontlZjsl6xcbiAqIFNvbmFtdSDthYzsiqTtirgg7Yq4656c7J6t7IWY6rO8IOuPmeydvO2VnCDsu6TrhKXshZjsnYQg6rO17Jyg7ZWp64uI64ukLlxuICovXG5leHBvcnQgY29uc3Qgc29uYW11S25leEFkYXB0ZXIgPSAoKSA9PiB7XG4gIGxldCBsYXp5T3B0aW9uczogQmV0dGVyQXV0aE9wdGlvbnMgfCBudWxsID0gbnVsbDtcblxuICBjb25zdCBjcmVhdGVDdXN0b21BZGFwdGVyID0gKFxuICAgIGdldERiOiAoKSA9PiBLbmV4IHwgS25leC5UcmFuc2FjdGlvbixcbiAgKTogQWRhcHRlckZhY3RvcnlDdXN0b21pemVBZGFwdGVyQ3JlYXRvciA9PiB7XG4gICAgcmV0dXJuICh7IGdldEZpZWxkTmFtZSB9KSA9PiAoe1xuICAgICAgY3JlYXRlOiBhc3luYyAoeyBtb2RlbCwgZGF0YSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IFtyb3ddID0gYXdhaXQgZ2V0RGIoKShtb2RlbCkuaW5zZXJ0KGRhdGEpLnJldHVybmluZyhcIipcIik7XG4gICAgICAgIHJldHVybiByb3c7XG4gICAgICB9LFxuXG4gICAgICBmaW5kT25lOiBhc3luYyAoeyBtb2RlbCwgd2hlcmUgfSkgPT4ge1xuICAgICAgICBsZXQgcXVlcnkgPSBnZXREYigpKG1vZGVsKTtcbiAgICAgICAgcXVlcnkgPSBhcHBseVdoZXJlKHF1ZXJ5LCB3aGVyZSk7XG4gICAgICAgIGNvbnN0IHJvdyA9IGF3YWl0IHF1ZXJ5LmZpcnN0KCk7XG4gICAgICAgIHJldHVybiByb3cgPz8gbnVsbDtcbiAgICAgIH0sXG5cbiAgICAgIGZpbmRNYW55OiBhc3luYyAoeyBtb2RlbCwgd2hlcmUsIGxpbWl0LCBvZmZzZXQsIHNvcnRCeSB9KSA9PiB7XG4gICAgICAgIGxldCBxdWVyeSA9IGdldERiKCkobW9kZWwpO1xuICAgICAgICBpZiAod2hlcmUpIHtcbiAgICAgICAgICBxdWVyeSA9IGFwcGx5V2hlcmUocXVlcnksIHdoZXJlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc29ydEJ5KSB7XG4gICAgICAgICAgY29uc3QgZGJGaWVsZCA9IGdldEZpZWxkTmFtZSh7IG1vZGVsLCBmaWVsZDogc29ydEJ5LmZpZWxkIH0pO1xuICAgICAgICAgIHF1ZXJ5ID0gcXVlcnkub3JkZXJCeShkYkZpZWxkLCBzb3J0QnkuZGlyZWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGltaXQpIHtcbiAgICAgICAgICBxdWVyeSA9IHF1ZXJ5LmxpbWl0KGxpbWl0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob2Zmc2V0KSB7XG4gICAgICAgICAgcXVlcnkgPSBxdWVyeS5vZmZzZXQob2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgcXVlcnk7XG4gICAgICB9LFxuXG4gICAgICB1cGRhdGU6IGFzeW5jICh7IG1vZGVsLCB3aGVyZSwgdXBkYXRlIH0pID0+IHtcbiAgICAgICAgbGV0IHF1ZXJ5ID0gZ2V0RGIoKShtb2RlbCk7XG4gICAgICAgIHF1ZXJ5ID0gYXBwbHlXaGVyZShxdWVyeSwgd2hlcmUpO1xuICAgICAgICBjb25zdCBbcm93XSA9IGF3YWl0IHF1ZXJ5LnVwZGF0ZSh1cGRhdGUpLnJldHVybmluZyhcIipcIik7XG4gICAgICAgIHJldHVybiByb3cgPz8gbnVsbDtcbiAgICAgIH0sXG5cbiAgICAgIHVwZGF0ZU1hbnk6IGFzeW5jICh7IG1vZGVsLCB3aGVyZSwgdXBkYXRlIH0pID0+IHtcbiAgICAgICAgbGV0IHF1ZXJ5ID0gZ2V0RGIoKShtb2RlbCk7XG4gICAgICAgIHF1ZXJ5ID0gYXBwbHlXaGVyZShxdWVyeSwgd2hlcmUpO1xuICAgICAgICBjb25zdCBjb3VudCA9IGF3YWl0IHF1ZXJ5LnVwZGF0ZSh1cGRhdGUpO1xuICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICB9LFxuXG4gICAgICBkZWxldGU6IGFzeW5jICh7IG1vZGVsLCB3aGVyZSB9KSA9PiB7XG4gICAgICAgIGxldCBxdWVyeSA9IGdldERiKCkobW9kZWwpO1xuICAgICAgICBxdWVyeSA9IGFwcGx5V2hlcmUocXVlcnksIHdoZXJlKTtcbiAgICAgICAgYXdhaXQgcXVlcnkuZGVsKCk7XG4gICAgICB9LFxuXG4gICAgICBkZWxldGVNYW55OiBhc3luYyAoeyBtb2RlbCwgd2hlcmUgfSkgPT4ge1xuICAgICAgICBsZXQgcXVlcnkgPSBnZXREYigpKG1vZGVsKTtcbiAgICAgICAgcXVlcnkgPSBhcHBseVdoZXJlKHF1ZXJ5LCB3aGVyZSk7XG4gICAgICAgIGNvbnN0IGNvdW50ID0gYXdhaXQgcXVlcnkuZGVsKCk7XG4gICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgIH0sXG5cbiAgICAgIGNvdW50OiBhc3luYyAoeyBtb2RlbCwgd2hlcmUgfSkgPT4ge1xuICAgICAgICBsZXQgcXVlcnkgPSBnZXREYigpKG1vZGVsKTtcbiAgICAgICAgaWYgKHdoZXJlKSB7XG4gICAgICAgICAgcXVlcnkgPSBhcHBseVdoZXJlKHF1ZXJ5LCB3aGVyZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgW3sgY291bnQgfV0gPSBhd2FpdCBxdWVyeS5jb3VudChcIiogYXMgY291bnRcIik7XG4gICAgICAgIHJldHVybiBOdW1iZXIoY291bnQpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBhZGFwdGVyQ29uZmlnID0ge1xuICAgIGFkYXB0ZXJJZDogXCJzb25hbXUta25leFwiLFxuICAgIGFkYXB0ZXJOYW1lOiBcIlNvbmFtdSBLbmV4IEFkYXB0ZXJcIixcbiAgICB1c2VQbHVyYWw6IGZhbHNlLFxuICAgIHN1cHBvcnRzSlNPTjogdHJ1ZSxcbiAgICBzdXBwb3J0c0RhdGVzOiB0cnVlLFxuICAgIHN1cHBvcnRzQm9vbGVhbnM6IHRydWUsXG4gICAgc3VwcG9ydHNOdW1lcmljSWRzOiBmYWxzZSxcbiAgICB0cmFuc2FjdGlvbjogYXN5bmMgPFI+KGNiOiAodHJ4OiBEQlRyYW5zYWN0aW9uQWRhcHRlcikgPT4gUHJvbWlzZTxSPik6IFByb21pc2U8Uj4gPT4ge1xuICAgICAgY29uc3QgZGIgPSBEQi5nZXREQihcIndcIik7XG4gICAgICByZXR1cm4gZGIudHJhbnNhY3Rpb24oYXN5bmMgKHRyeCkgPT4ge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gbGF6eU9wdGlvbnM7XG4gICAgICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInNvbmFtdUtuZXhBZGFwdGVyOiBvcHRpb25zIG5vdCBpbml0aWFsaXplZFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2IoXG4gICAgICAgICAgY3JlYXRlQWRhcHRlckZhY3Rvcnkoe1xuICAgICAgICAgICAgY29uZmlnOiBhZGFwdGVyQ29uZmlnLFxuICAgICAgICAgICAgYWRhcHRlcjogY3JlYXRlQ3VzdG9tQWRhcHRlcigoKSA9PiB0cngpLFxuICAgICAgICAgIH0pKG9wdGlvbnMpLFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcblxuICBjb25zdCBhZGFwdGVyQ3JlYXRvciA9IGNyZWF0ZUFkYXB0ZXJGYWN0b3J5KHtcbiAgICBjb25maWc6IGFkYXB0ZXJDb25maWcsXG4gICAgYWRhcHRlcjogY3JlYXRlQ3VzdG9tQWRhcHRlcigoKSA9PiBEQi5nZXREQihcIndcIikpLFxuICB9KTtcblxuICByZXR1cm4gKG9wdGlvbnM6IEJldHRlckF1dGhPcHRpb25zKSA9PiB7XG4gICAgbGF6eU9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHJldHVybiBhZGFwdGVyQ3JlYXRvcihvcHRpb25zKTtcbiAgfTtcbn07XG5cbi8qKlxuICogQmV0dGVyIEF1dGjsnZgg6rO17IudIOyWtOuMke2EsChLeXNlbHksIERyaXp6bGUsIFByaXNtYSwgTW9uZ29EQikg7Yyo7YS07JeQIOunnuy2sFxuICogQU5EIOq3uOujueqzvCBPUiDqt7jro7nsnYQg67aE66as7ZWcIOuSpCB0b3AtbGV2ZWwgQU5E66GcIOqysO2Vqe2VqeuLiOuLpC5cbiAqIOqysOqzvDogKEEgQU5EIEIgQU5EIC4uLikgQU5EIChDIE9SIEQgT1IgLi4uKVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlXaGVyZShcbiAgcXVlcnk6IEtuZXguUXVlcnlCdWlsZGVyLFxuICBjb25kaXRpb25zOiBDbGVhbmVkV2hlcmVbXSxcbik6IEtuZXguUXVlcnlCdWlsZGVyIHtcbiAgY29uc3QgYW5kR3JvdXAgPSBjb25kaXRpb25zLmZpbHRlcigoYykgPT4gYy5jb25uZWN0b3IgIT09IFwiT1JcIik7XG4gIGNvbnN0IG9yR3JvdXAgPSBjb25kaXRpb25zLmZpbHRlcigoYykgPT4gYy5jb25uZWN0b3IgPT09IFwiT1JcIik7XG5cbiAgaWYgKGFuZEdyb3VwLmxlbmd0aCA+IDApIHtcbiAgICBmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiBhbmRHcm91cCkge1xuICAgICAgcXVlcnkgPSBhcHBseUNvbmRpdGlvbihxdWVyeSwgY29uZGl0aW9uLCBcIndoZXJlXCIpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvckdyb3VwLmxlbmd0aCA+IDApIHtcbiAgICBxdWVyeSA9IHF1ZXJ5LndoZXJlKGZ1bmN0aW9uICh0aGlzOiBLbmV4LlF1ZXJ5QnVpbGRlcikge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvckdyb3VwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGFwcGx5Q29uZGl0aW9uKHRoaXMsIG9yR3JvdXBbaV0sIGkgPT09IDAgPyBcIndoZXJlXCIgOiBcIm9yV2hlcmVcIik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcXVlcnk7XG59XG5cbmZ1bmN0aW9uIGFwcGx5Q29uZGl0aW9uKFxuICBxdWVyeTogS25leC5RdWVyeUJ1aWxkZXIsXG4gIGNvbmRpdGlvbjogQ2xlYW5lZFdoZXJlLFxuICBtZXRob2Q6IFwid2hlcmVcIiB8IFwib3JXaGVyZVwiLFxuKTogS25leC5RdWVyeUJ1aWxkZXIge1xuICBjb25zdCB7IGZpZWxkLCB2YWx1ZSwgb3BlcmF0b3IgfSA9IGNvbmRpdGlvbjtcblxuICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgY2FzZSBcImVxXCI6XG4gICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHF1ZXJ5W21ldGhvZCA9PT0gXCJvcldoZXJlXCIgPyBcIm9yV2hlcmVOdWxsXCIgOiBcIndoZXJlTnVsbFwiXShmaWVsZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcXVlcnlbbWV0aG9kXShmaWVsZCwgXCI9XCIsIHZhbHVlKTtcbiAgICBjYXNlIFwibmVcIjpcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcXVlcnlbbWV0aG9kID09PSBcIm9yV2hlcmVcIiA/IFwib3JXaGVyZU5vdE51bGxcIiA6IFwid2hlcmVOb3ROdWxsXCJdKGZpZWxkKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBxdWVyeVttZXRob2RdKGZpZWxkLCBcIiE9XCIsIHZhbHVlKTtcbiAgICBjYXNlIFwibHRcIjpcbiAgICAgIHJldHVybiBxdWVyeVttZXRob2RdKGZpZWxkLCBcIjxcIiwgdmFsdWUpO1xuICAgIGNhc2UgXCJsdGVcIjpcbiAgICAgIHJldHVybiBxdWVyeVttZXRob2RdKGZpZWxkLCBcIjw9XCIsIHZhbHVlKTtcbiAgICBjYXNlIFwiZ3RcIjpcbiAgICAgIHJldHVybiBxdWVyeVttZXRob2RdKGZpZWxkLCBcIj5cIiwgdmFsdWUpO1xuICAgIGNhc2UgXCJndGVcIjpcbiAgICAgIHJldHVybiBxdWVyeVttZXRob2RdKGZpZWxkLCBcIj49XCIsIHZhbHVlKTtcbiAgICBjYXNlIFwiaW5cIjpcbiAgICAgIHJldHVybiBxdWVyeVttZXRob2QgPT09IFwib3JXaGVyZVwiID8gXCJvcldoZXJlSW5cIiA6IFwid2hlcmVJblwiXShcbiAgICAgICAgZmllbGQsXG4gICAgICAgIHZhbHVlIGFzIChzdHJpbmcgfCBudW1iZXIpW10sXG4gICAgICApO1xuICAgIGNhc2UgXCJub3RfaW5cIjpcbiAgICAgIHJldHVybiBxdWVyeVttZXRob2QgPT09IFwib3JXaGVyZVwiID8gXCJvcldoZXJlTm90SW5cIiA6IFwid2hlcmVOb3RJblwiXShcbiAgICAgICAgZmllbGQsXG4gICAgICAgIHZhbHVlIGFzIChzdHJpbmcgfCBudW1iZXIpW10sXG4gICAgICApO1xuICAgIGNhc2UgXCJjb250YWluc1wiOlxuICAgICAgcmV0dXJuIHF1ZXJ5W21ldGhvZF0oZmllbGQsIFwibGlrZVwiLCBgJSR7dmFsdWV9JWApO1xuICAgIGNhc2UgXCJzdGFydHNfd2l0aFwiOlxuICAgICAgcmV0dXJuIHF1ZXJ5W21ldGhvZF0oZmllbGQsIFwibGlrZVwiLCBgJHt2YWx1ZX0lYCk7XG4gICAgY2FzZSBcImVuZHNfd2l0aFwiOlxuICAgICAgcmV0dXJuIHF1ZXJ5W21ldGhvZF0oZmllbGQsIFwibGlrZVwiLCBgJSR7dmFsdWV9YCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBxdWVyeTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUEySUEsU0FBZ0IsV0FDZCxPQUNBLFlBQ21CO0NBQ25CLE1BQU0sV0FBVyxXQUFXLFFBQVEsTUFBTSxFQUFFLGNBQWMsSUFBSTtDQUM5RCxNQUFNLFVBQVUsV0FBVyxRQUFRLE1BQU0sRUFBRSxjQUFjLElBQUk7Q0FFN0QsSUFBSSxTQUFTLFNBQVMsR0FDcEIsS0FBSyxNQUFNLGFBQWEsVUFDdEIsUUFBUSxlQUFlLE9BQU8sV0FBVyxPQUFPO0NBSXBELElBQUksUUFBUSxTQUFTLEdBQ25CLFFBQVEsTUFBTSxNQUFNLFdBQW1DO0VBQ3JELEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxRQUFRLFFBQVEsS0FDbEMsZUFBZSxNQUFNLFFBQVEsSUFBSSxNQUFNLElBQUksVUFBVSxTQUFTO0NBRWxFLENBQUM7Q0FHSCxPQUFPO0FBQ1Q7QUFFQSxTQUFTLGVBQ1AsT0FDQSxXQUNBLFFBQ21CO0NBQ25CLE1BQU0sRUFBRSxPQUFPLE9BQU8sYUFBYTtDQUVuQyxRQUFRLFVBQVI7RUFDRSxLQUFLO0dBQ0gsSUFBSSxVQUFVLE1BQ1osT0FBTyxNQUFNLFdBQVcsWUFBWSxnQkFBZ0IsWUFBWSxDQUFDLEtBQUs7R0FFeEUsT0FBTyxNQUFNLE9BQU8sQ0FBQyxPQUFPLEtBQUssS0FBSztFQUN4QyxLQUFLO0dBQ0gsSUFBSSxVQUFVLE1BQ1osT0FBTyxNQUFNLFdBQVcsWUFBWSxtQkFBbUIsZUFBZSxDQUFDLEtBQUs7R0FFOUUsT0FBTyxNQUFNLE9BQU8sQ0FBQyxPQUFPLE1BQU0sS0FBSztF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
132
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia25leC1hZGFwdGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdXRoL2tuZXgtYWRhcHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEJldHRlckF1dGhPcHRpb25zIH0gZnJvbSBcImJldHRlci1hdXRoXCI7XG5pbXBvcnQge1xuICB0eXBlIEFkYXB0ZXJGYWN0b3J5Q3VzdG9taXplQWRhcHRlckNyZWF0b3IsXG4gIHR5cGUgREJUcmFuc2FjdGlvbkFkYXB0ZXIsXG59IGZyb20gXCJiZXR0ZXItYXV0aC9hZGFwdGVyc1wiO1xuaW1wb3J0IHsgY3JlYXRlQWRhcHRlckZhY3RvcnkgfSBmcm9tIFwiYmV0dGVyLWF1dGgvYWRhcHRlcnNcIjtcbmltcG9ydCB7IHR5cGUgS25leCB9IGZyb20gXCJrbmV4XCI7XG5cbmltcG9ydCB7IERCIH0gZnJvbSBcIi4uL2RhdGFiYXNlL2RiXCI7XG5cbmludGVyZmFjZSBDbGVhbmVkV2hlcmUge1xuICBmaWVsZDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHN0cmluZ1tdIHwgbnVtYmVyW10gfCBEYXRlIHwgbnVsbDtcbiAgb3BlcmF0b3I6IHN0cmluZztcbiAgY29ubmVjdG9yOiBzdHJpbmc7XG59XG5cbi8qKlxuICogYmV0dGVyLWF1dGjsmqkgU29uYW11IGtuZXgg7Ja064yR7YSwXG4gKlxuICogYmV0dGVyLWF1dGjsnZgg66qo65OgIOy/vOumrOulvCBEQi5nZXREQigp66W8IO2Gte2VtCDsi6TtlontlZjsl6xcbiAqIFNvbmFtdSDthYzsiqTtirgg7Yq4656c7J6t7IWY6rO8IOuPmeydvO2VnCDsu6TrhKXshZjsnYQg6rO17Jyg7ZWp64uI64ukLlxuICovXG5leHBvcnQgY29uc3Qgc29uYW11S25leEFkYXB0ZXIgPSAoKSA9PiB7XG4gIGxldCBsYXp5T3B0aW9uczogQmV0dGVyQXV0aE9wdGlvbnMgfCBudWxsID0gbnVsbDtcblxuICBjb25zdCBjcmVhdGVDdXN0b21BZGFwdGVyID0gKFxuICAgIGdldERiOiAoKSA9PiBLbmV4IHwgS25leC5UcmFuc2FjdGlvbixcbiAgKTogQWRhcHRlckZhY3RvcnlDdXN0b21pemVBZGFwdGVyQ3JlYXRvciA9PiB7XG4gICAgcmV0dXJuICh7IGdldEZpZWxkTmFtZSB9KSA9PiAoe1xuICAgICAgY3JlYXRlOiBhc3luYyAoeyBtb2RlbCwgZGF0YSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IFtyb3ddID0gYXdhaXQgZ2V0RGIoKShtb2RlbCkuaW5zZXJ0KGRhdGEpLnJldHVybmluZyhcIipcIik7XG4gICAgICAgIHJldHVybiByb3c7XG4gICAgICB9LFxuXG4gICAgICBmaW5kT25lOiBhc3luYyAoeyBtb2RlbCwgd2hlcmUgfSkgPT4ge1xuICAgICAgICBsZXQgcXVlcnkgPSBnZXREYigpKG1vZGVsKTtcbiAgICAgICAgcXVlcnkgPSBhcHBseVdoZXJlKHF1ZXJ5LCB3aGVyZSk7XG4gICAgICAgIGNvbnN0IHJvdyA9IGF3YWl0IHF1ZXJ5LmZpcnN0KCk7XG4gICAgICAgIHJldHVybiByb3cgPz8gbnVsbDtcbiAgICAgIH0sXG5cbiAgICAgIGZpbmRNYW55OiBhc3luYyAoeyBtb2RlbCwgd2hlcmUsIGxpbWl0LCBvZmZzZXQsIHNvcnRCeSB9KSA9PiB7XG4gICAgICAgIGxldCBxdWVyeSA9IGdldERiKCkobW9kZWwpO1xuICAgICAgICBpZiAod2hlcmUpIHtcbiAgICAgICAgICBxdWVyeSA9IGFwcGx5V2hlcmUocXVlcnksIHdoZXJlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc29ydEJ5KSB7XG4gICAgICAgICAgY29uc3QgZGJGaWVsZCA9IGdldEZpZWxkTmFtZSh7IG1vZGVsLCBmaWVsZDogc29ydEJ5LmZpZWxkIH0pO1xuICAgICAgICAgIHF1ZXJ5ID0gcXVlcnkub3JkZXJCeShkYkZpZWxkLCBzb3J0QnkuZGlyZWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGltaXQpIHtcbiAgICAgICAgICBxdWVyeSA9IHF1ZXJ5LmxpbWl0KGxpbWl0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob2Zmc2V0KSB7XG4gICAgICAgICAgcXVlcnkgPSBxdWVyeS5vZmZzZXQob2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgcXVlcnk7XG4gICAgICB9LFxuXG4gICAgICB1cGRhdGU6IGFzeW5jICh7IG1vZGVsLCB3aGVyZSwgdXBkYXRlIH0pID0+IHtcbiAgICAgICAgbGV0IHF1ZXJ5ID0gZ2V0RGIoKShtb2RlbCk7XG4gICAgICAgIHF1ZXJ5ID0gYXBwbHlXaGVyZShxdWVyeSwgd2hlcmUpO1xuICAgICAgICBjb25zdCBbcm93XSA9IGF3YWl0IHF1ZXJ5LnVwZGF0ZSh1cGRhdGUpLnJldHVybmluZyhcIipcIik7XG4gICAgICAgIHJldHVybiByb3cgPz8gbnVsbDtcbiAgICAgIH0sXG5cbiAgICAgIHVwZGF0ZU1hbnk6IGFzeW5jICh7IG1vZGVsLCB3aGVyZSwgdXBkYXRlIH0pID0+IHtcbiAgICAgICAgbGV0IHF1ZXJ5ID0gZ2V0RGIoKShtb2RlbCk7XG4gICAgICAgIHF1ZXJ5ID0gYXBwbHlXaGVyZShxdWVyeSwgd2hlcmUpO1xuICAgICAgICBjb25zdCBjb3VudCA9IGF3YWl0IHF1ZXJ5LnVwZGF0ZSh1cGRhdGUpO1xuICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICB9LFxuXG4gICAgICBkZWxldGU6IGFzeW5jICh7IG1vZGVsLCB3aGVyZSB9KSA9PiB7XG4gICAgICAgIGxldCBxdWVyeSA9IGdldERiKCkobW9kZWwpO1xuICAgICAgICBxdWVyeSA9IGFwcGx5V2hlcmUocXVlcnksIHdoZXJlKTtcbiAgICAgICAgYXdhaXQgcXVlcnkuZGVsKCk7XG4gICAgICB9LFxuXG4gICAgICBkZWxldGVNYW55OiBhc3luYyAoeyBtb2RlbCwgd2hlcmUgfSkgPT4ge1xuICAgICAgICBsZXQgcXVlcnkgPSBnZXREYigpKG1vZGVsKTtcbiAgICAgICAgcXVlcnkgPSBhcHBseVdoZXJlKHF1ZXJ5LCB3aGVyZSk7XG4gICAgICAgIGNvbnN0IGNvdW50ID0gYXdhaXQgcXVlcnkuZGVsKCk7XG4gICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgIH0sXG5cbiAgICAgIGNvdW50OiBhc3luYyAoeyBtb2RlbCwgd2hlcmUgfSkgPT4ge1xuICAgICAgICBsZXQgcXVlcnkgPSBnZXREYigpKG1vZGVsKTtcbiAgICAgICAgaWYgKHdoZXJlKSB7XG4gICAgICAgICAgcXVlcnkgPSBhcHBseVdoZXJlKHF1ZXJ5LCB3aGVyZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgW3sgY291bnQgfV0gPSBhd2FpdCBxdWVyeS5jb3VudChcIiogYXMgY291bnRcIik7XG4gICAgICAgIHJldHVybiBOdW1iZXIoY291bnQpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBhZGFwdGVyQ29uZmlnID0ge1xuICAgIGFkYXB0ZXJJZDogXCJzb25hbXUta25leFwiLFxuICAgIGFkYXB0ZXJOYW1lOiBcIlNvbmFtdSBLbmV4IEFkYXB0ZXJcIixcbiAgICB1c2VQbHVyYWw6IGZhbHNlLFxuICAgIHN1cHBvcnRzSlNPTjogdHJ1ZSxcbiAgICBzdXBwb3J0c0RhdGVzOiB0cnVlLFxuICAgIHN1cHBvcnRzQm9vbGVhbnM6IHRydWUsXG4gICAgc3VwcG9ydHNOdW1lcmljSWRzOiBmYWxzZSxcbiAgICB0cmFuc2FjdGlvbjogYXN5bmMgPFI+KGNiOiAodHJ4OiBEQlRyYW5zYWN0aW9uQWRhcHRlcikgPT4gUHJvbWlzZTxSPik6IFByb21pc2U8Uj4gPT4ge1xuICAgICAgY29uc3QgZGIgPSBEQi5nZXREQihcIndcIik7XG4gICAgICByZXR1cm4gZGIudHJhbnNhY3Rpb24oYXN5bmMgKHRyeCkgPT4ge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gbGF6eU9wdGlvbnM7XG4gICAgICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInNvbmFtdUtuZXhBZGFwdGVyOiBvcHRpb25zIG5vdCBpbml0aWFsaXplZFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2IoXG4gICAgICAgICAgY3JlYXRlQWRhcHRlckZhY3Rvcnkoe1xuICAgICAgICAgICAgY29uZmlnOiBhZGFwdGVyQ29uZmlnLFxuICAgICAgICAgICAgYWRhcHRlcjogY3JlYXRlQ3VzdG9tQWRhcHRlcigoKSA9PiB0cngpLFxuICAgICAgICAgIH0pKG9wdGlvbnMpLFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcblxuICBjb25zdCBhZGFwdGVyQ3JlYXRvciA9IGNyZWF0ZUFkYXB0ZXJGYWN0b3J5KHtcbiAgICBjb25maWc6IGFkYXB0ZXJDb25maWcsXG4gICAgYWRhcHRlcjogY3JlYXRlQ3VzdG9tQWRhcHRlcigoKSA9PiBEQi5nZXREQihcIndcIikpLFxuICB9KTtcblxuICByZXR1cm4gKG9wdGlvbnM6IEJldHRlckF1dGhPcHRpb25zKSA9PiB7XG4gICAgbGF6eU9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHJldHVybiBhZGFwdGVyQ3JlYXRvcihvcHRpb25zKTtcbiAgfTtcbn07XG5cbi8qKlxuICogQmV0dGVyIEF1dGjsnZgg6rO17IudIOyWtOuMke2EsChLeXNlbHksIERyaXp6bGUsIFByaXNtYSwgTW9uZ29EQikg7Yyo7YS07JeQIOunnuy2sFxuICogQU5EIOq3uOujueqzvCBPUiDqt7jro7nsnYQg67aE66as7ZWcIOuSpCB0b3AtbGV2ZWwgQU5E66GcIOqysO2Vqe2VqeuLiOuLpC5cbiAqIOqysOqzvDogKEEgQU5EIEIgQU5EIC4uLikgQU5EIChDIE9SIEQgT1IgLi4uKVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlXaGVyZShcbiAgcXVlcnk6IEtuZXguUXVlcnlCdWlsZGVyLFxuICBjb25kaXRpb25zOiBDbGVhbmVkV2hlcmVbXSxcbik6IEtuZXguUXVlcnlCdWlsZGVyIHtcbiAgY29uc3QgYW5kR3JvdXAgPSBjb25kaXRpb25zLmZpbHRlcigoYykgPT4gYy5jb25uZWN0b3IgIT09IFwiT1JcIik7XG4gIGNvbnN0IG9yR3JvdXAgPSBjb25kaXRpb25zLmZpbHRlcigoYykgPT4gYy5jb25uZWN0b3IgPT09IFwiT1JcIik7XG5cbiAgaWYgKGFuZEdyb3VwLmxlbmd0aCA+IDApIHtcbiAgICBmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiBhbmRHcm91cCkge1xuICAgICAgcXVlcnkgPSBhcHBseUNvbmRpdGlvbihxdWVyeSwgY29uZGl0aW9uLCBcIndoZXJlXCIpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvckdyb3VwLmxlbmd0aCA+IDApIHtcbiAgICBxdWVyeSA9IHF1ZXJ5LndoZXJlKGZ1bmN0aW9uICh0aGlzOiBLbmV4LlF1ZXJ5QnVpbGRlcikge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvckdyb3VwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGFwcGx5Q29uZGl0aW9uKHRoaXMsIG9yR3JvdXBbaV0sIGkgPT09IDAgPyBcIndoZXJlXCIgOiBcIm9yV2hlcmVcIik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcXVlcnk7XG59XG5cbmZ1bmN0aW9uIGFwcGx5Q29uZGl0aW9uKFxuICBxdWVyeTogS25leC5RdWVyeUJ1aWxkZXIsXG4gIGNvbmRpdGlvbjogQ2xlYW5lZFdoZXJlLFxuICBtZXRob2Q6IFwid2hlcmVcIiB8IFwib3JXaGVyZVwiLFxuKTogS25leC5RdWVyeUJ1aWxkZXIge1xuICBjb25zdCB7IGZpZWxkLCB2YWx1ZSwgb3BlcmF0b3IgfSA9IGNvbmRpdGlvbjtcblxuICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgY2FzZSBcImVxXCI6XG4gICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHF1ZXJ5W21ldGhvZCA9PT0gXCJvcldoZXJlXCIgPyBcIm9yV2hlcmVOdWxsXCIgOiBcIndoZXJlTnVsbFwiXShmaWVsZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcXVlcnlbbWV0aG9kXShmaWVsZCwgXCI9XCIsIHZhbHVlKTtcbiAgICBjYXNlIFwibmVcIjpcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcXVlcnlbbWV0aG9kID09PSBcIm9yV2hlcmVcIiA/IFwib3JXaGVyZU5vdE51bGxcIiA6IFwid2hlcmVOb3ROdWxsXCJdKGZpZWxkKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBxdWVyeVttZXRob2RdKGZpZWxkLCBcIiE9XCIsIHZhbHVlKTtcbiAgICBjYXNlIFwibHRcIjpcbiAgICAgIHJldHVybiBxdWVyeVttZXRob2RdKGZpZWxkLCBcIjxcIiwgdmFsdWUpO1xuICAgIGNhc2UgXCJsdGVcIjpcbiAgICAgIHJldHVybiBxdWVyeVttZXRob2RdKGZpZWxkLCBcIjw9XCIsIHZhbHVlKTtcbiAgICBjYXNlIFwiZ3RcIjpcbiAgICAgIHJldHVybiBxdWVyeVttZXRob2RdKGZpZWxkLCBcIj5cIiwgdmFsdWUpO1xuICAgIGNhc2UgXCJndGVcIjpcbiAgICAgIHJldHVybiBxdWVyeVttZXRob2RdKGZpZWxkLCBcIj49XCIsIHZhbHVlKTtcbiAgICBjYXNlIFwiaW5cIjpcbiAgICAgIHJldHVybiBxdWVyeVttZXRob2QgPT09IFwib3JXaGVyZVwiID8gXCJvcldoZXJlSW5cIiA6IFwid2hlcmVJblwiXShcbiAgICAgICAgZmllbGQsXG4gICAgICAgIC8qIFNBRkVUWTogYmV0dGVyLWF1dGgg7ZuF6rO8IOyWtOuMke2EsCDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyB2YWx1ZSBhcyAoXG4gICAgICAgICAgfCBzdHJpbmdcbiAgICAgICAgICB8IG51bWJlclxuICAgICAgICApW10sXG4gICAgICApO1xuICAgIGNhc2UgXCJub3RfaW5cIjpcbiAgICAgIHJldHVybiBxdWVyeVttZXRob2QgPT09IFwib3JXaGVyZVwiID8gXCJvcldoZXJlTm90SW5cIiA6IFwid2hlcmVOb3RJblwiXShcbiAgICAgICAgZmllbGQsXG4gICAgICAgIC8qIFNBRkVUWTogYmV0dGVyLWF1dGgg7ZuF6rO8IOyWtOuMke2EsCDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyB2YWx1ZSBhcyAoXG4gICAgICAgICAgfCBzdHJpbmdcbiAgICAgICAgICB8IG51bWJlclxuICAgICAgICApW10sXG4gICAgICApO1xuICAgIGNhc2UgXCJjb250YWluc1wiOlxuICAgICAgcmV0dXJuIHF1ZXJ5W21ldGhvZF0oZmllbGQsIFwibGlrZVwiLCBgJSR7dmFsdWV9JWApO1xuICAgIGNhc2UgXCJzdGFydHNfd2l0aFwiOlxuICAgICAgcmV0dXJuIHF1ZXJ5W21ldGhvZF0oZmllbGQsIFwibGlrZVwiLCBgJHt2YWx1ZX0lYCk7XG4gICAgY2FzZSBcImVuZHNfd2l0aFwiOlxuICAgICAgcmV0dXJuIHF1ZXJ5W21ldGhvZF0oZmllbGQsIFwibGlrZVwiLCBgJSR7dmFsdWV9YCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBxdWVyeTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUEySUEsU0FBZ0IsV0FDZCxPQUNBLFlBQ21CO0NBQ25CLE1BQU0sV0FBVyxXQUFXLFFBQVEsTUFBTSxFQUFFLGNBQWMsSUFBSTtDQUM5RCxNQUFNLFVBQVUsV0FBVyxRQUFRLE1BQU0sRUFBRSxjQUFjLElBQUk7Q0FFN0QsSUFBSSxTQUFTLFNBQVMsR0FDcEIsS0FBSyxNQUFNLGFBQWEsVUFDdEIsUUFBUSxlQUFlLE9BQU8sV0FBVyxPQUFPO0NBSXBELElBQUksUUFBUSxTQUFTLEdBQ25CLFFBQVEsTUFBTSxNQUFNLFdBQW1DO0VBQ3JELEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxRQUFRLFFBQVEsS0FDbEMsZUFBZSxNQUFNLFFBQVEsSUFBSSxNQUFNLElBQUksVUFBVSxTQUFTO0NBRWxFLENBQUM7Q0FHSCxPQUFPO0FBQ1Q7QUFFQSxTQUFTLGVBQ1AsT0FDQSxXQUNBLFFBQ21CO0NBQ25CLE1BQU0sRUFBRSxPQUFPLE9BQU8sYUFB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
@@ -15,7 +15,19 @@ import { type BetterAuthEntityDef, type BetterAuthPluginId } from "./types";
15
15
  * 엔티티 정의 레지스트리
16
16
  * 플러그인 ID로 엔티티 정의에 접근할 수 있습니다.
17
17
  */
18
- export declare const ENTITY_DEFINITIONS: Record<BetterAuthPluginId, BetterAuthEntityDef>;
18
+ export declare const ENTITY_DEFINITIONS: {
19
+ admin: BetterAuthEntityDef;
20
+ username: BetterAuthEntityDef;
21
+ "phone-number": BetterAuthEntityDef;
22
+ "2fa": BetterAuthEntityDef;
23
+ sso: BetterAuthEntityDef;
24
+ passkey: BetterAuthEntityDef;
25
+ organization: BetterAuthEntityDef;
26
+ "api-key": BetterAuthEntityDef;
27
+ jwt: BetterAuthEntityDef;
28
+ anonymous: BetterAuthEntityDef;
29
+ "audit-log": BetterAuthEntityDef;
30
+ };
19
31
  /**
20
32
  * 지원하는 플러그인 ID 목록
21
33
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/auth/plugins/entity-definitions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAY/C,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG5E;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,CAY9E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,EAE5B,CAAC;AAE1B;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,kBAAkB,CAEpE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/auth/plugins/entity-definitions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAY/C,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG5E;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;CAY4B,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,EAG1B,CAAC;AAE5B;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,kBAAkB,CAEpE"}
@@ -40,4 +40,4 @@ function isValidPluginId(id) {
40
40
  //#endregion
41
41
  export { ENTITY_DEFINITIONS, SUPPORTED_PLUGIN_IDS, adminEntityDef, anonymousEntityDef, apiKeyEntityDef, auditLogEntityDef, isValidPluginId, jwtEntityDef, organizationEntityDef, passkeyEntityDef, phoneNumberEntityDef, ssoEntityDef, twoFactorEntityDef, usernameEntityDef };
42
42
 
43
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F1dGgvcGx1Z2lucy9lbnRpdHktZGVmaW5pdGlvbnMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgYWRtaW5FbnRpdHlEZWYgfSBmcm9tIFwiLi9hZG1pblwiO1xuZXhwb3J0IHsgYW5vbnltb3VzRW50aXR5RGVmIH0gZnJvbSBcIi4vYW5vbnltb3VzXCI7XG5leHBvcnQgeyBhcGlLZXlFbnRpdHlEZWYgfSBmcm9tIFwiLi9hcGkta2V5XCI7XG5leHBvcnQgeyBhdWRpdExvZ0VudGl0eURlZiB9IGZyb20gXCIuL2F1ZGl0LWxvZ1wiO1xuZXhwb3J0IHsgand0RW50aXR5RGVmIH0gZnJvbSBcIi4vand0XCI7XG5leHBvcnQgeyBvcmdhbml6YXRpb25FbnRpdHlEZWYgfSBmcm9tIFwiLi9vcmdhbml6YXRpb25cIjtcbmV4cG9ydCB7IHBhc3NrZXlFbnRpdHlEZWYgfSBmcm9tIFwiLi9wYXNza2V5XCI7XG5leHBvcnQgeyBwaG9uZU51bWJlckVudGl0eURlZiB9IGZyb20gXCIuL3Bob25lLW51bWJlclwiO1xuZXhwb3J0IHsgc3NvRW50aXR5RGVmIH0gZnJvbSBcIi4vc3NvXCI7XG5leHBvcnQgeyB0d29GYWN0b3JFbnRpdHlEZWYgfSBmcm9tIFwiLi90d28tZmFjdG9yXCI7XG5leHBvcnQgdHlwZSB7IEJldHRlckF1dGhFbnRpdHlEZWYsIEJldHRlckF1dGhQbHVnaW5JZCB9IGZyb20gXCIuL3R5cGVzXCI7XG5leHBvcnQgeyB1c2VybmFtZUVudGl0eURlZiB9IGZyb20gXCIuL3VzZXJuYW1lXCI7XG5cbmltcG9ydCB7IGFkbWluRW50aXR5RGVmIH0gZnJvbSBcIi4vYWRtaW5cIjtcbmltcG9ydCB7IGFub255bW91c0VudGl0eURlZiB9IGZyb20gXCIuL2Fub255bW91c1wiO1xuaW1wb3J0IHsgYXBpS2V5RW50aXR5RGVmIH0gZnJvbSBcIi4vYXBpLWtleVwiO1xuaW1wb3J0IHsgYXVkaXRMb2dFbnRpdHlEZWYgfSBmcm9tIFwiLi9hdWRpdC1sb2dcIjtcbmltcG9ydCB7IGp3dEVudGl0eURlZiB9IGZyb20gXCIuL2p3dFwiO1xuaW1wb3J0IHsgb3JnYW5pemF0aW9uRW50aXR5RGVmIH0gZnJvbSBcIi4vb3JnYW5pemF0aW9uXCI7XG5pbXBvcnQgeyBwYXNza2V5RW50aXR5RGVmIH0gZnJvbSBcIi4vcGFzc2tleVwiO1xuaW1wb3J0IHsgcGhvbmVOdW1iZXJFbnRpdHlEZWYgfSBmcm9tIFwiLi9waG9uZS1udW1iZXJcIjtcbmltcG9ydCB7IHNzb0VudGl0eURlZiB9IGZyb20gXCIuL3Nzb1wiO1xuaW1wb3J0IHsgdHdvRmFjdG9yRW50aXR5RGVmIH0gZnJvbSBcIi4vdHdvLWZhY3RvclwiO1xuaW1wb3J0IHsgdHlwZSBCZXR0ZXJBdXRoRW50aXR5RGVmLCB0eXBlIEJldHRlckF1dGhQbHVnaW5JZCB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyB1c2VybmFtZUVudGl0eURlZiB9IGZyb20gXCIuL3VzZXJuYW1lXCI7XG5cbi8qKlxuICog7JeU7Yuw7YuwIOygleydmCDroIjsp4DsiqTtirjrpqxcbiAqIO2UjOufrOq3uOyduCBJROuhnCDsl5Tti7Dti7Ag7KCV7J2Y7JeQIOygkeq3vO2VoCDsiJgg7J6I7Iq164uI64ukLlxuICovXG5leHBvcnQgY29uc3QgRU5USVRZX0RFRklOSVRJT05TOiBSZWNvcmQ8QmV0dGVyQXV0aFBsdWdpbklkLCBCZXR0ZXJBdXRoRW50aXR5RGVmPiA9IHtcbiAgYWRtaW46IGFkbWluRW50aXR5RGVmLFxuICB1c2VybmFtZTogdXNlcm5hbWVFbnRpdHlEZWYsXG4gIFwicGhvbmUtbnVtYmVyXCI6IHBob25lTnVtYmVyRW50aXR5RGVmLFxuICBcIjJmYVwiOiB0d29GYWN0b3JFbnRpdHlEZWYsXG4gIHNzbzogc3NvRW50aXR5RGVmLFxuICBwYXNza2V5OiBwYXNza2V5RW50aXR5RGVmLFxuICBvcmdhbml6YXRpb246IG9yZ2FuaXphdGlvbkVudGl0eURlZixcbiAgXCJhcGkta2V5XCI6IGFwaUtleUVudGl0eURlZixcbiAgand0OiBqd3RFbnRpdHlEZWYsXG4gIGFub255bW91czogYW5vbnltb3VzRW50aXR5RGVmLFxuICBcImF1ZGl0LWxvZ1wiOiBhdWRpdExvZ0VudGl0eURlZixcbn07XG5cbi8qKlxuICog7KeA7JuQ7ZWY64qUIO2UjOufrOq3uOyduCBJRCDrqqnroZ1cbiAqL1xuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9QTFVHSU5fSURTOiBCZXR0ZXJBdXRoUGx1Z2luSWRbXSA9IE9iamVjdC5rZXlzKFxuICBFTlRJVFlfREVGSU5JVElPTlMsXG4pIGFzIEJldHRlckF1dGhQbHVnaW5JZFtdO1xuXG4vKipcbiAqIO2UjOufrOq3uOyduCBJROqwgCDsnKDtmqjtlZzsp4Ag7ZmV7J247ZWp64uI64ukLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFBsdWdpbklkKGlkOiBzdHJpbmcpOiBpZCBpcyBCZXR0ZXJBdXRoUGx1Z2luSWQge1xuICByZXR1cm4gaWQgaW4gRU5USVRZX0RFRklOSVRJT05TO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBOEJBLE1BQWEscUJBQXNFO0NBQ2pGLE9BQU87Q0FDUCxVQUFVO0NBQ1YsZ0JBQWdCO0NBQ2hCLE9BQU87Q0FDUCxLQUFLO0NBQ0wsU0FBUztDQUNULGNBQWM7Q0FDZCxXQUFXO0NBQ1gsS0FBSztDQUNMLFdBQVc7Q0FDWCxhQUFhO0FBQ2Y7Ozs7QUFLQSxNQUFhLHVCQUE2QyxPQUFPLEtBQy9ELGtCQUNGOzs7O0FBS0EsU0FBZ0IsZ0JBQWdCLElBQXNDO0NBQ3BFLE9BQU8sTUFBTTtBQUNmIn0=
43
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F1dGgvcGx1Z2lucy9lbnRpdHktZGVmaW5pdGlvbnMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgYWRtaW5FbnRpdHlEZWYgfSBmcm9tIFwiLi9hZG1pblwiO1xuZXhwb3J0IHsgYW5vbnltb3VzRW50aXR5RGVmIH0gZnJvbSBcIi4vYW5vbnltb3VzXCI7XG5leHBvcnQgeyBhcGlLZXlFbnRpdHlEZWYgfSBmcm9tIFwiLi9hcGkta2V5XCI7XG5leHBvcnQgeyBhdWRpdExvZ0VudGl0eURlZiB9IGZyb20gXCIuL2F1ZGl0LWxvZ1wiO1xuZXhwb3J0IHsgand0RW50aXR5RGVmIH0gZnJvbSBcIi4vand0XCI7XG5leHBvcnQgeyBvcmdhbml6YXRpb25FbnRpdHlEZWYgfSBmcm9tIFwiLi9vcmdhbml6YXRpb25cIjtcbmV4cG9ydCB7IHBhc3NrZXlFbnRpdHlEZWYgfSBmcm9tIFwiLi9wYXNza2V5XCI7XG5leHBvcnQgeyBwaG9uZU51bWJlckVudGl0eURlZiB9IGZyb20gXCIuL3Bob25lLW51bWJlclwiO1xuZXhwb3J0IHsgc3NvRW50aXR5RGVmIH0gZnJvbSBcIi4vc3NvXCI7XG5leHBvcnQgeyB0d29GYWN0b3JFbnRpdHlEZWYgfSBmcm9tIFwiLi90d28tZmFjdG9yXCI7XG5leHBvcnQgdHlwZSB7IEJldHRlckF1dGhFbnRpdHlEZWYsIEJldHRlckF1dGhQbHVnaW5JZCB9IGZyb20gXCIuL3R5cGVzXCI7XG5leHBvcnQgeyB1c2VybmFtZUVudGl0eURlZiB9IGZyb20gXCIuL3VzZXJuYW1lXCI7XG5cbmltcG9ydCB7IGFkbWluRW50aXR5RGVmIH0gZnJvbSBcIi4vYWRtaW5cIjtcbmltcG9ydCB7IGFub255bW91c0VudGl0eURlZiB9IGZyb20gXCIuL2Fub255bW91c1wiO1xuaW1wb3J0IHsgYXBpS2V5RW50aXR5RGVmIH0gZnJvbSBcIi4vYXBpLWtleVwiO1xuaW1wb3J0IHsgYXVkaXRMb2dFbnRpdHlEZWYgfSBmcm9tIFwiLi9hdWRpdC1sb2dcIjtcbmltcG9ydCB7IGp3dEVudGl0eURlZiB9IGZyb20gXCIuL2p3dFwiO1xuaW1wb3J0IHsgb3JnYW5pemF0aW9uRW50aXR5RGVmIH0gZnJvbSBcIi4vb3JnYW5pemF0aW9uXCI7XG5pbXBvcnQgeyBwYXNza2V5RW50aXR5RGVmIH0gZnJvbSBcIi4vcGFzc2tleVwiO1xuaW1wb3J0IHsgcGhvbmVOdW1iZXJFbnRpdHlEZWYgfSBmcm9tIFwiLi9waG9uZS1udW1iZXJcIjtcbmltcG9ydCB7IHNzb0VudGl0eURlZiB9IGZyb20gXCIuL3Nzb1wiO1xuaW1wb3J0IHsgdHdvRmFjdG9yRW50aXR5RGVmIH0gZnJvbSBcIi4vdHdvLWZhY3RvclwiO1xuaW1wb3J0IHsgdHlwZSBCZXR0ZXJBdXRoRW50aXR5RGVmLCB0eXBlIEJldHRlckF1dGhQbHVnaW5JZCB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyB1c2VybmFtZUVudGl0eURlZiB9IGZyb20gXCIuL3VzZXJuYW1lXCI7XG5cbi8qKlxuICog7JeU7Yuw7YuwIOygleydmCDroIjsp4DsiqTtirjrpqxcbiAqIO2UjOufrOq3uOyduCBJROuhnCDsl5Tti7Dti7Ag7KCV7J2Y7JeQIOygkeq3vO2VoCDsiJgg7J6I7Iq164uI64ukLlxuICovXG5leHBvcnQgY29uc3QgRU5USVRZX0RFRklOSVRJT05TID0ge1xuICBhZG1pbjogYWRtaW5FbnRpdHlEZWYsXG4gIHVzZXJuYW1lOiB1c2VybmFtZUVudGl0eURlZixcbiAgXCJwaG9uZS1udW1iZXJcIjogcGhvbmVOdW1iZXJFbnRpdHlEZWYsXG4gIFwiMmZhXCI6IHR3b0ZhY3RvckVudGl0eURlZixcbiAgc3NvOiBzc29FbnRpdHlEZWYsXG4gIHBhc3NrZXk6IHBhc3NrZXlFbnRpdHlEZWYsXG4gIG9yZ2FuaXphdGlvbjogb3JnYW5pemF0aW9uRW50aXR5RGVmLFxuICBcImFwaS1rZXlcIjogYXBpS2V5RW50aXR5RGVmLFxuICBqd3Q6IGp3dEVudGl0eURlZixcbiAgYW5vbnltb3VzOiBhbm9ueW1vdXNFbnRpdHlEZWYsXG4gIFwiYXVkaXQtbG9nXCI6IGF1ZGl0TG9nRW50aXR5RGVmLFxufSBzYXRpc2ZpZXMgUmVjb3JkPEJldHRlckF1dGhQbHVnaW5JZCwgQmV0dGVyQXV0aEVudGl0eURlZj47XG5cbi8qKlxuICog7KeA7JuQ7ZWY64qUIO2UjOufrOq3uOyduCBJRCDrqqnroZ1cbiAqL1xuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9QTFVHSU5fSURTOiBCZXR0ZXJBdXRoUGx1Z2luSWRbXSA9XG4gIC8qIFNBRkVUWTogYmV0dGVyLWF1dGgg7ZuF6rO8IOyWtOuMke2EsCDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBPYmplY3Qua2V5cyhcbiAgICBFTlRJVFlfREVGSU5JVElPTlMsXG4gICkgYXMgQmV0dGVyQXV0aFBsdWdpbklkW107XG5cbi8qKlxuICog7ZSM65+s6re47J24IElE6rCAIOycoO2aqO2VnOyngCDtmZXsnbjtlanri4jri6QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUGx1Z2luSWQoaWQ6IHN0cmluZyk6IGlkIGlzIEJldHRlckF1dGhQbHVnaW5JZCB7XG4gIHJldHVybiBpZCBpbiBFTlRJVFlfREVGSU5JVElPTlM7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUE4QkEsTUFBYSxxQkFBcUI7Q0FDaEMsT0FBTztDQUNQLFVBQVU7Q0FDVixnQkFBZ0I7Q0FDaEIsT0FBTztDQUNQLEtBQUs7Q0FDTCxTQUFTO0NBQ1QsY0FBYztDQUNkLFdBQVc7Q0FDWCxLQUFLO0NBQ0wsV0FBVztDQUNYLGFBQWE7QUFDZjs7OztBQUtBLE1BQWEsdUJBQ3lDLE9BQU8sS0FDekQsa0JBQ0Y7Ozs7QUFLRixTQUFnQixnQkFBZ0IsSUFBc0M7Q0FDcEUsT0FBTyxNQUFNO0FBQ2YifQ==
@@ -826,7 +826,7 @@ export declare const admin: (options?: AdminOptions) => {
826
826
  $Infer: {
827
827
  body: {
828
828
  permissions: {
829
- readonly user?: ("update" | "delete" | "create" | "get" | "list" | "set-role" | "ban" | "impersonate" | "impersonate-admins" | "set-password")[] | undefined;
829
+ readonly user?: ("update" | "delete" | "get" | "create" | "list" | "set-role" | "ban" | "impersonate" | "impersonate-admins" | "set-password")[] | undefined;
830
830
  readonly session?: ("delete" | "list" | "revoke")[] | undefined;
831
831
  };
832
832
  } & {
@@ -1,3 +1,5 @@
1
+ import { type UserConfig } from "tsdown";
2
+ import { type NormalizedZodCompilerPolicy } from "../api/config";
1
3
  export type BuildArtifact<BuildCommandArgs = {}> = {
2
4
  name: string;
3
5
  description: string;
@@ -6,6 +8,28 @@ export type BuildArtifact<BuildCommandArgs = {}> = {
6
8
  buildCommand: (args: BuildCommandArgs) => string;
7
9
  postBuildCommand?: () => string;
8
10
  };
11
+ export type ApiTsdownBuildConfig = Pick<UserConfig, "entry" | "plugins">;
12
+ type ZodCompilerPluginFactory = (typeof import("zod-compiler/rolldown"))["default"];
13
+ export interface ApiZodCompilerBuildDependencies {
14
+ loadCompilerPlugin: () => Promise<ZodCompilerPluginFactory>;
15
+ }
16
+ export declare function composeApiZodCompilerBuildConfig<T extends ApiTsdownBuildConfig>(baseConfig: T, options: {
17
+ policy: NormalizedZodCompilerPolicy;
18
+ registryPath?: string;
19
+ }, dependencies?: ApiZodCompilerBuildDependencies): Promise<T & ApiTsdownBuildConfig>;
20
+ export declare function assertApiZodCompilerBuildOutput(outputs: readonly {
21
+ code: string;
22
+ path: string;
23
+ }[]): void;
24
+ export declare const HTTP_VALIDATOR_REGISTRY_SOURCE_PATH = "src/application/sonamu.validators.generated.ts";
25
+ export declare const HTTP_VALIDATOR_REGISTRY_BUILD_PATH = "dist/application/sonamu.validators.generated.js";
26
+ export declare function assertApiZodCompilerSourceRegistry(registryPath: string): Promise<void>;
27
+ export declare function createApiZodCompilerBuildWrapper(options: {
28
+ apiRootPath: string;
29
+ baseConfigPath: string;
30
+ policy: NormalizedZodCompilerPolicy;
31
+ registryPath: string;
32
+ }): Promise<string>;
9
33
  /**
10
34
  * API 프로젝트 빌드 산출물에 대한 규칙들.
11
35
  * cli.ts의 build_api 함수가 이것을 보고 그대로 실행합니다.
@@ -18,4 +42,5 @@ export declare const API_ARTIFACTS: BuildArtifact<{
18
42
  * cli.ts의 build_web 함수가 이것을 보고 그대로 실행합니다.
19
43
  */
20
44
  export declare const WEB_ARTIFACTS: BuildArtifact[];
45
+ export {};
21
46
  //# sourceMappingURL=build-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-config.d.ts","sourceRoot":"","sources":["../../src/bin/build-config.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,CAAC,gBAAgB,GAAG,EAAE,IAAI;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,MAAM,CAAC;IAC/B,YAAY,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,MAAM,CAAC;IACjD,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC,EASpE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,aAAa,EAmBxC,CAAC"}
1
+ {"version":3,"file":"build-config.d.ts","sourceRoot":"","sources":["../../src/bin/build-config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEzC,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAGjE,MAAM,MAAM,aAAa,CAAC,gBAAgB,GAAG,EAAE,IAAI;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,MAAM,CAAC;IAC/B,YAAY,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,MAAM,CAAC;IACjD,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;AAEzE,KAAK,wBAAwB,GAAG,CAAC,cAAc,uBAAuB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAEpF,MAAM,WAAW,+BAA+B;IAC9C,kBAAkB,EAAE,MAAM,OAAO,CAAC,wBAAwB,CAAC,CAAC;CAC7D;AAQD,wBAAsB,gCAAgC,CAAC,CAAC,SAAS,oBAAoB,EACnF,UAAU,EAAE,CAAC,EACb,OAAO,EAAE;IACP,MAAM,EAAE,2BAA2B,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,EACD,YAAY,GAAE,+BAAiE,GAC9E,OAAO,CAAC,CAAC,GAAG,oBAAoB,CAAC,CA6BnC;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,GACjD,IAAI,CASN;AAED,eAAO,MAAM,mCAAmC,mDAAmD,CAAC;AACpG,eAAO,MAAM,kCAAkC,oDAAoD,CAAC;AAEpG,wBAAsB,kCAAkC,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAY5F;AAED,wBAAsB,gCAAgC,CAAC,OAAO,EAAE;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,2BAA2B,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqElB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC,EASpE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,aAAa,EAmBxC,CAAC"}
@@ -1,4 +1,107 @@
1
+ import { exists, init_fs_utils } from "../utils/fs-utils.js";
2
+ import { readFile, writeFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { pathToFileURL } from "node:url";
1
5
  //#region src/bin/build-config.ts
6
+ init_fs_utils();
7
+ const apiZodCompilerBuildDependencies = { async loadCompilerPlugin() {
8
+ return (await import("zod-compiler/rolldown")).default;
9
+ } };
10
+ async function composeApiZodCompilerBuildConfig(baseConfig, options, dependencies = apiZodCompilerBuildDependencies) {
11
+ if (options.policy.api !== "aot") return baseConfig;
12
+ if (options.registryPath === void 0) throw new Error("validation.zodCompiler.api requires the generated HTTP validator registry");
13
+ const compilerPlugin = (await dependencies.loadCompilerPlugin())({
14
+ codegenMode: "inline",
15
+ include: [options.registryPath],
16
+ output: "compact",
17
+ schemas: "explicit"
18
+ });
19
+ let configuredPlugins;
20
+ if (Array.isArray(baseConfig.plugins)) configuredPlugins = baseConfig.plugins;
21
+ else if (baseConfig.plugins === void 0) configuredPlugins = [];
22
+ else configuredPlugins = [baseConfig.plugins];
23
+ return {
24
+ ...baseConfig,
25
+ plugins: [...configuredPlugins, compilerPlugin]
26
+ };
27
+ }
28
+ function assertApiZodCompilerBuildOutput(outputs) {
29
+ for (const output of outputs) {
30
+ if (/\bcompile\s*\(/.test(output.code)) throw new Error(`zod-compiler compile boundary remains in ${output.path}`);
31
+ if (output.code.includes("virtual:zod-compiler/runtime")) throw new Error(`zod-compiler virtual runtime import remains in ${output.path}`);
32
+ }
33
+ }
34
+ const HTTP_VALIDATOR_REGISTRY_SOURCE_PATH = "src/application/sonamu.validators.generated.ts";
35
+ const HTTP_VALIDATOR_REGISTRY_BUILD_PATH = "dist/application/sonamu.validators.generated.js";
36
+ async function assertApiZodCompilerSourceRegistry(registryPath) {
37
+ if (!await exists(registryPath)) throw new Error(`Generated HTTP validator registry not found: ${registryPath}`);
38
+ const source = await readFile(registryPath, "utf8");
39
+ if (!/fingerprint\s*=\s*["'][a-f0-9]{64}["']/.test(source)) throw new Error(`Generated HTTP validator registry fingerprint is invalid: ${registryPath}`);
40
+ if (!/\brouteIds\s*=\s*\{\s*\}\s*;/.test(source) && !/\bcompile\s*\(/.test(source)) throw new Error(`Generated HTTP validator registry has no compile boundary: ${registryPath}`);
41
+ }
42
+ async function createApiZodCompilerBuildWrapper(options) {
43
+ if (options.policy.api !== "aot") return options.baseConfigPath;
44
+ await assertApiZodCompilerSourceRegistry(options.registryPath);
45
+ const wrapperPath = path.join(options.apiRootPath, `.sonamu-zod-compiler-${process.pid}-${Date.now()}.mjs`);
46
+ const baseConfigUrl = pathToFileURL(options.baseConfigPath).href;
47
+ await writeFile(wrapperPath, [
48
+ `import path from "node:path";`,
49
+ `import baseConfig from ${JSON.stringify(baseConfigUrl)};`,
50
+ `import zodCompiler from "zod-compiler/rolldown";`,
51
+ "",
52
+ `const compilerPlugin = zodCompiler(${JSON.stringify({
53
+ codegenMode: "inline",
54
+ include: [options.registryPath],
55
+ output: "compact",
56
+ schemas: "explicit"
57
+ })});`,
58
+ `const registryPath = ${JSON.stringify(options.registryPath)};`,
59
+ `const apiRootPath = ${JSON.stringify(options.apiRootPath)};`,
60
+ `const canonicalOutDir = path.join(apiRootPath, "dist");`,
61
+ `const registryEntryName = "application/sonamu.validators.generated";`,
62
+ `const defaultEntry = { index: "src/index.ts" };`,
63
+ "const resolvesToRegistry = (entry) =>",
64
+ " typeof entry === \"string\" && path.resolve(apiRootPath, entry) === registryPath;",
65
+ "const appendRegistryEntry = (entry) => {",
66
+ " if (Array.isArray(entry)) {",
67
+ " return entry.some(resolvesToRegistry) ? entry : [...entry, registryPath];",
68
+ " }",
69
+ " if (typeof entry === \"string\") {",
70
+ " return resolvesToRegistry(entry) ? entry : [entry, registryPath];",
71
+ " }",
72
+ " if (typeof entry === \"object\" && entry !== null) {",
73
+ " if (Object.values(entry).some(resolvesToRegistry)) return entry;",
74
+ " if (registryEntryName in entry) {",
75
+ " throw new Error(`tsdown entry collision: ${registryEntryName}`);",
76
+ " }",
77
+ " return { ...entry, [registryEntryName]: registryPath };",
78
+ " }",
79
+ " if (entry === undefined) {",
80
+ " return { ...defaultEntry, [registryEntryName]: registryPath };",
81
+ " }",
82
+ " return { [registryEntryName]: registryPath };",
83
+ "};",
84
+ "const appendPlugin = (config) => ({",
85
+ " ...config,",
86
+ " // 런타임 loader가 참조하는 registry 경로를 빌드 설정과 일치시킵니다.",
87
+ " outDir: canonicalOutDir,",
88
+ " fixedExtension: false,",
89
+ " entry: appendRegistryEntry(config.entry),",
90
+ " plugins: [...(config.plugins ?? []), compilerPlugin],",
91
+ "});",
92
+ "const appendToResolvedConfig = (config) =>",
93
+ " Array.isArray(config) ? config.map(appendPlugin) : appendPlugin(config);",
94
+ "",
95
+ "export default async (...args) => {",
96
+ " const resolved = typeof baseConfig === \"function\"",
97
+ " ? await baseConfig(...args)",
98
+ " : await baseConfig;",
99
+ " return appendToResolvedConfig(resolved);",
100
+ "};",
101
+ ""
102
+ ].join("\n"), "utf8");
103
+ return wrapperPath;
104
+ }
2
105
  /**
3
106
  * API 프로젝트 빌드 산출물에 대한 규칙들.
4
107
  * cli.ts의 build_api 함수가 이것을 보고 그대로 실행합니다.
@@ -29,6 +132,6 @@ const WEB_ARTIFACTS = [{
29
132
  postBuildCommand: () => "rm -rf ../api/web-dist && mkdir -p ../api/web-dist && cp -r dist/* ../api/web-dist"
30
133
  }];
31
134
  //#endregion
32
- export { API_ARTIFACTS, WEB_ARTIFACTS };
135
+ export { API_ARTIFACTS, HTTP_VALIDATOR_REGISTRY_BUILD_PATH, HTTP_VALIDATOR_REGISTRY_SOURCE_PATH, WEB_ARTIFACTS, assertApiZodCompilerBuildOutput, assertApiZodCompilerSourceRegistry, composeApiZodCompilerBuildConfig, createApiZodCompilerBuildWrapper };
33
136
 
34
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtY29uZmlnLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vYnVpbGQtY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEJ1aWxkQXJ0aWZhY3Q8QnVpbGRDb21tYW5kQXJncyA9IHt9PiA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBwcm9qZWN0UGF0aDogc3RyaW5nO1xuICBwcmVCdWlsZENvbW1hbmQ/OiAoKSA9PiBzdHJpbmc7XG4gIGJ1aWxkQ29tbWFuZDogKGFyZ3M6IEJ1aWxkQ29tbWFuZEFyZ3MpID0+IHN0cmluZztcbiAgcG9zdEJ1aWxkQ29tbWFuZD86ICgpID0+IHN0cmluZztcbn07XG5cbi8qKlxuICogQVBJIO2UhOuhnOygne2KuCDruYzrk5wg7IKw7Lac66y87JeQIOuMgO2VnCDqt5zsuZnrk6QuXG4gKiBjbGkudHPsnZggYnVpbGRfYXBpIO2VqOyImOqwgCDsnbTqsoPsnYQg67O06rOgIOq3uOuMgOuhnCDsi6Ttlontlanri4jri6QuXG4gKi9cbmV4cG9ydCBjb25zdCBBUElfQVJUSUZBQ1RTOiBCdWlsZEFydGlmYWN0PHsgY29uZmlnRmlsZVBhdGg6IHN0cmluZyB9PltdID0gW1xuICB7XG4gICAgbmFtZTogXCJBUElcIixcbiAgICBkZXNjcmlwdGlvbjogXCJBUEkg7ZSE66Gc7KCd7Yq4IOu5jOuTnCDsgrDstpzrrLxcIixcbiAgICBwcm9qZWN0UGF0aDogXCJhcGlcIixcbiAgICBwcmVCdWlsZENvbW1hbmQ6ICgpID0+IFwicm0gLXJmIGRpc3RcIixcbiAgICBidWlsZENvbW1hbmQ6ICh7IGNvbmZpZ0ZpbGVQYXRoIH0pID0+XG4gICAgICBgdHNjIC0tbm9FbWl0ICYmIHBucG0gZXhlYyB0c2Rvd24gLS1jb25maWcgJHtKU09OLnN0cmluZ2lmeShjb25maWdGaWxlUGF0aCl9YCxcbiAgfSxcbl07XG5cbi8qKlxuICog7Ju5IO2UhOuhnOygne2KuCDruYzrk5wg7IKw7Lac66y87JeQIOuMgO2VnCDqt5zsuZnrk6QuXG4gKiBjbGkudHPsnZggYnVpbGRfd2ViIO2VqOyImOqwgCDsnbTqsoPsnYQg67O06rOgIOq3uOuMgOuhnCDsi6Ttlontlanri4jri6QuXG4gKi9cbmV4cG9ydCBjb25zdCBXRUJfQVJUSUZBQ1RTOiBCdWlsZEFydGlmYWN0W10gPSBbXG4gIHtcbiAgICBuYW1lOiBcIldlYiBDbGllbnRcIixcbiAgICBkZXNjcmlwdGlvbjogXCJXZWIg7ZSE66Gc7KCd7Yq4IO2BtOudvOydtOyWuO2KuCDruYzrk5wg7IKw7Lac66y8XCIsXG4gICAgcHJvamVjdFBhdGg6IFwid2ViXCIsXG4gICAgcHJlQnVpbGRDb21tYW5kOiAoKSA9PiBcInJtIC1yZiBkaXN0L2NsaWVudFwiLFxuICAgIGJ1aWxkQ29tbWFuZDogKCkgPT5cbiAgICAgIFwidHNjIC1iIC0tbm9FbWl0ICYmIHZpdGUgYnVpbGQgLS1jb25maWcgdml0ZS5jb25maWcudHMgLS1vdXREaXIgZGlzdC9jbGllbnRcIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IFwiV2ViIFNlcnZlclwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIldlYiDtlITroZzsoJ3tirgg7ISc67KEIOu5jOuTnCDsgrDstpzrrLxcIixcbiAgICBwcm9qZWN0UGF0aDogXCJ3ZWJcIixcbiAgICBwcmVCdWlsZENvbW1hbmQ6ICgpID0+IFwicm0gLXJmIGRpc3Qvc2VydmVyXCIsXG4gICAgYnVpbGRDb21tYW5kOiAoKSA9PlxuICAgICAgXCJ0c2MgLWIgLS1ub0VtaXQgJiYgdml0ZSBidWlsZCAtLWNvbmZpZyB2aXRlLmNvbmZpZy50cyAtLXNzciBzcmMvZW50cnktc2VydmVyLmdlbmVyYXRlZC50c3ggLS1vdXREaXIgZGlzdC9zZXJ2ZXJcIixcbiAgICBwb3N0QnVpbGRDb21tYW5kOiAoKSA9PlxuICAgICAgXCJybSAtcmYgLi4vYXBpL3dlYi1kaXN0ICYmIG1rZGlyIC1wIC4uL2FwaS93ZWItZGlzdCAmJiBjcCAtciBkaXN0LyogLi4vYXBpL3dlYi1kaXN0XCIsXG4gIH0sXG5dO1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQWFBLE1BQWEsZ0JBQTZELENBQ3hFO0NBQ0UsTUFBTTtDQUNOLGFBQWE7Q0FDYixhQUFhO0NBQ2IsdUJBQXVCO0NBQ3ZCLGVBQWUsRUFBRSxxQkFDZiw2Q0FBNkMsS0FBSyxVQUFVLGNBQWM7QUFDOUUsQ0FDRjs7Ozs7QUFNQSxNQUFhLGdCQUFpQyxDQUM1QztDQUNFLE1BQU07Q0FDTixhQUFhO0NBQ2IsYUFBYTtDQUNiLHVCQUF1QjtDQUN2QixvQkFDRTtBQUNKLEdBQ0E7Q0FDRSxNQUFNO0NBQ04sYUFBYTtDQUNiLGFBQWE7Q0FDYix1QkFBdUI7Q0FDdkIsb0JBQ0U7Q0FDRix3QkFDRTtBQUNKLENBQ0YifQ==
137
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtY29uZmlnLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vYnVpbGQtY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gXCJub2RlOnVybFwiO1xuXG5pbXBvcnQgeyB0eXBlIFVzZXJDb25maWcgfSBmcm9tIFwidHNkb3duXCI7XG5cbmltcG9ydCB7IHR5cGUgTm9ybWFsaXplZFpvZENvbXBpbGVyUG9saWN5IH0gZnJvbSBcIi4uL2FwaS9jb25maWdcIjtcbmltcG9ydCB7IGV4aXN0cyB9IGZyb20gXCIuLi91dGlscy9mcy11dGlsc1wiO1xuXG5leHBvcnQgdHlwZSBCdWlsZEFydGlmYWN0PEJ1aWxkQ29tbWFuZEFyZ3MgPSB7fT4gPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgcHJvamVjdFBhdGg6IHN0cmluZztcbiAgcHJlQnVpbGRDb21tYW5kPzogKCkgPT4gc3RyaW5nO1xuICBidWlsZENvbW1hbmQ6IChhcmdzOiBCdWlsZENvbW1hbmRBcmdzKSA9PiBzdHJpbmc7XG4gIHBvc3RCdWlsZENvbW1hbmQ/OiAoKSA9PiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBBcGlUc2Rvd25CdWlsZENvbmZpZyA9IFBpY2s8VXNlckNvbmZpZywgXCJlbnRyeVwiIHwgXCJwbHVnaW5zXCI+O1xuXG50eXBlIFpvZENvbXBpbGVyUGx1Z2luRmFjdG9yeSA9ICh0eXBlb2YgaW1wb3J0KFwiem9kLWNvbXBpbGVyL3JvbGxkb3duXCIpKVtcImRlZmF1bHRcIl07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpWm9kQ29tcGlsZXJCdWlsZERlcGVuZGVuY2llcyB7XG4gIGxvYWRDb21waWxlclBsdWdpbjogKCkgPT4gUHJvbWlzZTxab2RDb21waWxlclBsdWdpbkZhY3Rvcnk+O1xufVxuXG5jb25zdCBhcGlab2RDb21waWxlckJ1aWxkRGVwZW5kZW5jaWVzOiBBcGlab2RDb21waWxlckJ1aWxkRGVwZW5kZW5jaWVzID0ge1xuICBhc3luYyBsb2FkQ29tcGlsZXJQbHVnaW4oKSB7XG4gICAgcmV0dXJuIChhd2FpdCBpbXBvcnQoXCJ6b2QtY29tcGlsZXIvcm9sbGRvd25cIikpLmRlZmF1bHQ7XG4gIH0sXG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29tcG9zZUFwaVpvZENvbXBpbGVyQnVpbGRDb25maWc8VCBleHRlbmRzIEFwaVRzZG93bkJ1aWxkQ29uZmlnPihcbiAgYmFzZUNvbmZpZzogVCxcbiAgb3B0aW9uczoge1xuICAgIHBvbGljeTogTm9ybWFsaXplZFpvZENvbXBpbGVyUG9saWN5O1xuICAgIHJlZ2lzdHJ5UGF0aD86IHN0cmluZztcbiAgfSxcbiAgZGVwZW5kZW5jaWVzOiBBcGlab2RDb21waWxlckJ1aWxkRGVwZW5kZW5jaWVzID0gYXBpWm9kQ29tcGlsZXJCdWlsZERlcGVuZGVuY2llcyxcbik6IFByb21pc2U8VCAmIEFwaVRzZG93bkJ1aWxkQ29uZmlnPiB7XG4gIGlmIChvcHRpb25zLnBvbGljeS5hcGkgIT09IFwiYW90XCIpIHtcbiAgICByZXR1cm4gYmFzZUNvbmZpZztcbiAgfVxuICBpZiAob3B0aW9ucy5yZWdpc3RyeVBhdGggPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInZhbGlkYXRpb24uem9kQ29tcGlsZXIuYXBpIHJlcXVpcmVzIHRoZSBnZW5lcmF0ZWQgSFRUUCB2YWxpZGF0b3IgcmVnaXN0cnlcIik7XG4gIH1cblxuICBjb25zdCB6b2RDb21waWxlciA9IGF3YWl0IGRlcGVuZGVuY2llcy5sb2FkQ29tcGlsZXJQbHVnaW4oKTtcbiAgY29uc3QgY29tcGlsZXJQbHVnaW4gPSB6b2RDb21waWxlcih7XG4gICAgY29kZWdlbk1vZGU6IFwiaW5saW5lXCIsXG4gICAgaW5jbHVkZTogW29wdGlvbnMucmVnaXN0cnlQYXRoXSxcbiAgICBvdXRwdXQ6IFwiY29tcGFjdFwiLFxuICAgIHNjaGVtYXM6IFwiZXhwbGljaXRcIixcbiAgfSk7XG5cbiAgbGV0IGNvbmZpZ3VyZWRQbHVnaW5zOiBFeGNsdWRlPFVzZXJDb25maWdbXCJwbHVnaW5zXCJdLCB1bmRlZmluZWQ+W107XG4gIGlmIChBcnJheS5pc0FycmF5KGJhc2VDb25maWcucGx1Z2lucykpIHtcbiAgICBjb25maWd1cmVkUGx1Z2lucyA9IGJhc2VDb25maWcucGx1Z2lucztcbiAgfSBlbHNlIGlmIChiYXNlQ29uZmlnLnBsdWdpbnMgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbmZpZ3VyZWRQbHVnaW5zID0gW107XG4gIH0gZWxzZSB7XG4gICAgY29uZmlndXJlZFBsdWdpbnMgPSBbYmFzZUNvbmZpZy5wbHVnaW5zXTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uYmFzZUNvbmZpZyxcbiAgICBwbHVnaW5zOiBbLi4uY29uZmlndXJlZFBsdWdpbnMsIGNvbXBpbGVyUGx1Z2luXSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEFwaVpvZENvbXBpbGVyQnVpbGRPdXRwdXQoXG4gIG91dHB1dHM6IHJlYWRvbmx5IHsgY29kZTogc3RyaW5nOyBwYXRoOiBzdHJpbmcgfVtdLFxuKTogdm9pZCB7XG4gIGZvciAoY29uc3Qgb3V0cHV0IG9mIG91dHB1dHMpIHtcbiAgICBpZiAoL1xcYmNvbXBpbGVcXHMqXFwoLy50ZXN0KG91dHB1dC5jb2RlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB6b2QtY29tcGlsZXIgY29tcGlsZSBib3VuZGFyeSByZW1haW5zIGluICR7b3V0cHV0LnBhdGh9YCk7XG4gICAgfVxuICAgIGlmIChvdXRwdXQuY29kZS5pbmNsdWRlcyhcInZpcnR1YWw6em9kLWNvbXBpbGVyL3J1bnRpbWVcIikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgem9kLWNvbXBpbGVyIHZpcnR1YWwgcnVudGltZSBpbXBvcnQgcmVtYWlucyBpbiAke291dHB1dC5wYXRofWApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgSFRUUF9WQUxJREFUT1JfUkVHSVNUUllfU09VUkNFX1BBVEggPSBcInNyYy9hcHBsaWNhdGlvbi9zb25hbXUudmFsaWRhdG9ycy5nZW5lcmF0ZWQudHNcIjtcbmV4cG9ydCBjb25zdCBIVFRQX1ZBTElEQVRPUl9SRUdJU1RSWV9CVUlMRF9QQVRIID0gXCJkaXN0L2FwcGxpY2F0aW9uL3NvbmFtdS52YWxpZGF0b3JzLmdlbmVyYXRlZC5qc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXNzZXJ0QXBpWm9kQ29tcGlsZXJTb3VyY2VSZWdpc3RyeShyZWdpc3RyeVBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIShhd2FpdCBleGlzdHMocmVnaXN0cnlQYXRoKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEdlbmVyYXRlZCBIVFRQIHZhbGlkYXRvciByZWdpc3RyeSBub3QgZm91bmQ6ICR7cmVnaXN0cnlQYXRofWApO1xuICB9XG4gIGNvbnN0IHNvdXJjZSA9IGF3YWl0IHJlYWRGaWxlKHJlZ2lzdHJ5UGF0aCwgXCJ1dGY4XCIpO1xuICBpZiAoIS9maW5nZXJwcmludFxccyo9XFxzKltcIiddW2EtZjAtOV17NjR9W1wiJ10vLnRlc3Qoc291cmNlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgR2VuZXJhdGVkIEhUVFAgdmFsaWRhdG9yIHJlZ2lzdHJ5IGZpbmdlcnByaW50IGlzIGludmFsaWQ6ICR7cmVnaXN0cnlQYXRofWApO1xuICB9XG4gIGNvbnN0IGRlY2xhcmVzWmVyb1JvdXRlcyA9IC9cXGJyb3V0ZUlkc1xccyo9XFxzKlxce1xccypcXH1cXHMqOy8udGVzdChzb3VyY2UpO1xuICBpZiAoIWRlY2xhcmVzWmVyb1JvdXRlcyAmJiAhL1xcYmNvbXBpbGVcXHMqXFwoLy50ZXN0KHNvdXJjZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEdlbmVyYXRlZCBIVFRQIHZhbGlkYXRvciByZWdpc3RyeSBoYXMgbm8gY29tcGlsZSBib3VuZGFyeTogJHtyZWdpc3RyeVBhdGh9YCk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUFwaVpvZENvbXBpbGVyQnVpbGRXcmFwcGVyKG9wdGlvbnM6IHtcbiAgYXBpUm9vdFBhdGg6IHN0cmluZztcbiAgYmFzZUNvbmZpZ1BhdGg6IHN0cmluZztcbiAgcG9saWN5OiBOb3JtYWxpemVkWm9kQ29tcGlsZXJQb2xpY3k7XG4gIHJlZ2lzdHJ5UGF0aDogc3RyaW5nO1xufSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGlmIChvcHRpb25zLnBvbGljeS5hcGkgIT09IFwiYW90XCIpIHtcbiAgICByZXR1cm4gb3B0aW9ucy5iYXNlQ29uZmlnUGF0aDtcbiAgfVxuXG4gIGF3YWl0IGFzc2VydEFwaVpvZENvbXBpbGVyU291cmNlUmVnaXN0cnkob3B0aW9ucy5yZWdpc3RyeVBhdGgpO1xuICBjb25zdCB3cmFwcGVyUGF0aCA9IHBhdGguam9pbihcbiAgICBvcHRpb25zLmFwaVJvb3RQYXRoLFxuICAgIGAuc29uYW11LXpvZC1jb21waWxlci0ke3Byb2Nlc3MucGlkfS0ke0RhdGUubm93KCl9Lm1qc2AsXG4gICk7XG4gIGNvbnN0IGJhc2VDb25maWdVcmwgPSBwYXRoVG9GaWxlVVJMKG9wdGlvbnMuYmFzZUNvbmZpZ1BhdGgpLmhyZWY7XG4gIGNvbnN0IHNvdXJjZSA9IFtcbiAgICBgaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO2AsXG4gICAgYGltcG9ydCBiYXNlQ29uZmlnIGZyb20gJHtKU09OLnN0cmluZ2lmeShiYXNlQ29uZmlnVXJsKX07YCxcbiAgICBgaW1wb3J0IHpvZENvbXBpbGVyIGZyb20gXCJ6b2QtY29tcGlsZXIvcm9sbGRvd25cIjtgLFxuICAgIFwiXCIsXG4gICAgYGNvbnN0IGNvbXBpbGVyUGx1Z2luID0gem9kQ29tcGlsZXIoJHtKU09OLnN0cmluZ2lmeSh7XG4gICAgICBjb2RlZ2VuTW9kZTogXCJpbmxpbmVcIixcbiAgICAgIGluY2x1ZGU6IFtvcHRpb25zLnJlZ2lzdHJ5UGF0aF0sXG4gICAgICBvdXRwdXQ6IFwiY29tcGFjdFwiLFxuICAgICAgc2NoZW1hczogXCJleHBsaWNpdFwiLFxuICAgIH0pfSk7YCxcbiAgICBgY29uc3QgcmVnaXN0cnlQYXRoID0gJHtKU09OLnN0cmluZ2lmeShvcHRpb25zLnJlZ2lzdHJ5UGF0aCl9O2AsXG4gICAgYGNvbnN0IGFwaVJvb3RQYXRoID0gJHtKU09OLnN0cmluZ2lmeShvcHRpb25zLmFwaVJvb3RQYXRoKX07YCxcbiAgICBgY29uc3QgY2Fub25pY2FsT3V0RGlyID0gcGF0aC5qb2luKGFwaVJvb3RQYXRoLCBcImRpc3RcIik7YCxcbiAgICBgY29uc3QgcmVnaXN0cnlFbnRyeU5hbWUgPSBcImFwcGxpY2F0aW9uL3NvbmFtdS52YWxpZGF0b3JzLmdlbmVyYXRlZFwiO2AsXG4gICAgYGNvbnN0IGRlZmF1bHRFbnRyeSA9IHsgaW5kZXg6IFwic3JjL2luZGV4LnRzXCIgfTtgLFxuICAgIFwiY29uc3QgcmVzb2x2ZXNUb1JlZ2lzdHJ5ID0gKGVudHJ5KSA9PlwiLFxuICAgICcgIHR5cGVvZiBlbnRyeSA9PT0gXCJzdHJpbmdcIiAmJiBwYXRoLnJlc29sdmUoYXBpUm9vdFBhdGgsIGVudHJ5KSA9PT0gcmVnaXN0cnlQYXRoOycsXG4gICAgXCJjb25zdCBhcHBlbmRSZWdpc3RyeUVudHJ5ID0gKGVudHJ5KSA9PiB7XCIsXG4gICAgXCIgIGlmIChBcnJheS5pc0FycmF5KGVudHJ5KSkge1wiLFxuICAgIFwiICAgIHJldHVybiBlbnRyeS5zb21lKHJlc29sdmVzVG9SZWdpc3RyeSkgPyBlbnRyeSA6IFsuLi5lbnRyeSwgcmVnaXN0cnlQYXRoXTtcIixcbiAgICBcIiAgfVwiLFxuICAgICcgIGlmICh0eXBlb2YgZW50cnkgPT09IFwic3RyaW5nXCIpIHsnLFxuICAgIFwiICAgIHJldHVybiByZXNvbHZlc1RvUmVnaXN0cnkoZW50cnkpID8gZW50cnkgOiBbZW50cnksIHJlZ2lzdHJ5UGF0aF07XCIsXG4gICAgXCIgIH1cIixcbiAgICAnICBpZiAodHlwZW9mIGVudHJ5ID09PSBcIm9iamVjdFwiICYmIGVudHJ5ICE9PSBudWxsKSB7JyxcbiAgICBcIiAgICBpZiAoT2JqZWN0LnZhbHVlcyhlbnRyeSkuc29tZShyZXNvbHZlc1RvUmVnaXN0cnkpKSByZXR1cm4gZW50cnk7XCIsXG4gICAgXCIgICAgaWYgKHJlZ2lzdHJ5RW50cnlOYW1lIGluIGVudHJ5KSB7XCIsXG4gICAgXCIgICAgICB0aHJvdyBuZXcgRXJyb3IoYHRzZG93biBlbnRyeSBjb2xsaXNpb246ICR7cmVnaXN0cnlFbnRyeU5hbWV9YCk7XCIsXG4gICAgXCIgICAgfVwiLFxuICAgIFwiICAgIHJldHVybiB7IC4uLmVudHJ5LCBbcmVnaXN0cnlFbnRyeU5hbWVdOiByZWdpc3RyeVBhdGggfTtcIixcbiAgICBcIiAgfVwiLFxuICAgIFwiICBpZiAoZW50cnkgPT09IHVuZGVmaW5lZCkge1wiLFxuICAgIFwiICAgIHJldHVybiB7IC4uLmRlZmF1bHRFbnRyeSwgW3JlZ2lzdHJ5RW50cnlOYW1lXTogcmVnaXN0cnlQYXRoIH07XCIsXG4gICAgXCIgIH1cIixcbiAgICBcIiAgcmV0dXJuIHsgW3JlZ2lzdHJ5RW50cnlOYW1lXTogcmVnaXN0cnlQYXRoIH07XCIsXG4gICAgXCJ9O1wiLFxuICAgIFwiY29uc3QgYXBwZW5kUGx1Z2luID0gKGNvbmZpZykgPT4gKHtcIixcbiAgICBcIiAgLi4uY29uZmlnLFwiLFxuICAgIFwiICAvLyDrn7Dtg4DsnoQgbG9hZGVy6rCAIOywuOyhsO2VmOuKlCByZWdpc3RyeSDqsr3roZzrpbwg67mM65OcIOyEpOygleqzvCDsnbzsuZjsi5ztgrXri4jri6QuXCIsXG4gICAgXCIgIG91dERpcjogY2Fub25pY2FsT3V0RGlyLFwiLFxuICAgIFwiICBmaXhlZEV4dGVuc2lvbjogZmFsc2UsXCIsXG4gICAgXCIgIGVudHJ5OiBhcHBlbmRSZWdpc3RyeUVudHJ5KGNvbmZpZy5lbnRyeSksXCIsXG4gICAgXCIgIHBsdWdpbnM6IFsuLi4oY29uZmlnLnBsdWdpbnMgPz8gW10pLCBjb21waWxlclBsdWdpbl0sXCIsXG4gICAgXCJ9KTtcIixcbiAgICBcImNvbnN0IGFwcGVuZFRvUmVzb2x2ZWRDb25maWcgPSAoY29uZmlnKSA9PlwiLFxuICAgIFwiICBBcnJheS5pc0FycmF5KGNvbmZpZykgPyBjb25maWcubWFwKGFwcGVuZFBsdWdpbikgOiBhcHBlbmRQbHVnaW4oY29uZmlnKTtcIixcbiAgICBcIlwiLFxuICAgIFwiZXhwb3J0IGRlZmF1bHQgYXN5bmMgKC4uLmFyZ3MpID0+IHtcIixcbiAgICAnICBjb25zdCByZXNvbHZlZCA9IHR5cGVvZiBiYXNlQ29uZmlnID09PSBcImZ1bmN0aW9uXCInLFxuICAgIFwiICAgID8gYXdhaXQgYmFzZUNvbmZpZyguLi5hcmdzKVwiLFxuICAgIFwiICAgIDogYXdhaXQgYmFzZUNvbmZpZztcIixcbiAgICBcIiAgcmV0dXJuIGFwcGVuZFRvUmVzb2x2ZWRDb25maWcocmVzb2x2ZWQpO1wiLFxuICAgIFwifTtcIixcbiAgICBcIlwiLFxuICBdLmpvaW4oXCJcXG5cIik7XG4gIGF3YWl0IHdyaXRlRmlsZSh3cmFwcGVyUGF0aCwgc291cmNlLCBcInV0ZjhcIik7XG4gIHJldHVybiB3cmFwcGVyUGF0aDtcbn1cblxuLyoqXG4gKiBBUEkg7ZSE66Gc7KCd7Yq4IOu5jOuTnCDsgrDstpzrrLzsl5Ag64yA7ZWcIOq3nOy5meuTpC5cbiAqIGNsaS50c+ydmCBidWlsZF9hcGkg7ZWo7IiY6rCAIOydtOqyg+ydhCDrs7Tqs6Ag6re464yA66GcIOyLpO2Wie2VqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGNvbnN0IEFQSV9BUlRJRkFDVFM6IEJ1aWxkQXJ0aWZhY3Q8eyBjb25maWdGaWxlUGF0aDogc3RyaW5nIH0+W10gPSBbXG4gIHtcbiAgICBuYW1lOiBcIkFQSVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkFQSSDtlITroZzsoJ3tirgg67mM65OcIOyCsOy2nOusvFwiLFxuICAgIHByb2plY3RQYXRoOiBcImFwaVwiLFxuICAgIHByZUJ1aWxkQ29tbWFuZDogKCkgPT4gXCJybSAtcmYgZGlzdFwiLFxuICAgIGJ1aWxkQ29tbWFuZDogKHsgY29uZmlnRmlsZVBhdGggfSkgPT5cbiAgICAgIGB0c2MgLS1ub0VtaXQgJiYgcG5wbSBleGVjIHRzZG93biAtLWNvbmZpZyAke0pTT04uc3RyaW5naWZ5KGNvbmZpZ0ZpbGVQYXRoKX1gLFxuICB9LFxuXTtcblxuLyoqXG4gKiDsm7kg7ZSE66Gc7KCd7Yq4IOu5jOuTnCDsgrDstpzrrLzsl5Ag64yA7ZWcIOq3nOy5meuTpC5cbiAqIGNsaS50c+ydmCBidWlsZF93ZWIg7ZWo7IiY6rCAIOydtOqyg+ydhCDrs7Tqs6Ag6re464yA66GcIOyLpO2Wie2VqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGNvbnN0IFdFQl9BUlRJRkFDVFM6IEJ1aWxkQXJ0aWZhY3RbXSA9IFtcbiAge1xuICAgIG5hbWU6IFwiV2ViIENsaWVudFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIldlYiDtlITroZzsoJ3tirgg7YG065287J207Ja47Yq4IOu5jOuTnCDsgrDstpzrrLxcIixcbiAgICBwcm9qZWN0UGF0aDogXCJ3ZWJcIixcbiAgICBwcmVCdWlsZENvbW1hbmQ6ICgpID0+IFwicm0gLXJmIGRpc3QvY2xpZW50XCIsXG4gICAgYnVpbGRDb21tYW5kOiAoKSA9PlxuICAgICAgXCJ0c2MgLWIgLS1ub0VtaXQgJiYgdml0ZSBidWlsZCAtLWNvbmZpZyB2aXRlLmNvbmZpZy50cyAtLW91dERpciBkaXN0L2NsaWVudFwiLFxuICB9LFxuICB7XG4gICAgbmFtZTogXCJXZWIgU2VydmVyXCIsXG4gICAgZGVzY3JpcHRpb246IFwiV2ViIO2UhOuhnOygne2KuCDshJzrsoQg67mM65OcIOyCsOy2nOusvFwiLFxuICAgIHByb2plY3RQYXRoOiBcIndlYlwiLFxuICAgIHByZUJ1aWxkQ29tbWFuZDogKCkgPT4gXCJybSAtcmYgZGlzdC9zZXJ2ZXJcIixcbiAgICBidWlsZENvbW1hbmQ6ICgpID0+XG4gICAgICBcInRzYyAtYiAtLW5vRW1pdCAmJiB2aXRlIGJ1aWxkIC0tY29uZmlnIHZpdGUuY29uZmlnLnRzIC0tc3NyIHNyYy9lbnRyeS1zZXJ2ZXIuZ2VuZXJhdGVkLnRzeCAtLW91dERpciBkaXN0L3NlcnZlclwiLFxuICAgIHBvc3RCdWlsZENvbW1hbmQ6ICgpID0+XG4gICAgICBcInJtIC1yZiAuLi9hcGkvd2ViLWRpc3QgJiYgbWtkaXIgLXAgLi4vYXBpL3dlYi1kaXN0ICYmIGNwIC1yIGRpc3QvKiAuLi9hcGkvd2ViLWRpc3RcIixcbiAgfSxcbl07XG4iXSwibWFwcGluZ3MiOiI7Ozs7O2NBTzBDO0FBbUIxQyxNQUFNLGtDQUFtRSxFQUN2RSxNQUFNLHFCQUFxQjtDQUN6QixRQUFRLE1BQU0sT0FBTyx5QkFBQSxDQUEwQjtBQUNqRCxFQUNGO0FBRUEsZUFBc0IsaUNBQ3BCLFlBQ0EsU0FJQSxlQUFnRCxpQ0FDYjtDQUNuQyxJQUFJLFFBQVEsT0FBTyxRQUFRLE9BQ3pCLE9BQU87Q0FFVCxJQUFJLFFBQVEsaUJBQWlCLFFBQzNCLE1BQU0sSUFBSSxNQUFNLDJFQUEyRTtDQUk3RixNQUFNLGtCQUFpQixNQURHLGFBQWEsbUJBQW1CLEVBQ25DLENBQVk7RUFDakMsYUFBYTtFQUNiLFNBQVMsQ0FBQyxRQUFRLFlBQVk7RUFDOUIsUUFBUTtFQUNSLFNBQVM7Q0FDWCxDQUFDO0NBRUQsSUFBSTtDQUNKLElBQUksTUFBTSxRQUFRLFdBQVcsT0FBTyxHQUNsQyxvQkFBb0IsV0FBVztNQUMxQixJQUFJLFdBQVcsWUFBWSxRQUNoQyxvQkFBb0IsQ0FBQztNQUVyQixvQkFBb0IsQ0FBQyxXQUFXLE9BQU87Q0FHekMsT0FBTztFQUNMLEdBQUc7RUFDSCxTQUFTLENBQUMsR0FBRyxtQkFBbUIsY0FBYztDQUNoRDtBQUNGO0FBRUEsU0FBZ0IsZ0NBQ2QsU0FDTTtDQUNOLEtBQUssTUFBTSxVQUFVLFNBQVM7RUFDNUIsSUFBSSxpQkFBaUIsS0FBSyxPQUFPLElBQUksR0FDbkMsTUFBTSxJQUFJLE1BQU0sNENBQTRDLE9BQU8sTUFBTTtFQUUzRSxJQUFJLE9BQU8sS0FBSyxTQUFTLDhCQUE4QixHQUNyRCxNQUFNLElBQUksTUFBTSxrREFBa0QsT0FBTyxNQUFNO0NBRW5GO0FBQ0Y7QUFFQSxNQUFhLHNDQUFzQztBQUNuRCxNQUFhLHFDQUFxQztBQUVsRCxlQUFzQixtQ0FBbUMsY0FBcUM7Q0FDNUYsSUFBSSxDQUFFLE1BQU0sT0FBTyxZQUFZLEdBQzdCLE1BQU0sSUFBSSxNQUFNLGdEQUFnRCxjQUFjO0NBRWhGLE1BQU0sU0FBUyxNQUFNLFNBQVMsY0FBYyxNQUFNO0NBQ2xELElBQUksQ0FBQyx5Q0FBeUMsS0FBSyxNQUFNLEdBQ3ZELE1BQU0sSUFBSSxNQUFNLDZEQUE2RCxjQUFjO0NBRzdGLElBQUksQ0FEdUIsK0JBQStCLEtBQUssTUFDMUQsS0FBc0IsQ0FBQyxpQkFBaUIsS0FBSyxNQUFNLEdBQ3RELE1BQU0sSUFBSSxNQUFNLDhEQUE4RCxjQUFjO0FBRWhHO0FBRUEsZUFBc0IsaUNBQWlDLFNBS25DO0NBQ2xCLElBQUksUUFBUSxPQUFPLFFBQVEsT0FDekIsT0FBTyxRQUFRO0NBR2pCLE1BQU0sbUNBQW1DLFFBQVEsWUFBWTtDQUM3RCxNQUFNLGNBQWMsS0FBSyxLQUN2QixRQUFRLGFBQ1Isd0JBQXdCLFFBQVEsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFLEtBQ3BEO0NBQ0EsTUFBTSxnQkFBZ0IsY0FBYyxRQUFRLGNBQWMsQ0FBQyxDQUFDO0NBeUQ1RCxNQUFNLFVBQVUsYUF4REQ7RUFDYjtFQUNBLDBCQUEwQixLQUFLLFVBQVUsYUFBYSxFQUFFO0VBQ3hEO0VBQ0E7RUFDQSxzQ0FBc0MsS0FBSyxVQUFVO0dBQ25ELGFBQWE7R0FDYixTQUFTLENBQUMsUUFBUSxZQUFZO0dBQzlCLFFBQVE7R0FDUixTQUFTO0VBQ1gsQ0FBQyxFQUFFO0VBQ0gsd0JBQXdCLEtBQUssVUFBVSxRQUFRLFlBQVksRUFBRTtFQUM3RCx1QkFBdUIsS0FBSyxVQUFVLFFBQVEsV0FBVyxFQUFFO0VBQzNEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtDQUNGLENBQUMsQ0FBQyxLQUFLLElBQ3NCLEdBQVEsTUFBTTtDQUMzQyxPQUFPO0FBQ1Q7Ozs7O0FBTUEsTUFBYSxnQkFBNkQsQ0FDeEU7Q0FDRSxNQUFNO0NBQ04sYUFBYTtDQUNiLGFBQWE7Q0FDYix1QkFBdUI7Q0FDdkIsZUFBZSxFQUFFLHFCQUNmLDZDQUE2QyxLQUFLLFVBQVUsY0FBYztBQUM5RSxDQUNGOzs7OztBQU1BLE1BQWEsZ0JBQWlDLENBQzVDO0NBQ0UsTUFBTTtDQUNOLGFBQWE7Q0FDYixhQUFhO0NBQ2IsdUJBQXVCO0NBQ3ZCLG9CQUNFO0FBQ0osR0FDQTtDQUNFLE1BQU07Q0FDTixhQUFhO0NBQ2IsYUFBYTtDQUNiLHVCQUF1QjtDQUN2QixvQkFDRTtDQUNGLHdCQUNFO0FBQ0osQ0FDRiJ9