velocious 1.0.593 → 1.0.595

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 (136) hide show
  1. package/README.md +3 -2
  2. package/build/configuration.js +109 -14
  3. package/build/database/drivers/base.js +30 -0
  4. package/build/database/migrator.js +90 -24
  5. package/build/database/operation.js +55 -4
  6. package/build/database/query/join-object.js +7 -4
  7. package/build/database/query/model-class-query.js +38 -7
  8. package/build/database/query/preloader/belongs-to.js +9 -6
  9. package/build/database/query/preloader/has-many.js +25 -14
  10. package/build/database/query/preloader/has-one.js +7 -4
  11. package/build/database/query/preloader/query-for-model.js +16 -1
  12. package/build/database/query/preloader.js +6 -4
  13. package/build/database/query/query-data.js +3 -3
  14. package/build/database/query/where-model-class-hash.js +8 -4
  15. package/build/database/query/with-count.js +4 -3
  16. package/build/database/record/index.js +148 -5
  17. package/build/database/record/instance-relationships/base.js +13 -0
  18. package/build/database/record/instance-relationships/belongs-to.js +1 -1
  19. package/build/database/record/instance-relationships/has-many.js +5 -2
  20. package/build/database/record/instance-relationships/has-one.js +1 -1
  21. package/build/database/record/relationships/base.js +17 -0
  22. package/build/database/use-database.js +81 -28
  23. package/build/src/configuration.d.ts +31 -4
  24. package/build/src/configuration.d.ts.map +1 -1
  25. package/build/src/configuration.js +88 -17
  26. package/build/src/database/drivers/base.d.ts +11 -0
  27. package/build/src/database/drivers/base.d.ts.map +1 -1
  28. package/build/src/database/drivers/base.js +28 -1
  29. package/build/src/database/migrator.d.ts +34 -0
  30. package/build/src/database/migrator.d.ts.map +1 -1
  31. package/build/src/database/migrator.js +83 -23
  32. package/build/src/database/operation.d.ts +15 -1
  33. package/build/src/database/operation.d.ts.map +1 -1
  34. package/build/src/database/operation.js +52 -5
  35. package/build/src/database/query/join-object.d.ts.map +1 -1
  36. package/build/src/database/query/join-object.js +7 -5
  37. package/build/src/database/query/model-class-query.d.ts +6 -0
  38. package/build/src/database/query/model-class-query.d.ts.map +1 -1
  39. package/build/src/database/query/model-class-query.js +33 -8
  40. package/build/src/database/query/preloader/belongs-to.d.ts.map +1 -1
  41. package/build/src/database/query/preloader/belongs-to.js +9 -7
  42. package/build/src/database/query/preloader/has-many.d.ts.map +1 -1
  43. package/build/src/database/query/preloader/has-many.js +23 -16
  44. package/build/src/database/query/preloader/has-one.d.ts.map +1 -1
  45. package/build/src/database/query/preloader/has-one.js +7 -5
  46. package/build/src/database/query/preloader/query-for-model.d.ts +8 -0
  47. package/build/src/database/query/preloader/query-for-model.d.ts.map +1 -1
  48. package/build/src/database/query/preloader/query-for-model.js +15 -2
  49. package/build/src/database/query/preloader.d.ts.map +1 -1
  50. package/build/src/database/query/preloader.js +6 -5
  51. package/build/src/database/query/query-data.js +4 -4
  52. package/build/src/database/query/where-model-class-hash.d.ts.map +1 -1
  53. package/build/src/database/query/where-model-class-hash.js +7 -5
  54. package/build/src/database/query/with-count.js +5 -4
  55. package/build/src/database/record/index.d.ts +95 -0
  56. package/build/src/database/record/index.d.ts.map +1 -1
  57. package/build/src/database/record/index.js +126 -6
  58. package/build/src/database/record/instance-relationships/base.d.ts +6 -0
  59. package/build/src/database/record/instance-relationships/base.d.ts.map +1 -1
  60. package/build/src/database/record/instance-relationships/base.js +12 -1
  61. package/build/src/database/record/instance-relationships/belongs-to.js +2 -2
  62. package/build/src/database/record/instance-relationships/has-many.d.ts.map +1 -1
  63. package/build/src/database/record/instance-relationships/has-many.js +6 -3
  64. package/build/src/database/record/instance-relationships/has-one.js +2 -2
  65. package/build/src/database/record/relationships/base.d.ts +11 -0
  66. package/build/src/database/record/relationships/base.d.ts.map +1 -1
  67. package/build/src/database/record/relationships/base.js +15 -1
  68. package/build/src/database/use-database.d.ts +33 -5
  69. package/build/src/database/use-database.d.ts.map +1 -1
  70. package/build/src/database/use-database.js +81 -30
  71. package/build/src/sync/server-change-feed.d.ts +14 -2
  72. package/build/src/sync/server-change-feed.d.ts.map +1 -1
  73. package/build/src/sync/server-change-feed.js +50 -10
  74. package/build/src/sync/sync-scope-store.d.ts +13 -2
  75. package/build/src/sync/sync-scope-store.d.ts.map +1 -1
  76. package/build/src/sync/sync-scope-store.js +48 -7
  77. package/build/src/tenants/frontend-tenant-sqlite-lifecycle.d.ts +43 -1
  78. package/build/src/tenants/frontend-tenant-sqlite-lifecycle.d.ts.map +1 -1
  79. package/build/src/tenants/frontend-tenant-sqlite-lifecycle.js +141 -17
  80. package/build/src/tenants/tenant-handle.d.ts +36 -0
  81. package/build/src/tenants/tenant-handle.d.ts.map +1 -1
  82. package/build/src/tenants/tenant-handle.js +73 -3
  83. package/build/src/testing/browser-test-app.js +3 -1
  84. package/build/src/testing/browser-use-database-hook-scenarios.d.ts +16 -0
  85. package/build/src/testing/browser-use-database-hook-scenarios.d.ts.map +1 -0
  86. package/build/src/testing/browser-use-database-hook-scenarios.js +182 -0
  87. package/build/src/testing/test-runner.d.ts.map +1 -1
  88. package/build/src/testing/test-runner.js +9 -8
  89. package/build/src/utils/model-scope.d.ts +2 -2
  90. package/build/src/utils/model-scope.d.ts.map +1 -1
  91. package/build/src/utils/model-scope.js +5 -3
  92. package/build/src/utils/ransack.d.ts.map +1 -1
  93. package/build/src/utils/ransack.js +5 -3
  94. package/build/sync/server-change-feed.js +58 -8
  95. package/build/sync/sync-scope-store.js +55 -5
  96. package/build/tenants/frontend-tenant-sqlite-lifecycle.js +150 -15
  97. package/build/tenants/tenant-handle.js +90 -6
  98. package/build/testing/browser-test-app.js +2 -0
  99. package/build/testing/browser-use-database-hook-scenarios.js +204 -0
  100. package/build/testing/test-runner.js +8 -7
  101. package/build/tsconfig.tsbuildinfo +1 -1
  102. package/build/utils/model-scope.js +5 -2
  103. package/build/utils/ransack.js +5 -2
  104. package/package.json +2 -1
  105. package/scripts/browser-test-session.js +60 -0
  106. package/scripts/test-browser.js +7 -7
  107. package/src/configuration.js +109 -14
  108. package/src/database/drivers/base.js +30 -0
  109. package/src/database/migrator.js +90 -24
  110. package/src/database/operation.js +55 -4
  111. package/src/database/query/join-object.js +7 -4
  112. package/src/database/query/model-class-query.js +38 -7
  113. package/src/database/query/preloader/belongs-to.js +9 -6
  114. package/src/database/query/preloader/has-many.js +25 -14
  115. package/src/database/query/preloader/has-one.js +7 -4
  116. package/src/database/query/preloader/query-for-model.js +16 -1
  117. package/src/database/query/preloader.js +6 -4
  118. package/src/database/query/query-data.js +3 -3
  119. package/src/database/query/where-model-class-hash.js +8 -4
  120. package/src/database/query/with-count.js +4 -3
  121. package/src/database/record/index.js +148 -5
  122. package/src/database/record/instance-relationships/base.js +13 -0
  123. package/src/database/record/instance-relationships/belongs-to.js +1 -1
  124. package/src/database/record/instance-relationships/has-many.js +5 -2
  125. package/src/database/record/instance-relationships/has-one.js +1 -1
  126. package/src/database/record/relationships/base.js +17 -0
  127. package/src/database/use-database.js +81 -28
  128. package/src/sync/server-change-feed.js +58 -8
  129. package/src/sync/sync-scope-store.js +55 -5
  130. package/src/tenants/frontend-tenant-sqlite-lifecycle.js +150 -15
  131. package/src/tenants/tenant-handle.js +90 -6
  132. package/src/testing/browser-test-app.js +2 -0
  133. package/src/testing/browser-use-database-hook-scenarios.js +204 -0
  134. package/src/testing/test-runner.js +8 -7
  135. package/src/utils/model-scope.js +5 -2
  136. package/src/utils/ransack.js +5 -2
