ts2famix 2.0.1 → 2.0.4

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.
@@ -1,7 +1,42 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.FamixRepository = void 0;
4
37
  const famix_1 = require("./model/famix");
38
+ const Famix = __importStar(require("./model/famix"));
39
+ const analyze_1 = require("../../analyze");
5
40
  /**
6
41
  * This class is used to store all Famix elements
7
42
  */
@@ -49,9 +84,25 @@ class FamixRepository {
49
84
  */
50
85
  getFamixEntityByFullyQualifiedName(fullyQualifiedName) {
51
86
  const allEntities = Array.from(this.elements.values()).filter(e => e instanceof famix_1.NamedEntity);
52
- const entity = allEntities.find(e => e.fullyQualifiedName === fullyQualifiedName);
87
+ const entity = allEntities.find(e =>
88
+ // {console.log(`namedEntity: ${e.fullyQualifiedName}`);
89
+ // return
90
+ e.fullyQualifiedName === fullyQualifiedName
91
+ // }
92
+ );
53
93
  return entity;
54
94
  }
95
+ // Method to get Famix access by accessor and variable
96
+ getFamixAccessByAccessorAndVariable(accessor, variable) {
97
+ // Iterate through the list of Famix accesses to find the matching one
98
+ for (const access of Array.from(this.elements.values()).filter(e => e instanceof Famix.Access)) {
99
+ if (access.accessor === accessor && access.variable === variable) {
100
+ return access;
101
+ }
102
+ }
103
+ // Return undefined if no matching access is found
104
+ return undefined;
105
+ }
55
106
  export(arg0) {
56
107
  if (arg0.format === "json") {
57
108
  return this.getJSON();
@@ -182,6 +233,7 @@ class FamixRepository {
182
233
  * @param element A Famix element
183
234
  */
184
235
  addElement(element) {
236
+ analyze_1.logger.debug(`Adding Famix element ${element.constructor.name} with id ${element.id}`);
185
237
  if (element instanceof famix_1.Class) {
186
238
  this.famixClasses.add(element);
187
239
  }
@@ -206,6 +258,28 @@ class FamixRepository {
206
258
  this.elements.add(element);
207
259
  element.id = this.idCounter;
208
260
  this.idCounter++;
261
+ this.validateFQNs();
262
+ }
263
+ /**
264
+ * Validates the fully qualified names of all Famix elements
265
+ */
266
+ validateFQNs() {
267
+ // make sure all elements have unique fully qualified names
268
+ const fqns = new Set();
269
+ for (const element of Array.from(this.elements.values())) {
270
+ // ignore everything that is not a NamedEntity
271
+ if (element instanceof famix_1.NamedEntity) {
272
+ if (element.fullyQualifiedName && fqns.has(element.fullyQualifiedName)) {
273
+ const theExistingElement = Array.from(this.elements.values()).find(e => e.fullyQualifiedName === element.fullyQualifiedName);
274
+ throw new Error(`The fully qualified name ${element.fullyQualifiedName} is not unique.\nIt exists for ${theExistingElement?.getJSON()}`);
275
+ }
276
+ const theName = element.fullyQualifiedName;
277
+ if (theName === undefined || theName === "") {
278
+ throw new Error(`The element ${element.constructor.name} with id ${element.id} has no valid fully qualified name`);
279
+ }
280
+ fqns.add(theName);
281
+ }
282
+ }
209
283
  }
210
284
  /**
211
285
  * Gets a JSON representation of the repository
@@ -221,4 +295,4 @@ class FamixRepository {
221
295
  }
222
296
  }
223
297
  exports.FamixRepository = FamixRepository;
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFtaXhfcmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZmFtaXgvZmFtaXhfcmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5Q0FBNEs7QUFHNUs7O0dBRUc7QUFDSCxNQUFhLGVBQWU7SUFjeEI7UUFiUSxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQW9CLENBQUMsQ0FBQyxxQkFBcUI7UUFDN0QsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBUyxDQUFDLENBQUMsb0JBQW9CO1FBQ3JELG9CQUFlLEdBQUcsSUFBSSxHQUFHLEVBQWEsQ0FBQyxDQUFDLHVCQUF1QjtRQUMvRCxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUMsQ0FBQyx1QkFBdUI7UUFDekQsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDLENBQUMsb0JBQW9CO1FBQ3RELG1CQUFjLEdBQUcsSUFBSSxHQUFHLEVBQVksQ0FBQyxDQUFDLHNCQUFzQjtRQUM1RCxtQkFBYyxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDLENBQUMsc0JBQXNCO1FBQ3ZFLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQyxDQUFDLGtCQUFrQjtRQUNqRSxjQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsYUFBYTtRQUM1QixpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQUMxQix3QkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQztRQUNqRSxxQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQyxDQUFDLGdGQUFnRjtRQUduSixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksc0JBQWMsRUFBRSxDQUFDLENBQUMsQ0FBRSw4Q0FBOEM7SUFDMUYsQ0FBQztJQUVNLHNCQUFzQixDQUFDLG1CQUF5RDtRQUNuRixJQUFJLENBQUMsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUM7SUFDbkQsQ0FBQztJQUVNLHNCQUFzQjtRQUN6QixP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QUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3ZELEdBQUcsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsR0FBRyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkMsT0FBTyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ3JCLENBQUM7Q0FDSjtBQTNPRCwwQ0EyT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGYW1peEJhc2VFbGVtZW50IH0gZnJvbSBcIi4vZmFtaXhfYmFzZV9lbGVtZW50XCI7XG5pbXBvcnQgeyBDbGFzcywgSW50ZXJmYWNlLCBWYXJpYWJsZSwgTWV0aG9kLCBBcnJvd0Z1bmN0aW9uLCBGdW5jdGlvbiBhcyBGYW1peEZ1bmN0aW9uRW50aXR5LCBUeXBlLCBOYW1lZEVudGl0eSwgU2NyaXB0RW50aXR5LCBNb2R1bGUsIFNvdXJjZUxhbmd1YWdlIH0gZnJvbSBcIi4vbW9kZWwvZmFtaXhcIjtcbmltcG9ydCAqIGFzIEZhbWl4IGZyb20gXCIuL21vZGVsL2ZhbWl4XCI7XG5pbXBvcnQgeyBUU01vcnBoT2JqZWN0VHlwZSB9IGZyb20gXCIuLi8uLi9mYW1peF9mdW5jdGlvbnMvRW50aXR5RGljdGlvbmFyeVwiO1xuLyoqXG4gKiBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gc3RvcmUgYWxsIEZhbWl4IGVsZW1lbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBGYW1peFJlcG9zaXRvcnkge1xuICAgIHByaXZhdGUgZWxlbWVudHMgPSBuZXcgU2V0PEZhbWl4QmFzZUVsZW1lbnQ+KCk7IC8vIEFsbCBGYW1peCBlbGVtZW50c1xuICAgIHByaXZhdGUgZmFtaXhDbGFzc2VzID0gbmV3IFNldDxDbGFzcz4oKTsgLy8gQWxsIEZhbWl4IGNsYXNzZXNcbiAgICBwcml2YXRlIGZhbWl4SW50ZXJmYWNlcyA9IG5ldyBTZXQ8SW50ZXJmYWNlPigpOyAvLyBBbGwgRmFtaXggaW50ZXJmYWNlc1xuICAgIHByaXZhdGUgZmFtaXhNb2R1bGVzID0gbmV3IFNldDxNb2R1bGU+KCk7IC8vIEFsbCBGYW1peCBuYW1lc3BhY2VzXG4gICAgcHJpdmF0ZSBmYW1peE1ldGhvZHMgPSBuZXcgU2V0PE1ldGhvZD4oKTsgLy8gQWxsIEZhbWl4IG1ldGhvZHNcbiAgICBwcml2YXRlIGZhbWl4VmFyaWFibGVzID0gbmV3IFNldDxWYXJpYWJsZT4oKTsgLy8gQWxsIEZhbWl4IHZhcmlhYmxlc1xuICAgIHByaXZhdGUgZmFtaXhGdW5jdGlvbnMgPSBuZXcgU2V0PEZhbWl4RnVuY3Rpb25FbnRpdHk+KCk7IC8vIEFsbCBGYW1peCBmdW5jdGlvbnNcbiAgICBwcml2YXRlIGZhbWl4RmlsZXMgPSBuZXcgU2V0PFNjcmlwdEVudGl0eSB8IE1vZHVsZT4oKTsgLy8gQWxsIEZhbWl4IGZpbGVzXG4gICAgcHJpdmF0ZSBpZENvdW50ZXIgPSAxOyAvLyBJZCBjb3VudGVyXG4gICAgcHJpdmF0ZSBhYnNvbHV0ZVBhdGg6IHN0cmluZyA9IFwiXCI7XG4gICAgcHJpdmF0ZSBmbXhFbGVtZW50T2JqZWN0TWFwID0gbmV3IE1hcDxGYW1peC5FbnRpdHksIFRTTW9ycGhPYmplY3RUeXBlPigpO1xuICAgIHByaXZhdGUgdHNNb3JwaE9iamVjdE1hcCA9IG5ldyBNYXA8VFNNb3JwaE9iamVjdFR5cGUsIEZhbWl4LkVudGl0eT4oKTsgLy8gVE9ETzogYWRkIHRoaXMgbWFwIHRvIGhhdmUgdHdvLXdheSBtYXBwaW5nIGJldHdlZW4gRmFtaXggYW5kIFRTIE1vcnBoIG9iamVjdHNcbiAgICBcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5hZGRFbGVtZW50KG5ldyBTb3VyY2VMYW5ndWFnZSgpKTsgIC8vIGFkZCB0aGUgc291cmNlIGxhbmd1YWdlIGVudGl0eSAoVHlwZVNjcmlwdClcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0Rm14RWxlbWVudE9iamVjdE1hcChmbXhFbGVtZW50T2JqZWN0TWFwOiBNYXA8RmFtaXguRW50aXR5LCBUU01vcnBoT2JqZWN0VHlwZT4pIHtcbiAgICAgICAgdGhpcy5mbXhFbGVtZW50T2JqZWN0TWFwID0gZm14RWxlbWVudE9iamVjdE1hcDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm14RWxlbWVudE9iamVjdE1hcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm14RWxlbWVudE9iamVjdE1hcDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWJzb2x1dGVQYXRoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFic29sdXRlUGF0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QWJzb2x1dGVQYXRoKHBhdGg6IHN0cmluZykge1xuICAgICAgICB0aGlzLmFic29sdXRlUGF0aCA9IHBhdGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEZhbWl4IGVudGl0eSBieSBpZFxuICAgICAqIEBwYXJhbSBpZCBBbiBpZCBvZiBhIEZhbWl4IGVudGl0eVxuICAgICAqIEByZXR1cm5zIFRoZSBGYW1peCBlbnRpdHkgY29ycmVzcG9uZGluZyB0byB0aGUgaWQgb3IgdW5kZWZpbmVkIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RmFtaXhFbnRpdHlCeUlkKGlkOiBudW1iZXIpOiBGYW1peEJhc2VFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgZW50aXR5ID0gQXJyYXkuZnJvbSh0aGlzLmVsZW1lbnRzLnZhbHVlcygpKS5maW5kKGUgPT4gZS5pZCA9PT0gaWQpO1xuICAgICAgICByZXR1cm4gZW50aXR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBGYW1peCBlbnRpdHkgYnkgZnVsbHkgcXVhbGlmaWVkIG5hbWVcbiAgICAgKiBAcGFyYW0gZnVsbHlRdWFsaWZpZWROYW1lIEEgZnVsbHkgcXVhbGlmaWVkIG5hbWVcbiAgICAgKiBAcmV0dXJucyBUaGUgRmFtaXggZW50aXR5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9yIHVuZGVmaW5lZCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgICovXG4gICAgcHVibGljIGdldEZhbWl4RW50aXR5QnlGdWxseVF1YWxpZmllZE5hbWUoZnVsbHlRdWFsaWZpZWROYW1lOiBzdHJpbmcpOiBGYW1peEJhc2VFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgYWxsRW50aXRpZXMgPSBBcnJheS5mcm9tKHRoaXMuZWxlbWVudHMudmFsdWVzKCkpLmZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYW1lZEVudGl0eSkgYXMgQXJyYXk8TmFtZWRFbnRpdHk+O1xuICAgICAgICBjb25zdCBlbnRpdHkgPSBhbGxFbnRpdGllcy5maW5kKGUgPT4gZS5mdWxseVF1YWxpZmllZE5hbWUgPT09IGZ1bGx5UXVhbGlmaWVkTmFtZSk7XG4gICAgICAgIHJldHVybiBlbnRpdHk7XG4gICAgfVxuXG4gICAgZXhwb3J0KGFyZzA6IHsgZm9ybWF0OiBzdHJpbmc7IH0pIHtcbiAgICAgICAgaWYgKGFyZzAuZm9ybWF0ID09PSBcImpzb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SlNPTigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgZm9ybWF0XCIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvLyBPbmx5IGZvciB0ZXN0c1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbGwgRmFtaXggZW50aXRpZXNcbiAgICAgKiBAcmV0dXJucyBBbGwgRmFtaXggZW50aXRpZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgX2dldEFsbEVudGl0aWVzKCk6IFNldDxGYW1peEJhc2VFbGVtZW50PiB7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KEFycmF5LmZyb20odGhpcy5lbGVtZW50cy52YWx1ZXMoKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYWxsIEZhbWl4IGVudGl0aWVzIG9mIGEgZ2l2ZW4gdHlwZVxuICAgICAqIEBwYXJhbSB0aGVUeXBlIEEgdHlwZSBvZiBGYW1peCBlbnRpdHlcbiAgICAgKiBAcmV0dXJucyBBbGwgRmFtaXggZW50aXRpZXMgb2YgdGhlIGdpdmVuIHR5cGVcbiAgICAgKi9cbiAgICBwdWJsaWMgX2dldEFsbEVudGl0aWVzV2l0aFR5cGUodGhlVHlwZTogc3RyaW5nKTogU2V0PEZhbWl4QmFzZUVsZW1lbnQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQoQXJyYXkuZnJvbSh0aGlzLmVsZW1lbnRzLnZhbHVlcygpKS5maWx0ZXIoZSA9PiAoZSBhcyBGYW1peEJhc2VFbGVtZW50KS5jb25zdHJ1Y3Rvci5uYW1lID09PSB0aGVUeXBlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEZhbWl4IGNsYXNzIGJ5IG5hbWVcbiAgICAgKiBAcGFyYW0gbmFtZSBBIGNsYXNzIG5hbWVcbiAgICAgKiBAcmV0dXJucyBUaGUgRmFtaXggY2xhc3MgY29ycmVzcG9uZGluZyB0byB0aGUgbmFtZSBvciB1bmRlZmluZWQgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgICAqL1xuICAgIHB1YmxpYyBfZ2V0RmFtaXhDbGFzcyhmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IENsYXNzIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5mYW1peENsYXNzZXMudmFsdWVzKCkpLmZpbmQobnMgPT4gbnMuZnVsbHlRdWFsaWZpZWROYW1lID09PSBmdWxseVF1YWxpZmllZE5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBGYW1peCBpbnRlcmZhY2UgYnkgbmFtZVxuICAgICAqIEBwYXJhbSBuYW1lIEFuIGludGVyZmFjZSBuYW1lXG4gICAgICogQHJldHVybnMgVGhlIEZhbWl4IGludGVyZmFjZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYW1lIG9yIHVuZGVmaW5lZCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgICovXG4gICAgcHVibGljIF9nZXRGYW1peEludGVyZmFjZShmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IEludGVyZmFjZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZmFtaXhJbnRlcmZhY2VzLnZhbHVlcygpKS5maW5kKG5zID0+IG5zLmZ1bGx5UXVhbGlmaWVkTmFtZSA9PT0gZnVsbHlRdWFsaWZpZWROYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgRmFtaXggbWV0aG9kIGJ5IG5hbWVcbiAgICAgKiBAcGFyYW0gbmFtZSBBIG1ldGhvZCBuYW1lXG4gICAgICogQHJldHVybnMgVGhlIEZhbWl4IG1ldGhvZCBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYW1lIG9yIHVuZGVmaW5lZCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgICovXG4gICAgcHVibGljIF9nZXRGYW1peE1ldGhvZChmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IE1ldGhvZCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZmFtaXhNZXRob2RzLnZhbHVlcygpKS5maW5kKG5zID0+IG5zLmZ1bGx5UXVhbGlmaWVkTmFtZSA9PT0gZnVsbHlRdWFsaWZpZWROYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgRmFtaXggZnVuY3Rpb24gYnkgbmFtZVxuICAgICAqIEBwYXJhbSBuYW1lIEEgZnVuY3Rpb24gbmFtZVxuICAgICAqIEByZXR1cm5zIFRoZSBGYW1peCBmdW5jdGlvbiBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYW1lIG9yIHVuZGVmaW5lZCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgICovXG4gICAgcHVibGljIF9nZXRGYW1peEZ1bmN0aW9uKGZ1bGx5UXVhbGlmaWVkTmFtZTogc3RyaW5nKTogRmFtaXhGdW5jdGlvbkVudGl0eSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZmFtaXhGdW5jdGlvbnMudmFsdWVzKCkpLmZpbmQobnMgPT4gbnMuZnVsbHlRdWFsaWZpZWROYW1lID09PSBmdWxseVF1YWxpZmllZE5hbWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEZhbWl4IHZhcmlhYmxlIGJ5IG5hbWVcbiAgICAgKiBAcGFyYW0gbmFtZSBBIHZhcmlhYmxlIG5hbWVcbiAgICAgKiBAcmV0dXJucyBUaGUgRmFtaXggdmFyaWFibGUgY29ycmVzcG9uZGluZyB0byB0aGUgbmFtZSBvciB1bmRlZmluZWQgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgICAqL1xuICAgIHB1YmxpYyBfZ2V0RmFtaXhWYXJpYWJsZShmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IFZhcmlhYmxlIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5mYW1peFZhcmlhYmxlcy52YWx1ZXMoKSkuZmluZCh2ID0+IHYuZnVsbHlRdWFsaWZpZWROYW1lID09PSBmdWxseVF1YWxpZmllZE5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBGYW1peCBuYW1lc3BhY2UgYnkgbmFtZVxuICAgICAqIEBwYXJhbSBuYW1lIEEgbmFtZXNwYWNlIG5hbWVcbiAgICAgKiBAcmV0dXJucyBUaGUgRmFtaXggbmFtZXNwYWNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5hbWUgb3IgdW5kZWZpbmVkIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICAgKi9cbiAgICBwdWJsaWMgX2dldEZhbWl4TW9kdWxlKGZ1bGx5UXVhbGlmaWVkTmFtZTogc3RyaW5nKTogTW9kdWxlIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5mYW1peE1vZHVsZXMudmFsdWVzKCkpLmZpbmQobnMgPT4gbnMuZnVsbHlRdWFsaWZpZWROYW1lID09PSBmdWxseVF1YWxpZmllZE5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYWxsIEZhbWl4IG5hbWVzcGFjZXNcbiAgICAgKiBAcmV0dXJucyBBbGwgRmFtaXggbmFtZXNwYWNlc1xuICAgICAqL1xuICAgIHB1YmxpYyBfZ2V0RmFtaXhNb2R1bGVzKCk6IFNldDxNb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQoQXJyYXkuZnJvbSh0aGlzLmZhbWl4TW9kdWxlcy52YWx1ZXMoKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBGYW1peCBmaWxlIGJ5IG5hbWVcbiAgICAgKiBAcGFyYW0gbmFtZSBBIGZpbGUgbmFtZVxuICAgICAqIEByZXR1cm5zIFRoZSBGYW1peCBmaWxlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5hbWUgb3IgdW5kZWZpbmVkIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICAgKi9cbiAgICBwdWJsaWMgX2dldEZhbWl4RmlsZShmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IFNjcmlwdEVudGl0eSB8IE1vZHVsZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZmFtaXhGaWxlcy52YWx1ZXMoKSkuZmluZChucyA9PiBucy5uYW1lID09PSBmdWxseVF1YWxpZmllZE5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYWxsIEZhbWl4IGZpbGVzXG4gICAgICogQHJldHVybnMgQWxsIEZhbWl4IGZpbGVzXG4gICAgICovXG4gICAgcHVibGljIF9nZXRGYW1peEZpbGVzKCk6IFNldDxTY3JpcHRFbnRpdHkgfCBNb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQoQXJyYXkuZnJvbSh0aGlzLmZhbWl4RmlsZXMudmFsdWVzKCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBtZXRob2QgbmFtZXMgYXMgYSBzZXQgZnJvbSBhIGNsYXNzXG4gICAgICogQHBhcmFtIGNsYXNzTmFtZSBBIGNsYXNzIG5hbWVcbiAgICAgKiBAcmV0dXJucyBUaGUgc2V0IG9mIGNsYXNzIFwiY2xhc3NOYW1lXCIgbWV0aG9kIG5hbWVzXG4gICAgICovXG4gICAgcHVibGljIF9tZXRob2ROYW1lc0FzU2V0RnJvbUNsYXNzKGNsYXNzTmFtZTogc3RyaW5nKTogU2V0PHN0cmluZz4ge1xuICAgICAgICBjb25zdCB0aGVDbGFzcyA9IHRoaXMuX2dldEZhbWl4Q2xhc3MoY2xhc3NOYW1lKSBhcyBDbGFzcztcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQoQXJyYXkuZnJvbSh0aGVDbGFzcy5tZXRob2RzKS5tYXAobSA9PiBtLm5hbWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBtZXRob2QgcGFyZW50cyBhcyBhIHNldCBmcm9tIGEgY2xhc3NcbiAgICAgKiBAcGFyYW0gY2xhc3NOYW1lIEEgY2xhc3MgbmFtZVxuICAgICAqIEByZXR1cm5zIFRoZSBzZXQgb2YgY2xhc3MgXCJjbGFzc05hbWVcIiBtZXRob2QgcGFyZW50c1xuICAgICAqL1xuICAgIHB1YmxpYyBfbWV0aG9kUGFyZW50c0FzU2V0RnJvbUNsYXNzKGNsYXNzTmFtZTogc3RyaW5nKTogU2V0PFR5cGU+IHtcbiAgICAgICAgY29uc3QgdGhlQ2xhc3MgPSB0aGlzLl9nZXRGYW1peENsYXNzKGNsYXNzTmFtZSkgYXMgQ2xhc3M7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KEFycmF5LmZyb20odGhlQ2xhc3MubWV0aG9kcykubWFwKG0gPT4gbS5wYXJlbnRFbnRpdHkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBtYXAgb2YgRmFtaXggZWxlbWVudCBpZHMgYW5kIHRoZWlyIEZhbWl4IGVsZW1lbnQgZnJvbSBhIEpTT04gbW9kZWxcbiAgICAgKiBAcGFyYW0gbW9kZWwgQSBKU09OIG1vZGVsXG4gICAgICogQHJldHVybnMgVGhlIG1hcCBvZiBGYW1peCBlbGVtZW50IGlkcyBhbmQgdGhlaXIgRmFtaXggZWxlbWVudCBmcm9tIHRoZSBKU09OIG1vZGVsXG4gICAgICovXG4gICAgcHVibGljIF9pbml0TWFwRnJvbU1vZGVsKG1vZGVsOiBzdHJpbmcpOiBNYXA8bnVtYmVyLCB1bmtub3duPiB7XG4gICAgICAgIGNvbnN0IHBhcnNlZE1vZGVsOiBBcnJheTxGYW1peEJhc2VFbGVtZW50PiA9IEpTT04ucGFyc2UobW9kZWwpO1xuICAgICAgICBjb25zdCBpZFRvRWxlbWVudE1hcDogTWFwPG51bWJlciwgdW5rbm93bj4gPSBuZXcgTWFwKCk7XG4gICAgICAgIHBhcnNlZE1vZGVsLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBpZFRvRWxlbWVudE1hcC5zZXQoZWxlbWVudC5pZCwgZWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gaWRUb0VsZW1lbnRNYXA7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgRmFtaXggZWxlbWVudCB0byB0aGUgcmVwb3NpdG9yeVxuICAgICAqIEBwYXJhbSBlbGVtZW50IEEgRmFtaXggZWxlbWVudFxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRFbGVtZW50KGVsZW1lbnQ6IEZhbWl4QmFzZUVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBDbGFzcykge1xuICAgICAgICAgICAgdGhpcy5mYW1peENsYXNzZXMuYWRkKGVsZW1lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBJbnRlcmZhY2UpIHtcbiAgICAgICAgICAgIHRoaXMuZmFtaXhJbnRlcmZhY2VzLmFkZChlbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgTW9kdWxlKSB7XG4gICAgICAgICAgICB0aGlzLmZhbWl4TW9kdWxlcy5hZGQoZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFZhcmlhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmZhbWl4VmFyaWFibGVzLmFkZChlbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgTWV0aG9kKSB7XG4gICAgICAgICAgICB0aGlzLmZhbWl4TWV0aG9kcy5hZGQoZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEZhbWl4RnVuY3Rpb25FbnRpdHkgfHwgZWxlbWVudCBpbnN0YW5jZW9mIEFycm93RnVuY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZmFtaXhGdW5jdGlvbnMuYWRkKGVsZW1lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBTY3JpcHRFbnRpdHkgfHwgZWxlbWVudCBpbnN0YW5jZW9mIE1vZHVsZSkge1xuICAgICAgICAgICAgdGhpcy5mYW1peEZpbGVzLmFkZChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVsZW1lbnRzLmFkZChlbGVtZW50KTtcbiAgICAgICAgZWxlbWVudC5pZCA9IHRoaXMuaWRDb3VudGVyO1xuICAgICAgICB0aGlzLmlkQ291bnRlcisrO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZXBvc2l0b3J5XG4gICAgICogQHJldHVybnMgQSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZXBvc2l0b3J5XG4gICAgICovXG4gICAgcHVibGljIGdldEpTT04oKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJldCA9IFwiW1wiO1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgQXJyYXkuZnJvbSh0aGlzLmVsZW1lbnRzLnZhbHVlcygpKSkge1xuICAgICAgICAgICAgcmV0ID0gcmV0ICsgZWxlbWVudC5nZXRKU09OKCkgKyBcIixcIjtcbiAgICAgICAgfVxuICAgICAgICByZXQgPSByZXQuc3Vic3RyaW5nKDAsIHJldC5sZW5ndGggLSAxKTtcbiAgICAgICAgcmV0dXJuIHJldCArIFwiXVwiO1xuICAgIH1cbn1cbiJdfQ==
298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFtaXhfcmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZmFtaXgvZmFtaXhfcmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSx5Q0FBNEs7QUFDNUsscURBQXVDO0FBRXZDLDJDQUF1QztBQUV2Qzs7R0FFRztBQUNILE1BQWEsZUFBZTtJQWN4QjtRQWJRLGFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQyxDQUFDLHFCQUFxQjtRQUM3RCxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFTLENBQUMsQ0FBQyxvQkFBb0I7UUFDckQsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBYSxDQUFDLENBQUMsdUJBQXVCO1FBQy9ELGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQyxDQUFDLHVCQUF1QjtRQUN6RCxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUMsQ0FBQyxvQkFBb0I7UUFDdEQsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBWSxDQUFDLENBQUMsc0JBQXNCO1FBQzVELG1CQUFjLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUMsQ0FBQyxzQkFBc0I7UUFDdkUsZUFBVSxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDLENBQUMsa0JBQWtCO1FBQ2pFLGNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQzVCLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBQzFCLHdCQUFtQixHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFDO1FBQ2pFLHFCQUFnQixHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFDLENBQUMsZ0ZBQWdGO1FBR25KLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxzQkFBYyxFQUFFLENBQUMsQ0FBQyxDQUFFLDhDQUE4QztJQUMxRixDQUFDO0lBRU0sc0JBQXNCLENBQUMsbUJBQXlEO1FBQ25GLElBQUks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LENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUUsQ0FBaUIsQ0FBQyxrQkFBa0IsS0FBSyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztvQkFDOUksTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsT0FBTyxDQUFDLGtCQUFrQixrQ0FBa0Msa0JBQWtCLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM3SSxDQUFDO2dCQUNELE1BQU0sT0FBTyxHQUFJLE9BQXVCLENBQUMsa0JBQWtCLENBQUM7Z0JBQzVELElBQUksT0FBTyxLQUFLLFNBQVMsSUFBSSxPQUFPLEtBQUssRUFBRSxFQUFFLENBQUM7b0JBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksWUFBWSxPQUFPLENBQUMsRUFBRSxvQ0FBb0MsQ0FBQyxDQUFDO2dCQUN2SCxDQUFDO2dCQUNELElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBR0Q7OztPQUdHO0lBQ0ksT0FBTztRQUNWLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNkLEtBQUssTUFBTSxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN2RCxHQUFHLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDeEMsQ0FBQztRQUNELEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNyQixDQUFDO0NBQ0o7QUF0UkQsMENBc1JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFtaXhCYXNlRWxlbWVudCB9IGZyb20gXCIuL2ZhbWl4X2Jhc2VfZWxlbWVudFwiO1xuaW1wb3J0IHsgQ2xhc3MsIEludGVyZmFjZSwgVmFyaWFibGUsIE1ldGhvZCwgQXJyb3dGdW5jdGlvbiwgRnVuY3Rpb24gYXMgRmFtaXhGdW5jdGlvbkVudGl0eSwgVHlwZSwgTmFtZWRFbnRpdHksIFNjcmlwdEVudGl0eSwgTW9kdWxlLCBTb3VyY2VMYW5ndWFnZSB9IGZyb20gXCIuL21vZGVsL2ZhbWl4XCI7XG5pbXBvcnQgKiBhcyBGYW1peCBmcm9tIFwiLi9tb2RlbC9mYW1peFwiO1xuaW1wb3J0IHsgVFNNb3JwaE9iamVjdFR5cGUgfSBmcm9tIFwiLi4vLi4vZmFtaXhfZnVuY3Rpb25zL0VudGl0eURpY3Rpb25hcnlcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuLi8uLi9hbmFseXplXCI7XG5cbi8qKlxuICogVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHN0b3JlIGFsbCBGYW1peCBlbGVtZW50c1xuICovXG5leHBvcnQgY2xhc3MgRmFtaXhSZXBvc2l0b3J5IHtcbiAgICBwcml2YXRlIGVsZW1lbnRzID0gbmV3IFNldDxGYW1peEJhc2VFbGVtZW50PigpOyAvLyBBbGwgRmFtaXggZWxlbWVudHNcbiAgICBwcml2YXRlIGZhbWl4Q2xhc3NlcyA9IG5ldyBTZXQ8Q2xhc3M+KCk7IC8vIEFsbCBGYW1peCBjbGFzc2VzXG4gICAgcHJpdmF0ZSBmYW1peEludGVyZmFjZXMgPSBuZXcgU2V0PEludGVyZmFjZT4oKTsgLy8gQWxsIEZhbWl4IGludGVyZmFjZXNcbiAgICBwcml2YXRlIGZhbWl4TW9kdWxlcyA9IG5ldyBTZXQ8TW9kdWxlPigpOyAvLyBBbGwgRmFtaXggbmFtZXNwYWNlc1xuICAgIHByaXZhdGUgZmFtaXhNZXRob2RzID0gbmV3IFNldDxNZXRob2Q+KCk7IC8vIEFsbCBGYW1peCBtZXRob2RzXG4gICAgcHJpdmF0ZSBmYW1peFZhcmlhYmxlcyA9IG5ldyBTZXQ8VmFyaWFibGU+KCk7IC8vIEFsbCBGYW1peCB2YXJpYWJsZXNcbiAgICBwcml2YXRlIGZhbWl4RnVuY3Rpb25zID0gbmV3IFNldDxGYW1peEZ1bmN0aW9uRW50aXR5PigpOyAvLyBBbGwgRmFtaXggZnVuY3Rpb25zXG4gICAgcHJpdmF0ZSBmYW1peEZpbGVzID0gbmV3IFNldDxTY3JpcHRFbnRpdHkgfCBNb2R1bGU+KCk7IC8vIEFsbCBGYW1peCBmaWxlc1xuICAgIHByaXZhdGUgaWRDb3VudGVyID0gMTsgLy8gSWQgY291bnRlclxuICAgIHByaXZhdGUgYWJzb2x1dGVQYXRoOiBzdHJpbmcgPSBcIlwiO1xuICAgIHByaXZhdGUgZm14RWxlbWVudE9iamVjdE1hcCA9IG5ldyBNYXA8RmFtaXguRW50aXR5LCBUU01vcnBoT2JqZWN0VHlwZT4oKTtcbiAgICBwcml2YXRlIHRzTW9ycGhPYmplY3RNYXAgPSBuZXcgTWFwPFRTTW9ycGhPYmplY3RUeXBlLCBGYW1peC5FbnRpdHk+KCk7IC8vIFRPRE86IGFkZCB0aGlzIG1hcCB0byBoYXZlIHR3by13YXkgbWFwcGluZyBiZXR3ZWVuIEZhbWl4IGFuZCBUUyBNb3JwaCBvYmplY3RzXG4gICAgXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuYWRkRWxlbWVudChuZXcgU291cmNlTGFuZ3VhZ2UoKSk7ICAvLyBhZGQgdGhlIHNvdXJjZSBsYW5ndWFnZSBlbnRpdHkgKFR5cGVTY3JpcHQpXG4gICAgfVxuXG4gICAgcHVibGljIHNldEZteEVsZW1lbnRPYmplY3RNYXAoZm14RWxlbWVudE9iamVjdE1hcDogTWFwPEZhbWl4LkVudGl0eSwgVFNNb3JwaE9iamVjdFR5cGU+KSB7XG4gICAgICAgIHRoaXMuZm14RWxlbWVudE9iamVjdE1hcCA9IGZteEVsZW1lbnRPYmplY3RNYXA7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZteEVsZW1lbnRPYmplY3RNYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZteEVsZW1lbnRPYmplY3RNYXA7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFic29sdXRlUGF0aCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5hYnNvbHV0ZVBhdGg7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEFic29sdXRlUGF0aChwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5hYnNvbHV0ZVBhdGggPSBwYXRoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBGYW1peCBlbnRpdHkgYnkgaWRcbiAgICAgKiBAcGFyYW0gaWQgQW4gaWQgb2YgYSBGYW1peCBlbnRpdHlcbiAgICAgKiBAcmV0dXJucyBUaGUgRmFtaXggZW50aXR5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGlkIG9yIHVuZGVmaW5lZCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgICovXG4gICAgcHVibGljIGdldEZhbWl4RW50aXR5QnlJZChpZDogbnVtYmVyKTogRmFtaXhCYXNlRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGVudGl0eSA9IEFycmF5LmZyb20odGhpcy5lbGVtZW50cy52YWx1ZXMoKSkuZmluZChlID0+IGUuaWQgPT09IGlkKTtcbiAgICAgICAgcmV0dXJuIGVudGl0eTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgRmFtaXggZW50aXR5IGJ5IGZ1bGx5IHF1YWxpZmllZCBuYW1lXG4gICAgICogQHBhcmFtIGZ1bGx5UXVhbGlmaWVkTmFtZSBBIGZ1bGx5IHF1YWxpZmllZCBuYW1lXG4gICAgICogQHJldHVybnMgVGhlIEZhbWl4IGVudGl0eSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvciB1bmRlZmluZWQgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRGYW1peEVudGl0eUJ5RnVsbHlRdWFsaWZpZWROYW1lKGZ1bGx5UXVhbGlmaWVkTmFtZTogc3RyaW5nKTogRmFtaXhCYXNlRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGFsbEVudGl0aWVzID0gQXJyYXkuZnJvbSh0aGlzLmVsZW1lbnRzLnZhbHVlcygpKS5maWx0ZXIoZSA9PiBlIGluc3RhbmNlb2YgTmFtZWRFbnRpdHkpIGFzIEFycmF5PE5hbWVkRW50aXR5PjtcbiAgICAgICAgY29uc3QgZW50aXR5ID0gYWxsRW50aXRpZXMuZmluZChlID0+IFxuICAgICAgICAgICAgLy8ge2NvbnNvbGUubG9nKGBuYW1lZEVudGl0eTogJHtlLmZ1bGx5UXVhbGlmaWVkTmFtZX1gKTsgXG4gICAgICAgICAgICAvLyByZXR1cm4gXG4gICAgICAgICAgICBlLmZ1bGx5UXVhbGlmaWVkTmFtZSA9PT0gZnVsbHlRdWFsaWZpZWROYW1lXG4gICAgICAgIC8vIH1cbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGVudGl0eTtcbiAgICB9XG5cbiAgICAvLyBNZXRob2QgdG8gZ2V0IEZhbWl4IGFjY2VzcyBieSBhY2Nlc3NvciBhbmQgdmFyaWFibGVcbiAgICBwdWJsaWMgZ2V0RmFtaXhBY2Nlc3NCeUFjY2Vzc29yQW5kVmFyaWFibGUoYWNjZXNzb3I6IEZhbWl4LkNvbnRhaW5lckVudGl0eSwgdmFyaWFibGU6IEZhbWl4LlN0cnVjdHVyYWxFbnRpdHkpOiBGYW1peC5BY2Nlc3MgfCB1bmRlZmluZWQge1xuICAgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggdGhlIGxpc3Qgb2YgRmFtaXggYWNjZXNzZXMgdG8gZmluZCB0aGUgbWF0Y2hpbmcgb25lXG4gICAgICAgIGZvciAoY29uc3QgYWNjZXNzIG9mIEFycmF5LmZyb20odGhpcy5lbGVtZW50cy52YWx1ZXMoKSkuZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIEZhbWl4LkFjY2VzcykgYXMgQXJyYXk8RmFtaXguQWNjZXNzPikge1xuICAgICAgICAgICAgaWYgKGFjY2Vzcy5hY2Nlc3NvciA9PT0gYWNjZXNzb3IgJiYgYWNjZXNzLnZhcmlhYmxlID09PSB2YXJpYWJsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2Nlc3M7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmV0dXJuIHVuZGVmaW5lZCBpZiBubyBtYXRjaGluZyBhY2Nlc3MgaXMgZm91bmRcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cblxuICAgIGV4cG9ydChhcmcwOiB7IGZvcm1hdDogc3RyaW5nOyB9KSB7XG4gICAgICAgIGlmIChhcmcwLmZvcm1hdCA9PT0gXCJqc29uXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEpTT04oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGZvcm1hdFwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLy8gT25seSBmb3IgdGVzdHNcblxuICAgIC8qKlxuICAgICAqIEdldHMgYWxsIEZhbWl4IGVudGl0aWVzXG4gICAgICogQHJldHVybnMgQWxsIEZhbWl4IGVudGl0aWVzXG4gICAgICovXG4gICAgcHVibGljIF9nZXRBbGxFbnRpdGllcygpOiBTZXQ8RmFtaXhCYXNlRWxlbWVudD4ge1xuICAgICAgICByZXR1cm4gbmV3IFNldChBcnJheS5mcm9tKHRoaXMuZWxlbWVudHMudmFsdWVzKCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBGYW1peCBlbnRpdGllcyBvZiBhIGdpdmVuIHR5cGVcbiAgICAgKiBAcGFyYW0gdGhlVHlwZSBBIHR5cGUgb2YgRmFtaXggZW50aXR5XG4gICAgICogQHJldHVybnMgQWxsIEZhbWl4IGVudGl0aWVzIG9mIHRoZSBnaXZlbiB0eXBlXG4gICAgICovXG4gICAgcHVibGljIF9nZXRBbGxFbnRpdGllc1dpdGhUeXBlKHRoZVR5cGU6IHN0cmluZyk6IFNldDxGYW1peEJhc2VFbGVtZW50PiB7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KEFycmF5LmZyb20odGhpcy5lbGVtZW50cy52YWx1ZXMoKSkuZmlsdGVyKGUgPT4gKGUgYXMgRmFtaXhCYXNlRWxlbWVudCkuY29uc3RydWN0b3IubmFtZSA9PT0gdGhlVHlwZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBGYW1peCBjbGFzcyBieSBuYW1lXG4gICAgICogQHBhcmFtIG5hbWUgQSBjbGFzcyBuYW1lXG4gICAgICogQHJldHVybnMgVGhlIEZhbWl4IGNsYXNzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5hbWUgb3IgdW5kZWZpbmVkIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICAgKi9cbiAgICBwdWJsaWMgX2dldEZhbWl4Q2xhc3MoZnVsbHlRdWFsaWZpZWROYW1lOiBzdHJpbmcpOiBDbGFzcyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZmFtaXhDbGFzc2VzLnZhbHVlcygpKS5maW5kKG5zID0+IG5zLmZ1bGx5UXVhbGlmaWVkTmFtZSA9PT0gZnVsbHlRdWFsaWZpZWROYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgRmFtaXggaW50ZXJmYWNlIGJ5IG5hbWVcbiAgICAgKiBAcGFyYW0gbmFtZSBBbiBpbnRlcmZhY2UgbmFtZVxuICAgICAqIEByZXR1cm5zIFRoZSBGYW1peCBpbnRlcmZhY2UgY29ycmVzcG9uZGluZyB0byB0aGUgbmFtZSBvciB1bmRlZmluZWQgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgICAqL1xuICAgIHB1YmxpYyBfZ2V0RmFtaXhJbnRlcmZhY2UoZnVsbHlRdWFsaWZpZWROYW1lOiBzdHJpbmcpOiBJbnRlcmZhY2UgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZhbWl4SW50ZXJmYWNlcy52YWx1ZXMoKSkuZmluZChucyA9PiBucy5mdWxseVF1YWxpZmllZE5hbWUgPT09IGZ1bGx5UXVhbGlmaWVkTmFtZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEZhbWl4IG1ldGhvZCBieSBuYW1lXG4gICAgICogQHBhcmFtIG5hbWUgQSBtZXRob2QgbmFtZVxuICAgICAqIEByZXR1cm5zIFRoZSBGYW1peCBtZXRob2QgY29ycmVzcG9uZGluZyB0byB0aGUgbmFtZSBvciB1bmRlZmluZWQgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgICAqL1xuICAgIHB1YmxpYyBfZ2V0RmFtaXhNZXRob2QoZnVsbHlRdWFsaWZpZWROYW1lOiBzdHJpbmcpOiBNZXRob2QgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZhbWl4TWV0aG9kcy52YWx1ZXMoKSkuZmluZChucyA9PiBucy5mdWxseVF1YWxpZmllZE5hbWUgPT09IGZ1bGx5UXVhbGlmaWVkTmFtZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEZhbWl4IGZ1bmN0aW9uIGJ5IG5hbWVcbiAgICAgKiBAcGFyYW0gbmFtZSBBIGZ1bmN0aW9uIG5hbWVcbiAgICAgKiBAcmV0dXJucyBUaGUgRmFtaXggZnVuY3Rpb24gY29ycmVzcG9uZGluZyB0byB0aGUgbmFtZSBvciB1bmRlZmluZWQgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgICAqL1xuICAgIHB1YmxpYyBfZ2V0RmFtaXhGdW5jdGlvbihmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IEZhbWl4RnVuY3Rpb25FbnRpdHkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZhbWl4RnVuY3Rpb25zLnZhbHVlcygpKS5maW5kKG5zID0+IG5zLmZ1bGx5UXVhbGlmaWVkTmFtZSA9PT0gZnVsbHlRdWFsaWZpZWROYW1lKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBGYW1peCB2YXJpYWJsZSBieSBuYW1lXG4gICAgICogQHBhcmFtIG5hbWUgQSB2YXJpYWJsZSBuYW1lXG4gICAgICogQHJldHVybnMgVGhlIEZhbWl4IHZhcmlhYmxlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5hbWUgb3IgdW5kZWZpbmVkIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICAgKi9cbiAgICBwdWJsaWMgX2dldEZhbWl4VmFyaWFibGUoZnVsbHlRdWFsaWZpZWROYW1lOiBzdHJpbmcpOiBWYXJpYWJsZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZmFtaXhWYXJpYWJsZXMudmFsdWVzKCkpLmZpbmQodiA9PiB2LmZ1bGx5UXVhbGlmaWVkTmFtZSA9PT0gZnVsbHlRdWFsaWZpZWROYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgRmFtaXggbmFtZXNwYWNlIGJ5IG5hbWVcbiAgICAgKiBAcGFyYW0gbmFtZSBBIG5hbWVzcGFjZSBuYW1lXG4gICAgICogQHJldHVybnMgVGhlIEZhbWl4IG5hbWVzcGFjZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYW1lIG9yIHVuZGVmaW5lZCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgICovXG4gICAgcHVibGljIF9nZXRGYW1peE1vZHVsZShmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IE1vZHVsZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZmFtaXhNb2R1bGVzLnZhbHVlcygpKS5maW5kKG5zID0+IG5zLmZ1bGx5UXVhbGlmaWVkTmFtZSA9PT0gZnVsbHlRdWFsaWZpZWROYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBGYW1peCBuYW1lc3BhY2VzXG4gICAgICogQHJldHVybnMgQWxsIEZhbWl4IG5hbWVzcGFjZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgX2dldEZhbWl4TW9kdWxlcygpOiBTZXQ8TW9kdWxlPiB7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KEFycmF5LmZyb20odGhpcy5mYW1peE1vZHVsZXMudmFsdWVzKCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgRmFtaXggZmlsZSBieSBuYW1lXG4gICAgICogQHBhcmFtIG5hbWUgQSBmaWxlIG5hbWVcbiAgICAgKiBAcmV0dXJucyBUaGUgRmFtaXggZmlsZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYW1lIG9yIHVuZGVmaW5lZCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgICovXG4gICAgcHVibGljIF9nZXRGYW1peEZpbGUoZnVsbHlRdWFsaWZpZWROYW1lOiBzdHJpbmcpOiBTY3JpcHRFbnRpdHkgfCBNb2R1bGUgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZhbWl4RmlsZXMudmFsdWVzKCkpLmZpbmQobnMgPT4gbnMubmFtZSA9PT0gZnVsbHlRdWFsaWZpZWROYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBGYW1peCBmaWxlc1xuICAgICAqIEByZXR1cm5zIEFsbCBGYW1peCBmaWxlc1xuICAgICAqL1xuICAgIHB1YmxpYyBfZ2V0RmFtaXhGaWxlcygpOiBTZXQ8U2NyaXB0RW50aXR5IHwgTW9kdWxlPiB7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KEFycmF5LmZyb20odGhpcy5mYW1peEZpbGVzLnZhbHVlcygpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbGwgbWV0aG9kIG5hbWVzIGFzIGEgc2V0IGZyb20gYSBjbGFzc1xuICAgICAqIEBwYXJhbSBjbGFzc05hbWUgQSBjbGFzcyBuYW1lXG4gICAgICogQHJldHVybnMgVGhlIHNldCBvZiBjbGFzcyBcImNsYXNzTmFtZVwiIG1ldGhvZCBuYW1lc1xuICAgICAqL1xuICAgIHB1YmxpYyBfbWV0aG9kTmFtZXNBc1NldEZyb21DbGFzcyhjbGFzc05hbWU6IHN0cmluZyk6IFNldDxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgdGhlQ2xhc3MgPSB0aGlzLl9nZXRGYW1peENsYXNzKGNsYXNzTmFtZSkgYXMgQ2xhc3M7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KEFycmF5LmZyb20odGhlQ2xhc3MubWV0aG9kcykubWFwKG0gPT4gbS5uYW1lKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbGwgbWV0aG9kIHBhcmVudHMgYXMgYSBzZXQgZnJvbSBhIGNsYXNzXG4gICAgICogQHBhcmFtIGNsYXNzTmFtZSBBIGNsYXNzIG5hbWVcbiAgICAgKiBAcmV0dXJucyBUaGUgc2V0IG9mIGNsYXNzIFwiY2xhc3NOYW1lXCIgbWV0aG9kIHBhcmVudHNcbiAgICAgKi9cbiAgICBwdWJsaWMgX21ldGhvZFBhcmVudHNBc1NldEZyb21DbGFzcyhjbGFzc05hbWU6IHN0cmluZyk6IFNldDxUeXBlPiB7XG4gICAgICAgIGNvbnN0IHRoZUNsYXNzID0gdGhpcy5fZ2V0RmFtaXhDbGFzcyhjbGFzc05hbWUpIGFzIENsYXNzO1xuICAgICAgICByZXR1cm4gbmV3IFNldChBcnJheS5mcm9tKHRoZUNsYXNzLm1ldGhvZHMpLm1hcChtID0+IG0ucGFyZW50RW50aXR5KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbWFwIG9mIEZhbWl4IGVsZW1lbnQgaWRzIGFuZCB0aGVpciBGYW1peCBlbGVtZW50IGZyb20gYSBKU09OIG1vZGVsXG4gICAgICogQHBhcmFtIG1vZGVsIEEgSlNPTiBtb2RlbFxuICAgICAqIEByZXR1cm5zIFRoZSBtYXAgb2YgRmFtaXggZWxlbWVudCBpZHMgYW5kIHRoZWlyIEZhbWl4IGVsZW1lbnQgZnJvbSB0aGUgSlNPTiBtb2RlbFxuICAgICAqL1xuICAgIHB1YmxpYyBfaW5pdE1hcEZyb21Nb2RlbChtb2RlbDogc3RyaW5nKTogTWFwPG51bWJlciwgdW5rbm93bj4ge1xuICAgICAgICBjb25zdCBwYXJzZWRNb2RlbDogQXJyYXk8RmFtaXhCYXNlRWxlbWVudD4gPSBKU09OLnBhcnNlKG1vZGVsKTtcbiAgICAgICAgY29uc3QgaWRUb0VsZW1lbnRNYXA6IE1hcDxudW1iZXIsIHVua25vd24+ID0gbmV3IE1hcCgpO1xuICAgICAgICBwYXJzZWRNb2RlbC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgaWRUb0VsZW1lbnRNYXAuc2V0KGVsZW1lbnQuaWQsIGVsZW1lbnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGlkVG9FbGVtZW50TWFwO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIEZhbWl4IGVsZW1lbnQgdG8gdGhlIHJlcG9zaXRvcnlcbiAgICAgKiBAcGFyYW0gZWxlbWVudCBBIEZhbWl4IGVsZW1lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRWxlbWVudChlbGVtZW50OiBGYW1peEJhc2VFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgQWRkaW5nIEZhbWl4IGVsZW1lbnQgJHtlbGVtZW50LmNvbnN0cnVjdG9yLm5hbWV9IHdpdGggaWQgJHtlbGVtZW50LmlkfWApO1xuICAgICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIENsYXNzKSB7XG4gICAgICAgICAgICB0aGlzLmZhbWl4Q2xhc3Nlcy5hZGQoZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEludGVyZmFjZSkge1xuICAgICAgICAgICAgdGhpcy5mYW1peEludGVyZmFjZXMuYWRkKGVsZW1lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBNb2R1bGUpIHtcbiAgICAgICAgICAgIHRoaXMuZmFtaXhNb2R1bGVzLmFkZChlbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgVmFyaWFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZmFtaXhWYXJpYWJsZXMuYWRkKGVsZW1lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBNZXRob2QpIHtcbiAgICAgICAgICAgIHRoaXMuZmFtaXhNZXRob2RzLmFkZChlbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgRmFtaXhGdW5jdGlvbkVudGl0eSB8fCBlbGVtZW50IGluc3RhbmNlb2YgQXJyb3dGdW5jdGlvbikge1xuICAgICAgICAgICAgdGhpcy5mYW1peEZ1bmN0aW9ucy5hZGQoZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFNjcmlwdEVudGl0eSB8fCBlbGVtZW50IGluc3RhbmNlb2YgTW9kdWxlKSB7XG4gICAgICAgICAgICB0aGlzLmZhbWl4RmlsZXMuYWRkKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZWxlbWVudHMuYWRkKGVsZW1lbnQpO1xuICAgICAgICBlbGVtZW50LmlkID0gdGhpcy5pZENvdW50ZXI7XG4gICAgICAgIHRoaXMuaWRDb3VudGVyKys7XG4gICAgICAgIHRoaXMudmFsaWRhdGVGUU5zKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmFsaWRhdGVzIHRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZXMgb2YgYWxsIEZhbWl4IGVsZW1lbnRzXG4gICAgICovXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUZRTnMoKTogdm9pZCB7XG4gICAgICAgIC8vIG1ha2Ugc3VyZSBhbGwgZWxlbWVudHMgaGF2ZSB1bmlxdWUgZnVsbHkgcXVhbGlmaWVkIG5hbWVzXG4gICAgICAgIGNvbnN0IGZxbnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIEFycmF5LmZyb20odGhpcy5lbGVtZW50cy52YWx1ZXMoKSkpIHtcbiAgICAgICAgICAgIC8vIGlnbm9yZSBldmVyeXRoaW5nIHRoYXQgaXMgbm90IGEgTmFtZWRFbnRpdHlcbiAgICAgICAgICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgTmFtZWRFbnRpdHkpIHtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5mdWxseVF1YWxpZmllZE5hbWUgJiYgZnFucy5oYXMoZWxlbWVudC5mdWxseVF1YWxpZmllZE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRoZUV4aXN0aW5nRWxlbWVudCA9IEFycmF5LmZyb20odGhpcy5lbGVtZW50cy52YWx1ZXMoKSkuZmluZChlID0+IChlIGFzIE5hbWVkRW50aXR5KS5mdWxseVF1YWxpZmllZE5hbWUgPT09IGVsZW1lbnQuZnVsbHlRdWFsaWZpZWROYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgJHtlbGVtZW50LmZ1bGx5UXVhbGlmaWVkTmFtZX0gaXMgbm90IHVuaXF1ZS5cXG5JdCBleGlzdHMgZm9yICR7dGhlRXhpc3RpbmdFbGVtZW50Py5nZXRKU09OKCl9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHRoZU5hbWUgPSAoZWxlbWVudCBhcyBOYW1lZEVudGl0eSkuZnVsbHlRdWFsaWZpZWROYW1lO1xuICAgICAgICAgICAgICAgIGlmICh0aGVOYW1lID09PSB1bmRlZmluZWQgfHwgdGhlTmFtZSA9PT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBlbGVtZW50ICR7ZWxlbWVudC5jb25zdHJ1Y3Rvci5uYW1lfSB3aXRoIGlkICR7ZWxlbWVudC5pZH0gaGFzIG5vIHZhbGlkIGZ1bGx5IHF1YWxpZmllZCBuYW1lYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZxbnMuYWRkKHRoZU5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVwb3NpdG9yeVxuICAgICAqIEByZXR1cm5zIEEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVwb3NpdG9yeVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRKU09OKCk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXQgPSBcIltcIjtcbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIEFycmF5LmZyb20odGhpcy5lbGVtZW50cy52YWx1ZXMoKSkpIHtcbiAgICAgICAgICAgIHJldCA9IHJldCArIGVsZW1lbnQuZ2V0SlNPTigpICsgXCIsXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0ID0gcmV0LnN1YnN0cmluZygwLCByZXQubGVuZ3RoIC0gMSk7XG4gICAgICAgIHJldHVybiByZXQgKyBcIl1cIjtcbiAgICB9XG59XG4iXX0=
@@ -15,17 +15,27 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  const Famix = __importStar(require("./model/famix"));
26
36
  const famix_base_element_1 = require("./famix_base_element");
27
37
  const famix_JSON_exporter_1 = require("./famix_JSON_exporter");
28
38
  const famix_repository_1 = require("./famix_repository");
29
39
  const model = { Famix };
30
40
  module.exports = { FamixBaseElement: famix_base_element_1.FamixBaseElement, FamixJSONExporter: famix_JSON_exporter_1.FamixJSONExporter, FamixRepository: famix_repository_1.FamixRepository, model };
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2ZhbWl4L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFEQUF1QztBQUN2Qyw2REFBd0Q7QUFDeEQsK0RBQTBEO0FBQzFELHlEQUFxRDtBQUVyRCxNQUFNLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBRXhCLGlCQUFTLEVBQUUsZ0JBQWdCLEVBQWhCLHFDQUFnQixFQUFFLGlCQUFpQixFQUFqQix1Q0FBaUIsRUFBRSxlQUFlLEVBQWYsa0NBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEZhbWl4IGZyb20gXCIuL21vZGVsL2ZhbWl4XCI7XG5pbXBvcnQgeyBGYW1peEJhc2VFbGVtZW50IH0gZnJvbSBcIi4vZmFtaXhfYmFzZV9lbGVtZW50XCI7XG5pbXBvcnQgeyBGYW1peEpTT05FeHBvcnRlciB9IGZyb20gXCIuL2ZhbWl4X0pTT05fZXhwb3J0ZXJcIjtcbmltcG9ydCB7IEZhbWl4UmVwb3NpdG9yeSB9IGZyb20gXCIuL2ZhbWl4X3JlcG9zaXRvcnlcIjtcblxuY29uc3QgbW9kZWwgPSB7IEZhbWl4IH07XG5cbmV4cG9ydCA9IHsgRmFtaXhCYXNlRWxlbWVudCwgRmFtaXhKU09ORXhwb3J0ZXIsIEZhbWl4UmVwb3NpdG9yeSwgbW9kZWwgfTtcbiJdfQ==
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2ZhbWl4L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFBdUM7QUFDdkMsNkRBQXdEO0FBQ3hELCtEQUEwRDtBQUMxRCx5REFBcUQ7QUFFckQsTUFBTSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUV4QixpQkFBUyxFQUFFLGdCQUFnQixFQUFoQixxQ0FBZ0IsRUFBRSxpQkFBaUIsRUFBakIsdUNBQWlCLEVBQUUsZUFBZSxFQUFmLGtDQUFlLEVBQUUsS0FBSyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBGYW1peCBmcm9tIFwiLi9tb2RlbC9mYW1peFwiO1xuaW1wb3J0IHsgRmFtaXhCYXNlRWxlbWVudCB9IGZyb20gXCIuL2ZhbWl4X2Jhc2VfZWxlbWVudFwiO1xuaW1wb3J0IHsgRmFtaXhKU09ORXhwb3J0ZXIgfSBmcm9tIFwiLi9mYW1peF9KU09OX2V4cG9ydGVyXCI7XG5pbXBvcnQgeyBGYW1peFJlcG9zaXRvcnkgfSBmcm9tIFwiLi9mYW1peF9yZXBvc2l0b3J5XCI7XG5cbmNvbnN0IG1vZGVsID0geyBGYW1peCB9O1xuXG5leHBvcnQgPSB7IEZhbWl4QmFzZUVsZW1lbnQsIEZhbWl4SlNPTkV4cG9ydGVyLCBGYW1peFJlcG9zaXRvcnksIG1vZGVsIH07XG4iXX0=
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  const ts_morph_1 = require("ts-morph");
27
37
  const path = __importStar(require("path"));
@@ -139,4 +149,4 @@ function replaceMethodCalls(cls, methodName, propName) {
139
149
  function capitalize(str) {
140
150
  return str.charAt(0).toUpperCase() + str.slice(1);
141
151
  }
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmYWN0b3ItZ2V0dGVyLXNldHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWZhY3RvcmVyL3JlZmFjdG9yLWdldHRlci1zZXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUE2RTtBQUM3RSwyQ0FBNkI7QUFFN0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQkFBTyxFQUFFLENBQUM7QUFDOUIsT0FBTyxDQUFDLHFCQUFxQixDQUFDLGlEQUFpRCxDQUFDLENBQUM7QUFDakYsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUUzRixPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0lBQzFDLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUxQyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDeEMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNsQixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM5QixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEMsSUFBSSxRQUFnQixDQUFDO1lBRXJCLElBQUksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsUUFBUSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsVUFBVSxDQUFDLEtBQUss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QUMsQ0FBQyxDQUFDLENBQUM7QUFDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENsYXNzRGVjbGFyYXRpb24sIFByb2plY3QsIFNvdXJjZUZpbGUsIFN5bnRheEtpbmQgfSBmcm9tIFwidHMtbW9ycGhcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuY29uc3QgcHJvamVjdCA9IG5ldyBQcm9qZWN0KCk7XG5wcm9qZWN0LmFkZFNvdXJjZUZpbGVzQXRQYXRocyhcInNyYy9saWIvZmFtaXgvbW9kZWwvZmFtaXgvZmFtaXhfYmFzZV9lbGVtZW50LnRzXCIpO1xucHJvamVjdC5nZXRTb3VyY2VGaWxlcygpLmZvckVhY2goc291cmNlRmlsZSA9PiB7IGNvbnNvbGUubG9nKHNvdXJjZUZpbGUuZ2V0RmlsZVBhdGgoKSk7IH0pO1xuXG5wcm9qZWN0LmdldFNvdXJjZUZpbGVzKCkuZm9yRWFjaChzb3VyY2VGaWxlID0+IHtcbiAgICBjb25zdCB0eXBlTWFwID0gY3JlYXRlVHlwZU1hcChzb3VyY2VGaWxlKTtcblxuICAgIGNvbnN0IGNsYXNzZXMgPSBzb3VyY2VGaWxlLmdldENsYXNzZXMoKTtcbiAgICBjbGFzc2VzLmZvckVhY2goY2xzID0+IHtcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IGNscy5nZXRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIGNscy5nZXRNZXRob2RzKCkuZm9yRWFjaChtZXRob2QgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWV0aG9kTmFtZSA9IG1ldGhvZC5nZXROYW1lKCk7XG4gICAgICAgICAgICBsZXQgcHJvcE5hbWU6IHN0cmluZztcblxuICAgICAgICAgICAgaWYgKGlzRWxpZ2libGVHZXR0ZXIobWV0aG9kTmFtZSkpIHtcbiAgICAgICAgICAgICAgICBwcm9wTmFtZSA9IG1ldGhvZE5hbWUuY2hhckF0KDMpLnRvTG93ZXJDYXNlKCkgKyBtZXRob2ROYW1lLnNsaWNlKDQpO1xuICAgICAgICAgICAgICAgIHJlbmFtZVByb3BlcnR5SWZFeGlzdHMoY2xzLCBwcm9wTmFtZSwgcHJvcGVydGllcyk7XG4gICAgICAgICAgICAgICAgcmVmYWN0b3JUb0dldHRlcihjbHMsIG1ldGhvZCwgcHJvcE5hbWUsIHR5cGVNYXApO1xuICAgICAgICAgICAgICAgIHJlcGxhY2VNZXRob2RDYWxscyhjbHMsIGBnZXQke2NhcGl0YWxpemUocHJvcE5hbWUpfWAsIHByb3BOYW1lKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNFbGlnaWJsZVNldHRlcihtZXRob2ROYW1lKSkge1xuICAgICAgICAgICAgICAgIHByb3BOYW1lID0gbWV0aG9kTmFtZS5jaGFyQXQoMykudG9Mb3dlckNhc2UoKSArIG1ldGhvZE5hbWUuc2xpY2UoNCk7XG4gICAgICAgICAgICAgICAgcmVuYW1lUHJvcGVydHlJZkV4aXN0cyhjbHMsIHByb3BOYW1lLCBwcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgICAgICByZWZhY3RvclRvU2V0dGVyKGNscywgbWV0aG9kLCBwcm9wTmFtZSwgdHlwZU1hcCk7XG4gICAgICAgICAgICAgICAgcmVwbGFjZU1ldGhvZENhbGxzKGNscywgYHNldCR7Y2FwaXRhbGl6ZShwcm9wTmFtZSl9YCwgcHJvcE5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn0pO1xuXG5wcm9qZWN0LnNhdmUoKS50aGVuKCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhcIlJlZmFjdG9yaW5nIGNvbXBsZXRlIVwiKTtcbn0pO1xuXG5mdW5jdGlvbiBpc0VsaWdpYmxlR2V0dGVyKG1ldGhvZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBtZXRob2ROYW1lLnN0YXJ0c1dpdGgoXCJnZXRcIikgJiYgL15bQS1aXVthLXpBLVowLTldKiQvLnRlc3QobWV0aG9kTmFtZS5zbGljZSgzKSkgJiYgIW1ldGhvZE5hbWUuaW5jbHVkZXMoXCJKU09OXCIpO1xufVxuXG5mdW5jdGlvbiBpc0VsaWdpYmxlU2V0dGVyKG1ldGhvZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBtZXRob2ROYW1lLnN0YXJ0c1dpdGgoXCJzZXRcIikgJiYgL15bQS1aXVthLXpBLVowLTldKiQvLnRlc3QobWV0aG9kTmFtZS5zbGljZSgzKSk7XG59XG5cbmZ1bmN0aW9uIHJlbmFtZVByb3BlcnR5SWZFeGlzdHMoY2xzOiBhbnksIHByb3BOYW1lOiBzdHJpbmcsIHByb3BlcnRpZXM6IGFueVtdKSB7XG4gICAgY29uc3QgZXhpc3RpbmdQcm9wZXJ0eSA9IHByb3BlcnRpZXMuZmluZChwcm9wID0+IHByb3AuZ2V0TmFtZSgpID09PSBwcm9wTmFtZSk7XG4gICAgaWYgKGV4aXN0aW5nUHJvcGVydHkpIHtcbiAgICAgICAgZXhpc3RpbmdQcm9wZXJ0eS5yZW5hbWUoYF8ke3Byb3BOYW1lfWApO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlVHlwZU1hcChzb3VyY2VGaWxlOiBTb3VyY2VGaWxlKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3QgdHlwZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgY29uc3QgaW1wb3J0RGVjbGFyYXRpb25zID0gc291cmNlRmlsZS5nZXRJbXBvcnREZWNsYXJhdGlvbnMoKTtcblxuICAgIGltcG9ydERlY2xhcmF0aW9ucy5mb3JFYWNoKGltcG9ydERlY2wgPT4ge1xuICAgICAgICBjb25zdCBtb2R1bGVTcGVjaWZpZXIgPSBpbXBvcnREZWNsLmdldE1vZHVsZVNwZWNpZmllcigpLmdldFRleHQoKS5yZXBsYWNlKC9bJ1wiXS9nLCAnJyk7XG4gICAgICAgIGNvbnN0IGFic29sdXRlUGF0aCA9IHBhdGgucmVzb2x2ZShzb3VyY2VGaWxlLmdldERpcmVjdG9yeSgpLmdldFBhdGgoKSwgbW9kdWxlU3BlY2lmaWVyKTtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVQYXRoKGFic29sdXRlUGF0aCk7XG4gICAgICAgIGNvbnN0IG5hbWVkSW1wb3J0cyA9IGltcG9ydERlY2wuZ2V0TmFtZWRJbXBvcnRzKCk7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRJbXBvcnQgPSBpbXBvcnREZWNsLmdldERlZmF1bHRJbXBvcnQoKTtcblxuICAgICAgICBuYW1lZEltcG9ydHMuZm9yRWFjaChuYW1lZEltcG9ydCA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgTmFtZWQgaW1wb3J0OiAke25hbWVkSW1wb3J0LmdldE5hbWUoKX0sIHBhdGg6ICR7bm9ybWFsaXplZFBhdGh9YCk7XG4gICAgICAgICAgICB0eXBlTWFwLnNldChuYW1lZEltcG9ydC5nZXROYW1lKCksIG5vcm1hbGl6ZWRQYXRoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGRlZmF1bHRJbXBvcnQpIHtcbiAgICAgICAgICAgIHR5cGVNYXAuc2V0KGRlZmF1bHRJbXBvcnQuZ2V0VGV4dCgpLCBub3JtYWxpemVkUGF0aCk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0eXBlTWFwO1xufVxuXG5mdW5jdGlvbiByZWZhY3RvclRvR2V0dGVyKGNsczogYW55LCBtZXRob2Q6IGFueSwgcHJvcE5hbWU6IHN0cmluZywgdHlwZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPikge1xuICAgIGNvbnN0IGdldHRlck5hbWUgPSBwcm9wTmFtZTtcbiAgICBjb25zdCByZW5hbWVkUHJvcCA9IGBfJHtwcm9wTmFtZX1gO1xuICAgIGNvbnN0IHJldHVyblR5cGUgPSBtZXRob2QuZ2V0UmV0dXJuVHlwZSgpLmdldFRleHQoKTtcbiAgICBjb25zdCBzaW1wbGlmaWVkVHlwZSA9IHJlcGxhY2VMb25nVHlwZVBhdGhzKHJldHVyblR5cGUsIHR5cGVNYXApO1xuXG4gICAgY29uc3QgZ2V0dGVyQm9keSA9IG1ldGhvZC5nZXRCb2R5VGV4dCgpLnJlcGxhY2UobmV3IFJlZ0V4cChgdGhpc1xcXFwuJHtwcm9wTmFtZX1gLCAnZycpLCBgdGhpcy4ke3JlbmFtZWRQcm9wfWApO1xuXG4gICAgY2xzLmFkZEdldEFjY2Vzc29yKHtcbiAgICAgICAgbmFtZTogZ2V0dGVyTmFtZSxcbiAgICAgICAgc3RhdGVtZW50czogZ2V0dGVyQm9keSxcbiAgICAgICAgLy8gcmV0dXJuVHlwZTogc2ltcGxpZmllZFR5cGUsICAvLyBkb24ndCBuZWVkIGEgcmV0dXJuIHR5cGUgZm9yIGdldHRlclxuICAgIH0pO1xuXG4gICAgbWV0aG9kLnJlbW92ZSgpO1xufVxuXG5mdW5jdGlvbiByZWZhY3RvclRvU2V0dGVyKGNsczogYW55LCBtZXRob2Q6IGFueSwgcHJvcE5hbWU6IHN0cmluZywgdHlwZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPikge1xuICAgIGNvbnN0IHNldHRlck5hbWUgPSBwcm9wTmFtZTtcbiAgICBjb25zdCByZW5hbWVkUHJvcCA9IGBfJHtwcm9wTmFtZX1gO1xuXG4gICAgY29uc3QgcGFyYW1ldGVyID0gbWV0aG9kLmdldFBhcmFtZXRlcnMoKVswXTtcbiAgICBjb25zdCBwYXJhbU5hbWUgPSBwYXJhbWV0ZXIuZ2V0TmFtZSgpO1xuICAgIGNvbnN0IHBhcmFtVHlwZSA9IHJlcGxhY2VMb25nVHlwZVBhdGhzKHBhcmFtZXRlci5nZXRUeXBlKCkuZ2V0VGV4dCgpLCB0eXBlTWFwKTtcblxuICAgIGNvbnN0IHNldHRlckJvZHkgPSBtZXRob2QuZ2V0Qm9keVRleHQoKS5yZXBsYWNlKG5ldyBSZWdFeHAoYHRoaXNcXFxcLiR7cHJvcE5hbWV9YCwgJ2cnKSwgYHRoaXMuJHtyZW5hbWVkUHJvcH1gKTtcblxuICAgIGNscy5hZGRTZXRBY2Nlc3Nvcih7XG4gICAgICAgIG5hbWU6IHNldHRlck5hbWUsXG4gICAgICAgIHN0YXRlbWVudHM6IHNldHRlckJvZHksXG4gICAgICAgIHBhcmFtZXRlcnM6IFt7IG5hbWU6IHBhcmFtTmFtZSwgdHlwZTogcGFyYW1UeXBlIH1dLFxuICAgIH0pO1xuXG4gICAgbWV0aG9kLnJlbW92ZSgpO1xufVxuXG5mdW5jdGlvbiByZXBsYWNlTG9uZ1R5cGVQYXRocyh0eXBlOiBzdHJpbmcsIHR5cGVNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcge1xuICAgIGZvciAoY29uc3QgW2ltcG9ydE5hbWUsIGltcG9ydFBhdGhdIG9mIHR5cGVNYXAuZW50cmllcygpKSB7XG4gICAgICAgIGNvbnN0IGxvbmdQYXRoID0gYGltcG9ydChcIiR7aW1wb3J0UGF0aH1cIikke2ltcG9ydE5hbWV9YDtcbiAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBpbXBvcnRcXFxcKFtcIiddJHtub3JtYWxpemVQYXRoKGltcG9ydFBhdGgpfVtcIiddXFxcXClcXFxcLiR7aW1wb3J0TmFtZX1gLCAnZycpO1xuICAgICAgICBpZiAocmVnZXgudGVzdCh0eXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGltcG9ydE5hbWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHR5cGU7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVBhdGgoZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGZpbGVQYXRoLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZU1ldGhvZENhbGxzKGNsczogQ2xhc3NEZWNsYXJhdGlvbiwgbWV0aG9kTmFtZTogc3RyaW5nLCBwcm9wTmFtZTogc3RyaW5nKSB7XG4gICAgY2xzLmdldERlc2NlbmRhbnRzT2ZLaW5kKFN5bnRheEtpbmQuQ2FsbEV4cHJlc3Npb24pLmZvckVhY2goY2FsbEV4cHIgPT4ge1xuICAgICAgICBjb25zdCBleHByID0gY2FsbEV4cHIuZ2V0RXhwcmVzc2lvbigpO1xuICAgICAgICBpZiAoZXhwci5nZXRUZXh0KCkgPT09IGB0aGlzLiR7bWV0aG9kTmFtZX1gKSB7XG4gICAgICAgICAgICBjYWxsRXhwci5yZXBsYWNlV2l0aFRleHQoYHRoaXMuJHtwcm9wTmFtZX1gKTtcbiAgICAgICAgfSBlbHNlIGlmIChleHByLmdldFRleHQoKSA9PT0gYHRoaXMuJHttZXRob2ROYW1lfWAgJiYgY2FsbEV4cHIuZ2V0QXJndW1lbnRzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY2FsbEV4cHIucmVwbGFjZVdpdGhUZXh0KGB0aGlzLiR7cHJvcE5hbWV9ID0gJHtjYWxsRXhwci5nZXRBcmd1bWVudHMoKVswXS5nZXRUZXh0KCl9YCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gY2FwaXRhbGl6ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcbn1cbiJdfQ==
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmYWN0b3ItZ2V0dGVyLXNldHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWZhY3RvcmVyL3JlZmFjdG9yLWdldHRlci1zZXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBNkU7QUFDN0UsMkNBQTZCO0FBRTdCLE1BQU0sT0FBTyxHQUFHLElBQUksa0JBQU8sRUFBRSxDQUFDO0FBQzlCLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO0FBQ2pGLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFM0YsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtJQUMxQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFMUMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3hDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDbEIsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDOUIsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BDLElBQUksUUFBZ0IsQ0FBQztZQUVyQixJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLFFBQVEsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLFVBQVUs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QUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGFzc0RlY2xhcmF0aW9uLCBQcm9qZWN0LCBTb3VyY2VGaWxlLCBTeW50YXhLaW5kIH0gZnJvbSBcInRzLW1vcnBoXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmNvbnN0IHByb2plY3QgPSBuZXcgUHJvamVjdCgpO1xucHJvamVjdC5hZGRTb3VyY2VGaWxlc0F0UGF0aHMoXCJzcmMvbGliL2ZhbWl4L21vZGVsL2ZhbWl4L2ZhbWl4X2Jhc2VfZWxlbWVudC50c1wiKTtcbnByb2plY3QuZ2V0U291cmNlRmlsZXMoKS5mb3JFYWNoKHNvdXJjZUZpbGUgPT4geyBjb25zb2xlLmxvZyhzb3VyY2VGaWxlLmdldEZpbGVQYXRoKCkpOyB9KTtcblxucHJvamVjdC5nZXRTb3VyY2VGaWxlcygpLmZvckVhY2goc291cmNlRmlsZSA9PiB7XG4gICAgY29uc3QgdHlwZU1hcCA9IGNyZWF0ZVR5cGVNYXAoc291cmNlRmlsZSk7XG5cbiAgICBjb25zdCBjbGFzc2VzID0gc291cmNlRmlsZS5nZXRDbGFzc2VzKCk7XG4gICAgY2xhc3Nlcy5mb3JFYWNoKGNscyA9PiB7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBjbHMuZ2V0UHJvcGVydGllcygpO1xuICAgICAgICBjbHMuZ2V0TWV0aG9kcygpLmZvckVhY2gobWV0aG9kID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBtZXRob2QuZ2V0TmFtZSgpO1xuICAgICAgICAgICAgbGV0IHByb3BOYW1lOiBzdHJpbmc7XG5cbiAgICAgICAgICAgIGlmIChpc0VsaWdpYmxlR2V0dGVyKG1ldGhvZE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcHJvcE5hbWUgPSBtZXRob2ROYW1lLmNoYXJBdCgzKS50b0xvd2VyQ2FzZSgpICsgbWV0aG9kTmFtZS5zbGljZSg0KTtcbiAgICAgICAgICAgICAgICByZW5hbWVQcm9wZXJ0eUlmRXhpc3RzKGNscywgcHJvcE5hbWUsIHByb3BlcnRpZXMpO1xuICAgICAgICAgICAgICAgIHJlZmFjdG9yVG9HZXR0ZXIoY2xzLCBtZXRob2QsIHByb3BOYW1lLCB0eXBlTWFwKTtcbiAgICAgICAgICAgICAgICByZXBsYWNlTWV0aG9kQ2FsbHMoY2xzLCBgZ2V0JHtjYXBpdGFsaXplKHByb3BOYW1lKX1gLCBwcm9wTmFtZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzRWxpZ2libGVTZXR0ZXIobWV0aG9kTmFtZSkpIHtcbiAgICAgICAgICAgICAgICBwcm9wTmFtZSA9IG1ldGhvZE5hbWUuY2hhckF0KDMpLnRvTG93ZXJDYXNlKCkgKyBtZXRob2ROYW1lLnNsaWNlKDQpO1xuICAgICAgICAgICAgICAgIHJlbmFtZVByb3BlcnR5SWZFeGlzdHMoY2xzLCBwcm9wTmFtZSwgcHJvcGVydGllcyk7XG4gICAgICAgICAgICAgICAgcmVmYWN0b3JUb1NldHRlcihjbHMsIG1ldGhvZCwgcHJvcE5hbWUsIHR5cGVNYXApO1xuICAgICAgICAgICAgICAgIHJlcGxhY2VNZXRob2RDYWxscyhjbHMsIGBzZXQke2NhcGl0YWxpemUocHJvcE5hbWUpfWAsIHByb3BOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59KTtcblxucHJvamVjdC5zYXZlKCkudGhlbigoKSA9PiB7XG4gICAgY29uc29sZS5sb2coXCJSZWZhY3RvcmluZyBjb21wbGV0ZSFcIik7XG59KTtcblxuZnVuY3Rpb24gaXNFbGlnaWJsZUdldHRlcihtZXRob2ROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbWV0aG9kTmFtZS5zdGFydHNXaXRoKFwiZ2V0XCIpICYmIC9eW0EtWl1bYS16QS1aMC05XSokLy50ZXN0KG1ldGhvZE5hbWUuc2xpY2UoMykpICYmICFtZXRob2ROYW1lLmluY2x1ZGVzKFwiSlNPTlwiKTtcbn1cblxuZnVuY3Rpb24gaXNFbGlnaWJsZVNldHRlcihtZXRob2ROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbWV0aG9kTmFtZS5zdGFydHNXaXRoKFwic2V0XCIpICYmIC9eW0EtWl1bYS16QS1aMC05XSokLy50ZXN0KG1ldGhvZE5hbWUuc2xpY2UoMykpO1xufVxuXG5mdW5jdGlvbiByZW5hbWVQcm9wZXJ0eUlmRXhpc3RzKGNsczogYW55LCBwcm9wTmFtZTogc3RyaW5nLCBwcm9wZXJ0aWVzOiBhbnlbXSkge1xuICAgIGNvbnN0IGV4aXN0aW5nUHJvcGVydHkgPSBwcm9wZXJ0aWVzLmZpbmQocHJvcCA9PiBwcm9wLmdldE5hbWUoKSA9PT0gcHJvcE5hbWUpO1xuICAgIGlmIChleGlzdGluZ1Byb3BlcnR5KSB7XG4gICAgICAgIGV4aXN0aW5nUHJvcGVydHkucmVuYW1lKGBfJHtwcm9wTmFtZX1gKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVR5cGVNYXAoc291cmNlRmlsZTogU291cmNlRmlsZSk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGNvbnN0IHR5cGVNYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIGNvbnN0IGltcG9ydERlY2xhcmF0aW9ucyA9IHNvdXJjZUZpbGUuZ2V0SW1wb3J0RGVjbGFyYXRpb25zKCk7XG5cbiAgICBpbXBvcnREZWNsYXJhdGlvbnMuZm9yRWFjaChpbXBvcnREZWNsID0+IHtcbiAgICAgICAgY29uc3QgbW9kdWxlU3BlY2lmaWVyID0gaW1wb3J0RGVjbC5nZXRNb2R1bGVTcGVjaWZpZXIoKS5nZXRUZXh0KCkucmVwbGFjZSgvWydcIl0vZywgJycpO1xuICAgICAgICBjb25zdCBhYnNvbHV0ZVBhdGggPSBwYXRoLnJlc29sdmUoc291cmNlRmlsZS5nZXREaXJlY3RvcnkoKS5nZXRQYXRoKCksIG1vZHVsZVNwZWNpZmllcik7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplUGF0aChhYnNvbHV0ZVBhdGgpO1xuICAgICAgICBjb25zdCBuYW1lZEltcG9ydHMgPSBpbXBvcnREZWNsLmdldE5hbWVkSW1wb3J0cygpO1xuICAgICAgICBjb25zdCBkZWZhdWx0SW1wb3J0ID0gaW1wb3J0RGVjbC5nZXREZWZhdWx0SW1wb3J0KCk7XG5cbiAgICAgICAgbmFtZWRJbXBvcnRzLmZvckVhY2gobmFtZWRJbXBvcnQgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYE5hbWVkIGltcG9ydDogJHtuYW1lZEltcG9ydC5nZXROYW1lKCl9LCBwYXRoOiAke25vcm1hbGl6ZWRQYXRofWApO1xuICAgICAgICAgICAgdHlwZU1hcC5zZXQobmFtZWRJbXBvcnQuZ2V0TmFtZSgpLCBub3JtYWxpemVkUGF0aCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChkZWZhdWx0SW1wb3J0KSB7XG4gICAgICAgICAgICB0eXBlTWFwLnNldChkZWZhdWx0SW1wb3J0LmdldFRleHQoKSwgbm9ybWFsaXplZFBhdGgpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHlwZU1hcDtcbn1cblxuZnVuY3Rpb24gcmVmYWN0b3JUb0dldHRlcihjbHM6IGFueSwgbWV0aG9kOiBhbnksIHByb3BOYW1lOiBzdHJpbmcsIHR5cGVNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4pIHtcbiAgICBjb25zdCBnZXR0ZXJOYW1lID0gcHJvcE5hbWU7XG4gICAgY29uc3QgcmVuYW1lZFByb3AgPSBgXyR7cHJvcE5hbWV9YDtcbiAgICBjb25zdCByZXR1cm5UeXBlID0gbWV0aG9kLmdldFJldHVyblR5cGUoKS5nZXRUZXh0KCk7XG4gICAgY29uc3Qgc2ltcGxpZmllZFR5cGUgPSByZXBsYWNlTG9uZ1R5cGVQYXRocyhyZXR1cm5UeXBlLCB0eXBlTWFwKTtcblxuICAgIGNvbnN0IGdldHRlckJvZHkgPSBtZXRob2QuZ2V0Qm9keVRleHQoKS5yZXBsYWNlKG5ldyBSZWdFeHAoYHRoaXNcXFxcLiR7cHJvcE5hbWV9YCwgJ2cnKSwgYHRoaXMuJHtyZW5hbWVkUHJvcH1gKTtcblxuICAgIGNscy5hZGRHZXRBY2Nlc3Nvcih7XG4gICAgICAgIG5hbWU6IGdldHRlck5hbWUsXG4gICAgICAgIHN0YXRlbWVudHM6IGdldHRlckJvZHksXG4gICAgICAgIC8vIHJldHVyblR5cGU6IHNpbXBsaWZpZWRUeXBlLCAgLy8gZG9uJ3QgbmVlZCBhIHJldHVybiB0eXBlIGZvciBnZXR0ZXJcbiAgICB9KTtcblxuICAgIG1ldGhvZC5yZW1vdmUoKTtcbn1cblxuZnVuY3Rpb24gcmVmYWN0b3JUb1NldHRlcihjbHM6IGFueSwgbWV0aG9kOiBhbnksIHByb3BOYW1lOiBzdHJpbmcsIHR5cGVNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4pIHtcbiAgICBjb25zdCBzZXR0ZXJOYW1lID0gcHJvcE5hbWU7XG4gICAgY29uc3QgcmVuYW1lZFByb3AgPSBgXyR7cHJvcE5hbWV9YDtcblxuICAgIGNvbnN0IHBhcmFtZXRlciA9IG1ldGhvZC5nZXRQYXJhbWV0ZXJzKClbMF07XG4gICAgY29uc3QgcGFyYW1OYW1lID0gcGFyYW1ldGVyLmdldE5hbWUoKTtcbiAgICBjb25zdCBwYXJhbVR5cGUgPSByZXBsYWNlTG9uZ1R5cGVQYXRocyhwYXJhbWV0ZXIuZ2V0VHlwZSgpLmdldFRleHQoKSwgdHlwZU1hcCk7XG5cbiAgICBjb25zdCBzZXR0ZXJCb2R5ID0gbWV0aG9kLmdldEJvZHlUZXh0KCkucmVwbGFjZShuZXcgUmVnRXhwKGB0aGlzXFxcXC4ke3Byb3BOYW1lfWAsICdnJyksIGB0aGlzLiR7cmVuYW1lZFByb3B9YCk7XG5cbiAgICBjbHMuYWRkU2V0QWNjZXNzb3Ioe1xuICAgICAgICBuYW1lOiBzZXR0ZXJOYW1lLFxuICAgICAgICBzdGF0ZW1lbnRzOiBzZXR0ZXJCb2R5LFxuICAgICAgICBwYXJhbWV0ZXJzOiBbeyBuYW1lOiBwYXJhbU5hbWUsIHR5cGU6IHBhcmFtVHlwZSB9XSxcbiAgICB9KTtcblxuICAgIG1ldGhvZC5yZW1vdmUoKTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZUxvbmdUeXBlUGF0aHModHlwZTogc3RyaW5nLCB0eXBlTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nIHtcbiAgICBmb3IgKGNvbnN0IFtpbXBvcnROYW1lLCBpbXBvcnRQYXRoXSBvZiB0eXBlTWFwLmVudHJpZXMoKSkge1xuICAgICAgICBjb25zdCBsb25nUGF0aCA9IGBpbXBvcnQoXCIke2ltcG9ydFBhdGh9XCIpJHtpbXBvcnROYW1lfWA7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgaW1wb3J0XFxcXChbXCInXSR7bm9ybWFsaXplUGF0aChpbXBvcnRQYXRoKX1bXCInXVxcXFwpXFxcXC4ke2ltcG9ydE5hbWV9YCwgJ2cnKTtcbiAgICAgICAgaWYgKHJlZ2V4LnRlc3QodHlwZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBpbXBvcnROYW1lO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0eXBlO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVQYXRoKGZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBmaWxlUGF0aC5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VNZXRob2RDYWxscyhjbHM6IENsYXNzRGVjbGFyYXRpb24sIG1ldGhvZE5hbWU6IHN0cmluZywgcHJvcE5hbWU6IHN0cmluZykge1xuICAgIGNscy5nZXREZXNjZW5kYW50c09mS2luZChTeW50YXhLaW5kLkNhbGxFeHByZXNzaW9uKS5mb3JFYWNoKGNhbGxFeHByID0+IHtcbiAgICAgICAgY29uc3QgZXhwciA9IGNhbGxFeHByLmdldEV4cHJlc3Npb24oKTtcbiAgICAgICAgaWYgKGV4cHIuZ2V0VGV4dCgpID09PSBgdGhpcy4ke21ldGhvZE5hbWV9YCkge1xuICAgICAgICAgICAgY2FsbEV4cHIucmVwbGFjZVdpdGhUZXh0KGB0aGlzLiR7cHJvcE5hbWV9YCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXhwci5nZXRUZXh0KCkgPT09IGB0aGlzLiR7bWV0aG9kTmFtZX1gICYmIGNhbGxFeHByLmdldEFyZ3VtZW50cygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNhbGxFeHByLnJlcGxhY2VXaXRoVGV4dChgdGhpcy4ke3Byb3BOYW1lfSA9ICR7Y2FsbEV4cHIuZ2V0QXJndW1lbnRzKClbMF0uZ2V0VGV4dCgpfWApO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGNhcGl0YWxpemUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7XG59XG4iXX0=
@@ -16,13 +16,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
16
16
  }) : function(o, v) {
17
17
  o["default"] = v;
18
18
  });
19
- var __importStar = (this && this.__importStar) || function (mod) {
20
- if (mod && mod.__esModule) return mod;
21
- var result = {};
22
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
- __setModuleDefault(result, mod);
24
- return result;
25
- };
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
26
36
  Object.defineProperty(exports, "__esModule", { value: true });
27
37
  const child_process_1 = require("child_process");
28
38
  const path = __importStar(require("path"));
@@ -39,4 +49,4 @@ const child = (0, child_process_1.spawn)('node', args, { stdio: 'inherit' });
39
49
  child.on('close', (code) => {
40
50
  process.exit(code);
41
51
  });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHMyZmFtaXgtY2xpLXdyYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHMyZmFtaXgtY2xpLXdyYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxpREFBc0M7QUFDdEMsMkNBQTZCO0FBRTdCLHFFQUFxRTtBQUNyRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0FBRTNELHNFQUFzRTtBQUN0RSxNQUFNLElBQUksR0FBRztJQUNYLHNCQUFzQjtJQUN0QiwwQ0FBMEM7SUFDMUMsT0FBTztJQUNQLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0NBQ3pCLENBQUM7QUFFRixNQUFNLEtBQUssR0FBRyxJQUFBLHFCQUFLLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBRXhELEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7SUFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5cbi8vIFJlc29sdmUgdGhlIHBhdGggdG8gdHMyZmFtaXgtY2xpLmpzIHJlbGF0aXZlIHRvIHRoZSB3cmFwcGVyIHNjcmlwdFxuY29uc3QgY2xpUGF0aCA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICd0czJmYW1peC1jbGkuanMnKTtcblxuLy8gQWxsb3cgdHNsb2cgdG8gZGlzcGxheSB0aGUgcHJvcGVyIFR5cGVTY3JpcHQgZmlsZXMgYW5kIGxpbmUgbnVtYmVyc1xuY29uc3QgYXJncyA9IFtcbiAgJy0tZW5hYmxlLXNvdXJjZS1tYXBzJyxcbiAgJy0tZXhwZXJpbWVudGFsLXNwZWNpZmllci1yZXNvbHV0aW9uPW5vZGUnLFxuICBjbGlQYXRoLFxuICAuLi5wcm9jZXNzLmFyZ3Yuc2xpY2UoMilcbl07XG5cbmNvbnN0IGNoaWxkID0gc3Bhd24oJ25vZGUnLCBhcmdzLCB7IHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG5cbmNoaWxkLm9uKCdjbG9zZScsIChjb2RlKSA9PiB7XG4gIHByb2Nlc3MuZXhpdChjb2RlKTtcbn0pO1xuIl19
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHMyZmFtaXgtY2xpLXdyYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHMyZmFtaXgtY2xpLXdyYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsaURBQXNDO0FBQ3RDLDJDQUE2QjtBQUU3QixxRUFBcUU7QUFDckUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztBQUUzRCxzRUFBc0U7QUFDdEUsTUFBTSxJQUFJLEdBQUc7SUFDWCxzQkFBc0I7SUFDdEIsMENBQTBDO0lBQzFDLE9BQU87SUFDUCxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztDQUN6QixDQUFDO0FBRUYsTUFBTSxLQUFLLEdBQUcsSUFBQSxxQkFBSyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUV4RCxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO0lBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG4vLyBSZXNvbHZlIHRoZSBwYXRoIHRvIHRzMmZhbWl4LWNsaS5qcyByZWxhdGl2ZSB0byB0aGUgd3JhcHBlciBzY3JpcHRcbmNvbnN0IGNsaVBhdGggPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAndHMyZmFtaXgtY2xpLmpzJyk7XG5cbi8vIEFsbG93IHRzbG9nIHRvIGRpc3BsYXkgdGhlIHByb3BlciBUeXBlU2NyaXB0IGZpbGVzIGFuZCBsaW5lIG51bWJlcnNcbmNvbnN0IGFyZ3MgPSBbXG4gICctLWVuYWJsZS1zb3VyY2UtbWFwcycsXG4gICctLWV4cGVyaW1lbnRhbC1zcGVjaWZpZXItcmVzb2x1dGlvbj1ub2RlJyxcbiAgY2xpUGF0aCxcbiAgLi4ucHJvY2Vzcy5hcmd2LnNsaWNlKDIpXG5dO1xuXG5jb25zdCBjaGlsZCA9IHNwYXduKCdub2RlJywgYXJncywgeyBzdGRpbzogJ2luaGVyaXQnIH0pO1xuXG5jaGlsZC5vbignY2xvc2UnLCAoY29kZSkgPT4ge1xuICBwcm9jZXNzLmV4aXQoY29kZSk7XG59KTtcbiJdfQ==
@@ -16,13 +16,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
16
16
  }) : function(o, v) {
17
17
  o["default"] = v;
18
18
  });
19
- var __importStar = (this && this.__importStar) || function (mod) {
20
- if (mod && mod.__esModule) return mod;
21
- var result = {};
22
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
- __setModuleDefault(result, mod);
24
- return result;
25
- };
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
26
36
  var __importDefault = (this && this.__importDefault) || function (mod) {
27
37
  return (mod && mod.__esModule) ? mod : { "default": mod };
28
38
  };
@@ -80,4 +90,4 @@ fs.writeFile(jsonFilePath, jsonOutput, (err) => {
80
90
  }
81
91
  });
82
92
  analyze_3.logger.info(`Created: ${jsonFilePath}`);
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHMyZmFtaXgtY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RzMmZhbWl4LWNsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLHVDQUF5QjtBQUN6QixrREFBMEI7QUFDMUIsdUNBQXFDO0FBRXJDLHVDQUFtQztBQUNuQyx1Q0FBbUM7QUFFbkMsTUFBTSxJQUFJLEdBQUcsZUFBSztLQUNiLE9BQU8sQ0FBQyxzRUFBc0UsRUFBRSx3REFBd0QsQ0FBQztLQUN6SSxPQUFPLENBQUMsa0VBQWtFLEVBQUUsc0RBQXNELENBQUM7S0FDbkksS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUM7S0FDbkIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7S0FDYixLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQztLQUNwQixLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztLQUNiLEtBQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDO0tBQ3RCLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0tBQ2IsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7S0FDZixRQUFRLENBQUMsR0FBRyxFQUFFLDhGQUE4RixDQUFDO0tBQzdHLE9BQU8sQ0FBQyxXQUFXLENBQUM7S0FDcEIsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUM7S0FDM0IsUUFBUSxDQUFDLFdBQVcsRUFBRSxzSUFBc0ksQ0FBQztLQUM3SixZQUFZLENBQUMsT0FBTyxDQUFDO0tBQ3JCLFlBQVksQ0FBQyxRQUFRLENBQUM7S0FDdEIsU0FBUyxFQUFFLENBQUM7QUFFakIsdUNBQW1DO0FBQ25DLGdCQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBVyxDQUFDO0FBQzNELGdCQUFNLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFvQixDQUFDO0FBRW5ELE1BQU0sUUFBUSxHQUFHLElBQUksa0JBQVEsRUFBRSxDQUFDO0FBQ2hDLElBQUksUUFBeUIsQ0FBQztBQUU5QixJQUFLLElBQUksQ0FBQyxLQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO0lBQ25ELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQWUsQ0FBQztJQUM5Qyx5Q0FBeUM7SUFDekMsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqRixnQkFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQkFBTyxDQUFDO1FBQ3hCLGdCQUFnQjtRQUNoQixlQUFlLEVBQUU7WUFDYixPQUFPLEVBQUUsT0FBTztTQUNuQjtLQUNGLENBQUMsQ0FBQztJQUNMLFFBQVEsR0FBRyxRQUFRLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFckQsQ0FBQztLQUFNLENBQUM7SUFDSixNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO0lBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQWUsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUVELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQztBQUNyRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBZ0IsQ0FBQztBQUUzQyxFQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtJQUMzQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQUMsTUFBTSxHQUFHLENBQUM7SUFBQyxDQUFDO0FBQzNCLENBQUMsQ0FBQyxDQUFDO0FBRUgsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxZQUFZLEVBQUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgeWFyZ3MgZnJvbSBcInlhcmdzXCI7XG5pbXBvcnQgeyBJbXBvcnRlciB9IGZyb20gJy4vYW5hbHl6ZSc7XG5pbXBvcnQgeyBGYW1peFJlcG9zaXRvcnkgfSBmcm9tIFwiLi9saWIvZmFtaXgvZmFtaXhfcmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCJ0cy1tb3JwaFwiO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSBcIi4vYW5hbHl6ZVwiO1xuXG5jb25zdCBhcmd2ID0geWFyZ3NcbiAgICAuZXhhbXBsZShgdHMyZmFtaXggLWkgXCJwYXRoL3RvL3Byb2plY3QvKiovKi50c1wiIC1vIEpTT05Nb2RlbHMvcHJvamVjdE5hbWUuanNvbmAsICdDcmVhdGVzIGEgSlNPTi1mb3JtYXQgRmFtaXggbW9kZWwgb2YgdHlwZXNjcmlwdCBmaWxlcy4nKVxuICAgIC5leGFtcGxlKGB0czJmYW1peCAtaSBwYXRoL3RvL3RzY29uZmlnLmpzb24gLW8gSlNPTk1vZGVscy9wcm9qZWN0TmFtZS5qc29uYCwgJ0NyZWF0ZXMgYSBKU09OLWZvcm1hdCBtb2RlbCBvZiBhIHR5cGVzY3JpcHQgcHJvamVjdC4nKVxuICAgIC5hbGlhcygnaScsICdpbnB1dCcpXG4gICAgLm5hcmdzKCdpJywgMSlcbiAgICAuYWxpYXMoJ28nLCAnb3V0cHV0JylcbiAgICAubmFyZ3MoJ28nLCAxKVxuICAgIC5hbGlhcygnbCcsICdsb2dsZXZlbCcpXG4gICAgLm5hcmdzKCdsJywgMSlcbiAgICAuZGVmYXVsdCgnbCcsIDMpXG4gICAgLmRlc2NyaWJlKCdsJywgJ1NldCBtaW5pbXVtIGxvZ2dpbmcgbGV2ZWwgMDogc2lsbHksIDE6IHRyYWNlLCAyOiBkZWJ1ZywgMzogaW5mbywgNDogd2FybiwgNTogZXJyb3IsIDY6IGZhdGFsJylcbiAgICAuYm9vbGVhbignZ3JhcGhlbWVzJylcbiAgICAuZGVmYXVsdCgnZ3JhcGhlbWVzJywgZmFsc2UpXG4gICAgLmRlc2NyaWJlKCdncmFwaGVtZXMnLCAnUHJvY2VzcyBncmFwaGVtZXMgKG91dHNpZGUgb2YgdGhlIEJNUCkgdG8gYXZvaWQgc291cmNlIGFuY2hvciBvZmZzZXQgZXJyb3JzIChkdWUgdG8gcGVyZm9ybWFuY2UgaXNzdWVzLCB0aGlzIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQpJylcbiAgICAuZGVtYW5kT3B0aW9uKCdpbnB1dCcpXG4gICAgLmRlbWFuZE9wdGlvbignb3V0cHV0JylcbiAgICAucGFyc2VTeW5jKCk7XG5cbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vYW5hbHl6ZSc7XG5sb2dnZXIuc2V0dGluZ3MubWluTGV2ZWwgPSBOdW1iZXIoYXJndi5sb2dsZXZlbCkgYXMgbnVtYmVyO1xuY29uZmlnLmV4cGVjdEdyYXBoZW1lcyA9IGFyZ3YuZ3JhcGhlbWVzIGFzIGJvb2xlYW47XG5cbmNvbnN0IGltcG9ydGVyID0gbmV3IEltcG9ydGVyKCk7XG5sZXQgZmFtaXhSZXA6IEZhbWl4UmVwb3NpdG9yeTtcblxuaWYgKChhcmd2LmlucHV0IGFzIHN0cmluZykuZW5kc1dpdGgoJ3RzY29uZmlnLmpzb24nKSkge1xuICAgIGNvbnN0IHRzQ29uZmlnRmlsZVBhdGggPSBhcmd2LmlucHV0IGFzIHN0cmluZztcbiAgICAvLyBnZXQgdGhlIGJhc2VVcmwgZnJvbSB0aGUgdHNjb25maWcgZmlsZVxuICAgIGNvbnN0IGJhc2VVcmwgPSB0c0NvbmZpZ0ZpbGVQYXRoLnN1YnN0cmluZygwLCB0c0NvbmZpZ0ZpbGVQYXRoLmxhc3RJbmRleE9mKCcvJykpO1xuICAgIGxvZ2dlci5pbmZvKGBiYXNlVXJsOiAke2Jhc2VVcmx9YCk7XG4gICAgY29uc3QgcHJvamVjdCA9IG5ldyBQcm9qZWN0KHtcbiAgICAgICAgdHNDb25maWdGaWxlUGF0aCxcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgICBiYXNlVXJsOiBiYXNlVXJsLFxuICAgICAgICB9XG4gICAgICB9KTsgXG4gICAgZmFtaXhSZXAgPSBpbXBvcnRlci5mYW1peFJlcEZyb21Qcm9qZWN0KHByb2plY3QpO1xuXG59IGVsc2Uge1xuICAgIGNvbnN0IHBhdGhzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICBwYXRocy5wdXNoKGFyZ3YuaW5wdXQgYXMgc3RyaW5nKTtcbiAgICBmYW1peFJlcCA9IGltcG9ydGVyLmZhbWl4UmVwRnJvbVBhdGhzKHBhdGhzKTtcbn1cblxuY29uc3QganNvbk91dHB1dCA9IGZhbWl4UmVwLmV4cG9ydCh7Zm9ybWF0OiBcImpzb25cIn0pO1xuY29uc3QganNvbkZpbGVQYXRoID0gYXJndi5vdXRwdXQgYXMgc3RyaW5nO1xuXG5mcy53cml0ZUZpbGUoanNvbkZpbGVQYXRoLCBqc29uT3V0cHV0LCAoZXJyKSA9PiB7XG4gICAgaWYgKGVycikgeyB0aHJvdyBlcnI7IH1cbn0pO1xuXG5sb2dnZXIuaW5mbyhgQ3JlYXRlZDogJHtqc29uRmlsZVBhdGh9YCk7IFxuIl19
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHMyZmFtaXgtY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RzMmZhbWl4LWNsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSx1Q0FBeUI7QUFDekIsa0RBQTBCO0FBQzFCLHVDQUFxQztBQUVyQyx1Q0FBbUM7QUFDbkMsdUNBQW1DO0FBRW5DLE1BQU0sSUFBSSxHQUFHLGVBQUs7S0FDYixPQUFPLENBQUMsc0VBQXNFLEVBQUUsd0RBQXdELENBQUM7S0FDekksT0FBTyxDQUFDLGtFQUFrRSxFQUFFLHNEQUFzRCxDQUFDO0tBQ25JLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDO0tBQ25CLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0tBQ2IsS0FBSyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUM7S0FDcEIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7S0FDYixLQUFLLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQztLQUN0QixLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztLQUNiLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0tBQ2YsUUFBUSxDQUFDLEdBQUcsRUFBRSw4RkFBOEYsQ0FBQztLQUM3RyxPQUFPLENBQUMsV0FBVyxDQUFDO0tBQ3BCLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDO0tBQzNCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsc0lBQXNJLENBQUM7S0FDN0osWUFBWSxDQUFDLE9BQU8sQ0FBQztLQUNyQixZQUFZLENBQUMsUUFBUSxDQUFDO0tBQ3RCLFNBQVMsRUFBRSxDQUFDO0FBRWpCLHVDQUFtQztBQUNuQyxnQkFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQVcsQ0FBQztBQUMzRCxnQkFBTSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBb0IsQ0FBQztBQUVuRCxNQUFNLFFBQVEsR0FBRyxJQUFJLGtCQUFRLEVBQUUsQ0FBQztBQUNoQyxJQUFJLFFBQXlCLENBQUM7QUFFOUIsSUFBSyxJQUFJLENBQUMsS0FBZ0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztJQUNuRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFlLENBQUM7SUFDOUMseUNBQXlDO0lBQ3pDLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakYsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLE1BQU0sT0FBTyxHQUFHLElBQUksa0JBQU8sQ0FBQztRQUN4QixnQkFBZ0I7UUFDaEIsZUFBZSxFQUFFO1lBQ2IsT0FBTyxFQUFFLE9BQU87U0FDbkI7S0FDRixDQUFDLENBQUM7SUFDTCxRQUFRLEdBQUcsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRXJELENBQUM7S0FBTSxDQUFDO0lBQ0osTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztJQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFlLENBQUMsQ0FBQztJQUNqQyxRQUFRLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFFRCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUMsTUFBTSxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUM7QUFDckQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQWdCLENBQUM7QUFFM0MsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7SUFDM0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUFDLE1BQU0sR0FBRyxDQUFDO0lBQUMsQ0FBQztBQUMzQixDQUFDLENBQUMsQ0FBQztBQUVILGdCQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksWUFBWSxFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHlhcmdzIGZyb20gXCJ5YXJnc1wiO1xuaW1wb3J0IHsgSW1wb3J0ZXIgfSBmcm9tICcuL2FuYWx5emUnO1xuaW1wb3J0IHsgRmFtaXhSZXBvc2l0b3J5IH0gZnJvbSBcIi4vbGliL2ZhbWl4L2ZhbWl4X3JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwidHMtbW9ycGhcIjtcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gXCIuL2FuYWx5emVcIjtcblxuY29uc3QgYXJndiA9IHlhcmdzXG4gICAgLmV4YW1wbGUoYHRzMmZhbWl4IC1pIFwicGF0aC90by9wcm9qZWN0LyoqLyoudHNcIiAtbyBKU09OTW9kZWxzL3Byb2plY3ROYW1lLmpzb25gLCAnQ3JlYXRlcyBhIEpTT04tZm9ybWF0IEZhbWl4IG1vZGVsIG9mIHR5cGVzY3JpcHQgZmlsZXMuJylcbiAgICAuZXhhbXBsZShgdHMyZmFtaXggLWkgcGF0aC90by90c2NvbmZpZy5qc29uIC1vIEpTT05Nb2RlbHMvcHJvamVjdE5hbWUuanNvbmAsICdDcmVhdGVzIGEgSlNPTi1mb3JtYXQgbW9kZWwgb2YgYSB0eXBlc2NyaXB0IHByb2plY3QuJylcbiAgICAuYWxpYXMoJ2knLCAnaW5wdXQnKVxuICAgIC5uYXJncygnaScsIDEpXG4gICAgLmFsaWFzKCdvJywgJ291dHB1dCcpXG4gICAgLm5hcmdzKCdvJywgMSlcbiAgICAuYWxpYXMoJ2wnLCAnbG9nbGV2ZWwnKVxuICAgIC5uYXJncygnbCcsIDEpXG4gICAgLmRlZmF1bHQoJ2wnLCAzKVxuICAgIC5kZXNjcmliZSgnbCcsICdTZXQgbWluaW11bSBsb2dnaW5nIGxldmVsIDA6IHNpbGx5LCAxOiB0cmFjZSwgMjogZGVidWcsIDM6IGluZm8sIDQ6IHdhcm4sIDU6IGVycm9yLCA2OiBmYXRhbCcpXG4gICAgLmJvb2xlYW4oJ2dyYXBoZW1lcycpXG4gICAgLmRlZmF1bHQoJ2dyYXBoZW1lcycsIGZhbHNlKVxuICAgIC5kZXNjcmliZSgnZ3JhcGhlbWVzJywgJ1Byb2Nlc3MgZ3JhcGhlbWVzIChvdXRzaWRlIG9mIHRoZSBCTVApIHRvIGF2b2lkIHNvdXJjZSBhbmNob3Igb2Zmc2V0IGVycm9ycyAoZHVlIHRvIHBlcmZvcm1hbmNlIGlzc3VlcywgdGhpcyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0KScpXG4gICAgLmRlbWFuZE9wdGlvbignaW5wdXQnKVxuICAgIC5kZW1hbmRPcHRpb24oJ291dHB1dCcpXG4gICAgLnBhcnNlU3luYygpO1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL2FuYWx5emUnO1xubG9nZ2VyLnNldHRpbmdzLm1pbkxldmVsID0gTnVtYmVyKGFyZ3YubG9nbGV2ZWwpIGFzIG51bWJlcjtcbmNvbmZpZy5leHBlY3RHcmFwaGVtZXMgPSBhcmd2LmdyYXBoZW1lcyBhcyBib29sZWFuO1xuXG5jb25zdCBpbXBvcnRlciA9IG5ldyBJbXBvcnRlcigpO1xubGV0IGZhbWl4UmVwOiBGYW1peFJlcG9zaXRvcnk7XG5cbmlmICgoYXJndi5pbnB1dCBhcyBzdHJpbmcpLmVuZHNXaXRoKCd0c2NvbmZpZy5qc29uJykpIHtcbiAgICBjb25zdCB0c0NvbmZpZ0ZpbGVQYXRoID0gYXJndi5pbnB1dCBhcyBzdHJpbmc7XG4gICAgLy8gZ2V0IHRoZSBiYXNlVXJsIGZyb20gdGhlIHRzY29uZmlnIGZpbGVcbiAgICBjb25zdCBiYXNlVXJsID0gdHNDb25maWdGaWxlUGF0aC5zdWJzdHJpbmcoMCwgdHNDb25maWdGaWxlUGF0aC5sYXN0SW5kZXhPZignLycpKTtcbiAgICBsb2dnZXIuaW5mbyhgYmFzZVVybDogJHtiYXNlVXJsfWApO1xuICAgIGNvbnN0IHByb2plY3QgPSBuZXcgUHJvamVjdCh7XG4gICAgICAgIHRzQ29uZmlnRmlsZVBhdGgsXG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgICAgYmFzZVVybDogYmFzZVVybCxcbiAgICAgICAgfVxuICAgICAgfSk7IFxuICAgIGZhbWl4UmVwID0gaW1wb3J0ZXIuZmFtaXhSZXBGcm9tUHJvamVjdChwcm9qZWN0KTtcblxufSBlbHNlIHtcbiAgICBjb25zdCBwYXRocyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgcGF0aHMucHVzaChhcmd2LmlucHV0IGFzIHN0cmluZyk7XG4gICAgZmFtaXhSZXAgPSBpbXBvcnRlci5mYW1peFJlcEZyb21QYXRocyhwYXRocyk7XG59XG5cbmNvbnN0IGpzb25PdXRwdXQgPSBmYW1peFJlcC5leHBvcnQoe2Zvcm1hdDogXCJqc29uXCJ9KTtcbmNvbnN0IGpzb25GaWxlUGF0aCA9IGFyZ3Yub3V0cHV0IGFzIHN0cmluZztcblxuZnMud3JpdGVGaWxlKGpzb25GaWxlUGF0aCwganNvbk91dHB1dCwgKGVycikgPT4ge1xuICAgIGlmIChlcnIpIHsgdGhyb3cgZXJyOyB9XG59KTtcblxubG9nZ2VyLmluZm8oYENyZWF0ZWQ6ICR7anNvbkZpbGVQYXRofWApOyBcbiJdfQ==
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
37
  };
@@ -51,4 +61,4 @@ fs.writeFile(jsonFilePath, jsonOutput, (err) => {
51
61
  }
52
62
  });
53
63
  console.info(`Created: ${jsonFilePath}`);
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHMyZmFtaXgtdHNjb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHMyZmFtaXgtdHNjb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6QixrREFBMEI7QUFDMUIsdUNBQXFDO0FBQ3JDLHVDQUFtQztBQUVuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGtCQUFRLEVBQUUsQ0FBQztBQUVoQyxNQUFNLElBQUksR0FBRyxlQUFLO0tBQ2YsT0FBTyxDQUFDLHFHQUFxRyxFQUFFLHFEQUFxRCxDQUFDO0tBQ3JLLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDO0tBQ25CLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0tBQ2IsS0FBSyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUM7S0FDcEIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7S0FDYixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBRTVELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQWUsQ0FBQztBQUU5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLGtCQUFPLENBQUM7SUFDMUIsZ0JBQWdCO0NBQ2pCLENBQUMsQ0FBQztBQUVILE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDdEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQWdCLENBQUM7QUFFM0MsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7SUFDN0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUFDLE1BQU0sR0FBRyxDQUFDO0lBQUMsQ0FBQztBQUN6QixDQUFDLENBQUMsQ0FBQztBQUVILE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxZQUFZLEVBQUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XHJcbmltcG9ydCB5YXJncyBmcm9tIFwieWFyZ3NcIjtcclxuaW1wb3J0IHsgSW1wb3J0ZXIgfSBmcm9tIFwiLi9hbmFseXplXCI7XHJcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwidHMtbW9ycGhcIjtcclxuXHJcbmNvbnN0IGltcG9ydGVyID0gbmV3IEltcG9ydGVyKCk7XHJcblxyXG5jb25zdCBhcmd2ID0geWFyZ3NcclxuICAuZXhhbXBsZShgdHMtbm9kZSBzcmMvdHMyZmFtaXgtdHNjb25maWcudHMgLWkgLi4vcGF0aC90by9wcm9qZWN0L3RzY29uZmlnLmpzb24gLW8gSlNPTk1vZGVscy9wcm9qZWN0TmFtZS5qc29uYCwgJ2NyZWF0ZXMgYSBKU09OLWZvcm1hdCBtb2RlbCBvZiBhIHR5cGVzY3JpcHQgcHJvamVjdCcpXHJcbiAgLmFsaWFzKCdpJywgJ2lucHV0JylcclxuICAubmFyZ3MoJ2knLCAxKVxyXG4gIC5hbGlhcygnbycsICdvdXRwdXQnKVxyXG4gIC5uYXJncygnbycsIDEpXHJcbiAgLmRlbWFuZE9wdGlvbignaW5wdXQnKS5kZW1hbmRPcHRpb24oJ291dHB1dCcpLnBhcnNlU3luYygpO1xyXG5cclxuY29uc3QgdHNDb25maWdGaWxlUGF0aCA9IGFyZ3YuaW5wdXQgYXMgc3RyaW5nO1xyXG5cclxuY29uc3QgcHJvamVjdCA9IG5ldyBQcm9qZWN0KHtcclxuICB0c0NvbmZpZ0ZpbGVQYXRoXHJcbn0pOyAgXHJcblxyXG5jb25zdCBmYW1peFJlcCA9IGltcG9ydGVyLmZhbWl4UmVwRnJvbVByb2plY3QocHJvamVjdCk7XHJcbmNvbnN0IGpzb25PdXRwdXQgPSBmYW1peFJlcC5nZXRKU09OKCk7XHJcbmNvbnN0IGpzb25GaWxlUGF0aCA9IGFyZ3Yub3V0cHV0IGFzIHN0cmluZztcclxuXHJcbmZzLndyaXRlRmlsZShqc29uRmlsZVBhdGgsIGpzb25PdXRwdXQsIChlcnIpID0+IHtcclxuICBpZiAoZXJyKSB7IHRocm93IGVycjsgfVxyXG59KTtcclxuXHJcbmNvbnNvbGUuaW5mbyhgQ3JlYXRlZDogJHtqc29uRmlsZVBhdGh9YCk7IFxyXG4iXX0=
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHMyZmFtaXgtdHNjb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHMyZmFtaXgtdHNjb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsa0RBQTBCO0FBQzFCLHVDQUFxQztBQUNyQyx1Q0FBbUM7QUFFbkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxrQkFBUSxFQUFFLENBQUM7QUFFaEMsTUFBTSxJQUFJLEdBQUcsZUFBSztLQUNmLE9BQU8sQ0FBQyxxR0FBcUcsRUFBRSxxREFBcUQsQ0FBQztLQUNySyxLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQztLQUNuQixLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztLQUNiLEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDO0tBQ3BCLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0tBQ2IsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUU1RCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFlLENBQUM7QUFFOUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQkFBTyxDQUFDO0lBQzFCLGdCQUFnQjtDQUNqQixDQUFDLENBQUM7QUFFSCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkQsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ3RDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFnQixDQUFDO0FBRTNDLEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO0lBQzdDLElBQUksR0FBRyxFQUFFLENBQUM7UUFBQyxNQUFNLEdBQUcsQ0FBQztJQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDLENBQUM7QUFFSCxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksWUFBWSxFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xyXG5pbXBvcnQgeWFyZ3MgZnJvbSBcInlhcmdzXCI7XHJcbmltcG9ydCB7IEltcG9ydGVyIH0gZnJvbSBcIi4vYW5hbHl6ZVwiO1xyXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcInRzLW1vcnBoXCI7XHJcblxyXG5jb25zdCBpbXBvcnRlciA9IG5ldyBJbXBvcnRlcigpO1xyXG5cclxuY29uc3QgYXJndiA9IHlhcmdzXHJcbiAgLmV4YW1wbGUoYHRzLW5vZGUgc3JjL3RzMmZhbWl4LXRzY29uZmlnLnRzIC1pIC4uL3BhdGgvdG8vcHJvamVjdC90c2NvbmZpZy5qc29uIC1vIEpTT05Nb2RlbHMvcHJvamVjdE5hbWUuanNvbmAsICdjcmVhdGVzIGEgSlNPTi1mb3JtYXQgbW9kZWwgb2YgYSB0eXBlc2NyaXB0IHByb2plY3QnKVxyXG4gIC5hbGlhcygnaScsICdpbnB1dCcpXHJcbiAgLm5hcmdzKCdpJywgMSlcclxuICAuYWxpYXMoJ28nLCAnb3V0cHV0JylcclxuICAubmFyZ3MoJ28nLCAxKVxyXG4gIC5kZW1hbmRPcHRpb24oJ2lucHV0JykuZGVtYW5kT3B0aW9uKCdvdXRwdXQnKS5wYXJzZVN5bmMoKTtcclxuXHJcbmNvbnN0IHRzQ29uZmlnRmlsZVBhdGggPSBhcmd2LmlucHV0IGFzIHN0cmluZztcclxuXHJcbmNvbnN0IHByb2plY3QgPSBuZXcgUHJvamVjdCh7XHJcbiAgdHNDb25maWdGaWxlUGF0aFxyXG59KTsgIFxyXG5cclxuY29uc3QgZmFtaXhSZXAgPSBpbXBvcnRlci5mYW1peFJlcEZyb21Qcm9qZWN0KHByb2plY3QpO1xyXG5jb25zdCBqc29uT3V0cHV0ID0gZmFtaXhSZXAuZ2V0SlNPTigpO1xyXG5jb25zdCBqc29uRmlsZVBhdGggPSBhcmd2Lm91dHB1dCBhcyBzdHJpbmc7XHJcblxyXG5mcy53cml0ZUZpbGUoanNvbkZpbGVQYXRoLCBqc29uT3V0cHV0LCAoZXJyKSA9PiB7XHJcbiAgaWYgKGVycikgeyB0aHJvdyBlcnI7IH1cclxufSk7XHJcblxyXG5jb25zb2xlLmluZm8oYENyZWF0ZWQ6ICR7anNvbkZpbGVQYXRofWApOyBcclxuIl19
@@ -514,44 +514,54 @@ class EntityDictionary {
514
514
  -fmxAliasMap: Map<string, Famix.Alias>
515
515
  -fmxClassMap: Map<string, Famix.Class | Famix.ParametricClass>
516
516
  -fmxInterfaceMap: Map<string, Famix.Interface | Famix.ParametricInterface>
517
- -fmxModuleMap: Map<string, Famix.Module>
517
+ -fmxModuleMap: Map<ModuleDeclaration, Famix.Module>
518
518
  -fmxFileMap: Map<string, Famix.Module | Famix.ScriptEntity>
519
- -fmxTypeMap: Map<string, Famix.Type | Famix.ParameterType | Famix.PrimitiveType>
519
+ -fmxTypeMap: Map<TSMorphTypeDeclaration, Famix.Type | Famix.ParameterType>
520
+ -fmxPrimitiveTypeMap: Map<string, Famix.PrimitiveType>
520
521
  -fmxFunctionAndMethodMap: Map<string, Famix.Method | Famix.ParametricMethod | Famix.Function | Famix.ParametricFunction>
522
+ -fmxArrowFunctionMap: Map<string, Famix.ArrowFunction>
523
+ -fmxParameterMap: Map<ParameterDeclaration, Famix.Parameter>
524
+ -fmxVariableMap: Map<VariableDeclaration, Famix.Variable>
525
+ -fmxImportClauseMap: Map<ImportEqualsDeclaration | ImportDeclaration, Famix.ImportClause>
526
+ -fmxEnumMap: Map<EnumDeclaration, Famix.Enum>
527
+ -fmxInheritanceMap: Map<string, Famix.Inheritance>
521
528
  -UNKNOWN_VALUE: string
522
529
  +fmxElementObjectMap: Map<Famix.Entity, TSMorphObjectType>
523
530
  +tsMorphElementObjectMap: Map<TSMorphObjectType, Famix.Entity>
524
531
  +addSourceAnchor(fmx: Famix.SourcedEntity, node: TSMorphObjectType): Famix.IndexedFileAnchor
525
532
  +makeFamixIndexFileAnchor(sourceElement: TSMorphObjectType, famixElement: Famix.SourcedEntity): void
526
533
  +createOrGetFamixFile(f: SourceFile, isModule: boolean): Famix.Module | Famix.ScriptEntity
527
- +createOrGetFamixModule(m: ModuleDeclaration): Famix.Module
528
- +createFamixAlias(a: TypeAliasDeclaration): Famix.Alias
534
+ +createOrGetFamixModule(moduleDeclaration: ModuleDeclaration): Famix.Module
535
+ +createFamixAlias(typeAliasDeclaration: TypeAliasDeclaration): Famix.Alias
529
536
  +createOrGetFamixClass(cls: ClassDeclaration): Famix.Class | Famix.ParametricClass
530
537
  +createOrGetFamixInterface(inter: InterfaceDeclaration): Famix.Interface | Famix.ParametricInterface
531
538
  +createOrGetFamixConcreteElement(concreteElement: ParametricVariantType, concreteElementDeclaration: ConcreteElementTSMorphType, concreteArguments: TypeNode<ts.TypeNode>[]): ParametricVariantType
532
539
  +createFamixProperty(property: PropertyDeclaration | PropertySignature): Famix.Property
533
- +createOrGetFamixMethod(method: MethodDeclaration | ConstructorDeclaration | MethodSignature | GetAccessorDeclaration | SetAccessorDeclaration, currentCC: { [key: string]: number; }): Famix.Method | Famix.ParametricMethod | Famix.Accessor
534
- +createOrGetFamixFunction(func: FunctionDeclaration | FunctionExpression, currentCC: { [key: string]: number; }): Famix.Function | Famix.ParametricFunction
535
- +createFamixParameter(param: ParameterDeclaration): Famix.Parameter
540
+ +createOrGetFamixMethod(method: ConstructorDeclaration | MethodSignature | GetAccessorDeclaration | SetAccessorDeclaration | MethodDeclaration, currentCC: { [key: string]: number; }): Famix.Method | Famix.ParametricMethod | Famix.Accessor
541
+ +createOrGetFamixFunction(func: FunctionExpression | FunctionDeclaration, currentCC: { [key: string]: number; }): Famix.Function | Famix.ParametricFunction
542
+ +createOrGetFamixParameter(param: ParameterDeclaration): Famix.Parameter
536
543
  +createFamixParameterType(tp: TypeParameterDeclaration): Famix.ParameterType
537
- +createOrGetFamixConcreteType(param: TypeNode<ts.TypeNode>): Famix.Class | Famix.Interface | Famix.ParameterType | Famix.PrimitiveType
538
- +createFamixVariable(variable: VariableDeclaration): Famix.Variable
539
- +createFamixEnum(enumEntity: EnumDeclaration): Famix.Enum
544
+ +createOrGetFamixVariable(variable: VariableDeclaration): Famix.Variable
545
+ +createOrGetFamixEnum(enumEntity: EnumDeclaration): Famix.Enum
540
546
  +createFamixEnumValue(enumMember: EnumMember): Famix.EnumValue
541
- +createOrGetFamixDecorator(decorator: Decorator, decoratedEntity: ClassDeclaration | MethodDeclaration | ParameterDeclaration | PropertyDeclaration | GetAccessorDeclaration | SetAccessorDeclaration): Famix.Decorator
547
+ +createOrGetFamixDecorator(decorator: Decorator, decoratedEntity: PropertyDeclaration | GetAccessorDeclaration | SetAccessorDeclaration | ParameterDeclaration | ClassDeclaration | MethodDeclaration): Famix.Decorator
542
548
  +createFamixComment(comment: CommentRange, fmxScope: Famix.NamedEntity, isJSDoc: boolean): Famix.Comment
543
- +createOrGetFamixType(typeName: string, element: TypeDeclaration): Famix.Type | Famix.ParameterType | Famix.PrimitiveType
549
+ +createOrGetFamixType(typeNameArg: string, tsMorphType: Type<ts.Type> | undefined, element: TSMorphTypeDeclaration): Famix.Type
550
+ +createOrGetFamixParametricType(typeName: string, element: TSMorphParametricType): Famix.Type
551
+ +createOrGetFamixPrimitiveType(typeName: string): Famix.PrimitiveType
544
552
  +createFamixAccess(node: Identifier, id: number): void
545
- +createFamixInvocation(node: Identifier, m: MethodDeclaration | ConstructorDeclaration | FunctionDeclaration | FunctionExpression | GetAccessorDeclaration | SetAccessorDeclaration, id: number): void
546
- +createFamixInheritance(cls: ClassDeclaration | InterfaceDeclaration, inhClass: ClassDeclaration | InterfaceDeclaration | ExpressionWithTypeArguments): void
553
+ +createFamixInvocation(nodeReferringToInvocable: Identifier, invocable: InvocableType, id: number): void
554
+ +createOrGetFamixInheritance(baseClassOrInterface: ClassDeclaration | InterfaceDeclaration, inheritedClassOrInterface: ClassDeclaration | InterfaceDeclaration | ExpressionWithTypeArguments): void
555
+ +createOrGetFamixClassStub(unresolvedInheritedClass: ExpressionWithTypeArguments): Famix.Class
556
+ +createOrGetFamixInterfaceStub(unresolvedInheritedInterface: ExpressionWithTypeArguments): Famix.Interface
547
557
  +createFamixImportClause(importedEntity: Famix.NamedEntity, importingEntity: Famix.Module): void
548
- +oldCreateFamixImportClause(importClauseInfo: { importDeclaration?: ImportDeclaration | ImportEqualsDeclaration | undefined; importerSourceFile: SourceFile; moduleSpecifierFilePath: string; importElement: ImportSpecifier | Identifier; isInExports: boolean; isDefaultExport: boolean; }): void
549
- +createFamixArrowFunction(arrowExpression: Expression<ts.Expression>, currentCC: { [key: string]: number; }): Famix.ParametricArrowFunction | Famix.ArrowFunction
558
+ +oldCreateOrGetFamixImportClause(importClauseInfo: { importDeclaration?: ImportEqualsDeclaration | ImportDeclaration | undefined; importerSourceFile: SourceFile; moduleSpecifierFilePath: string; importElement: ImportSpecifier | Identifier; isInExports: boolean; isDefaultExport: boolean; }): void
559
+ +createOrGetFamixArrowFunction(arrowExpression: Expression<ts.Expression>, currentCC: { [key: string]: number; }): Famix.ParametricArrowFunction | Famix.ArrowFunction
550
560
  +createFamixConcretisation(conEntity: Famix.ParametricClass | Famix.ParametricInterface | Famix.ParametricMethod | Famix.ParametricFunction, genEntity: Famix.ParametricClass | Famix.ParametricInterface | Famix.ParametricMethod | Famix.ParametricFunction): Famix.Concretisation
551
561
  +createFamixParameterConcretisation(concretisation: Famix.Concretisation): Famix.ParameterConcretisation | undefined
552
562
  +createFamixConcretisationClassOrInterfaceSpecialisation(element: ClassDeclaration | InterfaceDeclaration): void
553
563
  +createFamixConcretisationGenericInstantiation(cls: ClassDeclaration): void
554
- +createFamixConcretisationFunctionInstantiation(element: MethodDeclaration | FunctionDeclaration): void
564
+ +createFamixConcretisationFunctionInstantiation(element: FunctionDeclaration | MethodDeclaration): void
555
565
  +createFamixConcretisationInterfaceClass(cls: ClassDeclaration): void
556
566
  +createFamixConcretisationTypeInstanciation(element: ClassDeclaration | InterfaceDeclaration): void
557
567
  +convertToRelativePath(absolutePath: string, absolutePathProject: string): string
@@ -575,6 +585,7 @@ class FamixRepository {
575
585
  +setAbsolutePath(path: string): void
576
586
  +getFamixEntityById(id: number): FamixBaseElement | undefined
577
587
  +getFamixEntityByFullyQualifiedName(fullyQualifiedName: string): FamixBaseElement | undefined
588
+ +getFamixAccessByAccessorAndVariable(accessor: Famix.ContainerEntity, variable: Famix.StructuralEntity): Famix.Access | undefined
578
589
  +export(arg0: { format: string; }): string
579
590
  +_getAllEntities(): Set<FamixBaseElement>
580
591
  +_getAllEntitiesWithType(theType: string): Set<FamixBaseElement>
@@ -591,6 +602,7 @@ class FamixRepository {
591
602
  +_methodParentsAsSetFromClass(className: string): Set<Type>
592
603
  +_initMapFromModel(model: string): Map<number, unknown>
593
604
  +addElement(element: FamixBaseElement): void
605
+ -validateFQNs(): void
594
606
  +getJSON(): string
595
607
  }
596
608
  class Importer {