velocious 1.0.331 → 1.0.332
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.
- package/README.md +43 -0
- package/build/src/configuration-types.d.ts +5 -0
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +2 -1
- package/build/src/configuration.d.ts +9 -1
- package/build/src/configuration.d.ts.map +1 -1
- package/build/src/configuration.js +10 -2
- package/build/src/database/query/model-class-query.d.ts.map +1 -1
- package/build/src/database/query/model-class-query.js +6 -1
- package/build/src/database/record/index.d.ts +7 -0
- package/build/src/database/record/index.d.ts.map +1 -1
- package/build/src/database/record/index.js +8 -6
- package/build/src/database/record/instance-relationships/base.d.ts +18 -0
- package/build/src/database/record/instance-relationships/base.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/base.js +77 -1
- package/build/src/database/record/instance-relationships/belongs-to.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/belongs-to.js +9 -1
- package/build/src/database/record/instance-relationships/has-many.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/has-many.js +16 -6
- package/build/src/database/record/instance-relationships/has-one.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/has-one.js +9 -1
- package/build/src/database/record/relationships/base.d.ts +9 -1
- package/build/src/database/record/relationships/base.d.ts.map +1 -1
- package/build/src/database/record/relationships/base.js +6 -2
- package/package.json +1 -1
|
@@ -55,6 +55,24 @@ export default class VelociousDatabaseRecordBaseInstanceRelationship<MC extends
|
|
|
55
55
|
* @returns {Promise<InstanceType<TMC> | Array<InstanceType<TMC>> | undefined>} - Resolves with loaded relationship value.
|
|
56
56
|
*/
|
|
57
57
|
load(): Promise<InstanceType<TMC> | Array<InstanceType<TMC>> | undefined>;
|
|
58
|
+
/**
|
|
59
|
+
* Loads the relationship if not already loaded. When the parent record was
|
|
60
|
+
* loaded as part of a batch (cohort) and autoload is enabled, siblings in
|
|
61
|
+
* the cohort that share this relationship and have not preloaded it yet
|
|
62
|
+
* are batched into a single query via the existing preloader path.
|
|
63
|
+
* @returns {Promise<InstanceType<TMC> | Array<InstanceType<TMC>> | undefined>} - Resolves with loaded relationship value.
|
|
64
|
+
*/
|
|
65
|
+
autoloadOrLoad(): Promise<InstanceType<TMC> | Array<InstanceType<TMC>> | undefined>;
|
|
66
|
+
/**
|
|
67
|
+
* Attempts to batch-load this relationship across cohort siblings via the
|
|
68
|
+
* existing preloader path. Returns true when a batch ran (self is always
|
|
69
|
+
* included because callers reset their own `_preloaded` state before
|
|
70
|
+
* calling), false when autoload is off, there is no cohort, or no batch
|
|
71
|
+
* candidates remain. Siblings that have already preloaded this relationship
|
|
72
|
+
* are skipped so their cached value is preserved.
|
|
73
|
+
* @returns {Promise<boolean>} - Whether a cohort batch preload ran.
|
|
74
|
+
*/
|
|
75
|
+
_tryCohortPreload(): Promise<boolean>;
|
|
58
76
|
/** @returns {boolean} Whether the relationship has been preloaded */
|
|
59
77
|
isLoaded(): boolean;
|
|
60
78
|
/** @returns {InstanceType<TMC> | Array<InstanceType<TMC>> | undefined} The loaded model or models (depending on relationship type) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/instance-relationships/base.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/instance-relationships/base.js"],"names":[],"mappings":"AAMA;;;;;;GAMG;AAEH;;;;GAIG;AACH,qEAHqD,EAAE,SAA1C,cAAe,aAAa,EAAE,OAAQ,yCACE,GAAG,SAA3C,cAAe,aAAa,EAAE,OAAQ;IAUjD;;OAEG;IACH,qCAFW,6BAA6B,CAAC,EAAE,EAAE,GAAG,CAAC,EAMhD;IAdD,kCAAkC;IAClC,WADW,OAAO,GAAG,SAAS,CACT;IACrB,kCAAkC;IAClC,YADW,OAAO,GAAG,SAAS,CACR;IACtB,uEAAuE;IACvE,SADW,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAChD;IAMjB,gBAAmB;IACnB,wBAAkB;IAClB,yDAAgC;IAGlC;;;;OAIG;IACH,oBAHW,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,GACrC,IAAI,CAIhB;IAED;;;;OAIG;IACH,kBAHW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACjB,YAAY,CAAC,GAAG,CAAC,CAI7B;IAED,kHAAkH;IAClH,eADc,OAAO,GAAG,SAAS,CACM;IAEvC;;;OAGG;IACH,8BAHW,OAAO,GACL,IAAI,CAEkD;IAEnE;;;OAGG;IACH,mBAHW,OAAO,GACL,IAAI,CAE4B;IAE7C,+EAA+E;IAC/E,YADc,OAAO,CACY;IAEjC;;;OAGG;IACH,QAFa,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAI7E;IAED;;;;;;OAMG;IACH,kBAFa,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAU7E;IAED;;;;;;;;OAQG;IACH,qBAFa,OAAO,CAAC,OAAO,CAAC,CAwD5B;IAED,sEAAsE;IACtE,YADe,OAAO,CACqB;IAE3C,sIAAsI;IACtI,UADc,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAOrE;IAED,oHAAoH;IACpH,iBADY,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,QAC3B;IAEzC,iGAAiG;IACjG,wBADc,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,CACnB;IAE9C,qFAAqF;IACrF,gBADc,OAAO,CAC6B;IAElD,4EAA4E;IAC5E,0BADY,OAAO,QACwC;IAE3D,8DAA8D;IAC9D,iBADc,MAAM,CAC6C;IAEjE,gDAAgD;IAChD,YADc,YAAY,CAAC,EAAE,CAAC,CACE;IAEhC,sEAAsE;IACtE,iBADc,MAAM,CAC6C;IAEjE,gIAAgI;IAChI,mBADc,OAAO,0BAA0B,EAAE,OAAO,CACV;IAE9C;;;;OAIG;IACH,WAJa,CAAC,SACH,CAAC,GACC,CAAC,CAIb;IAED,iFAAiF;IACjF,uBADc,GAAG,GAAG,SAAS,CAK5B;IAED,uFAAuF;IACvF,WADc,MAAM,CACiC;CACtD;0CAjNoD,EAAE,SAA1C,cAAe,aAAa,EAAE,OAAQ,yCACE,GAAG,SAA3C,cAAe,aAAa,EAAE,OAAQ;;;;WAErC,YAAY,CAAC,EAAE,CAAC;;;;kBAChB,OAAO,0BAA0B,EAAE,OAAO"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
// @ts-check
|
|
2
|
+
import BelongsToPreloader from "../../query/preloader/belongs-to.js";
|
|
3
|
+
import HasManyPreloader from "../../query/preloader/has-many.js";
|
|
4
|
+
import HasOnePreloader from "../../query/preloader/has-one.js";
|
|
2
5
|
/**
|
|
3
6
|
* @template {typeof import("../index.js").default} [MC=typeof import("../index.js").default]
|
|
4
7
|
* @template {typeof import("../index.js").default} [TMC=typeof import("../index.js").default]
|
|
@@ -63,6 +66,79 @@ export default class VelociousDatabaseRecordBaseInstanceRelationship {
|
|
|
63
66
|
load() {
|
|
64
67
|
throw new Error("'load' not implemented");
|
|
65
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Loads the relationship if not already loaded. When the parent record was
|
|
71
|
+
* loaded as part of a batch (cohort) and autoload is enabled, siblings in
|
|
72
|
+
* the cohort that share this relationship and have not preloaded it yet
|
|
73
|
+
* are batched into a single query via the existing preloader path.
|
|
74
|
+
* @returns {Promise<InstanceType<TMC> | Array<InstanceType<TMC>> | undefined>} - Resolves with loaded relationship value.
|
|
75
|
+
*/
|
|
76
|
+
async autoloadOrLoad() {
|
|
77
|
+
if (this._loaded !== undefined)
|
|
78
|
+
return this._loaded;
|
|
79
|
+
const batched = await this._tryCohortPreload();
|
|
80
|
+
if (!batched)
|
|
81
|
+
await this.load();
|
|
82
|
+
return this._loaded;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Attempts to batch-load this relationship across cohort siblings via the
|
|
86
|
+
* existing preloader path. Returns true when a batch ran (self is always
|
|
87
|
+
* included because callers reset their own `_preloaded` state before
|
|
88
|
+
* calling), false when autoload is off, there is no cohort, or no batch
|
|
89
|
+
* candidates remain. Siblings that have already preloaded this relationship
|
|
90
|
+
* are skipped so their cached value is preserved.
|
|
91
|
+
* @returns {Promise<boolean>} - Whether a cohort batch preload ran.
|
|
92
|
+
*/
|
|
93
|
+
async _tryCohortPreload() {
|
|
94
|
+
const relationshipDef = this.getRelationship();
|
|
95
|
+
const configuration = relationshipDef.getConfiguration();
|
|
96
|
+
const cohort = /** @type {Array<import("../index.js").default> | undefined} */ ( /** @type {any} */(this.model)._loadCohort);
|
|
97
|
+
if (!configuration.getAutoload() || !relationshipDef.getAutoload() || !cohort || cohort.length <= 1) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
const relationshipName = relationshipDef.getRelationshipName();
|
|
101
|
+
const OwnerModelClass = /** @type {any} */ (this.model).constructor;
|
|
102
|
+
/** @type {Array<import("../index.js").default>} */
|
|
103
|
+
const batch = [];
|
|
104
|
+
// Exact same class, persisted, no existing in-memory relationship state.
|
|
105
|
+
// Skip siblings where `_loaded` is already set — they may have been
|
|
106
|
+
// preloaded (preserve cache) OR locally manipulated via `build...` /
|
|
107
|
+
// `set...` (preserve unsaved edits). Either way the preloader would
|
|
108
|
+
// overwrite that state.
|
|
109
|
+
for (const sibling of cohort) {
|
|
110
|
+
if (sibling.constructor !== OwnerModelClass)
|
|
111
|
+
continue;
|
|
112
|
+
if (!sibling.isPersisted())
|
|
113
|
+
continue;
|
|
114
|
+
const siblingInstanceRelationship = sibling.getRelationshipByName(relationshipName);
|
|
115
|
+
if (siblingInstanceRelationship.getLoadedOrUndefined() !== undefined)
|
|
116
|
+
continue;
|
|
117
|
+
batch.push(sibling);
|
|
118
|
+
}
|
|
119
|
+
if (batch.length === 0)
|
|
120
|
+
return false;
|
|
121
|
+
const type = relationshipDef.getType();
|
|
122
|
+
if (type == "belongsTo") {
|
|
123
|
+
const belongsToRelationship = /** @type {import("../relationships/belongs-to.js").default} */ (relationshipDef);
|
|
124
|
+
const preloader = new BelongsToPreloader({ models: batch, relationship: belongsToRelationship });
|
|
125
|
+
await preloader.run();
|
|
126
|
+
}
|
|
127
|
+
else if (type == "hasMany") {
|
|
128
|
+
const hasManyRelationship = /** @type {import("../relationships/has-many.js").default} */ (relationshipDef);
|
|
129
|
+
const preloader = new HasManyPreloader({ models: batch, relationship: hasManyRelationship });
|
|
130
|
+
await preloader.run();
|
|
131
|
+
}
|
|
132
|
+
else if (type == "hasOne") {
|
|
133
|
+
const hasOneRelationship = /** @type {import("../relationships/has-one.js").default} */ (relationshipDef);
|
|
134
|
+
const preloader = new HasOnePreloader({ models: batch, relationship: hasOneRelationship });
|
|
135
|
+
await preloader.run();
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
throw new Error(`Unknown relationship type: ${type}`);
|
|
139
|
+
}
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
66
142
|
/** @returns {boolean} Whether the relationship has been preloaded */
|
|
67
143
|
isLoaded() { return Boolean(this._loaded); }
|
|
68
144
|
/** @returns {InstanceType<TMC> | Array<InstanceType<TMC>> | undefined} The loaded model or models (depending on relationship type) */
|
|
@@ -104,4 +180,4 @@ export default class VelociousDatabaseRecordBaseInstanceRelationship {
|
|
|
104
180
|
/** @returns {string} The type of relationship (e.g. "has_many", "belongs_to", etc.) */
|
|
105
181
|
getType() { return this.getRelationship().getType(); }
|
|
106
182
|
}
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9yZWNvcmQvaW5zdGFuY2UtcmVsYXRpb25zaGlwcy9iYXNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWjs7Ozs7O0dBTUc7QUFFSDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTywrQ0FBK0M7SUFDbEUsa0NBQWtDO0lBQ2xDLFNBQVMsR0FBRyxTQUFTLENBQUE7SUFDckIsa0NBQWtDO0lBQ2xDLFVBQVUsR0FBRyxTQUFTLENBQUE7SUFDdEIsdUVBQXVFO0lBQ3ZFLE9BQU8sR0FBRyxTQUFTLENBQUE7SUFFbkI7O09BRUc7SUFDSCxZQUFZLEVBQUMsS0FBSyxFQUFFLFlBQVksRUFBQztRQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUNsQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxNQUFNO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtJQUNoRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxVQUFVO1FBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO0lBQzVDLENBQUM7SUFFRCxrSEFBa0g7SUFDbEgsV0FBVyxLQUFLLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQSxDQUFDLENBQUM7SUFFdkM7OztPQUdHO0lBQ0gsV0FBVyxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUEsQ0FBQyxDQUFDO0lBRW5FOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUEsQ0FBQyxDQUFDO0lBRTdDLCtFQUErRTtJQUMvRSxRQUFRLEtBQUssT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFBLENBQUMsQ0FBQztJQUVqQzs7O09BR0c7SUFDSCxJQUFJO1FBQ0YsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO0lBQzNDLENBQUM7SUFFRCxzRUFBc0U7SUFDdEUsUUFBUSxLQUFLLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFFM0Msc0lBQXNJO0lBQ3RJLE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDakQsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLHdCQUF3QixDQUFDLENBQUE7UUFDcEgsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNyQixDQUFDO0lBRUQsb0hBQW9IO0lBQ3BILFNBQVMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBRXpDLGlHQUFpRztJQUNqRyxvQkFBb0IsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUEsQ0FBQyxDQUFDO0lBRTlDLHFGQUFxRjtJQUNyRixZQUFZLEtBQUssT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQSxDQUFDLENBQUM7SUFFbEQsNEVBQTRFO0lBQzVFLFlBQVksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUEsQ0FBQyxDQUFDO0lBRTNELDhEQUE4RDtJQUM5RCxhQUFhLEtBQUssT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUEsQ0FBQyxDQUFDO0lBRWpFLGdEQUFnRDtJQUNoRCxRQUFRLEtBQUssT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUVoQyxzRUFBc0U7SUFDdEUsYUFBYSxLQUFLLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFBLENBQUMsQ0FBQztJQUVqRSxnSUFBZ0k7SUFDaEksZUFBZSxLQUFLLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQSxDQUFDLENBQUM7SUFFOUM7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2pELENBQUM7SUFFRCxpRkFBaUY7SUFDakYsbUJBQW1CO1FBQ2pCLE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFBO1FBRTFGLE9BQU8sZ0JBQWdCLENBQUE7SUFDekIsQ0FBQztJQUVELHVGQUF1RjtJQUN2RixPQUFPLEtBQUssT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUEsQ0FBQyxDQUFDO0NBQ3REIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogQHRlbXBsYXRlIHt0eXBlb2YgaW1wb3J0KFwiLi4vaW5kZXguanNcIikuZGVmYXVsdH0gW01DPXR5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0XVxuICogQHRlbXBsYXRlIHt0eXBlb2YgaW1wb3J0KFwiLi4vaW5kZXguanNcIikuZGVmYXVsdH0gW1RNQz10eXBlb2YgaW1wb3J0KFwiLi4vaW5kZXguanNcIikuZGVmYXVsdF1cbiAqIEB0eXBlZGVmIHtvYmplY3R9IEluc3RhbmNlUmVsYXRpb25zaGlwc0Jhc2VBcmdzXG4gKiBAcHJvcGVydHkge0luc3RhbmNlVHlwZTxNQz59IG1vZGVsIC0gUGFyZW50IG1vZGVsIGluc3RhbmNlLlxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuLi9yZWxhdGlvbnNoaXBzL2Jhc2UuanNcIikuZGVmYXVsdH0gcmVsYXRpb25zaGlwIC0gUmVsYXRpb25zaGlwIG1ldGFkYXRhIGRlZmluaXRpb24uXG4gKi9cblxuLyoqXG4gKiBBIGdlbmVyaWMgcXVlcnkgb3ZlciBzb21lIG1vZGVsIHR5cGUuXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0fSBbTUM9dHlwZW9mIGltcG9ydChcIi4uL2luZGV4LmpzXCIpLmRlZmF1bHRdXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0fSBbVE1DPXR5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0XVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVJlY29yZEJhc2VJbnN0YW5jZVJlbGF0aW9uc2hpcCB7XG4gIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgX2F1dG9TYXZlID0gdW5kZWZpbmVkXG4gIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgX3ByZWxvYWRlZCA9IHVuZGVmaW5lZFxuICAvKiogQHR5cGUge0luc3RhbmNlVHlwZTxUTUM+IHwgQXJyYXk8SW5zdGFuY2VUeXBlPFRNQz4+IHwgdW5kZWZpbmVkfSAqL1xuICBfbG9hZGVkID0gdW5kZWZpbmVkXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7SW5zdGFuY2VSZWxhdGlvbnNoaXBzQmFzZUFyZ3M8TUMsIFRNQz59IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHttb2RlbCwgcmVsYXRpb25zaGlwfSkge1xuICAgIHRoaXMuX2RpcnR5ID0gZmFsc2VcbiAgICB0aGlzLm1vZGVsID0gbW9kZWxcbiAgICB0aGlzLnJlbGF0aW9uc2hpcCA9IHJlbGF0aW9uc2hpcFxuICB9XG5cbiAgLyoqXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcGFyYW0ge0luc3RhbmNlVHlwZTxUTUM+W10gfCBJbnN0YW5jZVR5cGU8VE1DPn0gbW9kZWxzIC0gTW9kZWwgaW5zdGFuY2VzLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBhZGRUb0xvYWRlZChtb2RlbHMpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIHRocm93IG5ldyBFcnJvcihcImFkZFRvTG9hZGVkIG5vdCBpbXBsZW1lbnRlZFwiKVxuICB9XG5cbiAgLyoqXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGF0dHJpYnV0ZXMgLSBBdHRyaWJ1dGVzLlxuICAgKiBAcmV0dXJucyB7SW5zdGFuY2VUeXBlPFRNQz59IC0gVGhlIGJ1aWxkLlxuICAgKi9cbiAgYnVpbGQoYXR0cmlidXRlcykgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiJ2J1aWxkJyBub3QgaW1wbGVtZW50ZWRcIilcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gV2hldGhlciB0aGUgcmVsYXRpb25zaGlwIHNob3VsZCBiZSBhdXRvLXNhdmVkIGJlZm9yZSBzYXZpbmcgdGhlIHBhcmVudCBtb2RlbCAqL1xuICBnZXRBdXRvU2F2ZSgpIHsgcmV0dXJuIHRoaXMuX2F1dG9TYXZlIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtib29sZWFufSBuZXdBdXRvU2F2ZVZhbHVlIFdoZXRoZXIgdGhlIHJlbGF0aW9uc2hpcCBzaG91bGQgYmUgYXV0by1zYXZlZCBiZWZvcmUgc2F2aW5nIHRoZSBwYXJlbnQgbW9kZWxcbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgc2V0QXV0b1NhdmUobmV3QXV0b1NhdmVWYWx1ZSkgeyB0aGlzLl9hdXRvU2F2ZSA9IG5ld0F1dG9TYXZlVmFsdWUgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG5ld1ZhbHVlIFdoZXRoZXIgdGhlIHJlbGF0aW9uc2hpcCBpcyBkaXJ0eSAoaGFzIGJlZW4gbW9kaWZpZWQpXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIHNldERpcnR5KG5ld1ZhbHVlKSB7IHRoaXMuX2RpcnR5ID0gbmV3VmFsdWUgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGUgcmVsYXRpb25zaGlwIGlzIGRpcnR5IChoYXMgYmVlbiBtb2RpZmllZCkgKi9cbiAgZ2V0RGlydHkoKSB7IHJldHVybiB0aGlzLl9kaXJ0eSB9XG5cbiAgLyoqXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxJbnN0YW5jZVR5cGU8VE1DPiB8IEFycmF5PEluc3RhbmNlVHlwZTxUTUM+PiB8IHVuZGVmaW5lZD59IC0gUmVzb2x2ZXMgd2l0aCBsb2FkZWQgcmVsYXRpb25zaGlwIHZhbHVlLlxuICAgKi9cbiAgbG9hZCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCInbG9hZCcgbm90IGltcGxlbWVudGVkXCIpXG4gIH1cblxuICAvKiogIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIHRoZSByZWxhdGlvbnNoaXAgaGFzIGJlZW4gcHJlbG9hZGVkICovXG4gIGlzTG9hZGVkKCkgeyByZXR1cm4gQm9vbGVhbih0aGlzLl9sb2FkZWQpIH1cblxuICAvKiogQHJldHVybnMge0luc3RhbmNlVHlwZTxUTUM+IHwgQXJyYXk8SW5zdGFuY2VUeXBlPFRNQz4+IHwgdW5kZWZpbmVkfSBUaGUgbG9hZGVkIG1vZGVsIG9yIG1vZGVscyAoZGVwZW5kaW5nIG9uIHJlbGF0aW9uc2hpcCB0eXBlKSAqL1xuICBsb2FkZWQoKSB7XG4gICAgaWYgKCF0aGlzLl9wcmVsb2FkZWQgJiYgdGhpcy5tb2RlbC5pc1BlcnNpc3RlZCgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5tb2RlbC5jb25zdHJ1Y3Rvci5uYW1lfSMke3RoaXMucmVsYXRpb25zaGlwLmdldFJlbGF0aW9uc2hpcE5hbWUoKX0gaGFzbid0IGJlZW4gcHJlbG9hZGVkYClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fbG9hZGVkXG4gIH1cblxuICAvKiogQHBhcmFtIHtJbnN0YW5jZVR5cGU8VE1DPiB8IEFycmF5PEluc3RhbmNlVHlwZTxUTUM+PiB8IHVuZGVmaW5lZH0gbW9kZWwgLSBSZWxhdGVkIG1vZGVsKHMpIHRvIG1hcmsgYXMgbG9hZGVkLiAqL1xuICBzZXRMb2FkZWQobW9kZWwpIHsgdGhpcy5fbG9hZGVkID0gbW9kZWwgfVxuXG4gIC8qKiBAcmV0dXJucyB7SW5zdGFuY2VUeXBlPFRNQz4gfCBJbnN0YW5jZVR5cGU8VE1DPltdIHwgdW5kZWZpbmVkfSAtIFRoZSBsb2FkZWQgb3IgdW5kZWZpbmVkLiAgKi9cbiAgZ2V0TG9hZGVkT3JVbmRlZmluZWQoKSB7IHJldHVybiB0aGlzLl9sb2FkZWQgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gVGhlIGxvYWRlZCBtb2RlbCBvciBtb2RlbHMgKGRlcGVuZGluZyBvbiByZWxhdGlvbnNoaXAgdHlwZSkgKi9cbiAgZ2V0UHJlbG9hZGVkKCkgeyByZXR1cm4gdGhpcy5fcHJlbG9hZGVkIHx8IGZhbHNlIH1cblxuICAvKiogQHBhcmFtIHtib29sZWFufSBpc1ByZWxvYWRlZCAtIFdoZXRoZXIgdGhlIHJlbGF0aW9uc2hpcCBpcyBwcmVsb2FkZWQuICovXG4gIHNldFByZWxvYWRlZChpc1ByZWxvYWRlZCkgeyB0aGlzLl9wcmVsb2FkZWQgPSBpc1ByZWxvYWRlZCB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBmb3JlaWduIGtleSBmb3IgdGhpcyByZWxhdGlvbnNoaXAgKi9cbiAgZ2V0Rm9yZWlnbktleSgpIHsgcmV0dXJuIHRoaXMuZ2V0UmVsYXRpb25zaGlwKCkuZ2V0Rm9yZWlnbktleSgpIH1cblxuICAvKiogQHJldHVybnMge0luc3RhbmNlVHlwZTxNQz59IC0gVGhlIG1vZGVsLiAgKi9cbiAgZ2V0TW9kZWwoKSB7IHJldHVybiB0aGlzLm1vZGVsIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gVGhlIHByaW1hcnkga2V5IGZvciB0aGlzIHJlbGF0aW9uc2hpcCdzIG1vZGVsICovXG4gIGdldFByaW1hcnlLZXkoKSB7IHJldHVybiB0aGlzLmdldFJlbGF0aW9uc2hpcCgpLmdldFByaW1hcnlLZXkoKSB9XG5cbiAgLyoqIEByZXR1cm5zIHtpbXBvcnQoXCIuLi9yZWxhdGlvbnNoaXBzL2Jhc2UuanNcIikuZGVmYXVsdH0gVGhlIHJlbGF0aW9uc2hpcCBvYmplY3QgdGhhdCB0aGlzIGluc3RhbmNlIHJlbGF0aW9uc2hpcCBpcyBiYXNlZCBvbiAqL1xuICBnZXRSZWxhdGlvbnNoaXAoKSB7IHJldHVybiB0aGlzLnJlbGF0aW9uc2hpcCB9XG5cbiAgLyoqXG4gICAqIEB0ZW1wbGF0ZSBUXG4gICAqIEBwYXJhbSB7VH0gcXVlcnkgLSBRdWVyeSBpbnN0YW5jZS5cbiAgICogQHJldHVybnMge1R9IC0gU2NvcGVkIHF1ZXJ5LlxuICAgKi9cbiAgYXBwbHlTY29wZShxdWVyeSkge1xuICAgIHJldHVybiB0aGlzLmdldFJlbGF0aW9uc2hpcCgpLmFwcGx5U2NvcGUocXVlcnkpXG4gIH1cblxuICAvKiogQHJldHVybnMge1RNQyB8IHVuZGVmaW5lZH0gVGhlIG1vZGVsIGNsYXNzIHRoYXQgdGhpcyBpbnN0YW5jZSByZWxhdGlvbnNoaXAgKi9cbiAgZ2V0VGFyZ2V0TW9kZWxDbGFzcygpIHtcbiAgICBjb25zdCBUYXJnZXRNb2RlbENsYXNzID0gLyoqIEB0eXBlIHtUTUN9ICovICh0aGlzLmdldFJlbGF0aW9uc2hpcCgpLmdldFRhcmdldE1vZGVsQ2xhc3MoKSlcblxuICAgIHJldHVybiBUYXJnZXRNb2RlbENsYXNzXG4gIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gVGhlIHR5cGUgb2YgcmVsYXRpb25zaGlwIChlLmcuIFwiaGFzX21hbnlcIiwgXCJiZWxvbmdzX3RvXCIsIGV0Yy4pICovXG4gIGdldFR5cGUoKSB7IHJldHVybiB0aGlzLmdldFJlbGF0aW9uc2hpcCgpLmdldFR5cGUoKSB9XG59XG4iXX0=
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9yZWNvcmQvaW5zdGFuY2UtcmVsYXRpb25zaGlwcy9iYXNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGtCQUFrQixNQUFNLHFDQUFxQyxDQUFBO0FBQ3BFLE9BQU8sZ0JBQWdCLE1BQU0sbUNBQW1DLENBQUE7QUFDaEUsT0FBTyxlQUFlLE1BQU0sa0NBQWtDLENBQUE7QUFFOUQ7Ozs7OztHQU1HO0FBRUg7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8sK0NBQStDO0lBQ2xFLGtDQUFrQztJQUNsQyxTQUFTLEdBQUcsU0FBUyxDQUFBO0lBQ3JCLGtDQUFrQztJQUNsQyxVQUFVLEdBQUcsU0FBUyxDQUFBO0lBQ3RCLHVFQUF1RTtJQUN2RSxPQUFPLEdBQUcsU0FBUyxDQUFBO0lBRW5COztPQUVHO0lBQ0gsWUFBWSxFQUFDLEtBQUssRUFBRSxZQUFZLEVBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUE7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7UUFDbEIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLENBQUMsTUFBTTtRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUE7SUFDaEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsVUFBVTtRQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQTtJQUM1QyxDQUFDO0lBRUQsa0hBQWtIO0lBQ2xILFdBQVcsS0FBSyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUEsQ0FBQyxDQUFDO0lBRXZDOzs7T0FHRztJQUNILFdBQVcsQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLGdCQUFnQixDQUFBLENBQUMsQ0FBQztJQUVuRTs7O09BR0c7SUFDSCxRQUFRLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFBLENBQUMsQ0FBQztJQUU3QywrRUFBK0U7SUFDL0UsUUFBUSxLQUFLLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQSxDQUFDLENBQUM7SUFFakM7OztPQUdHO0lBQ0gsSUFBSTtRQUNGLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLGNBQWM7UUFDbEIsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUE7UUFFbkQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtRQUU5QyxJQUFJLENBQUMsT0FBTztZQUFFLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBRS9CLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNyQixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsaUJBQWlCO1FBQ3JCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQTtRQUM5QyxNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtRQUN4RCxNQUFNLE1BQU0sR0FBRywrREFBK0QsQ0FBQyxFQUFDLGtCQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUU1SCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEcsT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsbUJBQW1CLEVBQUUsQ0FBQTtRQUM5RCxNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUE7UUFDbkUsbURBQW1EO1FBQ25ELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQTtRQUVoQix5RUFBeUU7UUFDekUsb0VBQW9FO1FBQ3BFLHFFQUFxRTtRQUNyRSxvRUFBb0U7UUFDcEUsd0JBQXdCO1FBQ3hCLEtBQUssTUFBTSxPQUFPLElBQUksTUFBTSxFQUFFLENBQUM7WUFDN0IsSUFBSSxPQUFPLENBQUMsV0FBVyxLQUFLLGVBQWU7Z0JBQUUsU0FBUTtZQUNyRCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtnQkFBRSxTQUFRO1lBRXBDLE1BQU0sMkJBQTJCLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLENBQUE7WUFFbkYsSUFBSSwyQkFBMkIsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLFNBQVM7Z0JBQUUsU0FBUTtZQUU5RSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3JCLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFBO1FBRXBDLE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUV0QyxJQUFJLElBQUksSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUN4QixNQUFNLHFCQUFxQixHQUFHLCtEQUErRCxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUE7WUFDL0csTUFBTSxTQUFTLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFDLENBQUMsQ0FBQTtZQUU5RixNQUFNLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUN2QixDQUFDO2FBQU0sSUFBSSxJQUFJLElBQUksU0FBUyxFQUFFLENBQUM7WUFDN0IsTUFBTSxtQkFBbUIsR0FBRyw2REFBNkQsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFBO1lBQzNHLE1BQU0sU0FBUyxHQUFHLElBQUksZ0JBQWdCLENBQUMsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBQyxDQUFDLENBQUE7WUFFMUYsTUFBTSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUE7UUFDdkIsQ0FBQzthQUFNLElBQUksSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzVCLE1BQU0sa0JBQWtCLEdBQUcsNERBQTRELENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQTtZQUN6RyxNQUFNLFNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFDLENBQUMsQ0FBQTtZQUV4RixNQUFNLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUN2QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLElBQUksRUFBRSxDQUFDLENBQUE7UUFDdkQsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELHNFQUFzRTtJQUN0RSxRQUFRLEtBQUssT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUUzQyxzSUFBc0k7SUFDdEksTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUNqRCxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsd0JBQXdCLENBQUMsQ0FBQTtRQUNwSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3JCLENBQUM7SUFFRCxvSEFBb0g7SUFDcEgsU0FBUyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQSxDQUFDLENBQUM7SUFFekMsaUdBQWlHO0lBQ2pHLG9CQUFvQixLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQSxDQUFDLENBQUM7SUFFOUMscUZBQXFGO0lBQ3JGLFlBQVksS0FBSyxPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFBLENBQUMsQ0FBQztJQUVsRCw0RUFBNEU7SUFDNUUsWUFBWSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQSxDQUFDLENBQUM7SUFFM0QsOERBQThEO0lBQzlELGFBQWEsS0FBSyxPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQSxDQUFDLENBQUM7SUFFakUsZ0RBQWdEO0lBQ2hELFFBQVEsS0FBSyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBRWhDLHNFQUFzRTtJQUN0RSxhQUFhLEtBQUssT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUEsQ0FBQyxDQUFDO0lBRWpFLGdJQUFnSTtJQUNoSSxlQUFlLEtBQUssT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFBLENBQUMsQ0FBQztJQUU5Qzs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDakQsQ0FBQztJQUVELGlGQUFpRjtJQUNqRixtQkFBbUI7UUFDakIsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUE7UUFFMUYsT0FBTyxnQkFBZ0IsQ0FBQTtJQUN6QixDQUFDO0lBRUQsdUZBQXVGO0lBQ3ZGLE9BQU8sS0FBSyxPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQSxDQUFDLENBQUM7Q0FDdEQiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEJlbG9uZ3NUb1ByZWxvYWRlciBmcm9tIFwiLi4vLi4vcXVlcnkvcHJlbG9hZGVyL2JlbG9uZ3MtdG8uanNcIlxuaW1wb3J0IEhhc01hbnlQcmVsb2FkZXIgZnJvbSBcIi4uLy4uL3F1ZXJ5L3ByZWxvYWRlci9oYXMtbWFueS5qc1wiXG5pbXBvcnQgSGFzT25lUHJlbG9hZGVyIGZyb20gXCIuLi8uLi9xdWVyeS9wcmVsb2FkZXIvaGFzLW9uZS5qc1wiXG5cbi8qKlxuICogQHRlbXBsYXRlIHt0eXBlb2YgaW1wb3J0KFwiLi4vaW5kZXguanNcIikuZGVmYXVsdH0gW01DPXR5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0XVxuICogQHRlbXBsYXRlIHt0eXBlb2YgaW1wb3J0KFwiLi4vaW5kZXguanNcIikuZGVmYXVsdH0gW1RNQz10eXBlb2YgaW1wb3J0KFwiLi4vaW5kZXguanNcIikuZGVmYXVsdF1cbiAqIEB0eXBlZGVmIHtvYmplY3R9IEluc3RhbmNlUmVsYXRpb25zaGlwc0Jhc2VBcmdzXG4gKiBAcHJvcGVydHkge0luc3RhbmNlVHlwZTxNQz59IG1vZGVsIC0gUGFyZW50IG1vZGVsIGluc3RhbmNlLlxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuLi9yZWxhdGlvbnNoaXBzL2Jhc2UuanNcIikuZGVmYXVsdH0gcmVsYXRpb25zaGlwIC0gUmVsYXRpb25zaGlwIG1ldGFkYXRhIGRlZmluaXRpb24uXG4gKi9cblxuLyoqXG4gKiBBIGdlbmVyaWMgcXVlcnkgb3ZlciBzb21lIG1vZGVsIHR5cGUuXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0fSBbTUM9dHlwZW9mIGltcG9ydChcIi4uL2luZGV4LmpzXCIpLmRlZmF1bHRdXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0fSBbVE1DPXR5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0XVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVJlY29yZEJhc2VJbnN0YW5jZVJlbGF0aW9uc2hpcCB7XG4gIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgX2F1dG9TYXZlID0gdW5kZWZpbmVkXG4gIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgX3ByZWxvYWRlZCA9IHVuZGVmaW5lZFxuICAvKiogQHR5cGUge0luc3RhbmNlVHlwZTxUTUM+IHwgQXJyYXk8SW5zdGFuY2VUeXBlPFRNQz4+IHwgdW5kZWZpbmVkfSAqL1xuICBfbG9hZGVkID0gdW5kZWZpbmVkXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7SW5zdGFuY2VSZWxhdGlvbnNoaXBzQmFzZUFyZ3M8TUMsIFRNQz59IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHttb2RlbCwgcmVsYXRpb25zaGlwfSkge1xuICAgIHRoaXMuX2RpcnR5ID0gZmFsc2VcbiAgICB0aGlzLm1vZGVsID0gbW9kZWxcbiAgICB0aGlzLnJlbGF0aW9uc2hpcCA9IHJlbGF0aW9uc2hpcFxuICB9XG5cbiAgLyoqXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcGFyYW0ge0luc3RhbmNlVHlwZTxUTUM+W10gfCBJbnN0YW5jZVR5cGU8VE1DPn0gbW9kZWxzIC0gTW9kZWwgaW5zdGFuY2VzLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBhZGRUb0xvYWRlZChtb2RlbHMpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIHRocm93IG5ldyBFcnJvcihcImFkZFRvTG9hZGVkIG5vdCBpbXBsZW1lbnRlZFwiKVxuICB9XG5cbiAgLyoqXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGF0dHJpYnV0ZXMgLSBBdHRyaWJ1dGVzLlxuICAgKiBAcmV0dXJucyB7SW5zdGFuY2VUeXBlPFRNQz59IC0gVGhlIGJ1aWxkLlxuICAgKi9cbiAgYnVpbGQoYXR0cmlidXRlcykgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiJ2J1aWxkJyBub3QgaW1wbGVtZW50ZWRcIilcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gV2hldGhlciB0aGUgcmVsYXRpb25zaGlwIHNob3VsZCBiZSBhdXRvLXNhdmVkIGJlZm9yZSBzYXZpbmcgdGhlIHBhcmVudCBtb2RlbCAqL1xuICBnZXRBdXRvU2F2ZSgpIHsgcmV0dXJuIHRoaXMuX2F1dG9TYXZlIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtib29sZWFufSBuZXdBdXRvU2F2ZVZhbHVlIFdoZXRoZXIgdGhlIHJlbGF0aW9uc2hpcCBzaG91bGQgYmUgYXV0by1zYXZlZCBiZWZvcmUgc2F2aW5nIHRoZSBwYXJlbnQgbW9kZWxcbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgc2V0QXV0b1NhdmUobmV3QXV0b1NhdmVWYWx1ZSkgeyB0aGlzLl9hdXRvU2F2ZSA9IG5ld0F1dG9TYXZlVmFsdWUgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG5ld1ZhbHVlIFdoZXRoZXIgdGhlIHJlbGF0aW9uc2hpcCBpcyBkaXJ0eSAoaGFzIGJlZW4gbW9kaWZpZWQpXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIHNldERpcnR5KG5ld1ZhbHVlKSB7IHRoaXMuX2RpcnR5ID0gbmV3VmFsdWUgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGUgcmVsYXRpb25zaGlwIGlzIGRpcnR5IChoYXMgYmVlbiBtb2RpZmllZCkgKi9cbiAgZ2V0RGlydHkoKSB7IHJldHVybiB0aGlzLl9kaXJ0eSB9XG5cbiAgLyoqXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxJbnN0YW5jZVR5cGU8VE1DPiB8IEFycmF5PEluc3RhbmNlVHlwZTxUTUM+PiB8IHVuZGVmaW5lZD59IC0gUmVzb2x2ZXMgd2l0aCBsb2FkZWQgcmVsYXRpb25zaGlwIHZhbHVlLlxuICAgKi9cbiAgbG9hZCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCInbG9hZCcgbm90IGltcGxlbWVudGVkXCIpXG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIHJlbGF0aW9uc2hpcCBpZiBub3QgYWxyZWFkeSBsb2FkZWQuIFdoZW4gdGhlIHBhcmVudCByZWNvcmQgd2FzXG4gICAqIGxvYWRlZCBhcyBwYXJ0IG9mIGEgYmF0Y2ggKGNvaG9ydCkgYW5kIGF1dG9sb2FkIGlzIGVuYWJsZWQsIHNpYmxpbmdzIGluXG4gICAqIHRoZSBjb2hvcnQgdGhhdCBzaGFyZSB0aGlzIHJlbGF0aW9uc2hpcCBhbmQgaGF2ZSBub3QgcHJlbG9hZGVkIGl0IHlldFxuICAgKiBhcmUgYmF0Y2hlZCBpbnRvIGEgc2luZ2xlIHF1ZXJ5IHZpYSB0aGUgZXhpc3RpbmcgcHJlbG9hZGVyIHBhdGguXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEluc3RhbmNlVHlwZTxUTUM+IHwgQXJyYXk8SW5zdGFuY2VUeXBlPFRNQz4+IHwgdW5kZWZpbmVkPn0gLSBSZXNvbHZlcyB3aXRoIGxvYWRlZCByZWxhdGlvbnNoaXAgdmFsdWUuXG4gICAqL1xuICBhc3luYyBhdXRvbG9hZE9yTG9hZCgpIHtcbiAgICBpZiAodGhpcy5fbG9hZGVkICE9PSB1bmRlZmluZWQpIHJldHVybiB0aGlzLl9sb2FkZWRcblxuICAgIGNvbnN0IGJhdGNoZWQgPSBhd2FpdCB0aGlzLl90cnlDb2hvcnRQcmVsb2FkKClcblxuICAgIGlmICghYmF0Y2hlZCkgYXdhaXQgdGhpcy5sb2FkKClcblxuICAgIHJldHVybiB0aGlzLl9sb2FkZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0cyB0byBiYXRjaC1sb2FkIHRoaXMgcmVsYXRpb25zaGlwIGFjcm9zcyBjb2hvcnQgc2libGluZ3MgdmlhIHRoZVxuICAgKiBleGlzdGluZyBwcmVsb2FkZXIgcGF0aC4gUmV0dXJucyB0cnVlIHdoZW4gYSBiYXRjaCByYW4gKHNlbGYgaXMgYWx3YXlzXG4gICAqIGluY2x1ZGVkIGJlY2F1c2UgY2FsbGVycyByZXNldCB0aGVpciBvd24gYF9wcmVsb2FkZWRgIHN0YXRlIGJlZm9yZVxuICAgKiBjYWxsaW5nKSwgZmFsc2Ugd2hlbiBhdXRvbG9hZCBpcyBvZmYsIHRoZXJlIGlzIG5vIGNvaG9ydCwgb3Igbm8gYmF0Y2hcbiAgICogY2FuZGlkYXRlcyByZW1haW4uIFNpYmxpbmdzIHRoYXQgaGF2ZSBhbHJlYWR5IHByZWxvYWRlZCB0aGlzIHJlbGF0aW9uc2hpcFxuICAgKiBhcmUgc2tpcHBlZCBzbyB0aGVpciBjYWNoZWQgdmFsdWUgaXMgcHJlc2VydmVkLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gLSBXaGV0aGVyIGEgY29ob3J0IGJhdGNoIHByZWxvYWQgcmFuLlxuICAgKi9cbiAgYXN5bmMgX3RyeUNvaG9ydFByZWxvYWQoKSB7XG4gICAgY29uc3QgcmVsYXRpb25zaGlwRGVmID0gdGhpcy5nZXRSZWxhdGlvbnNoaXAoKVxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSByZWxhdGlvbnNoaXBEZWYuZ2V0Q29uZmlndXJhdGlvbigpXG4gICAgY29uc3QgY29ob3J0ID0gLyoqIEB0eXBlIHtBcnJheTxpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0PiB8IHVuZGVmaW5lZH0gKi8gKC8qKiBAdHlwZSB7YW55fSAqLyAodGhpcy5tb2RlbCkuX2xvYWRDb2hvcnQpXG5cbiAgICBpZiAoIWNvbmZpZ3VyYXRpb24uZ2V0QXV0b2xvYWQoKSB8fCAhcmVsYXRpb25zaGlwRGVmLmdldEF1dG9sb2FkKCkgfHwgIWNvaG9ydCB8fCBjb2hvcnQubGVuZ3RoIDw9IDEpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGNvbnN0IHJlbGF0aW9uc2hpcE5hbWUgPSByZWxhdGlvbnNoaXBEZWYuZ2V0UmVsYXRpb25zaGlwTmFtZSgpXG4gICAgY29uc3QgT3duZXJNb2RlbENsYXNzID0gLyoqIEB0eXBlIHthbnl9ICovICh0aGlzLm1vZGVsKS5jb25zdHJ1Y3RvclxuICAgIC8qKiBAdHlwZSB7QXJyYXk8aW1wb3J0KFwiLi4vaW5kZXguanNcIikuZGVmYXVsdD59ICovXG4gICAgY29uc3QgYmF0Y2ggPSBbXVxuXG4gICAgLy8gRXhhY3Qgc2FtZSBjbGFzcywgcGVyc2lzdGVkLCBubyBleGlzdGluZyBpbi1tZW1vcnkgcmVsYXRpb25zaGlwIHN0YXRlLlxuICAgIC8vIFNraXAgc2libGluZ3Mgd2hlcmUgYF9sb2FkZWRgIGlzIGFscmVhZHkgc2V0IOKAlCB0aGV5IG1heSBoYXZlIGJlZW5cbiAgICAvLyBwcmVsb2FkZWQgKHByZXNlcnZlIGNhY2hlKSBPUiBsb2NhbGx5IG1hbmlwdWxhdGVkIHZpYSBgYnVpbGQuLi5gIC9cbiAgICAvLyBgc2V0Li4uYCAocHJlc2VydmUgdW5zYXZlZCBlZGl0cykuIEVpdGhlciB3YXkgdGhlIHByZWxvYWRlciB3b3VsZFxuICAgIC8vIG92ZXJ3cml0ZSB0aGF0IHN0YXRlLlxuICAgIGZvciAoY29uc3Qgc2libGluZyBvZiBjb2hvcnQpIHtcbiAgICAgIGlmIChzaWJsaW5nLmNvbnN0cnVjdG9yICE9PSBPd25lck1vZGVsQ2xhc3MpIGNvbnRpbnVlXG4gICAgICBpZiAoIXNpYmxpbmcuaXNQZXJzaXN0ZWQoKSkgY29udGludWVcblxuICAgICAgY29uc3Qgc2libGluZ0luc3RhbmNlUmVsYXRpb25zaGlwID0gc2libGluZy5nZXRSZWxhdGlvbnNoaXBCeU5hbWUocmVsYXRpb25zaGlwTmFtZSlcblxuICAgICAgaWYgKHNpYmxpbmdJbnN0YW5jZVJlbGF0aW9uc2hpcC5nZXRMb2FkZWRPclVuZGVmaW5lZCgpICE9PSB1bmRlZmluZWQpIGNvbnRpbnVlXG5cbiAgICAgIGJhdGNoLnB1c2goc2libGluZylcbiAgICB9XG5cbiAgICBpZiAoYmF0Y2gubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2VcblxuICAgIGNvbnN0IHR5cGUgPSByZWxhdGlvbnNoaXBEZWYuZ2V0VHlwZSgpXG5cbiAgICBpZiAodHlwZSA9PSBcImJlbG9uZ3NUb1wiKSB7XG4gICAgICBjb25zdCBiZWxvbmdzVG9SZWxhdGlvbnNoaXAgPSAvKiogQHR5cGUge2ltcG9ydChcIi4uL3JlbGF0aW9uc2hpcHMvYmVsb25ncy10by5qc1wiKS5kZWZhdWx0fSAqLyAocmVsYXRpb25zaGlwRGVmKVxuICAgICAgY29uc3QgcHJlbG9hZGVyID0gbmV3IEJlbG9uZ3NUb1ByZWxvYWRlcih7bW9kZWxzOiBiYXRjaCwgcmVsYXRpb25zaGlwOiBiZWxvbmdzVG9SZWxhdGlvbnNoaXB9KVxuXG4gICAgICBhd2FpdCBwcmVsb2FkZXIucnVuKClcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJoYXNNYW55XCIpIHtcbiAgICAgIGNvbnN0IGhhc01hbnlSZWxhdGlvbnNoaXAgPSAvKiogQHR5cGUge2ltcG9ydChcIi4uL3JlbGF0aW9uc2hpcHMvaGFzLW1hbnkuanNcIikuZGVmYXVsdH0gKi8gKHJlbGF0aW9uc2hpcERlZilcbiAgICAgIGNvbnN0IHByZWxvYWRlciA9IG5ldyBIYXNNYW55UHJlbG9hZGVyKHttb2RlbHM6IGJhdGNoLCByZWxhdGlvbnNoaXA6IGhhc01hbnlSZWxhdGlvbnNoaXB9KVxuXG4gICAgICBhd2FpdCBwcmVsb2FkZXIucnVuKClcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJoYXNPbmVcIikge1xuICAgICAgY29uc3QgaGFzT25lUmVsYXRpb25zaGlwID0gLyoqIEB0eXBlIHtpbXBvcnQoXCIuLi9yZWxhdGlvbnNoaXBzL2hhcy1vbmUuanNcIikuZGVmYXVsdH0gKi8gKHJlbGF0aW9uc2hpcERlZilcbiAgICAgIGNvbnN0IHByZWxvYWRlciA9IG5ldyBIYXNPbmVQcmVsb2FkZXIoe21vZGVsczogYmF0Y2gsIHJlbGF0aW9uc2hpcDogaGFzT25lUmVsYXRpb25zaGlwfSlcblxuICAgICAgYXdhaXQgcHJlbG9hZGVyLnJ1bigpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biByZWxhdGlvbnNoaXAgdHlwZTogJHt0eXBlfWApXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8qKiAgQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIHJlbGF0aW9uc2hpcCBoYXMgYmVlbiBwcmVsb2FkZWQgKi9cbiAgaXNMb2FkZWQoKSB7IHJldHVybiBCb29sZWFuKHRoaXMuX2xvYWRlZCkgfVxuXG4gIC8qKiBAcmV0dXJucyB7SW5zdGFuY2VUeXBlPFRNQz4gfCBBcnJheTxJbnN0YW5jZVR5cGU8VE1DPj4gfCB1bmRlZmluZWR9IFRoZSBsb2FkZWQgbW9kZWwgb3IgbW9kZWxzIChkZXBlbmRpbmcgb24gcmVsYXRpb25zaGlwIHR5cGUpICovXG4gIGxvYWRlZCgpIHtcbiAgICBpZiAoIXRoaXMuX3ByZWxvYWRlZCAmJiB0aGlzLm1vZGVsLmlzUGVyc2lzdGVkKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLm1vZGVsLmNvbnN0cnVjdG9yLm5hbWV9IyR7dGhpcy5yZWxhdGlvbnNoaXAuZ2V0UmVsYXRpb25zaGlwTmFtZSgpfSBoYXNuJ3QgYmVlbiBwcmVsb2FkZWRgKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9sb2FkZWRcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge0luc3RhbmNlVHlwZTxUTUM+IHwgQXJyYXk8SW5zdGFuY2VUeXBlPFRNQz4+IHwgdW5kZWZpbmVkfSBtb2RlbCAtIFJlbGF0ZWQgbW9kZWwocykgdG8gbWFyayBhcyBsb2FkZWQuICovXG4gIHNldExvYWRlZChtb2RlbCkgeyB0aGlzLl9sb2FkZWQgPSBtb2RlbCB9XG5cbiAgLyoqIEByZXR1cm5zIHtJbnN0YW5jZVR5cGU8VE1DPiB8IEluc3RhbmNlVHlwZTxUTUM+W10gfCB1bmRlZmluZWR9IC0gVGhlIGxvYWRlZCBvciB1bmRlZmluZWQuICAqL1xuICBnZXRMb2FkZWRPclVuZGVmaW5lZCgpIHsgcmV0dXJuIHRoaXMuX2xvYWRlZCB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSBUaGUgbG9hZGVkIG1vZGVsIG9yIG1vZGVscyAoZGVwZW5kaW5nIG9uIHJlbGF0aW9uc2hpcCB0eXBlKSAqL1xuICBnZXRQcmVsb2FkZWQoKSB7IHJldHVybiB0aGlzLl9wcmVsb2FkZWQgfHwgZmFsc2UgfVxuXG4gIC8qKiBAcGFyYW0ge2Jvb2xlYW59IGlzUHJlbG9hZGVkIC0gV2hldGhlciB0aGUgcmVsYXRpb25zaGlwIGlzIHByZWxvYWRlZC4gKi9cbiAgc2V0UHJlbG9hZGVkKGlzUHJlbG9hZGVkKSB7IHRoaXMuX3ByZWxvYWRlZCA9IGlzUHJlbG9hZGVkIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gVGhlIGZvcmVpZ24ga2V5IGZvciB0aGlzIHJlbGF0aW9uc2hpcCAqL1xuICBnZXRGb3JlaWduS2V5KCkgeyByZXR1cm4gdGhpcy5nZXRSZWxhdGlvbnNoaXAoKS5nZXRGb3JlaWduS2V5KCkgfVxuXG4gIC8qKiBAcmV0dXJucyB7SW5zdGFuY2VUeXBlPE1DPn0gLSBUaGUgbW9kZWwuICAqL1xuICBnZXRNb2RlbCgpIHsgcmV0dXJuIHRoaXMubW9kZWwgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgcHJpbWFyeSBrZXkgZm9yIHRoaXMgcmVsYXRpb25zaGlwJ3MgbW9kZWwgKi9cbiAgZ2V0UHJpbWFyeUtleSgpIHsgcmV0dXJuIHRoaXMuZ2V0UmVsYXRpb25zaGlwKCkuZ2V0UHJpbWFyeUtleSgpIH1cblxuICAvKiogQHJldHVybnMge2ltcG9ydChcIi4uL3JlbGF0aW9uc2hpcHMvYmFzZS5qc1wiKS5kZWZhdWx0fSBUaGUgcmVsYXRpb25zaGlwIG9iamVjdCB0aGF0IHRoaXMgaW5zdGFuY2UgcmVsYXRpb25zaGlwIGlzIGJhc2VkIG9uICovXG4gIGdldFJlbGF0aW9uc2hpcCgpIHsgcmV0dXJuIHRoaXMucmVsYXRpb25zaGlwIH1cblxuICAvKipcbiAgICogQHRlbXBsYXRlIFRcbiAgICogQHBhcmFtIHtUfSBxdWVyeSAtIFF1ZXJ5IGluc3RhbmNlLlxuICAgKiBAcmV0dXJucyB7VH0gLSBTY29wZWQgcXVlcnkuXG4gICAqL1xuICBhcHBseVNjb3BlKHF1ZXJ5KSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVsYXRpb25zaGlwKCkuYXBwbHlTY29wZShxdWVyeSlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7VE1DIHwgdW5kZWZpbmVkfSBUaGUgbW9kZWwgY2xhc3MgdGhhdCB0aGlzIGluc3RhbmNlIHJlbGF0aW9uc2hpcCAqL1xuICBnZXRUYXJnZXRNb2RlbENsYXNzKCkge1xuICAgIGNvbnN0IFRhcmdldE1vZGVsQ2xhc3MgPSAvKiogQHR5cGUge1RNQ30gKi8gKHRoaXMuZ2V0UmVsYXRpb25zaGlwKCkuZ2V0VGFyZ2V0TW9kZWxDbGFzcygpKVxuXG4gICAgcmV0dXJuIFRhcmdldE1vZGVsQ2xhc3NcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgdHlwZSBvZiByZWxhdGlvbnNoaXAgKGUuZy4gXCJoYXNfbWFueVwiLCBcImJlbG9uZ3NfdG9cIiwgZXRjLikgKi9cbiAgZ2V0VHlwZSgpIHsgcmV0dXJuIHRoaXMuZ2V0UmVsYXRpb25zaGlwKCkuZ2V0VHlwZSgpIH1cbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"belongs-to.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/instance-relationships/belongs-to.js"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,0EAJoD,EAAE,SAAzC,cAAe,aAAa,EAAE,OAAQ,EACC,GAAG,SAA1C,cAAe,aAAa,EAAE,OAAQ;IAIjD;;OAEG;IACH,kBAFW,OAAO,WAAW,EAAE,6BAA6B,CAAC,EAAE,EAAE,GAAG,CAAC,EAIpE;
|
|
1
|
+
{"version":3,"file":"belongs-to.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/instance-relationships/belongs-to.js"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,0EAJoD,EAAE,SAAzC,cAAe,aAAa,EAAE,OAAQ,EACC,GAAG,SAA1C,cAAe,aAAa,EAAE,OAAQ;IAIjD;;OAEG;IACH,kBAFW,OAAO,WAAW,EAAE,6BAA6B,CAAC,EAAE,EAAE,GAAG,CAAC,EAIpE;CA2DF;qCAzEoC,WAAW"}
|
|
@@ -27,6 +27,14 @@ export default class VelociousDatabaseRecordBelongsToInstanceRelationship extend
|
|
|
27
27
|
}
|
|
28
28
|
getLoadedOrUndefined() { return this._loaded; }
|
|
29
29
|
async load() {
|
|
30
|
+
// Force-reload: discard the cached value and fetch fresh. When the parent
|
|
31
|
+
// record was loaded as part of a batch, batch the belongs-to lookup across
|
|
32
|
+
// cohort siblings that have not preloaded this relationship yet.
|
|
33
|
+
this._preloaded = false;
|
|
34
|
+
this._loaded = undefined;
|
|
35
|
+
const batched = await this._tryCohortPreload();
|
|
36
|
+
if (batched)
|
|
37
|
+
return this.loaded();
|
|
30
38
|
const foreignKey = this.getForeignKey();
|
|
31
39
|
const foreignModelID = this.getModel().readColumn(foreignKey);
|
|
32
40
|
const TargetModelClass = this.getTargetModelClass();
|
|
@@ -50,4 +58,4 @@ export default class VelociousDatabaseRecordBelongsToInstanceRelationship extend
|
|
|
50
58
|
return this.loaded();
|
|
51
59
|
}
|
|
52
60
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVsb25ncy10by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9yZWNvcmQvaW5zdGFuY2UtcmVsYXRpb25zaGlwcy9iZWxvbmdzLXRvLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLHdCQUF3QixNQUFNLFdBQVcsQ0FBQTtBQUVoRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8sb0RBQXFELFNBQVEsd0JBQXdCO0lBQ3hHOztPQUVHO0lBQ0gsWUFBWSxJQUFJO1FBQ2QsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2IsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUE7UUFFeEUsSUFBSSxDQUFDLGdCQUFnQjtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQTtRQUV6RixNQUFNLFdBQVcsR0FBRyxnQ0FBZ0MsQ0FBQyxDQUFDLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUVqRixJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQTtRQUUxQixPQUFPLFdBQVcsQ0FBQTtJQUNwQixDQUFDO0lBRUQsb0JBQW9CLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBLENBQUMsQ0FBQztJQUU5QyxLQUFLLENBQUMsSUFBSTtRQUNSLDBFQUEwRTtRQUMxRSwyRUFBMkU7UUFDM0UsaUVBQWlFO1FBQ2pFLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFBO1FBRXhCLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7UUFFOUMsSUFBSSxPQUFPO1lBQUUsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7UUFFakMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ3ZDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDN0QsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQTtRQUVuRCxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO1FBRTNFLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ2hELGlFQUFpRTtRQUNqRSxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUE7UUFFcEIsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLGNBQWMsQ0FBQTtRQUV0QyxJQUFJLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7UUFFN0MsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFOUIsTUFBTSxZQUFZLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUE7UUFFeEMsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQzlCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUMzQixDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRXZCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQ3RCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQmFzZUluc3RhbmNlUmVsYXRpb25zaGlwIGZyb20gXCIuL2Jhc2UuanNcIlxuXG4vKipcbiAqIEEgZ2VuZXJpYyBxdWVyeSBvdmVyIHNvbWUgbW9kZWwgdHlwZS5cbiAqIEB0ZW1wbGF0ZSB7dHlwZW9mIGltcG9ydChcIi4uL2luZGV4LmpzXCIpLmRlZmF1bHR9IE1DXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0fSBUTUNcbiAqIEBhdWdtZW50cyB7QmFzZUluc3RhbmNlUmVsYXRpb25zaGlwPE1DLCBUTUM+fVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVJlY29yZEJlbG9uZ3NUb0luc3RhbmNlUmVsYXRpb25zaGlwIGV4dGVuZHMgQmFzZUluc3RhbmNlUmVsYXRpb25zaGlwIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9iYXNlLmpzXCIpLkluc3RhbmNlUmVsYXRpb25zaGlwc0Jhc2VBcmdzPE1DLCBUTUM+fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhcmdzKSB7XG4gICAgc3VwZXIoYXJncylcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGRhdGEgLSBEYXRhIHBheWxvYWQuXG4gICAqIEByZXR1cm5zIHtJbnN0YW5jZVR5cGU8VE1DPn0gLSBUaGUgYnVpbGQuXG4gICAqL1xuICBidWlsZChkYXRhKSB7XG4gICAgY29uc3QgVGFyZ2V0TW9kZWxDbGFzcyA9IC8qKiBAdHlwZSB7VE1DfSAqLyAodGhpcy5nZXRUYXJnZXRNb2RlbENsYXNzKCkpXG5cbiAgICBpZiAoIVRhcmdldE1vZGVsQ2xhc3MpIHRocm93IG5ldyBFcnJvcihcIkNhbid0IGJ1aWxkIGEgbmV3IHJlY29yZCB3aXRob3V0IGEgdGFyZ2V0IG1vZGVsXCIpXG5cbiAgICBjb25zdCBuZXdJbnN0YW5jZSA9IC8qKiBAdHlwZSB7SW5zdGFuY2VUeXBlPFRNQz59ICovIChuZXcgVGFyZ2V0TW9kZWxDbGFzcyhkYXRhKSlcblxuICAgIHRoaXMuX2xvYWRlZCA9IG5ld0luc3RhbmNlXG5cbiAgICByZXR1cm4gbmV3SW5zdGFuY2VcbiAgfVxuXG4gIGdldExvYWRlZE9yVW5kZWZpbmVkKCkgeyByZXR1cm4gdGhpcy5fbG9hZGVkIH1cblxuICBhc3luYyBsb2FkKCkge1xuICAgIC8vIEZvcmNlLXJlbG9hZDogZGlzY2FyZCB0aGUgY2FjaGVkIHZhbHVlIGFuZCBmZXRjaCBmcmVzaC4gV2hlbiB0aGUgcGFyZW50XG4gICAgLy8gcmVjb3JkIHdhcyBsb2FkZWQgYXMgcGFydCBvZiBhIGJhdGNoLCBiYXRjaCB0aGUgYmVsb25ncy10byBsb29rdXAgYWNyb3NzXG4gICAgLy8gY29ob3J0IHNpYmxpbmdzIHRoYXQgaGF2ZSBub3QgcHJlbG9hZGVkIHRoaXMgcmVsYXRpb25zaGlwIHlldC5cbiAgICB0aGlzLl9wcmVsb2FkZWQgPSBmYWxzZVxuICAgIHRoaXMuX2xvYWRlZCA9IHVuZGVmaW5lZFxuXG4gICAgY29uc3QgYmF0Y2hlZCA9IGF3YWl0IHRoaXMuX3RyeUNvaG9ydFByZWxvYWQoKVxuXG4gICAgaWYgKGJhdGNoZWQpIHJldHVybiB0aGlzLmxvYWRlZCgpXG5cbiAgICBjb25zdCBmb3JlaWduS2V5ID0gdGhpcy5nZXRGb3JlaWduS2V5KClcbiAgICBjb25zdCBmb3JlaWduTW9kZWxJRCA9IHRoaXMuZ2V0TW9kZWwoKS5yZWFkQ29sdW1uKGZvcmVpZ25LZXkpXG4gICAgY29uc3QgVGFyZ2V0TW9kZWxDbGFzcyA9IHRoaXMuZ2V0VGFyZ2V0TW9kZWxDbGFzcygpXG5cbiAgICBpZiAoIVRhcmdldE1vZGVsQ2xhc3MpIHRocm93IG5ldyBFcnJvcihcIkNhbid0IGxvYWQgd2l0aG91dCBhIHRhcmdldCBtb2RlbFwiKVxuXG4gICAgY29uc3QgcHJpbWFyeUtleSA9IFRhcmdldE1vZGVsQ2xhc3MucHJpbWFyeUtleSgpXG4gICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkPn0gKi9cbiAgICBjb25zdCB3aGVyZUFyZ3MgPSB7fVxuXG4gICAgd2hlcmVBcmdzW3ByaW1hcnlLZXldID0gZm9yZWlnbk1vZGVsSURcblxuICAgIGxldCBxdWVyeSA9IFRhcmdldE1vZGVsQ2xhc3Mud2hlcmUod2hlcmVBcmdzKVxuXG4gICAgcXVlcnkgPSB0aGlzLmFwcGx5U2NvcGUocXVlcnkpXG5cbiAgICBjb25zdCBmb3JlaWduTW9kZWwgPSBhd2FpdCBxdWVyeS5maXJzdCgpXG5cbiAgICBpZiAoZm9yZWlnbk1vZGVsKSB7XG4gICAgICB0aGlzLnNldExvYWRlZChmb3JlaWduTW9kZWwpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0TG9hZGVkKHVuZGVmaW5lZClcbiAgICB9XG4gICAgdGhpcy5zZXREaXJ0eShmYWxzZSlcbiAgICB0aGlzLnNldFByZWxvYWRlZCh0cnVlKVxuXG4gICAgcmV0dXJuIHRoaXMubG9hZGVkKClcbiAgfVxufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"has-many.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/instance-relationships/has-many.js"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wEAJoD,EAAE,SAAzC,cAAe,aAAa,EAAE,OAAQ,EACC,GAAG,SAA1C,cAAe,aAAa,EAAE,OAAQ;IAIjD;;OAEG;IACH,kBAFW,OAAO,WAAW,EAAE,6BAA6B,CAAC,EAAE,EAAE,GAAG,CAAC,EAIpE;IA2DD;;;OAGG;IACH,aAHW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACjB,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAQtC;IAED,6EAA6E;IAC7E,QADc,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"has-many.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/instance-relationships/has-many.js"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wEAJoD,EAAE,SAAzC,cAAe,aAAa,EAAE,OAAQ,EACC,GAAG,SAA1C,cAAe,aAAa,EAAE,OAAQ;IAIjD;;OAEG;IACH,kBAFW,OAAO,WAAW,EAAE,6BAA6B,CAAC,EAAE,EAAE,GAAG,CAAC,EAIpE;IA2DD;;;OAGG;IACH,aAHW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACjB,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAQtC;IAED,6EAA6E;IAC7E,QADc,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAuBzC;IAED,yEAAyE;IACzE,WADc,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAOzC;IAED;;;OAGG;IACH,kBAHW,OAAO,sBAAsB,EAAE,mBAAmB,GAChD,OAAO,kCAAkC,EAAE,OAAO,CAAC,GAAG,CAAC,CAInE;IAED;;;OAGG;IACH,cAHW,MAAM,GAAG,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAItC;IAED,uFAAuF;IACvF,SADc,OAAO,kCAAkC,EAAE,OAAO,CAAC,GAAG,CAAC,CA6CpE;IAED,sGAAsG;IACtG,UADc,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAWrC;IA8BD;;;OAGG;IACH,kBAHW,YAAY,CAAC,GAAG,CAAC,EAAE,GACjB,IAAI,CAMhB;CACF;qCAxOoC,WAAW"}
|
|
@@ -69,6 +69,17 @@ export default class VelociousDatabaseRecordHasManyInstanceRelationship extends
|
|
|
69
69
|
}
|
|
70
70
|
/** @returns {Promise<InstanceType<TMC>[]>} - Resolves with loaded models. */
|
|
71
71
|
async load() {
|
|
72
|
+
// Force-reload: discard the cached value and fetch fresh. When the parent
|
|
73
|
+
// record was loaded as part of a batch, route through the cohort preloader
|
|
74
|
+
// so siblings that have not preloaded this relationship get batched too.
|
|
75
|
+
// The scoped query path (`instance.query().where(...).load()`) bypasses
|
|
76
|
+
// this and stays a single-record load by design.
|
|
77
|
+
this._preloaded = false;
|
|
78
|
+
this._loaded = undefined;
|
|
79
|
+
const batched = await this._tryCohortPreload();
|
|
80
|
+
if (batched) {
|
|
81
|
+
return /** @type {InstanceType<TMC>[]} */ (Array.isArray(this._loaded) ? this._loaded : []);
|
|
82
|
+
}
|
|
72
83
|
const foreignModels = /** @type {InstanceType<TMC>[]} */ (await this.query().load());
|
|
73
84
|
this.setLoaded(foreignModels);
|
|
74
85
|
this.setDirty(false);
|
|
@@ -77,11 +88,10 @@ export default class VelociousDatabaseRecordHasManyInstanceRelationship extends
|
|
|
77
88
|
}
|
|
78
89
|
/** @returns {Promise<InstanceType<TMC>[]>} - Resolves with the array. */
|
|
79
90
|
async toArray() {
|
|
80
|
-
const loadedValue = this.
|
|
81
|
-
if (loadedValue
|
|
82
|
-
return
|
|
83
|
-
|
|
84
|
-
return await this.load();
|
|
91
|
+
const loadedValue = await this.autoloadOrLoad();
|
|
92
|
+
if (loadedValue === undefined)
|
|
93
|
+
return [];
|
|
94
|
+
return Array.isArray(loadedValue) ? loadedValue : [loadedValue];
|
|
85
95
|
}
|
|
86
96
|
/**
|
|
87
97
|
* @param {import("../../query/index.js").NestedPreloadRecord} preloads - Preload map for related records.
|
|
@@ -186,4 +196,4 @@ export default class VelociousDatabaseRecordHasManyInstanceRelationship extends
|
|
|
186
196
|
this._loaded = models;
|
|
187
197
|
}
|
|
188
198
|
}
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLW1hbnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcmVjb3JkL2luc3RhbmNlLXJlbGF0aW9uc2hpcHMvaGFzLW1hbnkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sd0JBQXdCLE1BQU0sV0FBVyxDQUFBO0FBRWhEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTyxrREFBbUQsU0FBUSx3QkFBd0I7SUFDdEc7O09BRUc7SUFDSCxZQUFZLElBQUk7UUFDZCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDYixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLElBQUk7UUFDUix3Q0FBd0M7UUFDeEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQTtRQUVuRCxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFBO1FBRTlGLE1BQU0sV0FBVyxHQUFHLGdDQUFnQyxDQUFDLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBR2pGLG1EQUFtRDtRQUNuRCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzlCLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDaEMsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQzFFLENBQUM7UUFHRCxpREFBaUQ7UUFD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QUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQkFDMUIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7Z0JBQ25FLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUN6QixDQUFDO2lCQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDM0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7WUFDbkUsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLE1BQU07UUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxPQUFPLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFFNUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUE7SUFDdkIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBCYXNlSW5zdGFuY2VSZWxhdGlvbnNoaXAgZnJvbSBcIi4vYmFzZS5qc1wiXG5cbi8qKlxuICogQSBnZW5lcmljIHF1ZXJ5IG92ZXIgc29tZSBtb2RlbCB0eXBlLlxuICogQHRlbXBsYXRlIHt0eXBlb2YgaW1wb3J0KFwiLi4vaW5kZXguanNcIikuZGVmYXVsdH0gTUNcbiAqIEB0ZW1wbGF0ZSB7dHlwZW9mIGltcG9ydChcIi4uL2luZGV4LmpzXCIpLmRlZmF1bHR9IFRNQ1xuICogQGF1Z21lbnRzIHtCYXNlSW5zdGFuY2VSZWxhdGlvbnNoaXA8TUMsIFRNQz59XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlUmVjb3JkSGFzTWFueUluc3RhbmNlUmVsYXRpb25zaGlwIGV4dGVuZHMgQmFzZUluc3RhbmNlUmVsYXRpb25zaGlwIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9iYXNlLmpzXCIpLkluc3RhbmNlUmVsYXRpb25zaGlwc0Jhc2VBcmdzPE1DLCBUTUM+fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhcmdzKSB7XG4gICAgc3VwZXIoYXJncylcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGRhdGEgLSBEYXRhIHBheWxvYWQuXG4gICAqIEByZXR1cm5zIHtJbnN0YW5jZVR5cGU8VE1DPn0gLSBUaGUgYnVpbGQuXG4gICAqL1xuICBidWlsZChkYXRhKSB7XG4gICAgLy8gU3Bhd24gbmV3IG1vZGVsIG9mIHRoZSB0YXJnZXRlZCBjbGFzc1xuICAgIGNvbnN0IHRhcmdldE1vZGVsQ2xhc3MgPSB0aGlzLmdldFRhcmdldE1vZGVsQ2xhc3MoKVxuXG4gICAgaWYgKCF0YXJnZXRNb2RlbENsYXNzKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBidWlsZCBhIG5ldyByZWNvcmQgd2l0aG91dCBhIHRhZ2V0IG1vZGVsIGNsYXNzXCIpXG5cbiAgICBjb25zdCBuZXdJbnN0YW5jZSA9IC8qKiBAdHlwZSB7SW5zdGFuY2VUeXBlPFRNQz59ICovIChuZXcgdGFyZ2V0TW9kZWxDbGFzcyhkYXRhKSlcblxuXG4gICAgLy8gQWRkIGl0IHRvIHRoZSBsb2FkZWQgbW9kZWxzIG9mIHRoaXMgcmVsYXRpb25zaGlwXG4gICAgaWYgKHRoaXMuX2xvYWRlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9sb2FkZWQgPSBbbmV3SW5zdGFuY2VdXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMuX2xvYWRlZCkpIHtcbiAgICAgIHRoaXMuX2xvYWRlZC5wdXNoKG5ld0luc3RhbmNlKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYExvYWRlZCBoYWQgYW4gdW5leHBlY3RlZCB0eXBlOiAke3R5cGVvZiB0aGlzLl9sb2FkZWR9YClcbiAgICB9XG5cblxuICAgIC8vIFNldCBsb2FkZWQgb24gdGhlIG1vZGVscyBpbnZlcnNlZCByZWxhdGlvbnNoaXBcbiAgICBjb25zdCBpbnZlcnNlT2YgPSB0aGlzLmdldFJlbGF0aW9uc2hpcCgpLmdldEludmVyc2VPZigpXG5cbiAgICBpZiAoaW52ZXJzZU9mKSB7XG4gICAgICBjb25zdCBpbnZlcnNlSW5zdGFuY2VSZWxhdGlvbnNoaXAgPSBuZXdJbnN0YW5jZS5nZXRSZWxhdGlvbnNoaXBCeU5hbWUoaW52ZXJzZU9mKVxuXG4gICAgICBpbnZlcnNlSW5zdGFuY2VSZWxhdGlvbnNoaXAuc2V0QXV0b1NhdmUoZmFsc2UpXG4gICAgICBpbnZlcnNlSW5zdGFuY2VSZWxhdGlvbnNoaXAuc2V0TG9hZGVkKHRoaXMuZ2V0TW9kZWwoKSlcbiAgICB9XG5cblxuICAgIC8vIEFzc2lnbiB0aGUgZm9yZWlnbiBrZXkgdG8gdGhlIG5ldyBtb2RlbFxuICAgIGNvbnN0IHBhcmVudE1vZGVsID0gdGhpcy5nZXRNb2RlbCgpXG5cbiAgICBpZiAocGFyZW50TW9kZWwuaXNQZXJzaXN0ZWQoKSkge1xuICAgICAgY29uc3QgZm9yZWlnbktleU5hbWUgPSB0aGlzLmdldEZvcmVpZ25LZXkoKVxuICAgICAgY29uc3QgY29sdW1uTmFtZU1hcCA9IHRhcmdldE1vZGVsQ2xhc3MuZ2V0Q29sdW1uTmFtZVRvQXR0cmlidXRlTmFtZU1hcCgpXG4gICAgICBjb25zdCBmb3JlaWduS2V5QXR0cmlidXRlTmFtZSA9IGNvbHVtbk5hbWVNYXBbZm9yZWlnbktleU5hbWVdXG4gICAgICBpZiAoIWZvcmVpZ25LZXlBdHRyaWJ1dGVOYW1lKSB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZm9yZWlnbiBrZXkgYXR0cmlidXRlIG5hbWUgZm9yICR7Zm9yZWlnbktleU5hbWV9YClcbiAgICAgIGNvbnN0IHByaW1hcnlLZXlOYW1lID0gdGhpcy5nZXRQcmltYXJ5S2V5KClcbiAgICAgIGNvbnN0IGZvcmVpZ25LZXlWYWx1ZSA9IHBhcmVudE1vZGVsLnJlYWRDb2x1bW4ocHJpbWFyeUtleU5hbWUpXG4gICAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGFueT59ICovXG4gICAgICBjb25zdCBhc3NpZ25EYXRhID0ge31cblxuICAgICAgYXNzaWduRGF0YVtmb3JlaWduS2V5QXR0cmlidXRlTmFtZV0gPSBmb3JlaWduS2V5VmFsdWVcblxuICAgICAgbmV3SW5zdGFuY2UuYXNzaWduKGFzc2lnbkRhdGEpXG4gICAgfVxuXG5cbiAgICAvLyBSZXR1cm4gdGhlIG5ldyBjb250cnVjdGVkIG1vZGVsXG4gICAgcmV0dXJuIG5ld0luc3RhbmNlXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBkYXRhIC0gRGF0YSBwYXlsb2FkLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxJbnN0YW5jZVR5cGU8VE1DPj59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgY3JlYXRlLlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlKGRhdGEpIHtcbiAgICBjb25zdCBtb2RlbCA9IHRoaXMuYnVpbGQoZGF0YSlcblxuICAgIGF3YWl0IG1vZGVsLnNhdmUoKVxuXG4gICAgcmV0dXJuIG1vZGVsXG4gIH1cblxuICAvKiogQHJldHVybnMge1Byb21pc2U8SW5zdGFuY2VUeXBlPFRNQz5bXT59IC0gUmVzb2x2ZXMgd2l0aCBsb2FkZWQgbW9kZWxzLiAqL1xuICBhc3luYyBsb2FkKCkge1xuICAgIGNvbnN0IGZvcmVpZ25Nb2RlbHMgPSAvKiogQHR5cGUge0luc3RhbmNlVHlwZTxUTUM+W119ICovIChhd2FpdCB0aGlzLnF1ZXJ5KCkubG9hZCgpKVxuXG4gICAgdGhpcy5zZXRMb2FkZWQoZm9yZWlnbk1vZGVscylcbiAgICB0aGlzLnNldERpcnR5KGZhbHNlKVxuICAgIHRoaXMuc2V0UHJlbG9hZGVkKHRydWUpXG5cbiAgICByZXR1cm4gZm9yZWlnbk1vZGVsc1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPEluc3RhbmNlVHlwZTxUTUM+W10+fSAtIFJlc29sdmVzIHdpdGggdGhlIGFycmF5LiAqL1xuICBhc3luYyB0b0FycmF5KCkge1xuICAgIGNvbnN0IGxvYWRlZFZhbHVlID0gdGhpcy5nZXRMb2FkZWRPclVuZGVmaW5lZCgpXG5cbiAgICBpZiAobG9hZGVkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkobG9hZGVkVmFsdWUpID8gbG9hZGVkVmFsdWUgOiBbXVxuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmxvYWQoKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vcXVlcnkvaW5kZXguanNcIikuTmVzdGVkUHJlbG9hZFJlY29yZH0gcHJlbG9hZHMgLSBQcmVsb2FkIG1hcCBmb3IgcmVsYXRlZCByZWNvcmRzLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vLi4vcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDxUTUM+fSAtIFRoZSBwcmVsb2FkLlxuICAgKi9cbiAgcHJlbG9hZChwcmVsb2Fkcykge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5KCkuY2xvbmUoKS5wcmVsb2FkKHByZWxvYWRzKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBtb2RlbElEIC0gUmVsYXRlZCBtb2RlbCBpZGVudGlmaWVyLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxJbnN0YW5jZVR5cGU8VE1DPj59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgZmluZC5cbiAgICovXG4gIGFzeW5jIGZpbmQobW9kZWxJRCkge1xuICAgIHJldHVybiAvKiogQHR5cGUge1Byb21pc2U8SW5zdGFuY2VUeXBlPFRNQz4+fSAqLyAodGhpcy5xdWVyeSgpLmZpbmQobW9kZWxJRCkpXG4gIH1cblxuICAvKiogQHJldHVybnMge2ltcG9ydChcIi4uLy4uL3F1ZXJ5L21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQ8VE1DPn0gLSBUaGUgcXVlcnkuICAqL1xuICBxdWVyeSgpIHtcbiAgICBpZiAoIXRoaXMuZ2V0TW9kZWwoKS5pc1BlcnNpc3RlZCgpKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgYnVpbGQgYSBxdWVyeSBmb3IgYW4gdW5wZXJzaXN0ZWQgcGFyZW50IG1vZGVsXCIpXG5cbiAgICBjb25zdCBUYXJnZXRNb2RlbENsYXNzID0gdGhpcy5nZXRUYXJnZXRNb2RlbENsYXNzKClcblxuICAgIGlmICghVGFyZ2V0TW9kZWxDbGFzcykgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGxvYWQgd2l0aG91dCBhIHRhcmdldCBtb2RlbCBjbGFzc1wiKVxuXG4gICAgY29uc3QgdGhyb3VnaFJlbGF0aW9uc2hpcE5hbWUgPSB0aGlzLmdldFJlbGF0aW9uc2hpcCgpLnRocm91Z2hcblxuICAgIGlmICh0aHJvdWdoUmVsYXRpb25zaGlwTmFtZSkge1xuICAgICAgY29uc3QgcGFyZW50TW9kZWxDbGFzcyA9IHRoaXMuZ2V0TW9kZWwoKS5nZXRNb2RlbENsYXNzKClcbiAgICAgIGNvbnN0IHRocm91Z2hSZWxhdGlvbnNoaXAgPSBwYXJlbnRNb2RlbENsYXNzLmdldFJlbGF0aW9uc2hpcEJ5TmFtZSh0aHJvdWdoUmVsYXRpb25zaGlwTmFtZSlcbiAgICAgIGNvbnN0IHRocm91Z2hNb2RlbENsYXNzID0gdGhyb3VnaFJlbGF0aW9uc2hpcC5nZXRUYXJnZXRNb2RlbENsYXNzKClcblxuICAgICAgaWYgKCF0aHJvdWdoTW9kZWxDbGFzcykgdGhyb3cgbmV3IEVycm9yKGBUaHJvdWdoIHJlbGF0aW9uc2hpcCAke3Rocm91Z2hSZWxhdGlvbnNoaXBOYW1lfSBoYXMgbm8gdGFyZ2V0IG1vZGVsIGNsYXNzYClcblxuICAgICAgY29uc3QgdGhyb3VnaEZvcmVpZ25LZXkgPSB0aHJvdWdoUmVsYXRpb25zaGlwLmdldEZvcmVpZ25LZXkoKVxuICAgICAgY29uc3QgdGhyb3VnaFByaW1hcnlLZXkgPSB0aHJvdWdoUmVsYXRpb25zaGlwLmdldFByaW1hcnlLZXkoKVxuICAgICAgY29uc3QgdGFyZ2V0Rm9yZWlnbktleSA9IHRoaXMuZ2V0Rm9yZWlnbktleSgpXG4gICAgICBjb25zdCB0YXJnZXRUYWJsZSA9IFRhcmdldE1vZGVsQ2xhc3MudGFibGVOYW1lKClcbiAgICAgIGNvbnN0IHRocm91Z2hUYWJsZSA9IHRocm91Z2hNb2RlbENsYXNzLnRhYmxlTmFtZSgpXG4gICAgICBjb25zdCBkcml2ZXIgPSBUYXJnZXRNb2RlbENsYXNzLmNvbm5lY3Rpb24oKVxuICAgICAgY29uc3QgcGFyZW50UHJpbWFyeUtleSA9IHRoaXMuZ2V0UHJpbWFyeUtleSgpXG4gICAgICBjb25zdCBwYXJlbnRJZCA9IC8qKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyfSAqLyAodGhpcy5nZXRNb2RlbCgpLnJlYWRDb2x1bW4ocGFyZW50UHJpbWFyeUtleSkpXG4gICAgICBjb25zdCBqb2luU3FsID0gYExFRlQgSk9JTiAke2RyaXZlci5xdW90ZVRhYmxlKHRocm91Z2hUYWJsZSl9IE9OICR7ZHJpdmVyLnF1b3RlVGFibGUodGhyb3VnaFRhYmxlKX0uJHtkcml2ZXIucXVvdGVDb2x1bW4odGhyb3VnaFByaW1hcnlLZXkpfSA9ICR7ZHJpdmVyLnF1b3RlVGFibGUodGFyZ2V0VGFibGUpfS4ke2RyaXZlci5xdW90ZUNvbHVtbih0YXJnZXRGb3JlaWduS2V5KX1gXG4gICAgICBjb25zdCB3aGVyZVNxbCA9IGAke2RyaXZlci5xdW90ZVRhYmxlKHRocm91Z2hUYWJsZSl9LiR7ZHJpdmVyLnF1b3RlQ29sdW1uKHRocm91Z2hGb3JlaWduS2V5KX0gPSAke2RyaXZlci5vcHRpb25zKCkucXVvdGUocGFyZW50SWQpfWBcblxuICAgICAgY29uc3QgcXVlcnkgPSBUYXJnZXRNb2RlbENsYXNzLmpvaW5zKGpvaW5TcWwpLndoZXJlKHdoZXJlU3FsKVxuXG4gICAgICByZXR1cm4gdGhpcy5hcHBseVNjb3BlKHF1ZXJ5KVxuICAgIH1cblxuICAgIGNvbnN0IGZvcmVpZ25LZXkgPSB0aGlzLmdldEZvcmVpZ25LZXkoKVxuICAgIGNvbnN0IHByaW1hcnlLZXkgPSB0aGlzLmdldFByaW1hcnlLZXkoKVxuICAgIGNvbnN0IHByaW1hcnlNb2RlbElEID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXJ9ICovICh0aGlzLmdldE1vZGVsKCkucmVhZENvbHVtbihwcmltYXJ5S2V5KSlcblxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPn0gKi9cbiAgICBjb25zdCB3aGVyZUFyZ3MgPSB7fVxuXG4gICAgd2hlcmVBcmdzW2ZvcmVpZ25LZXldID0gcHJpbWFyeU1vZGVsSURcblxuICAgIGNvbnN0IHF1ZXJ5ID0gVGFyZ2V0TW9kZWxDbGFzcy53aGVyZSh3aGVyZUFyZ3MpXG5cbiAgICByZXR1cm4gdGhpcy5hcHBseVNjb3BlKHF1ZXJ5KVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtBcnJheTxJbnN0YW5jZVR5cGU8VE1DPj59IFRoZSBsb2FkZWQgbW9kZWwgb3IgbW9kZWxzIChkZXBlbmRpbmcgb24gcmVsYXRpb25zaGlwIHR5cGUpICovXG4gIGxvYWRlZCgpIHtcbiAgICBpZiAoIXRoaXMuX3ByZWxvYWRlZCAmJiB0aGlzLm1vZGVsLmlzUGVyc2lzdGVkKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLm1vZGVsLmNvbnN0cnVjdG9yLm5hbWV9IyR7dGhpcy5yZWxhdGlvbnNoaXAuZ2V0UmVsYXRpb25zaGlwTmFtZSgpfSBoYXNuJ3QgYmVlbiBwcmVsb2FkZWRgKVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9sb2FkZWQgPT09IHVuZGVmaW5lZCAmJiB0aGlzLm1vZGVsLmlzTmV3UmVjb3JkKCkpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cblxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMuX2xvYWRlZCkgPyB0aGlzLl9sb2FkZWQgOiBbXVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7SW5zdGFuY2VUeXBlPFRNQz5bXSB8IEluc3RhbmNlVHlwZTxUTUM+fSBtb2RlbHMgLSBNb2RlbCBpbnN0YW5jZXMuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIGFkZFRvTG9hZGVkKG1vZGVscykge1xuICAgIGlmICghbW9kZWxzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOZWVkIHRvIGdpdmUgc29tZXRoaW5nXCIpXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG1vZGVscykpIHtcbiAgICAgIGZvciAoY29uc3QgbW9kZWwgb2YgbW9kZWxzKSB7XG4gICAgICAgIGlmICh0aGlzLl9sb2FkZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuX2xvYWRlZCA9IFttb2RlbF1cbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMuX2xvYWRlZCkpIHtcbiAgICAgICAgICB0aGlzLl9sb2FkZWQucHVzaChtb2RlbClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgbG9hZGVkIHR5cGU6ICR7dHlwZW9mIHRoaXMuX2xvYWRlZH1gKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLl9sb2FkZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9sb2FkZWQgPSBbbW9kZWxzXVxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMuX2xvYWRlZCkpIHtcbiAgICAgICAgdGhpcy5fbG9hZGVkLnB1c2gobW9kZWxzKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGxvYWRlZCB0eXBlOiAke3R5cGVvZiB0aGlzLl9sb2FkZWR9YClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtJbnN0YW5jZVR5cGU8VE1DPltdfSBtb2RlbHMgLSBNb2RlbCBpbnN0YW5jZXMuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIHNldExvYWRlZChtb2RlbHMpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkobW9kZWxzKSkgdGhyb3cgbmV3IEVycm9yKGBBcmd1bWVudCBnaXZlbiB0byBzZXRMb2FkZWQgd2Fzbid0IGFuIGFycmF5OiAke3R5cGVvZiBtb2RlbHN9YClcblxuICAgIHRoaXMuX2xvYWRlZCA9IG1vZGVsc1xuICB9XG59XG4iXX0=
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLW1hbnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcmVjb3JkL2luc3RhbmNlLXJlbGF0aW9uc2hpcHMvaGFzLW1hbnkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sd0JBQXdCLE1BQU0sV0FBVyxDQUFBO0FBRWhEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTyxrREFBbUQsU0FBUSx3QkFBd0I7SUFDdEc7O09BRUc7SUFDSCxZQUFZLElBQUk7UUFDZCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDYixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLElBQUk7UUFDUix3Q0FBd0M7UUFDeEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQTtRQUVuRCxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFBO1FBRTlGLE1BQU0sV0FBVyxHQUFHLGdDQUFnQyxDQUFDLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBR2pGLG1EQUFtRDtRQUNuRCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzlCLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDaEMsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQzFFLENBQUM7UUFHRCxpREFBaUQ7UUFD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RztJQUNILFNBQVMsQ0FBQyxNQUFNO1FBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsT0FBTyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBRTVHLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFBO0lBQ3ZCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQmFzZUluc3RhbmNlUmVsYXRpb25zaGlwIGZyb20gXCIuL2Jhc2UuanNcIlxuXG4vKipcbiAqIEEgZ2VuZXJpYyBxdWVyeSBvdmVyIHNvbWUgbW9kZWwgdHlwZS5cbiAqIEB0ZW1wbGF0ZSB7dHlwZW9mIGltcG9ydChcIi4uL2luZGV4LmpzXCIpLmRlZmF1bHR9IE1DXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0fSBUTUNcbiAqIEBhdWdtZW50cyB7QmFzZUluc3RhbmNlUmVsYXRpb25zaGlwPE1DLCBUTUM+fVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVJlY29yZEhhc01hbnlJbnN0YW5jZVJlbGF0aW9uc2hpcCBleHRlbmRzIEJhc2VJbnN0YW5jZVJlbGF0aW9uc2hpcCB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vYmFzZS5qc1wiKS5JbnN0YW5jZVJlbGF0aW9uc2hpcHNCYXNlQXJnczxNQywgVE1DPn0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKi9cbiAgY29uc3RydWN0b3IoYXJncykge1xuICAgIHN1cGVyKGFyZ3MpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBkYXRhIC0gRGF0YSBwYXlsb2FkLlxuICAgKiBAcmV0dXJucyB7SW5zdGFuY2VUeXBlPFRNQz59IC0gVGhlIGJ1aWxkLlxuICAgKi9cbiAgYnVpbGQoZGF0YSkge1xuICAgIC8vIFNwYXduIG5ldyBtb2RlbCBvZiB0aGUgdGFyZ2V0ZWQgY2xhc3NcbiAgICBjb25zdCB0YXJnZXRNb2RlbENsYXNzID0gdGhpcy5nZXRUYXJnZXRNb2RlbENsYXNzKClcblxuICAgIGlmICghdGFyZ2V0TW9kZWxDbGFzcykgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgYnVpbGQgYSBuZXcgcmVjb3JkIHdpdGhvdXQgYSB0YWdldCBtb2RlbCBjbGFzc1wiKVxuXG4gICAgY29uc3QgbmV3SW5zdGFuY2UgPSAvKiogQHR5cGUge0luc3RhbmNlVHlwZTxUTUM+fSAqLyAobmV3IHRhcmdldE1vZGVsQ2xhc3MoZGF0YSkpXG5cblxuICAgIC8vIEFkZCBpdCB0byB0aGUgbG9hZGVkIG1vZGVscyBvZiB0aGlzIHJlbGF0aW9uc2hpcFxuICAgIGlmICh0aGlzLl9sb2FkZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fbG9hZGVkID0gW25ld0luc3RhbmNlXVxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLl9sb2FkZWQpKSB7XG4gICAgICB0aGlzLl9sb2FkZWQucHVzaChuZXdJbnN0YW5jZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBMb2FkZWQgaGFkIGFuIHVuZXhwZWN0ZWQgdHlwZTogJHt0eXBlb2YgdGhpcy5fbG9hZGVkfWApXG4gICAgfVxuXG5cbiAgICAvLyBTZXQgbG9hZGVkIG9uIHRoZSBtb2RlbHMgaW52ZXJzZWQgcmVsYXRpb25zaGlwXG4gICAgY29uc3QgaW52ZXJzZU9mID0gdGhpcy5nZXRSZWxhdGlvbnNoaXAoKS5nZXRJbnZlcnNlT2YoKVxuXG4gICAgaWYgKGludmVyc2VPZikge1xuICAgICAgY29uc3QgaW52ZXJzZUluc3RhbmNlUmVsYXRpb25zaGlwID0gbmV3SW5zdGFuY2UuZ2V0UmVsYXRpb25zaGlwQnlOYW1lKGludmVyc2VPZilcblxuICAgICAgaW52ZXJzZUluc3RhbmNlUmVsYXRpb25zaGlwLnNldEF1dG9TYXZlKGZhbHNlKVxuICAgICAgaW52ZXJzZUluc3RhbmNlUmVsYXRpb25zaGlwLnNldExvYWRlZCh0aGlzLmdldE1vZGVsKCkpXG4gICAgfVxuXG5cbiAgICAvLyBBc3NpZ24gdGhlIGZvcmVpZ24ga2V5IHRvIHRoZSBuZXcgbW9kZWxcbiAgICBjb25zdCBwYXJlbnRNb2RlbCA9IHRoaXMuZ2V0TW9kZWwoKVxuXG4gICAgaWYgKHBhcmVudE1vZGVsLmlzUGVyc2lzdGVkKCkpIHtcbiAgICAgIGNvbnN0IGZvcmVpZ25LZXlOYW1lID0gdGhpcy5nZXRGb3JlaWduS2V5KClcbiAgICAgIGNvbnN0IGNvbHVtbk5hbWVNYXAgPSB0YXJnZXRNb2RlbENsYXNzLmdldENvbHVtbk5hbWVUb0F0dHJpYnV0ZU5hbWVNYXAoKVxuICAgICAgY29uc3QgZm9yZWlnbktleUF0dHJpYnV0ZU5hbWUgPSBjb2x1bW5OYW1lTWFwW2ZvcmVpZ25LZXlOYW1lXVxuICAgICAgaWYgKCFmb3JlaWduS2V5QXR0cmlidXRlTmFtZSkgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGZvcmVpZ24ga2V5IGF0dHJpYnV0ZSBuYW1lIGZvciAke2ZvcmVpZ25LZXlOYW1lfWApXG4gICAgICBjb25zdCBwcmltYXJ5S2V5TmFtZSA9IHRoaXMuZ2V0UHJpbWFyeUtleSgpXG4gICAgICBjb25zdCBmb3JlaWduS2V5VmFsdWUgPSBwYXJlbnRNb2RlbC5yZWFkQ29sdW1uKHByaW1hcnlLZXlOYW1lKVxuICAgICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSAqL1xuICAgICAgY29uc3QgYXNzaWduRGF0YSA9IHt9XG5cbiAgICAgIGFzc2lnbkRhdGFbZm9yZWlnbktleUF0dHJpYnV0ZU5hbWVdID0gZm9yZWlnbktleVZhbHVlXG5cbiAgICAgIG5ld0luc3RhbmNlLmFzc2lnbihhc3NpZ25EYXRhKVxuICAgIH1cblxuXG4gICAgLy8gUmV0dXJuIHRoZSBuZXcgY29udHJ1Y3RlZCBtb2RlbFxuICAgIHJldHVybiBuZXdJbnN0YW5jZVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gZGF0YSAtIERhdGEgcGF5bG9hZC5cbiAgICogQHJldHVybnMge1Byb21pc2U8SW5zdGFuY2VUeXBlPFRNQz4+fSAtIFJlc29sdmVzIHdpdGggdGhlIGNyZWF0ZS5cbiAgICovXG4gIGFzeW5jIGNyZWF0ZShkYXRhKSB7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLmJ1aWxkKGRhdGEpXG5cbiAgICBhd2FpdCBtb2RlbC5zYXZlKClcblxuICAgIHJldHVybiBtb2RlbFxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPEluc3RhbmNlVHlwZTxUTUM+W10+fSAtIFJlc29sdmVzIHdpdGggbG9hZGVkIG1vZGVscy4gKi9cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICAvLyBGb3JjZS1yZWxvYWQ6IGRpc2NhcmQgdGhlIGNhY2hlZCB2YWx1ZSBhbmQgZmV0Y2ggZnJlc2guIFdoZW4gdGhlIHBhcmVudFxuICAgIC8vIHJlY29yZCB3YXMgbG9hZGVkIGFzIHBhcnQgb2YgYSBiYXRjaCwgcm91dGUgdGhyb3VnaCB0aGUgY29ob3J0IHByZWxvYWRlclxuICAgIC8vIHNvIHNpYmxpbmdzIHRoYXQgaGF2ZSBub3QgcHJlbG9hZGVkIHRoaXMgcmVsYXRpb25zaGlwIGdldCBiYXRjaGVkIHRvby5cbiAgICAvLyBUaGUgc2NvcGVkIHF1ZXJ5IHBhdGggKGBpbnN0YW5jZS5xdWVyeSgpLndoZXJlKC4uLikubG9hZCgpYCkgYnlwYXNzZXNcbiAgICAvLyB0aGlzIGFuZCBzdGF5cyBhIHNpbmdsZS1yZWNvcmQgbG9hZCBieSBkZXNpZ24uXG4gICAgdGhpcy5fcHJlbG9hZGVkID0gZmFsc2VcbiAgICB0aGlzLl9sb2FkZWQgPSB1bmRlZmluZWRcblxuICAgIGNvbnN0IGJhdGNoZWQgPSBhd2FpdCB0aGlzLl90cnlDb2hvcnRQcmVsb2FkKClcblxuICAgIGlmIChiYXRjaGVkKSB7XG4gICAgICByZXR1cm4gLyoqIEB0eXBlIHtJbnN0YW5jZVR5cGU8VE1DPltdfSAqLyAoQXJyYXkuaXNBcnJheSh0aGlzLl9sb2FkZWQpID8gdGhpcy5fbG9hZGVkIDogW10pXG4gICAgfVxuXG4gICAgY29uc3QgZm9yZWlnbk1vZGVscyA9IC8qKiBAdHlwZSB7SW5zdGFuY2VUeXBlPFRNQz5bXX0gKi8gKGF3YWl0IHRoaXMucXVlcnkoKS5sb2FkKCkpXG5cbiAgICB0aGlzLnNldExvYWRlZChmb3JlaWduTW9kZWxzKVxuICAgIHRoaXMuc2V0RGlydHkoZmFsc2UpXG4gICAgdGhpcy5zZXRQcmVsb2FkZWQodHJ1ZSlcblxuICAgIHJldHVybiBmb3JlaWduTW9kZWxzXG4gIH1cblxuICAvKiogQHJldHVybnMge1Byb21pc2U8SW5zdGFuY2VUeXBlPFRNQz5bXT59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgYXJyYXkuICovXG4gIGFzeW5jIHRvQXJyYXkoKSB7XG4gICAgY29uc3QgbG9hZGVkVmFsdWUgPSBhd2FpdCB0aGlzLmF1dG9sb2FkT3JMb2FkKClcblxuICAgIGlmIChsb2FkZWRWYWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gW11cblxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGxvYWRlZFZhbHVlKSA/IGxvYWRlZFZhbHVlIDogW2xvYWRlZFZhbHVlXVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vcXVlcnkvaW5kZXguanNcIikuTmVzdGVkUHJlbG9hZFJlY29yZH0gcHJlbG9hZHMgLSBQcmVsb2FkIG1hcCBmb3IgcmVsYXRlZCByZWNvcmRzLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vLi4vcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDxUTUM+fSAtIFRoZSBwcmVsb2FkLlxuICAgKi9cbiAgcHJlbG9hZChwcmVsb2Fkcykge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5KCkuY2xvbmUoKS5wcmVsb2FkKHByZWxvYWRzKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBtb2RlbElEIC0gUmVsYXRlZCBtb2RlbCBpZGVudGlmaWVyLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxJbnN0YW5jZVR5cGU8VE1DPj59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgZmluZC5cbiAgICovXG4gIGFzeW5jIGZpbmQobW9kZWxJRCkge1xuICAgIHJldHVybiAvKiogQHR5cGUge1Byb21pc2U8SW5zdGFuY2VUeXBlPFRNQz4+fSAqLyAodGhpcy5xdWVyeSgpLmZpbmQobW9kZWxJRCkpXG4gIH1cblxuICAvKiogQHJldHVybnMge2ltcG9ydChcIi4uLy4uL3F1ZXJ5L21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQ8VE1DPn0gLSBUaGUgcXVlcnkuICAqL1xuICBxdWVyeSgpIHtcbiAgICBpZiAoIXRoaXMuZ2V0TW9kZWwoKS5pc1BlcnNpc3RlZCgpKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgYnVpbGQgYSBxdWVyeSBmb3IgYW4gdW5wZXJzaXN0ZWQgcGFyZW50IG1vZGVsXCIpXG5cbiAgICBjb25zdCBUYXJnZXRNb2RlbENsYXNzID0gdGhpcy5nZXRUYXJnZXRNb2RlbENsYXNzKClcblxuICAgIGlmICghVGFyZ2V0TW9kZWxDbGFzcykgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGxvYWQgd2l0aG91dCBhIHRhcmdldCBtb2RlbCBjbGFzc1wiKVxuXG4gICAgY29uc3QgdGhyb3VnaFJlbGF0aW9uc2hpcE5hbWUgPSB0aGlzLmdldFJlbGF0aW9uc2hpcCgpLnRocm91Z2hcblxuICAgIGlmICh0aHJvdWdoUmVsYXRpb25zaGlwTmFtZSkge1xuICAgICAgY29uc3QgcGFyZW50TW9kZWxDbGFzcyA9IHRoaXMuZ2V0TW9kZWwoKS5nZXRNb2RlbENsYXNzKClcbiAgICAgIGNvbnN0IHRocm91Z2hSZWxhdGlvbnNoaXAgPSBwYXJlbnRNb2RlbENsYXNzLmdldFJlbGF0aW9uc2hpcEJ5TmFtZSh0aHJvdWdoUmVsYXRpb25zaGlwTmFtZSlcbiAgICAgIGNvbnN0IHRocm91Z2hNb2RlbENsYXNzID0gdGhyb3VnaFJlbGF0aW9uc2hpcC5nZXRUYXJnZXRNb2RlbENsYXNzKClcblxuICAgICAgaWYgKCF0aHJvdWdoTW9kZWxDbGFzcykgdGhyb3cgbmV3IEVycm9yKGBUaHJvdWdoIHJlbGF0aW9uc2hpcCAke3Rocm91Z2hSZWxhdGlvbnNoaXBOYW1lfSBoYXMgbm8gdGFyZ2V0IG1vZGVsIGNsYXNzYClcblxuICAgICAgY29uc3QgdGhyb3VnaEZvcmVpZ25LZXkgPSB0aHJvdWdoUmVsYXRpb25zaGlwLmdldEZvcmVpZ25LZXkoKVxuICAgICAgY29uc3QgdGhyb3VnaFByaW1hcnlLZXkgPSB0aHJvdWdoUmVsYXRpb25zaGlwLmdldFByaW1hcnlLZXkoKVxuICAgICAgY29uc3QgdGFyZ2V0Rm9yZWlnbktleSA9IHRoaXMuZ2V0Rm9yZWlnbktleSgpXG4gICAgICBjb25zdCB0YXJnZXRUYWJsZSA9IFRhcmdldE1vZGVsQ2xhc3MudGFibGVOYW1lKClcbiAgICAgIGNvbnN0IHRocm91Z2hUYWJsZSA9IHRocm91Z2hNb2RlbENsYXNzLnRhYmxlTmFtZSgpXG4gICAgICBjb25zdCBkcml2ZXIgPSBUYXJnZXRNb2RlbENsYXNzLmNvbm5lY3Rpb24oKVxuICAgICAgY29uc3QgcGFyZW50UHJpbWFyeUtleSA9IHRoaXMuZ2V0UHJpbWFyeUtleSgpXG4gICAgICBjb25zdCBwYXJlbnRJZCA9IC8qKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyfSAqLyAodGhpcy5nZXRNb2RlbCgpLnJlYWRDb2x1bW4ocGFyZW50UHJpbWFyeUtleSkpXG4gICAgICBjb25zdCBqb2luU3FsID0gYExFRlQgSk9JTiAke2RyaXZlci5xdW90ZVRhYmxlKHRocm91Z2hUYWJsZSl9IE9OICR7ZHJpdmVyLnF1b3RlVGFibGUodGhyb3VnaFRhYmxlKX0uJHtkcml2ZXIucXVvdGVDb2x1bW4odGhyb3VnaFByaW1hcnlLZXkpfSA9ICR7ZHJpdmVyLnF1b3RlVGFibGUodGFyZ2V0VGFibGUpfS4ke2RyaXZlci5xdW90ZUNvbHVtbih0YXJnZXRGb3JlaWduS2V5KX1gXG4gICAgICBjb25zdCB3aGVyZVNxbCA9IGAke2RyaXZlci5xdW90ZVRhYmxlKHRocm91Z2hUYWJsZSl9LiR7ZHJpdmVyLnF1b3RlQ29sdW1uKHRocm91Z2hGb3JlaWduS2V5KX0gPSAke2RyaXZlci5vcHRpb25zKCkucXVvdGUocGFyZW50SWQpfWBcblxuICAgICAgY29uc3QgcXVlcnkgPSBUYXJnZXRNb2RlbENsYXNzLmpvaW5zKGpvaW5TcWwpLndoZXJlKHdoZXJlU3FsKVxuXG4gICAgICByZXR1cm4gdGhpcy5hcHBseVNjb3BlKHF1ZXJ5KVxuICAgIH1cblxuICAgIGNvbnN0IGZvcmVpZ25LZXkgPSB0aGlzLmdldEZvcmVpZ25LZXkoKVxuICAgIGNvbnN0IHByaW1hcnlLZXkgPSB0aGlzLmdldFByaW1hcnlLZXkoKVxuICAgIGNvbnN0IHByaW1hcnlNb2RlbElEID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXJ9ICovICh0aGlzLmdldE1vZGVsKCkucmVhZENvbHVtbihwcmltYXJ5S2V5KSlcblxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPn0gKi9cbiAgICBjb25zdCB3aGVyZUFyZ3MgPSB7fVxuXG4gICAgd2hlcmVBcmdzW2ZvcmVpZ25LZXldID0gcHJpbWFyeU1vZGVsSURcblxuICAgIGNvbnN0IHF1ZXJ5ID0gVGFyZ2V0TW9kZWxDbGFzcy53aGVyZSh3aGVyZUFyZ3MpXG5cbiAgICByZXR1cm4gdGhpcy5hcHBseVNjb3BlKHF1ZXJ5KVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtBcnJheTxJbnN0YW5jZVR5cGU8VE1DPj59IFRoZSBsb2FkZWQgbW9kZWwgb3IgbW9kZWxzIChkZXBlbmRpbmcgb24gcmVsYXRpb25zaGlwIHR5cGUpICovXG4gIGxvYWRlZCgpIHtcbiAgICBpZiAoIXRoaXMuX3ByZWxvYWRlZCAmJiB0aGlzLm1vZGVsLmlzUGVyc2lzdGVkKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLm1vZGVsLmNvbnN0cnVjdG9yLm5hbWV9IyR7dGhpcy5yZWxhdGlvbnNoaXAuZ2V0UmVsYXRpb25zaGlwTmFtZSgpfSBoYXNuJ3QgYmVlbiBwcmVsb2FkZWRgKVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9sb2FkZWQgPT09IHVuZGVmaW5lZCAmJiB0aGlzLm1vZGVsLmlzTmV3UmVjb3JkKCkpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cblxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMuX2xvYWRlZCkgPyB0aGlzLl9sb2FkZWQgOiBbXVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7SW5zdGFuY2VUeXBlPFRNQz5bXSB8IEluc3RhbmNlVHlwZTxUTUM+fSBtb2RlbHMgLSBNb2RlbCBpbnN0YW5jZXMuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIGFkZFRvTG9hZGVkKG1vZGVscykge1xuICAgIGlmICghbW9kZWxzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOZWVkIHRvIGdpdmUgc29tZXRoaW5nXCIpXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG1vZGVscykpIHtcbiAgICAgIGZvciAoY29uc3QgbW9kZWwgb2YgbW9kZWxzKSB7XG4gICAgICAgIGlmICh0aGlzLl9sb2FkZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuX2xvYWRlZCA9IFttb2RlbF1cbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMuX2xvYWRlZCkpIHtcbiAgICAgICAgICB0aGlzLl9sb2FkZWQucHVzaChtb2RlbClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgbG9hZGVkIHR5cGU6ICR7dHlwZW9mIHRoaXMuX2xvYWRlZH1gKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLl9sb2FkZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9sb2FkZWQgPSBbbW9kZWxzXVxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMuX2xvYWRlZCkpIHtcbiAgICAgICAgdGhpcy5fbG9hZGVkLnB1c2gobW9kZWxzKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGxvYWRlZCB0eXBlOiAke3R5cGVvZiB0aGlzLl9sb2FkZWR9YClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtJbnN0YW5jZVR5cGU8VE1DPltdfSBtb2RlbHMgLSBNb2RlbCBpbnN0YW5jZXMuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIHNldExvYWRlZChtb2RlbHMpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkobW9kZWxzKSkgdGhyb3cgbmV3IEVycm9yKGBBcmd1bWVudCBnaXZlbiB0byBzZXRMb2FkZWQgd2Fzbid0IGFuIGFycmF5OiAke3R5cGVvZiBtb2RlbHN9YClcblxuICAgIHRoaXMuX2xvYWRlZCA9IG1vZGVsc1xuICB9XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"has-one.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/instance-relationships/has-one.js"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,uEAJoD,EAAE,SAAzC,cAAe,aAAa,EAAE,OAAQ,EACC,GAAG,SAA1C,cAAe,aAAa,EAAE,OAAQ;IAIjD;;OAEG;IACH,kBAFW,OAAO,WAAW,EAAE,6BAA6B,CAAC,EAAE,EAAE,GAAG,CAAC,EAIpE;IAED,4CAA4C;IAC5C,SADW,YAAY,CAAC,GAAG,CAAC,GAAG,SAAS,CACrB;
|
|
1
|
+
{"version":3,"file":"has-one.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/instance-relationships/has-one.js"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,uEAJoD,EAAE,SAAzC,cAAe,aAAa,EAAE,OAAQ,EACC,GAAG,SAA1C,cAAe,aAAa,EAAE,OAAQ;IAIjD;;OAEG;IACH,kBAFW,OAAO,WAAW,EAAE,6BAA6B,CAAC,EAAE,EAAE,GAAG,CAAC,EAIpE;IAED,4CAA4C;IAC5C,SADW,YAAY,CAAC,GAAG,CAAC,GAAG,SAAS,CACrB;IAqEnB,sDAA8C;CAU/C;qCAhGoC,WAAW"}
|
|
@@ -28,6 +28,14 @@ export default class VelociousDatabaseRecordHasOneInstanceRelationship extends B
|
|
|
28
28
|
return newInstance;
|
|
29
29
|
}
|
|
30
30
|
async load() {
|
|
31
|
+
// Force-reload: discard the cached value and fetch fresh. When the parent
|
|
32
|
+
// record was loaded as part of a batch, batch the has-one lookup across
|
|
33
|
+
// cohort siblings that have not preloaded this relationship yet.
|
|
34
|
+
this._preloaded = false;
|
|
35
|
+
this._loaded = undefined;
|
|
36
|
+
const batched = await this._tryCohortPreload();
|
|
37
|
+
if (batched)
|
|
38
|
+
return this.loaded();
|
|
31
39
|
const foreignKey = this.getForeignKey();
|
|
32
40
|
const primaryKey = this.getPrimaryKey();
|
|
33
41
|
const primaryModelID = /** @type {string | number} */ (this.getModel().readColumn(primaryKey));
|
|
@@ -68,4 +76,4 @@ export default class VelociousDatabaseRecordHasOneInstanceRelationship extends B
|
|
|
68
76
|
}
|
|
69
77
|
getTargetModelClass() { return /** @type {TMC | undefined} */ (this.relationship.getTargetModelClass()); }
|
|
70
78
|
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLW9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9yZWNvcmQvaW5zdGFuY2UtcmVsYXRpb25zaGlwcy9oYXMtb25lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLHdCQUF3QixNQUFNLFdBQVcsQ0FBQTtBQUVoRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8saURBQWtELFNBQVEsd0JBQXdCO0lBQ3JHOztPQUVHO0lBQ0gsWUFBWSxJQUFJO1FBQ2QsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2IsQ0FBQztJQUVELDRDQUE0QztJQUM1QyxPQUFPLEdBQUcsU0FBUyxDQUFBO0lBRW5COzs7T0FHRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUE7UUFFeEUsSUFBSSxDQUFDLGdCQUFnQjtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQTtRQUUvRixNQUFNLFdBQVcsR0FBRyxnQ0FBZ0MsQ0FBQyxDQUFDLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUVqRixJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQTtRQUUxQixPQUFPLFdBQVcsQ0FBQTtJQUNwQixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUiwwRUFBMEU7UUFDMUUsd0VBQXdFO1FBQ3hFLGlFQUFpRTtRQUNqRSxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQTtRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQTtRQUV4QixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1FBRTlDLElBQUksT0FBTztZQUFFLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBRWpDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUN2QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDdkMsTUFBTSxjQUFjLEdBQUcsOEJBQThCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUE7UUFDOUYsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUE7UUFFeEUsSUFBSSxDQUFDLGdCQUFnQjtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQTtRQUVqRiw4Q0FBOEM7UUFDOUMsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFBO1FBRXBCLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxjQUFjLENBQUE7UUFFdEMsSUFBSSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBRTdDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRTlCLE1BQU0sWUFBWSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFBO1FBRXhDLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUM5QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDM0IsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUV2QixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ2pELE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSx3QkFBd0IsQ0FBQyxDQUFBO1FBQ3BILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDckIsQ0FBQztJQUVELG9CQUFvQixLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQSxDQUFDLENBQUM7SUFFOUMsa0dBQWtHO0lBQ2xHLFNBQVMsQ0FBQyxLQUFLO1FBQ2IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLE9BQU8sS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUV0RyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtJQUN0QixDQUFDO0lBRUQsbUJBQW1CLEtBQUssT0FBTyw4QkFBOEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQztDQUMxRyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQmFzZUluc3RhbmNlUmVsYXRpb25zaGlwIGZyb20gXCIuL2Jhc2UuanNcIlxuXG4vKipcbiAqIEEgZ2VuZXJpYyBxdWVyeSBvdmVyIHNvbWUgbW9kZWwgdHlwZS5cbiAqIEB0ZW1wbGF0ZSB7dHlwZW9mIGltcG9ydChcIi4uL2luZGV4LmpzXCIpLmRlZmF1bHR9IE1DXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0fSBUTUNcbiAqIEBhdWdtZW50cyB7QmFzZUluc3RhbmNlUmVsYXRpb25zaGlwPE1DLCBUTUM+fVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVJlY29yZEhhc09uZUluc3RhbmNlUmVsYXRpb25zaGlwIGV4dGVuZHMgQmFzZUluc3RhbmNlUmVsYXRpb25zaGlwIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9iYXNlLmpzXCIpLkluc3RhbmNlUmVsYXRpb25zaGlwc0Jhc2VBcmdzPE1DLCBUTUM+fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhcmdzKSB7XG4gICAgc3VwZXIoYXJncylcbiAgfVxuXG4gIC8qKiBAdHlwZSB7SW5zdGFuY2VUeXBlPFRNQz4gfCB1bmRlZmluZWR9ICovXG4gIF9sb2FkZWQgPSB1bmRlZmluZWRcblxuICAvKipcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBkYXRhIC0gRGF0YSBwYXlsb2FkLlxuICAgKiBAcmV0dXJucyB7SW5zdGFuY2VUeXBlPFRNQz59IC0gVGhlIGJ1aWxkLlxuICAgKi9cbiAgYnVpbGQoZGF0YSkge1xuICAgIGNvbnN0IFRhcmdldE1vZGVsQ2xhc3MgPSAvKiogQHR5cGUge1RNQ30gKi8gKHRoaXMuZ2V0VGFyZ2V0TW9kZWxDbGFzcygpKVxuXG4gICAgaWYgKCFUYXJnZXRNb2RlbENsYXNzKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBidWlsZCBhIG5ldyByZWNvcmQgd2l0aG91dCBhIHRhcmdldCBtb2RlbCBjbGFzc1wiKVxuXG4gICAgY29uc3QgbmV3SW5zdGFuY2UgPSAvKiogQHR5cGUge0luc3RhbmNlVHlwZTxUTUM+fSAqLyAobmV3IFRhcmdldE1vZGVsQ2xhc3MoZGF0YSkpXG5cbiAgICB0aGlzLl9sb2FkZWQgPSBuZXdJbnN0YW5jZVxuXG4gICAgcmV0dXJuIG5ld0luc3RhbmNlXG4gIH1cblxuICBhc3luYyBsb2FkKCkge1xuICAgIC8vIEZvcmNlLXJlbG9hZDogZGlzY2FyZCB0aGUgY2FjaGVkIHZhbHVlIGFuZCBmZXRjaCBmcmVzaC4gV2hlbiB0aGUgcGFyZW50XG4gICAgLy8gcmVjb3JkIHdhcyBsb2FkZWQgYXMgcGFydCBvZiBhIGJhdGNoLCBiYXRjaCB0aGUgaGFzLW9uZSBsb29rdXAgYWNyb3NzXG4gICAgLy8gY29ob3J0IHNpYmxpbmdzIHRoYXQgaGF2ZSBub3QgcHJlbG9hZGVkIHRoaXMgcmVsYXRpb25zaGlwIHlldC5cbiAgICB0aGlzLl9wcmVsb2FkZWQgPSBmYWxzZVxuICAgIHRoaXMuX2xvYWRlZCA9IHVuZGVmaW5lZFxuXG4gICAgY29uc3QgYmF0Y2hlZCA9IGF3YWl0IHRoaXMuX3RyeUNvaG9ydFByZWxvYWQoKVxuXG4gICAgaWYgKGJhdGNoZWQpIHJldHVybiB0aGlzLmxvYWRlZCgpXG5cbiAgICBjb25zdCBmb3JlaWduS2V5ID0gdGhpcy5nZXRGb3JlaWduS2V5KClcbiAgICBjb25zdCBwcmltYXJ5S2V5ID0gdGhpcy5nZXRQcmltYXJ5S2V5KClcbiAgICBjb25zdCBwcmltYXJ5TW9kZWxJRCA9IC8qKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyfSAqLyAodGhpcy5nZXRNb2RlbCgpLnJlYWRDb2x1bW4ocHJpbWFyeUtleSkpXG4gICAgY29uc3QgVGFyZ2V0TW9kZWxDbGFzcyA9IC8qKiBAdHlwZSB7VE1DfSAqLyAodGhpcy5nZXRUYXJnZXRNb2RlbENsYXNzKCkpXG5cbiAgICBpZiAoIVRhcmdldE1vZGVsQ2xhc3MpIHRocm93IG5ldyBFcnJvcihcIkNhbid0IGxvYWQgd2l0aG91dCBhIHRhcmdldCBtb2RlbCBjbGFzc1wiKVxuXG4gICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+fSAqL1xuICAgIGNvbnN0IHdoZXJlQXJncyA9IHt9XG5cbiAgICB3aGVyZUFyZ3NbZm9yZWlnbktleV0gPSBwcmltYXJ5TW9kZWxJRFxuXG4gICAgbGV0IHF1ZXJ5ID0gVGFyZ2V0TW9kZWxDbGFzcy53aGVyZSh3aGVyZUFyZ3MpXG5cbiAgICBxdWVyeSA9IHRoaXMuYXBwbHlTY29wZShxdWVyeSlcblxuICAgIGNvbnN0IGZvcmVpZ25Nb2RlbCA9IGF3YWl0IHF1ZXJ5LmZpcnN0KClcblxuICAgIGlmIChmb3JlaWduTW9kZWwpIHtcbiAgICAgIHRoaXMuc2V0TG9hZGVkKGZvcmVpZ25Nb2RlbClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRMb2FkZWQodW5kZWZpbmVkKVxuICAgIH1cbiAgICB0aGlzLnNldERpcnR5KGZhbHNlKVxuICAgIHRoaXMuc2V0UHJlbG9hZGVkKHRydWUpXG5cbiAgICByZXR1cm4gdGhpcy5sb2FkZWQoKVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtJbnN0YW5jZVR5cGU8VE1DPiB8IEFycmF5PEluc3RhbmNlVHlwZTxUTUM+PiB8IHVuZGVmaW5lZH0gVGhlIGxvYWRlZCBtb2RlbCBvciBtb2RlbHMgKGRlcGVuZGluZyBvbiByZWxhdGlvbnNoaXAgdHlwZSlcbiAgICovXG4gIGxvYWRlZCgpIHtcbiAgICBpZiAoIXRoaXMuX3ByZWxvYWRlZCAmJiB0aGlzLm1vZGVsLmlzUGVyc2lzdGVkKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLm1vZGVsLmNvbnN0cnVjdG9yLm5hbWV9IyR7dGhpcy5yZWxhdGlvbnNoaXAuZ2V0UmVsYXRpb25zaGlwTmFtZSgpfSBoYXNuJ3QgYmVlbiBwcmVsb2FkZWRgKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9sb2FkZWRcbiAgfVxuXG4gIGdldExvYWRlZE9yVW5kZWZpbmVkKCkgeyByZXR1cm4gdGhpcy5fbG9hZGVkIH1cblxuICAvKiogQHBhcmFtIHtJbnN0YW5jZVR5cGU8VE1DPiB8IEFycmF5PEluc3RhbmNlVHlwZTxUTUM+PiB8IHVuZGVmaW5lZH0gbW9kZWwgLSBSZWxhdGVkIG1vZGVsKHMpLiAqL1xuICBzZXRMb2FkZWQobW9kZWwpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShtb2RlbCkpIHRocm93IG5ldyBFcnJvcihgQXJndW1lbnQgZ2l2ZW4gdG8gc2V0TG9hZGVkIHdhcyBhbiBhcnJheTogJHt0eXBlb2YgbW9kZWx9YClcblxuICAgIHRoaXMuX2xvYWRlZCA9IG1vZGVsXG4gIH1cblxuICBnZXRUYXJnZXRNb2RlbENsYXNzKCkgeyByZXR1cm4gLyoqIEB0eXBlIHtUTUMgfCB1bmRlZmluZWR9ICovICh0aGlzLnJlbGF0aW9uc2hpcC5nZXRUYXJnZXRNb2RlbENsYXNzKCkpIH1cbn1cbiJdfQ==
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
/**
|
|
5
5
|
* @typedef {object} RelationshipBaseArgsType
|
|
6
|
+
* @property {boolean} [autoload] - Whether to auto-batch-preload siblings when this relationship is lazy-loaded. Default true.
|
|
6
7
|
* @property {string} [className] - Name of the related model class.
|
|
7
8
|
* @property {boolean} [counterCache] - Auto-sync parent count column on create/update/destroy.
|
|
8
9
|
* @property {string} [dependent] - Dependent action when parent is destroyed.
|
|
@@ -19,7 +20,8 @@
|
|
|
19
20
|
*/
|
|
20
21
|
export default class VelociousDatabaseRecordBaseRelationship {
|
|
21
22
|
/** @param {RelationshipBaseArgsType} args - Relationship definition arguments. */
|
|
22
|
-
constructor({ className, counterCache, dependent, foreignKey, inverseOf, klass, modelClass, primaryKey, polymorphic, relationshipName, scope, through, type, ...restArgs }: RelationshipBaseArgsType);
|
|
23
|
+
constructor({ autoload, className, counterCache, dependent, foreignKey, inverseOf, klass, modelClass, primaryKey, polymorphic, relationshipName, scope, through, type, ...restArgs }: RelationshipBaseArgsType);
|
|
24
|
+
_autoload: boolean;
|
|
23
25
|
className: string | undefined;
|
|
24
26
|
_counterCache: boolean;
|
|
25
27
|
_dependent: string | undefined;
|
|
@@ -33,6 +35,8 @@ export default class VelociousDatabaseRecordBaseRelationship {
|
|
|
33
35
|
_scope: RelationshipScopeCallback | undefined;
|
|
34
36
|
through: string | undefined;
|
|
35
37
|
type: string;
|
|
38
|
+
/** @returns {boolean} Whether this relationship auto-batch-preloads siblings on lazy access. */
|
|
39
|
+
getAutoload(): boolean;
|
|
36
40
|
getConfiguration(): import("../../../configuration.js").default;
|
|
37
41
|
/** @returns {boolean} Whether a counter cache column is synced on the parent. */
|
|
38
42
|
getCounterCache(): boolean;
|
|
@@ -74,6 +78,10 @@ export default class VelociousDatabaseRecordBaseRelationship {
|
|
|
74
78
|
}
|
|
75
79
|
export type RelationshipScopeCallback = (query: import("../../query/model-class-query.js").default<any>) => (import("../../query/model-class-query.js").default<any> | void);
|
|
76
80
|
export type RelationshipBaseArgsType = {
|
|
81
|
+
/**
|
|
82
|
+
* - Whether to auto-batch-preload siblings when this relationship is lazy-loaded. Default true.
|
|
83
|
+
*/
|
|
84
|
+
autoload?: boolean | undefined;
|
|
77
85
|
/**
|
|
78
86
|
* - Name of the related model class.
|
|
79
87
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/relationships/base.js"],"names":[],"mappings":"AAKA;;GAEG;AACH
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/relationships/base.js"],"names":[],"mappings":"AAKA;;GAEG;AACH;;;;;;;;;;;;;;;;GAgBG;AAEH;IACE,kFAAkF;IAClF,sLADY,wBAAwB,EAyBnC;IAdC,mBAAmC;IACnC,8BAA0B;IAC1B,uBAA0C;IAC1C,+BAA2B;IAC3B,+BAA4B;IAC5B,+BAA2B;IAC3B,wDAAkB;IAClB,iDAA4B;IAC5B,kCAA+B;IAC/B,oBAA6B;IAC7B,yBAAwC;IACxC,8CAAmB;IACnB,4BAAsB;IACtB,aAAgB;IAGlB,gGAAgG;IAChG,eADc,OAAO,CACkB;IAEvC,gEAAiE;IAEjE,iFAAiF;IACjF,mBADc,OAAO,CAC0B;IAE/C,sIAAsI;IACtI,gBADc,MAAM,GAAG,SAAS,CACS;IAEzC;;;OAGG;IACH,iBAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,gBAFa,MAAM,GAAG,SAAS,CAI9B;IAED,0EAA0E;IAC1E,iBADc,cAAc,aAAa,EAAE,OAAO,CACR;IAE1C,4FAA4F;IAC5F,uBADc,MAAM,CACkC;IAEtD,6EAA6E;IAC7E,YADc,yBAAyB,GAAG,SAAS,CAClB;IAEjC;;;;OAIG;IACH,WAJa,CAAC,SACH,CAAC,GACC,CAAC,CAUb;IAED,iDAAiD;IACjD,kBADc,OAAO,CAGpB;IAED,wDAAwD;IACxD,4BADc,MAAM,CAmBnB;IATK,2CAAiE;IAWvE,oEAAoE;IACpE,iBADc,MAAM,CACuB;IAE3C,+HAA+H;IAC/H,WADc,MAAM,CACU;IAE9B,mMAAmM;IACnM,uBADc,cAAc,aAAa,EAAE,OAAO,GAAG,SAAS,CAW7D;CACF;wCA/IY,CAAC,KAAK,EAAE,OAAO,kCAAkC,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,kCAAkC,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;iBAQnI,MAAM,GAAG,SAAS;;;;;;;;;;;;gBAGlB,cAAc,aAAa,EAAE,OAAO;;;;;;;;;;;;sBAGpC,MAAM;;;;;;;;;;;;UAGN,MAAM"}
|
|
@@ -6,6 +6,7 @@ import * as inflection from "inflection";
|
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
8
8
|
* @typedef {object} RelationshipBaseArgsType
|
|
9
|
+
* @property {boolean} [autoload] - Whether to auto-batch-preload siblings when this relationship is lazy-loaded. Default true.
|
|
9
10
|
* @property {string} [className] - Name of the related model class.
|
|
10
11
|
* @property {boolean} [counterCache] - Auto-sync parent count column on create/update/destroy.
|
|
11
12
|
* @property {string} [dependent] - Dependent action when parent is destroyed.
|
|
@@ -22,7 +23,7 @@ import * as inflection from "inflection";
|
|
|
22
23
|
*/
|
|
23
24
|
export default class VelociousDatabaseRecordBaseRelationship {
|
|
24
25
|
/** @param {RelationshipBaseArgsType} args - Relationship definition arguments. */
|
|
25
|
-
constructor({ className, counterCache, dependent, foreignKey, inverseOf, klass, modelClass, primaryKey = "id", polymorphic, relationshipName, scope, through, type, ...restArgs }) {
|
|
26
|
+
constructor({ autoload, className, counterCache, dependent, foreignKey, inverseOf, klass, modelClass, primaryKey = "id", polymorphic, relationshipName, scope, through, type, ...restArgs }) {
|
|
26
27
|
restArgsError(restArgs);
|
|
27
28
|
if (!modelClass)
|
|
28
29
|
throw new Error(`'modelClass' wasn't given for ${relationshipName}`);
|
|
@@ -31,6 +32,7 @@ export default class VelociousDatabaseRecordBaseRelationship {
|
|
|
31
32
|
if (className == "EventSery") {
|
|
32
33
|
throw new Error(`Invalid model name: ${className}`);
|
|
33
34
|
}
|
|
35
|
+
this._autoload = autoload !== false;
|
|
34
36
|
this.className = className;
|
|
35
37
|
this._counterCache = counterCache || false;
|
|
36
38
|
this._dependent = dependent;
|
|
@@ -45,6 +47,8 @@ export default class VelociousDatabaseRecordBaseRelationship {
|
|
|
45
47
|
this.through = through;
|
|
46
48
|
this.type = type;
|
|
47
49
|
}
|
|
50
|
+
/** @returns {boolean} Whether this relationship auto-batch-preloads siblings on lazy access. */
|
|
51
|
+
getAutoload() { return this._autoload; }
|
|
48
52
|
getConfiguration() { return this.modelClass._getConfiguration(); }
|
|
49
53
|
/** @returns {boolean} Whether a counter cache column is synced on the parent. */
|
|
50
54
|
getCounterCache() { return this._counterCache; }
|
|
@@ -121,4 +125,4 @@ export default class VelociousDatabaseRecordBaseRelationship {
|
|
|
121
125
|
throw new Error("Couldn't figure out the target model class");
|
|
122
126
|
}
|
|
123
127
|
}
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9yZWNvcmQvcmVsYXRpb25zaGlwcy9iYXNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGFBQWEsTUFBTSxtQ0FBbUMsQ0FBQTtBQUM3RCxPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUV4Qzs7R0FFRztBQUNIOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE1BQU0sQ0FBQyxPQUFPLE9BQU8sdUNBQXVDO0lBQzFELGtGQUFrRjtJQUNsRixZQUFZLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsR0FBRyxJQUFJLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxFQUFDO1FBQzdLLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUV2QixJQUFJLENBQUMsVUFBVTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtRQUNyRixJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsV0FBVztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0RBQWdELFVBQVUsQ0FBQyxJQUFJLElBQUksZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO1FBRWhKLElBQUksU0FBUyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFDckQsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxJQUFJLEtBQUssQ0FBQTtRQUMxQyxJQUFJLENBQUMs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c0IsR0FBRyxHQUFHLGVBQWUsT0FBTyxDQUFBO1lBQ3pELENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUE7SUFDcEMsQ0FBQztJQUVELG9FQUFvRTtJQUNwRSxhQUFhLEtBQUssT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFBLENBQUMsQ0FBQztJQUUzQywrSEFBK0g7SUFDL0gsT0FBTyxLQUFLLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQSxDQUFDLENBQUM7SUFFOUIsbU1BQW1NO0lBQ25NLG1CQUFtQjtRQUNqQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ3RELE9BQU8sU0FBUyxDQUFBO1FBQ2xCLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMxQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDOUQsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUNuQixDQUFDO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFBO0lBQy9ELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgcmVzdEFyZ3NFcnJvciBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvcmVzdC1hcmdzLWVycm9yLmpzXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuXG4vKipcbiAqIEB0eXBlZGVmIHsocXVlcnk6IGltcG9ydChcIi4uLy4uL3F1ZXJ5L21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQ8YW55PikgPT4gKGltcG9ydChcIi4uLy4uL3F1ZXJ5L21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQ8YW55PiB8IHZvaWQpfSBSZWxhdGlvbnNoaXBTY29wZUNhbGxiYWNrXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gUmVsYXRpb25zaGlwQmFzZUFyZ3NUeXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2NsYXNzTmFtZV0gLSBOYW1lIG9mIHRoZSByZWxhdGVkIG1vZGVsIGNsYXNzLlxuICogQHByb3BlcnR5IHtib29sZWFufSBbY291bnRlckNhY2hlXSAtIEF1dG8tc3luYyBwYXJlbnQgY291bnQgY29sdW1uIG9uIGNyZWF0ZS91cGRhdGUvZGVzdHJveS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZGVwZW5kZW50XSAtIERlcGVuZGVudCBhY3Rpb24gd2hlbiBwYXJlbnQgaXMgZGVzdHJveWVkLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCB1bmRlZmluZWR9IFtmb3JlaWduS2V5XSAtIEV4cGxpY2l0IGZvcmVpZ24ga2V5IGNvbHVtbiBuYW1lLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtpbnZlcnNlT2ZdIC0gSW52ZXJzZSByZWxhdGlvbnNoaXAgbmFtZSBvbiB0aGUgcmVsYXRlZCBtb2RlbC5cbiAqIEBwcm9wZXJ0eSB7dHlwZW9mIGltcG9ydChcIi4uL2luZGV4LmpzXCIpLmRlZmF1bHR9IFtrbGFzc10gLSBSZWxhdGVkIG1vZGVsIGNsYXNzLlxuICogQHByb3BlcnR5IHt0eXBlb2YgaW1wb3J0KFwiLi4vaW5kZXguanNcIikuZGVmYXVsdH0gbW9kZWxDbGFzcyAtIE93bmluZyBtb2RlbCBjbGFzcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbcHJpbWFyeUtleV0gLSBQcmltYXJ5IGtleSBjb2x1bW4gb24gdGhlIG93bmluZyBtb2RlbC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3BvbHltb3JwaGljXSAtIFdoZXRoZXIgdGhlIHJlbGF0aW9uc2hpcCBpcyBwb2x5bW9ycGhpYy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSByZWxhdGlvbnNoaXBOYW1lIC0gTmFtZSBvZiB0aGUgcmVsYXRpb25zaGlwIG9uIHRoZSBtb2RlbC5cbiAqIEBwcm9wZXJ0eSB7UmVsYXRpb25zaGlwU2NvcGVDYWxsYmFja30gW3Njb3BlXSAtIE9wdGlvbmFsIHNjb3BlIGNhbGxiYWNrIGZvciB0aGUgcmVsYXRpb25zaGlwLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFt0aHJvdWdoXSAtIE5hbWUgb2YgdGhlIHRocm91Z2ggYXNzb2NpYXRpb24uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZSAtIFJlbGF0aW9uc2hpcCB0eXBlIChlLmcuIFwiaGFzTWFueVwiKS5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVJlY29yZEJhc2VSZWxhdGlvbnNoaXAge1xuICAvKiogQHBhcmFtIHtSZWxhdGlvbnNoaXBCYXNlQXJnc1R5cGV9IGFyZ3MgLSBSZWxhdGlvbnNoaXAgZGVmaW5pdGlvbiBhcmd1bWVudHMuICovXG4gIGNvbnN0cnVjdG9yKHtjbGFzc05hbWUsIGNvdW50ZXJDYWNoZSwgZGVwZW5kZW50LCBmb3JlaWduS2V5LCBpbnZlcnNlT2YsIGtsYXNzLCBtb2RlbENsYXNzLCBwcmltYXJ5S2V5ID0gXCJpZFwiLCBwb2x5bW9ycGhpYywgcmVsYXRpb25zaGlwTmFtZSwgc2NvcGUsIHRocm91Z2gsIHR5cGUsIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgICBpZiAoIW1vZGVsQ2xhc3MpIHRocm93IG5ldyBFcnJvcihgJ21vZGVsQ2xhc3MnIHdhc24ndCBnaXZlbiBmb3IgJHtyZWxhdGlvbnNoaXBOYW1lfWApXG4gICAgaWYgKCFjbGFzc05hbWUgJiYgIWtsYXNzICYmICFwb2x5bW9ycGhpYykgdGhyb3cgbmV3IEVycm9yKGBOZWl0aGVyICdjbGFzc05hbWUnIG9yICdrbGFzcycgd2FzIGdpdmVuIGZvciAke21vZGVsQ2xhc3MubmFtZX0jJHtyZWxhdGlvbnNoaXBOYW1lfWApXG5cbiAgICBpZiAoY2xhc3NOYW1lID09IFwiRXZlbnRTZXJ5XCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBtb2RlbCBuYW1lOiAke2NsYXNzTmFtZX1gKVxuICAgIH1cblxuICAgIHRoaXMuY2xhc3NOYW1lID0gY2xhc3NOYW1lXG4gICAgdGhpcy5fY291bnRlckNhY2hlID0gY291bnRlckNhY2hlIHx8IGZhbHNlXG4gICAgdGhpcy5fZGVwZW5kZW50ID0gZGVwZW5kZW50XG4gICAgdGhpcy5mb3JlaWduS2V5ID0gZm9yZWlnbktleVxuICAgIHRoaXMuX2ludmVyc2VPZiA9IGludmVyc2VPZlxuICAgIHRoaXMua2xhc3MgPSBrbGFzc1xuICAgIHRoaXMubW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NcbiAgICB0aGlzLl9wb2x5bW9ycGhpYyA9IHBvbHltb3JwaGljXG4gICAgdGhpcy5fcHJpbWFyeUtleSA9IHByaW1hcnlLZXlcbiAgICB0aGlzLnJlbGF0aW9uc2hpcE5hbWUgPSByZWxhdGlvbnNoaXBOYW1lXG4gICAgdGhpcy5fc2NvcGUgPSBzY29wZVxuICAgIHRoaXMudGhyb3VnaCA9IHRocm91Z2hcbiAgICB0aGlzLnR5cGUgPSB0eXBlXG4gIH1cblxuICBnZXRDb25maWd1cmF0aW9uKCkgeyByZXR1cm4gdGhpcy5tb2RlbENsYXNzLl9nZXRDb25maWd1cmF0aW9uKCkgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBhIGNvdW50ZXIgY2FjaGUgY29sdW1uIGlzIHN5bmNlZCBvbiB0aGUgcGFyZW50LiAqL1xuICBnZXRDb3VudGVyQ2FjaGUoKSB7IHJldHVybiB0aGlzLl9jb3VudGVyQ2FjaGUgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSBXaGF0IHdpbGwgYmUgZG9uZSB3aGVuIHRoZSBwYXJlbnQgcmVjb3JkIGlzIGRlc3Ryb3llZC4gRS5nLiBcImRlc3Ryb3lcIiwgXCJudWxsaWZ5XCIsIFwicmVzdHJpY3RcIiBldGMuICovXG4gIGdldERlcGVuZGVudCgpIHsgcmV0dXJuIHRoaXMuX2RlcGVuZGVudCB9XG5cbiAgLyoqXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgbmFtZSBvZiB0aGUgZm9yZWlnbiBrZXksIGUuZy4gXCJ1c2VyX2lkXCIsIFwicG9zdF9pZFwiIGV0Yy5cbiAgICovXG4gIGdldEZvcmVpZ25LZXkoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiZ2V0Rm9yZWlnbktleSBub3QgaW1wbGVtZW50ZWRcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH0gVGhlIG5hbWUgb2YgdGhlIGludmVyc2UgcmVsYXRpb25zaGlwLCBlLmcuIFwicG9zdHNcIiwgXCJjb21tZW50c1wiIGV0Yy5cbiAgICovXG4gIGdldEludmVyc2VPZigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJnZXRJbnZlcnNlT2Ygbm90IGltcGxlbWVudGVkXCIpXG4gIH1cblxuICAvKiogQHJldHVybnMge3R5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0fSAtIFRoZSBtb2RlbCBjbGFzcy4gICovXG4gIGdldE1vZGVsQ2xhc3MoKSB7IHJldHVybiB0aGlzLm1vZGVsQ2xhc3MgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgbmFtZSBvZiB0aGUgcmVsYXRpb25zaGlwLCBlLmcuIFwicG9zdHNcIiwgXCJ1c2VyXCIsIFwiY29tbWVudHNcIiBldGMuICovXG4gIGdldFJlbGF0aW9uc2hpcE5hbWUoKSB7IHJldHVybiB0aGlzLnJlbGF0aW9uc2hpcE5hbWUgfVxuXG4gIC8qKiBAcmV0dXJucyB7UmVsYXRpb25zaGlwU2NvcGVDYWxsYmFjayB8IHVuZGVmaW5lZH0gLSBUaGUgc2NvcGUgY2FsbGJhY2suICovXG4gIGdldFNjb3BlKCkgeyByZXR1cm4gdGhpcy5fc2NvcGUgfVxuXG4gIC8qKlxuICAgKiBAdGVtcGxhdGUgVFxuICAgKiBAcGFyYW0ge1R9IHF1ZXJ5IC0gUXVlcnkgaW5zdGFuY2UuXG4gICAqIEByZXR1cm5zIHtUfSAtIFNjb3BlZCBxdWVyeS5cbiAgICovXG4gIGFwcGx5U2NvcGUocXVlcnkpIHtcbiAgICBjb25zdCBzY29wZSA9IHRoaXMuZ2V0U2NvcGUoKVxuXG4gICAgaWYgKCFzY29wZSkgcmV0dXJuIHF1ZXJ5XG5cbiAgICBjb25zdCBzY29wZWRRdWVyeSA9IC8qKiBAdHlwZSB7VCB8IHZvaWR9ICovIChzY29wZS5jYWxsKHF1ZXJ5LCAvKiogQHR5cGUge2ltcG9ydChcIi4uLy4uL3F1ZXJ5L21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQ8YW55Pn0gKi8gKHF1ZXJ5KSkpXG5cbiAgICByZXR1cm4gc2NvcGVkUXVlcnkgfHwgcXVlcnlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIHBvbHltb3JwaGljLiAgKi9cbiAgZ2V0UG9seW1vcnBoaWMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BvbHltb3JwaGljIHx8IGZhbHNlXG4gIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gLSBUaGUgcG9seW1vcnBoaWMgdHlwZSBjb2x1bW4uICAqL1xuICBnZXRQb2x5bW9ycGhpY1R5cGVDb2x1bW4oKSB7XG4gICAgaWYgKCF0aGlzLmdldFBvbHltb3JwaGljKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLm1vZGVsQ2xhc3MubmFtZX0jJHt0aGlzLnJlbGF0aW9uc2hpcE5hbWV9IGlzbid0IHBvbHltb3JwaGljYClcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3BvbHltb3JwaGljVHlwZUNvbHVtbikge1xuICAgICAgY29uc3QgZm9yZWlnbktleSA9IHRoaXMuZ2V0Rm9yZWlnbktleSgpXG5cbiAgICAgIGlmIChmb3JlaWduS2V5ICYmIGZvcmVpZ25LZXkuZW5kc1dpdGgoXCJfaWRcIikpIHtcbiAgICAgICAgdGhpcy5fcG9seW1vcnBoaWNUeXBlQ29sdW1uID0gZm9yZWlnbktleS5yZXBsYWNlKC9faWQkLywgXCJfdHlwZVwiKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdW5kZXJzY29yZWROYW1lID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKHRoaXMuZ2V0UmVsYXRpb25zaGlwTmFtZSgpKVxuXG4gICAgICAgIHRoaXMuX3BvbHltb3JwaGljVHlwZUNvbHVtbiA9IGAke3VuZGVyc2NvcmVkTmFtZX1fdHlwZWBcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcG9seW1vcnBoaWNUeXBlQ29sdW1uXG4gIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gVGhlIG5hbWUgb2YgdGhlIGZvcmVpZ24ga2V5LCBlLmcuIFwiaWRcIiBldGMuICovXG4gIGdldFByaW1hcnlLZXkoKSB7IHJldHVybiB0aGlzLl9wcmltYXJ5S2V5IH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gVGhlIHR5cGUgb2YgdGhlIHJlbGF0aW9uc2hpcCwgZS5nLiBcImhhc19tYW55XCIsIFwiYmVsb25nc190b1wiLCBcImhhc19vbmVcIiwgXCJoYXNfYW5kX2JlbG9uZ3NfdG9fbWFueVwiIGV0Yy4gKi9cbiAgZ2V0VHlwZSgpIHsgcmV0dXJuIHRoaXMudHlwZSB9XG5cbiAgLyoqIEByZXR1cm5zIHt0eXBlb2YgaW1wb3J0KFwiLi4vaW5kZXguanNcIikuZGVmYXVsdCB8IHVuZGVmaW5lZH0gVGhlIHRhcmdldCBtb2RlbCBjbGFzcyBmb3IgdGhpcyByZWxhdGlvbnNoaXAsIGUuZy4gaWYgdGhlIHJlbGF0aW9uc2hpcCBpcyBcInBvc3RzXCIgdGhlbiB0aGUgdGFyZ2V0IG1vZGVsIGNsYXNzIGlzIHRoZSBQb3N0IGNsYXNzLiAqL1xuICBnZXRUYXJnZXRNb2RlbENsYXNzKCkge1xuICAgIGlmICh0aGlzLmdldFBvbHltb3JwaGljKCkgJiYgdGhpcy50eXBlID09IFwiYmVsb25nc1RvXCIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2xhc3NOYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDb25maWd1cmF0aW9uKCkuZ2V0TW9kZWxDbGFzcyh0aGlzLmNsYXNzTmFtZSlcbiAgICB9IGVsc2UgaWYgKHRoaXMua2xhc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLmtsYXNzXG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmlndXJlIG91dCB0aGUgdGFyZ2V0IG1vZGVsIGNsYXNzXCIpXG4gIH1cbn1cbiJdfQ==
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9yZWNvcmQvcmVsYXRpb25zaGlwcy9iYXNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGFBQWEsTUFBTSxtQ0FBbUMsQ0FBQTtBQUM3RCxPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUV4Qzs7R0FFRztBQUNIOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBRUgsTUFBTSxDQUFDLE9BQU8sT0FBTyx1Q0FBdUM7SUFDMUQsa0ZBQWtGO0lBQ2xGLFlBQVksRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsR0FBRyxJQUFJLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxFQUFDO1FBQ3ZMLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUV2QixJQUFJLENBQUMsVUFBVTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtRQUNyRixJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsV0FBVztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0RBQWdELFVBQVUsQ0FBQyxJQUFJLElBQUksZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO1FBRWhKLElBQUksU0FBUyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFDckQsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxLQUFLLEtBQUssQ0FBQTtRQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQTtRQUMx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LENBQUE7WUFDbkUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQTtnQkFFekUsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEdBQUcsZUFBZSxPQUFPLENBQUE7WUFDekQsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsb0VBQW9FO0lBQ3BFLGFBQWEsS0FBSyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUEsQ0FBQyxDQUFDO0lBRTNDLCtIQUErSDtJQUMvSCxPQUFPLEtBQUssT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQztJQUU5QixtTUFBbU07SUFDbk0sbUJBQW1CO1FBQ2pCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksV0FBVyxFQUFFLENBQUM7WUFDdEQsT0FBTyxTQUFTLENBQUE7UUFDbEIsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUM5RCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBQ25CLENBQUM7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUE7SUFDL0QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi8uLi8uLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5cbi8qKlxuICogQHR5cGVkZWYgeyhxdWVyeTogaW1wb3J0KFwiLi4vLi4vcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDxhbnk+KSA9PiAoaW1wb3J0KFwiLi4vLi4vcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDxhbnk+IHwgdm9pZCl9IFJlbGF0aW9uc2hpcFNjb3BlQ2FsbGJhY2tcbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBSZWxhdGlvbnNoaXBCYXNlQXJnc1R5cGVcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2F1dG9sb2FkXSAtIFdoZXRoZXIgdG8gYXV0by1iYXRjaC1wcmVsb2FkIHNpYmxpbmdzIHdoZW4gdGhpcyByZWxhdGlvbnNoaXAgaXMgbGF6eS1sb2FkZWQuIERlZmF1bHQgdHJ1ZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbY2xhc3NOYW1lXSAtIE5hbWUgb2YgdGhlIHJlbGF0ZWQgbW9kZWwgY2xhc3MuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtjb3VudGVyQ2FjaGVdIC0gQXV0by1zeW5jIHBhcmVudCBjb3VudCBjb2x1bW4gb24gY3JlYXRlL3VwZGF0ZS9kZXN0cm95LlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtkZXBlbmRlbnRdIC0gRGVwZW5kZW50IGFjdGlvbiB3aGVuIHBhcmVudCBpcyBkZXN0cm95ZWQuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IHVuZGVmaW5lZH0gW2ZvcmVpZ25LZXldIC0gRXhwbGljaXQgZm9yZWlnbiBrZXkgY29sdW1uIG5hbWUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2ludmVyc2VPZl0gLSBJbnZlcnNlIHJlbGF0aW9uc2hpcCBuYW1lIG9uIHRoZSByZWxhdGVkIG1vZGVsLlxuICogQHByb3BlcnR5IHt0eXBlb2YgaW1wb3J0KFwiLi4vaW5kZXguanNcIikuZGVmYXVsdH0gW2tsYXNzXSAtIFJlbGF0ZWQgbW9kZWwgY2xhc3MuXG4gKiBAcHJvcGVydHkge3R5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0fSBtb2RlbENsYXNzIC0gT3duaW5nIG1vZGVsIGNsYXNzLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtwcmltYXJ5S2V5XSAtIFByaW1hcnkga2V5IGNvbHVtbiBvbiB0aGUgb3duaW5nIG1vZGVsLlxuICogQHByb3BlcnR5IHtib29sZWFufSBbcG9seW1vcnBoaWNdIC0gV2hldGhlciB0aGUgcmVsYXRpb25zaGlwIGlzIHBvbHltb3JwaGljLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHJlbGF0aW9uc2hpcE5hbWUgLSBOYW1lIG9mIHRoZSByZWxhdGlvbnNoaXAgb24gdGhlIG1vZGVsLlxuICogQHByb3BlcnR5IHtSZWxhdGlvbnNoaXBTY29wZUNhbGxiYWNrfSBbc2NvcGVdIC0gT3B0aW9uYWwgc2NvcGUgY2FsbGJhY2sgZm9yIHRoZSByZWxhdGlvbnNoaXAuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3Rocm91Z2hdIC0gTmFtZSBvZiB0aGUgdGhyb3VnaCBhc3NvY2lhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0eXBlIC0gUmVsYXRpb25zaGlwIHR5cGUgKGUuZy4gXCJoYXNNYW55XCIpLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlUmVjb3JkQmFzZVJlbGF0aW9uc2hpcCB7XG4gIC8qKiBAcGFyYW0ge1JlbGF0aW9uc2hpcEJhc2VBcmdzVHlwZX0gYXJncyAtIFJlbGF0aW9uc2hpcCBkZWZpbml0aW9uIGFyZ3VtZW50cy4gKi9cbiAgY29uc3RydWN0b3Ioe2F1dG9sb2FkLCBjbGFzc05hbWUsIGNvdW50ZXJDYWNoZSwgZGVwZW5kZW50LCBmb3JlaWduS2V5LCBpbnZlcnNlT2YsIGtsYXNzLCBtb2RlbENsYXNzLCBwcmltYXJ5S2V5ID0gXCJpZFwiLCBwb2x5bW9ycGhpYywgcmVsYXRpb25zaGlwTmFtZSwgc2NvcGUsIHRocm91Z2gsIHR5cGUsIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgICBpZiAoIW1vZGVsQ2xhc3MpIHRocm93IG5ldyBFcnJvcihgJ21vZGVsQ2xhc3MnIHdhc24ndCBnaXZlbiBmb3IgJHtyZWxhdGlvbnNoaXBOYW1lfWApXG4gICAgaWYgKCFjbGFzc05hbWUgJiYgIWtsYXNzICYmICFwb2x5bW9ycGhpYykgdGhyb3cgbmV3IEVycm9yKGBOZWl0aGVyICdjbGFzc05hbWUnIG9yICdrbGFzcycgd2FzIGdpdmVuIGZvciAke21vZGVsQ2xhc3MubmFtZX0jJHtyZWxhdGlvbnNoaXBOYW1lfWApXG5cbiAgICBpZiAoY2xhc3NOYW1lID09IFwiRXZlbnRTZXJ5XCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBtb2RlbCBuYW1lOiAke2NsYXNzTmFtZX1gKVxuICAgIH1cblxuICAgIHRoaXMuX2F1dG9sb2FkID0gYXV0b2xvYWQgIT09IGZhbHNlXG4gICAgdGhpcy5jbGFzc05hbWUgPSBjbGFzc05hbWVcbiAgICB0aGlzLl9jb3VudGVyQ2FjaGUgPSBjb3VudGVyQ2FjaGUgfHwgZmFsc2VcbiAgICB0aGlzLl9kZXBlbmRlbnQgPSBkZXBlbmRlbnRcbiAgICB0aGlzLmZvcmVpZ25LZXkgPSBmb3JlaWduS2V5XG4gICAgdGhpcy5faW52ZXJzZU9mID0gaW52ZXJzZU9mXG4gICAgdGhpcy5rbGFzcyA9IGtsYXNzXG4gICAgdGhpcy5tb2RlbENsYXNzID0gbW9kZWxDbGFzc1xuICAgIHRoaXMuX3BvbHltb3JwaGljID0gcG9seW1vcnBoaWNcbiAgICB0aGlzLl9wcmltYXJ5S2V5ID0gcHJpbWFyeUtleVxuICAgIHRoaXMucmVsYXRpb25zaGlwTmFtZSA9IHJlbGF0aW9uc2hpcE5hbWVcbiAgICB0aGlzLl9zY29wZSA9IHNjb3BlXG4gICAgdGhpcy50aHJvdWdoID0gdGhyb3VnaFxuICAgIHRoaXMudHlwZSA9IHR5cGVcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGlzIHJlbGF0aW9uc2hpcCBhdXRvLWJhdGNoLXByZWxvYWRzIHNpYmxpbmdzIG9uIGxhenkgYWNjZXNzLiAqL1xuICBnZXRBdXRvbG9hZCgpIHsgcmV0dXJuIHRoaXMuX2F1dG9sb2FkIH1cblxuICBnZXRDb25maWd1cmF0aW9uKCkgeyByZXR1cm4gdGhpcy5tb2RlbENsYXNzLl9nZXRDb25maWd1cmF0aW9uKCkgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBhIGNvdW50ZXIgY2FjaGUgY29sdW1uIGlzIHN5bmNlZCBvbiB0aGUgcGFyZW50LiAqL1xuICBnZXRDb3VudGVyQ2FjaGUoKSB7IHJldHVybiB0aGlzLl9jb3VudGVyQ2FjaGUgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSBXaGF0IHdpbGwgYmUgZG9uZSB3aGVuIHRoZSBwYXJlbnQgcmVjb3JkIGlzIGRlc3Ryb3llZC4gRS5nLiBcImRlc3Ryb3lcIiwgXCJudWxsaWZ5XCIsIFwicmVzdHJpY3RcIiBldGMuICovXG4gIGdldERlcGVuZGVudCgpIHsgcmV0dXJuIHRoaXMuX2RlcGVuZGVudCB9XG5cbiAgLyoqXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgbmFtZSBvZiB0aGUgZm9yZWlnbiBrZXksIGUuZy4gXCJ1c2VyX2lkXCIsIFwicG9zdF9pZFwiIGV0Yy5cbiAgICovXG4gIGdldEZvcmVpZ25LZXkoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiZ2V0Rm9yZWlnbktleSBub3QgaW1wbGVtZW50ZWRcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH0gVGhlIG5hbWUgb2YgdGhlIGludmVyc2UgcmVsYXRpb25zaGlwLCBlLmcuIFwicG9zdHNcIiwgXCJjb21tZW50c1wiIGV0Yy5cbiAgICovXG4gIGdldEludmVyc2VPZigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJnZXRJbnZlcnNlT2Ygbm90IGltcGxlbWVudGVkXCIpXG4gIH1cblxuICAvKiogQHJldHVybnMge3R5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0fSAtIFRoZSBtb2RlbCBjbGFzcy4gICovXG4gIGdldE1vZGVsQ2xhc3MoKSB7IHJldHVybiB0aGlzLm1vZGVsQ2xhc3MgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgbmFtZSBvZiB0aGUgcmVsYXRpb25zaGlwLCBlLmcuIFwicG9zdHNcIiwgXCJ1c2VyXCIsIFwiY29tbWVudHNcIiBldGMuICovXG4gIGdldFJlbGF0aW9uc2hpcE5hbWUoKSB7IHJldHVybiB0aGlzLnJlbGF0aW9uc2hpcE5hbWUgfVxuXG4gIC8qKiBAcmV0dXJucyB7UmVsYXRpb25zaGlwU2NvcGVDYWxsYmFjayB8IHVuZGVmaW5lZH0gLSBUaGUgc2NvcGUgY2FsbGJhY2suICovXG4gIGdldFNjb3BlKCkgeyByZXR1cm4gdGhpcy5fc2NvcGUgfVxuXG4gIC8qKlxuICAgKiBAdGVtcGxhdGUgVFxuICAgKiBAcGFyYW0ge1R9IHF1ZXJ5IC0gUXVlcnkgaW5zdGFuY2UuXG4gICAqIEByZXR1cm5zIHtUfSAtIFNjb3BlZCBxdWVyeS5cbiAgICovXG4gIGFwcGx5U2NvcGUocXVlcnkpIHtcbiAgICBjb25zdCBzY29wZSA9IHRoaXMuZ2V0U2NvcGUoKVxuXG4gICAgaWYgKCFzY29wZSkgcmV0dXJuIHF1ZXJ5XG5cbiAgICBjb25zdCBzY29wZWRRdWVyeSA9IC8qKiBAdHlwZSB7VCB8IHZvaWR9ICovIChzY29wZS5jYWxsKHF1ZXJ5LCAvKiogQHR5cGUge2ltcG9ydChcIi4uLy4uL3F1ZXJ5L21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQ8YW55Pn0gKi8gKHF1ZXJ5KSkpXG5cbiAgICByZXR1cm4gc2NvcGVkUXVlcnkgfHwgcXVlcnlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIHBvbHltb3JwaGljLiAgKi9cbiAgZ2V0UG9seW1vcnBoaWMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BvbHltb3JwaGljIHx8IGZhbHNlXG4gIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gLSBUaGUgcG9seW1vcnBoaWMgdHlwZSBjb2x1bW4uICAqL1xuICBnZXRQb2x5bW9ycGhpY1R5cGVDb2x1bW4oKSB7XG4gICAgaWYgKCF0aGlzLmdldFBvbHltb3JwaGljKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLm1vZGVsQ2xhc3MubmFtZX0jJHt0aGlzLnJlbGF0aW9uc2hpcE5hbWV9IGlzbid0IHBvbHltb3JwaGljYClcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3BvbHltb3JwaGljVHlwZUNvbHVtbikge1xuICAgICAgY29uc3QgZm9yZWlnbktleSA9IHRoaXMuZ2V0Rm9yZWlnbktleSgpXG5cbiAgICAgIGlmIChmb3JlaWduS2V5ICYmIGZvcmVpZ25LZXkuZW5kc1dpdGgoXCJfaWRcIikpIHtcbiAgICAgICAgdGhpcy5fcG9seW1vcnBoaWNUeXBlQ29sdW1uID0gZm9yZWlnbktleS5yZXBsYWNlKC9faWQkLywgXCJfdHlwZVwiKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdW5kZXJzY29yZWROYW1lID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKHRoaXMuZ2V0UmVsYXRpb25zaGlwTmFtZSgpKVxuXG4gICAgICAgIHRoaXMuX3BvbHltb3JwaGljVHlwZUNvbHVtbiA9IGAke3VuZGVyc2NvcmVkTmFtZX1fdHlwZWBcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcG9seW1vcnBoaWNUeXBlQ29sdW1uXG4gIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gVGhlIG5hbWUgb2YgdGhlIGZvcmVpZ24ga2V5LCBlLmcuIFwiaWRcIiBldGMuICovXG4gIGdldFByaW1hcnlLZXkoKSB7IHJldHVybiB0aGlzLl9wcmltYXJ5S2V5IH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gVGhlIHR5cGUgb2YgdGhlIHJlbGF0aW9uc2hpcCwgZS5nLiBcImhhc19tYW55XCIsIFwiYmVsb25nc190b1wiLCBcImhhc19vbmVcIiwgXCJoYXNfYW5kX2JlbG9uZ3NfdG9fbWFueVwiIGV0Yy4gKi9cbiAgZ2V0VHlwZSgpIHsgcmV0dXJuIHRoaXMudHlwZSB9XG5cbiAgLyoqIEByZXR1cm5zIHt0eXBlb2YgaW1wb3J0KFwiLi4vaW5kZXguanNcIikuZGVmYXVsdCB8IHVuZGVmaW5lZH0gVGhlIHRhcmdldCBtb2RlbCBjbGFzcyBmb3IgdGhpcyByZWxhdGlvbnNoaXAsIGUuZy4gaWYgdGhlIHJlbGF0aW9uc2hpcCBpcyBcInBvc3RzXCIgdGhlbiB0aGUgdGFyZ2V0IG1vZGVsIGNsYXNzIGlzIHRoZSBQb3N0IGNsYXNzLiAqL1xuICBnZXRUYXJnZXRNb2RlbENsYXNzKCkge1xuICAgIGlmICh0aGlzLmdldFBvbHltb3JwaGljKCkgJiYgdGhpcy50eXBlID09IFwiYmVsb25nc1RvXCIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2xhc3NOYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDb25maWd1cmF0aW9uKCkuZ2V0TW9kZWxDbGFzcyh0aGlzLmNsYXNzTmFtZSlcbiAgICB9IGVsc2UgaWYgKHRoaXMua2xhc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLmtsYXNzXG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmlndXJlIG91dCB0aGUgdGFyZ2V0IG1vZGVsIGNsYXNzXCIpXG4gIH1cbn1cbiJdfQ==
|