@@ -15,9 +15,10 @@ export default class VelociousDatabaseOperation {
15
15
  * @param {import("./drivers/base.js").default} args.connection - Pinned physical connection.
16
16
  * @param {string} args.databaseIdentifier - Singular database identifier.
17
17
  * @param {symbol} args.owner - Opaque pool lease owner.
18
+ * @param {string} [args.schemaGeneration] - Tenant schema generation owning record metadata.
18
19
  * @param {object | undefined} args.tenant - Tenant descriptor captured by the owning handle.
19
20
  */
20
- constructor({ configuration, databaseConfiguration, configurationReuseKey, connection, databaseIdentifier, enforceCurrentTenantReuseKey = true, owner, tenant }) {
21
+ constructor({ configuration, databaseConfiguration, configurationReuseKey, connection, databaseIdentifier, enforceCurrentTenantReuseKey = true, owner, schemaGeneration, tenant }) {
21
22
  this._active = true;
22
23
  this._configuration = configuration;
23
24
  this._databaseConfiguration = databaseConfiguration || configuration.resolveDatabaseConfiguration(databaseIdentifier, tenant);
@@ -25,7 +26,10 @@ export default class VelociousDatabaseOperation {
25
26
  this._databaseIdentifier = databaseIdentifier;
26
27
  this._enforceCurrentTenantReuseKey = enforceCurrentTenantReuseKey;
27
28
  this._physicalConnection = connection;
29
+ this._schemaGeneration = schemaGeneration;
28
30
  this._tenant = tenant;
31
+ /** @type {WeakMap<typeof import("./record/index.js").default, typeof import("./record/index.js").default>} */
32
+ this._boundModelClasses = new WeakMap();
29
33
  this._connection = new OperationConnection({
30
34
  connection,
31
35
  operation: this,
@@ -41,11 +45,53 @@ export default class VelociousDatabaseOperation {
41
45
  forModel(ModelClass) {
42
46
  this.assertActive();
43
47
  this.assertModel(ModelClass);
44
- return ModelClass._newQuery({
48
+ return this.modelClass(ModelClass)._newQuery({
45
49
  driver: this.connection(),
46
50
  operation: this
47
51
  });
48
52
  }
53
+ /**
54
+ * Returns a model-class view whose schema metadata is bound to this physical
55
+ * database generation. Construction still produces the application's original
56
+ * model class, so lifecycle callbacks and model registries retain class identity.
57
+ * @template {typeof import("./record/index.js").default} MC
58
+ * @param {MC} ModelClass - Canonical model class.
59
+ * @returns {MC} - Operation-bound model class.
60
+ */
61
+ modelClass(ModelClass) {
62
+ if (!this._schemaGeneration)
63
+ return ModelClass;
64
+ const canonicalModelClass = /** @type {MC} */ (ModelClass._recordMetadataModelClass || ModelClass);
65
+ const existing = this._boundModelClasses.get(canonicalModelClass);
66
+ if (existing)
67
+ return /** @type {MC} */ (existing);
68
+ const databaseIdentity = this.databaseIdentity();
69
+ const metadataKey = `${databaseIdentity.length}:${databaseIdentity}:${this._schemaGeneration}`;
70
+ const metadataProperties = canonicalModelClass.recordMetadataPropertyNames();
71
+ const boundModelClass = new Proxy(canonicalModelClass, {
72
+ construct: (target, args, newTarget) => Reflect.construct(target, args, newTarget),
73
+ get: (target, property, receiver) => {
74
+ if (property === "_recordMetadataModelClass")
75
+ return target;
76
+ if (property === "_recordMetadataBinder")
77
+ return (/** @type {typeof import("./record/index.js").default} */ targetModelClass) => this.modelClass(targetModelClass);
78
+ if (property === "_recordMetadataOperation")
79
+ return this;
80
+ if (typeof property === "string" && metadataProperties.has(property))
81
+ return target.recordMetadataValue(metadataKey, property);
82
+ return Reflect.get(target, property, receiver);
83
+ },
84
+ set: (target, property, value, receiver) => {
85
+ if (typeof property === "string" && metadataProperties.has(property)) {
86
+ target.setRecordMetadataValue(metadataKey, property, value);
87
+ return true;
88
+ }
89
+ return Reflect.set(target, property, value, receiver);
90
+ }
91
+ });
92
+ this._boundModelClasses.set(canonicalModelClass, boundModelClass);
93
+ return /** @type {MC} */ (boundModelClass);
94
+ }
49
95
  /**
50
96
  * Verifies that a model belongs to this operation's configuration and database.
51
97
  * @param {typeof import("./record/index.js").default} ModelClass - Model class to verify.
@@ -141,9 +187,10 @@ export default class VelociousDatabaseOperation {
141
187
  */
142
188
  async ensureModelInitialized(ModelClass) {
143
189
  this.assertActive();
144
- if (ModelClass.isInitialized())
190
+ const boundModelClass = this.modelClass(ModelClass);
191
+ if (boundModelClass.isInitialized())
145
192
  this.assertModel(ModelClass);
146
- await ModelClass.ensureInitialized({
193
+ await boundModelClass.ensureInitialized({
147
194
  configuration: this._configuration,
148
195
  connection: this.connection()
149
196
  });
@@ -176,4 +223,4 @@ export default class VelociousDatabaseOperation {
176
223
  this._active = false;
177
224
  }
178
225
  }
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RhdGFiYXNlL29wZXJhdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxtQkFBbUIsTUFBTSwyQkFBMkIsQ0FBQTtBQUUzRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLDBCQUEwQjtJQUM3Qzs7Ozs7Ozs7Ozs7T0FXRztJQUNILFlBQVksRUFBQyxhQUFhLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLDRCQUE0QixHQUFHLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDO1FBQzNKLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1FBQ25CLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFBO1FBQ25DLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxxQkFBcUIsSUFBSSxhQUFhLENBQUMsNEJBQTRCLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDN0gsSUFBSSxDQUFDLHNCQUFzQixHQUFHLHFCQUFxQixDQUFBO1FBQ25ELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FBQTtRQUM3QyxJQUFJLENBQUMsNkJBQTZCLEdBQUcsNEJBQTRCLENBQUE7UUFDakUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFVBQVUsQ0FBQTtRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQTtRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksbUJBQW1CLENBQUM7WUFDekMsVUFBVTtZQUNWLFNBQVMsRUFBRSxJQUFJO1lBQ2YsS0FBSztTQUNOLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFFBQVEsQ0FBQyxVQUFVO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUNuQixJQUFJLENBQUMsV0FBVyxDQUFD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MkVBQTJFLENBQUMsQ0FBQTtRQUNoSyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtJQUN0QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IE9wZXJhdGlvbkNvbm5lY3Rpb24gZnJvbSBcIi4vb3BlcmF0aW9uLWNvbm5lY3Rpb24uanNcIlxuXG4vKipcbiAqIEV4cGxpY2l0IG93bmVyIGZvciBtb2RlbCB3b3JrIHBlcmZvcm1lZCBvbiBvbmUgcGlubmVkIHRyYW5zYWN0aW9uYWxcbiAqIGNvbm5lY3Rpb24uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlT3BlcmF0aW9uIHtcbiAgLyoqXG4gICAqIFJ1bnMgY29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3BlcmF0aW9uIG93bmVyc2hpcC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IGFyZ3MuY29uZmlndXJhdGlvbiAtIE93bmluZyBjb25maWd1cmF0aW9uLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFthcmdzLmVuZm9yY2VDdXJyZW50VGVuYW50UmV1c2VLZXldIC0gV2hldGhlciBhbWJpZW50IHRlbmFudCBjaGFuZ2VzIGludmFsaWRhdGUgdGhpcyBsZWdhY3kgb3BlcmF0aW9uLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuRGF0YWJhc2VDb25maWd1cmF0aW9uVHlwZX0gW2FyZ3MuZGF0YWJhc2VDb25maWd1cmF0aW9uXSAtIENhcHR1cmVkIHJlc29sdmVkIHBoeXNpY2FsIGRhdGFiYXNlIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmNvbmZpZ3VyYXRpb25SZXVzZUtleSAtIFBoeXNpY2FsIGRhdGFiYXNlIGNvbmZpZ3VyYXRpb24ga2V5IGNhcHR1cmVkIGF0IGNoZWNrb3V0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHR9IGFyZ3MuY29ubmVjdGlvbiAtIFBpbm5lZCBwaHlzaWNhbCBjb25uZWN0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5kYXRhYmFzZUlkZW50aWZpZXIgLSBTaW5ndWxhciBkYXRhYmFzZSBpZGVudGlmaWVyLlxuICAgKiBAcGFyYW0ge3N5bWJvbH0gYXJncy5vd25lciAtIE9wYXF1ZSBwb29sIGxlYXNlIG93bmVyLlxuICAgKiBAcGFyYW0ge29iamVjdCB8IHVuZGVmaW5lZH0gYXJncy50ZW5hbnQgLSBUZW5hbnQgZGVzY3JpcHRvciBjYXB0dXJlZCBieSB0aGUgb3duaW5nIGhhbmRsZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb25maWd1cmF0aW9uLCBkYXRhYmFzZUNvbmZpZ3VyYXRpb24sIGNvbmZpZ3VyYXRpb25SZXVzZUtleSwgY29ubmVjdGlvbiwgZGF0YWJhc2VJZGVudGlmaWVyLCBlbmZvcmNlQ3VycmVudFRlbmFudFJldXNlS2V5ID0gdHJ1ZSwgb3duZXIsIHRlbmFudH0pIHtcbiAgICB0aGlzLl9hY3RpdmUgPSB0cnVlXG4gICAgdGhpcy5fY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25cbiAgICB0aGlzLl9kYXRhYmFzZUNvbmZpZ3VyYXRpb24gPSBkYXRhYmFzZUNvbmZpZ3VyYXRpb24gfHwgY29uZmlndXJhdGlvbi5yZXNvbHZlRGF0YWJhc2VDb25maWd1cmF0aW9uKGRhdGFiYXNlSWRlbnRpZmllciwgdGVuYW50KVxuICAgIHRoaXMuX2NvbmZpZ3VyYXRpb25SZXVzZUtleSA9IGNvbmZpZ3VyYXRpb25SZXVzZUtleVxuICAgIHRoaXMuX2RhdGFiYXNlSWRlbnRpZmllciA9IGRhdGFiYXNlSWRlbnRpZmllclxuICAgIHRoaXMuX2VuZm9yY2VDdXJyZW50VGVuYW50UmV1c2VLZXkgPSBlbmZvcmNlQ3VycmVudFRlbmFudFJldXNlS2V5XG4gICAgdGhpcy5fcGh5c2ljYWxDb25uZWN0aW9uID0gY29ubmVjdGlvblxuICAgIHRoaXMuX3RlbmFudCA9IHRlbmFudFxuICAgIHRoaXMuX2Nvbm5lY3Rpb24gPSBuZXcgT3BlcmF0aW9uQ29ubmVjdGlvbih7XG4gICAgICBjb25uZWN0aW9uLFxuICAgICAgb3BlcmF0aW9uOiB0aGlzLFxuICAgICAgb3duZXJcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gb3BlcmF0aW9uLWJvdW5kIG1vZGVsIHF1ZXJ5L2NyZWF0ZSBzY29wZS5cbiAgICogQHRlbXBsYXRlIHt0eXBlb2YgaW1wb3J0KFwiLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gTUNcbiAgICogQHBhcmFtIHtNQ30gTW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzIHRvIGJpbmQuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuL3F1ZXJ5L21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQ8TUM+fSAtIE9wZXJhdGlvbi1ib3VuZCBzY29wZS5cbiAgICovXG4gIGZvck1vZGVsKE1vZGVsQ2xhc3MpIHtcbiAgICB0aGlzLmFzc2VydEFjdGl2ZSgpXG4gICAgdGhpcy5hc3NlcnRNb2RlbChNb2RlbENsYXNzKVxuXG4gICAgcmV0dXJuIE1vZGVsQ2xhc3MuX25ld1F1ZXJ5KHtcbiAgICAgIGRyaXZlcjogdGhpcy5jb25uZWN0aW9uKCksXG4gICAgICBvcGVyYXRpb246IHRoaXNcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIHRoYXQgYSBtb2RlbCBiZWxvbmdzIHRvIHRoaXMgb3BlcmF0aW9uJ3MgY29uZmlndXJhdGlvbiBhbmQgZGF0YWJhc2UuXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IE1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcyB0byB2ZXJpZnkuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgYXNzZXJ0TW9kZWwoTW9kZWxDbGFzcykge1xuICAgIGlmIChNb2RlbENsYXNzLl9nZXRDb25maWd1cmF0aW9uKCkgIT09IHRoaXMuX2NvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtNb2RlbENsYXNzLmdldE1vZGVsTmFtZSgpfSBiZWxvbmdzIHRvIGFub3RoZXIgVmVsb2Npb3VzIGNvbmZpZ3VyYXRpb25gKVxuICAgIH1cblxuICAgIGNvbnN0IG1vZGVsRGF0YWJhc2VJZGVudGlmaWVyID0gTW9kZWxDbGFzcy5nZXREYXRhYmFzZUlkZW50aWZpZXIoe3RlbmFudDogdGhpcy5fdGVuYW50fSlcblxuICAgIGlmIChtb2RlbERhdGFiYXNlSWRlbnRpZmllciAhPT0gdGhpcy5fZGF0YWJhc2VJZGVudGlmaWVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7TW9kZWxDbGFzcy5nZXRNb2RlbE5hbWUoKX0gdXNlcyBkYXRhYmFzZSAke0pTT04uc3RyaW5naWZ5KG1vZGVsRGF0YWJhc2VJZGVudGlmaWVyKX0sIG5vdCBvcGVyYXRpb24gZGF0YWJhc2UgJHtKU09OLnN0cmluZ2lmeSh0aGlzLl9kYXRhYmFzZUlkZW50aWZpZXIpfWApXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIGEgbG9hZGVkIG9yIGJ1aWx0IHJlY29yZCB0byB0aGlzIG9wZXJhdGlvbi5cbiAgICogQHRlbXBsYXRlIHtpbXBvcnQoXCIuL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBNb2RlbFxuICAgKiBAcGFyYW0ge01vZGVsfSByZWNvcmQgLSBSZWNvcmQgdG8gYmluZC5cbiAgICogQHJldHVybnMge01vZGVsfSAtIEJvdW5kIHJlY29yZC5cbiAgICovXG4gIGJpbmRSZWNvcmQocmVjb3JkKSB7XG4gICAgdGhpcy5hc3NlcnRBY3RpdmUoKVxuICAgIHRoaXMuYXNzZXJ0TW9kZWwocmVjb3JkLmdldE1vZGVsQ2xhc3MoKSlcbiAgICByZWNvcmQuYmluZERhdGFiYXNlT3BlcmF0aW9uKHRoaXMpXG5cbiAgICByZXR1cm4gcmVjb3JkXG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgb3duZWQgYnkgdGhlIGN1cnJlbnQgb3BlcmF0aW9uIHRyYW5zYWN0aW9uIGZyYW1lLlxuICAgKiBAcGFyYW0geygpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+fSBjYWxsYmFjayAtIENhbGxiYWNrLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyBhZnRlciByZWdpc3RyYXRpb24gb3IgZXhlY3V0aW9uLlxuICAgKi9cbiAgYXN5bmMgYWZ0ZXJDb21taXQoY2FsbGJhY2spIHtcbiAgICB0aGlzLmFzc2VydEFjdGl2ZSgpXG4gICAgYXdhaXQgdGhpcy5jb25uZWN0aW9uKCkuYWZ0ZXJDb21taXQoY2FsbGJhY2spXG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgZ3VhcmQgb3duZWQgYnkgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24vc2F2ZXBvaW50IGZyYW1lLlxuICAgKiBAcGFyYW0geyhjb250ZXh0OiB7b3BlcmF0aW9uOiBWZWxvY2lvdXNEYXRhYmFzZU9wZXJhdGlvbn0pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+fSBjYWxsYmFjayAtIEd1YXJkIGNhbGxiYWNrLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyBhZnRlciByZWdpc3RyYXRpb24uXG4gICAqL1xuICBhc3luYyBiZWZvcmVDb21taXQoY2FsbGJhY2spIHtcbiAgICB0aGlzLmFzc2VydEFjdGl2ZSgpXG4gICAgYXdhaXQgdGhpcy5jb25uZWN0aW9uKCkuYmVmb3JlQ29tbWl0KCgpID0+IGNhbGxiYWNrKHtvcGVyYXRpb246IHRoaXN9KSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGEgbmVzdGVkIG9wZXJhdGlvbiB0cmFuc2FjdGlvbi9zYXZlcG9pbnQuXG4gICAqIEB0ZW1wbGF0ZSBUXG4gICAqIEBwYXJhbSB7KCkgPT4gUHJvbWlzZTxUPn0gY2FsbGJhY2sgLSBDYWxsYmFjay5cbiAgICogQHJldHVybnMge1Byb21pc2U8VD59IC0gQ2FsbGJhY2sgcmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgdHJhbnNhY3Rpb24oY2FsbGJhY2spIHtcbiAgICB0aGlzLmFzc2VydEFjdGl2ZSgpXG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jb25uZWN0aW9uKCkudHJhbnNhY3Rpb24oY2FsbGJhY2spXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZGVsaWJlcmF0ZWx5IGV4cG9zZWQgb3BlcmF0aW9uIGNvbm5lY3Rpb24gZmFjYWRlIGZvciByYXcgU1FMLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9kcml2ZXJzL2Jhc2UuanNcIikuZGVmYXVsdH0gLSBPcGVyYXRpb24tYm91bmQgY29ubmVjdGlvbi5cbiAgICovXG4gIGNvbm5lY3Rpb24oKSB7XG4gICAgdGhpcy5hc3NlcnRBY3RpdmUoKVxuXG4gICAgLyoqXG4gICAgICogTmFycm93cyB0aGUgUHJveHkgZmFjYWRlIHRvIHRoZSBjb21wbGV0ZSBkcml2ZXIgc3VyZmFjZSB0aGF0IGl0IGZvcndhcmRzLlxuICAgICAqIEB0eXBlIHtpbXBvcnQoXCIuL2RyaXZlcnMvYmFzZS5qc1wiKS5kZWZhdWx0fVxuICAgICAqL1xuICAgIGNvbnN0IGNvbm5lY3Rpb25GYWNhZGUgPSAvKiogQHR5cGUge1JldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+fSAqLyAodGhpcy5fY29ubmVjdGlvbilcblxuICAgIHJldHVybiBjb25uZWN0aW9uRmFjYWRlXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGVuYW50IGRlc2NyaXB0b3IgY2FwdHVyZWQgYnkgdGhlIGltbXV0YWJsZSBoYW5kbGUuXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZH0gLSBDYXB0dXJlZCB0ZW5hbnQgZGVzY3JpcHRvci5cbiAgICovXG4gIHRlbmFudCgpIHtcbiAgICByZXR1cm4gLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZH0gKi8gKHRoaXMuX3RlbmFudClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBsb2dpY2FsIGRhdGFiYXNlIGlkZW50aWZpZXIgb3duZWQgYnkgdGhpcyBvcGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gRGF0YWJhc2UgaWRlbnRpZmllci5cbiAgICovXG4gIGRhdGFiYXNlSWRlbnRpZmllcigpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YWJhc2VJZGVudGlmaWVyXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0YWJsZSBwaHlzaWNhbC1kYXRhYmFzZSBpZGVudGl0eSBzdWl0YWJsZSBmb3Igb3BlcmF0aW9uLWF3YXJlIGNhY2hlcy5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBQaHlzaWNhbCBkYXRhYmFzZSBpZGVudGl0eS5cbiAgICovXG4gIGRhdGFiYXNlSWRlbnRpdHkoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuX2RhdGFiYXNlSWRlbnRpZmllcn06JHt0aGlzLl9jb25maWd1cmF0aW9uUmV1c2VLZXl9YFxuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIGEgbW9kZWwgdGhyb3VnaCB0aGlzIG9wZXJhdGlvbidzIGNhcHR1cmVkIGNvbm5lY3Rpb24uXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IE1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBpbml0aWFsaXplZC5cbiAgICovXG4gIGFzeW5jIGVuc3VyZU1vZGVsSW5pdGlhbGl6ZWQoTW9kZWxDbGFzcykge1xuICAgIHRoaXMuYXNzZXJ0QWN0aXZlKClcblxuICAgIGlmIChNb2RlbENsYXNzLmlzSW5pdGlhbGl6ZWQoKSkgdGhpcy5hc3NlcnRNb2RlbChNb2RlbENsYXNzKVxuXG4gICAgYXdhaXQgTW9kZWxDbGFzcy5lbnN1cmVJbml0aWFsaXplZCh7XG4gICAgICBjb25maWd1cmF0aW9uOiB0aGlzLl9jb25maWd1cmF0aW9uLFxuICAgICAgY29ubmVjdGlvbjogdGhpcy5jb25uZWN0aW9uKClcbiAgICB9KVxuICAgIHRoaXMuYXNzZXJ0TW9kZWwoTW9kZWxDbGFzcylcbiAgfVxuXG4gIC8qKlxuICAgKiBSYWlzZXMgd2hlbiBhbiBvcGVyYXRpb24gaGFuZGxlIGhhcyBsZWZ0IGl0cyBjYWxsYmFjay5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBhc3NlcnRBY3RpdmUoKSB7XG4gICAgaWYgKCF0aGlzLl9hY3RpdmUpIHRocm93IG5ldyBFcnJvcihcIkRhdGFiYXNlIG9wZXJhdGlvbiBoYXMgY29tcGxldGVkXCIpXG5cbiAgICBjb25zdCBwb29sID0gdGhpc1xuICAgICAgLl9jb25maWd1cmF0aW9uXG4gICAgICAuZ2V0RGF0YWJhc2VQb29sKHRoaXMuX2RhdGFiYXNlSWRlbnRpZmllcilcbiAgICBjb25zdCBjYXB0dXJlZFJldXNlS2V5ID0gcG9vbC5nZXRDb25maWd1cmF0aW9uUmV1c2VLZXkodGhpcy5fZGF0YWJhc2VDb25maWd1cmF0aW9uKVxuICAgIGNvbnN0IGNvbm5lY3Rpb25SZXVzZUtleSA9IHBvb2wuZ2V0Q29ubmVjdGlvbkNvbmZpZ3VyYXRpb25SZXVzZUtleSh0aGlzLl9waHlzaWNhbENvbm5lY3Rpb24pXG5cbiAgICBpZiAoY2FwdHVyZWRSZXVzZUtleSAhPT0gdGhpcy5fY29uZmlndXJhdGlvblJldXNlS2V5IHx8IGNvbm5lY3Rpb25SZXVzZUtleSAhPT0gdGhpcy5fY29uZmlndXJhdGlvblJldXNlS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERhdGFiYXNlIG9wZXJhdGlvbiBmb3IgJHtKU09OLnN0cmluZ2lmeSh0aGlzLl9kYXRhYmFzZUlkZW50aWZpZXIpfSBiZWxvbmdzIHRvIGEgZGlmZmVyZW50IHBoeXNpY2FsIGRhdGFiYXNlIHRoYW4gaXRzIGNhcHR1cmVkIHRlbmFudCBoYW5kbGVgKVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9lbmZvcmNlQ3VycmVudFRlbmFudFJldXNlS2V5ICYmIHBvb2wuZ2V0Q29uZmlndXJhdGlvblJldXNlS2V5KCkgIT09IHRoaXMuX2NvbmZpZ3VyYXRpb25SZXVzZUtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEYXRhYmFzZSBvcGVyYXRpb24gZm9yICR7SlNPTi5zdHJpbmdpZnkodGhpcy5fZGF0YWJhc2VJZGVudGlmaWVyKX0gYmVsb25ncyB0byBhIGRpZmZlcmVudCBwaHlzaWNhbCBkYXRhYmFzZSB0aGFuIHRoZSBjdXJyZW50IHRlbmFudCBjb250ZXh0YClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXhwaXJlcyB0aGUgb3BlcmF0aW9uIGFuZCBhbGwgc2NvcGVzL3JlY29yZHMgYm91bmQgdG8gaXQuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgY29tcGxldGUoKSB7XG4gICAgdGhpcy5fYWN0aXZlID0gZmFsc2VcbiAgfVxufVxuIl19
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RhdGFiYXNlL29wZXJhdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxtQkFBbUIsTUFBTSwyQkFBMkIsQ0FBQTtBQUUzRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLDBCQUEwQjtJQUM3Qzs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxZQUFZLEVBQUMsYUFBYSxFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSw0QkFBNEIsR0FBRyxJQUFJLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBQztRQUM3SyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQTtRQUNuQixJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQTtRQUNuQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcscUJBQXFCLElBQUksYUFBYSxDQUFDLDRCQUE0QixDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzdILElBQUksQ0FBQyxzQkFBc0IsR0FBRyxxQkFBcUIsQ0FBQTtRQUNuRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsa0JBQWtCLENBQUE7UUFDN0MsSUFBSSxDQUFDLDZCQUE2QixHQUFHLDRCQUE0QixDQUFBO1FBQ2pFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxVQUFVLENBQUE7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFBO1FBQ3pDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFBO1FBQ3JCLDhHQUE4RztRQUM5RyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQTtRQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksbUJBQW1CLENBQUM7WUFDekMsVUFBVTtZQUNWLFNBQVMsRUFBRSxJQUFJO1lBQ2YsS0FBSztT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QUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO0lBQ3RCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgT3BlcmF0aW9uQ29ubmVjdGlvbiBmcm9tIFwiLi9vcGVyYXRpb24tY29ubmVjdGlvbi5qc1wiXG5cbi8qKlxuICogRXhwbGljaXQgb3duZXIgZm9yIG1vZGVsIHdvcmsgcGVyZm9ybWVkIG9uIG9uZSBwaW5uZWQgdHJhbnNhY3Rpb25hbFxuICogY29ubmVjdGlvbi5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VPcGVyYXRpb24ge1xuICAvKipcbiAgICogUnVucyBjb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcGVyYXRpb24gb3duZXJzaGlwLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gYXJncy5jb25maWd1cmF0aW9uIC0gT3duaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2FyZ3MuZW5mb3JjZUN1cnJlbnRUZW5hbnRSZXVzZUtleV0gLSBXaGV0aGVyIGFtYmllbnQgdGVuYW50IGNoYW5nZXMgaW52YWxpZGF0ZSB0aGlzIGxlZ2FjeSBvcGVyYXRpb24uXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5EYXRhYmFzZUNvbmZpZ3VyYXRpb25UeXBlfSBbYXJncy5kYXRhYmFzZUNvbmZpZ3VyYXRpb25dIC0gQ2FwdHVyZWQgcmVzb2x2ZWQgcGh5c2ljYWwgZGF0YWJhc2UgY29uZmlndXJhdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuY29uZmlndXJhdGlvblJldXNlS2V5IC0gUGh5c2ljYWwgZGF0YWJhc2UgY29uZmlndXJhdGlvbiBrZXkgY2FwdHVyZWQgYXQgY2hlY2tvdXQuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9kcml2ZXJzL2Jhc2UuanNcIikuZGVmYXVsdH0gYXJncy5jb25uZWN0aW9uIC0gUGlubmVkIHBoeXNpY2FsIGNvbm5lY3Rpb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmRhdGFiYXNlSWRlbnRpZmllciAtIFNpbmd1bGFyIGRhdGFiYXNlIGlkZW50aWZpZXIuXG4gICAqIEBwYXJhbSB7c3ltYm9sfSBhcmdzLm93bmVyIC0gT3BhcXVlIHBvb2wgbGVhc2Ugb3duZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5zY2hlbWFHZW5lcmF0aW9uXSAtIFRlbmFudCBzY2hlbWEgZ2VuZXJhdGlvbiBvd25pbmcgcmVjb3JkIG1ldGFkYXRhLlxuICAgKiBAcGFyYW0ge29iamVjdCB8IHVuZGVmaW5lZH0gYXJncy50ZW5hbnQgLSBUZW5hbnQgZGVzY3JpcHRvciBjYXB0dXJlZCBieSB0aGUgb3duaW5nIGhhbmRsZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb25maWd1cmF0aW9uLCBkYXRhYmFzZUNvbmZpZ3VyYXRpb24sIGNvbmZpZ3VyYXRpb25SZXVzZUtleSwgY29ubmVjdGlvbiwgZGF0YWJhc2VJZGVudGlmaWVyLCBlbmZvcmNlQ3VycmVudFRlbmFudFJldXNlS2V5ID0gdHJ1ZSwgb3duZXIsIHNjaGVtYUdlbmVyYXRpb24sIHRlbmFudH0pIHtcbiAgICB0aGlzLl9hY3RpdmUgPSB0cnVlXG4gICAgdGhpcy5fY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25cbiAgICB0aGlzLl9kYXRhYmFzZUNvbmZpZ3VyYXRpb24gPSBkYXRhYmFzZUNvbmZpZ3VyYXRpb24gfHwgY29uZmlndXJhdGlvbi5yZXNvbHZlRGF0YWJhc2VDb25maWd1cmF0aW9uKGRhdGFiYXNlSWRlbnRpZmllciwgdGVuYW50KVxuICAgIHRoaXMuX2NvbmZpZ3VyYXRpb25SZXVzZUtleSA9IGNvbmZpZ3VyYXRpb25SZXVzZUtleVxuICAgIHRoaXMuX2RhdGFiYXNlSWRlbnRpZmllciA9IGRhdGFiYXNlSWRlbnRpZmllclxuICAgIHRoaXMuX2VuZm9yY2VDdXJyZW50VGVuYW50UmV1c2VLZXkgPSBlbmZvcmNlQ3VycmVudFRlbmFudFJldXNlS2V5XG4gICAgdGhpcy5fcGh5c2ljYWxDb25uZWN0aW9uID0gY29ubmVjdGlvblxuICAgIHRoaXMuX3NjaGVtYUdlbmVyYXRpb24gPSBzY2hlbWFHZW5lcmF0aW9uXG4gICAgdGhpcy5fdGVuYW50ID0gdGVuYW50XG4gICAgLyoqIEB0eXBlIHtXZWFrTWFwPHR5cGVvZiBpbXBvcnQoXCIuL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0LCB0eXBlb2YgaW1wb3J0KFwiLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD59ICovXG4gICAgdGhpcy5fYm91bmRNb2RlbENsYXNzZXMgPSBuZXcgV2Vha01hcCgpXG4gICAgdGhpcy5fY29ubmVjdGlvbiA9IG5ldyBPcGVyYXRpb25Db25uZWN0aW9uKHtcbiAgICAgIGNvbm5lY3Rpb24sXG4gICAgICBvcGVyYXRpb246IHRoaXMsXG4gICAgICBvd25lclxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvcGVyYXRpb24tYm91bmQgbW9kZWwgcXVlcnkvY3JlYXRlIHNjb3BlLlxuICAgKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBNQ1xuICAgKiBAcGFyYW0ge01DfSBNb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MgdG8gYmluZC5cbiAgICogQHJldHVybnMge2ltcG9ydChcIi4vcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDxNQz59IC0gT3BlcmF0aW9uLWJvdW5kIHNjb3BlLlxuICAgKi9cbiAgZm9yTW9kZWwoTW9kZWxDbGFzcykge1xuICAgIHRoaXMuYXNzZXJ0QWN0aXZlKClcbiAgICB0aGlzLmFzc2VydE1vZGVsKE1vZGVsQ2xhc3MpXG5cbiAgICByZXR1cm4gdGhpcy5tb2RlbENsYXNzKE1vZGVsQ2xhc3MpLl9uZXdRdWVyeSh7XG4gICAgICBkcml2ZXI6IHRoaXMuY29ubmVjdGlvbigpLFxuICAgICAgb3BlcmF0aW9uOiB0aGlzXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbW9kZWwtY2xhc3MgdmlldyB3aG9zZSBzY2hlbWEgbWV0YWRhdGEgaXMgYm91bmQgdG8gdGhpcyBwaHlzaWNhbFxuICAgKiBkYXRhYmFzZSBnZW5lcmF0aW9uLiBDb25zdHJ1Y3Rpb24gc3RpbGwgcHJvZHVjZXMgdGhlIGFwcGxpY2F0aW9uJ3Mgb3JpZ2luYWxcbiAgICogbW9kZWwgY2xhc3MsIHNvIGxpZmVjeWNsZSBjYWxsYmFja3MgYW5kIG1vZGVsIHJlZ2lzdHJpZXMgcmV0YWluIGNsYXNzIGlkZW50aXR5LlxuICAgKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBNQ1xuICAgKiBAcGFyYW0ge01DfSBNb2RlbENsYXNzIC0gQ2Fub25pY2FsIG1vZGVsIGNsYXNzLlxuICAgKiBAcmV0dXJucyB7TUN9IC0gT3BlcmF0aW9uLWJvdW5kIG1vZGVsIGNsYXNzLlxuICAgKi9cbiAgbW9kZWxDbGFzcyhNb2RlbENsYXNzKSB7XG4gICAgaWYgKCF0aGlzLl9zY2hlbWFHZW5lcmF0aW9uKSByZXR1cm4gTW9kZWxDbGFzc1xuXG4gICAgY29uc3QgY2Fub25pY2FsTW9kZWxDbGFzcyA9IC8qKiBAdHlwZSB7TUN9ICovIChNb2RlbENsYXNzLl9yZWNvcmRNZXRhZGF0YU1vZGVsQ2xhc3MgfHwgTW9kZWxDbGFzcylcblxuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5fYm91bmRNb2RlbENsYXNzZXMuZ2V0KGNhbm9uaWNhbE1vZGVsQ2xhc3MpXG5cbiAgICBpZiAoZXhpc3RpbmcpIHJldHVybiAvKiogQHR5cGUge01DfSAqLyAoZXhpc3RpbmcpXG5cbiAgICBjb25zdCBkYXRhYmFzZUlkZW50aXR5ID0gdGhpcy5kYXRhYmFzZUlkZW50aXR5KClcbiAgICBjb25zdCBtZXRhZGF0YUtleSA9IGAke2RhdGFiYXNlSWRlbnRpdHkubGVuZ3RofToke2RhdGFiYXNlSWRlbnRpdHl9OiR7dGhpcy5fc2NoZW1hR2VuZXJhdGlvbn1gXG4gICAgY29uc3QgbWV0YWRhdGFQcm9wZXJ0aWVzID0gY2Fub25pY2FsTW9kZWxDbGFzcy5yZWNvcmRNZXRhZGF0YVByb3BlcnR5TmFtZXMoKVxuICAgIGNvbnN0IGJvdW5kTW9kZWxDbGFzcyA9IG5ldyBQcm94eShjYW5vbmljYWxNb2RlbENsYXNzLCB7XG4gICAgICBjb25zdHJ1Y3Q6ICh0YXJnZXQsIGFyZ3MsIG5ld1RhcmdldCkgPT4gUmVmbGVjdC5jb25zdHJ1Y3QodGFyZ2V0LCBhcmdzLCBuZXdUYXJnZXQpLFxuICAgICAgZ2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpID0+IHtcbiAgICAgICAgaWYgKHByb3BlcnR5ID09PSBcIl9yZWNvcmRNZXRhZGF0YU1vZGVsQ2xhc3NcIikgcmV0dXJuIHRhcmdldFxuICAgICAgICBpZiAocHJvcGVydHkgPT09IFwiX3JlY29yZE1ldGFkYXRhQmluZGVyXCIpIHJldHVybiAoLyoqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KFwiLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gKi8gdGFyZ2V0TW9kZWxDbGFzcykgPT4gdGhpcy5tb2RlbENsYXNzKHRhcmdldE1vZGVsQ2xhc3MpXG4gICAgICAgIGlmIChwcm9wZXJ0eSA9PT0gXCJfcmVjb3JkTWV0YWRhdGFPcGVyYXRpb25cIikgcmV0dXJuIHRoaXNcbiAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gXCJzdHJpbmdcIiAmJiBtZXRhZGF0YVByb3BlcnRpZXMuaGFzKHByb3BlcnR5KSkgcmV0dXJuIHRhcmdldC5yZWNvcmRNZXRhZGF0YVZhbHVlKG1ldGFkYXRhS2V5LCBwcm9wZXJ0eSlcblxuICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpXG4gICAgICB9LFxuICAgICAgc2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgdmFsdWUsIHJlY2VpdmVyKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcHJvcGVydHkgPT09IFwic3RyaW5nXCIgJiYgbWV0YWRhdGFQcm9wZXJ0aWVzLmhhcyhwcm9wZXJ0eSkpIHtcbiAgICAgICAgICB0YXJnZXQuc2V0UmVjb3JkTWV0YWRhdGFWYWx1ZShtZXRhZGF0YUtleSwgcHJvcGVydHksIHZhbHVlKVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUmVmbGVjdC5zZXQodGFyZ2V0LCBwcm9wZXJ0eSwgdmFsdWUsIHJlY2VpdmVyKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICB0aGlzLl9ib3VuZE1vZGVsQ2xhc3Nlcy5zZXQoY2Fub25pY2FsTW9kZWxDbGFzcywgYm91bmRNb2RlbENsYXNzKVxuXG4gICAgcmV0dXJuIC8qKiBAdHlwZSB7TUN9ICovIChib3VuZE1vZGVsQ2xhc3MpXG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgdGhhdCBhIG1vZGVsIGJlbG9uZ3MgdG8gdGhpcyBvcGVyYXRpb24ncyBjb25maWd1cmF0aW9uIGFuZCBkYXRhYmFzZS5cbiAgICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gTW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzIHRvIHZlcmlmeS5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBhc3NlcnRNb2RlbChNb2RlbENsYXNzKSB7XG4gICAgaWYgKE1vZGVsQ2xhc3MuX2dldENvbmZpZ3VyYXRpb24oKSAhPT0gdGhpcy5fY29uZmlndXJhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke01vZGVsQ2xhc3MuZ2V0TW9kZWxOYW1lKCl9IGJlbG9uZ3MgdG8gYW5vdGhlciBWZWxvY2lvdXMgY29uZmlndXJhdGlvbmApXG4gICAgfVxuXG4gICAgY29uc3QgbW9kZWxEYXRhYmFzZUlkZW50aWZpZXIgPSBNb2RlbENsYXNzLmdldERhdGFiYXNlSWRlbnRpZmllcih7dGVuYW50OiB0aGlzLl90ZW5hbnR9KVxuXG4gICAgaWYgKG1vZGVsRGF0YWJhc2VJZGVudGlmaWVyICE9PSB0aGlzLl9kYXRhYmFzZUlkZW50aWZpZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtNb2RlbENsYXNzLmdldE1vZGVsTmFtZSgpfSB1c2VzIGRhdGFiYXNlICR7SlNPTi5zdHJpbmdpZnkobW9kZWxEYXRhYmFzZUlkZW50aWZpZXIpfSwgbm90IG9wZXJhdGlvbiBkYXRhYmFzZSAke0pTT04uc3RyaW5naWZ5KHRoaXMuX2RhdGFiYXNlSWRlbnRpZmllcil9YClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgYSBsb2FkZWQgb3IgYnVpbHQgcmVjb3JkIHRvIHRoaXMgb3BlcmF0aW9uLlxuICAgKiBAdGVtcGxhdGUge2ltcG9ydChcIi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IE1vZGVsXG4gICAqIEBwYXJhbSB7TW9kZWx9IHJlY29yZCAtIFJlY29yZCB0byBiaW5kLlxuICAgKiBAcmV0dXJucyB7TW9kZWx9IC0gQm91bmQgcmVjb3JkLlxuICAgKi9cbiAgYmluZFJlY29yZChyZWNvcmQpIHtcbiAgICB0aGlzLmFzc2VydEFjdGl2ZSgpXG4gICAgdGhpcy5hc3NlcnRNb2RlbChyZWNvcmQuZ2V0TW9kZWxDbGFzcygpKVxuICAgIHJlY29yZC5iaW5kRGF0YWJhc2VPcGVyYXRpb24odGhpcylcblxuICAgIHJldHVybiByZWNvcmRcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBjYWxsYmFjayBvd25lZCBieSB0aGUgY3VycmVudCBvcGVyYXRpb24gdHJhbnNhY3Rpb24gZnJhbWUuXG4gICAqIEBwYXJhbSB7KCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD59IGNhbGxiYWNrIC0gQ2FsbGJhY2suXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIGFmdGVyIHJlZ2lzdHJhdGlvbiBvciBleGVjdXRpb24uXG4gICAqL1xuICBhc3luYyBhZnRlckNvbW1pdChjYWxsYmFjaykge1xuICAgIHRoaXMuYXNzZXJ0QWN0aXZlKClcbiAgICBhd2FpdCB0aGlzLmNvbm5lY3Rpb24oKS5hZnRlckNvbW1pdChjYWxsYmFjaylcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBndWFyZCBvd25lZCBieSB0aGUgY3VycmVudCB0cmFuc2FjdGlvbi9zYXZlcG9pbnQgZnJhbWUuXG4gICAqIEBwYXJhbSB7KGNvbnRleHQ6IHtvcGVyYXRpb246IFZlbG9jaW91c0RhdGFiYXNlT3BlcmF0aW9ufSkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD59IGNhbGxiYWNrIC0gR3VhcmQgY2FsbGJhY2suXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIGFmdGVyIHJlZ2lzdHJhdGlvbi5cbiAgICovXG4gIGFzeW5jIGJlZm9yZUNvbW1pdChjYWxsYmFjaykge1xuICAgIHRoaXMuYXNzZXJ0QWN0aXZlKClcbiAgICBhd2FpdCB0aGlzLmNvbm5lY3Rpb24oKS5iZWZvcmVDb21taXQoKCkgPT4gY2FsbGJhY2soe29wZXJhdGlvbjogdGhpc30pKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYSBuZXN0ZWQgb3BlcmF0aW9uIHRyYW5zYWN0aW9uL3NhdmVwb2ludC5cbiAgICogQHRlbXBsYXRlIFRcbiAgICogQHBhcmFtIHsoKSA9PiBQcm9taXNlPFQ+fSBjYWxsYmFjayAtIENhbGxiYWNrLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxUPn0gLSBDYWxsYmFjayByZXN1bHQuXG4gICAqL1xuICBhc3luYyB0cmFuc2FjdGlvbihjYWxsYmFjaykge1xuICAgIHRoaXMuYXNzZXJ0QWN0aXZlKClcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbm5lY3Rpb24oKS50cmFuc2FjdGlvbihjYWxsYmFjaylcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBkZWxpYmVyYXRlbHkgZXhwb3NlZCBvcGVyYXRpb24gY29ubmVjdGlvbiBmYWNhZGUgZm9yIHJhdyBTUUwuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuL2RyaXZlcnMvYmFzZS5qc1wiKS5kZWZhdWx0fSAtIE9wZXJhdGlvbi1ib3VuZCBjb25uZWN0aW9uLlxuICAgKi9cbiAgY29ubmVjdGlvbigpIHtcbiAgICB0aGlzLmFzc2VydEFjdGl2ZSgpXG5cbiAgICAvKipcbiAgICAgKiBOYXJyb3dzIHRoZSBQcm94eSBmYWNhZGUgdG8gdGhlIGNvbXBsZXRlIGRyaXZlciBzdXJmYWNlIHRoYXQgaXQgZm9yd2FyZHMuXG4gICAgICogQHR5cGUge2ltcG9ydChcIi4vZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHR9XG4gICAgICovXG4gICAgY29uc3QgY29ubmVjdGlvbkZhY2FkZSA9IC8qKiBAdHlwZSB7UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59ICovICh0aGlzLl9jb25uZWN0aW9uKVxuXG4gICAgcmV0dXJuIGNvbm5lY3Rpb25GYWNhZGVcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZW5hbnQgZGVzY3JpcHRvciBjYXB0dXJlZCBieSB0aGUgaW1tdXRhYmxlIGhhbmRsZS5cbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkfSAtIENhcHR1cmVkIHRlbmFudCBkZXNjcmlwdG9yLlxuICAgKi9cbiAgdGVuYW50KCkge1xuICAgIHJldHVybiAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkfSAqLyAodGhpcy5fdGVuYW50KVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxvZ2ljYWwgZGF0YWJhc2UgaWRlbnRpZmllciBvd25lZCBieSB0aGlzIG9wZXJhdGlvbi5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBEYXRhYmFzZSBpZGVudGlmaWVyLlxuICAgKi9cbiAgZGF0YWJhc2VJZGVudGlmaWVyKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhYmFzZUlkZW50aWZpZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RhYmxlIHBoeXNpY2FsLWRhdGFiYXNlIGlkZW50aXR5IHN1aXRhYmxlIGZvciBvcGVyYXRpb24tYXdhcmUgY2FjaGVzLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFBoeXNpY2FsIGRhdGFiYXNlIGlkZW50aXR5LlxuICAgKi9cbiAgZGF0YWJhc2VJZGVudGl0eSgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5fZGF0YWJhc2VJZGVudGlmaWVyfToke3RoaXMuX2NvbmZpZ3VyYXRpb25SZXVzZUtleX1gXG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgYSBtb2RlbCB0aHJvdWdoIHRoaXMgb3BlcmF0aW9uJ3MgY2FwdHVyZWQgY29ubmVjdGlvbi5cbiAgICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gTW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGluaXRpYWxpemVkLlxuICAgKi9cbiAgYXN5bmMgZW5zdXJlTW9kZWxJbml0aWFsaXplZChNb2RlbENsYXNzKSB7XG4gICAgdGhpcy5hc3NlcnRBY3RpdmUoKVxuXG4gICAgY29uc3QgYm91bmRNb2RlbENsYXNzID0gdGhpcy5tb2RlbENsYXNzKE1vZGVsQ2xhc3MpXG5cbiAgICBpZiAoYm91bmRNb2RlbENsYXNzLmlzSW5pdGlhbGl6ZWQoKSkgdGhpcy5hc3NlcnRNb2RlbChNb2RlbENsYXNzKVxuXG4gICAgYXdhaXQgYm91bmRNb2RlbENsYXNzLmVuc3VyZUluaXRpYWxpemVkKHtcbiAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuX2NvbmZpZ3VyYXRpb24sXG4gICAgICBjb25uZWN0aW9uOiB0aGlzLmNvbm5lY3Rpb24oKVxuICAgIH0pXG4gICAgdGhpcy5hc3NlcnRNb2RlbChNb2RlbENsYXNzKVxuICB9XG5cbiAgLyoqXG4gICAqIFJhaXNlcyB3aGVuIGFuIG9wZXJhdGlvbiBoYW5kbGUgaGFzIGxlZnQgaXRzIGNhbGxiYWNrLlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGFzc2VydEFjdGl2ZSgpIHtcbiAgICBpZiAoIXRoaXMuX2FjdGl2ZSkgdGhyb3cgbmV3IEVycm9yKFwiRGF0YWJhc2Ugb3BlcmF0aW9uIGhhcyBjb21wbGV0ZWRcIilcblxuICAgIGNvbnN0IHBvb2wgPSB0aGlzXG4gICAgICAuX2NvbmZpZ3VyYXRpb25cbiAgICAgIC5nZXREYXRhYmFzZVBvb2wodGhpcy5fZGF0YWJhc2VJZGVudGlmaWVyKVxuICAgIGNvbnN0IGNhcHR1cmVkUmV1c2VLZXkgPSBwb29sLmdldENvbmZpZ3VyYXRpb25SZXVzZUtleSh0aGlzLl9kYXRhYmFzZUNvbmZpZ3VyYXRpb24pXG4gICAgY29uc3QgY29ubmVjdGlvblJldXNlS2V5ID0gcG9vbC5nZXRDb25uZWN0aW9uQ29uZmlndXJhdGlvblJldXNlS2V5KHRoaXMuX3BoeXNpY2FsQ29ubmVjdGlvbilcblxuICAgIGlmIChjYXB0dXJlZFJldXNlS2V5ICE9PSB0aGlzLl9jb25maWd1cmF0aW9uUmV1c2VLZXkgfHwgY29ubmVjdGlvblJldXNlS2V5ICE9PSB0aGlzLl9jb25maWd1cmF0aW9uUmV1c2VLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGF0YWJhc2Ugb3BlcmF0aW9uIGZvciAke0pTT04uc3RyaW5naWZ5KHRoaXMuX2RhdGFiYXNlSWRlbnRpZmllcil9IGJlbG9uZ3MgdG8gYSBkaWZmZXJlbnQgcGh5c2ljYWwgZGF0YWJhc2UgdGhhbiBpdHMgY2FwdHVyZWQgdGVuYW50IGhhbmRsZWApXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2VuZm9yY2VDdXJyZW50VGVuYW50UmV1c2VLZXkgJiYgcG9vbC5nZXRDb25maWd1cmF0aW9uUmV1c2VLZXkoKSAhPT0gdGhpcy5fY29uZmlndXJhdGlvblJldXNlS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERhdGFiYXNlIG9wZXJhdGlvbiBmb3IgJHtKU09OLnN0cmluZ2lmeSh0aGlzLl9kYXRhYmFzZUlkZW50aWZpZXIpfSBiZWxvbmdzIHRvIGEgZGlmZmVyZW50IHBoeXNpY2FsIGRhdGFiYXNlIHRoYW4gdGhlIGN1cnJlbnQgdGVuYW50IGNvbnRleHRgKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBpcmVzIHRoZSBvcGVyYXRpb24gYW5kIGFsbCBzY29wZXMvcmVjb3JkcyBib3VuZCB0byBpdC5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBjb21wbGV0ZSgpIHtcbiAgICB0aGlzLl9hY3RpdmUgPSBmYWxzZVxuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"join-object.d.ts","sourceRoot":"","sources":["../../../../src/database/query/join-object.js"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AAMlC,YAA0E,eAAe,GAA/E;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,eAAe,CAAA;CAAC,CAAiB;AACzF,YAAiD,UAAU,GAAjD;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAA;CAAC,CAAY;AAH9D;;;;GAIG;AAEH,MAAM,CAAC,OAAO,OAAO,gCAAiC,SAAQ,QAAQ;IAQ7D,MAAM;IACN,QAAQ;IARf;;;;OAIG;IACH,YAAY,MAAM,EAHP,UAGO,EAAE,QAAQ,AAFzB,CACF,EADU,MAAM,EAEgB,EAIhC;IAED,KAAK,WAaJ;IAED;;;;;;;;OAQG;IACH,UAAU,CAAC,IAAI,EAPJ,UAOI,EAAE,UAAU,EANhB,cAAc,oBAAoB,EAAE,OAMpB,EAAE,GAAG,EALrB,MAKqB,EAAE,UAAU,EAJjC,MAIiC,EAAE,IAAI,EAHvC,MAAM,EAGiC,GAFrC,MAAM,CAwDlB;IAED;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAC,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAC,EAPxE;QAAgE,YAAY,EAApE,OAAO,iCAAiC,EAAE,OAAO,CACzD;QAAuD,KAAK,EAApD,OAAO,wBAAwB,EAAE,OAAO,CAChD;QAA0D,gBAAgB,EAAlE,cAAc,oBAAoB,EAAE,OAAO,CACnD;QAAuB,QAAQ,EAAvB,MAAM,EAAE,CAChB;QAAqB,cAAc,EAA3B,MAAM,CACd;KAEwE,GAF9D,MAAM,CAkBlB;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,KAAK,EAJZ,OAAO,iBAAiB,EAAE,OAId,EAAE,cAAc,EAH5B,MAG4B,GAF1B,MAAM,CAuBlB;CACF"}
1
+ {"version":3,"file":"join-object.d.ts","sourceRoot":"","sources":["../../../../src/database/query/join-object.js"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AAMlC,YAA0E,eAAe,GAA/E;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,eAAe,CAAA;CAAC,CAAiB;AACzF,YAAiD,UAAU,GAAjD;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAA;CAAC,CAAY;AAH9D;;;;GAIG;AAEH,MAAM,CAAC,OAAO,OAAO,gCAAiC,SAAQ,QAAQ;IAQ7D,MAAM;IACN,QAAQ;IARf;;;;OAIG;IACH,YAAY,MAAM,EAHP,UAGO,EAAE,QAAQ,AAFzB,CACF,EADU,MAAM,EAEgB,EAIhC;IAED,KAAK,WAaJ;IAED;;;;;;;;OAQG;IACH,UAAU,CAAC,IAAI,EAPJ,UAOI,EAAE,UAAU,EANhB,cAAc,oBAAoB,EAAE,OAMpB,EAAE,GAAG,EALrB,MAKqB,EAAE,UAAU,EAJjC,MAIiC,EAAE,IAAI,EAHvC,MAAM,EAGiC,GAFrC,MAAM,CA2DlB;IAED;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAC,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAC,EAPxE;QAAgE,YAAY,EAApE,OAAO,iCAAiC,EAAE,OAAO,CACzD;QAAuD,KAAK,EAApD,OAAO,wBAAwB,EAAE,OAAO,CAChD;QAA0D,gBAAgB,EAAlE,cAAc,oBAAoB,EAAE,OAAO,CACnD;QAAuB,QAAQ,EAAvB,MAAM,EAAE,CAChB;QAAqB,cAAc,EAA3B,MAAM,CACd;KAEwE,GAF9D,MAAM,CAkBlB;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,KAAK,EAJZ,OAAO,iBAAiB,EAAE,OAId,EAAE,cAAc,EAH5B,MAG4B,GAF1B,MAAM,CAuBlB;CACF"}
@@ -43,10 +43,12 @@ export default class VelociousDatabaseQueryJoinObject extends JoinBase {
43
43
  for (const joinKey in join) {
44
44
  const joinValue = join[joinKey];
45
45
  const relationship = modelClass.getRelationshipByName(joinKey);
46
- const targetModelClass = relationship.getTargetModelClass();
47
- if (!targetModelClass) {
46
+ const rawTargetModelClass = relationship.getTargetModelClass();
47
+ if (!rawTargetModelClass) {
48
48
  throw new Error(`Relationship ${modelClass.name}#${joinKey} has no target model class`);
49
49
  }
50
+ const targetModelClass = query.bindModelClass(rawTargetModelClass);
51
+ const foreignKey = relationship.getForeignKeyForModelClasses({ modelClass, targetModelClass });
50
52
  const joinPath = path.concat([joinKey]);
51
53
  const parentTableRef = query.getJoinTableReference(path);
52
54
  const targetEntry = query._registerJoinPath(joinPath);
@@ -65,10 +67,10 @@ export default class VelociousDatabaseQueryJoinObject extends JoinBase {
65
67
  sql += `LEFT JOIN ${joinTableSql} ON `;
66
68
  if (relationship.getType() == "belongsTo") {
67
69
  sql += `${conn.quoteTable(targetTableRef)}.${conn.quoteColumn(relationship.getPrimaryKey())} = `;
68
- sql += `${conn.quoteTable(parentTableRef)}.${conn.quoteColumn(relationship.getForeignKey())}`;
70
+ sql += `${conn.quoteTable(parentTableRef)}.${conn.quoteColumn(foreignKey)}`;
69
71
  }
70
72
  else if (relationship.getType() == "hasMany" || relationship.getType() == "hasOne") {
71
- sql += `${conn.quoteTable(targetTableRef)}.${conn.quoteColumn(relationship.getForeignKey())} = `;
73
+ sql += `${conn.quoteTable(targetTableRef)}.${conn.quoteColumn(foreignKey)} = `;
72
74
  sql += `${conn.quoteTable(parentTableRef)}.${conn.quoteColumn(relationship.getPrimaryKey())}`;
73
75
  }
74
76
  else {
@@ -133,4 +135,4 @@ export default class VelociousDatabaseQueryJoinObject extends JoinBase {
133
135
  return where.toSql();
134
136
  }
135
137
  }
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9pbi1vYmplY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcXVlcnkvam9pbi1vYmplY3QuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFBO0FBQ3JDLE9BQU8sU0FBUyxNQUFNLGlCQUFpQixDQUFBO0FBQ3ZDLE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFBO0FBRXJDOzs7O0dBSUc7QUFFSCxNQUFNLENBQUMsT0FBTyxPQUFPLGdDQUFpQyxTQUFRLFFBQVE7SUFDcEU7Ozs7T0FJRztJQUNILFlBQVksTUFBTSxFQUFFLFFBQVEsR0FBRyxFQUFFO1FBQy9CLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7SUFDMUIsQ0FBQztJQUVELEtBQUs7UUFDSCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7UUFFN0IsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSx1Q0FBdUMsRUFBRSxDQUFDO1lBQ3RFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUMxRixDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsdURBQXVELENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNsRixNQUFNLFVBQVUsR0FBRywwREFBMEQsQ0FBQyxDQUM1RSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQzNHLENBQUE7UUFFRCxPQUFPLElBQUksQ0FBQyxVQUFVLENB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LE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1lBQzNILE1BQU0sUUFBUSxHQUFHLFNBQVM7Z0JBQ3hCLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRTtnQkFDckIsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQTtZQUU5RCxPQUFPLFFBQVEsUUFBUSxHQUFHLENBQUE7UUFDNUIsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3RCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgSm9pbkJhc2UgZnJvbSBcIi4vam9pbi1iYXNlLmpzXCJcbmltcG9ydCBXaGVyZUhhc2ggZnJvbSBcIi4vd2hlcmUtaGFzaC5qc1wiXG5pbXBvcnQgV2hlcmVOb3QgZnJvbSBcIi4vd2hlcmUtbm90LmpzXCJcblxuLyoqXG4gKiBWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5Sm9pbk9iamVjdCBjbGFzcy5cbiAqIEB0eXBlZGVmIHt7W2tleTogc3RyaW5nXTogYm9vbGVhbiB8IHN0cmluZyB8IHN0cmluZ1tdIHwgSm9pbk9iamVjdElucHV0fX0gSm9pbk9iamVjdElucHV0XG4gKiBAdHlwZWRlZiB7e1trZXk6IHN0cmluZ106IGJvb2xlYW4gfCBKb2luT2JqZWN0fX0gSm9pbk9iamVjdFxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlUXVlcnlKb2luT2JqZWN0IGV4dGVuZHMgSm9pbkJhc2Uge1xuICAvKipcbiAgICogUnVucyBjb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHtKb2luT2JqZWN0fSBvYmplY3QgLSBPYmplY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IFtiYXNlUGF0aF0gLSBKb2luIGJhc2UgcGF0aCByZWxhdGl2ZSB0byB0aGUgcm9vdCBxdWVyeS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKG9iamVjdCwgYmFzZVBhdGggPSBbXSkge1xuICAgIHN1cGVyKClcbiAgICB0aGlzLm9iamVjdCA9IG9iamVjdFxuICAgIHRoaXMuYmFzZVBhdGggPSBiYXNlUGF0aFxuICB9XG5cbiAgdG9TcWwoKSB7XG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLmdldFF1ZXJ5KClcblxuICAgIGlmIChxdWVyeS5jb25zdHJ1Y3Rvci5uYW1lICE9IFwiVmVsb2Npb3VzRGF0YWJhc2VRdWVyeU1vZGVsQ2xhc3NRdWVyeVwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFF1ZXJ5IGhhcyB0byBiZSBhIE1vZGVsQ2xhc3NRdWVyeSBidXQgd2FzIGEgJHtxdWVyeS5jb25zdHJ1Y3Rvci5uYW1lfWApXG4gICAgfVxuXG4gICAgY29uc3QgbW9kZWxRdWVyeSA9IC8qKiBAdHlwZSB7aW1wb3J0KFwiLi9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0fSAqLyAocXVlcnkpXG4gICAgY29uc3QgTW9kZWxDbGFzcyA9IC8qKiBAdHlwZSB7dHlwZW9mIGltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSAqLyAoXG4gICAgICB0aGlzLmJhc2VQYXRoLmxlbmd0aCA+IDAgPyBtb2RlbFF1ZXJ5Ll9yZXNvbHZlTW9kZWxDbGFzc0ZvckpvaW5QYXRoKHRoaXMuYmFzZVBhdGgpIDogbW9kZWxRdWVyeS5tb2RlbENsYXNzXG4gICAgKVxuXG4gICAgcmV0dXJuIHRoaXMuam9pbk9iamVjdCh0aGlzLm9iamVjdCwgTW9kZWxDbGFzcywgXCJcIiwgMCwgbW9kZWxRdWVyeS5nZXRKb2luQmFzZVBhdGgoKS5jb25jYXQodGhpcy5iYXNlUGF0aCkpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBqb2luIG9iamVjdC5cbiAgICogQHBhcmFtIHtKb2luT2JqZWN0fSBqb2luIC0gSm9pbi5cbiAgICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IG1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHNxbCAtIFNRTCBzdHJpbmcuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBqb2luc0NvdW50IC0gSm9pbnMgY291bnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGggLSBKb2luIHBhdGguXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGpvaW4gb2JqZWN0LlxuICAgKi9cbiAgam9pbk9iamVjdChqb2luLCBtb2RlbENsYXNzLCBzcWwsIGpvaW5zQ291bnQsIHBhdGgpIHtcbiAgICBjb25zdCBwcmV0dHkgPSB0aGlzLnByZXR0eVxuICAgIGNvbnN0IGNvbm4gPSB0aGlzLmdldFF1ZXJ5KCkuZHJpdmVyXG4gICAgY29uc3QgcXVlcnkgPSAvKiogQHR5cGUge2ltcG9ydChcIi4vbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdH0gKi8gKHRoaXMuZ2V0UXVlcnkoKSlcblxuICAgIGZvciAoY29uc3Qgam9pbktleSBpbiBqb2luKSB7XG4gICAgICBjb25zdCBqb2luVmFsdWUgPSBqb2luW2pvaW5LZXldXG4gICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSBtb2RlbENsYXNzLmdldFJlbGF0aW9uc2hpcEJ5TmFtZShqb2luS2V5KVxuICAgICAgY29uc3QgdGFyZ2V0TW9kZWxDbGFzcyA9IHJlbGF0aW9uc2hpcC5nZXRUYXJnZXRNb2RlbENsYXNzKClcblxuICAgICAgaWYgKCF0YXJnZXRNb2RlbENsYXNzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUmVsYXRpb25zaGlwICR7bW9kZWxDbGFzcy5uYW1lfSMke2pvaW5LZXl9IGhhcyBubyB0YXJnZXQgbW9kZWwgY2xhc3NgKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBqb2luUGF0aCA9IHBhdGguY29uY2F0KFtqb2luS2V5XSlcbiAgICAgIGNvbnN0IHBhcmVudFRhYmxlUmVmID0gcXVlcnkuZ2V0Sm9pblRhYmxlUmVmZXJlbmNlKHBhdGgpXG4gICAgICBjb25zdCB0YXJnZXRFbnRyeSA9IHF1ZXJ5Ll9yZWdpc3RlckpvaW5QYXRoKGpvaW5QYXRoKVxuICAgICAgY29uc3QgdGFyZ2V0VGFibGVSZWYgPSB0YXJnZXRFbnRyeS5hbGlhcyB8fCB0YXJnZXRFbnRyeS50YWJsZU5hbWVcbiAgICAgIGNvbnN0IGpvaW5UYWJsZVNxbCA9IHRhcmdldEVudHJ5LmFsaWFzXG4gICAgICAgID8gYCR7Y29ubi5xdW90ZVRhYmxlKHRhcmdldEVudHJ5LnRhYmxlTmFtZSl9IEFTICR7Y29ubi5xdW90ZVRhYmxlKHRhcmdldEVudHJ5LmFsaWFzKX1gXG4gICAgICAgIDogY29ubi5xdW90ZVRhYmxlKHRhcmdldEVudHJ5LnRhYmxlTmFtZSlcblxuICAgICAgaWYgKGpvaW5zQ291bnQgPiAwKSB7XG4gICAgICAgIGlmIChwcmV0dHkpIHtcbiAgICAgICAgICBzcWwgKz0gXCJcXG5cXG5cIlxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNxbCArPSBcIiBcIlxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHNxbCArPSBgTEVGVCBKT0lOICR7am9pblRhYmxlU3FsfSBPTiBgXG5cbiAgICAgIGlmIChyZWxhdGlvbnNoaXAuZ2V0VHlwZSgpID09IFwiYmVsb25nc1RvXCIpIHtcbiAgICAgICAgc3FsICs9IGAke2Nvbm4ucXVvdGVUYWJsZSh0YXJnZXRUYWJsZVJlZil9LiR7Y29ubi5xdW90ZUNvbHVtbihyZWxhdGlvbnNoaXAuZ2V0UHJpbWFyeUtleSgpKX0gPSBgXG4gICAgICAgIHNxbCArPSBgJHtjb25uLnF1b3RlVGFibGUocGFyZW50VGFibGVSZWYpfS4ke2Nvbm4ucXVvdGVDb2x1bW4ocmVsYXRpb25zaGlwLmdldEZvcmVpZ25LZXkoKSl9YFxuICAgICAgfSBlbHNlIGlmIChyZWxhdGlvbnNoaXAuZ2V0VHlwZSgpID09IFwiaGFzTWFueVwiIHx8IHJlbGF0aW9uc2hpcC5nZXRUeXBlKCkgPT0gXCJoYXNPbmVcIikge1xuICAgICAgICBzcWwgKz0gYCR7Y29ubi5xdW90ZVRhYmxlKHRhcmdldFRhYmxlUmVmKX0uJHtjb25uLnF1b3RlQ29sdW1uKHJlbGF0aW9uc2hpcC5nZXRGb3JlaWduS2V5KCkpfSA9IGBcbiAgICAgICAgc3FsICs9IGAke2Nvbm4ucXVvdGVUYWJsZShwYXJlbnRUYWJsZVJlZil9LiR7Y29ubi5xdW90ZUNvbHVtbihyZWxhdGlvbnNoaXAuZ2V0UHJpbWFyeUtleSgpKX1gXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcmVsYXRpb25zaGlwIHR5cGU6ICR7cmVsYXRpb25zaGlwLmdldFR5cGUoKX1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBzY29wZVNxbCA9IHRoaXMuX3Njb3BlU3FsKHtyZWxhdGlvbnNoaXAsIHF1ZXJ5LCB0YXJnZXRNb2RlbENsYXNzLCBqb2luUGF0aCwgdGFyZ2V0VGFibGVSZWZ9KVxuXG4gICAgICBpZiAoc2NvcGVTcWwpIHtcbiAgICAgICAgc3FsICs9IGAgQU5EICR7c2NvcGVTcWx9YFxuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGpvaW5WYWx1ZSA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIHNxbCA9IHRoaXMuam9pbk9iamVjdChqb2luVmFsdWUsIHRhcmdldE1vZGVsQ2xhc3MsIHNxbCwgam9pbnNDb3VudCArIDEsIGpvaW5QYXRoKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzcWxcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNjb3BlIHNxbC5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9yZWNvcmQvcmVsYXRpb25zaGlwcy9iYXNlLmpzXCIpLmRlZmF1bHR9IGFyZ3MucmVsYXRpb25zaGlwIC0gUmVsYXRpb25zaGlwIGRlZmluaXRpb24uXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0fSBhcmdzLnF1ZXJ5IC0gTW9kZWwgY2xhc3MgcXVlcnkuXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLnRhcmdldE1vZGVsQ2xhc3MgLSBUYXJnZXQgbW9kZWwgY2xhc3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGFyZ3Muam9pblBhdGggLSBKb2luIHBhdGguXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLnRhcmdldFRhYmxlUmVmIC0gVGFyZ2V0IHRhYmxlIHJlZmVyZW5jZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBTY29wZSBTUUwuXG4gICAqL1xuICBfc2NvcGVTcWwoe3JlbGF0aW9uc2hpcCwgcXVlcnksIHRhcmdldE1vZGVsQ2xhc3MsIGpvaW5QYXRoLCB0YXJnZXRUYWJsZVJlZn0pIHtcbiAgICBpZiAoIXJlbGF0aW9uc2hpcC5nZXRTY29wZSgpKSByZXR1cm4gXCJcIlxuXG4gICAgY29uc3Qgc2NvcGVkUXVlcnkgPSBxdWVyeS5idWlsZEpvaW5TY29wZVF1ZXJ5KHRhcmdldE1vZGVsQ2xhc3MsIGpvaW5QYXRoKVxuICAgIGNvbnN0IGFwcGxpZWRRdWVyeSA9IHJlbGF0aW9uc2hpcC5hcHBseVNjb3BlKHNjb3BlZFF1ZXJ5KSB8fCBzY29wZWRRdWVyeVxuICAgIGNvbnN0IHdoZXJlcyA9IGFwcGxpZWRRdWVyeS5fd2hlcmVzXG5cbiAgICBpZiAoIXdoZXJlcyB8fCB3aGVyZXMubGVuZ3RoID09PSAwKSByZXR1cm4gXCJcIlxuXG4gICAgY29uc3QgcGFydHMgPSBbXVxuXG4gICAgZm9yIChjb25zdCB3aGVyZSBvZiB3aGVyZXMpIHtcbiAgICAgIHBhcnRzLnB1c2godGhpcy5fc2NvcGVTcWxGb3JXaGVyZSh3aGVyZSwgdGFyZ2V0VGFibGVSZWYpKVxuICAgIH1cblxuICAgIHJldHVybiBwYXJ0cy5qb2luKFwiIEFORCBcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNjb3BlIHNxbCBmb3Igd2hlcmUuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi93aGVyZS1iYXNlLmpzXCIpLmRlZmF1bHR9IHdoZXJlIC0gV2hlcmUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YXJnZXRUYWJsZVJlZiAtIFRhcmdldCB0YWJsZSByZWZlcmVuY2UuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gU2NvcGUgd2hlcmUgU1FMLlxuICAgKi9cbiAgX3Njb3BlU3FsRm9yV2hlcmUod2hlcmUsIHRhcmdldFRhYmxlUmVmKSB7XG4gICAgaWYgKHdoZXJlIGluc3RhbmNlb2YgV2hlcmVIYXNoKSB7XG4gICAgICBjb25zdCBoYXNoID0gd2hlcmUuaGFzaFxuICAgICAgY29uc3QgaGFzTmVzdGVkID0gT2JqZWN0LnZhbHVlcyhoYXNoKS5zb21lKCh2YWx1ZSkgPT4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSlcblxuICAgICAgcmV0dXJuIGhhc05lc3RlZFxuICAgICAgICA/IHdoZXJlLnRvU3FsKClcbiAgICAgICAgOiBgKCR7d2hlcmUuX3doZXJlU1FMRnJvbUhhc2goaGFzaCwgdGFyZ2V0VGFibGVSZWYpfSlgXG4gICAgfVxuXG4gICAgaWYgKHdoZXJlIGluc3RhbmNlb2YgV2hlcmVOb3QgJiYgd2hlcmUud2hlcmUgaW5zdGFuY2VvZiBXaGVyZUhhc2gpIHtcbiAgICAgIGNvbnN0IGhhc2ggPSB3aGVyZS53aGVyZS5oYXNoXG4gICAgICBjb25zdCBoYXNOZXN0ZWQgPSBPYmplY3QudmFsdWVzKGhhc2gpLnNvbWUoKHZhbHVlKSA9PiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKVxuICAgICAgY29uc3QgaW5uZXJTcWwgPSBoYXNOZXN0ZWRcbiAgICAgICAgPyB3aGVyZS53aGVyZS50b1NxbCgpXG4gICAgICAgIDogYCgke3doZXJlLndoZXJlLl93aGVyZVNRTEZyb21IYXNoKGhhc2gsIHRhcmdldFRhYmxlUmVmKX0pYFxuXG4gICAgICByZXR1cm4gYE5PVCAoJHtpbm5lclNxbH0pYFxuICAgIH1cblxuICAgIHJldHVybiB3aGVyZS50b1NxbCgpXG4gIH1cbn1cbiJdfQ==
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9pbi1vYmplY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcXVlcnkvam9pbi1vYmplY3QuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFBO0FBQ3JDLE9BQU8sU0FBUyxNQUFNLGlCQUFpQixDQUFBO0FBQ3ZDLE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFBO0FBRXJDOzs7O0dBSUc7QUFFSCxNQUFNLENBQUMsT0FBTyxPQUFPLGdDQUFpQyxTQUFRLFFBQVE7SUFDcEU7Ozs7T0FJRztJQUNILFlBQVksTUFBTSxFQUFFLFFBQVEsR0FBRyxFQUFFO1FBQy9CLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7SUFDMUIsQ0FBQztJQUVELEtBQUs7UUFDSCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7UUFFN0IsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSx1Q0FBdUMsRUFBRSxDQUFDO1lBQ3RFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUMxRixDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsdURBQXVELENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNsRixNQUFNLFVBQVUsR0FBRywwREFBMEQsQ0FBQyxDQUM1RSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQzNHLENBQUE7UUFFRCxPQUFPLElBQUksQ0FBQyxVQUFVLENB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QUFDLEtBQUssWUFBWSxTQUFTLEVBQUUsQ0FBQztZQUNsRSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQTtZQUM3QixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7WUFDM0gsTUFBTSxRQUFRLEdBQUcsU0FBUztnQkFDeEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO2dCQUNyQixDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsR0FBRyxDQUFBO1lBRTlELE9BQU8sUUFBUSxRQUFRLEdBQUcsQ0FBQTtRQUM1QixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDdEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBKb2luQmFzZSBmcm9tIFwiLi9qb2luLWJhc2UuanNcIlxuaW1wb3J0IFdoZXJlSGFzaCBmcm9tIFwiLi93aGVyZS1oYXNoLmpzXCJcbmltcG9ydCBXaGVyZU5vdCBmcm9tIFwiLi93aGVyZS1ub3QuanNcIlxuXG4vKipcbiAqIFZlbG9jaW91c0RhdGFiYXNlUXVlcnlKb2luT2JqZWN0IGNsYXNzLlxuICogQHR5cGVkZWYge3tba2V5OiBzdHJpbmddOiBib29sZWFuIHwgc3RyaW5nIHwgc3RyaW5nW10gfCBKb2luT2JqZWN0SW5wdXR9fSBKb2luT2JqZWN0SW5wdXRcbiAqIEB0eXBlZGVmIHt7W2tleTogc3RyaW5nXTogYm9vbGVhbiB8IEpvaW5PYmplY3R9fSBKb2luT2JqZWN0XG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VRdWVyeUpvaW5PYmplY3QgZXh0ZW5kcyBKb2luQmFzZSB7XG4gIC8qKlxuICAgKiBSdW5zIGNvbnN0cnVjdG9yLlxuICAgKiBAcGFyYW0ge0pvaW5PYmplY3R9IG9iamVjdCAtIE9iamVjdC5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gW2Jhc2VQYXRoXSAtIEpvaW4gYmFzZSBwYXRoIHJlbGF0aXZlIHRvIHRoZSByb290IHF1ZXJ5LlxuICAgKi9cbiAgY29uc3RydWN0b3Iob2JqZWN0LCBiYXNlUGF0aCA9IFtdKSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMub2JqZWN0ID0gb2JqZWN0XG4gICAgdGhpcy5iYXNlUGF0aCA9IGJhc2VQYXRoXG4gIH1cblxuICB0b1NxbCgpIHtcbiAgICBjb25zdCBxdWVyeSA9IHRoaXMuZ2V0UXVlcnkoKVxuXG4gICAgaWYgKHF1ZXJ5LmNvbnN0cnVjdG9yLm5hbWUgIT0gXCJWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5TW9kZWxDbGFzc1F1ZXJ5XCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUXVlcnkgaGFzIHRvIGJlIGEgTW9kZWxDbGFzc1F1ZXJ5IGJ1dCB3YXMgYSAke3F1ZXJ5LmNvbnN0cnVjdG9yLm5hbWV9YClcbiAgICB9XG5cbiAgICBjb25zdCBtb2RlbFF1ZXJ5ID0gLyoqIEB0eXBlIHtpbXBvcnQoXCIuL21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHR9ICovIChxdWVyeSlcbiAgICBjb25zdCBNb2RlbENsYXNzID0gLyoqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9ICovIChcbiAgICAgIHRoaXMuYmFzZVBhdGgubGVuZ3RoID4gMCA/IG1vZGVsUXVlcnkuX3Jlc29sdmVNb2RlbENsYXNzRm9ySm9pblBhdGgodGhpcy5iYXNlUGF0aCkgOiBtb2RlbFF1ZXJ5Lm1vZGVsQ2xhc3NcbiAgICApXG5cbiAgICByZXR1cm4gdGhpcy5qb2luT2JqZWN0KHRoaXMub2JqZWN0LCBNb2RlbENsYXNzLCBcIlwiLCAwLCBtb2RlbFF1ZXJ5LmdldEpvaW5CYXNlUGF0aCgpLmNvbmNhdCh0aGlzLmJhc2VQYXRoKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGpvaW4gb2JqZWN0LlxuICAgKiBAcGFyYW0ge0pvaW5PYmplY3R9IGpvaW4gLSBKb2luLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gbW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3FsIC0gU1FMIHN0cmluZy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGpvaW5zQ291bnQgLSBKb2lucyBjb3VudC5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aCAtIEpvaW4gcGF0aC5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgam9pbiBvYmplY3QuXG4gICAqL1xuICBqb2luT2JqZWN0KGpvaW4sIG1vZGVsQ2xhc3MsIHNxbCwgam9pbnNDb3VudCwgcGF0aCkge1xuICAgIGNvbnN0IHByZXR0eSA9IHRoaXMucHJldHR5XG4gICAgY29uc3QgY29ubiA9IHRoaXMuZ2V0UXVlcnkoKS5kcml2ZXJcbiAgICBjb25zdCBxdWVyeSA9IC8qKiBAdHlwZSB7aW1wb3J0KFwiLi9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0fSAqLyAodGhpcy5nZXRRdWVyeSgpKVxuXG4gICAgZm9yIChjb25zdCBqb2luS2V5IGluIGpvaW4pIHtcbiAgICAgIGNvbnN0IGpvaW5WYWx1ZSA9IGpvaW5bam9pbktleV1cbiAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcCA9IG1vZGVsQ2xhc3MuZ2V0UmVsYXRpb25zaGlwQnlOYW1lKGpvaW5LZXkpXG4gICAgICBjb25zdCByYXdUYXJnZXRNb2RlbENsYXNzID0gcmVsYXRpb25zaGlwLmdldFRhcmdldE1vZGVsQ2xhc3MoKVxuXG4gICAgICBpZiAoIXJhd1RhcmdldE1vZGVsQ2xhc3MpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZWxhdGlvbnNoaXAgJHttb2RlbENsYXNzLm5hbWV9IyR7am9pbktleX0gaGFzIG5vIHRhcmdldCBtb2RlbCBjbGFzc2ApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRhcmdldE1vZGVsQ2xhc3MgPSBxdWVyeS5iaW5kTW9kZWxDbGFzcyhyYXdUYXJnZXRNb2RlbENsYXNzKVxuICAgICAgY29uc3QgZm9yZWlnbktleSA9IHJlbGF0aW9uc2hpcC5nZXRGb3JlaWduS2V5Rm9yTW9kZWxDbGFzc2VzKHttb2RlbENsYXNzLCB0YXJnZXRNb2RlbENsYXNzfSlcblxuICAgICAgY29uc3Qgam9pblBhdGggPSBwYXRoLmNvbmNhdChbam9pbktleV0pXG4gICAgICBjb25zdCBwYXJlbnRUYWJsZVJlZiA9IHF1ZXJ5LmdldEpvaW5UYWJsZVJlZmVyZW5jZShwYXRoKVxuICAgICAgY29uc3QgdGFyZ2V0RW50cnkgPSBxdWVyeS5fcmVnaXN0ZXJKb2luUGF0aChqb2luUGF0aClcbiAgICAgIGNvbnN0IHRhcmdldFRhYmxlUmVmID0gdGFyZ2V0RW50cnkuYWxpYXMgfHwgdGFyZ2V0RW50cnkudGFibGVOYW1lXG4gICAgICBjb25zdCBqb2luVGFibGVTcWwgPSB0YXJnZXRFbnRyeS5hbGlhc1xuICAgICAgICA/IGAke2Nvbm4ucXVvdGVUYWJsZSh0YXJnZXRFbnRyeS50YWJsZU5hbWUpfSBBUyAke2Nvbm4ucXVvdGVUYWJsZSh0YXJnZXRFbnRyeS5hbGlhcyl9YFxuICAgICAgICA6IGNvbm4ucXVvdGVUYWJsZSh0YXJnZXRFbnRyeS50YWJsZU5hbWUpXG5cbiAgICAgIGlmIChqb2luc0NvdW50ID4gMCkge1xuICAgICAgICBpZiAocHJldHR5KSB7XG4gICAgICAgICAgc3FsICs9IFwiXFxuXFxuXCJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzcWwgKz0gXCIgXCJcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzcWwgKz0gYExFRlQgSk9JTiAke2pvaW5UYWJsZVNxbH0gT04gYFxuXG4gICAgICBpZiAocmVsYXRpb25zaGlwLmdldFR5cGUoKSA9PSBcImJlbG9uZ3NUb1wiKSB7XG4gICAgICAgIHNxbCArPSBgJHtjb25uLnF1b3RlVGFibGUodGFyZ2V0VGFibGVSZWYpfS4ke2Nvbm4ucXVvdGVDb2x1bW4ocmVsYXRpb25zaGlwLmdldFByaW1hcnlLZXkoKSl9ID0gYFxuICAgICAgICBzcWwgKz0gYCR7Y29ubi5xdW90ZVRhYmxlKHBhcmVudFRhYmxlUmVmKX0uJHtjb25uLnF1b3RlQ29sdW1uKGZvcmVpZ25LZXkpfWBcbiAgICAgIH0gZWxzZSBpZiAocmVsYXRpb25zaGlwLmdldFR5cGUoKSA9PSBcImhhc01hbnlcIiB8fCByZWxhdGlvbnNoaXAuZ2V0VHlwZSgpID09IFwiaGFzT25lXCIpIHtcbiAgICAgICAgc3FsICs9IGAke2Nvbm4ucXVvdGVUYWJsZSh0YXJnZXRUYWJsZVJlZil9LiR7Y29ubi5xdW90ZUNvbHVtbihmb3JlaWduS2V5KX0gPSBgXG4gICAgICAgIHNxbCArPSBgJHtjb25uLnF1b3RlVGFibGUocGFyZW50VGFibGVSZWYpfS4ke2Nvbm4ucXVvdGVDb2x1bW4ocmVsYXRpb25zaGlwLmdldFByaW1hcnlLZXkoKSl9YFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHJlbGF0aW9uc2hpcCB0eXBlOiAke3JlbGF0aW9uc2hpcC5nZXRUeXBlKCl9YClcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2NvcGVTcWwgPSB0aGlzLl9zY29wZVNxbCh7cmVsYXRpb25zaGlwLCBxdWVyeSwgdGFyZ2V0TW9kZWxDbGFzcywgam9pblBhdGgsIHRhcmdldFRhYmxlUmVmfSlcblxuICAgICAgaWYgKHNjb3BlU3FsKSB7XG4gICAgICAgIHNxbCArPSBgIEFORCAke3Njb3BlU3FsfWBcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBqb2luVmFsdWUgPT0gXCJvYmplY3RcIikge1xuICAgICAgICBzcWwgPSB0aGlzLmpvaW5PYmplY3Qoam9pblZhbHVlLCB0YXJnZXRNb2RlbENsYXNzLCBzcWwsIGpvaW5zQ291bnQgKyAxLCBqb2luUGF0aClcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3FsXG4gIH1cblxuICAvKipcbiAgICogUnVucyBzY29wZSBzcWwuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vcmVjb3JkL3JlbGF0aW9uc2hpcHMvYmFzZS5qc1wiKS5kZWZhdWx0fSBhcmdzLnJlbGF0aW9uc2hpcCAtIFJlbGF0aW9uc2hpcCBkZWZpbml0aW9uLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdH0gYXJncy5xdWVyeSAtIE1vZGVsIGNsYXNzIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy50YXJnZXRNb2RlbENsYXNzIC0gVGFyZ2V0IG1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBhcmdzLmpvaW5QYXRoIC0gSm9pbiBwYXRoLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy50YXJnZXRUYWJsZVJlZiAtIFRhcmdldCB0YWJsZSByZWZlcmVuY2UuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gU2NvcGUgU1FMLlxuICAgKi9cbiAgX3Njb3BlU3FsKHtyZWxhdGlvbnNoaXAsIHF1ZXJ5LCB0YXJnZXRNb2RlbENsYXNzLCBqb2luUGF0aCwgdGFyZ2V0VGFibGVSZWZ9KSB7XG4gICAgaWYgKCFyZWxhdGlvbnNoaXAuZ2V0U2NvcGUoKSkgcmV0dXJuIFwiXCJcblxuICAgIGNvbnN0IHNjb3BlZFF1ZXJ5ID0gcXVlcnkuYnVpbGRKb2luU2NvcGVRdWVyeSh0YXJnZXRNb2RlbENsYXNzLCBqb2luUGF0aClcbiAgICBjb25zdCBhcHBsaWVkUXVlcnkgPSByZWxhdGlvbnNoaXAuYXBwbHlTY29wZShzY29wZWRRdWVyeSkgfHwgc2NvcGVkUXVlcnlcbiAgICBjb25zdCB3aGVyZXMgPSBhcHBsaWVkUXVlcnkuX3doZXJlc1xuXG4gICAgaWYgKCF3aGVyZXMgfHwgd2hlcmVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiXCJcblxuICAgIGNvbnN0IHBhcnRzID0gW11cblxuICAgIGZvciAoY29uc3Qgd2hlcmUgb2Ygd2hlcmVzKSB7XG4gICAgICBwYXJ0cy5wdXNoKHRoaXMuX3Njb3BlU3FsRm9yV2hlcmUod2hlcmUsIHRhcmdldFRhYmxlUmVmKSlcbiAgICB9XG5cbiAgICByZXR1cm4gcGFydHMuam9pbihcIiBBTkQgXCIpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBzY29wZSBzcWwgZm9yIHdoZXJlLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vd2hlcmUtYmFzZS5qc1wiKS5kZWZhdWx0fSB3aGVyZSAtIFdoZXJlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFyZ2V0VGFibGVSZWYgLSBUYXJnZXQgdGFibGUgcmVmZXJlbmNlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFNjb3BlIHdoZXJlIFNRTC5cbiAgICovXG4gIF9zY29wZVNxbEZvcldoZXJlKHdoZXJlLCB0YXJnZXRUYWJsZVJlZikge1xuICAgIGlmICh3aGVyZSBpbnN0YW5jZW9mIFdoZXJlSGFzaCkge1xuICAgICAgY29uc3QgaGFzaCA9IHdoZXJlLmhhc2hcbiAgICAgIGNvbnN0IGhhc05lc3RlZCA9IE9iamVjdC52YWx1ZXMoaGFzaCkuc29tZSgodmFsdWUpID0+IHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG5cbiAgICAgIHJldHVybiBoYXNOZXN0ZWRcbiAgICAgICAgPyB3aGVyZS50b1NxbCgpXG4gICAgICAgIDogYCgke3doZXJlLl93aGVyZVNRTEZyb21IYXNoKGhhc2gsIHRhcmdldFRhYmxlUmVmKX0pYFxuICAgIH1cblxuICAgIGlmICh3aGVyZSBpbnN0YW5jZW9mIFdoZXJlTm90ICYmIHdoZXJlLndoZXJlIGluc3RhbmNlb2YgV2hlcmVIYXNoKSB7XG4gICAgICBjb25zdCBoYXNoID0gd2hlcmUud2hlcmUuaGFzaFxuICAgICAgY29uc3QgaGFzTmVzdGVkID0gT2JqZWN0LnZhbHVlcyhoYXNoKS5zb21lKCh2YWx1ZSkgPT4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgIGNvbnN0IGlubmVyU3FsID0gaGFzTmVzdGVkXG4gICAgICAgID8gd2hlcmUud2hlcmUudG9TcWwoKVxuICAgICAgICA6IGAoJHt3aGVyZS53aGVyZS5fd2hlcmVTUUxGcm9tSGFzaChoYXNoLCB0YXJnZXRUYWJsZVJlZil9KWBcblxuICAgICAgcmV0dXJuIGBOT1QgKCR7aW5uZXJTcWx9KWBcbiAgICB9XG5cbiAgICByZXR1cm4gd2hlcmUudG9TcWwoKVxuICB9XG59XG4iXX0=
@@ -123,6 +123,12 @@ export default class VelociousDatabaseQueryModelClassQuery<MC extends typeof imp
123
123
  * @returns {MC} - The model class.
124
124
  */
125
125
  getModelClass(): MC;
126
+ /**
127
+ * Binds a relationship target to this query's physical database generation.
128
+ * @param {typeof import("../record/index.js").default} modelClass - Canonical relationship target.
129
+ * @returns {typeof import("../record/index.js").default} - Query-bound relationship target.
130
+ */
131
+ bindModelClass(modelClass: typeof import("../record/index.js").default): typeof import("../record/index.js").default;
126
132
  /**
127
133
  * Runs get join base path.
128
134
  * @returns {string[]} - The join base path.
@@ -1 +1 @@
1
- {"version":3,"file":"model-class-query.d.ts","sourceRoot":"","sources":["../../../../src/database/query/model-class-query.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-class-query.d.ts","sourceRoot":"","sources":["../../../../src/database/query/model-class-query.js"],"names":[],"mappings":"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"}