sonamu 0.9.3 → 0.9.5

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 (99) hide show
  1. package/dist/ai/providers/rtzr/utils.js +2 -2
  2. package/dist/api/config.d.ts +0 -8
  3. package/dist/api/config.d.ts.map +1 -1
  4. package/dist/api/config.js +1 -1
  5. package/dist/api/sonamu.d.ts +0 -1
  6. package/dist/api/sonamu.d.ts.map +1 -1
  7. package/dist/api/sonamu.js +2 -41
  8. package/dist/auth/audit-log/builders.d.ts +216 -0
  9. package/dist/auth/audit-log/builders.d.ts.map +1 -0
  10. package/dist/auth/audit-log/builders.js +307 -0
  11. package/dist/auth/audit-log/events.d.ts +143 -0
  12. package/dist/auth/audit-log/events.d.ts.map +1 -0
  13. package/dist/auth/audit-log/events.js +74 -0
  14. package/dist/auth/audit-log/plugin.d.ts +11 -0
  15. package/dist/auth/audit-log/plugin.d.ts.map +1 -0
  16. package/dist/auth/audit-log/plugin.js +427 -0
  17. package/dist/auth/audit-log-ingestor.d.ts +3 -3
  18. package/dist/auth/audit-log-ingestor.d.ts.map +1 -1
  19. package/dist/auth/audit-log-ingestor.js +44 -50
  20. package/dist/auth/index.d.ts +2 -0
  21. package/dist/auth/index.d.ts.map +1 -1
  22. package/dist/auth/index.js +4 -4
  23. package/dist/auth/plugins/entity-definitions/admin.d.ts +1 -1
  24. package/dist/auth/plugins/entity-definitions/admin.js +4 -4
  25. package/dist/auth/plugins/entity-definitions/audit-log.d.ts +2 -2
  26. package/dist/auth/plugins/entity-definitions/audit-log.js +3 -3
  27. package/dist/auth/plugins/wrappers/admin.d.ts +2 -2
  28. package/dist/auth/plugins/wrappers/sso.d.ts +1 -1
  29. package/dist/bin/fixture.d.ts.map +1 -1
  30. package/dist/bin/fixture.js +111 -1
  31. package/dist/database/_batch_update.d.ts +1 -1
  32. package/dist/database/_batch_update.js +2 -2
  33. package/dist/database/upsert-builder.js +4 -4
  34. package/dist/dict/sonamu-dictionary.js +2 -2
  35. package/dist/entity/entity-manager.d.ts +2 -2
  36. package/dist/entity/entity-manager.d.ts.map +1 -1
  37. package/dist/entity/entity-manager.js +14 -4
  38. package/dist/index.js +4 -3
  39. package/dist/migration/code-generation.d.ts.map +1 -1
  40. package/dist/migration/code-generation.js +2 -3
  41. package/dist/syncer/syncer.d.ts.map +1 -1
  42. package/dist/syncer/syncer.js +2 -9
  43. package/dist/template/implementations/entry-server.template.js +3 -2
  44. package/dist/template/implementations/generated.template.d.ts.map +1 -1
  45. package/dist/template/implementations/generated.template.js +2 -1
  46. package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
  47. package/dist/template/implementations/generated_sso.template.js +2 -1
  48. package/dist/template/implementations/queries.template.d.ts.map +1 -1
  49. package/dist/template/implementations/queries.template.js +3 -1
  50. package/dist/template/implementations/sd.template.js +3 -2
  51. package/dist/template/implementations/services.template.d.ts.map +1 -1
  52. package/dist/template/implementations/services.template.js +44 -7
  53. package/dist/template/zod-converter.d.ts.map +1 -1
  54. package/dist/template/zod-converter.js +2 -2
  55. package/dist/testing/data-explorer.d.ts.map +1 -1
  56. package/dist/testing/data-explorer.js +5 -3
  57. package/dist/types/types.d.ts +14 -14
  58. package/dist/ui/api.d.ts.map +1 -1
  59. package/dist/ui/api.js +3 -2
  60. package/dist/ui-web/assets/index-D4rYm-Xz.css +1 -0
  61. package/dist/ui-web/assets/{index-DrTfl0Ts.js → index-DzZ7vBk4.js} +47 -47
  62. package/dist/ui-web/index.html +2 -2
  63. package/dist/utils/fs-utils.d.ts.map +1 -1
  64. package/dist/utils/fs-utils.js +4 -4
  65. package/package.json +4 -5
  66. package/src/ai/providers/rtzr/utils.ts +1 -1
  67. package/src/api/config.ts +0 -8
  68. package/src/api/sonamu.ts +1 -51
  69. package/src/auth/audit-log/builders.ts +791 -0
  70. package/src/auth/audit-log/events.ts +149 -0
  71. package/src/auth/audit-log/plugin.ts +913 -0
  72. package/src/auth/audit-log-ingestor.ts +3 -4
  73. package/src/auth/index.ts +2 -0
  74. package/src/auth/plugins/entity-definitions/admin.ts +3 -3
  75. package/src/auth/plugins/entity-definitions/audit-log.ts +2 -2
  76. package/src/bin/fixture.ts +143 -0
  77. package/src/database/_batch_update.ts +1 -1
  78. package/src/database/upsert-builder.ts +3 -3
  79. package/src/dict/sonamu-dictionary.ts +1 -1
  80. package/src/entity/entity-manager.ts +10 -3
  81. package/src/migration/code-generation.ts +1 -6
  82. package/src/shared/app.shared.ts.txt +60 -6
  83. package/src/shared/web.shared.ts.txt +60 -5
  84. package/src/syncer/syncer.ts +1 -11
  85. package/src/template/implementations/entry-server.template.ts +1 -1
  86. package/src/template/implementations/generated.template.ts +1 -0
  87. package/src/template/implementations/generated_sso.template.ts +1 -0
  88. package/src/template/implementations/queries.template.ts +10 -1
  89. package/src/template/implementations/sd.template.ts +1 -1
  90. package/src/template/implementations/services.template.ts +62 -6
  91. package/src/template/zod-converter.ts +2 -1
  92. package/src/testing/data-explorer.ts +3 -2
  93. package/src/ui/api.ts +10 -1
  94. package/src/utils/fs-utils.ts +6 -4
  95. package/dist/auth/audit-log-proxy-types.d.ts +0 -23
  96. package/dist/auth/audit-log-proxy-types.d.ts.map +0 -1
  97. package/dist/auth/audit-log-proxy-types.js +0 -1
  98. package/dist/ui-web/assets/index-Dr8pRJC_.css +0 -1
  99. package/src/auth/audit-log-proxy-types.ts +0 -23
