@angular/compiler-cli 10.0.0 → 10.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.
Files changed (36) hide show
  1. package/ngcc/src/analysis/decoration_analyzer.js +3 -2
  2. package/ngcc/src/analysis/migration_host.js +4 -3
  3. package/ngcc/src/analysis/switch_marker_analyzer.js +4 -3
  4. package/ngcc/src/analysis/util.d.ts +1 -2
  5. package/ngcc/src/analysis/util.js +10 -3
  6. package/ngcc/src/execution/cluster/executor.js +13 -6
  7. package/ngcc/src/host/esm2015_host.js +4 -3
  8. package/ngcc/src/locking/async_locker.js +10 -3
  9. package/ngcc/src/ngcc_options.js +17 -1
  10. package/ngcc/src/packages/build_marker.d.ts +1 -1
  11. package/ngcc/src/packages/build_marker.js +1 -1
  12. package/ngcc/src/packages/entry_point_bundle.js +3 -3
  13. package/ngcc/src/packages/ngcc_compiler_host.d.ts +3 -3
  14. package/ngcc/src/packages/ngcc_compiler_host.js +16 -6
  15. package/package.json +2 -2
  16. package/src/ngtsc/core/src/compiler.js +9 -2
  17. package/src/ngtsc/incremental/src/strategy.d.ts +2 -2
  18. package/src/ngtsc/incremental/src/strategy.js +8 -6
  19. package/src/ngtsc/program.d.ts +1 -0
  20. package/src/ngtsc/program.js +17 -3
  21. package/src/ngtsc/shims/index.d.ts +1 -1
  22. package/src/ngtsc/shims/index.js +6 -1
  23. package/src/ngtsc/shims/src/adapter.js +1 -1
  24. package/src/ngtsc/shims/src/expando.d.ts +27 -0
  25. package/src/ngtsc/shims/src/expando.js +75 -3
  26. package/src/ngtsc/shims/src/reference_tagger.d.ts +1 -2
  27. package/src/ngtsc/shims/src/reference_tagger.js +10 -25
  28. package/src/ngtsc/tsc_plugin.js +8 -2
  29. package/src/ngtsc/typecheck/src/augmented_program.d.ts +3 -2
  30. package/src/ngtsc/typecheck/src/augmented_program.js +25 -6
  31. package/src/ngtsc/typecheck/src/host.d.ts +2 -1
  32. package/src/ngtsc/typecheck/src/host.js +11 -3
  33. package/src/ngtsc/util/src/typescript.js +4 -5
  34. package/src/perform_compile.d.ts +1 -0
  35. package/src/perform_compile.js +10 -2
  36. package/src/version.js +1 -1
@@ -11,7 +11,7 @@
11
11
  if (v !== undefined) module.exports = v;
12
12
  }
13
13
  else if (typeof define === "function" && define.amd) {
14
- define("@angular/compiler-cli/src/ngtsc/program", ["require", "exports", "tslib", "typescript", "@angular/compiler-cli/src/typescript_support", "@angular/compiler-cli/src/ngtsc/core", "@angular/compiler-cli/src/ngtsc/incremental", "@angular/compiler-cli/src/ngtsc/perf", "@angular/compiler-cli/src/ngtsc/typecheck"], factory);
14
+ define("@angular/compiler-cli/src/ngtsc/program", ["require", "exports", "tslib", "typescript", "@angular/compiler-cli/src/typescript_support", "@angular/compiler-cli/src/ngtsc/core", "@angular/compiler-cli/src/ngtsc/incremental", "@angular/compiler-cli/src/ngtsc/perf", "@angular/compiler-cli/src/ngtsc/shims", "@angular/compiler-cli/src/ngtsc/typecheck"], factory);
15
15
  }
