sonamu 0.9.9 → 0.9.11

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 (82) hide show
  1. package/dist/ai/agents/agent.d.ts.map +1 -1
  2. package/dist/ai/agents/agent.js +4 -2
  3. package/dist/ai/providers/rtzr/api.d.ts +1 -1
  4. package/dist/api/decorators.d.ts +0 -1
  5. package/dist/api/decorators.d.ts.map +1 -1
  6. package/dist/api/decorators.js +8 -6
  7. package/dist/api/sonamu.d.ts.map +1 -1
  8. package/dist/api/sonamu.js +123 -12
  9. package/dist/api/websocket-helpers.d.ts +1 -3
  10. package/dist/api/websocket-helpers.d.ts.map +1 -1
  11. package/dist/api/websocket-helpers.js +2 -15
  12. package/dist/stream/index.d.ts +3 -0
  13. package/dist/stream/index.d.ts.map +1 -1
  14. package/dist/stream/index.js +8 -2
  15. package/dist/stream/ws-core.d.ts +1 -0
  16. package/dist/stream/ws-core.d.ts.map +1 -1
  17. package/dist/stream/ws-delivery.d.ts +8 -0
  18. package/dist/stream/ws-delivery.d.ts.map +1 -1
  19. package/dist/stream/ws-delivery.js +160 -14
  20. package/dist/stream/ws-local-connection-store.d.ts +2 -0
  21. package/dist/stream/ws-local-connection-store.d.ts.map +1 -1
  22. package/dist/stream/ws-local-connection-store.js +21 -1
  23. package/dist/stream/ws-registry.d.ts +6 -2
  24. package/dist/stream/ws-registry.d.ts.map +1 -1
  25. package/dist/stream/ws-registry.js +170 -6
  26. package/dist/stream/ws-telemetry-memory.d.ts +28 -0
  27. package/dist/stream/ws-telemetry-memory.d.ts.map +1 -0
  28. package/dist/stream/ws-telemetry-memory.js +180 -0
  29. package/dist/stream/ws-telemetry-trace.d.ts +12 -0
  30. package/dist/stream/ws-telemetry-trace.d.ts.map +1 -0
  31. package/dist/stream/ws-telemetry-trace.js +41 -0
  32. package/dist/stream/ws-telemetry.d.ts +509 -0
  33. package/dist/stream/ws-telemetry.d.ts.map +1 -0
  34. package/dist/stream/ws-telemetry.js +931 -0
  35. package/dist/stream/ws.d.ts +10 -3
  36. package/dist/stream/ws.d.ts.map +1 -1
  37. package/dist/stream/ws.js +306 -27
  38. package/dist/syncer/file-patterns.js +1 -1
  39. package/dist/syncer/syncer.d.ts +1 -1
  40. package/dist/syncer/syncer.d.ts.map +1 -1
  41. package/dist/syncer/syncer.js +7 -4
  42. package/dist/template/template.d.ts +1 -2
  43. package/dist/template/template.d.ts.map +1 -1
  44. package/dist/template/template.js +3 -4
  45. package/dist/template/zod-converter.d.ts +4 -4
  46. package/dist/testing/dev-vitest-manager.d.ts +1 -1
  47. package/dist/testing/dev-vitest-manager.js +2 -2
  48. package/dist/types/types.d.ts +20 -6
  49. package/dist/types/types.d.ts.map +1 -1
  50. package/dist/types/types.js +2 -2
  51. package/dist/ui-web/assets/{index-BmThfg-s.js → index-Df8q-fhb.js} +45 -45
  52. package/dist/ui-web/index.html +1 -1
  53. package/dist/utils/class-name.d.ts +6 -0
  54. package/dist/utils/class-name.d.ts.map +1 -0
  55. package/dist/utils/class-name.js +19 -0
  56. package/package.json +4 -4
  57. package/src/ai/agents/agent.ts +2 -1
  58. package/src/api/__tests__/sonamu.websocket.test.ts +84 -10
  59. package/src/api/decorators.ts +6 -6
  60. package/src/api/sonamu.ts +142 -7
  61. package/src/api/websocket-helpers.ts +2 -28
  62. package/src/shared/app.shared.ts.txt +8 -7
  63. package/src/shared/web.shared.ts.txt +8 -7
  64. package/src/skills/sonamu/testing-devrunner.md +1 -1
  65. package/src/stream/__tests__/ws-telemetry.test.ts +821 -0
  66. package/src/stream/__tests__/ws.test.ts +362 -2
  67. package/src/stream/index.ts +3 -0
  68. package/src/stream/ws-core.ts +2 -0
  69. package/src/stream/ws-delivery.ts +161 -19
  70. package/src/stream/ws-local-connection-store.ts +33 -0
  71. package/src/stream/ws-registry.ts +186 -5
  72. package/src/stream/ws-telemetry-memory.ts +246 -0
  73. package/src/stream/ws-telemetry-trace.ts +52 -0
  74. package/src/stream/ws-telemetry.ts +1772 -0
  75. package/src/stream/ws.ts +332 -34
  76. package/src/syncer/file-patterns.ts +2 -2
  77. package/src/syncer/syncer.ts +8 -4
  78. package/src/template/__tests__/services.template.websocket.test.ts +2 -0
  79. package/src/template/template.ts +2 -3
  80. package/src/testing/dev-vitest-manager.ts +1 -1
  81. package/src/types/types.ts +18 -2
  82. package/src/utils/class-name.ts +12 -0
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/agent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAA6B,MAAM,wBAAwB,CAAC;AAG9E,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,MAAM,IAAI,CAAC;AAK9C,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,oBAAoB,EAC1B,MAAM,SAAS,CAAC;AAKjB,qBAAa,cAAc,CAAC,MAAM;aAKJ,SAAS,EAAE,MAAM;IAJ7C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,OAAO,CAAC,IAAI,CAAmC;gBAEnB,SAAS,GAAE,MAA8B;IAIrE,IAAW,KAAK,uBAEf;IAED,SAAS,KAAK,OAAO,yBAkBpB;IAED,IAAW,KAAK,IAAI,OAAO,CAE1B;IAEM,GAAG,CAAC,OAAO,EAChB,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC;CAS/D;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,EAAE,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,IAEjF,QAAQ,cAAc,CAAC,OAAO,CAAC,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,UAuC7F"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/agent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAA6B,MAAM,wBAAwB,CAAC;AAG9E,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,MAAM,IAAI,CAAC;AAM9C,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,oBAAoB,EAC1B,MAAM,SAAS,CAAC;AAKjB,qBAAa,cAAc,CAAC,MAAM;aAKJ,SAAS,EAAE,MAAM;IAJ7C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,OAAO,CAAC,IAAI,CAAmC;gBAEnB,SAAS,GAAE,MAA8B;IAIrE,IAAW,KAAK,uBAEf;IAED,SAAS,KAAK,OAAO,yBAkBpB;IAED,IAAW,KAAK,IAAI,OAAO,CAE1B;IAEM,GAAG,CAAC,OAAO,EAChB,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC;CAS/D;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,EAAE,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,IAEjF,QAAQ,cAAc,CAAC,OAAO,CAAC,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,UAuC7F"}
@@ -1,4 +1,5 @@
1
1
  import { convertDomainToCategory, init_category } from "../../logger/category.js";
2
+ import { getModelNameFromClassName, init_class_name } from "../../utils/class-name.js";
2
3
  import { AsyncLocalStorage } from "async_hooks";
3
4
  import { tool } from "@ai-sdk/provider-utils";
4
5
  import { getLogger } from "@logtape/logtape";
@@ -7,6 +8,7 @@ import inflection from "inflection";
7
8
 
8
9
  //#region src/ai/agents/agent.ts
9
10
  init_category();
11
+ init_class_name();
10
12
  const toolDefinitions = [];