@@ -51,7 +51,7 @@ declare class EntityManagerClass {
51
51
  type: "string";
52
52
  name: string;
53
53
  length?: number | undefined;
54
- zodFormat?: "base64" | "base64url" | "hex" | "uuid" | "email" | "url" | "httpUrl" | "hostname" | "emoji" | "jwt" | "nanoid" | "cuid" | "cuid2" | "ulid" | "ipv4" | "ipv6" | "mac" | "cidrv4" | "cidrv6" | "hashMd5" | "hashSha1" | "hashSha256" | "hashSha384" | "hashSha512" | "isoDate" | "isoTime" | "isoDatetime" | "isoDuration" | undefined;
54
+ zodFormat?: "uuid" | "email" | "base64" | "base64url" | "hex" | "url" | "httpUrl" | "hostname" | "emoji" | "jwt" | "nanoid" | "cuid" | "cuid2" | "ulid" | "ipv4" | "ipv6" | "mac" | "cidrv4" | "cidrv6" | "hashMd5" | "hashSha1" | "hashSha256" | "hashSha384" | "hashSha512" | "isoDate" | "isoTime" | "isoDatetime" | "isoDuration" | undefined;
55
55
  desc?: string | undefined;
56
56
  nullable?: boolean | undefined;
57
57
  toFilter?: boolean | undefined;
@@ -82,7 +82,7 @@ declare class EntityManagerClass {
82
82
  type: "string[]";
83
83
  name: string;
84
84
  length?: number | undefined;
85
- zodFormat?: "base64" | "base64url" | "hex" | "uuid" | "email" | "url" | "httpUrl" | "hostname" | "emoji" | "jwt" | "nanoid" | "cuid" | "cuid2" | "ulid" | "ipv4" | "ipv6" | "mac" | "cidrv4" | "cidrv6" | "hashMd5" | "hashSha1" | "hashSha256" | "hashSha384" | "hashSha512" | "isoDate" | "isoTime" | "isoDatetime" | "isoDuration" | undefined;
85
+ zodFormat?: "uuid" | "email" | "base64" | "base64url" | "hex" | "url" | "httpUrl" | "hostname" | "emoji" | "jwt" | "nanoid" | "cuid" | "cuid2" | "ulid" | "ipv4" | "ipv6" | "mac" | "cidrv4" | "cidrv6" | "hashMd5" | "hashSha1" | "hashSha256" | "hashSha384" | "hashSha512" | "isoDate" | "isoTime" | "isoDatetime" | "isoDuration" | undefined;
86
86
  desc?: string | undefined;
87
87
  nullable?: boolean | undefined;
88
88
  toFilter?: boolean | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"entity-manager.d.ts","sourceRoot":"","sources":["../../src/entity/entity-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity-manager.d.ts","sourceRoot":"","sources":["../../src/entity/entity-manager.ts"],"names":[],"mappings":"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"}
@@ -194,9 +194,19 @@ var init_entity_manager = __esmMin((() => {
194
194
  * @returns
195
195
  */
196
196
  getEntityIdFromPath(filePath) {
197
- const matched = filePath.match(/application\/(.+)\//);
198
- assert(matched?.[1]);
199
- return inflection.camelize(matched[1].replace(/-/g, "_"));
197
+ const fileName = path.basename(filePath);
198
+ const supportedSuffixes = [
199
+ ".model.ts",
200
+ ".model.js",
201
+ ".entity.json",
202
+ ".frame.ts",
203
+ ".frame.js"
204
+ ];
205
+ const matchedSuffix = supportedSuffixes.find((suffix) => fileName.endsWith(suffix));
206
+ assert(matchedSuffix, `지원하지 않는 entity 경로입니다: ${filePath}`);
207
+ const entityBaseName = fileName.slice(0, -matchedSuffix.length);
208
+ assert(entityBaseName.length > 0, `EntityId를 계산할 수 없는 경로입니다: ${filePath}`);
209
+ return inflection.camelize(entityBaseName.replace(/-/g, "_"));
200
210
  }
201
211
  async registerNonEntityTypeModulePaths() {
202
212
  const typePathsPatterns = [path.join(Sonamu.apiRootPath, runtimePath("src/application/**/*.types.ts")), path.join(Sonamu.apiRootPath, runtimePath("src/application/**/*.generated.ts"))];
@@ -226,4 +236,4 @@ var init_entity_manager = __esmMin((() => {
226
236
  //#endregion
227
237
  init_entity_manager();
228
238
  export { EntityManager, init_entity_manager };
229
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hbmFnZXIuanMiLCJuYW1lcyI6WyJ6IiwiZW50aXR5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VudGl0eS9lbnRpdHktbWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCB7IGdsb2IsIHJlYWRGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiO1xuaW1wb3J0IHsgcHJldHRpZnlFcnJvciwgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7XG4gIEVudGl0eUpzb25TY2hlbWEsXG4gIGlzU2VhcmNoVGV4dEpzb25Tb3VyY2Vab2RUeXBlLFxuICBpc1NlYXJjaFRleHRQcm9wLFxuICBTb25hbXVGaWxlQXJyYXlTY2hlbWEsXG4gIFNvbmFtdUZpbGVTY2hlbWEsXG59IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBFbnRpdHlJbmRleCwgdHlwZSBFbnRpdHlKc29uIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBnbG9iQXN5bmMgfSBmcm9tIFwiLi4vdXRpbHMvYXN5bmMtdXRpbHNcIjtcbmltcG9ydCB7IGltcG9ydE1lbWJlcnMgfSBmcm9tIFwiLi4vdXRpbHMvZXNtLXV0aWxzXCI7XG5pbXBvcnQgeyB0eXBlIEFic29sdXRlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5pbXBvcnQgeyBydW50aW1lUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5pbXBvcnQgeyB0eXBlIEVudGl0eSB9IGZyb20gXCIuL2VudGl0eVwiO1xuXG5leHBvcnQgdHlwZSBFbnRpdHlOYW1lc1JlY29yZCA9IFJlY29yZDxcbiAgXCJmc1wiIHwgXCJmc1BsdXJhbFwiIHwgXCJjYW1lbFwiIHwgXCJjYW1lbFBsdXJhbFwiIHwgXCJjYXBpdGFsXCIgfCBcImNhcGl0YWxQbHVyYWxcIiB8IFwidXBwZXJcIiB8IFwiY29uc3RhbnRcIixcbiAgc3RyaW5nXG4+O1xuZXhwb3J0IHR5cGUgVGFibGVTcGVjID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHVuaXF1ZUluZGV4ZXM6IEVudGl0eUluZGV4W107XG4gIGpzb25Db2x1bW5zOiBzdHJpbmdbXTtcbn07XG5jbGFzcyBFbnRpdHlNYW5hZ2VyQ2xhc3Mge1xuICBwcml2YXRlIGVudGl0aWVzOiBNYXA8c3RyaW5nLCBFbnRpdHk+ID0gbmV3IE1hcCgpO1xuICBwdWJsaWMgbW9kdWxlUGF0aHM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgdGFibGVTcGVjczogTWFwPHN0cmluZywgVGFibGVTcGVjPiA9IG5ldyBNYXAoKTtcbiAgcHVibGljIGlzQXV0b2xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIOqyveuhnCDsoITri6zrsJvslYQg66qo65OgIGVudGl0eS5qc29uIO2MjOydvCDroZzrk5xcbiAgYXN5bmMgYXV0b2xvYWQoXzogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMuaXNBdXRvbG9hZGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBhdGhQYXR0ZXJuID0gcGF0aC5qb2luKFNvbmFtdS5hcGlSb290UGF0aCwgXCIvc3JjL2FwcGxpY2F0aW9uLyoqLyouZW50aXR5Lmpzb25cIik7XG5cbiAgICBmb3IgYXdhaXQgKGNvbnN0IGZpbGUgb2YgZ2xvYihwYXRoLnJlc29sdmUocGF0aFBhdHRlcm4pKSkge1xuICAgICAgY29uc3QganNvbiA9IEpTT04ucGFyc2UoKGF3YWl0IHJlYWRGaWxlKGZpbGUpKS50b1N0cmluZygpKTtcblxuICAgICAgLy8gZW50aXR5Lmpzb24g7Iqk7YKk66eIIOqygOymnVxuICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLnNjaGVtYVZhbGlkYXRlKGpzb24pO1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHBhdGgucmVsYXRpdmUoU29uYW11LmFwaVJvb3RQYXRoLCBmaWxlKTtcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gcHJldHRpZnlFcnJvcihlcnJvcik7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgY2hhbGsucmVkKGBJbnZhbGlkIGVudGl0eS5qc29uIHNjaGVtYTogJHtyZWxhdGl2ZVBhdGh9XFxuJHtjaGFsay55ZWxsb3coZXJyb3JNZXNzYWdlKX1gKSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgdGhpcy5yZWdpc3Rlcihqc29uLCB7IGRlZmVyU2VhcmNoVGV4dEpzb25Tb3VyY2VWYWxpZGF0aW9uOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMucmVnaXN0ZXJOb25FbnRpdHlUeXBlTW9kdWxlUGF0aHMoKTtcbiAgICBhd2FpdCB0aGlzLnZhbGlkYXRlQWxsUmVnaXN0ZXJlZFNlYXJjaFRleHRKc29uU291cmNlcygpO1xuXG4gICAgdGhpcy5pc0F1dG9sb2FkZWQgPSB0cnVlO1xuICB9XG5cbiAgc2NoZW1hVmFsaWRhdGUoanNvbjogdW5rbm93bikge1xuICAgIGNvbnN0IHJlc3VsdCA9IEVudGl0eUpzb25TY2hlbWEuc2FmZVBhcnNlKGpzb24pO1xuICAgIHJldHVybiByZXN1bHQuc3VjY2VzcyA/IG51bGwgOiByZXN1bHQuZXJyb3I7XG4gIH1cblxuICBhc3luYyByZWxvYWQoZG9TaWxlbnQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHRoaXMuZW50aXRpZXMuY2xlYXIoKTtcbiAgICB0aGlzLm1vZHVsZVBhdGhzLmNsZWFyKCk7XG4gICAgdGhpcy50YWJsZVNwZWNzLmNsZWFyKCk7XG4gICAgdGhpcy5pc0F1dG9sb2FkZWQgPSBmYWxzZTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmF1dG9sb2FkKGRvU2lsZW50KTtcbiAgfVxuXG4gIGFzeW5jIHJlZ2lzdGVyKFxuICAgIGpzb246IEVudGl0eUpzb24sXG4gICAgb3B0aW9uczogeyBkZWZlclNlYXJjaFRleHRKc29uU291cmNlVmFsaWRhdGlvbj86IGJvb2xlYW4gfSA9IHt9LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IEVudGl0eSB9ID0gYXdhaXQgaW1wb3J0KFwiLi9lbnRpdHlcIik7XG4gICAgY29uc3QgZW50aXR5ID0gbmV3IEVudGl0eShqc29uKTtcbiAgICBhd2FpdCBlbnRpdHkucmVnaXN0ZXJNb2R1bGVQYXRocygpO1xuICAgIGlmICghb3B0aW9ucy5kZWZlclNlYXJjaFRleHRKc29uU291cmNlVmFsaWRhdGlvbikge1xuICAgICAgYXdhaXQgdGhpcy52YWxpZGF0ZVNlYXJjaFRleHRKc29uU291cmNlcyhlbnRpdHkpO1xuICAgIH1cbiAgICBlbnRpdHkucmVnaXN0ZXJUYWJsZVNwZWNzKCk7XG4gICAgdGhpcy5lbnRpdGllcy5zZXQoanNvbi5pZCwgZW50aXR5KTtcbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXRlQWxsUmVnaXN0ZXJlZFNlYXJjaFRleHRKc29uU291cmNlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IGVudGl0eSBvZiB0aGlzLmVudGl0aWVzLnZhbHVlcygpKSB7XG4gICAgICBhd2FpdCB0aGlzLnZhbGlkYXRlU2VhcmNoVGV4dEpzb25Tb3VyY2VzKGVudGl0eSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZVNlYXJjaFRleHRKc29uU291cmNlcyhlbnRpdHk6IEVudGl0eSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHByb3BzQnlOYW1lID0gbmV3IE1hcChlbnRpdHkucHJvcHMubWFwKChwcm9wKSA9PiBbcHJvcC5uYW1lLCBwcm9wXSkpO1xuXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIGVudGl0eS5wcm9wcykge1xuICAgICAgaWYgKCFpc1NlYXJjaFRleHRQcm9wKHByb3ApKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IHNvdXJjZSBvZiBwcm9wLnNvdXJjZUNvbHVtbnMpIHtcbiAgICAgICAgY29uc3Qgc291cmNlUHJvcCA9IHByb3BzQnlOYW1lLmdldChzb3VyY2UubmFtZSk7XG4gICAgICAgIGlmICghc291cmNlUHJvcCB8fCBzb3VyY2VQcm9wLnR5cGUgIT09IFwianNvblwiKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB6b2RUeXBlID0gYXdhaXQgdGhpcy5yZXNvbHZlU2VhcmNoVGV4dEpzb25Tb3VyY2VUeXBlKGVudGl0eSwgc291cmNlUHJvcC5pZCk7XG4gICAgICAgIGlmICghem9kVHlwZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBzZWFyY2hUZXh0IHNvdXJjZSBcIiR7c291cmNlLm5hbWV9XCLsnZgganNvbiDtg4DsnoUgXCIke3NvdXJjZVByb3AuaWR9XCLsnYQo66W8KSDroZzrk5ztlaAg7IiYIOyXhuyKteuLiOuLpC5gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzU2VhcmNoVGV4dEpzb25Tb3VyY2Vab2RUeXBlKHpvZFR5cGUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYHNlYXJjaFRleHQgc291cmNlIFwiJHtzb3VyY2UubmFtZX1cIuydmCBqc29uIO2DgOyehSBcIiR7c291cmNlUHJvcC5pZH1cIuydgCjripQpIHVud3JhcCDtm4Qgei5hcnJheSh6LnN0cmluZygpKSDsnbTslrTslbwg7ZWp64uI64ukLmAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZVNlYXJjaFRleHRKc29uU291cmNlVHlwZShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICB0eXBlSWQ6IHN0cmluZyxcbiAgKTogUHJvbWlzZTx6LlpvZFR5cGVBbnkgfCBudWxsPiB7XG4gICAgY29uc3QgbG9jYWxUeXBlID0gZW50aXR5LnR5cGVzW3R5cGVJZF07XG4gICAgaWYgKGxvY2FsVHlwZSBpbnN0YW5jZW9mIHouWm9kVHlwZSkge1xuICAgICAgcmV0dXJuIGxvY2FsVHlwZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJlZ2lzdGVyZWRFbnRpdHkgb2YgdGhpcy5lbnRpdGllcy52YWx1ZXMoKSkge1xuICAgICAgY29uc3QgcmVnaXN0ZXJlZFR5cGUgPSByZWdpc3RlcmVkRW50aXR5LnR5cGVzW3R5cGVJZF07XG4gICAgICBpZiAocmVnaXN0ZXJlZFR5cGUgaW5zdGFuY2VvZiB6LlpvZFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHJlZ2lzdGVyZWRUeXBlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlSWQgPT09IFwiU29uYW11RmlsZVwiKSB7XG4gICAgICByZXR1cm4gU29uYW11RmlsZVNjaGVtYTtcbiAgICB9XG4gICAgaWYgKHR5cGVJZCA9PT0gXCJTb25hbXVGaWxlW11cIikge1xuICAgICAgcmV0dXJuIFNvbmFtdUZpbGVBcnJheVNjaGVtYTtcbiAgICB9XG5cbiAgICBjb25zdCBtb2R1bGVQYXRoID0gdGhpcy5tb2R1bGVQYXRocy5nZXQodHlwZUlkKTtcbiAgICBpZiAoIW1vZHVsZVBhdGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZHVsZUZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgU29uYW11LmFwaVJvb3RQYXRoLFxuICAgICAgcnVudGltZVBhdGgoYGRpc3QvYXBwbGljYXRpb24vJHttb2R1bGVQYXRofS5qc2ApLFxuICAgICk7XG4gICAgY29uc3QgaW1wb3J0ZWRNZW1iZXJzID0gYXdhaXQgaW1wb3J0TWVtYmVyczx1bmtub3duPihtb2R1bGVGaWxlUGF0aCk7XG4gICAgY29uc3QgbWF0Y2hlZCA9IGltcG9ydGVkTWVtYmVycy5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gdHlwZUlkKTtcbiAgICBpZiAoIW1hdGNoZWQgfHwgIShtYXRjaGVkLnZhbHVlIGluc3RhbmNlb2Ygei5ab2RUeXBlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoZWQudmFsdWU7XG4gIH1cblxuICBnZXQoZW50aXR5SWQ6IHN0cmluZyk6IEVudGl0eSB7XG4gICAgY29uc3QgZW50aXR5ID0gdGhpcy5lbnRpdGllcy5nZXQoZW50aXR5SWQpO1xuICAgIGlmIChlbnRpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDsobTsnqztlZjsp4Ag7JWK64qUIEVudGl0eSDsmpTssq0gJHtlbnRpdHlJZH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW50aXR5O1xuICB9XG5cbiAgZ2V0QnlUYWJsZSh0YWJsZTogc3RyaW5nKTogRW50aXR5IHtcbiAgICBjb25zdCBlbnRpdHkgPSBBcnJheS5mcm9tKHRoaXMuZW50aXRpZXMudmFsdWVzKCkpLmZpbmQoKGVudGl0eSkgPT4gZW50aXR5LnRhYmxlID09PSB0YWJsZSk7XG4gICAgaWYgKGVudGl0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYOyhtOyerO2VmOyngCDslYrripQgRW50aXR5IOyalOyyrSAke3RhYmxlfWApO1xuICAgIH1cblxuICAgIHJldHVybiBlbnRpdHk7XG4gIH1cblxuICBleGlzdHMoZW50aXR5SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuZW50aXRpZXMuZ2V0KGVudGl0eUlkKTtcbiAgICByZXR1cm4gZW50aXR5ICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRBbGxJZHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKEVudGl0eU1hbmFnZXIuZW50aXRpZXMua2V5cygpKS50b1NvcnRlZCgpO1xuICB9XG5cbiAgZ2V0QWxsRW50aXRpZXMoKTogRW50aXR5W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZW50aXRpZXMudmFsdWVzKCkpO1xuICB9XG5cbiAgZ2V0QWxsUGFyZW50SWRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxJZHMoKS5maWx0ZXIoKGVudGl0eUlkKSA9PiB7XG4gICAgICBjb25zdCBlbnRpdHkgPSB0aGlzLmdldChlbnRpdHlJZCk7XG4gICAgICByZXR1cm4gZW50aXR5LnBhcmVudElkID09PSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDaGlsZHJlbklkcyhwYXJlbnRJZDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmdldEFsbElkcygpLmZpbHRlcigoZW50aXR5SWQpID0+IHtcbiAgICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuZ2V0KGVudGl0eUlkKTtcbiAgICAgIHJldHVybiBlbnRpdHkucGFyZW50SWQgPT09IHBhcmVudElkO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0TW9kdWxlUGF0aChrZXk6IHN0cmluZywgbW9kdWxlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gY29uc29sZS5kZWJ1ZyhjaGFsay5jeWFuKGBzZXRNb2R1bGVQYXRoIDo6ICR7a2V5fSA6OiAke21vZHVsZVBhdGh9YCkpO1xuICAgIHRoaXMubW9kdWxlUGF0aHMuc2V0KGtleSwgbW9kdWxlUGF0aCk7XG4gIH1cblxuICBnZXRNb2R1bGVQYXRoKGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtb2R1bGVQYXRoID0gdGhpcy5tb2R1bGVQYXRocy5nZXQoa2V5KTtcbiAgICBpZiAobW9kdWxlUGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYOyhtOyerO2VmOyngCDslYrripQg66qo65OIIO2MqOyKpCDsmpTssq0gJHtrZXl9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZHVsZVBhdGg7XG4gIH1cblxuICBzZXRUYWJsZVNwZWModGFibGVTcGVjOiBUYWJsZVNwZWMpIHtcbiAgICB0aGlzLnRhYmxlU3BlY3Muc2V0KHRhYmxlU3BlYy5uYW1lLCB0YWJsZVNwZWMpO1xuICB9XG5cbiAgZ2V0VGFibGVTcGVjKGtleTogc3RyaW5nKTogVGFibGVTcGVjIHtcbiAgICBjb25zdCB0YWJsZVNwZWMgPSB0aGlzLnRhYmxlU3BlY3MuZ2V0KGtleSk7XG4gICAgaWYgKHRhYmxlU3BlYyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYOyhtOyerO2VmOyngCDslYrripQg7YWM7J2067iUIOyKpO2OmSDsmpTssq0gJHtrZXl9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhYmxlU3BlYztcbiAgfVxuXG4gIGdldE5hbWVzRnJvbUlkKGVudGl0eUlkOiBzdHJpbmcpOiBFbnRpdHlOYW1lc1JlY29yZCB7XG4gICAgLy8gZW50aXR5SWTqsIAg64uo67O17IiYIOuPme2YlSDri6jslrTsnbgg6rK97JqwIExpc3Qg67aZ7Jes7IScIOyDneyEsVxuICAgIGNvbnN0IHBsdXJhbGl6ZWQgPVxuICAgICAgaW5mbGVjdGlvbi5wbHVyYWxpemUoZW50aXR5SWQpID09PSBlbnRpdHlJZFxuICAgICAgICA/IGAke2VudGl0eUlkfUxpc3RgXG4gICAgICAgIDogaW5mbGVjdGlvbi5wbHVyYWxpemUoZW50aXR5SWQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZzOiBpbmZsZWN0aW9uLmRhc2hlcml6ZShpbmZsZWN0aW9uLnVuZGVyc2NvcmUoZW50aXR5SWQpKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgZnNQbHVyYWw6IGluZmxlY3Rpb24uZGFzaGVyaXplKGluZmxlY3Rpb24udW5kZXJzY29yZShwbHVyYWxpemVkKSkudG9Mb3dlckNhc2UoKSxcbiAgICAgIGNhbWVsOiBpbmZsZWN0aW9uLmNhbWVsaXplKGVudGl0eUlkLCB0cnVlKSxcbiAgICAgIGNhbWVsUGx1cmFsOiBpbmZsZWN0aW9uLmNhbWVsaXplKHBsdXJhbGl6ZWQsIHRydWUpLFxuICAgICAgY2FwaXRhbDogZW50aXR5SWQsXG4gICAgICBjYXBpdGFsUGx1cmFsOiBwbHVyYWxpemVkLFxuICAgICAgdXBwZXI6IGVudGl0eUlkLnRvVXBwZXJDYXNlKCksXG4gICAgICBjb25zdGFudDogaW5mbGVjdGlvbi51bmRlcnNjb3JlKGVudGl0eUlkKS50b1VwcGVyQ2FzZSgpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRW50aXR5SWTripQgTW9kZWzsnYQg7KCc7Jm47ZWcIFBhc2NhbENhc2Ug7J2066aE7J6F64uI64ukLiAoZXguIFwiVXNlclwiKVxuICAgKiBAcGFyYW0gZmlsZVBhdGhcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldEVudGl0eUlkRnJvbVBhdGgoZmlsZVBhdGg6IEFic29sdXRlUGF0aCk6IHN0cmluZyB7XG4gICAgY29uc3QgbWF0Y2hlZCA9IGZpbGVQYXRoLm1hdGNoKC9hcHBsaWNhdGlvblxcLyguKylcXC8vKTtcbiAgICBhc3NlcnQobWF0Y2hlZD8uWzFdKTtcbiAgICByZXR1cm4gaW5mbGVjdGlvbi5jYW1lbGl6ZShtYXRjaGVkWzFdLnJlcGxhY2UoLy0vZywgXCJfXCIpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVnaXN0ZXJOb25FbnRpdHlUeXBlTW9kdWxlUGF0aHMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdHlwZVBhdGhzUGF0dGVybnMgPSBbXG4gICAgICBwYXRoLmpvaW4oU29uYW11LmFwaVJvb3RQYXRoLCBydW50aW1lUGF0aChcInNyYy9hcHBsaWNhdGlvbi8qKi8qLnR5cGVzLnRzXCIpKSxcbiAgICAgIHBhdGguam9pbihTb25hbXUuYXBpUm9vdFBhdGgsIHJ1bnRpbWVQYXRoKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZ2VuZXJhdGVkLnRzXCIpKSxcbiAgICBdO1xuICAgIGNvbnN0IHR5cGVQYXRocyA9IChcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHR5cGVQYXRoc1BhdHRlcm5zLm1hcCgocGF0dGVybikgPT4gZ2xvYkFzeW5jKHBhdHRlcm4pKSlcbiAgICApLmZsYXQoKTtcblxuICAgIGZvciAoY29uc3QgZmlsZVBhdGggb2YgdHlwZVBhdGhzKSB7XG4gICAgICBjb25zdCBtb2R1bGVQYXRoID0gdGhpcy5nZXRNb2R1bGVQYXRoRnJvbVR5cGVGaWxlUGF0aChmaWxlUGF0aCk7XG4gICAgICBjb25zdCBpbXBvcnRlZE1lbWJlcnMgPSBhd2FpdCBpbXBvcnRNZW1iZXJzPHVua25vd24+KGZpbGVQYXRoKTtcbiAgICAgIGZvciAoY29uc3QgeyBuYW1lLCB2YWx1ZSB9IG9mIGltcG9ydGVkTWVtYmVycykge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiB6LlpvZFR5cGUpIHtcbiAgICAgICAgICB0aGlzLnNldE1vZHVsZVBhdGgobmFtZSwgbW9kdWxlUGF0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldE1vZHVsZVBhdGhGcm9tVHlwZUZpbGVQYXRoKGZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gZmlsZVBhdGgucmVwbGFjZUFsbChcIlxcXFxcIiwgXCIvXCIpO1xuICAgIGNvbnN0IG1hdGNoZWQgPSBub3JtYWxpemVkUGF0aC5tYXRjaCgvXFwvKD86c3JjfGRpc3QpXFwvYXBwbGljYXRpb25cXC8oLispXFwuKD86dHN8anMpJC8pO1xuXG4gICAgaWYgKCFtYXRjaGVkPy5bMV0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihg7YOA7J6FIO2MjOydvOydmCDrqqjrk4gg6rK966Gc66W8IOqzhOyCsO2VoCDsiJgg7JeG7Iq164uI64ukOiAke2ZpbGVQYXRofWApO1xuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVkWzFdO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBFbnRpdHlNYW5hZ2VyID0gbmV3IEVudGl0eU1hbmFnZXJDbGFzcygpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O2NBUXVDO2FBT2Y7bUJBRXlCO2lCQUNFO2tCQUVEO0NBWTVDLHFCQUFOLE1BQXlCO0VBQ3ZCLEFBQVEsV0FBZ0MsSUFBSSxLQUFLO0VBQ2pELEFBQU8sY0FBbUMsSUFBSSxLQUFLO0VBQ25ELEFBQVEsYUFBcUMsSUFBSSxLQUFLO0VBQ3RELEFBQU8sZUFBd0I7RUFHL0IsTUFBTSxTQUFTLElBQWEsT0FBTztBQUNqQyxPQUFJLEtBQUssY0FBYztBQUNyQjs7R0FFRixNQUFNLGNBQWMsS0FBSyxLQUFLLE9BQU8sYUFBYSxvQ0FBb0M7QUFFdEYsY0FBVyxNQUFNLFFBQVEsS0FBSyxLQUFLLFFBQVEsWUFBWSxDQUFDLEVBQUU7SUFDeEQsTUFBTSxPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsS0FBSyxFQUFFLFVBQVUsQ0FBQztJQUcxRCxNQUFNLFFBQVEsS0FBSyxlQUFlLEtBQUs7QUFDdkMsUUFBSSxPQUFPO0tBQ1QsTUFBTSxlQUFlLEtBQUssU0FBUyxPQUFPLGFBQWEsS0FBSztLQUM1RCxNQUFNLGVBQWUsY0FBYyxNQUFNO0FBQ3pDLGFBQVEsTUFDTixNQUFNLElBQUksK0JBQStCLGFBQWEsSUFBSSxNQUFNLE9BQU8sYUFBYSxHQUFHLENBQ3hGOztBQUdILFVBQU0sS0FBSyxTQUFTLE1BQU0sRUFBRSxxQ0FBcUMsTUFBTSxDQUFDOztBQUcxRSxTQUFNLEtBQUssa0NBQWtDO0FBQzdDLFNBQU0sS0FBSyw0Q0FBNEM7QUFFdkQsUUFBSyxlQUFlOztFQUd0QixlQUFlLE1BQWU7R0FDNUIsTUFBTSxTQUFTLGlCQUFpQixVQUFVLEtBQUs7QUFDL0MsVUFBTyxPQUFPLFVBQVUsT0FBTyxPQUFPOztFQUd4QyxNQUFNLE9BQU8sV0FBb0IsT0FBTztBQUN0QyxRQUFLLFNBQVMsT0FBTztBQUNyQixRQUFLLFlBQVksT0FBTztBQUN4QixRQUFL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
239
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hbmFnZXIuanMiLCJuYW1lcyI6WyJ6IiwiZW50aXR5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VudGl0eS9lbnRpdHktbWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCB7IGdsb2IsIHJlYWRGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiO1xuaW1wb3J0IHsgcHJldHRpZnlFcnJvciwgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7XG4gIEVudGl0eUpzb25TY2hlbWEsXG4gIGlzU2VhcmNoVGV4dEpzb25Tb3VyY2Vab2RUeXBlLFxuICBpc1NlYXJjaFRleHRQcm9wLFxuICBTb25hbXVGaWxlQXJyYXlTY2hlbWEsXG4gIFNvbmFtdUZpbGVTY2hlbWEsXG59IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBFbnRpdHlJbmRleCwgdHlwZSBFbnRpdHlKc29uIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBnbG9iQXN5bmMgfSBmcm9tIFwiLi4vdXRpbHMvYXN5bmMtdXRpbHNcIjtcbmltcG9ydCB7IGltcG9ydE1lbWJlcnMgfSBmcm9tIFwiLi4vdXRpbHMvZXNtLXV0aWxzXCI7XG5pbXBvcnQgeyB0eXBlIEFic29sdXRlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5pbXBvcnQgeyBydW50aW1lUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5pbXBvcnQgeyB0eXBlIEVudGl0eSB9IGZyb20gXCIuL2VudGl0eVwiO1xuXG5leHBvcnQgdHlwZSBFbnRpdHlOYW1lc1JlY29yZCA9IFJlY29yZDxcbiAgXCJmc1wiIHwgXCJmc1BsdXJhbFwiIHwgXCJjYW1lbFwiIHwgXCJjYW1lbFBsdXJhbFwiIHwgXCJjYXBpdGFsXCIgfCBcImNhcGl0YWxQbHVyYWxcIiB8IFwidXBwZXJcIiB8IFwiY29uc3RhbnRcIixcbiAgc3RyaW5nXG4+O1xuZXhwb3J0IHR5cGUgVGFibGVTcGVjID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHVuaXF1ZUluZGV4ZXM6IEVudGl0eUluZGV4W107XG4gIGpzb25Db2x1bW5zOiBzdHJpbmdbXTtcbn07XG5jbGFzcyBFbnRpdHlNYW5hZ2VyQ2xhc3Mge1xuICBwcml2YXRlIGVudGl0aWVzOiBNYXA8c3RyaW5nLCBFbnRpdHk+ID0gbmV3IE1hcCgpO1xuICBwdWJsaWMgbW9kdWxlUGF0aHM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgdGFibGVTcGVjczogTWFwPHN0cmluZywgVGFibGVTcGVjPiA9IG5ldyBNYXAoKTtcbiAgcHVibGljIGlzQXV0b2xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIOqyveuhnCDsoITri6zrsJvslYQg66qo65OgIGVudGl0eS5qc29uIO2MjOydvCDroZzrk5xcbiAgYXN5bmMgYXV0b2xvYWQoXzogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMuaXNBdXRvbG9hZGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBhdGhQYXR0ZXJuID0gcGF0aC5qb2luKFNvbmFtdS5hcGlSb290UGF0aCwgXCIvc3JjL2FwcGxpY2F0aW9uLyoqLyouZW50aXR5Lmpzb25cIik7XG5cbiAgICBmb3IgYXdhaXQgKGNvbnN0IGZpbGUgb2YgZ2xvYihwYXRoLnJlc29sdmUocGF0aFBhdHRlcm4pKSkge1xuICAgICAgY29uc3QganNvbiA9IEpTT04ucGFyc2UoKGF3YWl0IHJlYWRGaWxlKGZpbGUpKS50b1N0cmluZygpKTtcblxuICAgICAgLy8gZW50aXR5Lmpzb24g7Iqk7YKk66eIIOqygOymnVxuICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLnNjaGVtYVZhbGlkYXRlKGpzb24pO1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHBhdGgucmVsYXRpdmUoU29uYW11LmFwaVJvb3RQYXRoLCBmaWxlKTtcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gcHJldHRpZnlFcnJvcihlcnJvcik7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgY2hhbGsucmVkKGBJbnZhbGlkIGVudGl0eS5qc29uIHNjaGVtYTogJHtyZWxhdGl2ZVBhdGh9XFxuJHtjaGFsay55ZWxsb3coZXJyb3JNZXNzYWdlKX1gKSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgdGhpcy5yZWdpc3Rlcihqc29uLCB7IGRlZmVyU2VhcmNoVGV4dEpzb25Tb3VyY2VWYWxpZGF0aW9uOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMucmVnaXN0ZXJOb25FbnRpdHlUeXBlTW9kdWxlUGF0aHMoKTtcbiAgICBhd2FpdCB0aGlzLnZhbGlkYXRlQWxsUmVnaXN0ZXJlZFNlYXJjaFRleHRKc29uU291cmNlcygpO1xuXG4gICAgdGhpcy5pc0F1dG9sb2FkZWQgPSB0cnVlO1xuICB9XG5cbiAgc2NoZW1hVmFsaWRhdGUoanNvbjogdW5rbm93bikge1xuICAgIGNvbnN0IHJlc3VsdCA9IEVudGl0eUpzb25TY2hlbWEuc2FmZVBhcnNlKGpzb24pO1xuICAgIHJldHVybiByZXN1bHQuc3VjY2VzcyA/IG51bGwgOiByZXN1bHQuZXJyb3I7XG4gIH1cblxuICBhc3luYyByZWxvYWQoZG9TaWxlbnQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHRoaXMuZW50aXRpZXMuY2xlYXIoKTtcbiAgICB0aGlzLm1vZHVsZVBhdGhzLmNsZWFyKCk7XG4gICAgdGhpcy50YWJsZVNwZWNzLmNsZWFyKCk7XG4gICAgdGhpcy5pc0F1dG9sb2FkZWQgPSBmYWxzZTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmF1dG9sb2FkKGRvU2lsZW50KTtcbiAgfVxuXG4gIGFzeW5jIHJlZ2lzdGVyKFxuICAgIGpzb246IEVudGl0eUpzb24sXG4gICAgb3B0aW9uczogeyBkZWZlclNlYXJjaFRleHRKc29uU291cmNlVmFsaWRhdGlvbj86IGJvb2xlYW4gfSA9IHt9LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IEVudGl0eSB9ID0gYXdhaXQgaW1wb3J0KFwiLi9lbnRpdHlcIik7XG4gICAgY29uc3QgZW50aXR5ID0gbmV3IEVudGl0eShqc29uKTtcbiAgICBhd2FpdCBlbnRpdHkucmVnaXN0ZXJNb2R1bGVQYXRocygpO1xuICAgIGlmICghb3B0aW9ucy5kZWZlclNlYXJjaFRleHRKc29uU291cmNlVmFsaWRhdGlvbikge1xuICAgICAgYXdhaXQgdGhpcy52YWxpZGF0ZVNlYXJjaFRleHRKc29uU291cmNlcyhlbnRpdHkpO1xuICAgIH1cbiAgICBlbnRpdHkucmVnaXN0ZXJUYWJsZVNwZWNzKCk7XG4gICAgdGhpcy5lbnRpdGllcy5zZXQoanNvbi5pZCwgZW50aXR5KTtcbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXRlQWxsUmVnaXN0ZXJlZFNlYXJjaFRleHRKc29uU291cmNlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IGVudGl0eSBvZiB0aGlzLmVudGl0aWVzLnZhbHVlcygpKSB7XG4gICAgICBhd2FpdCB0aGlzLnZhbGlkYXRlU2VhcmNoVGV4dEpzb25Tb3VyY2VzKGVudGl0eSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZVNlYXJjaFRleHRKc29uU291cmNlcyhlbnRpdHk6IEVudGl0eSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHByb3BzQnlOYW1lID0gbmV3IE1hcChlbnRpdHkucHJvcHMubWFwKChwcm9wKSA9PiBbcHJvcC5uYW1lLCBwcm9wXSkpO1xuXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIGVudGl0eS5wcm9wcykge1xuICAgICAgaWYgKCFpc1NlYXJjaFRleHRQcm9wKHByb3ApKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IHNvdXJjZSBvZiBwcm9wLnNvdXJjZUNvbHVtbnMpIHtcbiAgICAgICAgY29uc3Qgc291cmNlUHJvcCA9IHByb3BzQnlOYW1lLmdldChzb3VyY2UubmFtZSk7XG4gICAgICAgIGlmICghc291cmNlUHJvcCB8fCBzb3VyY2VQcm9wLnR5cGUgIT09IFwianNvblwiKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB6b2RUeXBlID0gYXdhaXQgdGhpcy5yZXNvbHZlU2VhcmNoVGV4dEpzb25Tb3VyY2VUeXBlKGVudGl0eSwgc291cmNlUHJvcC5pZCk7XG4gICAgICAgIGlmICghem9kVHlwZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBzZWFyY2hUZXh0IHNvdXJjZSBcIiR7c291cmNlLm5hbWV9XCLsnZgganNvbiDtg4DsnoUgXCIke3NvdXJjZVByb3AuaWR9XCLsnYQo66W8KSDroZzrk5ztlaAg7IiYIOyXhuyKteuLiOuLpC5gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzU2VhcmNoVGV4dEpzb25Tb3VyY2Vab2RUeXBlKHpvZFR5cGUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYHNlYXJjaFRleHQgc291cmNlIFwiJHtzb3VyY2UubmFtZX1cIuydmCBqc29uIO2DgOyehSBcIiR7c291cmNlUHJvcC5pZH1cIuydgCjripQpIHVud3JhcCDtm4Qgei5hcnJheSh6LnN0cmluZygpKSDsnbTslrTslbwg7ZWp64uI64ukLmAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZVNlYXJjaFRleHRKc29uU291cmNlVHlwZShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICB0eXBlSWQ6IHN0cmluZyxcbiAgKTogUHJvbWlzZTx6LlpvZFR5cGVBbnkgfCBudWxsPiB7XG4gICAgY29uc3QgbG9jYWxUeXBlID0gZW50aXR5LnR5cGVzW3R5cGVJZF07XG4gICAgaWYgKGxvY2FsVHlwZSBpbnN0YW5jZW9mIHouWm9kVHlwZSkge1xuICAgICAgcmV0dXJuIGxvY2FsVHlwZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJlZ2lzdGVyZWRFbnRpdHkgb2YgdGhpcy5lbnRpdGllcy52YWx1ZXMoKSkge1xuICAgICAgY29uc3QgcmVnaXN0ZXJlZFR5cGUgPSByZWdpc3RlcmVkRW50aXR5LnR5cGVzW3R5cGVJZF07XG4gICAgICBpZiAocmVnaXN0ZXJlZFR5cGUgaW5zdGFuY2VvZiB6LlpvZFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHJlZ2lzdGVyZWRUeXBlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlSWQgPT09IFwiU29uYW11RmlsZVwiKSB7XG4gICAgICByZXR1cm4gU29uYW11RmlsZVNjaGVtYTtcbiAgICB9XG4gICAgaWYgKHR5cGVJZCA9PT0gXCJTb25hbXVGaWxlW11cIikge1xuICAgICAgcmV0dXJuIFNvbmFtdUZpbGVBcnJheVNjaGVtYTtcbiAgICB9XG5cbiAgICBjb25zdCBtb2R1bGVQYXRoID0gdGhpcy5tb2R1bGVQYXRocy5nZXQodHlwZUlkKTtcbiAgICBpZiAoIW1vZHVsZVBhdGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZHVsZUZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgU29uYW11LmFwaVJvb3RQYXRoLFxuICAgICAgcnVudGltZVBhdGgoYGRpc3QvYXBwbGljYXRpb24vJHttb2R1bGVQYXRofS5qc2ApLFxuICAgICk7XG4gICAgY29uc3QgaW1wb3J0ZWRNZW1iZXJzID0gYXdhaXQgaW1wb3J0TWVtYmVyczx1bmtub3duPihtb2R1bGVGaWxlUGF0aCk7XG4gICAgY29uc3QgbWF0Y2hlZCA9IGltcG9ydGVkTWVtYmVycy5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gdHlwZUlkKTtcbiAgICBpZiAoIW1hdGNoZWQgfHwgIShtYXRjaGVkLnZhbHVlIGluc3RhbmNlb2Ygei5ab2RUeXBlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoZWQudmFsdWU7XG4gIH1cblxuICBnZXQoZW50aXR5SWQ6IHN0cmluZyk6IEVudGl0eSB7XG4gICAgY29uc3QgZW50aXR5ID0gdGhpcy5lbnRpdGllcy5nZXQoZW50aXR5SWQpO1xuICAgIGlmIChlbnRpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDsobTsnqztlZjsp4Ag7JWK64qUIEVudGl0eSDsmpTssq0gJHtlbnRpdHlJZH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW50aXR5O1xuICB9XG5cbiAgZ2V0QnlUYWJsZSh0YWJsZTogc3RyaW5nKTogRW50aXR5IHtcbiAgICBjb25zdCBlbnRpdHkgPSBBcnJheS5mcm9tKHRoaXMuZW50aXRpZXMudmFsdWVzKCkpLmZpbmQoKGVudGl0eSkgPT4gZW50aXR5LnRhYmxlID09PSB0YWJsZSk7XG4gICAgaWYgKGVudGl0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYOyhtOyerO2VmOyngCDslYrripQgRW50aXR5IOyalOyyrSAke3RhYmxlfWApO1xuICAgIH1cblxuICAgIHJldHVybiBlbnRpdHk7XG4gIH1cblxuICBleGlzdHMoZW50aXR5SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuZW50aXRpZXMuZ2V0KGVudGl0eUlkKTtcbiAgICByZXR1cm4gZW50aXR5ICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRBbGxJZHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKEVudGl0eU1hbmFnZXIuZW50aXRpZXMua2V5cygpKS50b1NvcnRlZCgpO1xuICB9XG5cbiAgZ2V0QWxsRW50aXRpZXMoKTogRW50aXR5W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZW50aXRpZXMudmFsdWVzKCkpO1xuICB9XG5cbiAgZ2V0QWxsUGFyZW50SWRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxJZHMoKS5maWx0ZXIoKGVudGl0eUlkKSA9PiB7XG4gICAgICBjb25zdCBlbnRpdHkgPSB0aGlzLmdldChlbnRpdHlJZCk7XG4gICAgICByZXR1cm4gZW50aXR5LnBhcmVudElkID09PSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDaGlsZHJlbklkcyhwYXJlbnRJZDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmdldEFsbElkcygpLmZpbHRlcigoZW50aXR5SWQpID0+IHtcbiAgICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuZ2V0KGVudGl0eUlkKTtcbiAgICAgIHJldHVybiBlbnRpdHkucGFyZW50SWQgPT09IHBhcmVudElkO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0TW9kdWxlUGF0aChrZXk6IHN0cmluZywgbW9kdWxlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gY29uc29sZS5kZWJ1ZyhjaGFsay5jeWFuKGBzZXRNb2R1bGVQYXRoIDo6ICR7a2V5fSA6OiAke21vZHVsZVBhdGh9YCkpO1xuICAgIHRoaXMubW9kdWxlUGF0aHMuc2V0KGtleSwgbW9kdWxlUGF0aCk7XG4gIH1cblxuICBnZXRNb2R1bGVQYXRoKGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtb2R1bGVQYXRoID0gdGhpcy5tb2R1bGVQYXRocy5nZXQoa2V5KTtcbiAgICBpZiAobW9kdWxlUGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYOyhtOyerO2VmOyngCDslYrripQg66qo65OIIO2MqOyKpCDsmpTssq0gJHtrZXl9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZHVsZVBhdGg7XG4gIH1cblxuICBzZXRUYWJsZVNwZWModGFibGVTcGVjOiBUYWJsZVNwZWMpIHtcbiAgICB0aGlzLnRhYmxlU3BlY3Muc2V0KHRhYmxlU3BlYy5uYW1lLCB0YWJsZVNwZWMpO1xuICB9XG5cbiAgZ2V0VGFibGVTcGVjKGtleTogc3RyaW5nKTogVGFibGVTcGVjIHtcbiAgICBjb25zdCB0YWJsZVNwZWMgPSB0aGlzLnRhYmxlU3BlY3MuZ2V0KGtleSk7XG4gICAgaWYgKHRhYmxlU3BlYyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYOyhtOyerO2VmOyngCDslYrripQg7YWM7J2067iUIOyKpO2OmSDsmpTssq0gJHtrZXl9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhYmxlU3BlYztcbiAgfVxuXG4gIGdldE5hbWVzRnJvbUlkKGVudGl0eUlkOiBzdHJpbmcpOiBFbnRpdHlOYW1lc1JlY29yZCB7XG4gICAgLy8gZW50aXR5SWTqsIAg64uo67O17IiYIOuPme2YlSDri6jslrTsnbgg6rK97JqwIExpc3Qg67aZ7Jes7IScIOyDneyEsVxuICAgIGNvbnN0IHBsdXJhbGl6ZWQgPVxuICAgICAgaW5mbGVjdGlvbi5wbHVyYWxpemUoZW50aXR5SWQpID09PSBlbnRpdHlJZFxuICAgICAgICA/IGAke2VudGl0eUlkfUxpc3RgXG4gICAgICAgIDogaW5mbGVjdGlvbi5wbHVyYWxpemUoZW50aXR5SWQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZzOiBpbmZsZWN0aW9uLmRhc2hlcml6ZShpbmZsZWN0aW9uLnVuZGVyc2NvcmUoZW50aXR5SWQpKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgZnNQbHVyYWw6IGluZmxlY3Rpb24uZGFzaGVyaXplKGluZmxlY3Rpb24udW5kZXJzY29yZShwbHVyYWxpemVkKSkudG9Mb3dlckNhc2UoKSxcbiAgICAgIGNhbWVsOiBpbmZsZWN0aW9uLmNhbWVsaXplKGVudGl0eUlkLCB0cnVlKSxcbiAgICAgIGNhbWVsUGx1cmFsOiBpbmZsZWN0aW9uLmNhbWVsaXplKHBsdXJhbGl6ZWQsIHRydWUpLFxuICAgICAgY2FwaXRhbDogZW50aXR5SWQsXG4gICAgICBjYXBpdGFsUGx1cmFsOiBwbHVyYWxpemVkLFxuICAgICAgdXBwZXI6IGVudGl0eUlkLnRvVXBwZXJDYXNlKCksXG4gICAgICBjb25zdGFudDogaW5mbGVjdGlvbi51bmRlcnNjb3JlKGVudGl0eUlkKS50b1VwcGVyQ2FzZSgpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRW50aXR5SWTripQgTW9kZWzsnYQg7KCc7Jm47ZWcIFBhc2NhbENhc2Ug7J2066aE7J6F64uI64ukLiAoZXguIFwiVXNlclwiKVxuICAgKiBAcGFyYW0gZmlsZVBhdGhcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldEVudGl0eUlkRnJvbVBhdGgoZmlsZVBhdGg6IEFic29sdXRlUGF0aCk6IHN0cmluZyB7XG4gICAgY29uc3QgZmlsZU5hbWUgPSBwYXRoLmJhc2VuYW1lKGZpbGVQYXRoKTtcbiAgICBjb25zdCBzdXBwb3J0ZWRTdWZmaXhlcyA9IFtcIi5tb2RlbC50c1wiLCBcIi5tb2RlbC5qc1wiLCBcIi5lbnRpdHkuanNvblwiLCBcIi5mcmFtZS50c1wiLCBcIi5mcmFtZS5qc1wiXTtcbiAgICBjb25zdCBtYXRjaGVkU3VmZml4ID0gc3VwcG9ydGVkU3VmZml4ZXMuZmluZCgoc3VmZml4KSA9PiBmaWxlTmFtZS5lbmRzV2l0aChzdWZmaXgpKTtcblxuICAgIGFzc2VydChtYXRjaGVkU3VmZml4LCBg7KeA7JuQ7ZWY7KeAIOyViuuKlCBlbnRpdHkg6rK966Gc7J6F64uI64ukOiAke2ZpbGVQYXRofWApO1xuXG4gICAgY29uc3QgZW50aXR5QmFzZU5hbWUgPSBmaWxlTmFtZS5zbGljZSgwLCAtbWF0Y2hlZFN1ZmZpeC5sZW5ndGgpO1xuICAgIGFzc2VydChlbnRpdHlCYXNlTmFtZS5sZW5ndGggPiAwLCBgRW50aXR5SWTrpbwg6rOE7IKw7ZWgIOyImCDsl4bripQg6rK966Gc7J6F64uI64ukOiAke2ZpbGVQYXRofWApO1xuXG4gICAgcmV0dXJuIGluZmxlY3Rpb24uY2FtZWxpemUoZW50aXR5QmFzZU5hbWUucmVwbGFjZSgvLS9nLCBcIl9cIikpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWdpc3Rlck5vbkVudGl0eVR5cGVNb2R1bGVQYXRocygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0eXBlUGF0aHNQYXR0ZXJucyA9IFtcbiAgICAgIHBhdGguam9pbihTb25hbXUuYXBpUm9vdFBhdGgsIHJ1bnRpbWVQYXRoKFwic3JjL2FwcGxpY2F0aW9uLyoqLyoudHlwZXMudHNcIikpLFxuICAgICAgcGF0aC5qb2luKFNvbmFtdS5hcGlSb290UGF0aCwgcnVudGltZVBhdGgoXCJzcmMvYXBwbGljYXRpb24vKiovKi5nZW5lcmF0ZWQudHNcIikpLFxuICAgIF07XG4gICAgY29uc3QgdHlwZVBhdGhzID0gKFxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwodHlwZVBhdGhzUGF0dGVybnMubWFwKChwYXR0ZXJuKSA9PiBnbG9iQXN5bmMocGF0dGVybikpKVxuICAgICkuZmxhdCgpO1xuXG4gICAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiB0eXBlUGF0aHMpIHtcbiAgICAgIGNvbnN0IG1vZHVsZVBhdGggPSB0aGlzLmdldE1vZHVsZVBhdGhGcm9tVHlwZUZpbGVQYXRoKGZpbGVQYXRoKTtcbiAgICAgIGNvbnN0IGltcG9ydGVkTWVtYmVycyA9IGF3YWl0IGltcG9ydE1lbWJlcnM8dW5rbm93bj4oZmlsZVBhdGgpO1xuICAgICAgZm9yIChjb25zdCB7IG5hbWUsIHZhbHVlIH0gb2YgaW1wb3J0ZWRNZW1iZXJzKSB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIHouWm9kVHlwZSkge1xuICAgICAgICAgIHRoaXMuc2V0TW9kdWxlUGF0aChuYW1lLCBtb2R1bGVQYXRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TW9kdWxlUGF0aEZyb21UeXBlRmlsZVBhdGgoZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBmaWxlUGF0aC5yZXBsYWNlQWxsKFwiXFxcXFwiLCBcIi9cIik7XG4gICAgY29uc3QgbWF0Y2hlZCA9IG5vcm1hbGl6ZWRQYXRoLm1hdGNoKC9cXC8oPzpzcmN8ZGlzdClcXC9hcHBsaWNhdGlvblxcLyguKylcXC4oPzp0c3xqcykkLyk7XG5cbiAgICBpZiAoIW1hdGNoZWQ/LlsxXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDtg4DsnoUg7YyM7J287J2YIOuqqOuTiCDqsr3roZzrpbwg6rOE7IKw7ZWgIOyImCDsl4bsirXri4jri6Q6ICR7ZmlsZVBhdGh9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoZWRbMV07XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEVudGl0eU1hbmFnZXIgPSBuZXcgRW50aXR5TWFuYWdlckNsYXNzKCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Y0FRdUM7YUFPZjttQkFFeUI7aUJBQ0U7a0JBRUQ7Q0FZNUMscUJBQU4sTUFBeUI7RUFDdkIsQUFBUSxXQUFnQyxJQUFJLEtBQUs7RUFDakQsQUFBTyxjQUFtQyxJQUFJLEtBQUs7RUFDbkQsQUFBUSxhQUFxQyxJQUFJLEtBQUs7RUFDdEQsQUFBTyxlQUF3QjtFQUcvQixNQUFNLFNBQVMsSUFBYSxPQUFPO0FBQ2pDLE9BQUksS0FBSyxjQUFjO0FBQ3JCOztHQUVGLE1BQU0sY0FBYyxLQUFLLEtBQUssT0FBTyxhQUFhLG9DQUFvQztBQUV0RixjQUFXLE1BQU0sUUFBUSxLQUFLLEtBQUssUUFBUSxZQUFZLENBQUMsRUFBRTtJQUN4RCxNQUFNLE9BQU8sS0FBSyxPQUFPLE1BQU0sU0FBUyxLQUFLLEVBQUUsVUFBVSxDQUFDO0lBRzFELE1BQU0sUUFBUSxLQUFLLGVB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
package/dist/index.js CHANGED
@@ -1,6 +1,5 @@
1
1
  import { asArray, init_model, objToMap } from "./utils/model.js";
2
2
  import { DB, DBClass, init_db } from "./database/db.js";
3
- import { ingestAuditEvent } from "./auth/audit-log-ingestor.js";
4
3
  import { BASE_FIELD_MAPPINGS, betterAuthV1 } from "./auth/better-auth-entities.js";
5
4
  import { CachePresets, applyCacheHeaders, buildCacheControl, init_cache_control } from "./cache-control/cache-control.js";
6
5
  import { CompressPresets, init_compress, isCompressDisabled, toFastifyCompressOption } from "./compress/compress.js";
@@ -22,6 +21,8 @@ import { JoinClauseGroup, Puri, ResolvedPuri, WhereGroup, init_puri } from "./da
22
21
  import { PuriTransactionWrapper, PuriWrapper, init_puri_wrapper } from "./database/puri-wrapper.js";
23
22
  import { BaseModel, BaseModelClass, init_base_model } from "./database/base-model.js";
24
23
  import { api, init_decorators, registeredApis, stream, transactional, upload } from "./api/decorators.js";
24
+ import { ingestAuditEvent } from "./auth/audit-log-ingestor.js";
25
+ import { sonamuAuditLog } from "./auth/audit-log/plugin.js";
25
26
  import { generateBetterAuthEntities } from "./auth/auth-generator.js";
26
27
  import { sonamuKnexAdapter } from "./auth/knex-adapter.js";
27
28
  import { ADMIN_SCHEMA, admin } from "./auth/plugins/wrappers/admin.js";
@@ -85,5 +86,5 @@ init_model();
85
86
  init_utils();
86
87
 
87
88
  //#endregion
88
- export { ADMIN_SCHEMA, ANONYMOUS_SCHEMA, API_KEY_SCHEMA, AlreadyProcessedException, ApiParamType, BASE_FIELD_MAPPINGS, BUILT_IN_TYPE_IDS, BadRequestException, BaseFrameClass, BaseModel, BaseModelClass, CachePresets, CompressPresets, DB, DBClass, DuplicateRowException, Entity, EntityJsonSchema, EntityManager, FUZZY_OPERATORS, FixtureManager, FixtureManagerClass, GenerateOptions, InternalServerErrorException, JWT_SCHEMA, JoinClauseGroup, KnownOpclassValues, Migrator, Naite, NaiteClass, NaiteQuery, NaiteReporter, NormalPropSchema, NotFoundException, ORGANIZATION_SCHEMA, PASSKEY_SCHEMA, PHONE_NUMBER_SCHEMA, PathAndCode, PostgreSQLSchemaReader, Puri, PuriTransactionWrapper, PuriWrapper, RelationPropSchema, RenderingNode, ResolvedPuri, SSO_SCHEMA, ServiceUnavailableException, SoException, Sonamu, SonamuFileArraySchema, SonamuFileSchema, SonamuQueryMode, SonamuSemanticParams, TWO_FACTOR_SCHEMA, TargetNotFoundException, Template, TemplateKey, TemplateManager, TemplateManagerClass, TemplateOptions, USERNAME_SCHEMA, UnauthorizedException, UpsertBuilder, WhereGroup, ZodStringFormat, admin, anonymous, api, apiKey, applyCacheHeaders, asArray, assertDefined, assertExists, assertNotNull, betterAuthV1, buildCacheControl, cache, convertFastifyHeadersToStandard, createMockSSEFactory, createSSEFactory, defaultOperatorByPropType, defineConfig, differenceWith, exhaustive, findApiRootPath, findAppRootPath, generateAlterCode, generateBetterAuthEntities, generateCreateCode, getAlterIndexesTo, getDescription, getEnumDefValues, getEnumValues, getMigrationSetFromEntity, getSubsetFields, ingestAuditEvent, intersectionBy, isBelongsToOneRelationProp, isBigIntegerArrayProp, isBigIntegerProp, isBigIntegerSingleProp, isBooleanArrayProp, isBooleanProp, isBooleanSingleProp, isCompressDisabled, isCustomJoinClause, isDaemonServer, isDateArrayProp, isDateProp, isDateSingleProp, isDevelopment, isEnumArrayProp, isEnumDefWithCone, isEnumProp, isEnumSingleProp, isHasManyRelationProp, isHotReloadServer, isInDocker, isIntegerArrayProp, isIntegerProp, isIntegerSingleProp, isInternalSubsetField, isJsonProp, isKnexError, isLocal, isManyToManyRelationProp, isNumberArrayProp, isNumberProp, isNumberSingleProp, isNumericArrayProp, isNumericProp, isNumericSingleProp, isOneToOneRelationProp, isProduction, isRefField, isRelationProp, isRemote, isSearchTextJsonSourceZodType, isSearchTextProp, isSoException, isStaging, isStringArrayProp, isStringProp, isStringSingleProp, isSubsetDefWithCone, isTest, isTsVectorProp, isUuidArrayProp, isUuidProp, isUuidSingleProp, isVectorArrayProp, isVectorProp, isVectorSingleProp, isVirtualCodeProp, isVirtualProp, isVirtualQueryProp, jwt, loadConfig, merge, nonNullable, normalizeFilterQuery, normalizeSubsetField, objToMap, operatorsByPropType, organization, passkey, phoneNumber, registeredApis, setMigrationIndexDefaults, setupErrorHandler, sonamuKnexAdapter, sso, stream, toFastifyCompressOption, transactional, twoFactor, upload, username, validateSonamuFilters, withProp, withProps, workflow, zArrayable };
89
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2FwaS9iYXNlLWZyYW1lXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hcGkvY29uZmlnXCI7XG5leHBvcnQgdHlwZSAqIGZyb20gXCIuL2FwaS9jb250ZXh0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hcGkvZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXBpL3NvbmFtdVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXV0aFwiO1xuZXhwb3J0IHsgY2FjaGUgfSBmcm9tIFwiLi9jYWNoZS9kZWNvcmF0b3JcIjtcbmV4cG9ydCB0eXBlIHsgQ2FjaGVEZWNvcmF0b3JPcHRpb25zIH0gZnJvbSBcIi4vY2FjaGUvdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NhY2hlLWNvbnRyb2wvY2FjaGUtY29udHJvbFwiO1xuZXhwb3J0IHR5cGUgKiBmcm9tIFwiLi9jYWNoZS1jb250cm9sL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wcmVzcy9jb21wcmVzc1wiO1xuZXhwb3J0IHR5cGUgKiBmcm9tIFwiLi9jb21wcmVzcy90eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGF0YWJhc2UvYmFzZS1tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGF0YWJhc2UvYmFzZS1tb2RlbC50eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGF0YWJhc2UvZGJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlL3B1cmlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlL3B1cmkudHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlL3B1cmktc3Vic2V0LnR5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kYXRhYmFzZS9wdXJpLXdyYXBwZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlL3Vwc2VydC1idWlsZGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lbnRpdHkvZW50aXR5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V4Y2VwdGlvbnMvZXJyb3ItaGFuZGxlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXhjZXB0aW9ucy9zby1leGNlcHRpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9maWx0ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21pZ3JhdGlvbi9jb2RlLWdlbmVyYXRpb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL21pZ3JhdGlvbi9taWdyYXRpb24tc2V0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9taWdyYXRpb24vbWlncmF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21pZ3JhdGlvbi9wb3N0Z3Jlc3FsLXNjaGVtYS1yZWFkZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21pZ3JhdGlvbi90eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbmFpdGUvbmFpdGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL25haXRlL25haXRlLXJlcG9ydGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdHJlYW0vc3NlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90YXNrcy9kZWNvcmF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RlbXBsYXRlL3RlbXBsYXRlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZW1wbGF0ZS90ZW1wbGF0ZS1tYW5hZ2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXN0aW5nL2ZpeHR1cmUtbWFuYWdlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMvdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzL2NvbnRyb2xsZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzL21vZGVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlscy90eXBlLXV0aWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlscy91dGlsc1wiO1xuXG4vLyBleHBvcnQgKiBmcm9tIFwiLi9hcGkvY29kZS1jb252ZXJ0ZXJzXCI7XG4vLyBleHBvcnQgKiBmcm9tIFwiLi9zeW5jZXIvc3luY2VyXCI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkFNMEMifQ==
89
+ export { ADMIN_SCHEMA, ANONYMOUS_SCHEMA, API_KEY_SCHEMA, AlreadyProcessedException, ApiParamType, BASE_FIELD_MAPPINGS, BUILT_IN_TYPE_IDS, BadRequestException, BaseFrameClass, BaseModel, BaseModelClass, CachePresets, CompressPresets, DB, DBClass, DuplicateRowException, Entity, EntityJsonSchema, EntityManager, FUZZY_OPERATORS, FixtureManager, FixtureManagerClass, GenerateOptions, InternalServerErrorException, JWT_SCHEMA, JoinClauseGroup, KnownOpclassValues, Migrator, Naite, NaiteClass, NaiteQuery, NaiteReporter, NormalPropSchema, NotFoundException, ORGANIZATION_SCHEMA, PASSKEY_SCHEMA, PHONE_NUMBER_SCHEMA, PathAndCode, PostgreSQLSchemaReader, Puri, PuriTransactionWrapper, PuriWrapper, RelationPropSchema, RenderingNode, ResolvedPuri, SSO_SCHEMA, ServiceUnavailableException, SoException, Sonamu, SonamuFileArraySchema, SonamuFileSchema, SonamuQueryMode, SonamuSemanticParams, TWO_FACTOR_SCHEMA, TargetNotFoundException, Template, TemplateKey, TemplateManager, TemplateManagerClass, TemplateOptions, USERNAME_SCHEMA, UnauthorizedException, UpsertBuilder, WhereGroup, ZodStringFormat, admin, anonymous, api, apiKey, applyCacheHeaders, asArray, assertDefined, assertExists, assertNotNull, betterAuthV1, buildCacheControl, cache, convertFastifyHeadersToStandard, createMockSSEFactory, createSSEFactory, defaultOperatorByPropType, defineConfig, differenceWith, exhaustive, findApiRootPath, findAppRootPath, generateAlterCode, generateBetterAuthEntities, generateCreateCode, getAlterIndexesTo, getDescription, getEnumDefValues, getEnumValues, getMigrationSetFromEntity, getSubsetFields, ingestAuditEvent, intersectionBy, isBelongsToOneRelationProp, isBigIntegerArrayProp, isBigIntegerProp, isBigIntegerSingleProp, isBooleanArrayProp, isBooleanProp, isBooleanSingleProp, isCompressDisabled, isCustomJoinClause, isDaemonServer, isDateArrayProp, isDateProp, isDateSingleProp, isDevelopment, isEnumArrayProp, isEnumDefWithCone, isEnumProp, isEnumSingleProp, isHasManyRelationProp, isHotReloadServer, isInDocker, isIntegerArrayProp, isIntegerProp, isIntegerSingleProp, isInternalSubsetField, isJsonProp, isKnexError, isLocal, isManyToManyRelationProp, isNumberArrayProp, isNumberProp, isNumberSingleProp, isNumericArrayProp, isNumericProp, isNumericSingleProp, isOneToOneRelationProp, isProduction, isRefField, isRelationProp, isRemote, isSearchTextJsonSourceZodType, isSearchTextProp, isSoException, isStaging, isStringArrayProp, isStringProp, isStringSingleProp, isSubsetDefWithCone, isTest, isTsVectorProp, isUuidArrayProp, isUuidProp, isUuidSingleProp, isVectorArrayProp, isVectorProp, isVectorSingleProp, isVirtualCodeProp, isVirtualProp, isVirtualQueryProp, jwt, loadConfig, merge, nonNullable, normalizeFilterQuery, normalizeSubsetField, objToMap, operatorsByPropType, organization, passkey, phoneNumber, registeredApis, setMigrationIndexDefaults, setupErrorHandler, sonamuAuditLog, sonamuKnexAdapter, sso, stream, toFastifyCompressOption, transactional, twoFactor, upload, username, validateSonamuFilters, withProp, withProps, workflow, zArrayable };
90
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2FwaS9iYXNlLWZyYW1lXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hcGkvY29uZmlnXCI7XG5leHBvcnQgdHlwZSAqIGZyb20gXCIuL2FwaS9jb250ZXh0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hcGkvZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXBpL3NvbmFtdVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXV0aFwiO1xuZXhwb3J0IHsgY2FjaGUgfSBmcm9tIFwiLi9jYWNoZS9kZWNvcmF0b3JcIjtcbmV4cG9ydCB0eXBlIHsgQ2FjaGVEZWNvcmF0b3JPcHRpb25zIH0gZnJvbSBcIi4vY2FjaGUvdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NhY2hlLWNvbnRyb2wvY2FjaGUtY29udHJvbFwiO1xuZXhwb3J0IHR5cGUgKiBmcm9tIFwiLi9jYWNoZS1jb250cm9sL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wcmVzcy9jb21wcmVzc1wiO1xuZXhwb3J0IHR5cGUgKiBmcm9tIFwiLi9jb21wcmVzcy90eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGF0YWJhc2UvYmFzZS1tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGF0YWJhc2UvYmFzZS1tb2RlbC50eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGF0YWJhc2UvZGJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlL3B1cmlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlL3B1cmkudHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlL3B1cmktc3Vic2V0LnR5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kYXRhYmFzZS9wdXJpLXdyYXBwZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlL3Vwc2VydC1idWlsZGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lbnRpdHkvZW50aXR5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V4Y2VwdGlvbnMvZXJyb3ItaGFuZGxlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXhjZXB0aW9ucy9zby1leGNlcHRpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9maWx0ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21pZ3JhdGlvbi9jb2RlLWdlbmVyYXRpb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL21pZ3JhdGlvbi9taWdyYXRpb24tc2V0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9taWdyYXRpb24vbWlncmF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21pZ3JhdGlvbi9wb3N0Z3Jlc3FsLXNjaGVtYS1yZWFkZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21pZ3JhdGlvbi90eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbmFpdGUvbmFpdGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL25haXRlL25haXRlLXJlcG9ydGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdHJlYW0vc3NlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90YXNrcy9kZWNvcmF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RlbXBsYXRlL3RlbXBsYXRlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZW1wbGF0ZS90ZW1wbGF0ZS1tYW5hZ2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXN0aW5nL2ZpeHR1cmUtbWFuYWdlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMvdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzL2NvbnRyb2xsZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzL21vZGVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlscy90eXBlLXV0aWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlscy91dGlsc1wiO1xuXG4vLyBleHBvcnQgKiBmcm9tIFwiLi9hcGkvY29kZS1jb252ZXJ0ZXJzXCI7XG4vLyBleHBvcnQgKiBmcm9tIFwiLi9zeW5jZXIvc3luY2VyXCI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0JBTTBDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"code-generation.d.ts","sourceRoot":"","sources":["../../src/migration/code-generation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAKjC,OAAO,EAEL,KAAK,gBAAgB,EAGrB,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AA0hDxB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,cAAc,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE;SAG/E,cAAc,EAAE;UACf,cAAc,EAAE;EAuC/B;AAWD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAoB/E;AAuHD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAS7F;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,YAAY,EACvB,KAAK,EAAE,YAAY,EACnB,SAAS,CAAC,EAAE,IAAI,GACf,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA0G7B"}
1
+ {"version":3,"file":"code-generation.d.ts","sourceRoot":"","sources":["../../src/migration/code-generation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAKjC,OAAO,EAEL,KAAK,gBAAgB,EAGrB,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AAqhDxB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,cAAc,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE;SAG/E,cAAc,EAAE;UACf,cAAc,EAAE;EAuC/B;AAWD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAoB/E;AAuHD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAS7F;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,YAAY,EACvB,KAAK,EAAE,YAAY,EACnB,SAAS,CAAC,EAAE,IAAI,GACf,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA0G7B"}