16
16
  })(function (require, exports) {
17
17
  "use strict";
@@ -23,6 +23,7 @@
23
23
  var core_1 = require("@angular/compiler-cli/src/ngtsc/core");
24
24
  var incremental_1 = require("@angular/compiler-cli/src/ngtsc/incremental");
25
25
  var perf_1 = require("@angular/compiler-cli/src/ngtsc/perf");
26
+ var shims_1 = require("@angular/compiler-cli/src/ngtsc/shims");
26
27
  var typecheck_1 = require("@angular/compiler-cli/src/ngtsc/typecheck");
27
28
  /**
28
29
  * Entrypoint to the Angular Compiler (Ivy+) which sits behind the `api.Program` interface, allowing
@@ -43,11 +44,21 @@
43
44
  this.perfRecorder = this.perfTracker;
44
45
  }
45
46
  this.closureCompilerEnabled = !!options.annotateForClosureCompiler;
46
- var reuseProgram = oldProgram && oldProgram.reuseTsProgram;
47
+ var reuseProgram = oldProgram === null || oldProgram === void 0 ? void 0 : oldProgram.reuseTsProgram;
47
48
  this.host = core_1.NgCompilerHost.wrap(delegateHost, rootNames, options, reuseProgram !== null && reuseProgram !== void 0 ? reuseProgram : null);
49
+ if (reuseProgram !== undefined) {
50
+ // Prior to reusing the old program, restore shim tagging for all its `ts.SourceFile`s.
51
+ // TypeScript checks the `referencedFiles` of `ts.SourceFile`s for changes when evaluating
52
+ // incremental reuse of data from the old program, so it's important that these match in order
53
+ // to get the most benefit out of reuse.
54
+ shims_1.retagAllTsFiles(reuseProgram);
55
+ }
48
56
  this.tsProgram = ts.createProgram(this.host.inputFiles, options, this.host, reuseProgram);
49
57
  this.reuseTsProgram = this.tsProgram;
50
58
  this.host.postProgramCreationCleanup();
59
+ // Shim tagging has served its purpose, and tags can now be removed from all `ts.SourceFile`s in
60
+ // the program.
61
+ shims_1.untagAllTsFiles(this.tsProgram);
51
62
  var reusedProgramStrategy = new typecheck_1.ReusedProgramStrategy(this.tsProgram, this.host, this.options, this.host.shimExtensionPrefixes);
52
63
  this.incrementalStrategy = oldProgram !== undefined ?
53
64
  oldProgram.incrementalStrategy.toNextBuildStrategy() :
@@ -58,6 +69,9 @@
58
69
  NgtscProgram.prototype.getTsProgram = function () {
59
70
  return this.tsProgram;
60
71
  };
72
+ NgtscProgram.prototype.getReuseTsProgram = function () {
73
+ return this.reuseTsProgram;
74
+ };
61
75
  NgtscProgram.prototype.getTsOptionDiagnostics = function (cancellationToken) {
62
76
  return this.tsProgram.getOptionsDiagnostics(cancellationToken);
63
77
  };
@@ -272,4 +286,4 @@
272
286
  return { diagnostics: diagnostics, emitSkipped: emitSkipped, emittedFiles: emittedFiles };
273
287
  }
274
288
  });
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvcHJvZ3JhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7O0lBR0gsK0JBQWlDO0lBR2pDLG1GQUF1RTtJQUV2RSw2REFBa0Q7SUFFbEQsMkVBQThEO0lBRTlELDZEQUFxRTtJQUNyRSx1RUFBa0Q7SUFJbEQ7Ozs7T0FJRztJQUNIO1FBNEJFLHNCQUNJLFNBQWdDLEVBQVUsT0FBMEIsRUFDcEUsWUFBOEIsRUFBRSxVQUF5QjtZQURmLFlBQU8sR0FBUCxPQUFPLENBQW1CO1lBTGhFLGlCQUFZLEdBQWlCLHlCQUFrQixDQUFDO1lBQ2hELGdCQUFXLEdBQXFCLElBQUksQ0FBQztZQU0zQyw0REFBNEQ7WUFDNUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsRUFBRTtnQkFDMUMscURBQWdDLEVBQUUsQ0FBQzthQUNwQztZQUVELElBQUksT0FBTyxDQUFDLGdCQUFnQixLQUFLLFNBQVMsRUFBRTtnQkFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxrQkFBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUM3QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDdEM7WUFDRCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQztZQUVuRSxJQUFNLFlBQVksR0FBRyxVQUFVLElBQUksVUFBVSxDQUFDLGNBQWMsQ0FBQztZQUM3RCxJQUFJLENBQUMsSUFBSSxHQUFHLHFCQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFlBQVksYUFBWixZQUFZLGNBQVosWUFBWSxHQUFJLElBQUksQ0FBQyxDQUFDO1lBRXhGLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFB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QixnQkFBZ0Isc0JBQUEsRUFDaEIsa0JBQWtCLHdCQUFBO1FBRWhCLE9BQUEsT0FBTyxDQUFDLElBQUksQ0FDUixnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUM7SUFEekYsQ0FDeUYsQ0FBQztJQUU5RixTQUFTLGdCQUFnQixDQUFDLFdBQTRCOztRQUNwRCxJQUFNLFdBQVcsR0FBb0IsRUFBRSxDQUFDO1FBQ3hDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFNLFlBQVksR0FBYSxFQUFFLENBQUM7O1lBQ2xDLEtBQWlCLElBQUEsZ0JBQUEsaUJBQUEsV0FBVyxDQUFBLHdDQUFBLGlFQUFFO2dCQUF6QixJQUFNLEVBQUUsd0JBQUE7Z0JBQ1gsV0FBVyxDQUFDLElBQUksT0FBaEIsV0FBVyxtQkFBUyxFQUFFLENBQUMsV0FBVyxHQUFFO2dCQUNwQyxXQUFXLEdBQUcsV0FBVyxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUM7Z0JBQzVDLFlBQVksQ0FBQyxJQUFJLE9BQWpCLFlBQVksbUJBQVMsQ0FBQyxFQUFFLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxHQUFFO2FBQy9DOzs7Ozs7Ozs7UUFFRCxPQUFPLEVBQUMsV0FBVyxhQUFBLEVBQUUsV0FBVyxhQUFBLEVBQUUsWUFBWSxjQUFBLEVBQUMsQ0FBQztJQUNsRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7R2VuZXJhdGVkRmlsZX0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCAqIGFzIGFwaSBmcm9tICcuLi90cmFuc2Zvcm1lcnMvYXBpJztcbmltcG9ydCB7dmVyaWZ5U3VwcG9ydGVkVHlwZVNjcmlwdFZlcnNpb259IGZyb20gJy4uL3R5cGVzY3JpcHRfc3VwcG9ydCc7XG5cbmltcG9ydCB7TmdDb21waWxlciwgTmdDb21waWxlckhvc3R9IGZyb20gJy4vY29yZSc7XG5pbXBvcnQge05nQ29tcGlsZXJPcHRpb25zfSBmcm9tICcuL2NvcmUvYXBpJztcbmltcG9ydCB7VHJhY2tlZEluY3JlbWVudGFsQnVpbGRTdHJhdGVneX0gZnJvbSAnLi9pbmNyZW1lbnRhbCc7XG5pbXBvcnQge0luZGV4ZWRDb21wb25lbnR9IGZyb20gJy4vaW5kZXhlcic7XG5pbXBvcnQge05PT1BfUEVSRl9SRUNPUkRFUiwgUGVyZlJlY29yZGVyLCBQZXJmVHJhY2tlcn0gZnJvbSAnLi9wZXJmJztcbmltcG9ydCB7UmV1c2VkUHJvZ3JhbVN0cmF0ZWd5fSBmcm9tICcuL3R5cGVjaGVjayc7XG5cblxuXG4vKipcbiAqIEVudHJ5cG9pbnQgdG8gdGhlIEFuZ3VsYXIgQ29tcGlsZXIgKEl2eSspIHdoaWNoIHNpdHMgYmVoaW5kIHRoZSBgYXBpLlByb2dyYW1gIGludGVyZmFjZSwgYWxsb3dpbmdcbiAqIGl0IHRvIGJlIGEgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgdGhlIGxlZ2FjeSBWaWV3IEVuZ2luZSBjb21waWxlciB0byB0b29saW5nIHN1Y2ggYXMgdGhlXG4gKiBjb21tYW5kLWxpbmUgbWFpbigpIGZ1bmN0aW9uIG9yIHRoZSBBbmd1bGFyIENMSS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5ndHNjUHJvZ3JhbSBpbXBsZW1lbnRzIGFwaS5Qcm9ncmFtIHtcbiAgcHJpdmF0ZSBjb21waWxlcjogTmdDb21waWxlcjtcblxuICAvKipcbiAgICogVGhlIHByaW1hcnkgVHlwZVNjcmlwdCBwcm9ncmFtLCB3aGljaCBpcyB1c2VkIGZvciBhbmFseXNpcyBhbmQgZW1pdC5cbiAgICovXG4gIHByaXZhdGUgdHNQcm9ncmFtOiB0cy5Qcm9ncmFtO1xuXG4gIC8qKlxuICAgKiBUaGUgVHlwZVNjcmlwdCBwcm9ncmFtIHRvIHVzZSBmb3IgdGhlIG5leHQgaW5jcmVtZW50YWwgY29tcGlsYXRpb24uXG4gICAqXG4gICAqIE9uY2UgYSBUUyBwcm9ncmFtIGlzIHVzZWQgdG8gY3JlYXRlIGFub3RoZXIgKGFuIGluY3JlbWVudGFsIGNvbXBpbGF0aW9uIG9wZXJhdGlvbiksIGl0IGNhbiBub1xuICAgKiBsb25nZXIgYmUgdXNlZCB0byBkbyBzbyBhZ2Fpbi5cbiAgICpcbiAgICogU2luY2UgdGVtcGxhdGUgdHlwZS1jaGVja2luZyB1c2VzIHRoZSBwcmltYXJ5IHByb2dyYW0gdG8gY3JlYXRlIGEgdHlwZS1jaGVja2luZyBwcm9ncmFtLCBhZnRlclxuICAgKiB0aGlzIGhhcHBlbnMgdGhlIHByaW1hcnkgcHJvZ3JhbSBpcyBubyBsb25nZXIgc3VpdGFibGUgZm9yIHN0YXJ0aW5nIGEgc3Vic2VxdWVudCBjb21waWxhdGlvbixcbiAgICogYW5kIHRoZSB0ZW1wbGF0ZSB0eXBlLWNoZWNraW5nIHByb2dyYW0gc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC5cbiAgICpcbiAgICogVGh1cywgdGhlIHByb2dyYW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBuZXh0IGluY3JlbWVudGFsIGNvbXBpbGF0aW9uIGlzIHRyYWNrZWQgaW5cbiAgICogYHJldXNlVHNQcm9ncmFtYCwgc2VwYXJhdGVseSBmcm9tIHRoZSBcInByaW1hcnlcIiBwcm9ncmFtIHdoaWNoIGlzIGFsd2F5cyB1c2VkIGZvciBlbWl0LlxuICAgKi9cbiAgcHJpdmF0ZSByZXVzZVRzUHJvZ3JhbTogdHMuUHJvZ3JhbTtcbiAgcHJpdmF0ZSBjbG9zdXJlQ29tcGlsZXJFbmFibGVkOiBib29sZWFuO1xuICBwcml2YXRlIGhvc3Q6IE5nQ29tcGlsZXJIb3N0O1xuICBwcml2YXRlIHBlcmZSZWNvcmRlcjogUGVyZlJlY29yZGVyID0gTk9PUF9QRVJGX1JFQ09SREVSO1xuICBwcml2YXRlIHBlcmZUcmFja2VyOiBQZXJmVHJhY2tlcnxudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBpbmNyZW1lbnRhbFN0cmF0ZWd5OiBUcmFja2VkSW5jcmVtZW50YWxCdWlsZFN0cmF0ZWd5O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcm9vdE5hbWVzOiBSZWFkb25seUFycmF5PHN0cmluZz4sIHByaXZhdGUgb3B0aW9uczogTmdDb21waWxlck9wdGlvbnMsXG4gICAgICBkZWxlZ2F0ZUhvc3Q6IGFwaS5Db21waWxlckhvc3QsIG9sZFByb2dyYW0/OiBOZ3RzY1Byb2dyYW0pIHtcbiAgICAvLyBGaXJzdCwgY2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBUUyB2ZXJzaW9uIGlzIHN1cHBvcnRlZC5cbiAgICBpZiAoIW9wdGlvbnMuZGlzYWJsZVR5cGVTY3JpcHRWZXJzaW9uQ2hlY2spIHtcbiAgICAgIHZlcmlmeVN1cHBvcnRlZFR5cGVTY3JpcHRWZXJzaW9uKCk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMudHJhY2VQZXJmb3JtYW5jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnBlcmZUcmFja2VyID0gUGVyZlRyYWNrZXIuemVyb2VkVG9Ob3coKTtcbiAgICAgIHRoaXMucGVyZlJlY29yZGVyID0gdGhpcy5wZXJmVHJhY2tlcjtcbiAgICB9XG4gICAgdGhpcy5jbG9zdXJlQ29tcGlsZXJFbmFibGVkID0gISFvcHRpb25zLmFubm90YXRlRm9yQ2xvc3VyZUNvbXBpbGVyO1xuXG4gICAgY29uc3QgcmV1c2VQcm9ncmFtID0gb2xkUHJvZ3JhbSAmJiBvbGRQcm9ncmFtLnJldXNlVHNQcm9ncmFtO1xuICAgIHRoaXMuaG9zdCA9IE5nQ29tcGlsZXJIb3N0LndyYXAoZGVsZWdhdGVIb3N0LCByb290TmFtZXMsIG9wdGlvbnMsIHJldXNlUHJvZ3JhbSA/PyBudWxsKTtcblxuICAgIHRoaXMudHNQcm9ncmFtID0gdHMuY3JlYXRlUHJvZ3JhbSh0aGlzLmhvc3QuaW5wdXRGaWxlcywgb3B0aW9ucywgdGhpcy5ob3N0LCByZXVzZVByb2dyYW0pO1xuICAgIHRoaXMucmV1c2VUc1Byb2dyYW0gPSB0aGlzLnRzUHJvZ3JhbTtcblxuICAgIHRoaXMuaG9zdC5wb3N0UHJvZ3JhbUNyZWF0aW9uQ2xlYW51cCgpO1xuXG4gICAgY29uc3QgcmV1c2VkUHJvZ3JhbVN0cmF0ZWd5ID0gbmV3IFJldXNlZFByb2dyYW1TdHJhdGVneShcbiAgICAgICAgdGhpcy50c1Byb2dyYW0sIHRoaXMuaG9zdCwgdGhpcy5vcHRpb25zLCB0aGlzLmhvc3Quc2hpbUV4dGVuc2lvblByZWZpeGVzKTtcblxuICAgIHRoaXMuaW5jcmVtZW50YWxTdHJhdGVneSA9IG9sZFByb2dyYW0gIT09IHVuZGVmaW5lZCA/XG4gICAgICAgIG9sZFByb2dyYW0uaW5jcmVtZW50YWxTdHJhdGVneS50b05leHRCdWlsZFN0cmF0ZWd5KCkgOlxuICAgICAgICBuZXcgVHJhY2tlZEluY3JlbWVudGFsQnVpbGRTdHJhdGVneSgpO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBOZ0NvbXBpbGVyIHdoaWNoIHdpbGwgZHJpdmUgdGhlIHJlc3Qgb2YgdGhlIGNvbXBpbGF0aW9uLlxuICAgIHRoaXMuY29tcGlsZXIgPSBuZXcgTmdDb21waWxlcihcbiAgICAgICAgdGhpcy5ob3N0LCBvcHRpb25zLCB0aGlzLnRzUHJvZ3JhbSwgcmV1c2VkUHJvZ3JhbVN0cmF0ZWd5LCB0aGlzLmluY3JlbWVudGFsU3RyYXRlZ3ksXG4gICAgICAgIHJldXNlUHJvZ3JhbSwgdGhpcy5wZXJmUmVjb3JkZXIpO1xuICB9XG5cbiAgZ2V0VHNQcm9ncmFtKCk6IHRzLlByb2dyYW0ge1xuICAgIHJldHVybiB0aGlzLnRzUHJvZ3JhbTtcbiAgfVxuXG4gIGdldFRzT3B0aW9uRGlhZ25vc3RpY3MoY2FuY2VsbGF0aW9uVG9rZW4/OiB0cy5DYW5jZWxsYXRpb25Ub2tlbnxcbiAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQpOiByZWFkb25seSB0cy5EaWFnbm9zdGljW10ge1xuICAgIHJldHVybiB0aGlzLnRzUHJvZ3JhbS5nZXRPcHRpb25zRGlhZ25vc3RpY3MoY2FuY2VsbGF0aW9uVG9rZW4pO1xuICB9XG5cbiAgZ2V0VHNTeW50YWN0aWNEaWFnbm9zdGljcyhcbiAgICAgIHNvdXJjZUZpbGU/OiB0cy5Tb3VyY2VGaWxlfHVuZGVmaW5lZCxcbiAgICAgIGNhbmNlbGxhdGlvblRva2VuPzogdHMuQ2FuY2VsbGF0aW9uVG9rZW58dW5kZWZpbmVkKTogcmVhZG9ubHkgdHMuRGlhZ25vc3RpY1tdIHtcbiAgICBjb25zdCBpZ25vcmVkRmlsZXMgPSB0aGlzLmNvbXBpbGVyLmlnbm9yZUZvckRpYWdub3N0aWNzO1xuICAgIGlmIChzb3VyY2VGaWxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChpZ25vcmVkRmlsZXMuaGFzKHNvdXJjZUZpbGUpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMudHNQcm9ncmFtLmdldFN5bnRhY3RpY0RpYWdub3N0aWNzKHNvdXJjZUZpbGUsIGNhbmNlbGxhdGlvblRva2VuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGlhZ25vc3RpY3M6IHRzLkRpYWdub3N0aWNbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBzZiBvZiB0aGlzLnRzUHJvZ3JhbS5nZXRTb3VyY2VGaWxlcygpKSB7XG4gICAgICAgIGlmICghaWdub3JlZEZpbGVzLmhhcyhzZikpIHtcbiAgICAgICAgICBkaWFnbm9zdGljcy5wdXNoKC4uLnRoaXMudHNQcm9ncmFtLmdldFN5bnRhY3RpY0RpYWdub3N0aWNzKHNmLCBjYW5jZWxsYXRpb25Ub2tlbikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZGlhZ25vc3RpY3M7XG4gICAgfVxuICB9XG5cbiAgZ2V0VHNTZW1hbnRpY0RpYWdub3N0aWNzKFxuICAgICAgc291cmNlRmlsZT86IHRzLlNvdXJjZUZpbGV8dW5kZWZpbmVkLFxuICAgICAgY2FuY2VsbGF0aW9uVG9rZW4/OiB0cy5DYW5jZWxsYXRpb25Ub2tlbnx1bmRlZmluZWQpOiByZWFkb25seSB0cy5EaWFnbm9zdGljW10ge1xuICAgIGNvbnN0IGlnbm9yZWRGaWxlcyA9IHRoaXMuY29tcGlsZXIuaWdub3JlRm9yRGlhZ25vc3RpY3M7XG4gICAgaWYgKHNvdXJjZUZpbGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGlnbm9yZWRGaWxlcy5oYXMoc291cmNlRmlsZSkpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy50c1Byb2dyYW0uZ2V0U2VtYW50aWNEaWFnbm9zdGljcyhzb3VyY2VGaWxlLCBjYW5jZWxsYXRpb25Ub2tlbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRpYWdub3N0aWNzOiB0cy5EaWFnbm9zdGljW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3Qgc2Ygb2YgdGhpcy50c1Byb2dyYW0uZ2V0U291cmNlRmlsZXMoKSkge1xuICAgICAgICBpZiAoIWlnbm9yZWRGaWxlcy5oYXMoc2YpKSB7XG4gICAgICAgICAgZGlhZ25vc3RpY3MucHVzaCguLi50aGlzLnRzUHJvZ3JhbS5nZXRTZW1hbnRpY0RpYWdub3N0aWNzKHNmLCBjYW5jZWxsYXRpb25Ub2tlbikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZGlhZ25vc3RpY3M7XG4gICAgfVxuICB9XG5cbiAgZ2V0TmdPcHRpb25EaWFnbm9zdGljcyhjYW5jZWxsYXRpb25Ub2tlbj86IHRzLkNhbmNlbGxhdGlvblRva2VufFxuICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCk6IHJlYWRvbmx5KHRzLkRpYWdub3N0aWN8YXBpLkRpYWdub3N0aWMpW10ge1xuICAgIHJldHVybiB0aGlzLmNvbXBpbGVyLmdldE9wdGlvbkRpYWdub3N0aWNzKCk7XG4gIH1cblxuICBnZXROZ1N0cnVjdHVyYWxEaWFnbm9zdGljcyhjYW5jZWxsYXRpb25Ub2tlbj86IHRzLkNhbmNlbGxhdGlvblRva2VufFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQpOiByZWFkb25seSBhcGkuRGlhZ25vc3RpY1tdIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXROZ1NlbWFudGljRGlhZ25vc3RpY3MoXG4gICAgICBmaWxlTmFtZT86IHN0cmluZ3x1bmRlZmluZWQsIGNhbmNlbGxhdGlvblRva2VuPzogdHMuQ2FuY2VsbGF0aW9uVG9rZW58dW5kZWZpbmVkKTpcbiAgICAgIHJlYWRvbmx5KHRzLkRpYWdub3N0aWN8YXBpLkRpYWdub3N0aWMpW10ge1xuICAgIGxldCBzZjogdHMuU291cmNlRmlsZXx1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGZpbGVOYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHNmID0gdGhpcy50c1Byb2dyYW0uZ2V0U291cmNlRmlsZShmaWxlTmFtZSk7XG4gICAgICBpZiAoc2YgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBUaGVyZSBhcmUgbm8gZGlhZ25vc3RpY3MgZm9yIGZpbGVzIHdoaWNoIGRvbid0IGV4aXN0IGluIHRoZSBwcm9ncmFtIC0gbWF5YmUgdGhlIGNhbGxlclxuICAgICAgICAvLyBoYXMgc3RhbGUgZGF0YT9cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGRpYWdub3N0aWNzID0gdGhpcy5jb21waWxlci5nZXREaWFnbm9zdGljcyhzZik7XG4gICAgdGhpcy5yZXVzZVRzUHJvZ3JhbSA9IHRoaXMuY29tcGlsZXIuZ2V0TmV4dFByb2dyYW0oKTtcbiAgICByZXR1cm4gZGlhZ25vc3RpY3M7XG4gIH1cblxuICAvKipcbiAgICogRW5zdXJlIHRoYXQgdGhlIGBOZ0NvbXBpbGVyYCBoYXMgcHJvcGVybHkgYW5hbHl6ZWQgdGhlIHByb2dyYW0sIGFuZCBhbGxvdyBmb3IgdGhlIGFzeW5jaHJvbm91c1xuICAgKiBsb2FkaW5nIG9mIGFueSByZXNvdXJjZXMgZHVyaW5nIHRoZSBwcm9jZXNzLlxuICAgKlxuICAgKiBUaGlzIGlzIHVzZWQgYnkgdGhlIEFuZ3VsYXIgQ0xJIHRvIGFsbG93IGZvciBzcGF3bmluZyAoYXN5bmMpIGNoaWxkIGNvbXBpbGF0aW9ucyBmb3IgdGhpbmdzXG4gICAqIGxpa2UgU0FTUyBmaWxlcyB1c2VkIGluIGBzdHlsZVVybHNgLlxuICAgKi9cbiAgbG9hZE5nU3RydWN0dXJlQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuY29tcGlsZXIuYW5hbHl6ZUFzeW5jKCk7XG4gIH1cblxuICBsaXN0TGF6eVJvdXRlcyhlbnRyeVJvdXRlPzogc3RyaW5nfHVuZGVmaW5lZCk6IGFwaS5MYXp5Um91dGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29tcGlsZXIubGlzdExhenlSb3V0ZXMoZW50cnlSb3V0ZSk7XG4gIH1cblxuICBlbWl0KG9wdHM/OiB7XG4gICAgZW1pdEZsYWdzPzogYXBpLkVtaXRGbGFnc3x1bmRlZmluZWQ7XG4gICAgY2FuY2VsbGF0aW9uVG9rZW4/OiB0cy5DYW5jZWxsYXRpb25Ub2tlbiB8IHVuZGVmaW5lZDtcbiAgICBjdXN0b21UcmFuc2Zvcm1lcnM/OiBhcGkuQ3VzdG9tVHJhbnNmb3JtZXJzIHwgdW5kZWZpbmVkO1xuICAgIGVtaXRDYWxsYmFjaz86IGFwaS5Uc0VtaXRDYWxsYmFjayB8IHVuZGVmaW5lZDtcbiAgICBtZXJnZUVtaXRSZXN1bHRzQ2FsbGJhY2s/OiBhcGkuVHNNZXJnZUVtaXRSZXN1bHRzQ2FsbGJhY2sgfCB1bmRlZmluZWQ7XG4gIH18dW5kZWZpbmVkKTogdHMuRW1pdFJlc3VsdCB7XG4gICAgY29uc3Qge3RyYW5zZm9ybWVyc30gPSB0aGlzLmNvbXBpbGVyLnByZXBhcmVFbWl0KCk7XG4gICAgY29uc3QgaWdub3JlRmlsZXMgPSB0aGlzLmNvbXBpbGVyLmlnbm9yZUZvckVtaXQ7XG4gICAgY29uc3QgZW1pdENhbGxiYWNrID0gb3B0cyAmJiBvcHRzLmVtaXRDYWxsYmFjayB8fCBkZWZhdWx0RW1pdENhbGxiYWNrO1xuXG4gICAgY29uc3Qgd3JpdGVGaWxlOiB0cy5Xcml0ZUZpbGVDYWxsYmFjayA9XG4gICAgICAgIChmaWxlTmFtZTogc3RyaW5nLCBkYXRhOiBzdHJpbmcsIHdyaXRlQnl0ZU9yZGVyTWFyazogYm9vbGVhbixcbiAgICAgICAgIG9uRXJyb3I6ICgobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkKXx1bmRlZmluZWQsXG4gICAgICAgICBzb3VyY2VGaWxlczogUmVhZG9ubHlBcnJheTx0cy5Tb3VyY2VGaWxlPnx1bmRlZmluZWQpID0+IHtcbiAgICAgICAgICBpZiAoc291cmNlRmlsZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gUmVjb3JkIHN1Y2Nlc3NmdWwgd3JpdGVzIGZvciBhbnkgYHRzLlNvdXJjZUZpbGVgICh0aGF0J3Mgbm90IGEgZGVjbGFyYXRpb24gZmlsZSlcbiAgICAgICAgICAgIC8vIHRoYXQncyBhbiBpbnB1dCB0byB0aGlzIHdyaXRlLlxuICAgICAgICAgICAgZm9yIChjb25zdCB3cml0dGVuU2Ygb2Ygc291cmNlRmlsZXMpIHtcbiAgICAgICAgICAgICAgaWYgKHdyaXR0ZW5TZi5pc0RlY2xhcmF0aW9uRmlsZSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5jb21waWxlci5pbmNyZW1lbnRhbERyaXZlci5yZWNvcmRTdWNjZXNzZnVsRW1pdCh3cml0dGVuU2YpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmhvc3Qud3JpdGVGaWxlKGZpbGVOYW1lLCBkYXRhLCB3cml0ZUJ5dGVPcmRlck1hcmssIG9uRXJyb3IsIHNvdXJjZUZpbGVzKTtcbiAgICAgICAgfTtcblxuICAgIGNvbnN0IGN1c3RvbVRyYW5zZm9ybXMgPSBvcHRzICYmIG9wdHMuY3VzdG9tVHJhbnNmb3JtZXJzO1xuICAgIGNvbnN0IGJlZm9yZVRyYW5zZm9ybXMgPSB0cmFuc2Zvcm1lcnMuYmVmb3JlIHx8IFtdO1xuICAgIGNvbnN0IGFmdGVyRGVjbGFyYXRpb25zVHJhbnNmb3JtcyA9IHRyYW5zZm9ybWVycy5hZnRlckRlY2xhcmF0aW9ucztcblxuICAgIGlmIChjdXN0b21UcmFuc2Zvcm1zICE9PSB1bmRlZmluZWQgJiYgY3VzdG9tVHJhbnNmb3Jtcy5iZWZvcmVUcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBiZWZvcmVUcmFuc2Zvcm1zLnB1c2goLi4uY3VzdG9tVHJhbnNmb3Jtcy5iZWZvcmVUcyk7XG4gICAgfVxuXG4gICAgY29uc3QgZW1pdFNwYW4gPSB0aGlzLnBlcmZSZWNvcmRlci5zdGFydCgnZW1pdCcpO1xuICAgIGNvbnN0IGVtaXRSZXN1bHRzOiB0cy5FbWl0UmVzdWx0W10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgdGFyZ2V0U291cmNlRmlsZSBvZiB0aGlzLnRzUHJvZ3JhbS5nZXRTb3VyY2VGaWxlcygpKSB7XG4gICAgICBpZiAodGFyZ2V0U291cmNlRmlsZS5pc0RlY2xhcmF0aW9uRmlsZSB8fCBpZ25vcmVGaWxlcy5oYXModGFyZ2V0U291cmNlRmlsZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmNvbXBpbGVyLmluY3JlbWVudGFsRHJpdmVyLnNhZmVUb1NraXBFbWl0KHRhcmdldFNvdXJjZUZpbGUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmaWxlRW1pdFNwYW4gPSB0aGlzLnBlcmZSZWNvcmRlci5zdGFydCgnZW1pdEZpbGUnLCB0YXJnZXRTb3VyY2VGaWxlKTtcbiAgICAgIGVtaXRSZXN1bHRzLnB1c2goZW1pdENhbGxiYWNrKHtcbiAgICAgICAgdGFyZ2V0U291cmNlRmlsZSxcbiAgICAgICAgcHJvZ3JhbTogdGhpcy50c1Byb2dyYW0sXG4gICAgICAgIGhvc3Q6IHRoaXMuaG9zdCxcbiAgICAgICAgb3B0aW9uczogdGhpcy5vcHRpb25zLFxuICAgICAgICBlbWl0T25seUR0c0ZpbGVzOiBmYWxzZSxcbiAgICAgICAgd3JpdGVGaWxlLFxuICAgICAgICBjdXN0b21UcmFuc2Zvcm1lcnM6IHtcbiAgICAgICAgICBiZWZvcmU6IGJlZm9yZVRyYW5zZm9ybXMsXG4gICAgICAgICAgYWZ0ZXI6IGN1c3RvbVRyYW5zZm9ybXMgJiYgY3VzdG9tVHJhbnNmb3Jtcy5hZnRlclRzLFxuICAgICAgICAgIGFmdGVyRGVjbGFyYXRpb25zOiBhZnRlckRlY2xhcmF0aW9uc1RyYW5zZm9ybXMsXG4gICAgICAgIH0gYXMgYW55LFxuICAgICAgfSkpO1xuICAgICAgdGhpcy5wZXJmUmVjb3JkZXIuc3RvcChmaWxlRW1pdFNwYW4pO1xuICAgIH1cbiAgICB0aGlzLnBlcmZSZWNvcmRlci5zdG9wKGVtaXRTcGFuKTtcblxuICAgIGlmICh0aGlzLnBlcmZUcmFja2VyICE9PSBudWxsICYmIHRoaXMub3B0aW9ucy50cmFjZVBlcmZvcm1hbmNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucGVyZlRyYWNrZXIuc2VyaWFsaXplVG9GaWxlKHRoaXMub3B0aW9ucy50cmFjZVBlcmZvcm1hbmNlLCB0aGlzLmhvc3QpO1xuICAgIH1cblxuICAgIC8vIFJ1biB0aGUgZW1pdCwgaW5jbHVkaW5nIGEgY3VzdG9tIHRyYW5zZm9ybWVyIHRoYXQgd2lsbCBkb3dubGV2ZWwgdGhlIEl2eSBkZWNvcmF0b3JzIGluIGNvZGUuXG4gICAgcmV0dXJuICgob3B0cyAmJiBvcHRzLm1lcmdlRW1pdFJlc3VsdHNDYWxsYmFjaykgfHwgbWVyZ2VFbWl0UmVzdWx0cykoZW1pdFJlc3VsdHMpO1xuICB9XG5cbiAgZ2V0SW5kZXhlZENvbXBvbmVudHMoKTogTWFwPHRzLkRlY2xhcmF0aW9uLCBJbmRleGVkQ29tcG9uZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuY29tcGlsZXIuZ2V0SW5kZXhlZENvbXBvbmVudHMoKTtcbiAgfVxuXG4gIGdldExpYnJhcnlTdW1tYXJpZXMoKTogTWFwPHN0cmluZywgYXBpLkxpYnJhcnlTdW1tYXJ5PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgZ2V0RW1pdHRlZEdlbmVyYXRlZEZpbGVzKCk6IE1hcDxzdHJpbmcsIEdlbmVyYXRlZEZpbGU+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBnZXRFbWl0dGVkU291cmNlRmlsZXMoKTogTWFwPHN0cmluZywgdHMuU291cmNlRmlsZT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuXG5jb25zdCBkZWZhdWx0RW1pdENhbGxiYWNrOiBhcGkuVHNFbWl0Q2FsbGJhY2sgPSAoe1xuICBwcm9ncmFtLFxuICB0YXJnZXRTb3VyY2VGaWxlLFxuICB3cml0ZUZpbGUsXG4gIGNhbmNlbGxhdGlvblRva2VuLFxuICBlbWl0T25seUR0c0ZpbGVzLFxuICBjdXN0b21UcmFuc2Zvcm1lcnNcbn0pID0+XG4gICAgcHJvZ3JhbS5lbWl0KFxuICAgICAgICB0YXJnZXRTb3VyY2VGaWxlLCB3cml0ZUZpbGUsIGNhbmNlbGxhdGlvblRva2VuLCBlbWl0T25seUR0c0ZpbGVzLCBjdXN0b21UcmFuc2Zvcm1lcnMpO1xuXG5mdW5jdGlvbiBtZXJnZUVtaXRSZXN1bHRzKGVtaXRSZXN1bHRzOiB0cy5FbWl0UmVzdWx0W10pOiB0cy5FbWl0UmVzdWx0IHtcbiAgY29uc3QgZGlhZ25vc3RpY3M6IHRzLkRpYWdub3N0aWNbXSA9IFtdO1xuICBsZXQgZW1pdFNraXBwZWQgPSBmYWxzZTtcbiAgY29uc3QgZW1pdHRlZEZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGVyIG9mIGVtaXRSZXN1bHRzKSB7XG4gICAgZGlhZ25vc3RpY3MucHVzaCguLi5lci5kaWFnbm9zdGljcyk7XG4gICAgZW1pdFNraXBwZWQgPSBlbWl0U2tpcHBlZCB8fCBlci5lbWl0U2tpcHBlZDtcbiAgICBlbWl0dGVkRmlsZXMucHVzaCguLi4oZXIuZW1pdHRlZEZpbGVzIHx8IFtdKSk7XG4gIH1cblxuICByZXR1cm4ge2RpYWdub3N0aWNzLCBlbWl0U2tpcHBlZCwgZW1pdHRlZEZpbGVzfTtcbn1cbiJdfQ==
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvcHJvZ3JhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7O0lBR0gsK0JBQWlDO0lBR2pDLG1GQUF1RTtJQUV2RSw2REFBa0Q7SUFFbEQsMkVBQThEO0lBRTlELDZEQUFxRTtJQUNyRSwrREFBeUQ7SUFDekQsdUVBQWtEO0lBSWxEOzs7O09BSUc7SUFDSDtRQTRCRSxzQkFDSSxTQUFnQyxFQUFVLE9BQTBCLEVBQ3BFLFlBQThCLEVBQUUsVUFBeUI7WUFEZixZQUFPLEdBQVAsT0FBTyxDQUFtQjtZQUxoRSxpQkFBWSxHQUFpQix5QkFBa0IsQ0FBQztZQUNoRCxnQkFBVyxHQUFxQixJQUFJLENBQUM7WUFNM0MsNERBQTREO1lBQzVELElBQUksQ0FBQyxPQUFPLENBQUMsNkJBQTZCLEVBQUU7Z0JBQzFDLHFEQUFnQyxFQUFFLENBQUM7YUFDcEM7WUFFRCxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxXQUFXLEdBQUcsa0JBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3RDO1lBQ0QsSUFBSSxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUM7WUFFbkUsSUFBTSxZQUFZLEdBQUcsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLGNBQWMsQ0FBQztZQUNoRCxJQUFJLENBQUMsSUFBSSxHQUFHLHFCQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFlBQVksYUFBWixZQUFZLGNBQVosWUFBWSxHQUFJLElBQUksQ0FBQyxDQUFDO1lBRXhG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bnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7R2VuZXJhdGVkRmlsZX0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCAqIGFzIGFwaSBmcm9tICcuLi90cmFuc2Zvcm1lcnMvYXBpJztcbmltcG9ydCB7dmVyaWZ5U3VwcG9ydGVkVHlwZVNjcmlwdFZlcnNpb259IGZyb20gJy4uL3R5cGVzY3JpcHRfc3VwcG9ydCc7XG5cbmltcG9ydCB7TmdDb21waWxlciwgTmdDb21waWxlckhvc3R9IGZyb20gJy4vY29yZSc7XG5pbXBvcnQge05nQ29tcGlsZXJPcHRpb25zfSBmcm9tICcuL2NvcmUvYXBpJztcbmltcG9ydCB7VHJhY2tlZEluY3JlbWVudGFsQnVpbGRTdHJhdGVneX0gZnJvbSAnLi9pbmNyZW1lbnRhbCc7XG5pbXBvcnQge0luZGV4ZWRDb21wb25lbnR9IGZyb20gJy4vaW5kZXhlcic7XG5pbXBvcnQge05PT1BfUEVSRl9SRUNPUkRFUiwgUGVyZlJlY29yZGVyLCBQZXJmVHJhY2tlcn0gZnJvbSAnLi9wZXJmJztcbmltcG9ydCB7cmV0YWdBbGxUc0ZpbGVzLCB1bnRhZ0FsbFRzRmlsZXN9IGZyb20gJy4vc2hpbXMnO1xuaW1wb3J0IHtSZXVzZWRQcm9ncmFtU3RyYXRlZ3l9IGZyb20gJy4vdHlwZWNoZWNrJztcblxuXG5cbi8qKlxuICogRW50cnlwb2ludCB0byB0aGUgQW5ndWxhciBDb21waWxlciAoSXZ5Kykgd2hpY2ggc2l0cyBiZWhpbmQgdGhlIGBhcGkuUHJvZ3JhbWAgaW50ZXJmYWNlLCBhbGxvd2luZ1xuICogaXQgdG8gYmUgYSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciB0aGUgbGVnYWN5IFZpZXcgRW5naW5lIGNvbXBpbGVyIHRvIHRvb2xpbmcgc3VjaCBhcyB0aGVcbiAqIGNvbW1hbmQtbGluZSBtYWluKCkgZnVuY3Rpb24gb3IgdGhlIEFuZ3VsYXIgQ0xJLlxuICovXG5leHBvcnQgY2xhc3MgTmd0c2NQcm9ncmFtIGltcGxlbWVudHMgYXBpLlByb2dyYW0ge1xuICBwcml2YXRlIGNvbXBpbGVyOiBOZ0NvbXBpbGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJpbWFyeSBUeXBlU2NyaXB0IHByb2dyYW0sIHdoaWNoIGlzIHVzZWQgZm9yIGFuYWx5c2lzIGFuZCBlbWl0LlxuICAgKi9cbiAgcHJpdmF0ZSB0c1Byb2dyYW06IHRzLlByb2dyYW07XG5cbiAgLyoqXG4gICAqIFRoZSBUeXBlU2NyaXB0IHByb2dyYW0gdG8gdXNlIGZvciB0aGUgbmV4dCBpbmNyZW1lbnRhbCBjb21waWxhdGlvbi5cbiAgICpcbiAgICogT25jZSBhIFRTIHByb2dyYW0gaXMgdXNlZCB0byBjcmVhdGUgYW5vdGhlciAoYW4gaW5jcmVtZW50YWwgY29tcGlsYXRpb24gb3BlcmF0aW9uKSwgaXQgY2FuIG5vXG4gICAqIGxvbmdlciBiZSB1c2VkIHRvIGRvIHNvIGFnYWluLlxuICAgKlxuICAgKiBTaW5jZSB0ZW1wbGF0ZSB0eXBlLWNoZWNraW5nIHVzZXMgdGhlIHByaW1hcnkgcHJvZ3JhbSB0byBjcmVhdGUgYSB0eXBlLWNoZWNraW5nIHByb2dyYW0sIGFmdGVyXG4gICAqIHRoaXMgaGFwcGVucyB0aGUgcHJpbWFyeSBwcm9ncmFtIGlzIG5vIGxvbmdlciBzdWl0YWJsZSBmb3Igc3RhcnRpbmcgYSBzdWJzZXF1ZW50IGNvbXBpbGF0aW9uLFxuICAgKiBhbmQgdGhlIHRlbXBsYXRlIHR5cGUtY2hlY2tpbmcgcHJvZ3JhbSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLlxuICAgKlxuICAgKiBUaHVzLCB0aGUgcHJvZ3JhbSB3aGljaCBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIG5leHQgaW5jcmVtZW50YWwgY29tcGlsYXRpb24gaXMgdHJhY2tlZCBpblxuICAgKiBgcmV1c2VUc1Byb2dyYW1gLCBzZXBhcmF0ZWx5IGZyb20gdGhlIFwicHJpbWFyeVwiIHByb2dyYW0gd2hpY2ggaXMgYWx3YXlzIHVzZWQgZm9yIGVtaXQuXG4gICAqL1xuICBwcml2YXRlIHJldXNlVHNQcm9ncmFtOiB0cy5Qcm9ncmFtO1xuICBwcml2YXRlIGNsb3N1cmVDb21waWxlckVuYWJsZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgaG9zdDogTmdDb21waWxlckhvc3Q7XG4gIHByaXZhdGUgcGVyZlJlY29yZGVyOiBQZXJmUmVjb3JkZXIgPSBOT09QX1BFUkZfUkVDT1JERVI7XG4gIHByaXZhdGUgcGVyZlRyYWNrZXI6IFBlcmZUcmFja2VyfG51bGwgPSBudWxsO1xuICBwcml2YXRlIGluY3JlbWVudGFsU3RyYXRlZ3k6IFRyYWNrZWRJbmNyZW1lbnRhbEJ1aWxkU3RyYXRlZ3k7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICByb290TmFtZXM6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiwgcHJpdmF0ZSBvcHRpb25zOiBOZ0NvbXBpbGVyT3B0aW9ucyxcbiAgICAgIGRlbGVnYXRlSG9zdDogYXBpLkNvbXBpbGVySG9zdCwgb2xkUHJvZ3JhbT86IE5ndHNjUHJvZ3JhbSkge1xuICAgIC8vIEZpcnN0LCBjaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IFRTIHZlcnNpb24gaXMgc3VwcG9ydGVkLlxuICAgIGlmICghb3B0aW9ucy5kaXNhYmxlVHlwZVNjcmlwdFZlcnNpb25DaGVjaykge1xuICAgICAgdmVyaWZ5U3VwcG9ydGVkVHlwZVNjcmlwdFZlcnNpb24oKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy50cmFjZVBlcmZvcm1hbmNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucGVyZlRyYWNrZXIgPSBQZXJmVHJhY2tlci56ZXJvZWRUb05vdygpO1xuICAgICAgdGhpcy5wZXJmUmVjb3JkZXIgPSB0aGlzLnBlcmZUcmFja2VyO1xuICAgIH1cbiAgICB0aGlzLmNsb3N1cmVDb21waWxlckVuYWJsZWQgPSAhIW9wdGlvbnMuYW5ub3RhdGVGb3JDbG9zdXJlQ29tcGlsZXI7XG5cbiAgICBjb25zdCByZXVzZVByb2dyYW0gPSBvbGRQcm9ncmFtPy5yZXVzZVRzUHJvZ3JhbTtcbiAgICB0aGlzLmhvc3QgPSBOZ0NvbXBpbGVySG9zdC53cmFwKGRlbGVnYXRlSG9zdCwgcm9vdE5hbWVzLCBvcHRpb25zLCByZXVzZVByb2dyYW0gPz8gbnVsbCk7XG5cbiAgICBpZiAocmV1c2VQcm9ncmFtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFByaW9yIHRvIHJldXNpbmcgdGhlIG9sZCBwcm9ncmFtLCByZXN0b3JlIHNoaW0gdGFnZ2luZyBmb3IgYWxsIGl0cyBgdHMuU291cmNlRmlsZWBzLlxuICAgICAgLy8gVHlwZVNjcmlwdCBjaGVja3MgdGhlIGByZWZlcmVuY2VkRmlsZXNgIG9mIGB0cy5Tb3VyY2VGaWxlYHMgZm9yIGNoYW5nZXMgd2hlbiBldmFsdWF0aW5nXG4gICAgICAvLyBpbmNyZW1lbnRhbCByZXVzZSBvZiBkYXRhIGZyb20gdGhlIG9sZCBwcm9ncmFtLCBzbyBpdCdzIGltcG9ydGFudCB0aGF0IHRoZXNlIG1hdGNoIGluIG9yZGVyXG4gICAgICAvLyB0byBnZXQgdGhlIG1vc3QgYmVuZWZpdCBvdXQgb2YgcmV1c2UuXG4gICAgICByZXRhZ0FsbFRzRmlsZXMocmV1c2VQcm9ncmFtKTtcbiAgICB9XG5cbiAgICB0aGlzLnRzUHJvZ3JhbSA9IHRzLmNyZWF0ZVByb2dyYW0odGhpcy5ob3N0LmlucHV0RmlsZXMsIG9wdGlvbnMsIHRoaXMuaG9zdCwgcmV1c2VQcm9ncmFtKTtcbiAgICB0aGlzLnJldXNlVHNQcm9ncmFtID0gdGhpcy50c1Byb2dyYW07XG5cbiAgICB0aGlzLmhvc3QucG9zdFByb2dyYW1DcmVhdGlvbkNsZWFudXAoKTtcblxuICAgIC8vIFNoaW0gdGFnZ2luZyBoYXMgc2VydmVkIGl0cyBwdXJwb3NlLCBhbmQgdGFncyBjYW4gbm93IGJlIHJlbW92ZWQgZnJvbSBhbGwgYHRzLlNvdXJjZUZpbGVgcyBpblxuICAgIC8vIHRoZSBwcm9ncmFtLlxuICAgIHVudGFnQWxsVHNGaWxlcyh0aGlzLnRzUHJvZ3JhbSk7XG5cbiAgICBjb25zdCByZXVzZWRQcm9ncmFtU3RyYXRlZ3kgPSBuZXcgUmV1c2VkUHJvZ3JhbVN0cmF0ZWd5KFxuICAgICAgICB0aGlzLnRzUHJvZ3JhbSwgdGhpcy5ob3N0LCB0aGlzLm9wdGlvbnMsIHRoaXMuaG9zdC5zaGltRXh0ZW5zaW9uUHJlZml4ZXMpO1xuXG4gICAgdGhpcy5pbmNyZW1lbnRhbFN0cmF0ZWd5ID0gb2xkUHJvZ3JhbSAhPT0gdW5kZWZpbmVkID9cbiAgICAgICAgb2xkUHJvZ3JhbS5pbmNyZW1lbnRhbFN0cmF0ZWd5LnRvTmV4dEJ1aWxkU3RyYXRlZ3koKSA6XG4gICAgICAgIG5ldyBUcmFja2VkSW5jcmVtZW50YWxCdWlsZFN0cmF0ZWd5KCk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIE5nQ29tcGlsZXIgd2hpY2ggd2lsbCBkcml2ZSB0aGUgcmVzdCBvZiB0aGUgY29tcGlsYXRpb24uXG4gICAgdGhpcy5jb21waWxlciA9IG5ldyBOZ0NvbXBpbGVyKFxuICAgICAgICB0aGlzLmhvc3QsIG9wdGlvbnMsIHRoaXMudHNQcm9ncmFtLCByZXVzZWRQcm9ncmFtU3RyYXRlZ3ksIHRoaXMuaW5jcmVtZW50YWxTdHJhdGVneSxcbiAgICAgICAgcmV1c2VQcm9ncmFtLCB0aGlzLnBlcmZSZWNvcmRlcik7XG4gIH1cblxuICBnZXRUc1Byb2dyYW0oKTogdHMuUHJvZ3JhbSB7XG4gICAgcmV0dXJuIHRoaXMudHNQcm9ncmFtO1xuICB9XG5cbiAgZ2V0UmV1c2VUc1Byb2dyYW0oKTogdHMuUHJvZ3JhbSB7XG4gICAgcmV0dXJuIHRoaXMucmV1c2VUc1Byb2dyYW07XG4gIH1cblxuICBnZXRUc09wdGlvbkRpYWdub3N0aWNzKGNhbmNlbGxhdGlvblRva2VuPzogdHMuQ2FuY2VsbGF0aW9uVG9rZW58XG4gICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkKTogcmVhZG9ubHkgdHMuRGlhZ25vc3RpY1tdIHtcbiAgICByZXR1cm4gdGhpcy50c1Byb2dyYW0uZ2V0T3B0aW9uc0RpYWdub3N0aWNzKGNhbmNlbGxhdGlvblRva2VuKTtcbiAgfVxuXG4gIGdldFRzU3ludGFjdGljRGlhZ25vc3RpY3MoXG4gICAgICBzb3VyY2VGaWxlPzogdHMuU291cmNlRmlsZXx1bmRlZmluZWQsXG4gICAgICBjYW5jZWxsYXRpb25Ub2tlbj86IHRzLkNhbmNlbGxhdGlvblRva2VufHVuZGVmaW5lZCk6IHJlYWRvbmx5IHRzLkRpYWdub3N0aWNbXSB7XG4gICAgY29uc3QgaWdub3JlZEZpbGVzID0gdGhpcy5jb21waWxlci5pZ25vcmVGb3JEaWFnbm9zdGljcztcbiAgICBpZiAoc291cmNlRmlsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoaWdub3JlZEZpbGVzLmhhcyhzb3VyY2VGaWxlKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnRzUHJvZ3JhbS5nZXRTeW50YWN0aWNEaWFnbm9zdGljcyhzb3VyY2VGaWxlLCBjYW5jZWxsYXRpb25Ub2tlbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRpYWdub3N0aWNzOiB0cy5EaWFnbm9zdGljW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3Qgc2Ygb2YgdGhpcy50c1Byb2dyYW0uZ2V0U291cmNlRmlsZXMoKSkge1xuICAgICAgICBpZiAoIWlnbm9yZWRGaWxlcy5oYXMoc2YpKSB7XG4gICAgICAgICAgZGlhZ25vc3RpY3MucHVzaCguLi50aGlzLnRzUHJvZ3JhbS5nZXRTeW50YWN0aWNEaWFnbm9zdGljcyhzZiwgY2FuY2VsbGF0aW9uVG9rZW4pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGRpYWdub3N0aWNzO1xuICAgIH1cbiAgfVxuXG4gIGdldFRzU2VtYW50aWNEaWFnbm9zdGljcyhcbiAgICAgIHNvdXJjZUZpbGU/OiB0cy5Tb3VyY2VGaWxlfHVuZGVmaW5lZCxcbiAgICAgIGNhbmNlbGxhdGlvblRva2VuPzogdHMuQ2FuY2VsbGF0aW9uVG9rZW58dW5kZWZpbmVkKTogcmVhZG9ubHkgdHMuRGlhZ25vc3RpY1tdIHtcbiAgICBjb25zdCBpZ25vcmVkRmlsZXMgPSB0aGlzLmNvbXBpbGVyLmlnbm9yZUZvckRpYWdub3N0aWNzO1xuICAgIGlmIChzb3VyY2VGaWxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChpZ25vcmVkRmlsZXMuaGFzKHNvdXJjZUZpbGUpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMudHNQcm9ncmFtLmdldFNlbWFudGljRGlhZ25vc3RpY3Moc291cmNlRmlsZSwgY2FuY2VsbGF0aW9uVG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkaWFnbm9zdGljczogdHMuRGlhZ25vc3RpY1tdID0gW107XG4gICAgICBmb3IgKGNvbnN0IHNmIG9mIHRoaXMudHNQcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkpIHtcbiAgICAgICAgaWYgKCFpZ25vcmVkRmlsZXMuaGFzKHNmKSkge1xuICAgICAgICAgIGRpYWdub3N0aWNzLnB1c2goLi4udGhpcy50c1Byb2dyYW0uZ2V0U2VtYW50aWNEaWFnbm9zdGljcyhzZiwgY2FuY2VsbGF0aW9uVG9rZW4pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGRpYWdub3N0aWNzO1xuICAgIH1cbiAgfVxuXG4gIGdldE5nT3B0aW9uRGlhZ25vc3RpY3MoY2FuY2VsbGF0aW9uVG9rZW4/OiB0cy5DYW5jZWxsYXRpb25Ub2tlbnxcbiAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQpOiByZWFkb25seSh0cy5EaWFnbm9zdGljfGFwaS5EaWFnbm9zdGljKVtdIHtcbiAgICByZXR1cm4gdGhpcy5jb21waWxlci5nZXRPcHRpb25EaWFnbm9zdGljcygpO1xuICB9XG5cbiAgZ2V0TmdTdHJ1Y3R1cmFsRGlhZ25vc3RpY3MoY2FuY2VsbGF0aW9uVG9rZW4/OiB0cy5DYW5jZWxsYXRpb25Ub2tlbnxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkKTogcmVhZG9ubHkgYXBpLkRpYWdub3N0aWNbXSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgZ2V0TmdTZW1hbnRpY0RpYWdub3N0aWNzKFxuICAgICAgZmlsZU5hbWU/OiBzdHJpbmd8dW5kZWZpbmVkLCBjYW5jZWxsYXRpb25Ub2tlbj86IHRzLkNhbmNlbGxhdGlvblRva2VufHVuZGVmaW5lZCk6XG4gICAgICByZWFkb25seSh0cy5EaWFnbm9zdGljfGFwaS5EaWFnbm9zdGljKVtdIHtcbiAgICBsZXQgc2Y6IHRzLlNvdXJjZUZpbGV8dW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlmIChmaWxlTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzZiA9IHRoaXMudHNQcm9ncmFtLmdldFNvdXJjZUZpbGUoZmlsZU5hbWUpO1xuICAgICAgaWYgKHNmID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gVGhlcmUgYXJlIG5vIGRpYWdub3N0aWNzIGZvciBmaWxlcyB3aGljaCBkb24ndCBleGlzdCBpbiB0aGUgcHJvZ3JhbSAtIG1heWJlIHRoZSBjYWxsZXJcbiAgICAgICAgLy8gaGFzIHN0YWxlIGRhdGE/XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBkaWFnbm9zdGljcyA9IHRoaXMuY29tcGlsZXIuZ2V0RGlhZ25vc3RpY3Moc2YpO1xuICAgIHRoaXMucmV1c2VUc1Byb2dyYW0gPSB0aGlzLmNvbXBpbGVyLmdldE5leHRQcm9ncmFtKCk7XG4gICAgcmV0dXJuIGRpYWdub3N0aWNzO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuc3VyZSB0aGF0IHRoZSBgTmdDb21waWxlcmAgaGFzIHByb3Blcmx5IGFuYWx5emVkIHRoZSBwcm9ncmFtLCBhbmQgYWxsb3cgZm9yIHRoZSBhc3luY2hyb25vdXNcbiAgICogbG9hZGluZyBvZiBhbnkgcmVzb3VyY2VzIGR1cmluZyB0aGUgcHJvY2Vzcy5cbiAgICpcbiAgICogVGhpcyBpcyB1c2VkIGJ5IHRoZSBBbmd1bGFyIENMSSB0byBhbGxvdyBmb3Igc3Bhd25pbmcgKGFzeW5jKSBjaGlsZCBjb21waWxhdGlvbnMgZm9yIHRoaW5nc1xuICAgKiBsaWtlIFNBU1MgZmlsZXMgdXNlZCBpbiBgc3R5bGVVcmxzYC5cbiAgICovXG4gIGxvYWROZ1N0cnVjdHVyZUFzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmNvbXBpbGVyLmFuYWx5emVBc3luYygpO1xuICB9XG5cbiAgbGlzdExhenlSb3V0ZXMoZW50cnlSb3V0ZT86IHN0cmluZ3x1bmRlZmluZWQpOiBhcGkuTGF6eVJvdXRlW10ge1xuICAgIHJldHVybiB0aGlzLmNvbXBpbGVyLmxpc3RMYXp5Um91dGVzKGVudHJ5Um91dGUpO1xuICB9XG5cbiAgZW1pdChvcHRzPzoge1xuICAgIGVtaXRGbGFncz86IGFwaS5FbWl0RmxhZ3N8dW5kZWZpbmVkO1xuICAgIGNhbmNlbGxhdGlvblRva2VuPzogdHMuQ2FuY2VsbGF0aW9uVG9rZW4gfCB1bmRlZmluZWQ7XG4gICAgY3VzdG9tVHJhbnNmb3JtZXJzPzogYXBpLkN1c3RvbVRyYW5zZm9ybWVycyB8IHVuZGVmaW5lZDtcbiAgICBlbWl0Q2FsbGJhY2s/OiBhcGkuVHNFbWl0Q2FsbGJhY2sgfCB1bmRlZmluZWQ7XG4gICAgbWVyZ2VFbWl0UmVzdWx0c0NhbGxiYWNrPzogYXBpLlRzTWVyZ2VFbWl0UmVzdWx0c0NhbGxiYWNrIHwgdW5kZWZpbmVkO1xuICB9fHVuZGVmaW5lZCk6IHRzLkVtaXRSZXN1bHQge1xuICAgIGNvbnN0IHt0cmFuc2Zvcm1lcnN9ID0gdGhpcy5jb21waWxlci5wcmVwYXJlRW1pdCgpO1xuICAgIGNvbnN0IGlnbm9yZUZpbGVzID0gdGhpcy5jb21waWxlci5pZ25vcmVGb3JFbWl0O1xuICAgIGNvbnN0IGVtaXRDYWxsYmFjayA9IG9wdHMgJiYgb3B0cy5lbWl0Q2FsbGJhY2sgfHwgZGVmYXVsdEVtaXRDYWxsYmFjaztcblxuICAgIGNvbnN0IHdyaXRlRmlsZTogdHMuV3JpdGVGaWxlQ2FsbGJhY2sgPVxuICAgICAgICAoZmlsZU5hbWU6IHN0cmluZywgZGF0YTogc3RyaW5nLCB3cml0ZUJ5dGVPcmRlck1hcms6IGJvb2xlYW4sXG4gICAgICAgICBvbkVycm9yOiAoKG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZCl8dW5kZWZpbmVkLFxuICAgICAgICAgc291cmNlRmlsZXM6IFJlYWRvbmx5QXJyYXk8dHMuU291cmNlRmlsZT58dW5kZWZpbmVkKSA9PiB7XG4gICAgICAgICAgaWYgKHNvdXJjZUZpbGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIFJlY29yZCBzdWNjZXNzZnVsIHdyaXRlcyBmb3IgYW55IGB0cy5Tb3VyY2VGaWxlYCAodGhhdCdzIG5vdCBhIGRlY2xhcmF0aW9uIGZpbGUpXG4gICAgICAgICAgICAvLyB0aGF0J3MgYW4gaW5wdXQgdG8gdGhpcyB3cml0ZS5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgd3JpdHRlblNmIG9mIHNvdXJjZUZpbGVzKSB7XG4gICAgICAgICAgICAgIGlmICh3cml0dGVuU2YuaXNEZWNsYXJhdGlvbkZpbGUpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuY29tcGlsZXIuaW5jcmVtZW50YWxEcml2ZXIucmVjb3JkU3VjY2Vzc2Z1bEVtaXQod3JpdHRlblNmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5ob3N0LndyaXRlRmlsZShmaWxlTmFtZSwgZGF0YSwgd3JpdGVCeXRlT3JkZXJNYXJrLCBvbkVycm9yLCBzb3VyY2VGaWxlcyk7XG4gICAgICAgIH07XG5cbiAgICBjb25zdCBjdXN0b21UcmFuc2Zvcm1zID0gb3B0cyAmJiBvcHRzLmN1c3RvbVRyYW5zZm9ybWVycztcbiAgICBjb25zdCBiZWZvcmVUcmFuc2Zvcm1zID0gdHJhbnNmb3JtZXJzLmJlZm9yZSB8fCBbXTtcbiAgICBjb25zdCBhZnRlckRlY2xhcmF0aW9uc1RyYW5zZm9ybXMgPSB0cmFuc2Zvcm1lcnMuYWZ0ZXJEZWNsYXJhdGlvbnM7XG5cbiAgICBpZiAoY3VzdG9tVHJhbnNmb3JtcyAhPT0gdW5kZWZpbmVkICYmIGN1c3RvbVRyYW5zZm9ybXMuYmVmb3JlVHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYmVmb3JlVHJhbnNmb3Jtcy5wdXNoKC4uLmN1c3RvbVRyYW5zZm9ybXMuYmVmb3JlVHMpO1xuICAgIH1cblxuICAgIGNvbnN0IGVtaXRTcGFuID0gdGhpcy5wZXJmUmVjb3JkZXIuc3RhcnQoJ2VtaXQnKTtcbiAgICBjb25zdCBlbWl0UmVzdWx0czogdHMuRW1pdFJlc3VsdFtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHRhcmdldFNvdXJjZUZpbGUgb2YgdGhpcy50c1Byb2dyYW0uZ2V0U291cmNlRmlsZXMoKSkge1xuICAgICAgaWYgKHRhcmdldFNvdXJjZUZpbGUuaXNEZWNsYXJhdGlvbkZpbGUgfHwgaWdub3JlRmlsZXMuaGFzKHRhcmdldFNvdXJjZUZpbGUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb21waWxlci5pbmNyZW1lbnRhbERyaXZlci5zYWZlVG9Ta2lwRW1pdCh0YXJnZXRTb3VyY2VGaWxlKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsZUVtaXRTcGFuID0gdGhpcy5wZXJmUmVjb3JkZXIuc3RhcnQoJ2VtaXRGaWxlJywgdGFyZ2V0U291cmNlRmlsZSk7XG4gICAgICBlbWl0UmVzdWx0cy5wdXNoKGVtaXRDYWxsYmFjayh7XG4gICAgICAgIHRhcmdldFNvdXJjZUZpbGUsXG4gICAgICAgIHByb2dyYW06IHRoaXMudHNQcm9ncmFtLFxuICAgICAgICBob3N0OiB0aGlzLmhvc3QsXG4gICAgICAgIG9wdGlvbnM6IHRoaXMub3B0aW9ucyxcbiAgICAgICAgZW1pdE9ubHlEdHNGaWxlczogZmFsc2UsXG4gICAgICAgIHdyaXRlRmlsZSxcbiAgICAgICAgY3VzdG9tVHJhbnNmb3JtZXJzOiB7XG4gICAgICAgICAgYmVmb3JlOiBiZWZvcmVUcmFuc2Zvcm1zLFxuICAgICAgICAgIGFmdGVyOiBjdXN0b21UcmFuc2Zvcm1zICYmIGN1c3RvbVRyYW5zZm9ybXMuYWZ0ZXJUcyxcbiAgICAgICAgICBhZnRlckRlY2xhcmF0aW9uczogYWZ0ZXJEZWNsYXJhdGlvbnNUcmFuc2Zvcm1zLFxuICAgICAgICB9IGFzIGFueSxcbiAgICAgIH0pKTtcbiAgICAgIHRoaXMucGVyZlJlY29yZGVyLnN0b3AoZmlsZUVtaXRTcGFuKTtcbiAgICB9XG5cbiAgICB0aGlzLnBlcmZSZWNvcmRlci5zdG9wKGVtaXRTcGFuKTtcblxuICAgIGlmICh0aGlzLnBlcmZUcmFja2VyICE9PSBudWxsICYmIHRoaXMub3B0aW9ucy50cmFjZVBlcmZvcm1hbmNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucGVyZlRyYWNrZXIuc2VyaWFsaXplVG9GaWxlKHRoaXMub3B0aW9ucy50cmFjZVBlcmZvcm1hbmNlLCB0aGlzLmhvc3QpO1xuICAgIH1cblxuICAgIC8vIFJ1biB0aGUgZW1pdCwgaW5jbHVkaW5nIGEgY3VzdG9tIHRyYW5zZm9ybWVyIHRoYXQgd2lsbCBkb3dubGV2ZWwgdGhlIEl2eSBkZWNvcmF0b3JzIGluIGNvZGUuXG4gICAgcmV0dXJuICgob3B0cyAmJiBvcHRzLm1lcmdlRW1pdFJlc3VsdHNDYWxsYmFjaykgfHwgbWVyZ2VFbWl0UmVzdWx0cykoZW1pdFJlc3VsdHMpO1xuICB9XG5cbiAgZ2V0SW5kZXhlZENvbXBvbmVudHMoKTogTWFwPHRzLkRlY2xhcmF0aW9uLCBJbmRleGVkQ29tcG9uZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuY29tcGlsZXIuZ2V0SW5kZXhlZENvbXBvbmVudHMoKTtcbiAgfVxuXG4gIGdldExpYnJhcnlTdW1tYXJpZXMoKTogTWFwPHN0cmluZywgYXBpLkxpYnJhcnlTdW1tYXJ5PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgZ2V0RW1pdHRlZEdlbmVyYXRlZEZpbGVzKCk6IE1hcDxzdHJpbmcsIEdlbmVyYXRlZEZpbGU+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBnZXRFbWl0dGVkU291cmNlRmlsZXMoKTogTWFwPHN0cmluZywgdHMuU291cmNlRmlsZT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuXG5jb25zdCBkZWZhdWx0RW1pdENhbGxiYWNrOiBhcGkuVHNFbWl0Q2FsbGJhY2sgPSAoe1xuICBwcm9ncmFtLFxuICB0YXJnZXRTb3VyY2VGaWxlLFxuICB3cml0ZUZpbGUsXG4gIGNhbmNlbGxhdGlvblRva2VuLFxuICBlbWl0T25seUR0c0ZpbGVzLFxuICBjdXN0b21UcmFuc2Zvcm1lcnNcbn0pID0+XG4gICAgcHJvZ3JhbS5lbWl0KFxuICAgICAgICB0YXJnZXRTb3VyY2VGaWxlLCB3cml0ZUZpbGUsIGNhbmNlbGxhdGlvblRva2VuLCBlbWl0T25seUR0c0ZpbGVzLCBjdXN0b21UcmFuc2Zvcm1lcnMpO1xuXG5mdW5jdGlvbiBtZXJnZUVtaXRSZXN1bHRzKGVtaXRSZXN1bHRzOiB0cy5FbWl0UmVzdWx0W10pOiB0cy5FbWl0UmVzdWx0IHtcbiAgY29uc3QgZGlhZ25vc3RpY3M6IHRzLkRpYWdub3N0aWNbXSA9IFtdO1xuICBsZXQgZW1pdFNraXBwZWQgPSBmYWxzZTtcbiAgY29uc3QgZW1pdHRlZEZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGVyIG9mIGVtaXRSZXN1bHRzKSB7XG4gICAgZGlhZ25vc3RpY3MucHVzaCguLi5lci5kaWFnbm9zdGljcyk7XG4gICAgZW1pdFNraXBwZWQgPSBlbWl0U2tpcHBlZCB8fCBlci5lbWl0U2tpcHBlZDtcbiAgICBlbWl0dGVkRmlsZXMucHVzaCguLi4oZXIuZW1pdHRlZEZpbGVzIHx8IFtdKSk7XG4gIH1cblxuICByZXR1cm4ge2RpYWdub3N0aWNzLCBlbWl0U2tpcHBlZCwgZW1pdHRlZEZpbGVzfTtcbn1cbiJdfQ==
@@ -7,7 +7,7 @@
7
7
  */
8
8
  /// <amd-module name="@angular/compiler-cli/src/ngtsc/shims" />
9
9
  export { ShimAdapter } from './src/adapter';
10
- export { copyFileShimData, isShim } from './src/expando';
10
+ export { copyFileShimData, isShim, retagAllTsFiles, retagTsFile, sfExtensionData, untagAllTsFiles, untagTsFile } from './src/expando';
11
11
  export { FactoryGenerator, generatedFactoryTransform } from './src/factory_generator';
12
12
  export { ShimReferenceTagger } from './src/reference_tagger';
13
13
  export { SummaryGenerator } from './src/summary_generator';
@@ -22,6 +22,11 @@
22
22
  var expando_1 = require("@angular/compiler-cli/src/ngtsc/shims/src/expando");
23
23
  Object.defineProperty(exports, "copyFileShimData", { enumerable: true, get: function () { return expando_1.copyFileShimData; } });
24
24
  Object.defineProperty(exports, "isShim", { enumerable: true, get: function () { return expando_1.isShim; } });
25
+ Object.defineProperty(exports, "retagAllTsFiles", { enumerable: true, get: function () { return expando_1.retagAllTsFiles; } });
26
+ Object.defineProperty(exports, "retagTsFile", { enumerable: true, get: function () { return expando_1.retagTsFile; } });
27
+ Object.defineProperty(exports, "sfExtensionData", { enumerable: true, get: function () { return expando_1.sfExtensionData; } });
28
+ Object.defineProperty(exports, "untagAllTsFiles", { enumerable: true, get: function () { return expando_1.untagAllTsFiles; } });
29
+ Object.defineProperty(exports, "untagTsFile", { enumerable: true, get: function () { return expando_1.untagTsFile; } });
25
30
  var factory_generator_1 = require("@angular/compiler-cli/src/ngtsc/shims/src/factory_generator");
26
31
  Object.defineProperty(exports, "FactoryGenerator", { enumerable: true, get: function () { return factory_generator_1.FactoryGenerator; } });
27
32
  Object.defineProperty(exports, "generatedFactoryTransform", { enumerable: true, get: function () { return factory_generator_1.generatedFactoryTransform; } });
@@ -30,4 +35,4 @@
30
35
  var summary_generator_1 = require("@angular/compiler-cli/src/ngtsc/shims/src/summary_generator");
31
36
  Object.defineProperty(exports, "SummaryGenerator", { enumerable: true, get: function () { return summary_generator_1.SummaryGenerator; } });
32
37
  });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3NoaW1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7O0lBRUgsOEJBQThCO0lBRTlCLDZFQUEwQztJQUFsQyxzR0FBQSxXQUFXLE9BQUE7SUFDbkIsNkVBQXVEO0lBQS9DLDJHQUFBLGdCQUFnQixPQUFBO0lBQUUsaUdBQUEsTUFBTSxPQUFBO0lBQ2hDLGlHQUFvRjtJQUE1RSxxSEFBQSxnQkFBZ0IsT0FBQTtJQUFFLDhIQUFBLHlCQUF5QixPQUFBO0lBQ25ELCtGQUEyRDtJQUFuRCx1SEFBQSxtQkFBbUIsT0FBQTtJQUMzQixpR0FBeUQ7SUFBakQscUhBQUEsZ0JBQWdCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJub2RlXCIgLz5cblxuZXhwb3J0IHtTaGltQWRhcHRlcn0gZnJvbSAnLi9zcmMvYWRhcHRlcic7XG5leHBvcnQge2NvcHlGaWxlU2hpbURhdGEsIGlzU2hpbX0gZnJvbSAnLi9zcmMvZXhwYW5kbyc7XG5leHBvcnQge0ZhY3RvcnlHZW5lcmF0b3IsIGdlbmVyYXRlZEZhY3RvcnlUcmFuc2Zvcm19IGZyb20gJy4vc3JjL2ZhY3RvcnlfZ2VuZXJhdG9yJztcbmV4cG9ydCB7U2hpbVJlZmVyZW5jZVRhZ2dlcn0gZnJvbSAnLi9zcmMvcmVmZXJlbmNlX3RhZ2dlcic7XG5leHBvcnQge1N1bW1hcnlHZW5lcmF0b3J9IGZyb20gJy4vc3JjL3N1bW1hcnlfZ2VuZXJhdG9yJztcbiJdfQ==
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3NoaW1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7O0lBRUgsOEJBQThCO0lBRTlCLDZFQUEwQztJQUFsQyxzR0FBQSxXQUFXLE9BQUE7SUFDbkIsNkVBQW9JO0lBQTVILDJHQUFBLGdCQUFnQixPQUFBO0lBQUUsaUdBQUEsTUFBTSxPQUFBO0lBQUUsMEdBQUEsZUFBZSxPQUFBO0lBQUUsc0dBQUEsV0FBVyxPQUFBO0lBQUUsMEdBQUEsZUFBZSxPQUFBO0lBQUUsMEdBQUEsZUFBZSxPQUFBO0lBQUUsc0dBQUEsV0FBVyxPQUFBO0lBQzdHLGlHQUFvRjtJQUE1RSxxSEFBQSxnQkFBZ0IsT0FBQTtJQUFFLDhIQUFBLHlCQUF5QixPQUFBO0lBQ25ELCtGQUEyRDtJQUFuRCx1SEFBQSxtQkFBbUIsT0FBQTtJQUMzQixpR0FBeUQ7SUFBakQscUhBQUEsZ0JBQWdCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJub2RlXCIgLz5cblxuZXhwb3J0IHtTaGltQWRhcHRlcn0gZnJvbSAnLi9zcmMvYWRhcHRlcic7XG5leHBvcnQge2NvcHlGaWxlU2hpbURhdGEsIGlzU2hpbSwgcmV0YWdBbGxUc0ZpbGVzLCByZXRhZ1RzRmlsZSwgc2ZFeHRlbnNpb25EYXRhLCB1bnRhZ0FsbFRzRmlsZXMsIHVudGFnVHNGaWxlfSBmcm9tICcuL3NyYy9leHBhbmRvJztcbmV4cG9ydCB7RmFjdG9yeUdlbmVyYXRvciwgZ2VuZXJhdGVkRmFjdG9yeVRyYW5zZm9ybX0gZnJvbSAnLi9zcmMvZmFjdG9yeV9nZW5lcmF0b3InO1xuZXhwb3J0IHtTaGltUmVmZXJlbmNlVGFnZ2VyfSBmcm9tICcuL3NyYy9yZWZlcmVuY2VfdGFnZ2VyJztcbmV4cG9ydCB7U3VtbWFyeUdlbmVyYXRvcn0gZnJvbSAnLi9zcmMvc3VtbWFyeV9nZW5lcmF0b3InO1xuIl19
@@ -263,4 +263,4 @@
263
263
  }());