11
13
  var BaseAgentClass = class {
12
14
  logger;
@@ -52,7 +54,7 @@ function tools(options) {
52
54
  if (!(target instanceof BaseAgentClass)) {
53
55
  throw new Error("Target must be a subclass of BaseAgentClass");
54
56
  }
55
- const modelName = target.constructor.name.match(/(.+)Class$/)?.[1];
57
+ const modelName = getModelNameFromClassName(target.constructor.name);
56
58
  const methodName = propertyKey;
57
59
  const originalMethod = descriptor.value;
58
60
  const method = async function(...args) {
@@ -80,4 +82,4 @@ function tools(options) {
80
82
 
81
83
  //#endregion
82
84
  export { BaseAgentClass, tools };
83
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJuYW1lcyI6WyJ0b29sRGVmaW5pdGlvbnM6IFJlZ2lzdGVyZWRUb29sRGVmaW5pdGlvbltdIiwiYWdlbnROYW1lOiBzdHJpbmciXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWkvYWdlbnRzL2FnZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jTG9jYWxTdG9yYWdlIH0gZnJvbSBcImFzeW5jX2hvb2tzXCI7XG5cbmltcG9ydCB7IHR5cGUgVG9vbCwgdHlwZSBUb29sRXhlY3V0aW9uT3B0aW9ucyB9IGZyb20gXCJAYWktc2RrL3Byb3ZpZGVyLXV0aWxzXCI7XG5pbXBvcnQgeyB0b29sIH0gZnJvbSBcIkBhaS1zZGsvcHJvdmlkZXItdXRpbHNcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIEFnZW50LCB0eXBlIFRvb2xTZXQgfSBmcm9tIFwiYWlcIjtcbmltcG9ydCB7IFRvb2xMb29wQWdlbnQgfSBmcm9tIFwiYWlcIjtcbmltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5cbmltcG9ydCB7IGNvbnZlcnREb21haW5Ub0NhdGVnb3J5IH0gZnJvbSBcIi4uLy4uL2xvZ2dlci9jYXRlZ29yeVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBBZ2VudENvbmZpZyxcbiAgdHlwZSBSZWdpc3RlcmVkVG9vbERlZmluaXRpb24sXG4gIHR5cGUgVG9vbERlY29yYXRvck9wdGlvbnMsXG59IGZyb20gXCIuL3R5cGVzXCI7XG5cbmNvbnN0IHRvb2xEZWZpbml0aW9uczogUmVnaXN0ZXJlZFRvb2xEZWZpbml0aW9uW10gPSBbXTtcblxuLy8gVE9ETyhIYXplLCAyNTEyMDUpOiDthY3siqTtirjqsIAg7JWE64uMIHN0cnVjdHVyZWQgb3V0cHV07J28IOqyveyasOyXkCDrjIDtlZwg7KeA7JuQ7J20IO2VhOyalFxuZXhwb3J0IGNsYXNzIEJhc2VBZ2VudENsYXNzPFRTdG9yZT4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXI7XG5cbiAgcHJpdmF0ZSBfYWxzID0gbmV3IEFzeW5jTG9jYWxTdG9yYWdlPFRTdG9yZT4oKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgYWdlbnROYW1lOiBzdHJpbmcgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWUpIHtcbiAgICB0aGlzLmxvZ2dlciA9IGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLmFnZW50TmFtZSwgXCJhZ2VudFwiKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0b3JlKCkge1xuICAgIHJldHVybiB0aGlzLl9hbHMuZ2V0U3RvcmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdG9vbFNldCgpIHtcbiAgICByZXR1cm4gdG9vbERlZmluaXRpb25zXG4gICAgICAuZmlsdGVyKChkZWYpID0+IGRlZi5mcm9tID09PSB0aGlzLmNvbnN0cnVjdG9yLm5hbWUpXG4gICAgICAucmVkdWNlPFJlY29yZDxzdHJpbmcsIFRvb2w+PigoYWNjLCBkZWYpID0+IHtcbiAgICAgICAgYWNjW2RlZi5uYW1lXSA9IHRvb2woe1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZWYuZGVzY3JpcHRpb24sXG4gICAgICAgICAgaW5wdXRTY2hlbWE6IGRlZi5zY2hlbWEuaW5wdXQsXG4gICAgICAgICAgb3V0cHV0U2NoZW1hOiBkZWYuc2NoZW1hLm91dHB1dCxcbiAgICAgICAgICBuZWVkc0FwcHJvdmFsOiBkZWYubmVlZHNBcHByb3ZhbCA/PyBmYWxzZSxcbiAgICAgICAgICB0b01vZGVsT3V0cHV0OiBkZWYudG9Nb2RlbE91dHB1dCxcbiAgICAgICAgICBwcm92aWRlck9wdGlvbnM6IGRlZi5wcm92aWRlck9wdGlvbnMsXG4gICAgICAgICAgZXhlY3V0ZTogKGlucHV0OiB1bmtub3duLCBvcHRpb25zOiBUb29sRXhlY3V0aW9uT3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgYm91bmQgPSBkZWYubWV0aG9kLmJpbmQodGhpcyk7XG4gICAgICAgICAgICByZXR1cm4gYm91bmQubGVuZ3RoID49IDIgPyBib3VuZChpbnB1dCwgb3B0aW9ucykgOiBib3VuZChpbnB1dCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRvb2xzKCk6IFRvb2xTZXQge1xuICAgIHJldHVybiB0aGlzLnRvb2xTZXQ7XG4gIH1cblxuICBwdWJsaWMgdXNlPFRSZXR1cm4+KFxuICAgIGNvbmZpZzogQWdlbnRDb25maWcsXG4gICAgaW5pdGlhbFN0YXR1czogVFN0b3JlLFxuICAgIGNhbGxiYWNrOiAoYWdlbnQ6IEFnZW50PG5ldmVyLCBUb29sU2V0PikgPT4gUHJvbWlzZTxUUmV0dXJuPixcbiAgKSB7XG4gICAgY29uc3QgYWdlbnQgPSBuZXcgVG9vbExvb3BBZ2VudCh7XG4gICAgICAuLi5jb25maWcsXG4gICAgICB0b29sczogdGhpcy50b29scyxcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLl9hbHMucnVuKGluaXRpYWxTdGF0dXMsICgpID0+IGNhbGxiYWNrKGFnZW50KSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvb2xzPElOUFVULCBPVVRQVVQgPSB1bmtub3duPihvcHRpb25zOiBUb29sRGVjb3JhdG9yT3B0aW9uczxJTlBVVCwgT1VUUFVUPikge1xuICBjb25zdCB7IG5hbWUsIGRlc2NyaXB0aW9uLCBzY2hlbWEsIG5lZWRzQXBwcm92YWwsIHRvTW9kZWxPdXRwdXQsIHByb3ZpZGVyT3B0aW9ucyB9ID0gb3B0aW9ucztcbiAgcmV0dXJuICh0YXJnZXQ6IEJhc2VBZ2VudENsYXNzPHVua25vd24+LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICBpZiAoISh0YXJnZXQgaW5zdGFuY2VvZiBCYXNlQWdlbnRDbGFzcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRhcmdldCBtdXN0IGJlIGEgc3ViY2xhc3Mgb2YgQmFzZUFnZW50Q2xhc3NcIik7XG4gICAgfVxuXG4gICAgY29uc3QgbW9kZWxOYW1lID0gdGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUubWF0Y2goLyguKylDbGFzcyQvKT8uWzFdO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgICBjb25zdCBtZXRob2QgPSBhc3luYyBmdW5jdGlvbiAodGhpczogQmFzZUFnZW50Q2xhc3M8dW5rbm93bj4sIC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJ0b29sczoge21vZGVsfS57bWV0aG9kfSB3aXRoIGFyZ3M6IHthcmdzfVwiLCB7XG4gICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgYXJncyxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgICBkZXNjcmlwdG9yLnZhbHVlID0gbWV0aG9kO1xuXG4gICAgY29uc3QgZGVmYXVsdFBhdGggPVxuICAgICAgbW9kZWxOYW1lICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBgJHtpbmZsZWN0aW9uLmNhbWVsaXplKFxuICAgICAgICAgICAgKG1vZGVsTmFtZSA/PyBcIlwiKS5yZXBsYWNlKC9Nb2RlbCQvLCBcIlwiKS5yZXBsYWNlKC9GcmFtZSQvLCBcIlwiKSxcbiAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgKX0uJHtpbmZsZWN0aW9uLmNhbWVsaXplKG1ldGhvZE5hbWUsIHRydWUpfWBcbiAgICAgICAgOiBpbmZsZWN0aW9uLmNhbWVsaXplKG1ldGhvZE5hbWUsIHRydWUpO1xuXG4gICAgdG9vbERlZmluaXRpb25zLnB1c2goe1xuICAgICAgbmFtZTogbmFtZSA/PyBkZWZhdWx0UGF0aCxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgc2NoZW1hLFxuICAgICAgbmVlZHNBcHByb3ZhbCxcbiAgICAgIHRvTW9kZWxPdXRwdXQsXG4gICAgICBwcm92aWRlck9wdGlvbnMsXG4gICAgICBtZXRob2QsXG4gICAgICBmcm9tOiB0YXJnZXQuY29uc3RydWN0b3IubmFtZSxcbiAgICB9KTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7ZUFVZ0U7QUFPaEUsTUFBTUEsa0JBQThDLEVBQUU7QUFHdEQsSUFBYSxpQkFBYixNQUFvQztDQUNsQyxBQUFtQjtDQUVuQixBQUFRLE9BQU8sSUFBSSxtQkFBMkI7Q0FFOUMsWUFBWSxBQUFnQkMsWUFBb0IsS0FBSyxZQUFZLE1BQU07RUFBM0M7QUFDMUIsT0FBSyxTQUFTLFVBQVUsd0JBQXdCLEtBQUssV0FBVyxRQUFRLENBQUM7O0NBRzNFLElBQVcsUUFBUTtBQUNqQixTQUFPLEtBQUssS0FBSyxVQUFVOztDQUc3QixJQUFjLFVBQVU7QUFDdEIsU0FBTyxnQkFDSixRQUFRLFFBQVEsSUFBSSxTQUFTLEtBQUssWUFBWSxLQUFLLENBQ25ELFFBQThCLEtBQUssUUFBUTtBQUMxQyxPQUFJLElBQUksUUFBUSxLQUFLO0lBQ25CLGFBQWEsSUFBSTtJQUNqQixhQUFhLElBQUksT0FBTztJQUN4QixjQUFjLElBQUksT0FBTztJQUN6QixlQUFlLElBQUksaUJBQWlCO0lBQ3BDLGVBQWUsSUFBSTtJQUNuQixpQkFBaUIsSUFBSTtJQUNyQixVQUFVLE9BQWdCLFlBQWtDO0tBQzFELE1BQU0sUUFBUSxJQUFJLE9BQU8sS0FBSyxLQUFLO0FBQ25DLFlBQU8sTUFBTSxVQUFVLElBQUksTUFBTSxPQUFPLFFBQVEsR0FBRyxNQUFNLE1BQU07O0lBRWxFLENBQUM7QUFDRixVQUFPO0tBQ04sRUFBRSxDQUFDOztDQUdWLElBQVcsUUFBaUI7QUFDMUIsU0FBTyxLQUFLOztDQUdkLEFBQU8sSUFDTCxRQUNBLGVBQ0EsVUFDQTtFQUNBLE1BQU0sUUFBUSxJQUFJLGNBQWM7R0FDOUIsR0FBRztHQUNILE9BQU8sS0FBSztHQUNiLENBQUM7QUFFRixTQUFPLEtBQUssS0FBSyxJQUFJLHFCQUFxQixTQUFTLE1BQU0sQ0FBQzs7O0FBSTlELFNBQWdCLE1BQStCLFNBQThDO0NBQzNGLE1BQU0sRUFBRSxNQUFNLGFBQWEsUUFBUSxlQUFlLGVBQWUsb0JBQW9CO0FBQ3JGLFNBQVEsUUFBaUMsYUFBcUIsZUFBbUM7QUFDL0YsTUFBSSxFQUFFLGtCQUFrQixpQkFBaUI7QUFDdkMsU0FBTSxJQUFJLE1BQU0sOENBQThDOztFQUdoRSxNQUFNLFlBQVksT0FBTyxZQUFZLEtBQUssTUFBTSxhQUFhLEdBQUc7RUFDaEUsTUFBTSxhQUFhO0VBRW5CLE1BQU0saUJBQWlCLFdBQVc7RUFDbEMsTUFBTSxTQUFTLGVBQStDLEdBQUcsTUFBaUI7QUFDaEYsUUFBSyxPQUFPLE1BQU0sNkNBQTZDO0lBQzdELE9BQU87SUFDUCxRQUFRO0lBQ1I7SUFDRCxDQUFDO0FBRUYsVUFBTyxlQUFlLE1BQU0sTUFBTSxLQUFLOztBQUV6QyxhQUFXLFFBQVE7RUFFbkIsTUFBTSxjQUNKLGNBQWMsWUFDVixHQUFHLFdBQVcsVUFDWCxhQUFhLElBQUksUUFBUSxVQUFVLEdBQUcsQ0FBQyxRQUFRLFVBQVUsR0FBRyxFQUM3RCxLQUNELENBQUMsR0FBRyxXQUFXLFNBQVMsWUFBWSxLQUFLLEtBQzFDLFdBQVcsU0FBUyxZQUFZLEtBQUs7QUFFM0Msa0JBQWdCLEtBQUs7R0FDbkIsTUFBTSxRQUFRO0dBQ2Q7R0FDQTtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0EsTUFBTSxPQUFPLFlBQVk7R0FDMUIsQ0FBQyJ9
85
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJuYW1lcyI6WyJ0b29sRGVmaW5pdGlvbnM6IFJlZ2lzdGVyZWRUb29sRGVmaW5pdGlvbltdIiwiYWdlbnROYW1lOiBzdHJpbmciXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWkvYWdlbnRzL2FnZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jTG9jYWxTdG9yYWdlIH0gZnJvbSBcImFzeW5jX2hvb2tzXCI7XG5cbmltcG9ydCB7IHR5cGUgVG9vbCwgdHlwZSBUb29sRXhlY3V0aW9uT3B0aW9ucyB9IGZyb20gXCJAYWktc2RrL3Byb3ZpZGVyLXV0aWxzXCI7XG5pbXBvcnQgeyB0b29sIH0gZnJvbSBcIkBhaS1zZGsvcHJvdmlkZXItdXRpbHNcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIEFnZW50LCB0eXBlIFRvb2xTZXQgfSBmcm9tIFwiYWlcIjtcbmltcG9ydCB7IFRvb2xMb29wQWdlbnQgfSBmcm9tIFwiYWlcIjtcbmltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5cbmltcG9ydCB7IGNvbnZlcnREb21haW5Ub0NhdGVnb3J5IH0gZnJvbSBcIi4uLy4uL2xvZ2dlci9jYXRlZ29yeVwiO1xuaW1wb3J0IHsgZ2V0TW9kZWxOYW1lRnJvbUNsYXNzTmFtZSB9IGZyb20gXCIuLi8uLi91dGlscy9jbGFzcy1uYW1lXCI7XG5pbXBvcnQge1xuICB0eXBlIEFnZW50Q29uZmlnLFxuICB0eXBlIFJlZ2lzdGVyZWRUb29sRGVmaW5pdGlvbixcbiAgdHlwZSBUb29sRGVjb3JhdG9yT3B0aW9ucyxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcblxuY29uc3QgdG9vbERlZmluaXRpb25zOiBSZWdpc3RlcmVkVG9vbERlZmluaXRpb25bXSA9IFtdO1xuXG4vLyBUT0RPKEhhemUsIDI1MTIwNSk6IO2FjeyKpO2KuOqwgCDslYTri4wgc3RydWN0dXJlZCBvdXRwdXTsnbwg6rK97Jqw7JeQIOuMgO2VnCDsp4Dsm5DsnbQg7ZWE7JqUXG5leHBvcnQgY2xhc3MgQmFzZUFnZW50Q2xhc3M8VFN0b3JlPiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBsb2dnZXI6IExvZ2dlcjtcblxuICBwcml2YXRlIF9hbHMgPSBuZXcgQXN5bmNMb2NhbFN0b3JhZ2U8VFN0b3JlPigpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBhZ2VudE5hbWU6IHN0cmluZyA9IHRoaXMuY29uc3RydWN0b3IubmFtZSkge1xuICAgIHRoaXMubG9nZ2VyID0gZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMuYWdlbnROYW1lLCBcImFnZW50XCIpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RvcmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Fscy5nZXRTdG9yZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0b29sU2V0KCkge1xuICAgIHJldHVybiB0b29sRGVmaW5pdGlvbnNcbiAgICAgIC5maWx0ZXIoKGRlZikgPT4gZGVmLmZyb20gPT09IHRoaXMuY29uc3RydWN0b3IubmFtZSlcbiAgICAgIC5yZWR1Y2U8UmVjb3JkPHN0cmluZywgVG9vbD4+KChhY2MsIGRlZikgPT4ge1xuICAgICAgICBhY2NbZGVmLm5hbWVdID0gdG9vbCh7XG4gICAgICAgICAgZGVzY3JpcHRpb246IGRlZi5kZXNjcmlwdGlvbixcbiAgICAgICAgICBpbnB1dFNjaGVtYTogZGVmLnNjaGVtYS5pbnB1dCxcbiAgICAgICAgICBvdXRwdXRTY2hlbWE6IGRlZi5zY2hlbWEub3V0cHV0LFxuICAgICAgICAgIG5lZWRzQXBwcm92YWw6IGRlZi5uZWVkc0FwcHJvdmFsID8/IGZhbHNlLFxuICAgICAgICAgIHRvTW9kZWxPdXRwdXQ6IGRlZi50b01vZGVsT3V0cHV0LFxuICAgICAgICAgIHByb3ZpZGVyT3B0aW9uczogZGVmLnByb3ZpZGVyT3B0aW9ucyxcbiAgICAgICAgICBleGVjdXRlOiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM6IFRvb2xFeGVjdXRpb25PcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBib3VuZCA9IGRlZi5tZXRob2QuYmluZCh0aGlzKTtcbiAgICAgICAgICAgIHJldHVybiBib3VuZC5sZW5ndGggPj0gMiA/IGJvdW5kKGlucHV0LCBvcHRpb25zKSA6IGJvdW5kKGlucHV0KTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdG9vbHMoKTogVG9vbFNldCB7XG4gICAgcmV0dXJuIHRoaXMudG9vbFNldDtcbiAgfVxuXG4gIHB1YmxpYyB1c2U8VFJldHVybj4oXG4gICAgY29uZmlnOiBBZ2VudENvbmZpZyxcbiAgICBpbml0aWFsU3RhdHVzOiBUU3RvcmUsXG4gICAgY2FsbGJhY2s6IChhZ2VudDogQWdlbnQ8bmV2ZXIsIFRvb2xTZXQ+KSA9PiBQcm9taXNlPFRSZXR1cm4+LFxuICApIHtcbiAgICBjb25zdCBhZ2VudCA9IG5ldyBUb29sTG9vcEFnZW50KHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIHRvb2xzOiB0aGlzLnRvb2xzLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuX2Fscy5ydW4oaW5pdGlhbFN0YXR1cywgKCkgPT4gY2FsbGJhY2soYWdlbnQpKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9vbHM8SU5QVVQsIE9VVFBVVCA9IHVua25vd24+KG9wdGlvbnM6IFRvb2xEZWNvcmF0b3JPcHRpb25zPElOUFVULCBPVVRQVVQ+KSB7XG4gIGNvbnN0IHsgbmFtZSwgZGVzY3JpcHRpb24sIHNjaGVtYSwgbmVlZHNBcHByb3ZhbCwgdG9Nb2RlbE91dHB1dCwgcHJvdmlkZXJPcHRpb25zIH0gPSBvcHRpb25zO1xuICByZXR1cm4gKHRhcmdldDogQmFzZUFnZW50Q2xhc3M8dW5rbm93bj4sIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGlmICghKHRhcmdldCBpbnN0YW5jZW9mIEJhc2VBZ2VudENsYXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGFyZ2V0IG11c3QgYmUgYSBzdWJjbGFzcyBvZiBCYXNlQWdlbnRDbGFzc1wiKTtcbiAgICB9XG5cbiAgICBjb25zdCBtb2RlbE5hbWUgPSBnZXRNb2RlbE5hbWVGcm9tQ2xhc3NOYW1lKHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lKTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gcHJvcGVydHlLZXk7XG5cbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgY29uc3QgbWV0aG9kID0gYXN5bmMgZnVuY3Rpb24gKHRoaXM6IEJhc2VBZ2VudENsYXNzPHVua25vd24+LCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwidG9vbHM6IHttb2RlbH0ue21ldGhvZH0gd2l0aCBhcmdzOiB7YXJnc31cIiwge1xuICAgICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgIGFyZ3MsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IG1ldGhvZDtcblxuICAgIGNvbnN0IGRlZmF1bHRQYXRoID1cbiAgICAgIG1vZGVsTmFtZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gYCR7aW5mbGVjdGlvbi5jYW1lbGl6ZShcbiAgICAgICAgICAgIChtb2RlbE5hbWUgPz8gXCJcIikucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIiksXG4gICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICl9LiR7aW5mbGVjdGlvbi5jYW1lbGl6ZShtZXRob2ROYW1lLCB0cnVlKX1gXG4gICAgICAgIDogaW5mbGVjdGlvbi5jYW1lbGl6ZShtZXRob2ROYW1lLCB0cnVlKTtcblxuICAgIHRvb2xEZWZpbml0aW9ucy5wdXNoKHtcbiAgICAgIG5hbWU6IG5hbWUgPz8gZGVmYXVsdFBhdGgsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIHNjaGVtYSxcbiAgICAgIG5lZWRzQXBwcm92YWwsXG4gICAgICB0b01vZGVsT3V0cHV0LFxuICAgICAgcHJvdmlkZXJPcHRpb25zLFxuICAgICAgbWV0aG9kLFxuICAgICAgZnJvbTogdGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUsXG4gICAgfSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztlQVVnRTtpQkFDRztBQU9uRSxNQUFNQSxrQkFBOEMsRUFBRTtBQUd0RCxJQUFhLGlCQUFiLE1BQW9DO0NBQ2xDLEFBQW1CO0NBRW5CLEFBQVEsT0FBTyxJQUFJLG1CQUEyQjtDQUU5QyxZQUFZLEFBQWdCQyxZQUFvQixLQUFLLFlBQVksTUFBTTtFQUEzQztBQUMxQixPQUFLLFNBQVMsVUFBVSx3QkFBd0IsS0FBSyxXQUFXLFFBQVEsQ0FBQzs7Q0FHM0UsSUFBVyxRQUFRO0FBQ2pCLFNBQU8sS0FBSyxLQUFLLFVBQVU7O0NBRzdCLElBQWMsVUFBVTtBQUN0QixTQUFPLGdCQUNKLFFBQVEsUUFBUSxJQUFJLFNBQVMsS0FBSyxZQUFZLEtBQUssQ0FDbkQsUUFBOEIsS0FBSyxRQUFRO0FBQzFDLE9BQUksSUFBSSxRQUFRLEtBQUs7SUFDbkIsYUFBYSxJQUFJO0lBQ2pCLGFBQWEsSUFBSSxPQUFPO0lBQ3hCLGNBQWMsSUFBSSxPQUFPO0lBQ3pCLGVBQWUsSUFBSSxpQkFBaUI7SUFDcEMsZUFBZSxJQUFJO0lBQ25CLGlCQUFpQixJQUFJO0lBQ3JCLFVBQVUsT0FBZ0IsWUFBa0M7S0FDMUQsTUFBTSxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUs7QUFDbkMsWUFBTyxNQUFNLFVBQVUsSUFBSSxNQUFNLE9BQU8sUUFBUSxHQUFHLE1BQU0sTUFBTTs7SUFFbEUsQ0FBQztBQUNGLFVBQU87S0FDTixFQUFFLENBQUM7O0NBR1YsSUFBVyxRQUFpQjtBQUMxQixTQUFPLEtBQUs7O0NBR2QsQUFBTyxJQUNMLFFBQ0EsZUFDQSxVQUNBO0VBQ0EsTUFBTSxRQUFRLElBQUksY0FBYztHQUM5QixHQUFHO0dBQ0gsT0FBTyxLQUFLO0dBQ2IsQ0FBQztBQUVGLFNBQU8sS0FBSyxLQUFLLElBQUkscUJBQXFCLFNBQVMsTUFBTSxDQUFDOzs7QUFJOUQsU0FBZ0IsTUFBK0IsU0FBOEM7Q0FDM0YsTUFBTSxFQUFFLE1BQU0sYUFBYSxRQUFRLGVBQWUsZUFBZSxvQkFBb0I7QUFDckYsU0FBUSxRQUFpQyxhQUFxQixlQUFtQztBQUMvRixNQUFJLEVBQUUsa0JBQWtCLGlCQUFpQjtBQUN2QyxTQUFNLElBQUksTUFBTSw4Q0FBOEM7O0VBR2hFLE1BQU0sWUFBWSwwQkFBMEIsT0FBTyxZQUFZLEtBQUs7RUFDcEUsTUFBTSxhQUFhO0VBRW5CLE1BQU0saUJBQWlCLFdBQVc7RUFDbEMsTUFBTSxTQUFTLGVBQStDLEdBQUcsTUFBaUI7QUFDaEYsUUFBSyxPQUFPLE1BQU0sNkNBQTZDO0lBQzdELE9BQU87SUFDUCxRQUFRO0lBQ1I7SUFDRCxDQUFDO0FBRUYsVUFBTyxlQUFlLE1BQU0sTUFBTSxLQUFLOztBQUV6QyxhQUFXLFFBQVE7RUFFbkIsTUFBTSxjQUNKLGNBQWMsWUFDVixHQUFHLFdBQVcsVUFDWCxhQUFhLElBQUksUUFBUSxVQUFVLEdBQUcsQ0FBQyxRQUFRLFVBQVUsR0FBRyxFQUM3RCxLQUNELENBQUMsR0FBRyxXQUFXLFNBQVMsWUFBWSxLQUFLLEtBQzFDLFdBQVcsU0FBUyxZQUFZLEtBQUs7QUFFM0Msa0JBQWdCLEtBQUs7R0FDbkIsTUFBTSxRQUFRO0dBQ2Q7R0FDQTtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0EsTUFBTSxPQUFPLFlBQVk7R0FDMUIsQ0FBQyJ9
@@ -8,7 +8,7 @@ export declare const rtzrTranscriptionResponseSchema: import("@ai-sdk/provider-u
8
8
  }>;
9
9
  export declare const rtzrTranscriptionResultResponseSchema: import("@ai-sdk/provider-utils").LazySchema<{
10
10
  id: string;
11
- status: "failed" | "transcribing" | "completed";
11
+ status: "completed" | "failed" | "transcribing";
12
12
  results?: {
13
13
  utterances: {
14
14
  start_at: number;
@@ -44,7 +44,6 @@ export type WebSocketDecoratorOptions = {
44
44
  guards?: GuardKey[];
45
45
  description?: string;
46
46
  heartbeat?: number;
47
- maxPayload?: number;
48
47
  namespace?: string;
49
48
  };
50
49
  export type ResolvedWebSocketDecoratorOptions = WebSocketDecoratorOptions & {
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/api/decorators.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGrE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGlE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,IAAI,CAAC;IACZ,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,IAAI,CAAC;CACZ;AACD,MAAM,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC;AACvC,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,iBAAiB,GACjB,gBAAgB,GAChB,mBAAmB,GACnB,6BAA6B,GAC7B,cAAc,CAAC;AACnB,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,WAAW,CAAC,EACR,YAAY,GACZ,WAAW,GACX,UAAU,GACV,kBAAkB,GAClB,0BAA0B,CAAC;IAC/B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,KAAK,CAAC;IAEZ,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG;IAEtC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAE5B,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AACF,MAAM,MAAM,iCAAiC,GAAG,yBAAyB,GAAG;IAE1E,gBAAgB,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC;IACpC,eAAe,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC;CACpC,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,OAAO,CAAC,EAAE,QAAQ,CAAC;CACpB,CAAC;AACF,KAAK,mBAAmB,GAAG;IACzB,OAAO,EAAE,QAAQ,CAAC;IAClB,WAAW,EAAE,SAAS,CAAC;IACvB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;CAChD,GAAG,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,CAAC;AAEhD,eAAO,MAAM,cAAc,EAAE;IAC3B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,mBAAmB,CAAC;IAC7B,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,gBAAgB,CAAC,EAAE,iCAAiC,CAAC;IACrD,aAAa,CAAC,EAAE,sBAAsB,CAAC;CACxC,EAAO,CAAC;AACT,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,mBAAmB,CAAC;IAC7B,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,gBAAgB,CAAC,EAAE,iCAAiC,CAAC;IACrD,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,cAAc,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC;IACzC,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,UAAU,EAAE,YAAY,CAAC;CAC1B,CAAC;AACF,KAAK,eAAe,GAAG;IAAE,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAoBzD,wBAAgB,GAAG,CAAC,OAAO,GAAE,mBAAwB,IAQ3C,QAAQ,eAAe,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,UAoErF;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,sBAAsB,IAC5C,QAAQ,eAAe,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,UAgFrF;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,yBAAyB,IAClD,QAAQ,eAAe,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,UA4ErF;AAED,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,IAGtD,QAAQ,eAAe,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,wBAyDrF;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,OAAO,GAAE,sBAA8C,IACpE,QAAQ,eAAe,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,wBAmErF"}
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/api/decorators.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { __esmMin } from "../_virtual/rolldown_runtime.js";
2
2
  import { convertDomainToCategory, init_category } from "../logger/category.js";
3
+ import { getModelNameFromClassName, init_class_name } from "../utils/class-name.js";
3
4
  import { DB, init_db } from "../database/db.js";
4
5
  import { UpsertBuilder, init_upsert_builder } from "../database/upsert-builder.js";
5
6
  import { BaseFrameClass, init_base_frame } from "./base-frame.js";
@@ -27,7 +28,7 @@ function api(options = {}) {
27
28
  ...options
28
29
  };
29
30
  return (target, propertyKey, descriptor) => {
30
- const modelName = target.constructor.name.match(/(.+)Class$/)?.[1];
31
+ const modelName = getModelNameFromClassName(target.constructor.name);
31
32
  assert(modelName, `modelName is required on @api decorator on ${target.constructor.name}.${propertyKey}`);
32
33
  const methodName = propertyKey;
33
34
  checkSingleDecorator(target, propertyKey, DECORATOR_TYPES.API);
@@ -72,7 +73,7 @@ function api(options = {}) {
72
73
  }
73
74
  function stream(options) {
74
75
  return (target, propertyKey, descriptor) => {
75
- const modelName = target.constructor.name.match(/(.+)Class$/)?.[1];
76
+ const modelName = getModelNameFromClassName(target.constructor.name);
76
77
  assert(modelName, `modelName is required on @stream decorator on ${target.constructor.name}.${propertyKey}`);
77
78
  const methodName = propertyKey;
78
79
  checkSingleDecorator(target, propertyKey, DECORATOR_TYPES.STREAM);
@@ -122,7 +123,7 @@ function stream(options) {
122
123
  }
123
124
  function websocket(options) {
124
125
  return (target, propertyKey, descriptor) => {
125
- const modelName = target.constructor.name.match(/(.+)Class$/)?.[1];
126
+ const modelName = getModelNameFromClassName(target.constructor.name);
126
127
  assert(modelName, `modelName is required on @websocket decorator on ${target.constructor.name}.${propertyKey}`);
127
128
  const methodName = propertyKey;
128
129
  checkSingleDecorator(target, propertyKey, DECORATOR_TYPES.WEBSOCKET);
@@ -174,7 +175,7 @@ function transactional(options = {}) {
174
175
  const { isolation, readOnly, dbPreset = "w" } = options;
175
176
  return (target, propertyKey, descriptor) => {
176
177
  const originalMethod = descriptor.value;
177
- const modelName = target.constructor.name.match(/(.+)Class$/)?.[1];
178
+ const modelName = getModelNameFromClassName(target.constructor.name);
178
179
  assert(modelName, `modelName is required on @transactional decorator on ${target.constructor.name}.${propertyKey}`);
179
180
  const methodName = propertyKey;
180
181
  descriptor.value = async function(...args) {
@@ -220,7 +221,7 @@ function transactional(options = {}) {
220
221
  function upload(options = { consume: "buffer" }) {
221
222
  return (target, propertyKey, descriptor) => {
222
223
  const originalMethod = descriptor.value;
223
- const modelName = target.constructor.name.match(/(.+)Class$/)?.[1];
224
+ const modelName = getModelNameFromClassName(target.constructor.name);
224
225
  assert(modelName, `modelName is required on @upload decorator on ${target.constructor.name}.${propertyKey}`);
225
226
  const methodName = propertyKey;
226
227
  checkSingleDecorator(target, propertyKey, DECORATOR_TYPES.UPLOAD);
@@ -295,6 +296,7 @@ var init_decorators = __esmMin((() => {
295
296
  init_puri_wrapper();
296
297
  init_upsert_builder();
297
298
  init_category();
299
+ init_class_name();
298
300
  init_base_frame();
299
301
  registeredApis = [];
300
302
  DECORATOR_TYPES = {
@@ -308,4 +310,4 @@ var init_decorators = __esmMin((() => {
308
310
  //#endregion
309
311
  init_decorators();
310
312
  export { api, init_decorators, registeredApis, stream, transactional, upload, websocket };
311
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsIm5hbWVzIjpbImFwaSIsInJlZ2lzdGVyZWRBcGlzOiB7XG4gIC8qKlxuICAgKiBtb2RlbE5hbWXsnYAg66qo6424IO2BtOuemOyKpCDsnbTrpoTsnoXri4jri6QuIChleC4gXCJVc2VyTW9kZWxcIilcbiAgICovXG4gIG1vZGVsTmFtZTogc3RyaW5nO1xuICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgb3B0aW9uczogQXBpRGVjb3JhdG9yT3B0aW9ucztcbiAgc3RyZWFtT3B0aW9ucz86IFN0cmVhbURlY29yYXRvck9wdGlvbnM7XG4gIHdlYnNvY2tldE9wdGlvbnM/OiBSZXNvbHZlZFdlYlNvY2tldERlY29yYXRvck9wdGlvbnM7XG4gIHVwbG9hZE9wdGlvbnM/OiBVcGxvYWREZWNvcmF0b3JPcHRpb25zO1xufVtdIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9kZWNvcmF0b3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuXG5pbXBvcnQgeyB0eXBlIEZhc3RpZnlNdWx0aXBhcnRCYXNlT3B0aW9ucyB9IGZyb20gXCJAZmFzdGlmeS9tdWx0aXBhcnRcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIEhUVFBNZXRob2RzIH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSBcInJhZGFzaGlcIjtcbmltcG9ydCB7IHR5cGUgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgdHlwZSBDYWNoZUNvbnRyb2xDb25maWcgfSBmcm9tIFwiLi4vY2FjaGUtY29udHJvbC90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBDb21wcmVzc0NvbmZpZyB9IGZyb20gXCIuLi9jb21wcmVzcy90eXBlc1wiO1xuaW1wb3J0IHsgQmFzZU1vZGVsQ2xhc3MgfSBmcm9tIFwiLi4vZGF0YWJhc2UvYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHsgREIgfSBmcm9tIFwiLi4vZGF0YWJhc2UvZGJcIjtcbmltcG9ydCB7IFB1cmlUcmFuc2FjdGlvbldyYXBwZXIgfSBmcm9tIFwiLi4vZGF0YWJhc2UvcHVyaS13cmFwcGVyXCI7XG5pbXBvcnQgeyB0eXBlIFRyYW5zYWN0aW9uYWxPcHRpb25zIH0gZnJvbSBcIi4uL2RhdGFiYXNlL3B1cmktd3JhcHBlclwiO1xuaW1wb3J0IHsgVXBzZXJ0QnVpbGRlciB9IGZyb20gXCIuLi9kYXRhYmFzZS91cHNlcnQtYnVpbGRlclwiO1xuaW1wb3J0IHsgY29udmVydERvbWFpblRvQ2F0ZWdvcnkgfSBmcm9tIFwiLi4vbG9nZ2VyL2NhdGVnb3J5XCI7XG5pbXBvcnQgeyB0eXBlIERyaXZlcktleSB9IGZyb20gXCIuLi9zdG9yYWdlL2RyaXZlcnNcIjtcbmltcG9ydCB7IHR5cGUgS2V5R2VuZXJhdG9yIH0gZnJvbSBcIi4uL3N0b3JhZ2UvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgQXBpUGFyYW0sIHR5cGUgQXBpUGFyYW1UeXBlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBCYXNlRnJhbWVDbGFzcyB9IGZyb20gXCIuL2Jhc2UtZnJhbWVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBHdWFyZEtleXMge1xuICBxdWVyeTogdHJ1ZTtcbiAgYWRtaW46IHRydWU7XG4gIHVzZXI6IHRydWU7XG59XG5leHBvcnQgdHlwZSBHdWFyZEtleSA9IGtleW9mIEd1YXJkS2V5cztcbmV4cG9ydCB0eXBlIFNlcnZpY2VDbGllbnQgPVxuICB8IFwiYXhpb3NcIlxuICB8IFwiYXhpb3MtbXVsdGlwYXJ0XCJcbiAgfCBcInRhbnN0YWNrLXF1ZXJ5XCJcbiAgfCBcInRhbnN0YWNrLW11dGF0aW9uXCJcbiAgfCBcInRhbnN0YWNrLW11dGF0aW9uLW11bHRpcGFydFwiXG4gIHwgXCJ3aW5kb3ctZmV0Y2hcIjtcbmV4cG9ydCB0eXBlIEFwaURlY29yYXRvck9wdGlvbnMgPSB7XG4gIGh0dHBNZXRob2Q/OiBIVFRQTWV0aG9kcztcbiAgY29udGVudFR5cGU/OlxuICAgIHwgXCJ0ZXh0L3BsYWluXCJcbiAgICB8IFwidGV4dC9odG1sXCJcbiAgICB8IFwidGV4dC94bWxcIlxuICAgIHwgXCJhcHBsaWNhdGlvbi9qc29uXCJcbiAgICB8IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI7XG4gIGNsaWVudHM/OiBTZXJ2aWNlQ2xpZW50W107XG4gIHBhdGg/OiBzdHJpbmc7XG4gIHJlc291cmNlTmFtZT86IHN0cmluZztcbiAgZ3VhcmRzPzogR3VhcmRLZXlbXTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBBUEkg7J2R64u17J2YIENhY2hlLUNvbnRyb2wg7Zek642UIOyEpOyglS4g7ISk7KCV7ZWY7KeAIOyViuycvOuptCBjYWNoZUNvbnRyb2xIYW5kbGVyIOuYkOuKlCDquLDrs7jqsJLsnbQg7KCB7Jqp65Cp64uI64ukLiAqL1xuICBjYWNoZUNvbnRyb2w/OiBDYWNoZUNvbnRyb2xDb25maWc7XG4gIC8qKiBBUEkg7J2R64u17J2YIOyVley2lSDshKTsoJUuIGZhbHNl66GcIOyEpOygle2VmOuptCDslZXstpXsnYQg67mE7Zmc7ISx7ZmU7ZWp64uI64ukLiAqL1xuICBjb21wcmVzcz86IENvbXByZXNzQ29uZmlnO1xufTtcbmV4cG9ydCB0eXBlIFN0cmVhbURlY29yYXRvck9wdGlvbnMgPSB7XG4gIHR5cGU6IFwic3NlXCI7XG4gIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55IC0tIOydtOuypO2KuCDtgqTrs4TroZwg64SY6rKo7KO864qUIOqwkuydtOuvgOuhnCDslrTrlqQg7YOA7J6F7J2065OgIOyDgeq0gOyXhuydjFxuICBldmVudHM6IHouWm9kT2JqZWN0PGFueT47XG4gIHBhdGg/OiBzdHJpbmc7XG4gIHJlc291cmNlTmFtZT86IHN0cmluZztcbiAgZ3VhcmRzPzogR3VhcmRLZXlbXTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgV2ViU29ja2V0RGVjb3JhdG9yT3B0aW9ucyA9IHtcbiAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0g7J2067Kk7Yq4IO2CpOuzhOuhnCDrhJjqsqjso7zripQg6rCS7J2066+A66GcIOyWtOuWpCDtg4DsnoXsnbTrk6Ag7IOB6rSA7JeG7J2MXG4gIG91dEV2ZW50czogei5ab2RPYmplY3Q8YW55PjtcbiAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0g7J2067Kk7Yq4IO2CpOuzhOuhnCDrhJjqsqjso7zripQg6rCS7J2066+A66GcIOyWtOuWpCDtg4DsnoXsnbTrk6Ag7IOB6rSA7JeG7J2MXG4gIGluRXZlbnRzOiB6LlpvZE9iamVjdDxhbnk+O1xuICBwYXRoPzogc3RyaW5nO1xuICByZXNvdXJjZU5hbWU/OiBzdHJpbmc7XG4gIGd1YXJkcz86IEd1YXJkS2V5W107XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBoZWFydGJlYXQ/OiBudW1iZXI7XG4gIG1heFBheWxvYWQ/OiBudW1iZXI7XG4gIG5hbWVzcGFjZT86IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBSZXNvbHZlZFdlYlNvY2tldERlY29yYXRvck9wdGlvbnMgPSBXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zICYge1xuICAvLyBjb2RlZ2Vu7J20IO2DgOyehSDsnbTrpoTsnYQg7J6s7IKs7Jqp7ZWgIOyImCDsnojrj4TroZ0gc3luY2Vy6rCAIEFTVOyXkOyEnCDrs7TqsJXtlZjripQg66mU7YOA642w7J207YSwXG4gIG91dEV2ZW50c1R5cGVSZWY/OiBBcGlQYXJhbVR5cGUuUmVmO1xuICBpbkV2ZW50c1R5cGVSZWY/OiBBcGlQYXJhbVR5cGUuUmVmO1xufTtcblxudHlwZSBCdWZmZXJVcGxvYWRPcHRpb25zID0ge1xuICBjb25zdW1lPzogXCJidWZmZXJcIjtcbn07XG50eXBlIFN0cmVhbVVwbG9hZE9wdGlvbnMgPSB7XG4gIGNvbnN1bWU6IFwic3RyZWFtXCI7XG4gIGRlc3RpbmF0aW9uOiBEcml2ZXJLZXk7XG4gIGtleUdlbmVyYXRvcj86IEtleUdlbmVyYXRvcjtcbn07XG5leHBvcnQgdHlwZSBVcGxvYWREZWNvcmF0b3JPcHRpb25zID0ge1xuICBndWFyZHM/OiBHdWFyZEtleVtdO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgbGltaXRzPzogRmFzdGlmeU11bHRpcGFydEJhc2VPcHRpb25zW1wibGltaXRzXCJdO1xufSAmIChCdWZmZXJVcGxvYWRPcHRpb25zIHwgU3RyZWFtVXBsb2FkT3B0aW9ucyk7XG5cbmV4cG9ydCBjb25zdCByZWdpc3RlcmVkQXBpczoge1xuICAvKipcbiAgICogbW9kZWxOYW1l7J2AIOuqqOuNuCDtgbTrnpjsiqQg7J2066aE7J6F64uI64ukLiAoZXguIFwiVXNlck1vZGVsXCIpXG4gICAqL1xuICBtb2RlbE5hbWU6IHN0cmluZztcbiAgbWV0aG9kTmFtZTogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIG9wdGlvbnM6IEFwaURlY29yYXRvck9wdGlvbnM7XG4gIHN0cmVhbU9wdGlvbnM/OiBTdHJlYW1EZWNvcmF0b3JPcHRpb25zO1xuICB3ZWJzb2NrZXRPcHRpb25zPzogUmVzb2x2ZWRXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zO1xuICB1cGxvYWRPcHRpb25zPzogVXBsb2FkRGVjb3JhdG9yT3B0aW9ucztcbn1bXSA9IFtdO1xuZXhwb3J0IHR5cGUgRXh0ZW5kZWRBcGkgPSB7XG4gIG1vZGVsTmFtZTogc3RyaW5nO1xuICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgb3B0aW9uczogQXBpRGVjb3JhdG9yT3B0aW9ucztcbiAgc3RyZWFtT3B0aW9ucz86IFN0cmVhbURlY29yYXRvck9wdGlvbnM7XG4gIHdlYnNvY2tldE9wdGlvbnM/OiBSZXNvbHZlZFdlYlNvY2tldERlY29yYXRvck9wdGlvbnM7XG4gIHVwbG9hZE9wdGlvbnM/OiBVcGxvYWREZWNvcmF0b3JPcHRpb25zO1xuICB0eXBlUGFyYW1ldGVyczogQXBpUGFyYW1UeXBlLlR5cGVQYXJhbVtdO1xuICBwYXJhbWV0ZXJzOiBBcGlQYXJhbVtdO1xuICByZXR1cm5UeXBlOiBBcGlQYXJhbVR5cGU7XG59O1xudHlwZSBEZWNvcmF0b3JUYXJnZXQgPSB7IGNvbnN0cnVjdG9yOiB7IG5hbWU6IHN0cmluZyB9IH07XG5cbmNvbnN0IERFQ09SQVRPUl9UWVBFUyA9IHtcbiAgQVBJOiBTeW1ib2woXCJhcGlcIiksXG4gIFNUUkVBTTogU3ltYm9sKFwic3RyZWFtXCIpLFxuICBXRUJTT0NLRVQ6IFN5bWJvbChcIndlYnNvY2tldFwiKSxcbiAgVVBMT0FEOiBTeW1ib2woXCJ1cGxvYWRcIiksXG59IGFzIGNvbnN0O1xuXG5mdW5jdGlvbiBjaGVja1NpbmdsZURlY29yYXRvcih0YXJnZXQ6IERlY29yYXRvclRhcmdldCwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVjb3JhdG9yVHlwZTogc3ltYm9sKSB7XG4gIGNvbnN0IG1ldGhvZCA9IHRhcmdldFtwcm9wZXJ0eUtleSBhcyBrZXlvZiB0eXBlb2YgdGFyZ2V0XSBhcyB7IF9fZGVjb3JhdG9yVHlwZT86IHN5bWJvbCB9O1xuICBpZiAobWV0aG9kPy5fX2RlY29yYXRvclR5cGUgJiYgbWV0aG9kPy5fX2RlY29yYXRvclR5cGUgIT09IGRlY29yYXRvclR5cGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQCR7ZGVjb3JhdG9yVHlwZS5kZXNjcmlwdGlvbiA/PyBTdHJpbmcoZGVjb3JhdG9yVHlwZSl9IGRlY29yYXRvciBjYW4gb25seSBiZSB1c2VkIG9uY2Ugb24gJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleX0uIFlvdSBjYW4gdXNlIG9ubHkgb25lIG9mIEBhcGksIEBzdHJlYW0sIEB3ZWJzb2NrZXQsIG9yIEB1cGxvYWQgZGVjb3JhdG9yIG9uIHRoZSBzYW1lIG1ldGhvZC5gLFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgbWV0aG9kLl9fZGVjb3JhdG9yVHlwZSA9IGRlY29yYXRvclR5cGU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwaShvcHRpb25zOiBBcGlEZWNvcmF0b3JPcHRpb25zID0ge30pIHtcbiAgb3B0aW9ucyA9IHtcbiAgICBodHRwTWV0aG9kOiBcIkdFVFwiLFxuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICBjbGllbnRzOiBbXCJheGlvc1wiXSxcbiAgICAuLi5vcHRpb25zLFxuICB9O1xuXG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEBhcGkgZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIC8vIOuplOyEnOuTnOyXkCDqsbjrprAg642w7L2U66CI7J207YSwIOykkeuztSDssrTtgaxcbiAgICBjaGVja1NpbmdsZURlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5LCBERUNPUkFUT1JfVFlQRVMuQVBJKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQYXRoID0gYC8ke2luZmxlY3Rpb24uY2FtZWxpemUoXG4gICAgICBtb2RlbE5hbWUucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIiksXG4gICAgICB0cnVlLFxuICAgICl9LyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShwcm9wZXJ0eUtleSwgdHJ1ZSl9YDtcbiAgICBjb25zdCBwYXRoID0gb3B0aW9ucy5wYXRoID8/IGRlZmF1bHRQYXRoO1xuXG4gICAgLy8g6riw7KG0IOuPmeydvO2VnCDrqZTshJzrk5zqsIAg7J6I64qU7KeAIO2ZleyduCDtm4Qg7J6I64qUIOqyveyasCBvdmVycmlkZVxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChhcGkpID0+IGFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuICAgIGlmIChleGlzdGluZ0FwaSkge1xuICAgICAgLy8g6riw7KG07J2YIHBhdGjsmYAg7IOI66Gc7Jq0IHBhdGjqsIAg64uk66W064uk66m0KD3ruYgg7Iqk7Yq466eB7J20IOyVhOuLiOyXiOuKlOuNsCDri6Trpbgg7Iqk7Yq466eB7Jy866GcIOuwlOuAjOqyjCDrkJzri6TrqbQpIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgICBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcImFwaVwiLCBtb2RlbE5hbWUsIG1ldGhvZE5hbWUsIGV4aXN0aW5nQXBpLnBhdGgsIHBhdGgpO1xuICAgICAgZXhpc3RpbmdBcGkucGF0aCA9IHBhdGg7XG5cbiAgICAgIC8vIOq4sOyhtOydmCDsmLXshZjqs7wg7IOI66Gc7Jq0IOyYteyFmOydtCDqsrnsuZjripQg67aA67aE7J20IOyeiOuLpOuptCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXCJhcGlcIiwgbW9kZWxOYW1lLCBtZXRob2ROYW1lLCBleGlzdGluZ0FwaS5vcHRpb25zLCBvcHRpb25zKTtcbiAgICAgIGV4aXN0aW5nQXBpLm9wdGlvbnMgPSB7XG4gICAgICAgIC4uLmV4aXN0aW5nQXBpLm9wdGlvbnMsIC8vIOq4sOyhtOydmCDsmLXshZjsnYQg7KG07KSR7ZWY65CYXG4gICAgICAgIC4uLm9wdGlvbnMsIC8vIEBhcGkg642w7L2U66CI7J207YSw7J2YIOyYteyFmOydhCDstpTqsIDtlanri4jri6QuXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZWdpc3RlcmVkQXBpcy5wdXNoKHtcbiAgICAgICAgbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2ROYW1lLFxuICAgICAgICBwYXRoLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiAodGhpczogQmFzZU1vZGVsQ2xhc3MgfCBCYXNlRnJhbWVDbGFzcywgLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VNb2RlbENsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLm1vZGVsTmFtZSwgXCJtb2RlbFwiKSkuZGVidWcoXG4gICAgICAgICAgXCJhcGk6IHtodHRwTWV0aG9kfSB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaHR0cE1ldGhvZDogb3B0aW9ucy5odHRwTWV0aG9kLFxuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VGcmFtZUNsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLmZyYW1lTmFtZSwgXCJmcmFtZVwiKSkuZGVidWcoXG4gICAgICAgICAgXCJhcGk6IHtodHRwTWV0aG9kfSB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaHR0cE1ldGhvZDogb3B0aW9ucy5odHRwTWV0aG9kLFxuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmVhbShvcHRpb25zOiBTdHJlYW1EZWNvcmF0b3JPcHRpb25zKSB7XG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEBzdHJlYW0gZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIC8vIOuplOyEnOuTnOyXkCDqsbjrprAg642w7L2U66CI7J207YSwIOykkeuztSDssrTtgaxcbiAgICBjaGVja1NpbmdsZURlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5LCBERUNPUkFUT1JfVFlQRVMuU1RSRUFNKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQYXRoID0gYC8ke2luZmxlY3Rpb24uY2FtZWxpemUoXG4gICAgICBtb2RlbE5hbWUucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIiksXG4gICAgICB0cnVlLFxuICAgICl9LyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShwcm9wZXJ0eUtleSwgdHJ1ZSl9YDtcbiAgICBjb25zdCBwYXRoID0gb3B0aW9ucy5wYXRoID8/IGRlZmF1bHRQYXRoO1xuICAgIC8vIHN0cmVhbSDsoITsmqkg7ZWE65OcKGV2ZW50cywgdHlwZSnripQgQXBpRGVjb3JhdG9yT3B0aW9uc+yXkCDsho3tlZjsp4Ag7JWK7Jy866+A66GcIOygnOyZuFxuICAgIGNvbnN0IHsgZXZlbnRzOiBfLCB0eXBlOiBfdHlwZSwgLi4uYXBpT3B0aW9ucyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBvcHRpb25zV2l0aERlZmF1bHRzID0ge1xuICAgICAgLi4uYXBpT3B0aW9ucyxcbiAgICAgIGh0dHBNZXRob2Q6IFwiR0VUXCIgYXMgSFRUUE1ldGhvZHMsXG4gICAgfTtcblxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChhcGkpID0+IGFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuICAgIGlmIChleGlzdGluZ0FwaSkge1xuICAgICAgLy8g6riw7KG07J2YIHBhdGjsmYAg7IOI66Gc7Jq0IHBhdGjqsIAg64uk66W064uk66m0KD3ruYgg7Iqk7Yq466eB7J20IOyVhOuLiOyXiOuKlOuNsCDri6Trpbgg7Iqk7Yq466eB7Jy866GcIOuwlOuAjOqyjCDrkJzri6TrqbQpIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgICBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcInN0cmVhbVwiLCBtb2RlbE5hbWUsIG1ldGhvZE5hbWUsIGV4aXN0aW5nQXBpLnBhdGgsIHBhdGgpO1xuICAgICAgZXhpc3RpbmdBcGkucGF0aCA9IHBhdGg7XG5cbiAgICAgIC8vIOq4sOyhtOydmCDsmLXshZjqs7wg7IOI66Gc7Jq0IOyYteyFmOydtCDqsrnsuZjripQg67aA67aE7J20IOyeiOuLpOuptCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXG4gICAgICAgIFwic3RyZWFtXCIsXG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgZXhpc3RpbmdBcGkub3B0aW9ucyxcbiAgICAgICAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICk7XG4gICAgICBleGlzdGluZ0FwaS5vcHRpb25zID0ge1xuICAgICAgICAuLi5leGlzdGluZ0FwaS5vcHRpb25zLCAvLyDquLDsobTsnZgg7Ji17IWY7J2EIOyhtOykke2VmOuQmFxuICAgICAgICAuLi5vcHRpb25zV2l0aERlZmF1bHRzLCAvLyBAc3RyZWFtIOuNsOy9lOugiOydtO2EsOydmCDsmLXshZjsnYQg7LaU6rCA7ZWp64uI64ukLlxuICAgICAgfTtcblxuICAgICAgZXhpc3RpbmdBcGkuc3RyZWFtT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZ2lzdGVyZWRBcGlzLnB1c2goe1xuICAgICAgICBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZE5hbWUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIHN0cmVhbU9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcyB8IEJhc2VGcmFtZUNsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZU1vZGVsQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMubW9kZWxOYW1lLCBcIm1vZGVsXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcInN0cmVhbToge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwic3RyZWFtOiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYnNvY2tldChvcHRpb25zOiBXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zKSB7XG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEB3ZWJzb2NrZXQgZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIGNoZWNrU2luZ2xlRGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHlLZXksIERFQ09SQVRPUl9UWVBFUy5XRUJTT0NLRVQpO1xuXG4gICAgY29uc3QgZGVmYXVsdFBhdGggPSBgLyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShcbiAgICAgIG1vZGVsTmFtZS5yZXBsYWNlKC9Nb2RlbCQvLCBcIlwiKS5yZXBsYWNlKC9GcmFtZSQvLCBcIlwiKSxcbiAgICAgIHRydWUsXG4gICAgKX0vJHtpbmZsZWN0aW9uLmNhbWVsaXplKHByb3BlcnR5S2V5LCB0cnVlKX1gO1xuICAgIGNvbnN0IHBhdGggPSBvcHRpb25zLnBhdGggPz8gZGVmYXVsdFBhdGg7XG4gICAgY29uc3QgeyBvdXRFdmVudHM6IF9vdXRFdmVudHMsIGluRXZlbnRzOiBfaW5FdmVudHMsIC4uLmFwaU9wdGlvbnMgfSA9IG9wdGlvbnM7XG4gICAgY29uc3Qgb3B0aW9uc1dpdGhEZWZhdWx0cyA9IHtcbiAgICAgIC4uLmFwaU9wdGlvbnMsXG4gICAgICBodHRwTWV0aG9kOiBcIkdFVFwiIGFzIEhUVFBNZXRob2RzLFxuICAgIH07XG5cbiAgICBjb25zdCBleGlzdGluZ0FwaSA9IHJlZ2lzdGVyZWRBcGlzLmZpbmQoXG4gICAgICAoYXBpKSA9PiBhcGkubW9kZWxOYW1lID09PSBtb2RlbE5hbWUgJiYgYXBpLm1ldGhvZE5hbWUgPT09IG1ldGhvZE5hbWUsXG4gICAgKTtcbiAgICBpZiAoZXhpc3RpbmdBcGkpIHtcbiAgICAgIGFzc2VydE5vQ29uZmxpY3RpbmdQYXRoKFwid2Vic29ja2V0XCIsIG1vZGVsTmFtZSwgbWV0aG9kTmFtZSwgZXhpc3RpbmdBcGkucGF0aCwgcGF0aCk7XG4gICAgICBleGlzdGluZ0FwaS5wYXRoID0gcGF0aDtcblxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXG4gICAgICAgIFwid2Vic29ja2V0XCIsXG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgZXhpc3RpbmdBcGkub3B0aW9ucyxcbiAgICAgICAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICk7XG4gICAgICBleGlzdGluZ0FwaS5vcHRpb25zID0ge1xuICAgICAgICAuLi5leGlzdGluZ0FwaS5vcHRpb25zLFxuICAgICAgICAuLi5vcHRpb25zV2l0aERlZmF1bHRzLFxuICAgICAgfTtcblxuICAgICAgZXhpc3RpbmdBcGkud2Vic29ja2V0T3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZ2lzdGVyZWRBcGlzLnB1c2goe1xuICAgICAgICBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZE5hbWUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIHdlYnNvY2tldE9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcyB8IEJhc2VGcmFtZUNsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZU1vZGVsQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMubW9kZWxOYW1lLCBcIm1vZGVsXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcIndlYnNvY2tldDoge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwid2Vic29ja2V0OiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zYWN0aW9uYWwob3B0aW9uczogVHJhbnNhY3Rpb25hbE9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IGlzb2xhdGlvbiwgcmVhZE9ubHksIGRiUHJlc2V0ID0gXCJ3XCIgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuICh0YXJnZXQ6IERlY29yYXRvclRhcmdldCwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSA9PiB7XG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEB0cmFuc2FjdGlvbmFsIGRlY29yYXRvciBvbiAke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfS4ke3Byb3BlcnR5S2V5fWAsXG4gICAgKTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gcHJvcGVydHlLZXk7XG5cbiAgICBkZXNjcmlwdG9yLnZhbHVlID0gYXN5bmMgZnVuY3Rpb24gKHRoaXM6IEJhc2VNb2RlbENsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwidHJhbnNhY3Rpb25hbDoge21vZGVsfS57bWV0aG9kfVwiLCB7XG4gICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBleGlzdGluZ0NvbnRleHQgPSBEQi50cmFuc2FjdGlvblN0b3JhZ2UuZ2V0U3RvcmUoKTtcblxuICAgICAgLy8gQXN5bmNMb2NhbFN0b3JhZ2Ug7Luo7YWN7Iqk7Yq4IOyXhuqxsOuCmCDtlbTri7kgcHJlc2V07J2YIO2KuOuenOyereyFmOydtCDsl4bsnLzrqbQg7IOI66GcIOyLnOyekVxuICAgICAgY29uc3Qgc3RhcnRUcmFuc2FjdGlvbiA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgcHVyaSA9IHRoaXMuZ2V0UHVyaShkYlByZXNldCk7XG5cbiAgICAgICAgcmV0dXJuIHB1cmkua25leC50cmFuc2FjdGlvbihcbiAgICAgICAgICBhc3luYyAodHJ4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIm5ldyB0cmFuc2FjdGlvbiBjb250ZXh0OiB7ZGJQcmVzZXR9XCIsIHsgZGJQcmVzZXQgfSk7XG4gICAgICAgICAgICBjb25zdCB0cnhXcmFwcGVyID0gbmV3IFB1cmlUcmFuc2FjdGlvbldyYXBwZXIodHJ4LCBuZXcgVXBzZXJ0QnVpbGRlcigpKTtcbiAgICAgICAgICAgIC8vIFRyYW5zYWN0aW9uQ29udGV4dOyXkCDtirjrnpzsnq3shZgg7KCA7J6lXG4gICAgICAgICAgICBEQi5nZXRUcmFuc2FjdGlvbkNvbnRleHQoKS5zZXRUcmFuc2FjdGlvbihkYlByZXNldCwgdHJ4V3JhcHBlcik7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHJldHVybiBhd2FpdCBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIC8vIO2KuOuenOyereyFmCDsoJzqsbBcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJkZWxldGUgdHJhbnNhY3Rpb24gY29udGV4dDoge2RiUHJlc2V0fVwiLCB7IGRiUHJlc2V0IH0pO1xuICAgICAgICAgICAgICBEQi5nZXRUcmFuc2FjdGlvbkNvbnRleHQoKS5kZWxldGVUcmFuc2FjdGlvbihkYlByZXNldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IGlzb2xhdGlvbkxldmVsOiBpc29sYXRpb24sIHJlYWRPbmx5IH0sXG4gICAgICAgICk7XG4gICAgICB9O1xuXG4gICAgICAvLyBBc3luY0xvY2FsU3RvcmFnZSDsu6jthY3siqTtirjqsIAg7JeG7Jy866m0IOyDiOuhnCDsg53shLFcbiAgICAgIGlmICghZXhpc3RpbmdDb250ZXh0KSB7XG4gICAgICAgIHJldHVybiBEQi5ydW5XaXRoVHJhbnNhY3Rpb24oc3RhcnRUcmFuc2FjdGlvbik7XG4gICAgICB9XG5cbiAgICAgIC8vIOydtOuvuCBBc3luY0xvY2FsU3RvcmFnZSDsu6jthY3siqTtirgg7JWI7JeQIOyeiOuKlOyngCDtmZXsnbgg7ZuEIO2VtOuLuSBwcmVzZXTsnZgg7Yq4656c7J6t7IWY7J20IOydtOuvuCDsnojsnLzrqbQg7J6s7IKs7JqpXG4gICAgICBpZiAoZXhpc3RpbmdDb250ZXh0Py5nZXRUcmFuc2FjdGlvbihkYlByZXNldCkpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJyZXVzZSB0cmFuc2FjdGlvbiBjb250ZXh0OiB7ZGJQcmVzZXR9XCIsIHsgZGJQcmVzZXQgfSk7XG4gICAgICAgIHJldHVybiBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIH1cblxuICAgICAgLy8g7Luo7YWN7Iqk7Yq464qUIOyeiOyngOunjCDsnbQgcHJlc2V07J2YIO2KuOuenOyereyFmOydgCDsl4bripQg6rK97JqwICjqsJnsnYAg7Luo7YWN7Iqk7Yq4IOuCtOyXkOyEnCDsi6TtlokpXG4gICAgICByZXR1cm4gc3RhcnRUcmFuc2FjdGlvbigpO1xuICAgIH07XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cblxuLyoqXG4gKiDtjIzsnbwg7JeF66Gc65OcIEFQSeulvCDsg53shLHtlbTspI3ri4jri6QuIChAYXBpIOuNsOy9lOugiOydtO2EsCDsl4bsnbQg64+F66a97KCB7Jy866GcIOyCrOyaqSlcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXBsb2FkKG9wdGlvbnM6IFVwbG9hZERlY29yYXRvck9wdGlvbnMgPSB7IGNvbnN1bWU6IFwiYnVmZmVyXCIgfSkge1xuICByZXR1cm4gKHRhcmdldDogRGVjb3JhdG9yVGFyZ2V0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgY29uc3QgbW9kZWxOYW1lID0gdGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUubWF0Y2goLyguKylDbGFzcyQvKT8uWzFdO1xuICAgIGFzc2VydChcbiAgICAgIG1vZGVsTmFtZSxcbiAgICAgIGBtb2RlbE5hbWUgaXMgcmVxdWlyZWQgb24gQHVwbG9hZCBkZWNvcmF0b3Igb24gJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleX1gLFxuICAgICk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHByb3BlcnR5S2V5O1xuXG4gICAgLy8g66mU7ISc65Oc7JeQIOqxuOumsCDrjbDsvZTroIjsnbTthLAg7KSR67O1IOyytO2BrFxuICAgIGNoZWNrU2luZ2xlRGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHlLZXksIERFQ09SQVRPUl9UWVBFUy5VUExPQUQpO1xuXG4gICAgY29uc3QgZGVmYXVsdFBhdGggPSBgLyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShcbiAgICAgIG1vZGVsTmFtZS5yZXBsYWNlKC9Nb2RlbCQvLCBcIlwiKS5yZXBsYWNlKC9GcmFtZSQvLCBcIlwiKSxcbiAgICAgIHRydWUsXG4gICAgKX0vJHtpbmZsZWN0aW9uLmNhbWVsaXplKG1ldGhvZE5hbWUsIHRydWUpfWA7XG5cbiAgICAvLyByZWdpc3RlcmVkQXBpc+yXkOyEnCDtlbTri7kgQVBJIOywvuyVhOyEnCB1cGxvYWRPcHRpb25zIOy2lOqwgFxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChhcGkpID0+IGFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuXG4gICAgaWYgKGV4aXN0aW5nQXBpKSB7XG4gICAgICAvLyDsnqzrk7HroZ0g7IucIOyXheuhnOuTnCDsmLXshZjrp4wg6rCx7IugXG4gICAgICBleGlzdGluZ0FwaS51cGxvYWRPcHRpb25zID0gb3B0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8g7IOI66GcIOuTseuhnVxuICAgICAgcmVnaXN0ZXJlZEFwaXMucHVzaCh7XG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgcGF0aDogZGVmYXVsdFBhdGgsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBodHRwTWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICBjbGllbnRzOiBbXCJheGlvcy1tdWx0aXBhcnRcIiwgXCJ0YW5zdGFjay1tdXRhdGlvbi1tdWx0aXBhcnRcIl0sXG4gICAgICAgICAgZ3VhcmRzOiBvcHRpb25zLmd1YXJkcyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogb3B0aW9ucy5kZXNjcmlwdGlvbixcbiAgICAgICAgfSxcbiAgICAgICAgdXBsb2FkT3B0aW9uczogb3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiAodGhpczogQmFzZU1vZGVsQ2xhc3MgfCBCYXNlRnJhbWVDbGFzcywgLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VNb2RlbENsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLm1vZGVsTmFtZSwgXCJtb2RlbFwiKSkuZGVidWcoXG4gICAgICAgICAgXCJ1cGxvYWQ6IHttb2RlbH0ue21ldGhvZH1cIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgICAgICAgbWV0aG9kOiBtZXRob2ROYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZUZyYW1lQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMuZnJhbWVOYW1lLCBcImZyYW1lXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcInVwbG9hZDoge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cblxuLyoqXG4gKiDquLDsobTsnZggcGF0aOyZgCDsg4jroZzsmrQgcGF0aOqwgCDri6TrpbTri6TrqbQoPeqwkuydtCDsnojrjZgg7Iqk7Yq466eB7J20IOuLpOuluCDqsJLsnbQg7J6I64qUIOyKpO2KuOungeycvOuhnCDrsJTrgIzqsowg65Cc64uk66m0KSDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICogQHBhcmFtIGRlY29yYXRvck5hbWUg642w7L2U66CI7J207YSwIOydtOumhFxuICogQHBhcmFtIG1vZGVsTmFtZSDrqqjrjbgg7J2066aEXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSDrqZTshJzrk5wg7J2066aEXG4gKiBAcGFyYW0gZXhpc3RpbmdQYXRoIOq4sOyhtOydmCBwYXRoXG4gKiBAcGFyYW0gbmV3UGF0aCDsg4jroZzsmrQgcGF0aFxuICovXG5mdW5jdGlvbiBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcbiAgZGVjb3JhdG9yTmFtZTogc3RyaW5nLFxuICBtb2RlbE5hbWU6IHN0cmluZyxcbiAgbWV0aG9kTmFtZTogc3RyaW5nLFxuICBleGlzdGluZ1BhdGg6IHN0cmluZyxcbiAgbmV3UGF0aDogc3RyaW5nLFxuKSB7XG4gIGlmIChleGlzdGluZ1BhdGggIT09IFwiXCIgJiYgbmV3UGF0aCAhPT0gXCJcIiAmJiBleGlzdGluZ1BhdGggIT09IG5ld1BhdGgpIHtcbiAgICAvLyDsnbTqsoPsnbQg66y07IqoIOyDge2ZqeydtOuDkOuptOyalCwgYXBpLnBhdGjqsIAg642u7Ja07JSM7JuM7KeA64qUIOyDge2ZqeyeheuLiOuLpC5cbiAgICAvLyDqsIDroLkgQGFwaSh7IHBhdGg6IFwiL2FwaS92MS91c2Vyc1wiIH0pIOuNsOy9lOugiOydtO2EsOqwgCDrtpnslrTsnojripQg66mU7ISc65Oc7JeQXG4gICAgLy8gQHN0cmVhbSh7IHBhdGg6IFwiL2FwaS92MS91c2Vycy9zdHJlYW1cIiB9KSDqsJnsnYAg6rKD7J20IOu2meyWtCDsnojripQg7IOB7Zmp7J6F64uI64ukLlxuICAgIC8vIOydtOugh+qyjCDrkJjrqbQg65GQIOuNsOy9lOugiOydtO2EsOqwgCDqsJnsnYAgYXBp7J2YIHBhdGgg7ZWE65Oc66W8IOqxtOuTnOumrOqyjCDrkJjrr4DroZwsIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEAke2RlY29yYXRvck5hbWV9IGRlY29yYXRvciBvbiAke21vZGVsTmFtZX0uJHttZXRob2ROYW1lfSBoYXMgY29uZmxpY3RpbmcgcGF0aDogJHtuZXdQYXRofS4gVGhlIGRlY29yYXRvciBpcyB0cnlpbmcgdG8gb3ZlcnJpZGUgdGhlIGV4aXN0aW5nIHBhdGgoJHtleGlzdGluZ1BhdGh9KSB3aXRoIHRoZSBuZXcgcGF0aCgke25ld1BhdGh9KS5gLFxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiDquLDsobTsnZgg7Ji17IWY6rO8IOyDiOuhnOyatCDsmLXshZjsnbQg6rK57LmY64qUIOu2gOu2hOydtCDsnojri6TrqbQg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAqIEBwYXJhbSBkZWNvcmF0b3JOYW1lIOuNsOy9lOugiOydtO2EsCDsnbTrpoRcbiAqIEBwYXJhbSBtb2RlbE5hbWUg66qo6424IOydtOumhFxuICogQHBhcmFtIG1ldGhvZE5hbWUg66mU7ISc65OcIOydtOumhFxuICogQHBhcmFtIGV4aXN0aW5nT3B0aW9ucyDquLDsobTsnZgg7Ji17IWYXG4gKiBAcGFyYW0gbmV3T3B0aW9ucyDsg4jroZzsmrQg7Ji17IWYXG4gKi9cbmZ1bmN0aW9uIGFzc2VydE5vQ29uZmxpY3RpbmdPcHRpb25zKFxuICBkZWNvcmF0b3JOYW1lOiBzdHJpbmcsXG4gIG1vZGVsTmFtZTogc3RyaW5nLFxuICBtZXRob2ROYW1lOiBzdHJpbmcsXG4gIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55IC0tIDzslYQg7Im96rKM7Im96rKMIOyigCDqsJHsi5zri6Q+XG4gIGV4aXN0aW5nT3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0gPOydtOuftCDrlYwg7JWE64uI66m0IGFueSDslrjsoJwg7JSB64uI6rmMPlxuICBuZXdPcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKSB7XG4gIE9iamVjdC5rZXlzKG5ld09wdGlvbnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgIGlmIChleGlzdGluZ09wdGlvbnNba2V5XSAmJiAhaXNFcXVhbChleGlzdGluZ09wdGlvbnNba2V5XSwgbmV3T3B0aW9uc1trZXldKSkge1xuICAgICAgLy8g7J206rKD7J20IOustOyKqCDsg4HtmansnbTrg5DrqbTsmpQsIGFwaS5vcHRpb25z6rCAIOuNruyWtOyUjOybjOyngOuKlCDsg4HtmansnoXri4jri6QuXG4gICAgICAvLyDqsIDroLkgQGFwaSh7IHJlc291cmNlTmFtZTogXCJVc2Vyc1wiIH0pIOuNsOy9lOugiOydtO2EsOqwgCDrtpnslrTsnojripQg66mU7ISc65Oc7JeQXG4gICAgICAvLyBAc3RyZWFtKHsgcmVzb3VyY2VOYW1lOiBcIlBvc3RzXCIgfSkg6rCZ7J2AIOqyg+ydtCDrtpnslrQg7J6I64qUIOyDge2ZqeyeheuLiOuLpC5cbiAgICAgIC8vIOydtOugh+qyjCDrkJjrqbQg65GQIOuNsOy9lOugiOydtO2EsOqwgCDqsJnsnYAgYXBp7J2YIG9wdGlvbnMg7IaNIOqwmeydgCDtlYTrk5zrpbwg6rG065Oc66as6rKMIOuQmOuvgOuhnCwg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEAke2RlY29yYXRvck5hbWV9IGRlY29yYXRvciBvbiAke21vZGVsTmFtZX0uJHttZXRob2ROYW1lfSBoYXMgY29uZmxpY3Rpbmcgb3B0aW9uczogJHtrZXl9LiBUaGUgZGVjb3JhdG9yIGlzIHRyeWluZyB0byBvdmVycmlkZSB0aGUgZXhpc3Rpbmcgb3B0aW9uKCR7SlNPTi5zdHJpbmdpZnkoZXhpc3RpbmdPcHRpb25zW2tleV0pfSkgd2l0aCB0aGUgbmV3IG9wdGlvbigke0pTT04uc3RyaW5naWZ5KG5ld09wdGlvbnNba2V5XSl9KS5gLFxuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBaUlBLFNBQVMscUJBQXFCLFFBQXlCLGFBQXFCLGVBQXVCO0NBQ2pHLE1BQU0sU0FBUyxPQUFPO0FBQ3RCLEtBQUksUUFBUSxtQkFBbUIsUUFBUSxvQkFBb0IsZUFBZTtBQUN4RSxRQUFNLElBQUksTUFDUixJQUFJLGNBQWMsZUFBZSxPQUFPLGNBQWMsQ0FBQyxzQ0FBc0MsT0FBTyxZQUFZLEtBQUssR0FBRyxZQUFZLCtGQUNySTtRQUNJO0FBQ0wsU0FBTyxrQkFBa0I7OztBQUk3QixTQUFnQixJQUFJLFVBQStCLEVBQUUsRUFBRTtBQUNyRCxXQUFVO0VBQ1IsWUFBWTtFQUNaLGFBQWE7RUFDYixTQUFTLENBQUMsUUFBUTtFQUNsQixHQUFHO0VBQ0o7QUFFRCxTQUFRLFFBQXlCLGFBQXFCLGVBQW1DO0VBQ3ZGLE1BQU0sWUFBWSxPQUFPLFlBQVksS0FBSyxNQUFNLGFBQWEsR0FBRztBQUNoRSxTQUNFLFdBQ0EsOENBQThDLE9BQU8sWUFBWSxLQUFLLEdBQUcsY0FDMUU7RUFDRCxNQUFNLGFBQWE7QUFHbkIsdUJBQXFCLFFBQVEsYUFBYSxnQkFBZ0IsSUFBSTtFQUU5RCxNQUFNLGNBQWMsSUFBSSxXQUFXLFNBQ2pDLFVBQVUsUUFBUSxVQUFVLEdBQUcsQ0FBQyxRQUFRLFVBQVUsR0FBRyxFQUNyRCxLQUNELENBQUMsR0FBRyxXQUFXLFNBQVMsYUFBYSxLQUFLO0VBQzNDLE1BQU0sT0FBTyxRQUFRLFFBQVE7RUFHN0IsTUFBTSxjQUFjLGVBQWUsTUFDaEMsVUFBUUEsTUFBSSxjQUFjLGFBQWFBLE1BQUksZUFBZSxXQUM1RDtBQUNELE1BQUksYUFBYTtBQUVmLDJCQUF3QixPQUFPLFdBQVcsWUFBWSxZQUFZLE1BQU0sS0FBSztBQUM3RSxlQUFZLE9BQU87QUFHbkIsOEJBQTJCLE9BQU8sV0FBVyxZQUFZLFlBQVksU0FBUyxRQUFRO0FBQ3RGLGVB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
313
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsIm5hbWVzIjpbImFwaSIsInJlZ2lzdGVyZWRBcGlzOiB7XG4gIC8qKlxuICAgKiBtb2RlbE5hbWXsnYAg66qo6424IO2BtOuemOyKpCDsnbTrpoTsnoXri4jri6QuIChleC4gXCJVc2VyTW9kZWxcIilcbiAgICovXG4gIG1vZGVsTmFtZTogc3RyaW5nO1xuICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgb3B0aW9uczogQXBpRGVjb3JhdG9yT3B0aW9ucztcbiAgc3RyZWFtT3B0aW9ucz86IFN0cmVhbURlY29yYXRvck9wdGlvbnM7XG4gIHdlYnNvY2tldE9wdGlvbnM/OiBSZXNvbHZlZFdlYlNvY2tldERlY29yYXRvck9wdGlvbnM7XG4gIHVwbG9hZE9wdGlvbnM/OiBVcGxvYWREZWNvcmF0b3JPcHRpb25zO1xufVtdIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9kZWNvcmF0b3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuXG5pbXBvcnQgeyB0eXBlIEZhc3RpZnlNdWx0aXBhcnRCYXNlT3B0aW9ucyB9IGZyb20gXCJAZmFzdGlmeS9tdWx0aXBhcnRcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIEhUVFBNZXRob2RzIH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSBcInJhZGFzaGlcIjtcbmltcG9ydCB7IHR5cGUgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgdHlwZSBDYWNoZUNvbnRyb2xDb25maWcgfSBmcm9tIFwiLi4vY2FjaGUtY29udHJvbC90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBDb21wcmVzc0NvbmZpZyB9IGZyb20gXCIuLi9jb21wcmVzcy90eXBlc1wiO1xuaW1wb3J0IHsgQmFzZU1vZGVsQ2xhc3MgfSBmcm9tIFwiLi4vZGF0YWJhc2UvYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHsgREIgfSBmcm9tIFwiLi4vZGF0YWJhc2UvZGJcIjtcbmltcG9ydCB7IFB1cmlUcmFuc2FjdGlvbldyYXBwZXIgfSBmcm9tIFwiLi4vZGF0YWJhc2UvcHVyaS13cmFwcGVyXCI7XG5pbXBvcnQgeyB0eXBlIFRyYW5zYWN0aW9uYWxPcHRpb25zIH0gZnJvbSBcIi4uL2RhdGFiYXNlL3B1cmktd3JhcHBlclwiO1xuaW1wb3J0IHsgVXBzZXJ0QnVpbGRlciB9IGZyb20gXCIuLi9kYXRhYmFzZS91cHNlcnQtYnVpbGRlclwiO1xuaW1wb3J0IHsgY29udmVydERvbWFpblRvQ2F0ZWdvcnkgfSBmcm9tIFwiLi4vbG9nZ2VyL2NhdGVnb3J5XCI7XG5pbXBvcnQgeyB0eXBlIERyaXZlcktleSB9IGZyb20gXCIuLi9zdG9yYWdlL2RyaXZlcnNcIjtcbmltcG9ydCB7IHR5cGUgS2V5R2VuZXJhdG9yIH0gZnJvbSBcIi4uL3N0b3JhZ2UvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgQXBpUGFyYW0sIHR5cGUgQXBpUGFyYW1UeXBlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBnZXRNb2RlbE5hbWVGcm9tQ2xhc3NOYW1lIH0gZnJvbSBcIi4uL3V0aWxzL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IEJhc2VGcmFtZUNsYXNzIH0gZnJvbSBcIi4vYmFzZS1mcmFtZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEd1YXJkS2V5cyB7XG4gIHF1ZXJ5OiB0cnVlO1xuICBhZG1pbjogdHJ1ZTtcbiAgdXNlcjogdHJ1ZTtcbn1cbmV4cG9ydCB0eXBlIEd1YXJkS2V5ID0ga2V5b2YgR3VhcmRLZXlzO1xuZXhwb3J0IHR5cGUgU2VydmljZUNsaWVudCA9XG4gIHwgXCJheGlvc1wiXG4gIHwgXCJheGlvcy1tdWx0aXBhcnRcIlxuICB8IFwidGFuc3RhY2stcXVlcnlcIlxuICB8IFwidGFuc3RhY2stbXV0YXRpb25cIlxuICB8IFwidGFuc3RhY2stbXV0YXRpb24tbXVsdGlwYXJ0XCJcbiAgfCBcIndpbmRvdy1mZXRjaFwiO1xuZXhwb3J0IHR5cGUgQXBpRGVjb3JhdG9yT3B0aW9ucyA9IHtcbiAgaHR0cE1ldGhvZD86IEhUVFBNZXRob2RzO1xuICBjb250ZW50VHlwZT86XG4gICAgfCBcInRleHQvcGxhaW5cIlxuICAgIHwgXCJ0ZXh0L2h0bWxcIlxuICAgIHwgXCJ0ZXh0L3htbFwiXG4gICAgfCBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgIHwgXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIjtcbiAgY2xpZW50cz86IFNlcnZpY2VDbGllbnRbXTtcbiAgcGF0aD86IHN0cmluZztcbiAgcmVzb3VyY2VOYW1lPzogc3RyaW5nO1xuICBndWFyZHM/OiBHdWFyZEtleVtdO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdGltZW91dD86IG51bWJlcjtcbiAgLyoqIEFQSSDsnZHri7XsnZggQ2FjaGUtQ29udHJvbCDtl6TrjZQg7ISk7KCVLiDshKTsoJXtlZjsp4Ag7JWK7Jy866m0IGNhY2hlQ29udHJvbEhhbmRsZXIg65iQ64qUIOq4sOuzuOqwkuydtCDsoIHsmqnrkKnri4jri6QuICovXG4gIGNhY2hlQ29udHJvbD86IENhY2hlQ29udHJvbENvbmZpZztcbiAgLyoqIEFQSSDsnZHri7XsnZgg7JWV7LaVIOyEpOyglS4gZmFsc2XroZwg7ISk7KCV7ZWY66m0IOyVley2leydhCDruYTtmZzshLHtmZTtlanri4jri6QuICovXG4gIGNvbXByZXNzPzogQ29tcHJlc3NDb25maWc7XG59O1xuZXhwb3J0IHR5cGUgU3RyZWFtRGVjb3JhdG9yT3B0aW9ucyA9IHtcbiAgdHlwZTogXCJzc2VcIjtcbiAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0g7J2067Kk7Yq4IO2CpOuzhOuhnCDrhJjqsqjso7zripQg6rCS7J2066+A66GcIOyWtOuWpCDtg4DsnoXsnbTrk6Ag7IOB6rSA7JeG7J2MXG4gIGV2ZW50czogei5ab2RPYmplY3Q8YW55PjtcbiAgcGF0aD86IHN0cmluZztcbiAgcmVzb3VyY2VOYW1lPzogc3RyaW5nO1xuICBndWFyZHM/OiBHdWFyZEtleVtdO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zID0ge1xuICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAtLSDsnbTrsqTtirgg7YKk67OE66GcIOuEmOqyqOyjvOuKlCDqsJLsnbTrr4DroZwg7Ja065akIO2DgOyeheydtOuToCDsg4HqtIDsl4bsnYxcbiAgb3V0RXZlbnRzOiB6LlpvZE9iamVjdDxhbnk+O1xuICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAtLSDsnbTrsqTtirgg7YKk67OE66GcIOuEmOqyqOyjvOuKlCDqsJLsnbTrr4DroZwg7Ja065akIO2DgOyeheydtOuToCDsg4HqtIDsl4bsnYxcbiAgaW5FdmVudHM6IHouWm9kT2JqZWN0PGFueT47XG4gIHBhdGg/OiBzdHJpbmc7XG4gIHJlc291cmNlTmFtZT86IHN0cmluZztcbiAgZ3VhcmRzPzogR3VhcmRLZXlbXTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGhlYXJ0YmVhdD86IG51bWJlcjtcbiAgbmFtZXNwYWNlPzogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIFJlc29sdmVkV2ViU29ja2V0RGVjb3JhdG9yT3B0aW9ucyA9IFdlYlNvY2tldERlY29yYXRvck9wdGlvbnMgJiB7XG4gIC8vIGNvZGVnZW7snbQg7YOA7J6FIOydtOumhOydhCDsnqzsgqzsmqntlaAg7IiYIOyeiOuPhOuhnSBzeW5jZXLqsIAgQVNU7JeQ7IScIOuztOqwle2VmOuKlCDrqZTtg4DrjbDsnbTthLBcbiAgb3V0RXZlbnRzVHlwZVJlZj86IEFwaVBhcmFtVHlwZS5SZWY7XG4gIGluRXZlbnRzVHlwZVJlZj86IEFwaVBhcmFtVHlwZS5SZWY7XG59O1xuXG50eXBlIEJ1ZmZlclVwbG9hZE9wdGlvbnMgPSB7XG4gIGNvbnN1bWU/OiBcImJ1ZmZlclwiO1xufTtcbnR5cGUgU3RyZWFtVXBsb2FkT3B0aW9ucyA9IHtcbiAgY29uc3VtZTogXCJzdHJlYW1cIjtcbiAgZGVzdGluYXRpb246IERyaXZlcktleTtcbiAga2V5R2VuZXJhdG9yPzogS2V5R2VuZXJhdG9yO1xufTtcbmV4cG9ydCB0eXBlIFVwbG9hZERlY29yYXRvck9wdGlvbnMgPSB7XG4gIGd1YXJkcz86IEd1YXJkS2V5W107XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBsaW1pdHM/OiBGYXN0aWZ5TXVsdGlwYXJ0QmFzZU9wdGlvbnNbXCJsaW1pdHNcIl07XG59ICYgKEJ1ZmZlclVwbG9hZE9wdGlvbnMgfCBTdHJlYW1VcGxvYWRPcHRpb25zKTtcblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyZWRBcGlzOiB7XG4gIC8qKlxuICAgKiBtb2RlbE5hbWXsnYAg66qo6424IO2BtOuemOyKpCDsnbTrpoTsnoXri4jri6QuIChleC4gXCJVc2VyTW9kZWxcIilcbiAgICovXG4gIG1vZGVsTmFtZTogc3RyaW5nO1xuICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgb3B0aW9uczogQXBpRGVjb3JhdG9yT3B0aW9ucztcbiAgc3RyZWFtT3B0aW9ucz86IFN0cmVhbURlY29yYXRvck9wdGlvbnM7XG4gIHdlYnNvY2tldE9wdGlvbnM/OiBSZXNvbHZlZFdlYlNvY2tldERlY29yYXRvck9wdGlvbnM7XG4gIHVwbG9hZE9wdGlvbnM/OiBVcGxvYWREZWNvcmF0b3JPcHRpb25zO1xufVtdID0gW107XG5leHBvcnQgdHlwZSBFeHRlbmRlZEFwaSA9IHtcbiAgbW9kZWxOYW1lOiBzdHJpbmc7XG4gIG1ldGhvZE5hbWU6IHN0cmluZztcbiAgcGF0aDogc3RyaW5nO1xuICBvcHRpb25zOiBBcGlEZWNvcmF0b3JPcHRpb25zO1xuICBzdHJlYW1PcHRpb25zPzogU3RyZWFtRGVjb3JhdG9yT3B0aW9ucztcbiAgd2Vic29ja2V0T3B0aW9ucz86IFJlc29sdmVkV2ViU29ja2V0RGVjb3JhdG9yT3B0aW9ucztcbiAgdXBsb2FkT3B0aW9ucz86IFVwbG9hZERlY29yYXRvck9wdGlvbnM7XG4gIHR5cGVQYXJhbWV0ZXJzOiBBcGlQYXJhbVR5cGUuVHlwZVBhcmFtW107XG4gIHBhcmFtZXRlcnM6IEFwaVBhcmFtW107XG4gIHJldHVyblR5cGU6IEFwaVBhcmFtVHlwZTtcbn07XG50eXBlIERlY29yYXRvclRhcmdldCA9IHsgY29uc3RydWN0b3I6IHsgbmFtZTogc3RyaW5nIH0gfTtcblxuY29uc3QgREVDT1JBVE9SX1RZUEVTID0ge1xuICBBUEk6IFN5bWJvbChcImFwaVwiKSxcbiAgU1RSRUFNOiBTeW1ib2woXCJzdHJlYW1cIiksXG4gIFdFQlNPQ0tFVDogU3ltYm9sKFwid2Vic29ja2V0XCIpLFxuICBVUExPQUQ6IFN5bWJvbChcInVwbG9hZFwiKSxcbn0gYXMgY29uc3Q7XG5cbmZ1bmN0aW9uIGNoZWNrU2luZ2xlRGVjb3JhdG9yKHRhcmdldDogRGVjb3JhdG9yVGFyZ2V0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZWNvcmF0b3JUeXBlOiBzeW1ib2wpIHtcbiAgY29uc3QgbWV0aG9kID0gdGFyZ2V0W3Byb3BlcnR5S2V5IGFzIGtleW9mIHR5cGVvZiB0YXJnZXRdIGFzIHsgX19kZWNvcmF0b3JUeXBlPzogc3ltYm9sIH07XG4gIGlmIChtZXRob2Q/Ll9fZGVjb3JhdG9yVHlwZSAmJiBtZXRob2Q/Ll9fZGVjb3JhdG9yVHlwZSAhPT0gZGVjb3JhdG9yVHlwZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBAJHtkZWNvcmF0b3JUeXBlLmRlc2NyaXB0aW9uID8/IFN0cmluZyhkZWNvcmF0b3JUeXBlKX0gZGVjb3JhdG9yIGNhbiBvbmx5IGJlIHVzZWQgb25jZSBvbiAke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfS4ke3Byb3BlcnR5S2V5fS4gWW91IGNhbiB1c2Ugb25seSBvbmUgb2YgQGFwaSwgQHN0cmVhbSwgQHdlYnNvY2tldCwgb3IgQHVwbG9hZCBkZWNvcmF0b3Igb24gdGhlIHNhbWUgbWV0aG9kLmAsXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBtZXRob2QuX19kZWNvcmF0b3JUeXBlID0gZGVjb3JhdG9yVHlwZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBpKG9wdGlvbnM6IEFwaURlY29yYXRvck9wdGlvbnMgPSB7fSkge1xuICBvcHRpb25zID0ge1xuICAgIGh0dHBNZXRob2Q6IFwiR0VUXCIsXG4gICAgY29udGVudFR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgIGNsaWVudHM6IFtcImF4aW9zXCJdLFxuICAgIC4uLm9wdGlvbnMsXG4gIH07XG5cbiAgcmV0dXJuICh0YXJnZXQ6IERlY29yYXRvclRhcmdldCwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSA9PiB7XG4gICAgY29uc3QgbW9kZWxOYW1lID0gZ2V0TW9kZWxOYW1lRnJvbUNsYXNzTmFtZSh0YXJnZXQuY29uc3RydWN0b3IubmFtZSk7XG4gICAgYXNzZXJ0KFxuICAgICAgbW9kZWxOYW1lLFxuICAgICAgYG1vZGVsTmFtZSBpcyByZXF1aXJlZCBvbiBAYXBpIGRlY29yYXRvciBvbiAke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfS4ke3Byb3BlcnR5S2V5fWAsXG4gICAgKTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gcHJvcGVydHlLZXk7XG5cbiAgICAvLyDrqZTshJzrk5zsl5Ag6rG466awIOuNsOy9lOugiOydtO2EsCDspJHrs7Ug7LK07YGsXG4gICAgY2hlY2tTaW5nbGVEZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSwgREVDT1JBVE9SX1RZUEVTLkFQSSk7XG5cbiAgICBjb25zdCBkZWZhdWx0UGF0aCA9IGAvJHtpbmZsZWN0aW9uLmNhbWVsaXplKFxuICAgICAgbW9kZWxOYW1lLnJlcGxhY2UoL01vZGVsJC8sIFwiXCIpLnJlcGxhY2UoL0ZyYW1lJC8sIFwiXCIpLFxuICAgICAgdHJ1ZSxcbiAgICApfS8ke2luZmxlY3Rpb24uY2FtZWxpemUocHJvcGVydHlLZXksIHRydWUpfWA7XG4gICAgY29uc3QgcGF0aCA9IG9wdGlvbnMucGF0aCA/PyBkZWZhdWx0UGF0aDtcblxuICAgIC8vIOq4sOyhtCDrj5nsnbztlZwg66mU7ISc65Oc6rCAIOyeiOuKlOyngCDtmZXsnbgg7ZuEIOyeiOuKlCDqsr3smrAgb3ZlcnJpZGVcbiAgICBjb25zdCBleGlzdGluZ0FwaSA9IHJlZ2lzdGVyZWRBcGlzLmZpbmQoXG4gICAgICAoYXBpKSA9PiBhcGkubW9kZWxOYW1lID09PSBtb2RlbE5hbWUgJiYgYXBpLm1ldGhvZE5hbWUgPT09IG1ldGhvZE5hbWUsXG4gICAgKTtcbiAgICBpZiAoZXhpc3RpbmdBcGkpIHtcbiAgICAgIC8vIOq4sOyhtOydmCBwYXRo7JmAIOyDiOuhnOyatCBwYXRo6rCAIOuLpOultOuLpOuptCg967mIIOyKpO2KuOungeydtCDslYTri4jsl4jripTrjbAg64uk66W4IOyKpO2KuOungeycvOuhnCDrsJTrgIzqsowg65Cc64uk66m0KSDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ1BhdGgoXCJhcGlcIiwgbW9kZWxOYW1lLCBtZXRob2ROYW1lLCBleGlzdGluZ0FwaS5wYXRoLCBwYXRoKTtcbiAgICAgIGV4aXN0aW5nQXBpLnBhdGggPSBwYXRoO1xuXG4gICAgICAvLyDquLDsobTsnZgg7Ji17IWY6rO8IOyDiOuhnOyatCDsmLXshZjsnbQg6rK57LmY64qUIOu2gOu2hOydtCDsnojri6TrqbQg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAgICAgIGFzc2VydE5vQ29uZmxpY3RpbmdPcHRpb25zKFwiYXBpXCIsIG1vZGVsTmFtZSwgbWV0aG9kTmFtZSwgZXhpc3RpbmdBcGkub3B0aW9ucywgb3B0aW9ucyk7XG4gICAgICBleGlzdGluZ0FwaS5vcHRpb25zID0ge1xuICAgICAgICAuLi5leGlzdGluZ0FwaS5vcHRpb25zLCAvLyDquLDsobTsnZgg7Ji17IWY7J2EIOyhtOykke2VmOuQmFxuICAgICAgICAuLi5vcHRpb25zLCAvLyBAYXBpIOuNsOy9lOugiOydtO2EsOydmCDsmLXshZjsnYQg7LaU6rCA7ZWp64uI64ukLlxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVnaXN0ZXJlZEFwaXMucHVzaCh7XG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgICBkZXNjcmlwdG9yLnZhbHVlID0gYXN5bmMgZnVuY3Rpb24gKHRoaXM6IEJhc2VNb2RlbENsYXNzIHwgQmFzZUZyYW1lQ2xhc3MsIC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlTW9kZWxDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5tb2RlbE5hbWUsIFwibW9kZWxcIikpLmRlYnVnKFxuICAgICAgICAgIFwiYXBpOiB7aHR0cE1ldGhvZH0ge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGh0dHBNZXRob2Q6IG9wdGlvbnMuaHR0cE1ldGhvZCxcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwiYXBpOiB7aHR0cE1ldGhvZH0ge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGh0dHBNZXRob2Q6IG9wdGlvbnMuaHR0cE1ldGhvZCxcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJlYW0ob3B0aW9uczogU3RyZWFtRGVjb3JhdG9yT3B0aW9ucykge1xuICByZXR1cm4gKHRhcmdldDogRGVjb3JhdG9yVGFyZ2V0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICBjb25zdCBtb2RlbE5hbWUgPSBnZXRNb2RlbE5hbWVGcm9tQ2xhc3NOYW1lKHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lKTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEBzdHJlYW0gZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIC8vIOuplOyEnOuTnOyXkCDqsbjrprAg642w7L2U66CI7J207YSwIOykkeuztSDssrTtgaxcbiAgICBjaGVja1NpbmdsZURlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5LCBERUNPUkFUT1JfVFlQRVMuU1RSRUFNKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQYXRoID0gYC8ke2luZmxlY3Rpb24uY2FtZWxpemUoXG4gICAgICBtb2RlbE5hbWUucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIiksXG4gICAgICB0cnVlLFxuICAgICl9LyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShwcm9wZXJ0eUtleSwgdHJ1ZSl9YDtcbiAgICBjb25zdCBwYXRoID0gb3B0aW9ucy5wYXRoID8/IGRlZmF1bHRQYXRoO1xuICAgIC8vIHN0cmVhbSDsoITsmqkg7ZWE65OcKGV2ZW50cywgdHlwZSnripQgQXBpRGVjb3JhdG9yT3B0aW9uc+yXkCDsho3tlZjsp4Ag7JWK7Jy866+A66GcIOygnOyZuFxuICAgIGNvbnN0IHsgZXZlbnRzOiBfLCB0eXBlOiBfdHlwZSwgLi4uYXBpT3B0aW9ucyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBvcHRpb25zV2l0aERlZmF1bHRzID0ge1xuICAgICAgLi4uYXBpT3B0aW9ucyxcbiAgICAgIGh0dHBNZXRob2Q6IFwiR0VUXCIgYXMgSFRUUE1ldGhvZHMsXG4gICAgfTtcblxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChhcGkpID0+IGFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuICAgIGlmIChleGlzdGluZ0FwaSkge1xuICAgICAgLy8g6riw7KG07J2YIHBhdGjsmYAg7IOI66Gc7Jq0IHBhdGjqsIAg64uk66W064uk66m0KD3ruYgg7Iqk7Yq466eB7J20IOyVhOuLiOyXiOuKlOuNsCDri6Trpbgg7Iqk7Yq466eB7Jy866GcIOuwlOuAjOqyjCDrkJzri6TrqbQpIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgICBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcInN0cmVhbVwiLCBtb2RlbE5hbWUsIG1ldGhvZE5hbWUsIGV4aXN0aW5nQXBpLnBhdGgsIHBhdGgpO1xuICAgICAgZXhpc3RpbmdBcGkucGF0aCA9IHBhdGg7XG5cbiAgICAgIC8vIOq4sOyhtOydmCDsmLXshZjqs7wg7IOI66Gc7Jq0IOyYteyFmOydtCDqsrnsuZjripQg67aA67aE7J20IOyeiOuLpOuptCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXG4gICAgICAgIFwic3RyZWFtXCIsXG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgZXhpc3RpbmdBcGkub3B0aW9ucyxcbiAgICAgICAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICk7XG4gICAgICBleGlzdGluZ0FwaS5vcHRpb25zID0ge1xuICAgICAgICAuLi5leGlzdGluZ0FwaS5vcHRpb25zLCAvLyDquLDsobTsnZgg7Ji17IWY7J2EIOyhtOykke2VmOuQmFxuICAgICAgICAuLi5vcHRpb25zV2l0aERlZmF1bHRzLCAvLyBAc3RyZWFtIOuNsOy9lOugiOydtO2EsOydmCDsmLXshZjsnYQg7LaU6rCA7ZWp64uI64ukLlxuICAgICAgfTtcblxuICAgICAgZXhpc3RpbmdBcGkuc3RyZWFtT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZ2lzdGVyZWRBcGlzLnB1c2goe1xuICAgICAgICBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZE5hbWUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIHN0cmVhbU9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcyB8IEJhc2VGcmFtZUNsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZU1vZGVsQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMubW9kZWxOYW1lLCBcIm1vZGVsXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcInN0cmVhbToge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwic3RyZWFtOiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYnNvY2tldChvcHRpb25zOiBXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zKSB7XG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IGdldE1vZGVsTmFtZUZyb21DbGFzc05hbWUodGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUpO1xuICAgIGFzc2VydChcbiAgICAgIG1vZGVsTmFtZSxcbiAgICAgIGBtb2RlbE5hbWUgaXMgcmVxdWlyZWQgb24gQHdlYnNvY2tldCBkZWNvcmF0b3Igb24gJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleX1gLFxuICAgICk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHByb3BlcnR5S2V5O1xuXG4gICAgY2hlY2tTaW5nbGVEZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSwgREVDT1JBVE9SX1RZUEVTLldFQlNPQ0tFVCk7XG5cbiAgICBjb25zdCBkZWZhdWx0UGF0aCA9IGAvJHtpbmZsZWN0aW9uLmNhbWVsaXplKFxuICAgICAgbW9kZWxOYW1lLnJlcGxhY2UoL01vZGVsJC8sIFwiXCIpLnJlcGxhY2UoL0ZyYW1lJC8sIFwiXCIpLFxuICAgICAgdHJ1ZSxcbiAgICApfS8ke2luZmxlY3Rpb24uY2FtZWxpemUocHJvcGVydHlLZXksIHRydWUpfWA7XG4gICAgY29uc3QgcGF0aCA9IG9wdGlvbnMucGF0aCA/PyBkZWZhdWx0UGF0aDtcbiAgICBjb25zdCB7IG91dEV2ZW50czogX291dEV2ZW50cywgaW5FdmVudHM6IF9pbkV2ZW50cywgLi4uYXBpT3B0aW9ucyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBvcHRpb25zV2l0aERlZmF1bHRzID0ge1xuICAgICAgLi4uYXBpT3B0aW9ucyxcbiAgICAgIGh0dHBNZXRob2Q6IFwiR0VUXCIgYXMgSFRUUE1ldGhvZHMsXG4gICAgfTtcblxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChhcGkpID0+IGFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuICAgIGlmIChleGlzdGluZ0FwaSkge1xuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ1BhdGgoXCJ3ZWJzb2NrZXRcIiwgbW9kZWxOYW1lLCBtZXRob2ROYW1lLCBleGlzdGluZ0FwaS5wYXRoLCBwYXRoKTtcbiAgICAgIGV4aXN0aW5nQXBpLnBhdGggPSBwYXRoO1xuXG4gICAgICBhc3NlcnROb0NvbmZsaWN0aW5nT3B0aW9ucyhcbiAgICAgICAgXCJ3ZWJzb2NrZXRcIixcbiAgICAgICAgbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2ROYW1lLFxuICAgICAgICBleGlzdGluZ0FwaS5vcHRpb25zLFxuICAgICAgICBvcHRpb25zV2l0aERlZmF1bHRzLFxuICAgICAgKTtcbiAgICAgIGV4aXN0aW5nQXBpLm9wdGlvbnMgPSB7XG4gICAgICAgIC4uLmV4aXN0aW5nQXBpLm9wdGlvbnMsXG4gICAgICAgIC4uLm9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICB9O1xuXG4gICAgICBleGlzdGluZ0FwaS53ZWJzb2NrZXRPcHRpb25zID0gb3B0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgcmVnaXN0ZXJlZEFwaXMucHVzaCh7XG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgb3B0aW9uczogb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICAgd2Vic29ja2V0T3B0aW9uczogb3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgICBkZXNjcmlwdG9yLnZhbHVlID0gYXN5bmMgZnVuY3Rpb24gKHRoaXM6IEJhc2VNb2RlbENsYXNzIHwgQmFzZUZyYW1lQ2xhc3MsIC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlTW9kZWxDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5tb2RlbE5hbWUsIFwibW9kZWxcIikpLmRlYnVnKFxuICAgICAgICAgIFwid2Vic29ja2V0OiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VGcmFtZUNsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLmZyYW1lTmFtZSwgXCJmcmFtZVwiKSkuZGVidWcoXG4gICAgICAgICAgXCJ3ZWJzb2NrZXQ6IHttb2RlbH0ue21ldGhvZH1cIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgICAgICAgbWV0aG9kOiBtZXRob2ROYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNhY3Rpb25hbChvcHRpb25zOiBUcmFuc2FjdGlvbmFsT3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgaXNvbGF0aW9uLCByZWFkT25seSwgZGJQcmVzZXQgPSBcIndcIiB9ID0gb3B0aW9ucztcblxuICByZXR1cm4gKHRhcmdldDogRGVjb3JhdG9yVGFyZ2V0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgY29uc3QgbW9kZWxOYW1lID0gZ2V0TW9kZWxOYW1lRnJvbUNsYXNzTmFtZSh0YXJnZXQuY29uc3RydWN0b3IubmFtZSk7XG4gICAgYXNzZXJ0KFxuICAgICAgbW9kZWxOYW1lLFxuICAgICAgYG1vZGVsTmFtZSBpcyByZXF1aXJlZCBvbiBAdHJhbnNhY3Rpb25hbCBkZWNvcmF0b3Igb24gJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleX1gLFxuICAgICk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHByb3BlcnR5S2V5O1xuXG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcywgLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcInRyYW5zYWN0aW9uYWw6IHttb2RlbH0ue21ldGhvZH1cIiwge1xuICAgICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZXhpc3RpbmdDb250ZXh0ID0gREIudHJhbnNhY3Rpb25TdG9yYWdlLmdldFN0b3JlKCk7XG5cbiAgICAgIC8vIEFzeW5jTG9jYWxTdG9yYWdlIOy7qO2FjeyKpO2KuCDsl4bqsbDrgpgg7ZW064u5IHByZXNldOydmCDtirjrnpzsnq3shZjsnbQg7JeG7Jy866m0IOyDiOuhnCDsi5zsnpFcbiAgICAgIGNvbnN0IHN0YXJ0VHJhbnNhY3Rpb24gPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHB1cmkgPSB0aGlzLmdldFB1cmkoZGJQcmVzZXQpO1xuXG4gICAgICAgIHJldHVybiBwdXJpLmtuZXgudHJhbnNhY3Rpb24oXG4gICAgICAgICAgYXN5bmMgKHRyeCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJuZXcgdHJhbnNhY3Rpb24gY29udGV4dDoge2RiUHJlc2V0fVwiLCB7IGRiUHJlc2V0IH0pO1xuICAgICAgICAgICAgY29uc3QgdHJ4V3JhcHBlciA9IG5ldyBQdXJpVHJhbnNhY3Rpb25XcmFwcGVyKHRyeCwgbmV3IFVwc2VydEJ1aWxkZXIoKSk7XG4gICAgICAgICAgICAvLyBUcmFuc2FjdGlvbkNvbnRleHTsl5Ag7Yq4656c7J6t7IWYIOyggOyepVxuICAgICAgICAgICAgREIuZ2V0VHJhbnNhY3Rpb25Db250ZXh0KCkuc2V0VHJhbnNhY3Rpb24oZGJQcmVzZXQsIHRyeFdyYXBwZXIpO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAvLyDtirjrnpzsnq3shZgg7KCc6rGwXG4gICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiZGVsZXRlIHRyYW5zYWN0aW9uIGNvbnRleHQ6IHtkYlByZXNldH1cIiwgeyBkYlByZXNldCB9KTtcbiAgICAgICAgICAgICAgREIuZ2V0VHJhbnNhY3Rpb25Db250ZXh0KCkuZGVsZXRlVHJhbnNhY3Rpb24oZGJQcmVzZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBpc29sYXRpb25MZXZlbDogaXNvbGF0aW9uLCByZWFkT25seSB9LFxuICAgICAgICApO1xuICAgICAgfTtcblxuICAgICAgLy8gQXN5bmNMb2NhbFN0b3JhZ2Ug7Luo7YWN7Iqk7Yq46rCAIOyXhuycvOuptCDsg4jroZwg7IOd7ISxXG4gICAgICBpZiAoIWV4aXN0aW5nQ29udGV4dCkge1xuICAgICAgICByZXR1cm4gREIucnVuV2l0aFRyYW5zYWN0aW9uKHN0YXJ0VHJhbnNhY3Rpb24pO1xuICAgICAgfVxuXG4gICAgICAvLyDsnbTrr7ggQXN5bmNMb2NhbFN0b3JhZ2Ug7Luo7YWN7Iqk7Yq4IOyViOyXkCDsnojripTsp4Ag7ZmV7J24IO2bhCDtlbTri7kgcHJlc2V07J2YIO2KuOuenOyereyFmOydtCDsnbTrr7gg7J6I7Jy866m0IOyerOyCrOyaqVxuICAgICAgaWYgKGV4aXN0aW5nQ29udGV4dD8uZ2V0VHJhbnNhY3Rpb24oZGJQcmVzZXQpKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwicmV1c2UgdHJhbnNhY3Rpb24gY29udGV4dDoge2RiUHJlc2V0fVwiLCB7IGRiUHJlc2V0IH0pO1xuICAgICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9XG5cbiAgICAgIC8vIOy7qO2FjeyKpO2KuOuKlCDsnojsp4Drp4wg7J20IHByZXNldOydmCDtirjrnpzsnq3shZjsnYAg7JeG64qUIOqyveyasCAo6rCZ7J2AIOy7qO2FjeyKpO2KuCDrgrTsl5DshJwg7Iuk7ZaJKVxuICAgICAgcmV0dXJuIHN0YXJ0VHJhbnNhY3Rpb24oKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gIH07XG59XG5cbi8qKlxuICog7YyM7J28IOyXheuhnOuTnCBBUEnrpbwg7IOd7ISx7ZW07KSN64uI64ukLiAoQGFwaSDrjbDsvZTroIjsnbTthLAg7JeG7J20IOuPheumveyggeycvOuhnCDsgqzsmqkpXG4gKiBAcGFyYW0gb3B0aW9uc1xuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwbG9hZChvcHRpb25zOiBVcGxvYWREZWNvcmF0b3JPcHRpb25zID0geyBjb25zdW1lOiBcImJ1ZmZlclwiIH0pIHtcbiAgcmV0dXJuICh0YXJnZXQ6IERlY29yYXRvclRhcmdldCwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSA9PiB7XG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IGdldE1vZGVsTmFtZUZyb21DbGFzc05hbWUodGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUpO1xuICAgIGFzc2VydChcbiAgICAgIG1vZGVsTmFtZSxcbiAgICAgIGBtb2RlbE5hbWUgaXMgcmVxdWlyZWQgb24gQHVwbG9hZCBkZWNvcmF0b3Igb24gJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleX1gLFxuICAgICk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHByb3BlcnR5S2V5O1xuXG4gICAgLy8g66mU7ISc65Oc7JeQIOqxuOumsCDrjbDsvZTroIjsnbTthLAg7KSR67O1IOyytO2BrFxuICAgIGNoZWNrU2luZ2xlRGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHlLZXksIERFQ09SQVRPUl9UWVBFUy5VUExPQUQpO1xuXG4gICAgY29uc3QgZGVmYXVsdFBhdGggPSBgLyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShcbiAgICAgIG1vZGVsTmFtZS5yZXBsYWNlKC9Nb2RlbCQvLCBcIlwiKS5yZXBsYWNlKC9GcmFtZSQvLCBcIlwiKSxcbiAgICAgIHRydWUsXG4gICAgKX0vJHtpbmZsZWN0aW9uLmNhbWVsaXplKG1ldGhvZE5hbWUsIHRydWUpfWA7XG5cbiAgICAvLyByZWdpc3RlcmVkQXBpc+yXkOyEnCDtlbTri7kgQVBJIOywvuyVhOyEnCB1cGxvYWRPcHRpb25zIOy2lOqwgFxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChhcGkpID0+IGFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuXG4gICAgaWYgKGV4aXN0aW5nQXBpKSB7XG4gICAgICAvLyDsnqzrk7HroZ0g7IucIOyXheuhnOuTnCDsmLXshZjrp4wg6rCx7IugXG4gICAgICBleGlzdGluZ0FwaS51cGxvYWRPcHRpb25zID0gb3B0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8g7IOI66GcIOuTseuhnVxuICAgICAgcmVnaXN0ZXJlZEFwaXMucHVzaCh7XG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgcGF0aDogZGVmYXVsdFBhdGgsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBodHRwTWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICBjbGllbnRzOiBbXCJheGlvcy1tdWx0aXBhcnRcIiwgXCJ0YW5zdGFjay1tdXRhdGlvbi1tdWx0aXBhcnRcIl0sXG4gICAgICAgICAgZ3VhcmRzOiBvcHRpb25zLmd1YXJkcyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogb3B0aW9ucy5kZXNjcmlwdGlvbixcbiAgICAgICAgfSxcbiAgICAgICAgdXBsb2FkT3B0aW9uczogb3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiAodGhpczogQmFzZU1vZGVsQ2xhc3MgfCBCYXNlRnJhbWVDbGFzcywgLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VNb2RlbENsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLm1vZGVsTmFtZSwgXCJtb2RlbFwiKSkuZGVidWcoXG4gICAgICAgICAgXCJ1cGxvYWQ6IHttb2RlbH0ue21ldGhvZH1cIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgICAgICAgbWV0aG9kOiBtZXRob2ROYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZUZyYW1lQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMuZnJhbWVOYW1lLCBcImZyYW1lXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcInVwbG9hZDoge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cblxuLyoqXG4gKiDquLDsobTsnZggcGF0aOyZgCDsg4jroZzsmrQgcGF0aOqwgCDri6TrpbTri6TrqbQoPeqwkuydtCDsnojrjZgg7Iqk7Yq466eB7J20IOuLpOuluCDqsJLsnbQg7J6I64qUIOyKpO2KuOungeycvOuhnCDrsJTrgIzqsowg65Cc64uk66m0KSDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICogQHBhcmFtIGRlY29yYXRvck5hbWUg642w7L2U66CI7J207YSwIOydtOumhFxuICogQHBhcmFtIG1vZGVsTmFtZSDrqqjrjbgg7J2066aEXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSDrqZTshJzrk5wg7J2066aEXG4gKiBAcGFyYW0gZXhpc3RpbmdQYXRoIOq4sOyhtOydmCBwYXRoXG4gKiBAcGFyYW0gbmV3UGF0aCDsg4jroZzsmrQgcGF0aFxuICovXG5mdW5jdGlvbiBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcbiAgZGVjb3JhdG9yTmFtZTogc3RyaW5nLFxuICBtb2RlbE5hbWU6IHN0cmluZyxcbiAgbWV0aG9kTmFtZTogc3RyaW5nLFxuICBleGlzdGluZ1BhdGg6IHN0cmluZyxcbiAgbmV3UGF0aDogc3RyaW5nLFxuKSB7XG4gIGlmIChleGlzdGluZ1BhdGggIT09IFwiXCIgJiYgbmV3UGF0aCAhPT0gXCJcIiAmJiBleGlzdGluZ1BhdGggIT09IG5ld1BhdGgpIHtcbiAgICAvLyDsnbTqsoPsnbQg66y07IqoIOyDge2ZqeydtOuDkOuptOyalCwgYXBpLnBhdGjqsIAg642u7Ja07JSM7JuM7KeA64qUIOyDge2ZqeyeheuLiOuLpC5cbiAgICAvLyDqsIDroLkgQGFwaSh7IHBhdGg6IFwiL2FwaS92MS91c2Vyc1wiIH0pIOuNsOy9lOugiOydtO2EsOqwgCDrtpnslrTsnojripQg66mU7ISc65Oc7JeQXG4gICAgLy8gQHN0cmVhbSh7IHBhdGg6IFwiL2FwaS92MS91c2Vycy9zdHJlYW1cIiB9KSDqsJnsnYAg6rKD7J20IOu2meyWtCDsnojripQg7IOB7Zmp7J6F64uI64ukLlxuICAgIC8vIOydtOugh+qyjCDrkJjrqbQg65GQIOuNsOy9lOugiOydtO2EsOqwgCDqsJnsnYAgYXBp7J2YIHBhdGgg7ZWE65Oc66W8IOqxtOuTnOumrOqyjCDrkJjrr4DroZwsIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEAke2RlY29yYXRvck5hbWV9IGRlY29yYXRvciBvbiAke21vZGVsTmFtZX0uJHttZXRob2ROYW1lfSBoYXMgY29uZmxpY3RpbmcgcGF0aDogJHtuZXdQYXRofS4gVGhlIGRlY29yYXRvciBpcyB0cnlpbmcgdG8gb3ZlcnJpZGUgdGhlIGV4aXN0aW5nIHBhdGgoJHtleGlzdGluZ1BhdGh9KSB3aXRoIHRoZSBuZXcgcGF0aCgke25ld1BhdGh9KS5gLFxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiDquLDsobTsnZgg7Ji17IWY6rO8IOyDiOuhnOyatCDsmLXshZjsnbQg6rK57LmY64qUIOu2gOu2hOydtCDsnojri6TrqbQg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAqIEBwYXJhbSBkZWNvcmF0b3JOYW1lIOuNsOy9lOugiOydtO2EsCDsnbTrpoRcbiAqIEBwYXJhbSBtb2RlbE5hbWUg66qo6424IOydtOumhFxuICogQHBhcmFtIG1ldGhvZE5hbWUg66mU7ISc65OcIOydtOumhFxuICogQHBhcmFtIGV4aXN0aW5nT3B0aW9ucyDquLDsobTsnZgg7Ji17IWYXG4gKiBAcGFyYW0gbmV3T3B0aW9ucyDsg4jroZzsmrQg7Ji17IWYXG4gKi9cbmZ1bmN0aW9uIGFzc2VydE5vQ29uZmxpY3RpbmdPcHRpb25zKFxuICBkZWNvcmF0b3JOYW1lOiBzdHJpbmcsXG4gIG1vZGVsTmFtZTogc3RyaW5nLFxuICBtZXRob2ROYW1lOiBzdHJpbmcsXG4gIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55IC0tIDzslYQg7Im96rKM7Im96rKMIOyigCDqsJHsi5zri6Q+XG4gIGV4aXN0aW5nT3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0gPOydtOuftCDrlYwg7JWE64uI66m0IGFueSDslrjsoJwg7JSB64uI6rmMPlxuICBuZXdPcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKSB7XG4gIE9iamVjdC5rZXlzKG5ld09wdGlvbnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgIGlmIChleGlzdGluZ09wdGlvbnNba2V5XSAmJiAhaXNFcXVhbChleGlzdGluZ09wdGlvbnNba2V5XSwgbmV3T3B0aW9uc1trZXldKSkge1xuICAgICAgLy8g7J206rKD7J20IOustOyKqCDsg4HtmansnbTrg5DrqbTsmpQsIGFwaS5vcHRpb25z6rCAIOuNruyWtOyUjOybjOyngOuKlCDsg4HtmansnoXri4jri6QuXG4gICAgICAvLyDqsIDroLkgQGFwaSh7IHJlc291cmNlTmFtZTogXCJVc2Vyc1wiIH0pIOuNsOy9lOugiOydtO2EsOqwgCDrtpnslrTsnojripQg66mU7ISc65Oc7JeQXG4gICAgICAvLyBAc3RyZWFtKHsgcmVzb3VyY2VOYW1lOiBcIlBvc3RzXCIgfSkg6rCZ7J2AIOqyg+ydtCDrtpnslrQg7J6I64qUIOyDge2ZqeyeheuLiOuLpC5cbiAgICAgIC8vIOydtOugh+qyjCDrkJjrqbQg65GQIOuNsOy9lOugiOydtO2EsOqwgCDqsJnsnYAgYXBp7J2YIG9wdGlvbnMg7IaNIOqwmeydgCDtlYTrk5zrpbwg6rG065Oc66as6rKMIOuQmOuvgOuhnCwg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEAke2RlY29yYXRvck5hbWV9IGRlY29yYXRvciBvbiAke21vZGVsTmFtZX0uJHttZXRob2ROYW1lfSBoYXMgY29uZmxpY3Rpbmcgb3B0aW9uczogJHtrZXl9LiBUaGUgZGVjb3JhdG9yIGlzIHRyeWluZyB0byBvdmVycmlkZSB0aGUgZXhpc3Rpbmcgb3B0aW9uKCR7SlNPTi5zdHJpbmdpZnkoZXhpc3RpbmdPcHRpb25zW2tleV0pfSkgd2l0aCB0aGUgbmV3IG9wdGlvbigke0pTT04uc3RyaW5naWZ5KG5ld09wdGlvbnNba2V5XSl9KS5gLFxuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQWlJQSxTQUFTLHFCQUFxQixRQUF5QixhQUFxQixlQUF1QjtDQUNqRyxNQUFNLFNBQVMsT0FBTztBQUN0QixLQUFJLFFBQVEsbUJBQW1CLFFBQVEsb0JBQW9CLGVBQWU7QUFDeEUsUUFBTSxJQUFJLE1BQ1IsSUFBSSxjQUFjLGVBQWUsT0FBTyxjQUFjLENBQUMsc0NBQXNDLE9BQU8sWUFBWSxLQUFLLEdBQUcsWUFBWSwrRkFDckk7UUFDSTtBQUNMLFNBQU8sa0JBQWtCOzs7QUFJN0IsU0FBZ0IsSUFBSSxVQUErQixFQUFFLEVBQUU7QUFDckQsV0FBVTtFQUNSLFlBQVk7RUFDWixhQUFhO0VBQ2IsU0FBUyxDQUFDLFFBQVE7RUFDbEIsR0FBRztFQUNKO0FBRUQsU0FBUSxRQUF5QixhQUFxQixlQUFtQztFQUN2RixNQUFNLFlBQVksMEJBQTBCLE9BQU8sWUFBWSxLQUFLO0FBQ3BFLFNBQ0UsV0FDQSw4Q0FBOEMsT0FBTyxZQUFZLEtBQUssR0FBRyxjQUMxRTtFQUNELE1BQU0sYUFBYTtBQUduQix1QkFBcUIsUUFBUSxhQUFhLGdCQUFnQixJQUFJO0VBRTlELE1BQU0sY0FBYyxJQUFJLFdBQVcsU0FDakMsVUFBVSxRQUFRLFVBQVUsR0FBRyxDQUFDLFFBQVEsVUFBVSxHQUFHLEVBQ3JELEtBQ0QsQ0FBQyxHQUFHLFdBQVcsU0FBUyxhQUFhLEtBQUs7RUFDM0MsTUFBTSxPQUFPLFFBQVEsUUFBUTtFQUc3QixNQUFNLGNBQWMsZUFBZSxNQUNoQyxVQUFRQSxNQUFJLGNBQWMsYUFBYUEsTUFBSSxlQUFlLFdBQzVEO0FBQ0QsTUFBSSxhQUFhO0FBRWYsMkJBQXdCLE9BQU8sV0FBVyxZQUFZLFlBQVksTUFBTSxLQUFLO0FBQzdFLGVBQVksT0FBTztBQUdu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
@@ -1 +1 @@
1
- {"version":3,"file":"sonamu.d.ts","sourceRoot":"","sources":["../../src/api/sonamu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sonamu.d.ts","sourceRoot":"","sources":["../../src/api/sonamu.ts"],"names":[],"mappings":"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"}