264
264
  exports.ShimAdapter = ShimAdapter;
265
265
  });
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2Mvc2hpbXMvc3JjL2FkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7OztJQUVILCtCQUFpQztJQUVqQywyRUFBdUY7SUFDdkYsa0ZBQW9EO0lBR3BELDZFQUFxRjtJQUNyRix1RUFBd0M7SUFReEM7Ozs7Ozs7T0FPRztJQUNIO1FBOENFLHFCQUNZLFFBQTZELEVBQ3JFLFdBQTZCLEVBQUUsa0JBQTJDLEVBQzFFLGlCQUF5QyxFQUFFLFVBQTJCOztZQUY5RCxhQUFRLEdBQVIsUUFBUSxDQUFxRDtZQTlDekU7O2VBRUc7WUFDSyxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7WUFFekQ7Ozs7O2VBS0c7WUFDSyxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7WUFFOUQ7Ozs7O2VBS0c7WUFDSyxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7WUFFN0M7OztlQUdHO1lBQ0ssZUFBVSxHQUF3QixFQUFFLENBQUM7WUFFN0M7O2VBRUc7WUFDTSxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUFpQixDQUFDO1lBVWxEOztlQUVHO1lBQ00sc0JBQWlCLEdBQWEsRUFBRSxDQUFDOztnQkFNeEMsaUZBQWlGO2dCQUNqRixLQUFrQixJQUFBLHNCQUFBLGlCQUFBLGlCQUFpQixDQUFBLG9EQUFBLG1GQUFFO29CQUFoQyxJQUFNLEdBQUcsOEJBQUE7b0JBQ1osNkZBQTZGO29CQUM3Riw2RkFBNkY7b0JBQzdGLHNCQUFzQjtvQkFDdEIsSUFBTSxPQUFPLEdBQUcsYUFBVyxHQUFHLENBQUMsZUFBZSxXQUFRLENBQUM7b0JBQ3ZELElBQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztv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QUUsTUFBTSxDQUFDLENBQUM7WUFDakMsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUNILGtCQUFDO0lBQUQsQ0FBQyxBQTNNRCxJQTJNQztJQTNNWSxrQ0FBVyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHthYnNvbHV0ZUZyb20sIGFic29sdXRlRnJvbVNvdXJjZUZpbGUsIEFic29sdXRlRnNQYXRofSBmcm9tICcuLi8uLi9maWxlX3N5c3RlbSc7XG5pbXBvcnQge2lzRHRzUGF0aH0gZnJvbSAnLi4vLi4vdXRpbC9zcmMvdHlwZXNjcmlwdCc7XG5pbXBvcnQge1BlckZpbGVTaGltR2VuZXJhdG9yLCBUb3BMZXZlbFNoaW1HZW5lcmF0b3J9IGZyb20gJy4uL2FwaSc7XG5cbmltcG9ydCB7aXNGaWxlU2hpbVNvdXJjZUZpbGUsIGlzU2hpbSwgTmdFeHRlbnNpb24sIHNmRXh0ZW5zaW9uRGF0YX0gZnJvbSAnLi9leHBhbmRvJztcbmltcG9ydCB7bWFrZVNoaW1GaWxlTmFtZX0gZnJvbSAnLi91dGlsJztcblxuaW50ZXJmYWNlIFNoaW1HZW5lcmF0b3JEYXRhIHtcbiAgZ2VuZXJhdG9yOiBQZXJGaWxlU2hpbUdlbmVyYXRvcjtcbiAgdGVzdDogUmVnRXhwO1xuICBzdWZmaXg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYW5kIHRyYWNrcyBzaGltIGZpbGVzIGZvciBlYWNoIG9yaWdpbmFsIGB0cy5Tb3VyY2VGaWxlYC5cbiAqXG4gKiBUaGUgYFNoaW1BZGFwdGVyYCBwcm92aWRlcyBhbiBBUEkgdGhhdCdzIGRlc2lnbmVkIHRvIGJlIHVzZWQgYnkgYSBgdHMuQ29tcGlsZXJIb3N0YFxuICogaW1wbGVtZW50YXRpb24gYW5kIGFsbG93cyBpdCB0byBpbmNsdWRlIHN5bnRoZXRpYyBcInNoaW1cIiBmaWxlcyBpbiB0aGUgcHJvZ3JhbSB0aGF0J3MgYmVpbmdcbiAqIGNyZWF0ZWQuIEl0IHdvcmtzIGZvciBib3RoIGZyZXNobHkgY3JlYXRlZCBwcm9ncmFtcyBhcyB3ZWxsIGFzIHdpdGggcmV1c2Ugb2YgYW4gb2xkZXIgcHJvZ3JhbVxuICogKHdoaWNoIGFscmVhZHkgbWF5IGNvbnRhaW4gc2hpbSBmaWxlcyBhbmQgdGh1cyBoYXZlIGEgZGlmZmVyZW50IGNyZWF0aW9uIGZsb3cpLlxuICovXG5leHBvcnQgY2xhc3MgU2hpbUFkYXB0ZXIge1xuICAvKipcbiAgICogQSBtYXAgb2Ygc2hpbSBmaWxlIG5hbWVzIHRvIHRoZSBgdHMuU291cmNlRmlsZWAgZ2VuZXJhdGVkIGZvciB0aG9zZSBzaGltcy5cbiAgICovXG4gIHByaXZhdGUgc2hpbXMgPSBuZXcgTWFwPEFic29sdXRlRnNQYXRoLCB0cy5Tb3VyY2VGaWxlPigpO1xuXG4gIC8qKlxuICAgKiBBIG1hcCBvZiBzaGltIGZpbGUgbmFtZXMgdG8gZXhpc3Rpbmcgc2hpbXMgd2hpY2ggd2VyZSBwYXJ0IG9mIGEgcHJldmlvdXMgaXRlcmF0aW9uIG9mIHRoaXNcbiAgICogcHJvZ3JhbS5cbiAgICpcbiAgICogTm90IGFsbCBvZiB0aGVzZSBzaGltcyB3aWxsIGJlIGluaGVyaXRlZCBpbnRvIHRoaXMgcHJvZ3JhbS5cbiAgICovXG4gIHByaXZhdGUgcHJpb3JTaGltcyA9IG5ldyBNYXA8QWJzb2x1dGVGc1BhdGgsIHRzLlNvdXJjZUZpbGU+KCk7XG5cbiAgLyoqXG4gICAqIEZpbGUgbmFtZXMgd2hpY2ggYXJlIGFscmVhZHkga25vd24gdG8gbm90IGJlIHNoaW1zLlxuICAgKlxuICAgKiBUaGlzIGFsbG93cyBmb3Igc2hvcnQtY2lyY3VpdCByZXR1cm5zIHdpdGhvdXQgdGhlIGV4cGVuc2Ugb2YgcnVubmluZyByZWd1bGFyIGV4cHJlc3Npb25zXG4gICAqIGFnYWluc3QgdGhlIGZpbGVuYW1lIHJlcGVhdGVkbHkuXG4gICAqL1xuICBwcml2YXRlIG5vdFNoaW1zID0gbmV3IFNldDxBYnNvbHV0ZUZzUGF0aD4oKTtcblxuICAvKipcbiAgICogVGhlIHNoaW0gZ2VuZXJhdG9ycyBzdXBwb3J0ZWQgYnkgdGhpcyBhZGFwdGVyIGFzIHdlbGwgYXMgZXh0cmEgcHJlY2FsY3VsYXRlZCBkYXRhIGZhY2lsaXRhdGluZ1xuICAgKiB0aGVpciB1c2UuXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRvcnM6IFNoaW1HZW5lcmF0b3JEYXRhW10gPSBbXTtcblxuICAvKipcbiAgICogQSBgU2V0YCBvZiBzaGltIGB0cy5Tb3VyY2VGaWxlYHMgd2hpY2ggc2hvdWxkIG5vdCBiZSBlbWl0dGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlRm9yRW1pdCA9IG5ldyBTZXQ8dHMuU291cmNlRmlsZT4oKTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGV4dHJhIGZpbGVuYW1lcyB3aGljaCBzaG91bGQgYmUgY29uc2lkZXJlZCBpbnB1dHMgdG8gcHJvZ3JhbSBjcmVhdGlvbi5cbiAgICpcbiAgICogVGhpcyBpbmNsdWRlcyBhbnkgdG9wLWxldmVsIHNoaW1zIGdlbmVyYXRlZCBmb3IgdGhlIHByb2dyYW0sIGFzIHdlbGwgYXMgcGVyLWZpbGUgc2hpbSBuYW1lcyBmb3JcbiAgICogdGhvc2UgZmlsZXMgd2hpY2ggYXJlIGluY2x1ZGVkIGluIHRoZSByb290IGZpbGVzIG9mIHRoZSBwcm9ncmFtLlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFJbnB1dEZpbGVzOiBSZWFkb25seUFycmF5PEFic29sdXRlRnNQYXRoPjtcblxuICAvKipcbiAgICogRXh0ZW5zaW9uIHByZWZpeGVzIG9mIGFsbCBpbnN0YWxsZWQgcGVyLWZpbGUgc2hpbXMuXG4gICAqL1xuICByZWFkb25seSBleHRlbnNpb25QcmVmaXhlczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgZGVsZWdhdGU6IFBpY2s8dHMuQ29tcGlsZXJIb3N0LCAnZ2V0U291cmNlRmlsZSd8J2ZpbGVFeGlzdHMnPixcbiAgICAgIHRzUm9vdEZpbGVzOiBBYnNvbHV0ZUZzUGF0aFtdLCB0b3BMZXZlbEdlbmVyYXRvcnM6IFRvcExldmVsU2hpbUdlbmVyYXRvcltdLFxuICAgICAgcGVyRmlsZUdlbmVyYXRvcnM6IFBlckZpbGVTaGltR2VuZXJhdG9yW10sIG9sZFByb2dyYW06IHRzLlByb2dyYW18bnVsbCkge1xuICAgIC8vIEluaXRpYWxpemUgYHRoaXMuZ2VuZXJhdG9yc2Agd2l0aCBhIHJlZ2V4IHRoYXQgbWF0Y2hlcyBlYWNoIGdlbmVyYXRvcidzIHBhdGhzLlxuICAgIGZvciAoY29uc3QgZ2VuIG9mIHBlckZpbGVHZW5lcmF0b3JzKSB7XG4gICAgICAvLyBUaGlzIHJlZ2V4IG1hdGNoZXMgcGF0aHMgZm9yIHNoaW1zIGZyb20gdGhpcyBnZW5lcmF0b3IuIFRoZSBmaXJzdCAoYW5kIG9ubHkpIGNhcHR1cmUgZ3JvdXBcbiAgICAgIC8vIGV4dHJhY3RzIHRoZSBmaWxlbmFtZSBwcmVmaXgsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGZpbmQgdGhlIG9yaWdpbmFsIGZpbGUgdGhhdCB3YXMgdXNlZCB0b1xuICAgICAgLy8gZ2VuZXJhdGUgdGhpcyBzaGltLlxuICAgICAgY29uc3QgcGF0dGVybiA9IGBeKC4qKVxcXFwuJHtnZW4uZXh0ZW5zaW9uUHJlZml4fVxcXFwudHMkYDtcbiAgICAgIGNvbnN0IHJlZ2V4cCA9IG5ldyBSZWdFeHAocGF0dGVybiwgJ2knKTtcbiAgICAgIHRoaXMuZ2VuZXJhdG9ycy5wdXNoKHtcbiAgICAgICAgZ2VuZXJhdG9yOiBnZW4sXG4gICAgICAgIHRlc3Q6IHJlZ2V4cCxcbiAgICAgICAgc3VmZml4OiBgLiR7Z2VuLmV4dGVuc2lvblByZWZpeH0udHNgLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmV4dGVuc2lvblByZWZpeGVzLnB1c2goZ2VuLmV4dGVuc2lvblByZWZpeCk7XG4gICAgfVxuICAgIC8vIFByb2Nlc3MgdG9wLWxldmVsIGdlbmVyYXRvcnMgYW5kIHByZS1nZW5lcmF0ZSB0aGVpciBzaGltcy4gQWNjdW11bGF0ZSB0aGUgbGlzdCBvZiBmaWxlbmFtZXNcbiAgICAvLyBhcyBleHRyYSBpbnB1dCBmaWxlcy5cbiAgICBjb25zdCBleHRyYUlucHV0RmlsZXM6IEFic29sdXRlRnNQYXRoW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgZ2VuIG9mIHRvcExldmVsR2VuZXJhdG9ycykge1xuICAgICAgY29uc3Qgc2YgPSBnZW4ubWFrZVRvcExldmVsU2hpbSgpO1xuICAgICAgc2ZFeHRlbnNpb25EYXRhKHNmKS5pc1RvcExldmVsU2hpbSA9IHRydWU7XG5cbiAgICAgIGlmICghZ2VuLnNob3VsZEVtaXQpIHtcbiAgICAgICAgdGhpcy5pZ25vcmVGb3JFbWl0LmFkZChzZik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbGVOYW1lID0gYWJzb2x1dGVGcm9tU291cmNlRmlsZShzZik7XG4gICAgICB0aGlzLnNoaW1zLnNldChmaWxlTmFtZSwgc2YpO1xuICAgICAgZXh0cmFJbnB1dEZpbGVzLnB1c2goZmlsZU5hbWUpO1xuICAgIH1cblxuICAgIC8vIEFkZCB0byB0aGF0IGxpc3QgdGhlIHBlci1maWxlIHNoaW1zIGFzc29jaWF0ZWQgd2l0aCBlYWNoIHJvb3QgZmlsZS4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZVxuICAgIC8vIHJlZmVyZW5jZSB0YWdnaW5nIGFsb25lIG1heSBub3Qgd29yayBpbiBUUyBjb21waWxhdGlvbnMgdGhhdCBoYXZlIGBub1Jlc29sdmVgIHNldC4gU3VjaFxuICAgIC8vIGNvbXBpbGF0aW9ucyByZWx5IG9uIHRoZSBsaXN0IG9mIGlucHV0IGZpbGVzIGNvbXBsZXRlbHkgZGVzY3JpYmluZyB0aGUgcHJvZ3JhbS5cbiAgICBmb3IgKGNvbnN0IHJvb3RGaWxlIG9mIHRzUm9vdEZpbGVzKSB7XG4gICAgICBmb3IgKGNvbnN0IGdlbiBvZiB0aGlzLmdlbmVyYXRvcnMpIHtcbiAgICAgICAgZXh0cmFJbnB1dEZpbGVzLnB1c2gobWFrZVNoaW1GaWxlTmFtZShyb290RmlsZSwgZ2VuLnN1ZmZpeCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZXh0cmFJbnB1dEZpbGVzID0gZXh0cmFJbnB1dEZpbGVzO1xuXG4gICAgLy8gSWYgYW4gb2xkIHByb2dyYW0gaXMgcHJlc2VudCwgZXh0cmFjdCBhbGwgcGVyLWZpbGUgc2hpbXMgaW50byBhIG1hcCwgd2hpY2ggd2lsbCBiZSB1c2VkIHRvXG4gICAgLy8gZ2VuZXJhdGUgbmV3IHZlcnNpb25zIG9mIHRob3NlIHNoaW1zLlxuICAgIGlmIChvbGRQcm9ncmFtICE9PSBudWxsKSB7XG4gICAgICBmb3IgKGNvbnN0IG9sZFNmIG9mIG9sZFByb2dyYW0uZ2V0U291cmNlRmlsZXMoKSkge1xuICAgICAgICBpZiAob2xkU2YuaXNEZWNsYXJhdGlvbkZpbGUgfHwgIWlzRmlsZVNoaW1Tb3VyY2VGaWxlKG9sZFNmKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmlvclNoaW1zLnNldChhYnNvbHV0ZUZyb21Tb3VyY2VGaWxlKG9sZFNmKSwgb2xkU2YpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9kdWNlIGEgc2hpbSBgdHMuU291cmNlRmlsZWAgaWYgYGZpbGVOYW1lYCByZWZlcnMgdG8gYSBzaGltIGZpbGUgd2hpY2ggc2hvdWxkIGV4aXN0IGluIHRoZVxuICAgKiBwcm9ncmFtLlxuICAgKlxuICAgKiBJZiBgZmlsZU5hbWVgIGRvZXMgbm90IHJlZmVyIHRvIGEgcG90ZW50aWFsIHNoaW0gZmlsZSwgYG51bGxgIGlzIHJldHVybmVkLiBJZiBhIGNvcnJlc3BvbmRpbmdcbiAgICogYmFzZSBmaWxlIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkLCBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZCBpbnN0ZWFkLlxuICAgKi9cbiAgbWF5YmVHZW5lcmF0ZShmaWxlTmFtZTogQWJzb2x1dGVGc1BhdGgpOiB0cy5Tb3VyY2VGaWxlfG51bGx8dW5kZWZpbmVkIHtcbiAgICAvLyBGYXN0IHBhdGg6IGVpdGhlciB0aGlzIGZpbGVuYW1lIGhhcyBiZWVuIHByb3ZlbiBub3QgdG8gYmUgYSBzaGltIGJlZm9yZSwgb3IgaXQgaXMgYSBrbm93blxuICAgIC8vIHNoaW0gYW5kIG5vIGdlbmVyYXRpb24gaXMgcmVxdWlyZWQuXG4gICAgaWYgKHRoaXMubm90U2hpbXMuaGFzKGZpbGVOYW1lKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNoaW1zLmhhcyhmaWxlTmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNoaW1zLmdldChmaWxlTmFtZSkhO1xuICAgIH1cblxuICAgIC8vIC5kLnRzIGZpbGVzIGNhbid0IGJlIHNoaW1zLlxuICAgIGlmIChpc0R0c1BhdGgoZmlsZU5hbWUpKSB7XG4gICAgICB0aGlzLm5vdFNoaW1zLmFkZChmaWxlTmFtZSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCB0aW1lIHNlZWluZyB0aGlzIHBhdGguIFRyeSB0byBtYXRjaCBpdCBhZ2FpbnN0IGEgc2hpbSBnZW5lcmF0b3IuXG4gICAgZm9yIChjb25zdCByZWNvcmQgb2YgdGhpcy5nZW5lcmF0b3JzKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IHJlY29yZC50ZXN0LmV4ZWMoZmlsZU5hbWUpO1xuICAgICAgaWYgKG1hdGNoID09PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBUaGUgcGF0aCBtYXRjaGVkLiBFeHRyYWN0IHRoZSBmaWxlbmFtZSBwcmVmaXggd2l0aG91dCB0aGUgZXh0ZW5zaW9uLlxuICAgICAgY29uc3QgcHJlZml4ID0gbWF0Y2hbMV07XG4gICAgICAvLyBUaGlzIF9taWdodF8gYmUgYSBzaGltLCBpZiBhbiB1bmRlcmx5aW5nIGJhc2UgZmlsZSBleGlzdHMuIFRoZSBiYXNlIGZpbGUgbWlnaHQgYmUgLnRzIG9yXG4gICAgICAvLyAudHN4LlxuICAgICAgbGV0IGJhc2VGaWxlTmFtZSA9IGFic29sdXRlRnJvbShwcmVmaXggKyAnLnRzJyk7XG4gICAgICBpZiAoIXRoaXMuZGVsZWdhdGUuZmlsZUV4aXN0cyhiYXNlRmlsZU5hbWUpKSB7XG4gICAgICAgIC8vIE5vIC50cyBmaWxlIGJ5IHRoYXQgbmFtZSAtIHRyeSAudHN4LlxuICAgICAgICBiYXNlRmlsZU5hbWUgPSBhYnNvbHV0ZUZyb20ocHJlZml4ICsgJy50c3gnKTtcbiAgICAgICAgaWYgKCF0aGlzLmRlbGVnYXRlLmZpbGVFeGlzdHMoYmFzZUZpbGVOYW1lKSkge1xuICAgICAgICAgIC8vIFRoaXMgaXNuJ3QgYSBzaGltIGFmdGVyIGFsbCBzaW5jZSB0aGVyZSBpcyBubyBvcmlnaW5hbCBmaWxlIHdoaWNoIHdvdWxkIGhhdmUgdHJpZ2dlcmVkXG4gICAgICAgICAgLy8gaXRzIGdlbmVyYXRpb24sIGV2ZW4gdGhvdWdoIHRoZSBwYXRoIGlzIHJpZ2h0LiBUaGVyZSBhcmUgYSBmZXcgcmVhc29ucyB3aHkgdGhpcyBjb3VsZFxuICAgICAgICAgIC8vIG9jY3VyOlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gKiB3aGVuIHJlc29sdmluZyBhbiBpbXBvcnQgdG8gYW4gLm5nZmFjdG9yeS5kLnRzIGZpbGUsIHRoZSBtb2R1bGUgcmVzb2x1dGlvbiBhbGdvcml0aG1cbiAgICAgICAgICAvLyAgIHdpbGwgZmlyc3QgbG9vayBmb3IgYW4gLm5nZmFjdG9yeS50cyBmaWxlIGluIGl0cyBwbGFjZSwgd2hpY2ggd2lsbCBiZSByZXF1ZXN0ZWQgaGVyZS5cbiAgICAgICAgICAvLyAqIHdoZW4gdGhlIHVzZXIgd3JpdGVzIGEgYmFkIGltcG9ydC5cbiAgICAgICAgICAvLyAqIHdoZW4gYSBmaWxlIGlzIHByZXNlbnQgaW4gb25lIGNvbXBpbGF0aW9uIGFuZCByZW1vdmVkIGluIHRoZSBuZXh0IGluY3JlbWVudGFsIHN0ZXAuXG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBhZGQgdGhlIGZpbGVuYW1lIHRvIGBub3RTaGltc2AsIHNvIHRoaXMgcGF0aCBpcyBub3QgY2FjaGVkLlxuICAgICAgICAgIC8vIFRoYXQncyBva2F5IGFzIHRoZXNlIGNhc2VzIGFib3ZlIGFyZSBlZGdlIGNhc2VzIGFuZCBkbyBub3Qgb2NjdXIgcmVndWxhcmx5IGluIG5vcm1hbFxuICAgICAgICAgIC8vIG9wZXJhdGlvbnMuXG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBSZXRyaWV2ZSB0aGUgb3JpZ2luYWwgZmlsZSBmb3Igd2hpY2ggdGhlIHNoaW0gd2lsbCBiZSBnZW5lcmF0ZWQuXG4gICAgICBjb25zdCBpbnB1dEZpbGUgPSB0aGlzLmRlbGVnYXRlLmdldFNvdXJjZUZpbGUoYmFzZUZpbGVOYW1lLCB0cy5TY3JpcHRUYXJnZXQuTGF0ZXN0KTtcbiAgICAgIGlmIChpbnB1dEZpbGUgPT09IHVuZGVmaW5lZCB8fCBpc1NoaW0oaW5wdXRGaWxlKSkge1xuICAgICAgICAvLyBTb21ldGhpbmcgc3RyYW5nZSBoYXBwZW5lZCBoZXJlLiBUaGlzIGNhc2UgaXMgYWxzbyBub3QgY2FjaGVkIGluIGBub3RTaGltc2AsIGJ1dCB0aGlzXG4gICAgICAgIC8vIHBhdGggaXMgbm90IGV4cGVjdGVkIHRvIG9jY3VyIGluIHJlYWxpdHkgc28gdGhpcyBzaG91bGRuJ3QgYmUgYSBwcm9ibGVtLlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICAvLyBBY3R1YWxseSBnZW5lcmF0ZSBhbmQgY2FjaGUgdGhlIHNoaW0uXG4gICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZVNwZWNpZmljKGZpbGVOYW1lLCByZWNvcmQuZ2VuZXJhdG9yLCBpbnB1dEZpbGUpO1xuICAgIH1cblxuICAgIC8vIE5vIGdlbmVyYXRvciBtYXRjaGVkLlxuICAgIHRoaXMubm90U2hpbXMuYWRkKGZpbGVOYW1lKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVTcGVjaWZpYyhcbiAgICAgIGZpbGVOYW1lOiBBYnNvbHV0ZUZzUGF0aCwgZ2VuZXJhdG9yOiBQZXJGaWxlU2hpbUdlbmVyYXRvcixcbiAgICAgIGlucHV0RmlsZTogdHMuU291cmNlRmlsZSk6IHRzLlNvdXJjZUZpbGUge1xuICAgIGxldCBwcmlvclNoaW1TZjogdHMuU291cmNlRmlsZXxudWxsID0gbnVsbDtcbiAgICBpZiAodGhpcy5wcmlvclNoaW1zLmhhcyhmaWxlTmFtZSkpIHtcbiAgICAgIC8vIEluIHRoZSBwcmV2aW91cyBwcm9ncmFtIGEgc2hpbSB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0ZWQuIEl0J3MgcGFzc2VkIHRvIHRoZSBzaGltXG4gICAgICAvLyBnZW5lcmF0b3Igd2hpY2ggbWF5IHJldXNlIGl0IGluc3RlYWQgb2YgZ2VuZXJhdGluZyBhIGZyZXNoIHNoaW0uXG5cbiAgICAgIHByaW9yU2hpbVNmID0gdGhpcy5wcmlvclNoaW1zLmdldChmaWxlTmFtZSkhO1xuICAgICAgdGhpcy5wcmlvclNoaW1zLmRlbGV0ZShmaWxlTmFtZSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2hpbVNmID0gZ2VuZXJhdG9yLmdlbmVyYXRlU2hpbUZvckZpbGUoaW5wdXRGaWxlLCBmaWxlTmFtZSwgcHJpb3JTaGltU2YpO1xuXG4gICAgLy8gTWFyayB0aGUgbmV3IGdlbmVyYXRlZCBzb3VyY2UgZmlsZSBhcyBhIHNoaW0gdGhhdCBvcmlnaW5hdGVkIGZyb20gdGhpcyBnZW5lcmF0b3IuXG4gICAgc2ZFeHRlbnNpb25EYXRhKHNoaW1TZikuZmlsZVNoaW0gPSB7XG4gICAgICBleHRlbnNpb246IGdlbmVyYXRvci5leHRlbnNpb25QcmVmaXgsXG4gICAgICBnZW5lcmF0ZWRGcm9tOiBhYnNvbHV0ZUZyb21Tb3VyY2VGaWxlKGlucHV0RmlsZSksXG4gICAgfTtcblxuICAgIGlmICghZ2VuZXJhdG9yLnNob3VsZEVtaXQpIHtcbiAgICAgIHRoaXMuaWdub3JlRm9yRW1pdC5hZGQoc2hpbVNmKTtcbiAgICB9XG5cbiAgICB0aGlzLnNoaW1zLnNldChmaWxlTmFtZSwgc2hpbVNmKTtcbiAgICByZXR1cm4gc2hpbVNmO1xuICB9XG59XG4iXX0=
266
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2Mvc2hpbXMvc3JjL2FkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7OztJQUVILCtCQUFpQztJQUVqQywyRUFBdUY7SUFDdkYsa0ZBQW9EO0lBR3BELDZFQUF3RTtJQUN4RSx1RUFBd0M7SUFReEM7Ozs7Ozs7T0FPRztJQUNIO1FBOENFLHFCQUNZLFFBQTZELEVBQ3JFLFdBQTZCLEVBQUUsa0JBQTJDLEVBQzFFLGlCQUF5QyxFQUFFLFVBQTJCOztZQUY5RCxhQUFRLEdBQVIsUUFBUSxDQUFxRDtZQTlDekU7O2VBRUc7WUFDSyxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7WUFFekQ7Ozs7O2VBS0c7WUFDSyxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7WUFFOUQ7Ozs7O2VBS0c7WUFDSyxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7WUFFN0M7OztlQUdHO1lBQ0ssZUFBVSxHQUF3QixFQUFFLENBQUM7WUFFN0M7O2VBRUc7WUFDTSxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUFpQixDQUFDO1lBVWxEOztlQUVHO1lBQ00sc0JBQWlCLEdBQWEsRUFBRSxDQUFDOztnQkFNeEMsaUZBQWlGO2dCQUNqRixLQUFrQixJQUFBLHNCQUFBLGlCQUFBLGlCQUFpQixDQUFBLG9EQUFBLG1GQUFFO29CQUFoQyxJQUFNLEdBQUcsOEJBQUE7b0JBQ1osNkZBQTZGO29CQUM3Riw2RkFBNkY7b0JBQzdGLHNCQUFzQjtvQkFDdEIsSUFBTSxPQUFPLEdBQUcsYUFBVyxHQUFHLENBQUMsZUFBZSxXQUFRLENBQUM7b0JBQ3ZELElBQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztv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QUUsTUFBTSxDQUFDLENBQUM7WUFDakMsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUNILGtCQUFDO0lBQUQsQ0FBQyxBQTNNRCxJQTJNQztJQTNNWSxrQ0FBVyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHthYnNvbHV0ZUZyb20sIGFic29sdXRlRnJvbVNvdXJjZUZpbGUsIEFic29sdXRlRnNQYXRofSBmcm9tICcuLi8uLi9maWxlX3N5c3RlbSc7XG5pbXBvcnQge2lzRHRzUGF0aH0gZnJvbSAnLi4vLi4vdXRpbC9zcmMvdHlwZXNjcmlwdCc7XG5pbXBvcnQge1BlckZpbGVTaGltR2VuZXJhdG9yLCBUb3BMZXZlbFNoaW1HZW5lcmF0b3J9IGZyb20gJy4uL2FwaSc7XG5cbmltcG9ydCB7aXNGaWxlU2hpbVNvdXJjZUZpbGUsIGlzU2hpbSwgc2ZFeHRlbnNpb25EYXRhfSBmcm9tICcuL2V4cGFuZG8nO1xuaW1wb3J0IHttYWtlU2hpbUZpbGVOYW1lfSBmcm9tICcuL3V0aWwnO1xuXG5pbnRlcmZhY2UgU2hpbUdlbmVyYXRvckRhdGEge1xuICBnZW5lcmF0b3I6IFBlckZpbGVTaGltR2VuZXJhdG9yO1xuICB0ZXN0OiBSZWdFeHA7XG4gIHN1ZmZpeDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhbmQgdHJhY2tzIHNoaW0gZmlsZXMgZm9yIGVhY2ggb3JpZ2luYWwgYHRzLlNvdXJjZUZpbGVgLlxuICpcbiAqIFRoZSBgU2hpbUFkYXB0ZXJgIHByb3ZpZGVzIGFuIEFQSSB0aGF0J3MgZGVzaWduZWQgdG8gYmUgdXNlZCBieSBhIGB0cy5Db21waWxlckhvc3RgXG4gKiBpbXBsZW1lbnRhdGlvbiBhbmQgYWxsb3dzIGl0IHRvIGluY2x1ZGUgc3ludGhldGljIFwic2hpbVwiIGZpbGVzIGluIHRoZSBwcm9ncmFtIHRoYXQncyBiZWluZ1xuICogY3JlYXRlZC4gSXQgd29ya3MgZm9yIGJvdGggZnJlc2hseSBjcmVhdGVkIHByb2dyYW1zIGFzIHdlbGwgYXMgd2l0aCByZXVzZSBvZiBhbiBvbGRlciBwcm9ncmFtXG4gKiAod2hpY2ggYWxyZWFkeSBtYXkgY29udGFpbiBzaGltIGZpbGVzIGFuZCB0aHVzIGhhdmUgYSBkaWZmZXJlbnQgY3JlYXRpb24gZmxvdykuXG4gKi9cbmV4cG9ydCBjbGFzcyBTaGltQWRhcHRlciB7XG4gIC8qKlxuICAgKiBBIG1hcCBvZiBzaGltIGZpbGUgbmFtZXMgdG8gdGhlIGB0cy5Tb3VyY2VGaWxlYCBnZW5lcmF0ZWQgZm9yIHRob3NlIHNoaW1zLlxuICAgKi9cbiAgcHJpdmF0ZSBzaGltcyA9IG5ldyBNYXA8QWJzb2x1dGVGc1BhdGgsIHRzLlNvdXJjZUZpbGU+KCk7XG5cbiAgLyoqXG4gICAqIEEgbWFwIG9mIHNoaW0gZmlsZSBuYW1lcyB0byBleGlzdGluZyBzaGltcyB3aGljaCB3ZXJlIHBhcnQgb2YgYSBwcmV2aW91cyBpdGVyYXRpb24gb2YgdGhpc1xuICAgKiBwcm9ncmFtLlxuICAgKlxuICAgKiBOb3QgYWxsIG9mIHRoZXNlIHNoaW1zIHdpbGwgYmUgaW5oZXJpdGVkIGludG8gdGhpcyBwcm9ncmFtLlxuICAgKi9cbiAgcHJpdmF0ZSBwcmlvclNoaW1zID0gbmV3IE1hcDxBYnNvbHV0ZUZzUGF0aCwgdHMuU291cmNlRmlsZT4oKTtcblxuICAvKipcbiAgICogRmlsZSBuYW1lcyB3aGljaCBhcmUgYWxyZWFkeSBrbm93biB0byBub3QgYmUgc2hpbXMuXG4gICAqXG4gICAqIFRoaXMgYWxsb3dzIGZvciBzaG9ydC1jaXJjdWl0IHJldHVybnMgd2l0aG91dCB0aGUgZXhwZW5zZSBvZiBydW5uaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbnNcbiAgICogYWdhaW5zdCB0aGUgZmlsZW5hbWUgcmVwZWF0ZWRseS5cbiAgICovXG4gIHByaXZhdGUgbm90U2hpbXMgPSBuZXcgU2V0PEFic29sdXRlRnNQYXRoPigpO1xuXG4gIC8qKlxuICAgKiBUaGUgc2hpbSBnZW5lcmF0b3JzIHN1cHBvcnRlZCBieSB0aGlzIGFkYXB0ZXIgYXMgd2VsbCBhcyBleHRyYSBwcmVjYWxjdWxhdGVkIGRhdGEgZmFjaWxpdGF0aW5nXG4gICAqIHRoZWlyIHVzZS5cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdG9yczogU2hpbUdlbmVyYXRvckRhdGFbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBBIGBTZXRgIG9mIHNoaW0gYHRzLlNvdXJjZUZpbGVgcyB3aGljaCBzaG91bGQgbm90IGJlIGVtaXR0ZWQuXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVGb3JFbWl0ID0gbmV3IFNldDx0cy5Tb3VyY2VGaWxlPigpO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgZXh0cmEgZmlsZW5hbWVzIHdoaWNoIHNob3VsZCBiZSBjb25zaWRlcmVkIGlucHV0cyB0byBwcm9ncmFtIGNyZWF0aW9uLlxuICAgKlxuICAgKiBUaGlzIGluY2x1ZGVzIGFueSB0b3AtbGV2ZWwgc2hpbXMgZ2VuZXJhdGVkIGZvciB0aGUgcHJvZ3JhbSwgYXMgd2VsbCBhcyBwZXItZmlsZSBzaGltIG5hbWVzIGZvclxuICAgKiB0aG9zZSBmaWxlcyB3aGljaCBhcmUgaW5jbHVkZWQgaW4gdGhlIHJvb3QgZmlsZXMgb2YgdGhlIHByb2dyYW0uXG4gICAqL1xuICByZWFkb25seSBleHRyYUlucHV0RmlsZXM6IFJlYWRvbmx5QXJyYXk8QWJzb2x1dGVGc1BhdGg+O1xuXG4gIC8qKlxuICAgKiBFeHRlbnNpb24gcHJlZml4ZXMgb2YgYWxsIGluc3RhbGxlZCBwZXItZmlsZSBzaGltcy5cbiAgICovXG4gIHJlYWRvbmx5IGV4dGVuc2lvblByZWZpeGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBkZWxlZ2F0ZTogUGljazx0cy5Db21waWxlckhvc3QsICdnZXRTb3VyY2VGaWxlJ3wnZmlsZUV4aXN0cyc+LFxuICAgICAgdHNSb290RmlsZXM6IEFic29sdXRlRnNQYXRoW10sIHRvcExldmVsR2VuZXJhdG9yczogVG9wTGV2ZWxTaGltR2VuZXJhdG9yW10sXG4gICAgICBwZXJGaWxlR2VuZXJhdG9yczogUGVyRmlsZVNoaW1HZW5lcmF0b3JbXSwgb2xkUHJvZ3JhbTogdHMuUHJvZ3JhbXxudWxsKSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBgdGhpcy5nZW5lcmF0b3JzYCB3aXRoIGEgcmVnZXggdGhhdCBtYXRjaGVzIGVhY2ggZ2VuZXJhdG9yJ3MgcGF0aHMuXG4gICAgZm9yIChjb25zdCBnZW4gb2YgcGVyRmlsZUdlbmVyYXRvcnMpIHtcbiAgICAgIC8vIFRoaXMgcmVnZXggbWF0Y2hlcyBwYXRocyBmb3Igc2hpbXMgZnJvbSB0aGlzIGdlbmVyYXRvci4gVGhlIGZpcnN0IChhbmQgb25seSkgY2FwdHVyZSBncm91cFxuICAgICAgLy8gZXh0cmFjdHMgdGhlIGZpbGVuYW1lIHByZWZpeCwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZmluZCB0aGUgb3JpZ2luYWwgZmlsZSB0aGF0IHdhcyB1c2VkIHRvXG4gICAgICAvLyBnZW5lcmF0ZSB0aGlzIHNoaW0uXG4gICAgICBjb25zdCBwYXR0ZXJuID0gYF4oLiopXFxcXC4ke2dlbi5leHRlbnNpb25QcmVmaXh9XFxcXC50cyRgO1xuICAgICAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cChwYXR0ZXJuLCAnaScpO1xuICAgICAgdGhpcy5nZW5lcmF0b3JzLnB1c2goe1xuICAgICAgICBnZW5lcmF0b3I6IGdlbixcbiAgICAgICAgdGVzdDogcmVnZXhwLFxuICAgICAgICBzdWZmaXg6IGAuJHtnZW4uZXh0ZW5zaW9uUHJlZml4fS50c2AsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXh0ZW5zaW9uUHJlZml4ZXMucHVzaChnZW4uZXh0ZW5zaW9uUHJlZml4KTtcbiAgICB9XG4gICAgLy8gUHJvY2VzcyB0b3AtbGV2ZWwgZ2VuZXJhdG9ycyBhbmQgcHJlLWdlbmVyYXRlIHRoZWlyIHNoaW1zLiBBY2N1bXVsYXRlIHRoZSBsaXN0IG9mIGZpbGVuYW1lc1xuICAgIC8vIGFzIGV4dHJhIGlucHV0IGZpbGVzLlxuICAgIGNvbnN0IGV4dHJhSW5wdXRGaWxlczogQWJzb2x1dGVGc1BhdGhbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBnZW4gb2YgdG9wTGV2ZWxHZW5lcmF0b3JzKSB7XG4gICAgICBjb25zdCBzZiA9IGdlbi5tYWtlVG9wTGV2ZWxTaGltKCk7XG4gICAgICBzZkV4dGVuc2lvbkRhdGEoc2YpLmlzVG9wTGV2ZWxTaGltID0gdHJ1ZTtcblxuICAgICAgaWYgKCFnZW4uc2hvdWxkRW1pdCkge1xuICAgICAgICB0aGlzLmlnbm9yZUZvckVtaXQuYWRkKHNmKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsZU5hbWUgPSBhYnNvbHV0ZUZyb21Tb3VyY2VGaWxlKHNmKTtcbiAgICAgIHRoaXMuc2hpbXMuc2V0KGZpbGVOYW1lLCBzZik7XG4gICAgICBleHRyYUlucHV0RmlsZXMucHVzaChmaWxlTmFtZSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHRvIHRoYXQgbGlzdCB0aGUgcGVyLWZpbGUgc2hpbXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggcm9vdCBmaWxlLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlXG4gICAgLy8gcmVmZXJlbmNlIHRhZ2dpbmcgYWxvbmUgbWF5IG5vdCB3b3JrIGluIFRTIGNvbXBpbGF0aW9ucyB0aGF0IGhhdmUgYG5vUmVzb2x2ZWAgc2V0LiBTdWNoXG4gICAgLy8gY29tcGlsYXRpb25zIHJlbHkgb24gdGhlIGxpc3Qgb2YgaW5wdXQgZmlsZXMgY29tcGxldGVseSBkZXNjcmliaW5nIHRoZSBwcm9ncmFtLlxuICAgIGZvciAoY29uc3Qgcm9vdEZpbGUgb2YgdHNSb290RmlsZXMpIHtcbiAgICAgIGZvciAoY29uc3QgZ2VuIG9mIHRoaXMuZ2VuZXJhdG9ycykge1xuICAgICAgICBleHRyYUlucHV0RmlsZXMucHVzaChtYWtlU2hpbUZpbGVOYW1lKHJvb3RGaWxlLCBnZW4uc3VmZml4KSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5leHRyYUlucHV0RmlsZXMgPSBleHRyYUlucHV0RmlsZXM7XG5cbiAgICAvLyBJZiBhbiBvbGQgcHJvZ3JhbSBpcyBwcmVzZW50LCBleHRyYWN0IGFsbCBwZXItZmlsZSBzaGltcyBpbnRvIGEgbWFwLCB3aGljaCB3aWxsIGJlIHVzZWQgdG9cbiAgICAvLyBnZW5lcmF0ZSBuZXcgdmVyc2lvbnMgb2YgdGhvc2Ugc2hpbXMuXG4gICAgaWYgKG9sZFByb2dyYW0gIT09IG51bGwpIHtcbiAgICAgIGZvciAoY29uc3Qgb2xkU2Ygb2Ygb2xkUHJvZ3JhbS5nZXRTb3VyY2VGaWxlcygpKSB7XG4gICAgICAgIGlmIChvbGRTZi5pc0RlY2xhcmF0aW9uRmlsZSB8fCAhaXNGaWxlU2hpbVNvdXJjZUZpbGUob2xkU2YpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByaW9yU2hpbXMuc2V0KGFic29sdXRlRnJvbVNvdXJjZUZpbGUob2xkU2YpLCBvbGRTZik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFByb2R1Y2UgYSBzaGltIGB0cy5Tb3VyY2VGaWxlYCBpZiBgZmlsZU5hbWVgIHJlZmVycyB0byBhIHNoaW0gZmlsZSB3aGljaCBzaG91bGQgZXhpc3QgaW4gdGhlXG4gICAqIHByb2dyYW0uXG4gICAqXG4gICAqIElmIGBmaWxlTmFtZWAgZG9lcyBub3QgcmVmZXIgdG8gYSBwb3RlbnRpYWwgc2hpbSBmaWxlLCBgbnVsbGAgaXMgcmV0dXJuZWQuIElmIGEgY29ycmVzcG9uZGluZ1xuICAgKiBiYXNlIGZpbGUgY291bGQgbm90IGJlIGRldGVybWluZWQsIGB1bmRlZmluZWRgIGlzIHJldHVybmVkIGluc3RlYWQuXG4gICAqL1xuICBtYXliZUdlbmVyYXRlKGZpbGVOYW1lOiBBYnNvbHV0ZUZzUGF0aCk6IHRzLlNvdXJjZUZpbGV8bnVsbHx1bmRlZmluZWQge1xuICAgIC8vIEZhc3QgcGF0aDogZWl0aGVyIHRoaXMgZmlsZW5hbWUgaGFzIGJlZW4gcHJvdmVuIG5vdCB0byBiZSBhIHNoaW0gYmVmb3JlLCBvciBpdCBpcyBhIGtub3duXG4gICAgLy8gc2hpbSBhbmQgbm8gZ2VuZXJhdGlvbiBpcyByZXF1aXJlZC5cbiAgICBpZiAodGhpcy5ub3RTaGltcy5oYXMoZmlsZU5hbWUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2hpbXMuaGFzKGZpbGVOYW1lKSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2hpbXMuZ2V0KGZpbGVOYW1lKSE7XG4gICAgfVxuXG4gICAgLy8gLmQudHMgZmlsZXMgY2FuJ3QgYmUgc2hpbXMuXG4gICAgaWYgKGlzRHRzUGF0aChmaWxlTmFtZSkpIHtcbiAgICAgIHRoaXMubm90U2hpbXMuYWRkKGZpbGVOYW1lKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgc2VlaW5nIHRoaXMgcGF0aC4gVHJ5IHRvIG1hdGNoIGl0IGFnYWluc3QgYSBzaGltIGdlbmVyYXRvci5cbiAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiB0aGlzLmdlbmVyYXRvcnMpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gcmVjb3JkLnRlc3QuZXhlYyhmaWxlTmFtZSk7XG4gICAgICBpZiAobWF0Y2ggPT09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBwYXRoIG1hdGNoZWQuIEV4dHJhY3QgdGhlIGZpbGVuYW1lIHByZWZpeCB3aXRob3V0IHRoZSBleHRlbnNpb24uXG4gICAgICBjb25zdCBwcmVmaXggPSBtYXRjaFsxXTtcbiAgICAgIC8vIFRoaXMgX21pZ2h0XyBiZSBhIHNoaW0sIGlmIGFuIHVuZGVybHlpbmcgYmFzZSBmaWxlIGV4aXN0cy4gVGhlIGJhc2UgZmlsZSBtaWdodCBiZSAudHMgb3JcbiAgICAgIC8vIC50c3guXG4gICAgICBsZXQgYmFzZUZpbGVOYW1lID0gYWJzb2x1dGVGcm9tKHByZWZpeCArICcudHMnKTtcbiAgICAgIGlmICghdGhpcy5kZWxlZ2F0ZS5maWxlRXhpc3RzKGJhc2VGaWxlTmFtZSkpIHtcbiAgICAgICAgLy8gTm8gLnRzIGZpbGUgYnkgdGhhdCBuYW1lIC0gdHJ5IC50c3guXG4gICAgICAgIGJhc2VGaWxlTmFtZSA9IGFic29sdXRlRnJvbShwcmVmaXggKyAnLnRzeCcpO1xuICAgICAgICBpZiAoIXRoaXMuZGVsZWdhdGUuZmlsZUV4aXN0cyhiYXNlRmlsZU5hbWUpKSB7XG4gICAgICAgICAgLy8gVGhpcyBpc24ndCBhIHNoaW0gYWZ0ZXIgYWxsIHNpbmNlIHRoZXJlIGlzIG5vIG9yaWdpbmFsIGZpbGUgd2hpY2ggd291bGQgaGF2ZSB0cmlnZ2VyZWRcbiAgICAgICAgICAvLyBpdHMgZ2VuZXJhdGlvbiwgZXZlbiB0aG91Z2ggdGhlIHBhdGggaXMgcmlnaHQuIFRoZXJlIGFyZSBhIGZldyByZWFzb25zIHdoeSB0aGlzIGNvdWxkXG4gICAgICAgICAgLy8gb2NjdXI6XG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyAqIHdoZW4gcmVzb2x2aW5nIGFuIGltcG9ydCB0byBhbiAubmdmYWN0b3J5LmQudHMgZmlsZSwgdGhlIG1vZHVsZSByZXNvbHV0aW9uIGFsZ29yaXRobVxuICAgICAgICAgIC8vICAgd2lsbCBmaXJzdCBsb29rIGZvciBhbiAubmdmYWN0b3J5LnRzIGZpbGUgaW4gaXRzIHBsYWNlLCB3aGljaCB3aWxsIGJlIHJlcXVlc3RlZCBoZXJlLlxuICAgICAgICAgIC8vICogd2hlbiB0aGUgdXNlciB3cml0ZXMgYSBiYWQgaW1wb3J0LlxuICAgICAgICAgIC8vICogd2hlbiBhIGZpbGUgaXMgcHJlc2VudCBpbiBvbmUgY29tcGlsYXRpb24gYW5kIHJlbW92ZWQgaW4gdGhlIG5leHQgaW5jcmVtZW50YWwgc3RlcC5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFkZCB0aGUgZmlsZW5hbWUgdG8gYG5vdFNoaW1zYCwgc28gdGhpcyBwYXRoIGlzIG5vdCBjYWNoZWQuXG4gICAgICAgICAgLy8gVGhhdCdzIG9rYXkgYXMgdGhlc2UgY2FzZXMgYWJvdmUgYXJlIGVkZ2UgY2FzZXMgYW5kIGRvIG5vdCBvY2N1ciByZWd1bGFybHkgaW4gbm9ybWFsXG4gICAgICAgICAgLy8gb3BlcmF0aW9ucy5cbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJldHJpZXZlIHRoZSBvcmlnaW5hbCBmaWxlIGZvciB3aGljaCB0aGUgc2hpbSB3aWxsIGJlIGdlbmVyYXRlZC5cbiAgICAgIGNvbnN0IGlucHV0RmlsZSA9IHRoaXMuZGVsZWdhdGUuZ2V0U291cmNlRmlsZShiYXNlRmlsZU5hbWUsIHRzLlNjcmlwdFRhcmdldC5MYXRlc3QpO1xuICAgICAgaWYgKGlucHV0RmlsZSA9PT0gdW5kZWZpbmVkIHx8IGlzU2hpbShpbnB1dEZpbGUpKSB7XG4gICAgICAgIC8vIFNvbWV0aGluZyBzdHJhbmdlIGhhcHBlbmVkIGhlcmUuIFRoaXMgY2FzZSBpcyBhbHNvIG5vdCBjYWNoZWQgaW4gYG5vdFNoaW1zYCwgYnV0IHRoaXNcbiAgICAgICAgLy8gcGF0aCBpcyBub3QgZXhwZWN0ZWQgdG8gb2NjdXIgaW4gcmVhbGl0eSBzbyB0aGlzIHNob3VsZG4ndCBiZSBhIHByb2JsZW0uXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIEFjdHVhbGx5IGdlbmVyYXRlIGFuZCBjYWNoZSB0aGUgc2hpbS5cbiAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlU3BlY2lmaWMoZmlsZU5hbWUsIHJlY29yZC5nZW5lcmF0b3IsIGlucHV0RmlsZSk7XG4gICAgfVxuXG4gICAgLy8gTm8gZ2VuZXJhdG9yIG1hdGNoZWQuXG4gICAgdGhpcy5ub3RTaGltcy5hZGQoZmlsZU5hbWUpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVNwZWNpZmljKFxuICAgICAgZmlsZU5hbWU6IEFic29sdXRlRnNQYXRoLCBnZW5lcmF0b3I6IFBlckZpbGVTaGltR2VuZXJhdG9yLFxuICAgICAgaW5wdXRGaWxlOiB0cy5Tb3VyY2VGaWxlKTogdHMuU291cmNlRmlsZSB7XG4gICAgbGV0IHByaW9yU2hpbVNmOiB0cy5Tb3VyY2VGaWxlfG51bGwgPSBudWxsO1xuICAgIGlmICh0aGlzLnByaW9yU2hpbXMuaGFzKGZpbGVOYW1lKSkge1xuICAgICAgLy8gSW4gdGhlIHByZXZpb3VzIHByb2dyYW0gYSBzaGltIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RlZC4gSXQncyBwYXNzZWQgdG8gdGhlIHNoaW1cbiAgICAgIC8vIGdlbmVyYXRvciB3aGljaCBtYXkgcmV1c2UgaXQgaW5zdGVhZCBvZiBnZW5lcmF0aW5nIGEgZnJlc2ggc2hpbS5cblxuICAgICAgcHJpb3JTaGltU2YgPSB0aGlzLnByaW9yU2hpbXMuZ2V0KGZpbGVOYW1lKSE7XG4gICAgICB0aGlzLnByaW9yU2hpbXMuZGVsZXRlKGZpbGVOYW1lKTtcbiAgICB9XG5cbiAgICBjb25zdCBzaGltU2YgPSBnZW5lcmF0b3IuZ2VuZXJhdGVTaGltRm9yRmlsZShpbnB1dEZpbGUsIGZpbGVOYW1lLCBwcmlvclNoaW1TZik7XG5cbiAgICAvLyBNYXJrIHRoZSBuZXcgZ2VuZXJhdGVkIHNvdXJjZSBmaWxlIGFzIGEgc2hpbSB0aGF0IG9yaWdpbmF0ZWQgZnJvbSB0aGlzIGdlbmVyYXRvci5cbiAgICBzZkV4dGVuc2lvbkRhdGEoc2hpbVNmKS5maWxlU2hpbSA9IHtcbiAgICAgIGV4dGVuc2lvbjogZ2VuZXJhdG9yLmV4dGVuc2lvblByZWZpeCxcbiAgICAgIGdlbmVyYXRlZEZyb206IGFic29sdXRlRnJvbVNvdXJjZUZpbGUoaW5wdXRGaWxlKSxcbiAgICB9O1xuXG4gICAgaWYgKCFnZW5lcmF0b3Iuc2hvdWxkRW1pdCkge1xuICAgICAgdGhpcy5pZ25vcmVGb3JFbWl0LmFkZChzaGltU2YpO1xuICAgIH1cblxuICAgIHRoaXMuc2hpbXMuc2V0KGZpbGVOYW1lLCBzaGltU2YpO1xuICAgIHJldHVybiBzaGltU2Y7XG4gIH1cbn1cbiJdfQ==
@@ -18,7 +18,14 @@ export declare const NgExtension: unique symbol;
18
18
  export interface NgExtensionData {
19
19
  isTopLevelShim: boolean;
20
20
  fileShim: NgFileShimData | null;
21
+ /**
22
+ * The contents of the `referencedFiles` array, before modification by a `ShimReferenceTagger`.
23
+ */
21
24
  originalReferencedFiles: ReadonlyArray<ts.FileReference> | null;
25
+ /**
26
+ * The contents of the `referencedFiles` array, after modification by a `ShimReferenceTagger`.
27
+ */
28
+ taggedReferenceFiles: ReadonlyArray<ts.FileReference> | null;
22
29
  }
23
30
  /**
24
31
  * A `ts.SourceFile` which has `NgExtension` data.
@@ -65,3 +72,23 @@ export declare function isShim(sf: ts.SourceFile): boolean;
65
72
  * Copy any shim data from one `ts.SourceFile` to another.
66
73
  */
67
74
  export declare function copyFileShimData(from: ts.SourceFile, to: ts.SourceFile): void;
75
+ /**
76
+ * For those `ts.SourceFile`s in the `program` which have previously been tagged by a
77
+ * `ShimReferenceTagger`, restore the original `referencedFiles` array that does not have shim tags.
78
+ */
79
+ export declare function untagAllTsFiles(program: ts.Program): void;
80
+ /**
81
+ * For those `ts.SourceFile`s in the `program` which have previously been tagged by a
82
+ * `ShimReferenceTagger`, re-apply the effects of tagging by updating the `referencedFiles` array to
83
+ * the tagged version produced previously.
84
+ */
85
+ export declare function retagAllTsFiles(program: ts.Program): void;
86
+ /**
87
+ * Restore the original `referencedFiles` for the given `ts.SourceFile`.
88
+ */
89
+ export declare function untagTsFile(sf: ts.SourceFile): void;
90
+ /**
91
+ * Apply the previously tagged `referencedFiles` to the given `ts.SourceFile`, if it was previously
92
+ * tagged.
93
+ */
94
+ export declare function retagTsFile(sf: ts.SourceFile): void;
@@ -11,12 +11,13 @@
11
11
  if (v !== undefined) module.exports = v;
12
12
  }
13
13
  else if (typeof define === "function" && define.amd) {
14
- define("@angular/compiler-cli/src/ngtsc/shims/src/expando", ["require", "exports"], factory);
14
+ define("@angular/compiler-cli/src/ngtsc/shims/src/expando", ["require", "exports", "tslib"], factory);
15
15
  }
16
16
  })(function (require, exports) {
17
17
  "use strict";
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.copyFileShimData = exports.isShim = exports.isFileShimSourceFile = exports.sfExtensionData = exports.isExtended = exports.NgExtension = void 0;
19
+ exports.retagTsFile = exports.untagTsFile = exports.retagAllTsFiles = exports.untagAllTsFiles = exports.copyFileShimData = exports.isShim = exports.isFileShimSourceFile = exports.sfExtensionData = exports.isExtended = exports.NgExtension = void 0;
20
+ var tslib_1 = require("tslib");
20
21
  /**
21
22
  * A `Symbol` which is used to patch extension data onto `ts.SourceFile`s.
22
23
  */
@@ -42,6 +43,7 @@
42
43
  isTopLevelShim: false,
43
44
  fileShim: null,
44
45
  originalReferencedFiles: null,
46
+ taggedReferenceFiles: null,
45
47
  };
46
48
  extSf[exports.NgExtension] = extension;
47
49
  return extension;
@@ -71,5 +73,75 @@
71
73
  sfExtensionData(to).fileShim = sfExtensionData(from).fileShim;
72
74
  }
73
75
  exports.copyFileShimData = copyFileShimData;
76
+ /**
77
+ * For those `ts.SourceFile`s in the `program` which have previously been tagged by a
78
+ * `ShimReferenceTagger`, restore the original `referencedFiles` array that does not have shim tags.
79
+ */
80
+ function untagAllTsFiles(program) {
81
+ var e_1, _a;
82
+ try {
83
+ for (var _b = tslib_1.__values(program.getSourceFiles()), _c = _b.next(); !_c.done; _c = _b.next()) {
84
+ var sf = _c.value;
85
+ untagTsFile(sf);
86
+ }
87
+ }
88
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
89
+ finally {
90
+ try {
91
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
92
+ }
93
+ finally { if (e_1) throw e_1.error; }
94
+ }
95
+ }
96
+ exports.untagAllTsFiles = untagAllTsFiles;
97
+ /**
98
+ * For those `ts.SourceFile`s in the `program` which have previously been tagged by a
99
+ * `ShimReferenceTagger`, re-apply the effects of tagging by updating the `referencedFiles` array to
100
+ * the tagged version produced previously.
101
+ */
102
+ function retagAllTsFiles(program) {
103
+ var e_2, _a;
104
+ try {
105
+ for (var _b = tslib_1.__values(program.getSourceFiles()), _c = _b.next(); !_c.done; _c = _b.next()) {
106
+ var sf = _c.value;
107
+ retagTsFile(sf);
108
+ }
109
+ }
110
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
111
+ finally {
112
+ try {
113
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
114
+ }
115
+ finally { if (e_2) throw e_2.error; }
116
+ }
117
+ }
118
+ exports.retagAllTsFiles = retagAllTsFiles;
119
+ /**
120
+ * Restore the original `referencedFiles` for the given `ts.SourceFile`.
121
+ */
122
+ function untagTsFile(sf) {
123
+ if (sf.isDeclarationFile || !isExtended(sf)) {
124
+ return;
125
+ }
126
+ var ext = sfExtensionData(sf);
127
+ if (ext.originalReferencedFiles !== null) {
128
+ sf.referencedFiles = ext.originalReferencedFiles;
129
+ }
130
+ }
131
+ exports.untagTsFile = untagTsFile;
132
+ /**
133
+ * Apply the previously tagged `referencedFiles` to the given `ts.SourceFile`, if it was previously
134
+ * tagged.
135
+ */
136
+ function retagTsFile(sf) {
137
+ if (sf.isDeclarationFile || !isExtended(sf)) {
138
+ return;
139
+ }
140
+ var ext = sfExtensionData(sf);
141
+ if (ext.taggedReferenceFiles !== null) {
142
+ sf.referencedFiles = ext.taggedReferenceFiles;
143
+ }
144
+ }
145
+ exports.retagTsFile = retagTsFile;
74
146
  });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2Mvc2hpbXMvc3JjL2V4cGFuZG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7O0lBTUg7O09BRUc7SUFDVSxRQUFBLFdBQVcsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUE4QmpEOztPQUVHO0lBQ0gsU0FBZ0IsVUFBVSxDQUFDLEVBQWlCO1FBQzFDLE9BQVEsRUFBZ0MsQ0FBQyxtQkFBVyxDQUFDLEtBQUssU0FBUyxDQUFDO0lBQ3RFLENBQUM7SUFGRCxnQ0FFQztJQUVEOztPQUVHO0lBQ0gsU0FBZ0IsZUFBZSxDQUFDLEVBQWlCO1FBQy9DLElBQU0sS0FBSyxHQUFHLEVBQStCLENBQUM7UUFDOUMsSUFBSSxLQUFLLENBQUMsbUJBQVcsQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUNwQyw4REFBOEQ7WUFDOUQsT0FBTyxLQUFLLENBQUMsbUJBQVcsQ0FBRSxDQUFDO1NBQzVCO1FBRUQsb0VBQW9FO1FBQ3BFLElBQU0sU0FBUyxHQUFvQjtZQUNqQyxjQUFjLEVBQUUsS0FBSztZQUNyQixRQUFRLEVBQUUsSUFBSTtZQUNkLHVCQUF1QixFQUFFLElBQUk7U0FDOUIsQ0FBQztRQUNGLEtBQUssQ0FBQyxtQkFBVyxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQy9CLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFmRCwwQ0FlQztJQW1CRDs7T0FFRztJQUNILFNBQWdCLG9CQUFvQixDQUFDLEVBQWlCO1FBQ3BELE9BQU8sVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxtQkFBVyxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQztJQUM3RCxDQUFDO0lBRkQsb0RBRUM7SUFFRDs7T0FFRztJQUNILFNBQWdCLE1BQU0sQ0FBQyxFQUFpQjtRQUN0QyxPQUFPLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBVyxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUMsbUJBQVcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFGRCx3QkFFQztJQUVEOztPQUVHO0lBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsSUFBbUIsRUFBRSxFQUFpQjtRQUNyRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDL0IsT0FBTztTQUNSO1FBQ0QsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ2hFLENBQUM7SUFMRCw0Q0FLQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtBYnNvbHV0ZUZzUGF0aH0gZnJvbSAnLi4vLi4vZmlsZV9zeXN0ZW0nO1xuXG4vKipcbiAqIEEgYFN5bWJvbGAgd2hpY2ggaXMgdXNlZCB0byBwYXRjaCBleHRlbnNpb24gZGF0YSBvbnRvIGB0cy5Tb3VyY2VGaWxlYHMuXG4gKi9cbmV4cG9ydCBjb25zdCBOZ0V4dGVuc2lvbiA9IFN5bWJvbCgnTmdFeHRlbnNpb24nKTtcblxuLyoqXG4gKiBDb250ZW50cyBvZiB0aGUgYE5nRXh0ZW5zaW9uYCBwcm9wZXJ0eSBvZiBhIGB0cy5Tb3VyY2VGaWxlYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZ0V4dGVuc2lvbkRhdGEge1xuICBpc1RvcExldmVsU2hpbTogYm9vbGVhbjtcbiAgZmlsZVNoaW06IE5nRmlsZVNoaW1EYXRhfG51bGw7XG4gIG9yaWdpbmFsUmVmZXJlbmNlZEZpbGVzOiBSZWFkb25seUFycmF5PHRzLkZpbGVSZWZlcmVuY2U+fG51bGw7XG59XG5cbi8qKlxuICogQSBgdHMuU291cmNlRmlsZWAgd2hpY2ggbWF5IG9yIG1heSBub3QgaGF2ZSBgTmdFeHRlbnNpb25gIGRhdGEuXG4gKi9cbmludGVyZmFjZSBNYXliZU5nRXh0ZW5kZWRTb3VyY2VGaWxlIGV4dGVuZHMgdHMuU291cmNlRmlsZSB7XG4gIFtOZ0V4dGVuc2lvbl0/OiBOZ0V4dGVuc2lvbkRhdGE7XG59XG5cbi8qKlxuICogQSBgdHMuU291cmNlRmlsZWAgd2hpY2ggaGFzIGBOZ0V4dGVuc2lvbmAgZGF0YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZ0V4dGVuZGVkU291cmNlRmlsZSBleHRlbmRzIHRzLlNvdXJjZUZpbGUge1xuICAvKipcbiAgICogT3ZlcnJpZGVzIHRoZSB0eXBlIG9mIGByZWZlcmVuY2VkRmlsZXNgIHRvIGJlIHdyaXRlYWJsZS5cbiAgICovXG4gIHJlZmVyZW5jZWRGaWxlczogdHMuRmlsZVJlZmVyZW5jZVtdO1xuXG4gIFtOZ0V4dGVuc2lvbl06IE5nRXh0ZW5zaW9uRGF0YTtcbn1cblxuLyoqXG4gKiBOYXJyb3dzIGEgYHRzLlNvdXJjZUZpbGVgIGlmIGl0IGhhcyBhbiBgTmdFeHRlbnNpb25gIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFeHRlbmRlZChzZjogdHMuU291cmNlRmlsZSk6IHNmIGlzIE5nRXh0ZW5kZWRTb3VyY2VGaWxlIHtcbiAgcmV0dXJuIChzZiBhcyBNYXliZU5nRXh0ZW5kZWRTb3VyY2VGaWxlKVtOZ0V4dGVuc2lvbl0gIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBgTmdFeHRlbnNpb25EYXRhYCBmb3IgYSBnaXZlbiBgdHMuU291cmNlRmlsZWAsIGFkZGluZyBpdCBpZiBub25lIGV4aXN0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNmRXh0ZW5zaW9uRGF0YShzZjogdHMuU291cmNlRmlsZSk6IE5nRXh0ZW5zaW9uRGF0YSB7XG4gIGNvbnN0IGV4dFNmID0gc2YgYXMgTWF5YmVOZ0V4dGVuZGVkU291cmNlRmlsZTtcbiAgaWYgKGV4dFNmW05nRXh0ZW5zaW9uXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gVGhlIGZpbGUgYWxyZWFkeSBoYXMgZXh0ZW5zaW9uIGRhdGEsIHNvIHJldHVybiBpdCBkaXJlY3RseS5cbiAgICByZXR1cm4gZXh0U2ZbTmdFeHRlbnNpb25dITtcbiAgfVxuXG4gIC8vIFRoZSBmaWxlIGhhcyBubyBleGlzdGluZyBleHRlbnNpb24gZGF0YSwgc28gYWRkIGl0IGFuZCByZXR1cm4gaXQuXG4gIGNvbnN0IGV4dGVuc2lvbjogTmdFeHRlbnNpb25EYXRhID0ge1xuICAgIGlzVG9wTGV2ZWxTaGltOiBmYWxzZSxcbiAgICBmaWxlU2hpbTogbnVsbCxcbiAgICBvcmlnaW5hbFJlZmVyZW5jZWRGaWxlczogbnVsbCxcbiAgfTtcbiAgZXh0U2ZbTmdFeHRlbnNpb25dID0gZXh0ZW5zaW9uO1xuICByZXR1cm4gZXh0ZW5zaW9uO1xufVxuXG4vKipcbiAqIERhdGEgYXNzb2NpYXRlZCB3aXRoIGEgcGVyLXNoaW0gaW5zdGFuY2UgYHRzLlNvdXJjZUZpbGVgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5nRmlsZVNoaW1EYXRhIHtcbiAgZ2VuZXJhdGVkRnJvbTogQWJzb2x1dGVGc1BhdGg7XG4gIGV4dGVuc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuIGBOZ0V4dGVuZGVkU291cmNlRmlsZWAgdGhhdCBpcyBhIHBlci1maWxlIHNoaW0gYW5kIGhhcyBgTmdGaWxlU2hpbURhdGFgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5nRmlsZVNoaW1Tb3VyY2VGaWxlIGV4dGVuZHMgTmdFeHRlbmRlZFNvdXJjZUZpbGUge1xuICBbTmdFeHRlbnNpb25dOiBOZ0V4dGVuc2lvbkRhdGEme1xuICAgIGZpbGVTaGltOiBOZ0ZpbGVTaGltRGF0YSxcbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIGBzZmAgaXMgYSBwZXItZmlsZSBzaGltIGB0cy5Tb3VyY2VGaWxlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRmlsZVNoaW1Tb3VyY2VGaWxlKHNmOiB0cy5Tb3VyY2VGaWxlKTogc2YgaXMgTmdGaWxlU2hpbVNvdXJjZUZpbGUge1xuICByZXR1cm4gaXNFeHRlbmRlZChzZikgJiYgc2ZbTmdFeHRlbnNpb25dLmZpbGVTaGltICE9PSBudWxsO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYHNmYCBpcyBhIHNoaW0gYHRzLlNvdXJjZUZpbGVgIChlaXRoZXIgYSBwZXItZmlsZSBzaGltIG9yIGEgdG9wLWxldmVsIHNoaW0pLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTaGltKHNmOiB0cy5Tb3VyY2VGaWxlKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc0V4dGVuZGVkKHNmKSAmJiAoc2ZbTmdFeHRlbnNpb25dLmZpbGVTaGltICE9PSBudWxsIHx8IHNmW05nRXh0ZW5zaW9uXS5pc1RvcExldmVsU2hpbSk7XG59XG5cbi8qKlxuICogQ29weSBhbnkgc2hpbSBkYXRhIGZyb20gb25lIGB0cy5Tb3VyY2VGaWxlYCB0byBhbm90aGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29weUZpbGVTaGltRGF0YShmcm9tOiB0cy5Tb3VyY2VGaWxlLCB0bzogdHMuU291cmNlRmlsZSk6IHZvaWQge1xuICBpZiAoIWlzRmlsZVNoaW1Tb3VyY2VGaWxlKGZyb20pKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHNmRXh0ZW5zaW9uRGF0YSh0bykuZmlsZVNoaW0gPSBzZkV4dGVuc2lvbkRhdGEoZnJvbSkuZmlsZVNoaW07XG59XG4iXX0=
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2Mvc2hpbXMvc3JjL2V4cGFuZG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7OztJQU1IOztPQUVHO0lBQ1UsUUFBQSxXQUFXLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBdUNqRDs7T0FFRztJQUNILFNBQWdCLFVBQVUsQ0FBQyxFQUFpQjtRQUMxQyxPQUFRLEVBQWdDLENBQUMsbUJBQVcsQ0FBQyxLQUFLLFNBQVMsQ0FBQztJQUN0RSxDQUFDO0lBRkQsZ0NBRUM7SUFFRDs7T0FFRztJQUNILFNBQWdCLGVBQWUsQ0FBQyxFQUFpQjtRQUMvQyxJQUFNLEtBQUssR0FBRyxFQUErQixDQUFDO1FBQzlDLElBQUksS0FBSyxDQUFDLG1CQUFXLENBQUMsS0FBSyxTQUFTLEVBQUU7WUFDcEMsOERBQThEO1lBQzlELE9BQU8sS0FBSyxDQUFDLG1CQUFXLENBQUUsQ0FBQztTQUM1QjtRQUVELG9FQUFvRTtRQUNwRSxJQUFNLFNBQVMsR0FBb0I7WUFDakMsY0FBYyxFQUFFLEtBQUs7WUFDckIsUUFBUSxFQUFFLElBQUk7WUFDZCx1QkFBdUIsRUFBRSxJQUFJO1lBQzdCLG9CQUFvQixFQUFFLElBQUk7U0FDM0IsQ0FBQztRQUNGLEtBQUssQ0FBQyxtQkFBVyxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQy9CLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFoQkQsMENBZ0JDO0lBbUJEOztPQUVHO0lBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsRUFBaUI7UUFDcEQsT0FBTyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLG1CQUFXLENBQUMsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO0lBQzdELENBQUM7SUFGRCxvREFFQztJQUVEOztPQUVHO0lBQ0gsU0FBZ0IsTUFBTSxDQUFDLEVBQWlCO1FBQ3RDLE9BQU8sVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFXLENBQUMsQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQyxtQkFBVyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUZELHdCQUVDO0lBRUQ7O09BRUc7SUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxJQUFtQixFQUFFLEVBQWlCO1FBQ3JFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMvQixPQUFPO1NBQ1I7UUFDRCxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDaEUsQ0FBQztJQUxELDRDQUtDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBZ0IsZUFBZSxDQUFDLE9BQW1COzs7WUFDakQsS0FBaUIsSUFBQSxLQUFBLGlCQUFBLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQSxnQkFBQSw0QkFBRTtnQkFBdEMsSUFBTSxFQUFFLFdBQUE7Z0JBQ1gsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2pCOzs7Ozs7Ozs7SUFDSCxDQUFDO0lBSkQsMENBSUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBZ0IsZUFBZSxDQUFDLE9BQW1COzs7WUFDakQsS0FBaUIsSUFBQSxLQUFBLGlCQUFBLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQSxnQkFBQSw0QkFBRTtnQkFBdEMsSUFBTSxFQUFFLFdBQUE7Z0JBQ1gsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2pCOzs7Ozs7Ozs7SUFDSCxDQUFDO0lBSkQsMENBSUM7SUFFRDs7T0FFRztJQUNILFNBQWdCLFdBQVcsQ0FBQyxFQUFpQjtRQUMzQyxJQUFJLEVBQUUsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUMzQyxPQUFPO1NBQ1I7UUFFRCxJQUFNLEdBQUcsR0FBRyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEMsSUFBSSxHQUFHLENBQUMsdUJBQXVCLEtBQUssSUFBSSxFQUFFO1lBQ3hDLEVBQUUsQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLHVCQUFrRCxDQUFDO1NBQzdFO0lBQ0gsQ0FBQztJQVRELGtDQVNDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBZ0IsV0FBVyxDQUFDLEVBQWlCO1FBQzNDLElBQUksRUFBRSxDQUFDLGlCQUFpQixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQzNDLE9BQU87U0FDUjtRQUVELElBQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQyxJQUFJLEdBQUcsQ0FBQyxvQkFBb0IsS0FBSyxJQUFJLEVBQUU7WUFDckMsRUFBRSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUMsb0JBQStDLENBQUM7U0FDMUU7SUFDSCxDQUFDO0lBVEQsa0NBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7QWJzb2x1dGVGc1BhdGh9IGZyb20gJy4uLy4uL2ZpbGVfc3lzdGVtJztcblxuLyoqXG4gKiBBIGBTeW1ib2xgIHdoaWNoIGlzIHVzZWQgdG8gcGF0Y2ggZXh0ZW5zaW9uIGRhdGEgb250byBgdHMuU291cmNlRmlsZWBzLlxuICovXG5leHBvcnQgY29uc3QgTmdFeHRlbnNpb24gPSBTeW1ib2woJ05nRXh0ZW5zaW9uJyk7XG5cbi8qKlxuICogQ29udGVudHMgb2YgdGhlIGBOZ0V4dGVuc2lvbmAgcHJvcGVydHkgb2YgYSBgdHMuU291cmNlRmlsZWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmdFeHRlbnNpb25EYXRhIHtcbiAgaXNUb3BMZXZlbFNoaW06IGJvb2xlYW47XG4gIGZpbGVTaGltOiBOZ0ZpbGVTaGltRGF0YXxudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudHMgb2YgdGhlIGByZWZlcmVuY2VkRmlsZXNgIGFycmF5LCBiZWZvcmUgbW9kaWZpY2F0aW9uIGJ5IGEgYFNoaW1SZWZlcmVuY2VUYWdnZXJgLlxuICAgKi9cbiAgb3JpZ2luYWxSZWZlcmVuY2VkRmlsZXM6IFJlYWRvbmx5QXJyYXk8dHMuRmlsZVJlZmVyZW5jZT58bnVsbDtcblxuICAvKipcbiAgICogVGhlIGNvbnRlbnRzIG9mIHRoZSBgcmVmZXJlbmNlZEZpbGVzYCBhcnJheSwgYWZ0ZXIgbW9kaWZpY2F0aW9uIGJ5IGEgYFNoaW1SZWZlcmVuY2VUYWdnZXJgLlxuICAgKi9cbiAgdGFnZ2VkUmVmZXJlbmNlRmlsZXM6IFJlYWRvbmx5QXJyYXk8dHMuRmlsZVJlZmVyZW5jZT58bnVsbDtcbn1cblxuLyoqXG4gKiBBIGB0cy5Tb3VyY2VGaWxlYCB3aGljaCBtYXkgb3IgbWF5IG5vdCBoYXZlIGBOZ0V4dGVuc2lvbmAgZGF0YS5cbiAqL1xuaW50ZXJmYWNlIE1heWJlTmdFeHRlbmRlZFNvdXJjZUZpbGUgZXh0ZW5kcyB0cy5Tb3VyY2VGaWxlIHtcbiAgW05nRXh0ZW5zaW9uXT86IE5nRXh0ZW5zaW9uRGF0YTtcbn1cblxuLyoqXG4gKiBBIGB0cy5Tb3VyY2VGaWxlYCB3aGljaCBoYXMgYE5nRXh0ZW5zaW9uYCBkYXRhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5nRXh0ZW5kZWRTb3VyY2VGaWxlIGV4dGVuZHMgdHMuU291cmNlRmlsZSB7XG4gIC8qKlxuICAgKiBPdmVycmlkZXMgdGhlIHR5cGUgb2YgYHJlZmVyZW5jZWRGaWxlc2AgdG8gYmUgd3JpdGVhYmxlLlxuICAgKi9cbiAgcmVmZXJlbmNlZEZpbGVzOiB0cy5GaWxlUmVmZXJlbmNlW107XG5cbiAgW05nRXh0ZW5zaW9uXTogTmdFeHRlbnNpb25EYXRhO1xufVxuXG4vKipcbiAqIE5hcnJvd3MgYSBgdHMuU291cmNlRmlsZWAgaWYgaXQgaGFzIGFuIGBOZ0V4dGVuc2lvbmAgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0V4dGVuZGVkKHNmOiB0cy5Tb3VyY2VGaWxlKTogc2YgaXMgTmdFeHRlbmRlZFNvdXJjZUZpbGUge1xuICByZXR1cm4gKHNmIGFzIE1heWJlTmdFeHRlbmRlZFNvdXJjZUZpbGUpW05nRXh0ZW5zaW9uXSAhPT0gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGBOZ0V4dGVuc2lvbkRhdGFgIGZvciBhIGdpdmVuIGB0cy5Tb3VyY2VGaWxlYCwgYWRkaW5nIGl0IGlmIG5vbmUgZXhpc3RzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2ZFeHRlbnNpb25EYXRhKHNmOiB0cy5Tb3VyY2VGaWxlKTogTmdFeHRlbnNpb25EYXRhIHtcbiAgY29uc3QgZXh0U2YgPSBzZiBhcyBNYXliZU5nRXh0ZW5kZWRTb3VyY2VGaWxlO1xuICBpZiAoZXh0U2ZbTmdFeHRlbnNpb25dICE9PSB1bmRlZmluZWQpIHtcbiAgICAvLyBUaGUgZmlsZSBhbHJlYWR5IGhhcyBleHRlbnNpb24gZGF0YSwgc28gcmV0dXJuIGl0IGRpcmVjdGx5LlxuICAgIHJldHVybiBleHRTZltOZ0V4dGVuc2lvbl0hO1xuICB9XG5cbiAgLy8gVGhlIGZpbGUgaGFzIG5vIGV4aXN0aW5nIGV4dGVuc2lvbiBkYXRhLCBzbyBhZGQgaXQgYW5kIHJldHVybiBpdC5cbiAgY29uc3QgZXh0ZW5zaW9uOiBOZ0V4dGVuc2lvbkRhdGEgPSB7XG4gICAgaXNUb3BMZXZlbFNoaW06IGZhbHNlLFxuICAgIGZpbGVTaGltOiBudWxsLFxuICAgIG9yaWdpbmFsUmVmZXJlbmNlZEZpbGVzOiBudWxsLFxuICAgIHRhZ2dlZFJlZmVyZW5jZUZpbGVzOiBudWxsLFxuICB9O1xuICBleHRTZltOZ0V4dGVuc2lvbl0gPSBleHRlbnNpb247XG4gIHJldHVybiBleHRlbnNpb247XG59XG5cbi8qKlxuICogRGF0YSBhc3NvY2lhdGVkIHdpdGggYSBwZXItc2hpbSBpbnN0YW5jZSBgdHMuU291cmNlRmlsZWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmdGaWxlU2hpbURhdGEge1xuICBnZW5lcmF0ZWRGcm9tOiBBYnNvbHV0ZUZzUGF0aDtcbiAgZXh0ZW5zaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQW4gYE5nRXh0ZW5kZWRTb3VyY2VGaWxlYCB0aGF0IGlzIGEgcGVyLWZpbGUgc2hpbSBhbmQgaGFzIGBOZ0ZpbGVTaGltRGF0YWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmdGaWxlU2hpbVNvdXJjZUZpbGUgZXh0ZW5kcyBOZ0V4dGVuZGVkU291cmNlRmlsZSB7XG4gIFtOZ0V4dGVuc2lvbl06IE5nRXh0ZW5zaW9uRGF0YSZ7XG4gICAgZmlsZVNoaW06IE5nRmlsZVNoaW1EYXRhLFxuICB9O1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYHNmYCBpcyBhIHBlci1maWxlIHNoaW0gYHRzLlNvdXJjZUZpbGVgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGaWxlU2hpbVNvdXJjZUZpbGUoc2Y6IHRzLlNvdXJjZUZpbGUpOiBzZiBpcyBOZ0ZpbGVTaGltU291cmNlRmlsZSB7XG4gIHJldHVybiBpc0V4dGVuZGVkKHNmKSAmJiBzZltOZ0V4dGVuc2lvbl0uZmlsZVNoaW0gIT09IG51bGw7XG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBgc2ZgIGlzIGEgc2hpbSBgdHMuU291cmNlRmlsZWAgKGVpdGhlciBhIHBlci1maWxlIHNoaW0gb3IgYSB0b3AtbGV2ZWwgc2hpbSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NoaW0oc2Y6IHRzLlNvdXJjZUZpbGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzRXh0ZW5kZWQoc2YpICYmIChzZltOZ0V4dGVuc2lvbl0uZmlsZVNoaW0gIT09IG51bGwgfHwgc2ZbTmdFeHRlbnNpb25dLmlzVG9wTGV2ZWxTaGltKTtcbn1cblxuLyoqXG4gKiBDb3B5IGFueSBzaGltIGRhdGEgZnJvbSBvbmUgYHRzLlNvdXJjZUZpbGVgIHRvIGFub3RoZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb3B5RmlsZVNoaW1EYXRhKGZyb206IHRzLlNvdXJjZUZpbGUsIHRvOiB0cy5Tb3VyY2VGaWxlKTogdm9pZCB7XG4gIGlmICghaXNGaWxlU2hpbVNvdXJjZUZpbGUoZnJvbSkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgc2ZFeHRlbnNpb25EYXRhKHRvKS5maWxlU2hpbSA9IHNmRXh0ZW5zaW9uRGF0YShmcm9tKS5maWxlU2hpbTtcbn1cblxuLyoqXG4gKiBGb3IgdGhvc2UgYHRzLlNvdXJjZUZpbGVgcyBpbiB0aGUgYHByb2dyYW1gIHdoaWNoIGhhdmUgcHJldmlvdXNseSBiZWVuIHRhZ2dlZCBieSBhXG4gKiBgU2hpbVJlZmVyZW5jZVRhZ2dlcmAsIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGByZWZlcmVuY2VkRmlsZXNgIGFycmF5IHRoYXQgZG9lcyBub3QgaGF2ZSBzaGltIHRhZ3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bnRhZ0FsbFRzRmlsZXMocHJvZ3JhbTogdHMuUHJvZ3JhbSk6IHZvaWQge1xuICBmb3IgKGNvbnN0IHNmIG9mIHByb2dyYW0uZ2V0U291cmNlRmlsZXMoKSkge1xuICAgIHVudGFnVHNGaWxlKHNmKTtcbiAgfVxufVxuXG4vKipcbiAqIEZvciB0aG9zZSBgdHMuU291cmNlRmlsZWBzIGluIHRoZSBgcHJvZ3JhbWAgd2hpY2ggaGF2ZSBwcmV2aW91c2x5IGJlZW4gdGFnZ2VkIGJ5IGFcbiAqIGBTaGltUmVmZXJlbmNlVGFnZ2VyYCwgcmUtYXBwbHkgdGhlIGVmZmVjdHMgb2YgdGFnZ2luZyBieSB1cGRhdGluZyB0aGUgYHJlZmVyZW5jZWRGaWxlc2AgYXJyYXkgdG9cbiAqIHRoZSB0YWdnZWQgdmVyc2lvbiBwcm9kdWNlZCBwcmV2aW91c2x5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmV0YWdBbGxUc0ZpbGVzKHByb2dyYW06IHRzLlByb2dyYW0pOiB2b2lkIHtcbiAgZm9yIChjb25zdCBzZiBvZiBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkpIHtcbiAgICByZXRhZ1RzRmlsZShzZik7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXN0b3JlIHRoZSBvcmlnaW5hbCBgcmVmZXJlbmNlZEZpbGVzYCBmb3IgdGhlIGdpdmVuIGB0cy5Tb3VyY2VGaWxlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVudGFnVHNGaWxlKHNmOiB0cy5Tb3VyY2VGaWxlKTogdm9pZCB7XG4gIGlmIChzZi5pc0RlY2xhcmF0aW9uRmlsZSB8fCAhaXNFeHRlbmRlZChzZikpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBleHQgPSBzZkV4dGVuc2lvbkRhdGEoc2YpO1xuICBpZiAoZXh0Lm9yaWdpbmFsUmVmZXJlbmNlZEZpbGVzICE9PSBudWxsKSB7XG4gICAgc2YucmVmZXJlbmNlZEZpbGVzID0gZXh0Lm9yaWdpbmFsUmVmZXJlbmNlZEZpbGVzIGFzIEFycmF5PHRzLkZpbGVSZWZlcmVuY2U+O1xuICB9XG59XG5cbi8qKlxuICogQXBwbHkgdGhlIHByZXZpb3VzbHkgdGFnZ2VkIGByZWZlcmVuY2VkRmlsZXNgIHRvIHRoZSBnaXZlbiBgdHMuU291cmNlRmlsZWAsIGlmIGl0IHdhcyBwcmV2aW91c2x5XG4gKiB0YWdnZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXRhZ1RzRmlsZShzZjogdHMuU291cmNlRmlsZSk6IHZvaWQge1xuICBpZiAoc2YuaXNEZWNsYXJhdGlvbkZpbGUgfHwgIWlzRXh0ZW5kZWQoc2YpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZXh0ID0gc2ZFeHRlbnNpb25EYXRhKHNmKTtcbiAgaWYgKGV4dC50YWdnZWRSZWZlcmVuY2VGaWxlcyAhPT0gbnVsbCkge1xuICAgIHNmLnJlZmVyZW5jZWRGaWxlcyA9IGV4dC50YWdnZWRSZWZlcmVuY2VGaWxlcyBhcyBBcnJheTx0cy5GaWxlUmVmZXJlbmNlPjtcbiAgfVxufVxuIl19
@@ -31,8 +31,7 @@ export declare class ShimReferenceTagger {
31
31
  */
32
32
  tag(sf: ts.SourceFile): void;
33
33
  /**
34
- * Restore the original `referencedFiles` values of all tagged `ts.SourceFile`s and disable the
35
- * `ShimReferenceTagger`.
34
+ * Disable the `ShimReferenceTagger` and free memory associated with tracking tagged files.
36
35
  */
37
36
  finalize(): void;
38
37
  }
@@ -51,8 +51,13 @@
51
51
  !typescript_1.isNonDeclarationTsPath(sf.fileName)) {
52
52
  return;
53
53
  }
54
- expando_1.sfExtensionData(sf).originalReferencedFiles = sf.referencedFiles;
55
- var referencedFiles = tslib_1.__spread(sf.referencedFiles);
54
+ var ext = expando_1.sfExtensionData(sf);
55
+ // If this file has never been tagged before, capture its `referencedFiles` in the extension
56
+ // data.
57
+ if (ext.originalReferencedFiles === null) {
58
+ ext.originalReferencedFiles = sf.referencedFiles;
59
+ }
60
+ var referencedFiles = tslib_1.__spread(ext.originalReferencedFiles);
56
61
  var sfPath = file_system_1.absoluteFromSourceFile(sf);
57
62
  try {
58
63
  for (var _b = tslib_1.__values(this.suffixes), _c = _b.next(); !_c.done; _c = _b.next()) {
@@ -71,39 +76,19 @@
71
76
  }
72
77
  finally { if (e_1) throw e_1.error; }
73
78
  }
79
+ ext.taggedReferenceFiles = referencedFiles;
74
80
  sf.referencedFiles = referencedFiles;
75
81
  this.tagged.add(sf);
76
82
  };
77
83
  /**
78
- * Restore the original `referencedFiles` values of all tagged `ts.SourceFile`s and disable the
79
- * `ShimReferenceTagger`.
84
+ * Disable the `ShimReferenceTagger` and free memory associated with tracking tagged files.
80
85
  */
81
86
  ShimReferenceTagger.prototype.finalize = function () {
82
- var e_2, _a;
83
87
  this.enabled = false;
84
- try {
85
- for (var _b = tslib_1.__values(this.tagged), _c = _b.next(); !_c.done; _c = _b.next()) {
86
- var sf = _c.value;
87
- if (!expando_1.isExtended(sf)) {
88
- continue;
89
- }
90
- var extensionData = expando_1.sfExtensionData(sf);
91
- if (extensionData.originalReferencedFiles !== null) {
92
- sf.referencedFiles = extensionData.originalReferencedFiles;
93
- }
94
- }
95
- }
96
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
97
- finally {
98
- try {
99
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
100
- }
101
- finally { if (e_2) throw e_2.error; }
102
- }
103
88
  this.tagged.clear();
104
89
  };
105
90
  return ShimReferenceTagger;
106
91
  }());
107
92
  exports.ShimReferenceTagger = ShimReferenceTagger;
108
93
  });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlX3RhZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2Mvc2hpbXMvc3JjL3JlZmVyZW5jZV90YWdnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7OztJQUlILDJFQUF1RTtJQUN2RSxrRkFBaUU7SUFFakUsNkVBQTJGO0lBQzNGLHVFQUF3QztJQUV4Qzs7Ozs7T0FLRztJQUNIO1FBZUUsNkJBQVksY0FBd0I7WUFacEM7Ozs7ZUFJRztZQUNLLFdBQU0sR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztZQUUxQzs7ZUFFRztZQUNLLFlBQU8sR0FBWSxJQUFJLENBQUM7WUFHOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLFVBQUEsU0FBUyxJQUFJLE9BQUEsTUFBSSxTQUFTLFFBQUssRUFBbEIsQ0FBa0IsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFFRDs7V0FFRztRQUNILGlDQUFHLEdBQUgsVUFBSSxFQUFpQjs7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLGlCQUFpQixJQUFJLGdCQUFNLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxRSxDQUFDLG1DQUFzQixDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDeEMsT0FBTzthQUNSO1lBRUQseUJBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyx1QkFBdUIsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDO1lBQ2pFLElBQU0sZUFBZSxvQkFBTyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFaEQsSUFBTSxNQUFNLEdBQUcsb0NBQXNCLENBQUMsRUFBRSxDQUFDLENBQUM7O2dCQUMxQyxLQUFxQixJQUFBLEtBQUEsaUJBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQSxnQkFBQSw0QkFBRTtvQkFBL0IsSUFBTSxNQUFNLFdBQUE7b0JBQ2YsZUFBZSxDQUFDLElBQUksQ0FBQzt3QkFDbkIsUUFBUSxFQUFFLHVCQUFnQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7d0JBQzFDLEdBQUcsRUFBRSxDQUFDO3dCQUNOLEdBQUcsRUFBRSxDQUFDO3FCQUNQLENBQUMsQ0FBQztpQkFDSjs7Ozs7Ozs7O1lBRUQsRUFBRSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7WUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUVEOzs7V0FHRztRQUNILHNDQUFRLEdBQVI7O1lBQ0UsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7O2dCQUNyQixLQUFpQixJQUFBLEtBQUEsaUJBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQSxnQkFBQSw0QkFBRTtvQkFBekIsSUFBTSxFQUFFLFdBQUE7b0JBQ1gsSUFBSSxDQUFDLG9CQUFZLENBQUMsRUFBRSxDQUFDLEVBQUU7d0JBQ3JCLFNBQVM7cUJBQ1Y7b0JBRUQsSUFBTSxhQUFhLEdBQUcseUJBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxhQUFhLENBQUMsdUJBQXVCLEtBQUssSUFBSSxFQUFFO3dCQUNsRCxFQUFFLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQyx1QkFBOEMsQ0FBQztxQkFDbkY7aUJBQ0Y7Ozs7Ozs7OztZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUNILDBCQUFDO0lBQUQsQ0FBQyxBQTlERCxJQThEQztJQTlEWSxrREFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7YWJzb2x1dGVGcm9tLCBhYnNvbHV0ZUZyb21Tb3VyY2VGaWxlfSBmcm9tICcuLi8uLi9maWxlX3N5c3RlbSc7XG5pbXBvcnQge2lzTm9uRGVjbGFyYXRpb25Uc1BhdGh9IGZyb20gJy4uLy4uL3V0aWwvc3JjL3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge2lzRXh0ZW5kZWQgYXMgaXNFeHRlbmRlZFNmLCBpc1NoaW0sIE5nRXh0ZW5zaW9uLCBzZkV4dGVuc2lvbkRhdGF9IGZyb20gJy4vZXhwYW5kbyc7XG5pbXBvcnQge21ha2VTaGltRmlsZU5hbWV9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogTWFuaXB1bGF0ZXMgdGhlIGByZWZlcmVuY2VkRmlsZXNgIHByb3BlcnR5IG9mIGB0cy5Tb3VyY2VGaWxlYHMgdG8gYWRkIHJlZmVyZW5jZXMgdG8gc2hpbSBmaWxlc1xuICogZm9yIGVhY2ggb3JpZ2luYWwgc291cmNlIGZpbGUsIGNhdXNpbmcgdGhlIHNoaW1zIHRvIGJlIGxvYWRlZCBpbnRvIHRoZSBwcm9ncmFtIGFzIHdlbGwuXG4gKlxuICogYFNoaW1SZWZlcmVuY2VUYWdnZXJgcyBhcmUgaW50ZW5kZWQgdG8gb3BlcmF0ZSBkdXJpbmcgcHJvZ3JhbSBjcmVhdGlvbiBvbmx5LlxuICovXG5leHBvcnQgY2xhc3MgU2hpbVJlZmVyZW5jZVRhZ2dlciB7XG4gIHByaXZhdGUgc3VmZml4ZXM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUcmFja3Mgd2hpY2ggb3JpZ2luYWwgZmlsZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZCBhbmQgaGFkIHNoaW1zIGdlbmVyYXRlZCBpZiBuZWNlc3NhcnkuXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZCB0byBhdm9pZCBnZW5lcmF0aW5nIHNoaW1zIHR3aWNlIGZvciB0aGUgc2FtZSBmaWxlLlxuICAgKi9cbiAgcHJpdmF0ZSB0YWdnZWQgPSBuZXcgU2V0PHRzLlNvdXJjZUZpbGU+KCk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgc2hpbSB0YWdnaW5nIGlzIGN1cnJlbnRseSBiZWluZyBwZXJmb3JtZWQuXG4gICAqL1xuICBwcml2YXRlIGVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHNoaW1FeHRlbnNpb25zOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuc3VmZml4ZXMgPSBzaGltRXh0ZW5zaW9ucy5tYXAoZXh0ZW5zaW9uID0+IGAuJHtleHRlbnNpb259LnRzYCk7XG4gIH1cblxuICAvKipcbiAgICogVGFnIGBzZmAgd2l0aCBhbnkgbmVlZGVkIHJlZmVyZW5jZXMgaWYgaXQncyBub3QgYSBzaGltIGl0c2VsZi5cbiAgICovXG4gIHRhZyhzZjogdHMuU291cmNlRmlsZSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5lbmFibGVkIHx8IHNmLmlzRGVjbGFyYXRpb25GaWxlIHx8IGlzU2hpbShzZikgfHwgdGhpcy50YWdnZWQuaGFzKHNmKSB8fFxuICAgICAgICAhaXNOb25EZWNsYXJhdGlvblRzUGF0aChzZi5maWxlTmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZkV4dGVuc2lvbkRhdGEoc2YpLm9yaWdpbmFsUmVmZXJlbmNlZEZpbGVzID0gc2YucmVmZXJlbmNlZEZpbGVzO1xuICAgIGNvbnN0IHJlZmVyZW5jZWRGaWxlcyA9IFsuLi5zZi5yZWZlcmVuY2VkRmlsZXNdO1xuXG4gICAgY29uc3Qgc2ZQYXRoID0gYWJzb2x1dGVGcm9tU291cmNlRmlsZShzZik7XG4gICAgZm9yIChjb25zdCBzdWZmaXggb2YgdGhpcy5zdWZmaXhlcykge1xuICAgICAgcmVmZXJlbmNlZEZpbGVzLnB1c2goe1xuICAgICAgICBmaWxlTmFtZTogbWFrZVNoaW1GaWxlTmFtZShzZlBhdGgsIHN1ZmZpeCksXG4gICAgICAgIHBvczogMCxcbiAgICAgICAgZW5kOiAwLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2YucmVmZXJlbmNlZEZpbGVzID0gcmVmZXJlbmNlZEZpbGVzO1xuICAgIHRoaXMudGFnZ2VkLmFkZChzZik7XG4gIH1cblxuICAvKipcbiAgICogUmVzdG9yZSB0aGUgb3JpZ2luYWwgYHJlZmVyZW5jZWRGaWxlc2AgdmFsdWVzIG9mIGFsbCB0YWdnZWQgYHRzLlNvdXJjZUZpbGVgcyBhbmQgZGlzYWJsZSB0aGVcbiAgICogYFNoaW1SZWZlcmVuY2VUYWdnZXJgLlxuICAgKi9cbiAgZmluYWxpemUoKTogdm9pZCB7XG4gICAgdGhpcy5lbmFibGVkID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCBzZiBvZiB0aGlzLnRhZ2dlZCkge1xuICAgICAgaWYgKCFpc0V4dGVuZGVkU2Yoc2YpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBleHRlbnNpb25EYXRhID0gc2ZFeHRlbnNpb25EYXRhKHNmKTtcbiAgICAgIGlmIChleHRlbnNpb25EYXRhLm9yaWdpbmFsUmVmZXJlbmNlZEZpbGVzICE9PSBudWxsKSB7XG4gICAgICAgIHNmLnJlZmVyZW5jZWRGaWxlcyA9IGV4dGVuc2lvbkRhdGEub3JpZ2luYWxSZWZlcmVuY2VkRmlsZXMhIGFzIHRzLkZpbGVSZWZlcmVuY2VbXTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy50YWdnZWQuY2xlYXIoKTtcbiAgfVxufVxuIl19
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlX3RhZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2Mvc2hpbXMvc3JjL3JlZmVyZW5jZV90YWdnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7OztJQUlILDJFQUF5RDtJQUN6RCxrRkFBaUU7SUFFakUsNkVBQWtEO0lBQ2xELHVFQUF3QztJQUV4Qzs7Ozs7T0FLRztJQUNIO1FBZUUsNkJBQVksY0FBd0I7WUFacEM7Ozs7ZUFJRztZQUNLLFdBQU0sR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztZQUUxQzs7ZUFFRztZQUNLLFlBQU8sR0FBWSxJQUFJLENBQUM7WUFHOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLFVBQUEsU0FBUyxJQUFJLE9BQUEsTUFBSSxTQUFTLFFBQUssRUFBbEIsQ0FBa0IsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFFRDs7V0FFRztRQUNILGlDQUFHLEdBQUgsVUFBSSxFQUFpQjs7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLGlCQUFpQixJQUFJLGdCQUFNLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxRSxDQUFDLG1DQUFzQixDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDeEMsT0FBTzthQUNSO1lBRUQsSUFBTSxHQUFHLEdBQUcseUJBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUVoQyw0RkFBNEY7WUFDNUYsUUFBUTtZQUNSLElBQUksR0FBRyxDQUFDLHVCQUF1QixLQUFLLElBQUksRUFBRTtnQkFDeEMsR0FBRyxDQUFDLHVCQUF1QixHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7YUFDbEQ7WUFFRCxJQUFNLGVBQWUsb0JBQU8sR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFHekQsSUFBTSxNQUFNLEdBQUcsb0NBQXNCLENBQUMsRUFBRSxDQUFDLENBQUM7O2dCQUMxQyxLQUFxQixJQUFBLEtBQUEsaUJBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQSxnQkFBQSw0QkFBRTtvQkFBL0IsSUFBTSxNQUFNLFdBQUE7b0JBQ2YsZUFBZSxDQUFDLElBQUksQ0FBQzt3QkFDbkIsUUFBUSxFQUFFLHVCQUFnQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7d0JBQzFDLEdBQUcsRUFBRSxDQUFDO3dCQUNOLEdBQUcsRUFBRSxDQUFDO3FCQUNQLENBQUMsQ0FBQztpQkFDSjs7Ozs7Ozs7O1lBRUQsR0FBRyxDQUFDLG9CQUFvQixHQUFHLGVBQWUsQ0FBQztZQUMzQyxFQUFFLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztZQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixDQUFDO1FBRUQ7O1dBRUc7UUFDSCxzQ0FBUSxHQUFSO1lBQ0UsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixDQUFDO1FBQ0gsMEJBQUM7SUFBRCxDQUFDLEFBNURELElBNERDO0lBNURZLGtEQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHthYnNvbHV0ZUZyb21Tb3VyY2VGaWxlfSBmcm9tICcuLi8uLi9maWxlX3N5c3RlbSc7XG5pbXBvcnQge2lzTm9uRGVjbGFyYXRpb25Uc1BhdGh9IGZyb20gJy4uLy4uL3V0aWwvc3JjL3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge2lzU2hpbSwgc2ZFeHRlbnNpb25EYXRhfSBmcm9tICcuL2V4cGFuZG8nO1xuaW1wb3J0IHttYWtlU2hpbUZpbGVOYW1lfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIE1hbmlwdWxhdGVzIHRoZSBgcmVmZXJlbmNlZEZpbGVzYCBwcm9wZXJ0eSBvZiBgdHMuU291cmNlRmlsZWBzIHRvIGFkZCByZWZlcmVuY2VzIHRvIHNoaW0gZmlsZXNcbiAqIGZvciBlYWNoIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCBjYXVzaW5nIHRoZSBzaGltcyB0byBiZSBsb2FkZWQgaW50byB0aGUgcHJvZ3JhbSBhcyB3ZWxsLlxuICpcbiAqIGBTaGltUmVmZXJlbmNlVGFnZ2VyYHMgYXJlIGludGVuZGVkIHRvIG9wZXJhdGUgZHVyaW5nIHByb2dyYW0gY3JlYXRpb24gb25seS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNoaW1SZWZlcmVuY2VUYWdnZXIge1xuICBwcml2YXRlIHN1ZmZpeGVzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVHJhY2tzIHdoaWNoIG9yaWdpbmFsIGZpbGVzIGhhdmUgYmVlbiBwcm9jZXNzZWQgYW5kIGhhZCBzaGltcyBnZW5lcmF0ZWQgaWYgbmVjZXNzYXJ5LlxuICAgKlxuICAgKiBUaGlzIGlzIHVzZWQgdG8gYXZvaWQgZ2VuZXJhdGluZyBzaGltcyB0d2ljZSBmb3IgdGhlIHNhbWUgZmlsZS5cbiAgICovXG4gIHByaXZhdGUgdGFnZ2VkID0gbmV3IFNldDx0cy5Tb3VyY2VGaWxlPigpO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHNoaW0gdGFnZ2luZyBpcyBjdXJyZW50bHkgYmVpbmcgcGVyZm9ybWVkLlxuICAgKi9cbiAgcHJpdmF0ZSBlbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihzaGltRXh0ZW5zaW9uczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnN1ZmZpeGVzID0gc2hpbUV4dGVuc2lvbnMubWFwKGV4dGVuc2lvbiA9PiBgLiR7ZXh0ZW5zaW9ufS50c2ApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRhZyBgc2ZgIHdpdGggYW55IG5lZWRlZCByZWZlcmVuY2VzIGlmIGl0J3Mgbm90IGEgc2hpbSBpdHNlbGYuXG4gICAqL1xuICB0YWcoc2Y6IHRzLlNvdXJjZUZpbGUpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZW5hYmxlZCB8fCBzZi5pc0RlY2xhcmF0aW9uRmlsZSB8fCBpc1NoaW0oc2YpIHx8IHRoaXMudGFnZ2VkLmhhcyhzZikgfHxcbiAgICAgICAgIWlzTm9uRGVjbGFyYXRpb25Uc1BhdGgoc2YuZmlsZU5hbWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXh0ID0gc2ZFeHRlbnNpb25EYXRhKHNmKTtcblxuICAgIC8vIElmIHRoaXMgZmlsZSBoYXMgbmV2ZXIgYmVlbiB0YWdnZWQgYmVmb3JlLCBjYXB0dXJlIGl0cyBgcmVmZXJlbmNlZEZpbGVzYCBpbiB0aGUgZXh0ZW5zaW9uXG4gICAgLy8gZGF0YS5cbiAgICBpZiAoZXh0Lm9yaWdpbmFsUmVmZXJlbmNlZEZpbGVzID09PSBudWxsKSB7XG4gICAgICBleHQub3JpZ2luYWxSZWZlcmVuY2VkRmlsZXMgPSBzZi5yZWZlcmVuY2VkRmlsZXM7XG4gICAgfVxuXG4gICAgY29uc3QgcmVmZXJlbmNlZEZpbGVzID0gWy4uLmV4dC5vcmlnaW5hbFJlZmVyZW5jZWRGaWxlc107XG5cblxuICAgIGNvbnN0IHNmUGF0aCA9IGFic29sdXRlRnJvbVNvdXJjZUZpbGUoc2YpO1xuICAgIGZvciAoY29uc3Qgc3VmZml4IG9mIHRoaXMuc3VmZml4ZXMpIHtcbiAgICAgIHJlZmVyZW5jZWRGaWxlcy5wdXNoKHtcbiAgICAgICAgZmlsZU5hbWU6IG1ha2VTaGltRmlsZU5hbWUoc2ZQYXRoLCBzdWZmaXgpLFxuICAgICAgICBwb3M6IDAsXG4gICAgICAgIGVuZDogMCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGV4dC50YWdnZWRSZWZlcmVuY2VGaWxlcyA9IHJlZmVyZW5jZWRGaWxlcztcbiAgICBzZi5yZWZlcmVuY2VkRmlsZXMgPSByZWZlcmVuY2VkRmlsZXM7XG4gICAgdGhpcy50YWdnZWQuYWRkKHNmKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlIHRoZSBgU2hpbVJlZmVyZW5jZVRhZ2dlcmAgYW5kIGZyZWUgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB0cmFja2luZyB0YWdnZWQgZmlsZXMuXG4gICAqL1xuICBmaW5hbGl6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmVuYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnRhZ2dlZC5jbGVhcigpO1xuICB9XG59XG4iXX0=