@angular-devkit/architect 0.1502.0 → 0.1600.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/builders/all-of.js +2 -3
- package/builders/concat.js +4 -5
- package/node/node-modules-architect-host.js +8 -11
- package/package.json +4 -4
- package/src/api.d.ts +7 -2
- package/src/api.js +3 -5
- package/src/architect.js +26 -30
- package/src/create-builder.js +7 -19
- package/src/jobs/create-job-handler.js +4 -5
- package/src/jobs/fallback-registry.js +2 -3
- package/src/jobs/simple-scheduler.js +34 -37
- package/src/jobs/strategy.js +6 -7
- package/src/schedule-by-name.js +29 -23
- package/testing/test-project-host.js +11 -12
package/builders/all-of.js
CHANGED
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
const rxjs_1 = require("rxjs");
|
|
11
|
-
const operators_1 = require("rxjs/operators");
|
|
12
11
|
const src_1 = require("../src");
|
|
13
12
|
exports.default = (0, src_1.createBuilder)((options, context) => {
|
|
14
13
|
const allRuns = [];
|
|
@@ -32,7 +31,7 @@ exports.default = (0, src_1.createBuilder)((options, context) => {
|
|
|
32
31
|
const allResults = allRuns.map(() => null);
|
|
33
32
|
let n = 0;
|
|
34
33
|
context.reportProgress(n++, allRuns.length);
|
|
35
|
-
return (0, rxjs_1.from)(allRuns).pipe((0,
|
|
34
|
+
return (0, rxjs_1.from)(allRuns).pipe((0, rxjs_1.mergeMap)((runPromise) => (0, rxjs_1.from)(runPromise)), (0, rxjs_1.mergeMap)(([i, run]) => run.output.pipe((0, rxjs_1.map)((output) => [i, output]))), (0, rxjs_1.mergeMap)(([i, output]) => {
|
|
36
35
|
allResults[i] = output;
|
|
37
36
|
context.reportProgress(n++, allRuns.length);
|
|
38
37
|
if (allResults.some((x) => x === null)) {
|
|
@@ -46,4 +45,4 @@ exports.default = (0, src_1.createBuilder)((options, context) => {
|
|
|
46
45
|
}
|
|
47
46
|
}));
|
|
48
47
|
});
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsLW9mLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYXJjaGl0ZWN0L2J1aWxkZXJzL2FsbC1vZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOztBQUdILCtCQUFzRDtBQUN0RCxnQ0FBa0U7QUFHbEUsa0JBQWUsSUFBQSxtQkFBYSxFQUFtQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNsRixNQUFNLE9BQU8sR0FBb0MsRUFBRSxDQUFDO0lBRXBELE9BQU8sQ0FBQyxjQUFjLENBQ3BCLENBQUMsRUFDRCxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ25ELENBQUM7SUFFRixJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUU7UUFDbkIsT0FBTyxDQUFDLElBQUksQ0FDVixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzdELE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRWxFLE9BQU8sT0FBTztpQkFDWCxjQUFjLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxFQUFFLFNBQVMsSUFBSSxFQUFFLENBQUM7aUJBQ25FLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUF5QixDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztLQUNIO0lBRUQsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO1FBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2xELE9BQU8sT0FBTztpQkFDWCxlQUFlLENBQUMsT0FBTyxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7aUJBQ3ZDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUF5QixDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztLQUNIO0lBRUQsTUFBTSxVQUFVLEdBQTZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFNUMsT0FBTyxJQUFBLFdBQUksRUFBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3ZCLElBQUEsZUFBUSxFQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFBLFdBQUksRUFBQyxVQUFVLENBQUMsQ0FBQyxFQUMxQyxJQUFBLGVBQVEsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FDcEIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBQSxVQUFHLEVBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBNEIsQ0FBQyxDQUFDLENBQ3pFLEVBQ0QsSUFBQSxlQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFO1FBQ3ZCLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDdkIsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFNUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDdEMseUNBQXlDO1lBQ3pDLE9BQU8sWUFBSyxDQUFDO1NBQ2Q7YUFBTTtZQUNMLE9BQU8sSUFBQSxTQUFFLEVBQUM7Z0JBQ1IsT0FBTyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMxRCxDQUFDLENBQUM7U0FDSjtJQUNILENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBqc29uIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0IHsgRU1QVFksIGZyb20sIG1hcCwgbWVyZ2VNYXAsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCdWlsZGVyT3V0cHV0LCBCdWlsZGVyUnVuLCBjcmVhdGVCdWlsZGVyIH0gZnJvbSAnLi4vc3JjJztcbmltcG9ydCB7IFNjaGVtYSBhcyBPcGVyYXRvclNjaGVtYSB9IGZyb20gJy4vb3BlcmF0b3Itc2NoZW1hJztcblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQnVpbGRlcjxqc29uLkpzb25PYmplY3QgJiBPcGVyYXRvclNjaGVtYT4oKG9wdGlvbnMsIGNvbnRleHQpID0+IHtcbiAgY29uc3QgYWxsUnVuczogUHJvbWlzZTxbbnVtYmVyLCBCdWlsZGVyUnVuXT5bXSA9IFtdO1xuXG4gIGNvbnRleHQucmVwb3J0UHJvZ3Jlc3MoXG4gICAgMCxcbiAgICAob3B0aW9ucy50YXJnZXRzID8gb3B0aW9ucy50YXJnZXRzLmxlbmd0aCA6IDApICtcbiAgICAgIChvcHRpb25zLmJ1aWxkZXJzID8gb3B0aW9ucy5idWlsZGVycy5sZW5ndGggOiAwKSxcbiAgKTtcblxuICBpZiAob3B0aW9ucy50YXJnZXRzKSB7XG4gICAgYWxsUnVucy5wdXNoKFxuICAgICAgLi4ub3B0aW9ucy50YXJnZXRzLm1hcCgoeyB0YXJnZXQ6IHRhcmdldFN0ciwgb3ZlcnJpZGVzIH0sIGkpID0+IHtcbiAgICAgICAgY29uc3QgW3Byb2plY3QsIHRhcmdldCwgY29uZmlndXJhdGlvbl0gPSB0YXJnZXRTdHIuc3BsaXQoLzovZywgMyk7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRleHRcbiAgICAgICAgICAuc2NoZWR1bGVUYXJnZXQoeyBwcm9qZWN0LCB0YXJnZXQsIGNvbmZpZ3VyYXRpb24gfSwgb3ZlcnJpZGVzIHx8IHt9KVxuICAgICAgICAgIC50aGVuKChydW4pID0+IFtpLCBydW5dIGFzIFtudW1iZXIsIEJ1aWxkZXJSdW5dKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5idWlsZGVycykge1xuICAgIGFsbFJ1bnMucHVzaChcbiAgICAgIC4uLm9wdGlvbnMuYnVpbGRlcnMubWFwKCh7IGJ1aWxkZXIsIG9wdGlvbnMgfSwgaSkgPT4ge1xuICAgICAgICByZXR1cm4gY29udGV4dFxuICAgICAgICAgIC5zY2hlZHVsZUJ1aWxkZXIoYnVpbGRlciwgb3B0aW9ucyB8fCB7fSlcbiAgICAgICAgICAudGhlbigocnVuKSA9PiBbaSwgcnVuXSBhcyBbbnVtYmVyLCBCdWlsZGVyUnVuXSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgYWxsUmVzdWx0czogKEJ1aWxkZXJPdXRwdXQgfCBudWxsKVtdID0gYWxsUnVucy5tYXAoKCkgPT4gbnVsbCk7XG4gIGxldCBuID0gMDtcbiAgY29udGV4dC5yZXBvcnRQcm9ncmVzcyhuKyssIGFsbFJ1bnMubGVuZ3RoKTtcblxuICByZXR1cm4gZnJvbShhbGxSdW5zKS5waXBlKFxuICAgIG1lcmdlTWFwKChydW5Qcm9taXNlKSA9PiBmcm9tKHJ1blByb21pc2UpKSxcbiAgICBtZXJnZU1hcCgoW2ksIHJ1bl0pID0+XG4gICAgICBydW4ub3V0cHV0LnBpcGUobWFwKChvdXRwdXQpID0+IFtpLCBvdXRwdXRdIGFzIFtudW1iZXIsIEJ1aWxkZXJPdXRwdXRdKSksXG4gICAgKSxcbiAgICBtZXJnZU1hcCgoW2ksIG91dHB1dF0pID0+IHtcbiAgICAgIGFsbFJlc3VsdHNbaV0gPSBvdXRwdXQ7XG4gICAgICBjb250ZXh0LnJlcG9ydFByb2dyZXNzKG4rKywgYWxsUnVucy5sZW5ndGgpO1xuXG4gICAgICBpZiAoYWxsUmVzdWx0cy5zb21lKCh4KSA9PiB4ID09PSBudWxsKSkge1xuICAgICAgICAvLyBTb21lIGJ1aWxkZXJzIGFyZW4ndCBkb25lIHJ1bm5pbmcgeWV0LlxuICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gb2Yoe1xuICAgICAgICAgIHN1Y2Nlc3M6IGFsbFJlc3VsdHMuZXZlcnkoKHgpID0+ICh4ID8geC5zdWNjZXNzIDogZmFsc2UpKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSksXG4gICk7XG59KTtcbiJdfQ==
|
package/builders/concat.js
CHANGED
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
const rxjs_1 = require("rxjs");
|
|
11
|
-
const operators_1 = require("rxjs/operators");
|
|
12
11
|
const src_1 = require("../src");
|
|
13
12
|
exports.default = (0, src_1.createBuilder)((options, context) => {
|
|
14
13
|
const allRuns = [];
|
|
@@ -28,9 +27,9 @@ exports.default = (0, src_1.createBuilder)((options, context) => {
|
|
|
28
27
|
let stop = null;
|
|
29
28
|
let i = 0;
|
|
30
29
|
context.reportProgress(i++, allRuns.length);
|
|
31
|
-
return (0, rxjs_1.from)(allRuns).pipe((0,
|
|
30
|
+
return (0, rxjs_1.from)(allRuns).pipe((0, rxjs_1.concatMap)((fn) => stop
|
|
32
31
|
? (0, rxjs_1.of)(null)
|
|
33
|
-
: (0, rxjs_1.from)(fn()).pipe((0,
|
|
32
|
+
: (0, rxjs_1.from)(fn()).pipe((0, rxjs_1.switchMap)((run) => (run === null ? (0, rxjs_1.of)(null) : run.output.pipe((0, rxjs_1.first)()))))), (0, rxjs_1.map)((output) => {
|
|
34
33
|
context.reportProgress(i++, allRuns.length);
|
|
35
34
|
if (output === null || stop !== null) {
|
|
36
35
|
return stop || { success: false };
|
|
@@ -41,6 +40,6 @@ exports.default = (0, src_1.createBuilder)((options, context) => {
|
|
|
41
40
|
else {
|
|
42
41
|
return output;
|
|
43
42
|
}
|
|
44
|
-
}), (0,
|
|
43
|
+
}), (0, rxjs_1.last)());
|
|
45
44
|
});
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uY2F0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYXJjaGl0ZWN0L2J1aWxkZXJzL2NvbmNhdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOztBQUdILCtCQUF3RTtBQUN4RSxnQ0FBa0U7QUFHbEUsa0JBQWUsSUFBQSxtQkFBYSxFQUFtQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNsRixNQUFNLE9BQU8sR0FBa0MsRUFBRSxDQUFDO0lBRWxELE9BQU8sQ0FBQyxjQUFjLENBQ3BCLENBQUMsRUFDRCxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ25ELENBQUM7SUFFRixJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUU7UUFDbkIsT0FBTyxDQUFDLElBQUksQ0FDVixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7WUFDMUQsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFbEUsT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0YsQ0FBQyxDQUFDLENBQ0gsQ0FBQztLQUNIO0lBRUQsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO1FBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7WUFDL0MsT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztLQUNIO0lBRUQsSUFBSSxJQUFJLEdBQXlCLElBQUksQ0FBQztJQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDVixPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUU1QyxPQUFPLElBQUEsV0FBSSxFQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDdkIsSUFBQSxnQkFBUyxFQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FDZixJQUFJO1FBQ0YsQ0FBQyxDQUFDLElBQUEsU0FBRSxFQUFDLElBQUksQ0FBQztRQUNWLENBQUMsQ0FBQyxJQUFBLFdBQUksRUFBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFBLGdCQUFTLEVBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBQSxTQUFFLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUEsWUFBSyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDOUYsRUFDRCxJQUFBLFVBQUcsRUFBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ2IsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDcEMsT0FBTyxJQUFJLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FDbkM7YUFBTSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssS0FBSyxFQUFFO1lBQ25DLE9BQU8sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUM7U0FDeEI7YUFBTTtZQUNMLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7SUFDSCxDQUFDLENBQUMsRUFDRixJQUFBLFdBQUksR0FBRSxDQUNQLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBqc29uIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0IHsgY29uY2F0TWFwLCBmaXJzdCwgZnJvbSwgbGFzdCwgbWFwLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCdWlsZGVyT3V0cHV0LCBCdWlsZGVyUnVuLCBjcmVhdGVCdWlsZGVyIH0gZnJvbSAnLi4vc3JjJztcbmltcG9ydCB7IFNjaGVtYSBhcyBPcGVyYXRvclNjaGVtYSB9IGZyb20gJy4vb3BlcmF0b3Itc2NoZW1hJztcblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQnVpbGRlcjxqc29uLkpzb25PYmplY3QgJiBPcGVyYXRvclNjaGVtYT4oKG9wdGlvbnMsIGNvbnRleHQpID0+IHtcbiAgY29uc3QgYWxsUnVuczogKCgpID0+IFByb21pc2U8QnVpbGRlclJ1bj4pW10gPSBbXTtcblxuICBjb250ZXh0LnJlcG9ydFByb2dyZXNzKFxuICAgIDAsXG4gICAgKG9wdGlvbnMudGFyZ2V0cyA/IG9wdGlvbnMudGFyZ2V0cy5sZW5ndGggOiAwKSArXG4gICAgICAob3B0aW9ucy5idWlsZGVycyA/IG9wdGlvbnMuYnVpbGRlcnMubGVuZ3RoIDogMCksXG4gICk7XG5cbiAgaWYgKG9wdGlvbnMudGFyZ2V0cykge1xuICAgIGFsbFJ1bnMucHVzaChcbiAgICAgIC4uLm9wdGlvbnMudGFyZ2V0cy5tYXAoKHsgdGFyZ2V0OiB0YXJnZXRTdHIsIG92ZXJyaWRlcyB9KSA9PiB7XG4gICAgICAgIGNvbnN0IFtwcm9qZWN0LCB0YXJnZXQsIGNvbmZpZ3VyYXRpb25dID0gdGFyZ2V0U3RyLnNwbGl0KC86L2csIDMpO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiBjb250ZXh0LnNjaGVkdWxlVGFyZ2V0KHsgcHJvamVjdCwgdGFyZ2V0LCBjb25maWd1cmF0aW9uIH0sIG92ZXJyaWRlcyB8fCB7fSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuYnVpbGRlcnMpIHtcbiAgICBhbGxSdW5zLnB1c2goXG4gICAgICAuLi5vcHRpb25zLmJ1aWxkZXJzLm1hcCgoeyBidWlsZGVyLCBvcHRpb25zIH0pID0+IHtcbiAgICAgICAgcmV0dXJuICgpID0+IGNvbnRleHQuc2NoZWR1bGVCdWlsZGVyKGJ1aWxkZXIsIG9wdGlvbnMgfHwge30pO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGxldCBzdG9wOiBCdWlsZGVyT3V0cHV0IHwgbnVsbCA9IG51bGw7XG4gIGxldCBpID0gMDtcbiAgY29udGV4dC5yZXBvcnRQcm9ncmVzcyhpKyssIGFsbFJ1bnMubGVuZ3RoKTtcblxuICByZXR1cm4gZnJvbShhbGxSdW5zKS5waXBlKFxuICAgIGNvbmNhdE1hcCgoZm4pID0+XG4gICAgICBzdG9wXG4gICAgICAgID8gb2YobnVsbClcbiAgICAgICAgOiBmcm9tKGZuKCkpLnBpcGUoc3dpdGNoTWFwKChydW4pID0+IChydW4gPT09IG51bGwgPyBvZihudWxsKSA6IHJ1bi5vdXRwdXQucGlwZShmaXJzdCgpKSkpKSxcbiAgICApLFxuICAgIG1hcCgob3V0cHV0KSA9PiB7XG4gICAgICBjb250ZXh0LnJlcG9ydFByb2dyZXNzKGkrKywgYWxsUnVucy5sZW5ndGgpO1xuICAgICAgaWYgKG91dHB1dCA9PT0gbnVsbCB8fCBzdG9wICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBzdG9wIHx8IHsgc3VjY2VzczogZmFsc2UgfTtcbiAgICAgIH0gZWxzZSBpZiAob3V0cHV0LnN1Y2Nlc3MgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiAoc3RvcCA9IG91dHB1dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgfVxuICAgIH0pLFxuICAgIGxhc3QoKSxcbiAgKTtcbn0pO1xuIl19
|
|
@@ -39,7 +39,7 @@ function clone(obj) {
|
|
|
39
39
|
try {
|
|
40
40
|
return (0, v8_1.deserialize)((0, v8_1.serialize)(obj));
|
|
41
41
|
}
|
|
42
|
-
catch
|
|
42
|
+
catch {
|
|
43
43
|
return JSON.parse(JSON.stringify(obj));
|
|
44
44
|
}
|
|
45
45
|
}
|
|
@@ -67,15 +67,14 @@ class WorkspaceNodeModulesArchitectHost {
|
|
|
67
67
|
return targetDefinition.builder;
|
|
68
68
|
},
|
|
69
69
|
async getOptions(project, target, configuration) {
|
|
70
|
-
var _a, _b, _c, _d;
|
|
71
70
|
const targetDefinition = findProjectTarget(workspaceOrHost, project, target);
|
|
72
71
|
if (configuration === undefined) {
|
|
73
|
-
return (
|
|
72
|
+
return (targetDefinition.options ?? {});
|
|
74
73
|
}
|
|
75
|
-
if (!
|
|
74
|
+
if (!targetDefinition.configurations?.[configuration]) {
|
|
76
75
|
throw new Error(`Configuration '${configuration}' is not set in the workspace.`);
|
|
77
76
|
}
|
|
78
|
-
return (
|
|
77
|
+
return (targetDefinition.configurations?.[configuration] ?? {});
|
|
79
78
|
},
|
|
80
79
|
async getMetadata(project) {
|
|
81
80
|
const projectDefinition = workspaceOrHost.projects.get(project);
|
|
@@ -91,12 +90,10 @@ class WorkspaceNodeModulesArchitectHost {
|
|
|
91
90
|
};
|
|
92
91
|
},
|
|
93
92
|
async hasTarget(project, target) {
|
|
94
|
-
|
|
95
|
-
return !!((_a = workspaceOrHost.projects.get(project)) === null || _a === void 0 ? void 0 : _a.targets.has(target));
|
|
93
|
+
return !!workspaceOrHost.projects.get(project)?.targets.has(target);
|
|
96
94
|
},
|
|
97
95
|
async getDefaultConfigurationName(project, target) {
|
|
98
|
-
|
|
99
|
-
return (_b = (_a = workspaceOrHost.projects.get(project)) === null || _a === void 0 ? void 0 : _a.targets.get(target)) === null || _b === void 0 ? void 0 : _b.defaultConfiguration;
|
|
96
|
+
return workspaceOrHost.projects.get(project)?.targets.get(target)?.defaultConfiguration;
|
|
100
97
|
},
|
|
101
98
|
};
|
|
102
99
|
}
|
|
@@ -176,7 +173,7 @@ class WorkspaceNodeModulesArchitectHost {
|
|
|
176
173
|
return builder;
|
|
177
174
|
}
|
|
178
175
|
// Default handling code is for old builders that incorrectly export `default` with non-ESM module
|
|
179
|
-
if (builder
|
|
176
|
+
if (builder?.default[internal_1.BuilderSymbol]) {
|
|
180
177
|
return builder.default;
|
|
181
178
|
}
|
|
182
179
|
throw new Error('Builder is not a builder');
|
|
@@ -225,4 +222,4 @@ async function getBuilder(builderPath) {
|
|
|
225
222
|
}
|
|
226
223
|
}
|
|
227
224
|
}
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1tb2R1bGVzLWFyY2hpdGVjdC1ob3N0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYXJjaGl0ZWN0L25vZGUvbm9kZS1tb2R1bGVzLWFyY2hpdGVjdC1ob3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0gsMkNBQTZCO0FBQzdCLDZCQUF5QztBQUN6QywyQkFBNEM7QUFJNUMsOENBQXdFO0FBTXhFLFNBQVMsS0FBSyxDQUFDLEdBQVk7SUFDekIsSUFBSTtRQUNGLE9BQU8sSUFBQSxnQkFBVyxFQUFDLElBQUEsY0FBUyxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDcEM7SUFBQyxXQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztLQUN4QztBQUNILENBQUM7QUFVRCxTQUFTLGlCQUFpQixDQUN4QixTQUF5QyxFQUN6QyxPQUFlLEVBQ2YsTUFBYztJQUVkLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUQsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxPQUFPLG1CQUFtQixDQUFDLENBQUM7S0FDekQ7SUFFRCxNQUFNLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztLQUNuRDtJQUVELE9BQU8sZ0JBQWdCLENBQUM7QUFDMUIsQ0FBQztBQUVELE1BQWEsaUNBQWlDO0lBTzVDLFlBQ0Us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NEIsQ0FBQyxDQUFDLFVBQVUsQ0FBZSxDQUFDO0FBQzVGLENBQUM7QUFFRCw4REFBOEQ7QUFDOUQsS0FBSyxVQUFVLFVBQVUsQ0FBQyxXQUFtQjtJQUMzQyxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7UUFDakMsS0FBSyxNQUFNO1lBQ1Qsa0ZBQWtGO1lBQ2xGLHlGQUF5RjtZQUN6RixzQ0FBc0M7WUFDdEMsT0FBTyxDQUFDLE1BQU0sYUFBYSxDQUF1QixJQUFBLG1CQUFhLEVBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUN6RixLQUFLLE1BQU07WUFDVCxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5QjtZQUNFLDRDQUE0QztZQUM1QyxxREFBcUQ7WUFDckQsSUFBSTtnQkFDRixPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUM3QjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLElBQUssQ0FBMkIsQ0FBQyxJQUFJLEtBQUssaUJBQWlCLEVBQUU7b0JBQzNELGtGQUFrRjtvQkFDbEYseUZBQXlGO29CQUN6RixzQ0FBc0M7b0JBQ3RDLE9BQU8sQ0FBQyxNQUFNLGFBQWEsQ0FBdUIsSUFBQSxtQkFBYSxFQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7aUJBQ3hGO2dCQUVELE1BQU0sQ0FBQyxDQUFDO2FBQ1Q7S0FDSjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsganNvbiwgd29ya3NwYWNlcyB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBVUkwsIHBhdGhUb0ZpbGVVUkwgfSBmcm9tICd1cmwnO1xuaW1wb3J0IHsgZGVzZXJpYWxpemUsIHNlcmlhbGl6ZSB9IGZyb20gJ3Y4JztcbmltcG9ydCB7IEJ1aWxkZXJJbmZvIH0gZnJvbSAnLi4vc3JjJztcbmltcG9ydCB7IFNjaGVtYSBhcyBCdWlsZGVyU2NoZW1hIH0gZnJvbSAnLi4vc3JjL2J1aWxkZXJzLXNjaGVtYSc7XG5pbXBvcnQgeyBUYXJnZXQgfSBmcm9tICcuLi9zcmMvaW5wdXQtc2NoZW1hJztcbmltcG9ydCB7IEFyY2hpdGVjdEhvc3QsIEJ1aWxkZXIsIEJ1aWxkZXJTeW1ib2wgfSBmcm9tICcuLi9zcmMvaW50ZXJuYWwnO1xuXG5leHBvcnQgdHlwZSBOb2RlTW9kdWxlc0J1aWxkZXJJbmZvID0gQnVpbGRlckluZm8gJiB7XG4gIGltcG9ydDogc3RyaW5nO1xufTtcblxuZnVuY3Rpb24gY2xvbmUob2JqOiB1bmtub3duKTogdW5rbm93biB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplKHNlcmlhbGl6ZShvYmopKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqKSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VIb3N0IHtcbiAgZ2V0QnVpbGRlck5hbWUocHJvamVjdDogc3RyaW5nLCB0YXJnZXQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPjtcbiAgZ2V0TWV0YWRhdGEocHJvamVjdDogc3RyaW5nKTogUHJvbWlzZTxqc29uLkpzb25PYmplY3Q+O1xuICBnZXRPcHRpb25zKHByb2plY3Q6IHN0cmluZywgdGFyZ2V0OiBzdHJpbmcsIGNvbmZpZ3VyYXRpb24/OiBzdHJpbmcpOiBQcm9taXNlPGpzb24uSnNvbk9iamVjdD47XG4gIGhhc1RhcmdldChwcm9qZWN0OiBzdHJpbmcsIHRhcmdldDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPjtcbiAgZ2V0RGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lKHByb2plY3Q6IHN0cmluZywgdGFyZ2V0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD47XG59XG5cbmZ1bmN0aW9uIGZpbmRQcm9qZWN0VGFyZ2V0KFxuICB3b3Jrc3BhY2U6IHdvcmtzcGFjZXMuV29ya3NwYWNlRGVmaW5pdGlvbixcbiAgcHJvamVjdDogc3RyaW5nLFxuICB0YXJnZXQ6IHN0cmluZyxcbik6IHdvcmtzcGFjZXMuVGFyZ2V0RGVmaW5pdGlvbiB7XG4gIGNvbnN0IHByb2plY3REZWZpbml0aW9uID0gd29ya3NwYWNlLnByb2plY3RzLmdldChwcm9qZWN0KTtcbiAgaWYgKCFwcm9qZWN0RGVmaW5pdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihgUHJvamVjdCBcIiR7cHJvamVjdH1cIiBkb2VzIG5vdCBleGlzdC5gKTtcbiAgfVxuXG4gIGNvbnN0IHRhcmdldERlZmluaXRpb24gPSBwcm9qZWN0RGVmaW5pdGlvbi50YXJnZXRzLmdldCh0YXJnZXQpO1xuICBpZiAoIXRhcmdldERlZmluaXRpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb2plY3QgdGFyZ2V0IGRvZXMgbm90IGV4aXN0LicpO1xuICB9XG5cbiAgcmV0dXJuIHRhcmdldERlZmluaXRpb247XG59XG5cbmV4cG9ydCBjbGFzcyBXb3Jrc3BhY2VOb2RlTW9kdWxlc0FyY2hpdGVjdEhvc3QgaW1wbGVtZW50cyBBcmNoaXRlY3RIb3N0PE5vZGVNb2R1bGVzQnVpbGRlckluZm8+IHtcbiAgcHJpdmF0ZSB3b3Jrc3BhY2VIb3N0OiBXb3Jrc3BhY2VIb3N0O1xuXG4gIGNvbnN0cnVjdG9yKHdvcmtzcGFjZUhvc3Q6IFdvcmtzcGFjZUhvc3QsIF9yb290OiBzdHJpbmcpO1xuXG4gIGNvbnN0cnVjdG9yKHdvcmtzcGFjZTogd29ya3NwYWNlcy5Xb3Jrc3BhY2VEZWZpbml0aW9uLCBfcm9vdDogc3RyaW5nKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB3b3Jrc3BhY2VPckhvc3Q6IHdvcmtzcGFjZXMuV29ya3NwYWNlRGVmaW5pdGlvbiB8IFdvcmtzcGFjZUhvc3QsXG4gICAgcHJvdGVjdGVkIF9yb290OiBzdHJpbmcsXG4gICkge1xuICAgIGlmICgnZ2V0QnVpbGRlck5hbWUnIGluIHdvcmtzcGFjZU9ySG9zdCkge1xuICAgICAgdGhpcy53b3Jrc3BhY2VIb3N0ID0gd29ya3NwYWNlT3JIb3N0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmtzcGFjZUhvc3QgPSB7XG4gICAgICAgIGFzeW5jIGdldEJ1aWxkZXJOYW1lKHByb2plY3QsIHRhcmdldCkge1xuICAgICAgICAgIGNvbnN0IHRhcmdldERlZmluaXRpb24gPSBmaW5kUHJvamVjdFRhcmdldCh3b3Jrc3BhY2VPckhvc3QsIHByb2plY3QsIHRhcmdldCk7XG5cbiAgICAgICAgICByZXR1cm4gdGFyZ2V0RGVmaW5pdGlvbi5idWlsZGVyO1xuICAgICAgICB9LFxuICAgICAgICBhc3luYyBnZXRPcHRpb25zKHByb2plY3QsIHRhcmdldCwgY29uZmlndXJhdGlvbikge1xuICAgICAgICAgIGNvbnN0IHRhcmdldERlZmluaXRpb24gPSBmaW5kUHJvamVjdFRhcmdldCh3b3Jrc3BhY2VPckhvc3QsIHByb2plY3QsIHRhcmdldCk7XG5cbiAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gKHRhcmdldERlZmluaXRpb24ub3B0aW9ucyA/PyB7fSkgYXMganNvbi5Kc29uT2JqZWN0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghdGFyZ2V0RGVmaW5pdGlvbi5jb25maWd1cmF0aW9ucz8uW2NvbmZpZ3VyYXRpb25dKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbmZpZ3VyYXRpb24gJyR7Y29uZmlndXJhdGlvbn0nIGlzIG5vdCBzZXQgaW4gdGhlIHdvcmtzcGFjZS5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gKHRhcmdldERlZmluaXRpb24uY29uZmlndXJhdGlvbnM/Lltjb25maWd1cmF0aW9uXSA/PyB7fSkgYXMganNvbi5Kc29uT2JqZWN0O1xuICAgICAgICB9LFxuICAgICAgICBhc3luYyBnZXRNZXRhZGF0YShwcm9qZWN0KSB7XG4gICAgICAgICAgY29uc3QgcHJvamVjdERlZmluaXRpb24gPSB3b3Jrc3BhY2VPckhvc3QucHJvamVjdHMuZ2V0KHByb2plY3QpO1xuICAgICAgICAgIGlmICghcHJvamVjdERlZmluaXRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvamVjdCBcIiR7cHJvamVjdH1cIiBkb2VzIG5vdCBleGlzdC5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcm9vdDogcHJvamVjdERlZmluaXRpb24ucm9vdCxcbiAgICAgICAgICAgIHNvdXJjZVJvb3Q6IHByb2plY3REZWZpbml0aW9uLnNvdXJjZVJvb3QsXG4gICAgICAgICAgICBwcmVmaXg6IHByb2plY3REZWZpbml0aW9uLnByZWZpeCxcbiAgICAgICAgICAgIC4uLihjbG9uZSh3b3Jrc3BhY2VPckhvc3QuZXh0ZW5zaW9ucykgYXMge30pLFxuICAgICAgICAgICAgLi4uKGNsb25lKHByb2plY3REZWZpbml0aW9uLmV4dGVuc2lvbnMpIGFzIHt9KSxcbiAgICAgICAgICB9IGFzIHVua25vd24gYXMganNvbi5Kc29uT2JqZWN0O1xuICAgICAgICB9LFxuICAgICAgICBhc3luYyBoYXNUYXJnZXQocHJvamVjdCwgdGFyZ2V0KSB7XG4gICAgICAgICAgcmV0dXJuICEhd29ya3NwYWNlT3JIb3N0LnByb2plY3RzLmdldChwcm9qZWN0KT8udGFyZ2V0cy5oYXModGFyZ2V0KTtcbiAgICAgICAgfSxcbiAgICAgICAgYXN5bmMgZ2V0RGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lKHByb2plY3QsIHRhcmdldCkge1xuICAgICAgICAgIHJldHVybiB3b3Jrc3BhY2VPckhvc3QucHJvamVjdHMuZ2V0KHByb2plY3QpPy50YXJnZXRzLmdldCh0YXJnZXQpPy5kZWZhdWx0Q29uZmlndXJhdGlvbjtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0QnVpbGRlck5hbWVGb3JUYXJnZXQodGFyZ2V0OiBUYXJnZXQpIHtcbiAgICByZXR1cm4gdGhpcy53b3Jrc3BhY2VIb3N0LmdldEJ1aWxkZXJOYW1lKHRhcmdldC5wcm9qZWN0LCB0YXJnZXQudGFyZ2V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIGEgYnVpbGRlci4gVGhpcyBuZWVkcyB0byBiZSBhIHN0cmluZyB3aGljaCB3aWxsIGJlIHVzZWQgaW4gYSBkeW5hbWljIGBpbXBvcnQoKWBcbiAgICogY2xhdXNlLiBUaGlzIHNob3VsZCB0aHJvdyBpZiBubyBidWlsZGVyIGNhbiBiZSBmb3VuZC4gVGhlIGR5bmFtaWMgaW1wb3J0IHdpbGwgdGhyb3cgaWZcbiAgICogaXQgaXMgdW5zdXBwb3J0ZWQuXG4gICAqIEBwYXJhbSBidWlsZGVyU3RyIFRoZSBuYW1lIG9mIHRoZSBidWlsZGVyIHRvIGJlIHVzZWQuXG4gICAqIEByZXR1cm5zIEFsbCB0aGUgaW5mbyBuZWVkZWQgZm9yIHRoZSBidWlsZGVyIGl0c2VsZi5cbiAgICovXG4gIHJlc29sdmVCdWlsZGVyKGJ1aWxkZXJTdHI6IHN0cmluZyk6IFByb21pc2U8Tm9kZU1vZHVsZXNCdWlsZGVySW5mbz4ge1xuICAgIGNvbnN0IFtwYWNrYWdlTmFtZSwgYnVpbGRlck5hbWVdID0gYnVpbGRlclN0ci5zcGxpdCgnOicsIDIpO1xuICAgIGlmICghYnVpbGRlck5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gYnVpbGRlciBuYW1lIHNwZWNpZmllZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSByZXF1aXJlLnJlc29sdmUocGFja2FnZU5hbWUgKyAnL3BhY2thZ2UuanNvbicsIHtcbiAgICAgIHBhdGhzOiBbdGhpcy5fcm9vdF0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBwYWNrYWdlSnNvbiA9IHJlcXVpcmUocGFja2FnZUpzb25QYXRoKTtcbiAgICBpZiAoIXBhY2thZ2VKc29uWydidWlsZGVycyddKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFBhY2thZ2UgJHtKU09OLnN0cmluZ2lmeShwYWNrYWdlTmFtZSl9IGhhcyBubyBidWlsZGVycyBkZWZpbmVkLmApO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1aWxkZXJKc29uUGF0aCA9IHBhdGgucmVzb2x2ZShwYXRoLmRpcm5hbWUocGFja2FnZUpzb25QYXRoKSwgcGFja2FnZUpzb25bJ2J1aWxkZXJzJ10pO1xuICAgIGNvbnN0IGJ1aWxkZXJKc29uID0gcmVxdWlyZShidWlsZGVySnNvblBhdGgpIGFzIEJ1aWxkZXJTY2hlbWE7XG5cbiAgICBjb25zdCBidWlsZGVyID0gYnVpbGRlckpzb24uYnVpbGRlcnMgJiYgYnVpbGRlckpzb24uYnVpbGRlcnNbYnVpbGRlck5hbWVdO1xuXG4gICAgaWYgKCFidWlsZGVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGJ1aWxkZXIgJHtKU09OLnN0cmluZ2lmeShidWlsZGVyU3RyKX0uYCk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1wb3J0UGF0aCA9IGJ1aWxkZXIuaW1wbGVtZW50YXRpb247XG4gICAgaWYgKCFpbXBvcnRQYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgYnVpbGRlciAnICsgYnVpbGRlclN0cik7XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICBuYW1lOiBidWlsZGVyU3RyLFxuICAgICAgYnVpbGRlck5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogYnVpbGRlclsnZGVzY3JpcHRpb24nXSxcbiAgICAgIG9wdGlvblNjaGVtYTogcmVxdWlyZShwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKGJ1aWxkZXJKc29uUGF0aCksIGJ1aWxkZXIuc2NoZW1hKSksXG4gICAgICBpbXBvcnQ6IHBhdGgucmVzb2x2ZShwYXRoLmRpcm5hbWUoYnVpbGRlckpzb25QYXRoKSwgaW1wb3J0UGF0aCksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXRDdXJyZW50RGlyZWN0b3J5KCkge1xuICAgIHJldHVybiBwcm9jZXNzLmN3ZCgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0V29ya3NwYWNlUm9vdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcm9vdDtcbiAgfVxuXG4gIGFzeW5jIGdldE9wdGlvbnNGb3JUYXJnZXQodGFyZ2V0OiBUYXJnZXQpOiBQcm9taXNlPGpzb24uSnNvbk9iamVjdCB8IG51bGw+IHtcbiAgICBpZiAoIShhd2FpdCB0aGlzLndvcmtzcGFjZUhvc3QuaGFzVGFyZ2V0KHRhcmdldC5wcm9qZWN0LCB0YXJnZXQudGFyZ2V0KSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBvcHRpb25zID0gYXdhaXQgdGhpcy53b3Jrc3BhY2VIb3N0LmdldE9wdGlvbnModGFyZ2V0LnByb2plY3QsIHRhcmdldC50YXJnZXQpO1xuICAgIGNvbnN0IHRhcmdldENvbmZpZ3VyYXRpb24gPVxuICAgICAgdGFyZ2V0LmNvbmZpZ3VyYXRpb24gfHxcbiAgICAgIChhd2FpdCB0aGlzLndvcmtzcGFjZUhvc3QuZ2V0RGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lKHRhcmdldC5wcm9qZWN0LCB0YXJnZXQudGFyZ2V0KSk7XG5cbiAgICBpZiAodGFyZ2V0Q29uZmlndXJhdGlvbikge1xuICAgICAgY29uc3QgY29uZmlndXJhdGlvbnMgPSB0YXJnZXRDb25maWd1cmF0aW9uLnNwbGl0KCcsJykubWFwKChjKSA9PiBjLnRyaW0oKSk7XG4gICAgICBmb3IgKGNvbnN0IGNvbmZpZ3VyYXRpb24gb2YgY29uZmlndXJhdGlvbnMpIHtcbiAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgIC4uLihhd2FpdCB0aGlzLndvcmtzcGFjZUhvc3QuZ2V0T3B0aW9ucyh0YXJnZXQucHJvamVjdCwgdGFyZ2V0LnRhcmdldCwgY29uZmlndXJhdGlvbikpLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbG9uZShvcHRpb25zKSBhcyBqc29uLkpzb25PYmplY3Q7XG4gIH1cblxuICBhc3luYyBnZXRQcm9qZWN0TWV0YWRhdGEodGFyZ2V0OiBUYXJnZXQgfCBzdHJpbmcpOiBQcm9taXNlPGpzb24uSnNvbk9iamVjdCB8IG51bGw+IHtcbiAgICBjb25zdCBwcm9qZWN0TmFtZSA9IHR5cGVvZiB0YXJnZXQgPT09ICdzdHJpbmcnID8gdGFyZ2V0IDogdGFyZ2V0LnByb2plY3Q7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLndvcmtzcGFjZUhvc3QuZ2V0TWV0YWRhdGEocHJvamVjdE5hbWUpO1xuXG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9XG5cbiAgYXN5bmMgbG9hZEJ1aWxkZXIoaW5mbzogTm9kZU1vZHVsZXNCdWlsZGVySW5mbyk6IFByb21pc2U8QnVpbGRlcj4ge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBhd2FpdCBnZXRCdWlsZGVyKGluZm8uaW1wb3J0KTtcblxuICAgIGlmIChidWlsZGVyW0J1aWxkZXJTeW1ib2xdKSB7XG4gICAgICByZXR1cm4gYnVpbGRlcjtcbiAgICB9XG5cbiAgICAvLyBEZWZhdWx0IGhhbmRsaW5nIGNvZGUgaXMgZm9yIG9sZCBidWlsZGVycyB0aGF0IGluY29ycmVjdGx5IGV4cG9ydCBgZGVmYXVsdGAgd2l0aCBub24tRVNNIG1vZHVsZVxuICAgIGlmIChidWlsZGVyPy5kZWZhdWx0W0J1aWxkZXJTeW1ib2xdKSB7XG4gICAgICByZXR1cm4gYnVpbGRlci5kZWZhdWx0O1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignQnVpbGRlciBpcyBub3QgYSBidWlsZGVyJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIHVzZXMgYSBkeW5hbWljIGltcG9ydCB0byBsb2FkIGEgbW9kdWxlIHdoaWNoIG1heSBiZSBFU00uXG4gKiBDb21tb25KUyBjb2RlIGNhbiBsb2FkIEVTTSBjb2RlIHZpYSBhIGR5bmFtaWMgaW1wb3J0LiBVbmZvcnR1bmF0ZWx5LCBUeXBlU2NyaXB0XG4gKiB3aWxsIGN1cnJlbnRseSwgdW5jb25kaXRpb25hbGx5IGRvd25sZXZlbCBkeW5hbWljIGltcG9ydCBpbnRvIGEgcmVxdWlyZSBjYWxsLlxuICogcmVxdWlyZSBjYWxscyBjYW5ub3QgbG9hZCBFU00gY29kZSBhbmQgd2lsbCByZXN1bHQgaW4gYSBydW50aW1lIGVycm9yLiBUbyB3b3JrYXJvdW5kXG4gKiB0aGlzLCBhIEZ1bmN0aW9uIGNvbnN0cnVjdG9yIGlzIHVzZWQgdG8gcHJldmVudCBUeXBlU2NyaXB0IGZyb20gY2hhbmdpbmcgdGhlIGR5bmFtaWMgaW1wb3J0LlxuICogT25jZSBUeXBlU2NyaXB0IHByb3ZpZGVzIHN1cHBvcnQgZm9yIGtlZXBpbmcgdGhlIGR5bmFtaWMgaW1wb3J0IHRoaXMgd29ya2Fyb3VuZCBjYW5cbiAqIGJlIGRyb3BwZWQuXG4gKlxuICogQHBhcmFtIG1vZHVsZVBhdGggVGhlIHBhdGggb2YgdGhlIG1vZHVsZSB0byBsb2FkLlxuICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGR5bmFtaWNhbGx5IGltcG9ydGVkIG1vZHVsZS5cbiAqL1xuZnVuY3Rpb24gbG9hZEVzbU1vZHVsZTxUPihtb2R1bGVQYXRoOiBzdHJpbmcgfCBVUkwpOiBQcm9taXNlPFQ+IHtcbiAgcmV0dXJuIG5ldyBGdW5jdGlvbignbW9kdWxlUGF0aCcsIGByZXR1cm4gaW1wb3J0KG1vZHVsZVBhdGgpO2ApKG1vZHVsZVBhdGgpIGFzIFByb21pc2U8VD47XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5hc3luYyBmdW5jdGlvbiBnZXRCdWlsZGVyKGJ1aWxkZXJQYXRoOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICBzd2l0Y2ggKHBhdGguZXh0bmFtZShidWlsZGVyUGF0aCkpIHtcbiAgICBjYXNlICcubWpzJzpcbiAgICAgIC8vIExvYWQgdGhlIEVTTSBjb25maWd1cmF0aW9uIGZpbGUgdXNpbmcgdGhlIFR5cGVTY3JpcHQgZHluYW1pYyBpbXBvcnQgd29ya2Fyb3VuZC5cbiAgICAgIC8vIE9uY2UgVHlwZVNjcmlwdCBwcm92aWRlcyBzdXBwb3J0IGZvciBrZWVwaW5nIHRoZSBkeW5hbWljIGltcG9ydCB0aGlzIHdvcmthcm91bmQgY2FuIGJlXG4gICAgICAvLyBjaGFuZ2VkIHRvIGEgZGlyZWN0IGR5bmFtaWMgaW1wb3J0LlxuICAgICAgcmV0dXJuIChhd2FpdCBsb2FkRXNtTW9kdWxlPHsgZGVmYXVsdDogdW5rbm93biB9PihwYXRoVG9GaWxlVVJMKGJ1aWxkZXJQYXRoKSkpLmRlZmF1bHQ7XG4gICAgY2FzZSAnLmNqcyc6XG4gICAgICByZXR1cm4gcmVxdWlyZShidWlsZGVyUGF0aCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIFRoZSBmaWxlIGNvdWxkIGJlIGVpdGhlciBDb21tb25KUyBvciBFU00uXG4gICAgICAvLyBDb21tb25KUyBpcyB0cmllZCBmaXJzdCB0aGVuIEVTTSBpZiBsb2FkaW5nIGZhaWxzLlxuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHJlcXVpcmUoYnVpbGRlclBhdGgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoKGUgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uKS5jb2RlID09PSAnRVJSX1JFUVVJUkVfRVNNJykge1xuICAgICAgICAgIC8vIExvYWQgdGhlIEVTTSBjb25maWd1cmF0aW9uIGZpbGUgdXNpbmcgdGhlIFR5cGVTY3JpcHQgZHluYW1pYyBpbXBvcnQgd29ya2Fyb3VuZC5cbiAgICAgICAgICAvLyBPbmNlIFR5cGVTY3JpcHQgcHJvdmlkZXMgc3VwcG9ydCBmb3Iga2VlcGluZyB0aGUgZHluYW1pYyBpbXBvcnQgdGhpcyB3b3JrYXJvdW5kIGNhbiBiZVxuICAgICAgICAgIC8vIGNoYW5nZWQgdG8gYSBkaXJlY3QgZHluYW1pYyBpbXBvcnQuXG4gICAgICAgICAgcmV0dXJuIChhd2FpdCBsb2FkRXNtTW9kdWxlPHsgZGVmYXVsdDogdW5rbm93biB9PihwYXRoVG9GaWxlVVJMKGJ1aWxkZXJQYXRoKSkpLmRlZmF1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICB9XG59XG4iXX0=
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1tb2R1bGVzLWFyY2hpdGVjdC1ob3N0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYXJjaGl0ZWN0L25vZGUvbm9kZS1tb2R1bGVzLWFyY2hpdGVjdC1ob3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0gsMkNBQTZCO0FBQzdCLDZCQUF5QztBQUN6QywyQkFBNEM7QUFJNUMsOENBQXdFO0FBTXhFLFNBQVMsS0FBSyxDQUFDLEdBQVk7SUFDekIsSUFBSTtRQUNGLE9BQU8sSUFBQSxnQkFBVyxFQUFDLElBQUEsY0FBUyxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDcEM7SUFBQyxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztLQUN4QztBQUNILENBQUM7QUFVRCxTQUFTLGlCQUFpQixDQUN4QixTQUF5QyxFQUN6QyxPQUFlLEVBQ2YsTUFBYztJQUVkLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUQsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxPQUFPLG1CQUFtQixDQUFDLENBQUM7S0FDekQ7SUFFRCxNQUFNLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztLQUNuRDtJQUVELE9BQU8sZ0JBQWdCLENBQUM7QUFDMUIsQ0FBQztBQUVELE1BQWEsaUNBQWlDO0lBTzVDLFlBQ0Us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LFdBQW1CO0lBQzNDLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUNqQyxLQUFLLE1BQU07WUFDVCxrRkFBa0Y7WUFDbEYseUZBQXlGO1lBQ3pGLHNDQUFzQztZQUN0QyxPQUFPLENBQUMsTUFBTSxhQUFhLENBQXVCLElBQUEsbUJBQWEsRUFBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3pGLEtBQUssTUFBTTtZQUNULE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlCO1lBQ0UsNENBQTRDO1lBQzVDLHFEQUFxRDtZQUNyRCxJQUFJO2dCQUNGLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQzdCO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsSUFBSyxDQUEyQixDQUFDLElBQUksS0FBSyxpQkFBaUIsRUFBRTtvQkFDM0Qsa0ZBQWtGO29CQUNsRix5RkFBeUY7b0JBQ3pGLHNDQUFzQztvQkFDdEMsT0FBTyxDQUFDLE1BQU0sYUFBYSxDQUF1QixJQUFBLG1CQUFhLEVBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztpQkFDeEY7Z0JBRUQsTUFBTSxDQUFDLENBQUM7YUFDVDtLQUNKO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBqc29uLCB3b3Jrc3BhY2VzIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IFVSTCwgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ3VybCc7XG5pbXBvcnQgeyBkZXNlcmlhbGl6ZSwgc2VyaWFsaXplIH0gZnJvbSAndjgnO1xuaW1wb3J0IHsgQnVpbGRlckluZm8gfSBmcm9tICcuLi9zcmMnO1xuaW1wb3J0IHsgU2NoZW1hIGFzIEJ1aWxkZXJTY2hlbWEgfSBmcm9tICcuLi9zcmMvYnVpbGRlcnMtc2NoZW1hJztcbmltcG9ydCB7IFRhcmdldCB9IGZyb20gJy4uL3NyYy9pbnB1dC1zY2hlbWEnO1xuaW1wb3J0IHsgQXJjaGl0ZWN0SG9zdCwgQnVpbGRlciwgQnVpbGRlclN5bWJvbCB9IGZyb20gJy4uL3NyYy9pbnRlcm5hbCc7XG5cbmV4cG9ydCB0eXBlIE5vZGVNb2R1bGVzQnVpbGRlckluZm8gPSBCdWlsZGVySW5mbyAmIHtcbiAgaW1wb3J0OiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiBjbG9uZShvYmo6IHVua25vd24pOiB1bmtub3duIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZGVzZXJpYWxpemUoc2VyaWFsaXplKG9iaikpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmopKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZUhvc3Qge1xuICBnZXRCdWlsZGVyTmFtZShwcm9qZWN0OiBzdHJpbmcsIHRhcmdldDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+O1xuICBnZXRNZXRhZGF0YShwcm9qZWN0OiBzdHJpbmcpOiBQcm9taXNlPGpzb24uSnNvbk9iamVjdD47XG4gIGdldE9wdGlvbnMocHJvamVjdDogc3RyaW5nLCB0YXJnZXQ6IHN0cmluZywgY29uZmlndXJhdGlvbj86IHN0cmluZyk6IFByb21pc2U8anNvbi5Kc29uT2JqZWN0PjtcbiAgaGFzVGFyZ2V0KHByb2plY3Q6IHN0cmluZywgdGFyZ2V0OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+O1xuICBnZXREZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUocHJvamVjdDogc3RyaW5nLCB0YXJnZXQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbn1cblxuZnVuY3Rpb24gZmluZFByb2plY3RUYXJnZXQoXG4gIHdvcmtzcGFjZTogd29ya3NwYWNlcy5Xb3Jrc3BhY2VEZWZpbml0aW9uLFxuICBwcm9qZWN0OiBzdHJpbmcsXG4gIHRhcmdldDogc3RyaW5nLFxuKTogd29ya3NwYWNlcy5UYXJnZXREZWZpbml0aW9uIHtcbiAgY29uc3QgcHJvamVjdERlZmluaXRpb24gPSB3b3Jrc3BhY2UucHJvamVjdHMuZ2V0KHByb2plY3QpO1xuICBpZiAoIXByb2plY3REZWZpbml0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBQcm9qZWN0IFwiJHtwcm9qZWN0fVwiIGRvZXMgbm90IGV4aXN0LmApO1xuICB9XG5cbiAgY29uc3QgdGFyZ2V0RGVmaW5pdGlvbiA9IHByb2plY3REZWZpbml0aW9uLnRhcmdldHMuZ2V0KHRhcmdldCk7XG4gIGlmICghdGFyZ2V0RGVmaW5pdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcignUHJvamVjdCB0YXJnZXQgZG9lcyBub3QgZXhpc3QuJyk7XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0RGVmaW5pdGlvbjtcbn1cblxuZXhwb3J0IGNsYXNzIFdvcmtzcGFjZU5vZGVNb2R1bGVzQXJjaGl0ZWN0SG9zdCBpbXBsZW1lbnRzIEFyY2hpdGVjdEhvc3Q8Tm9kZU1vZHVsZXNCdWlsZGVySW5mbz4ge1xuICBwcml2YXRlIHdvcmtzcGFjZUhvc3Q6IFdvcmtzcGFjZUhvc3Q7XG5cbiAgY29uc3RydWN0b3Iod29ya3NwYWNlSG9zdDogV29ya3NwYWNlSG9zdCwgX3Jvb3Q6IHN0cmluZyk7XG5cbiAgY29uc3RydWN0b3Iod29ya3NwYWNlOiB3b3Jrc3BhY2VzLldvcmtzcGFjZURlZmluaXRpb24sIF9yb290OiBzdHJpbmcpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHdvcmtzcGFjZU9ySG9zdDogd29ya3NwYWNlcy5Xb3Jrc3BhY2VEZWZpbml0aW9uIHwgV29ya3NwYWNlSG9zdCxcbiAgICBwcm90ZWN0ZWQgX3Jvb3Q6IHN0cmluZyxcbiAgKSB7XG4gICAgaWYgKCdnZXRCdWlsZGVyTmFtZScgaW4gd29ya3NwYWNlT3JIb3N0KSB7XG4gICAgICB0aGlzLndvcmtzcGFjZUhvc3QgPSB3b3Jrc3BhY2VPckhvc3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29ya3NwYWNlSG9zdCA9IHtcbiAgICAgICAgYXN5bmMgZ2V0QnVpbGRlck5hbWUocHJvamVjdCwgdGFyZ2V0KSB7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0RGVmaW5pdGlvbiA9IGZpbmRQcm9qZWN0VGFyZ2V0KHdvcmtzcGFjZU9ySG9zdCwgcHJvamVjdCwgdGFyZ2V0KTtcblxuICAgICAgICAgIHJldHVybiB0YXJnZXREZWZpbml0aW9uLmJ1aWxkZXI7XG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jIGdldE9wdGlvbnMocHJvamVjdCwgdGFyZ2V0LCBjb25maWd1cmF0aW9uKSB7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0RGVmaW5pdGlvbiA9IGZpbmRQcm9qZWN0VGFyZ2V0KHdvcmtzcGFjZU9ySG9zdCwgcHJvamVjdCwgdGFyZ2V0KTtcblxuICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAodGFyZ2V0RGVmaW5pdGlvbi5vcHRpb25zID8/IHt9KSBhcyBqc29uLkpzb25PYmplY3Q7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCF0YXJnZXREZWZpbml0aW9uLmNvbmZpZ3VyYXRpb25zPy5bY29uZmlndXJhdGlvbl0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29uZmlndXJhdGlvbiAnJHtjb25maWd1cmF0aW9ufScgaXMgbm90IHNldCBpbiB0aGUgd29ya3NwYWNlLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiAodGFyZ2V0RGVmaW5pdGlvbi5jb25maWd1cmF0aW9ucz8uW2NvbmZpZ3VyYXRpb25dID8/IHt9KSBhcyBqc29uLkpzb25PYmplY3Q7XG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jIGdldE1ldGFkYXRhKHByb2plY3QpIHtcbiAgICAgICAgICBjb25zdCBwcm9qZWN0RGVmaW5pdGlvbiA9IHdvcmtzcGFjZU9ySG9zdC5wcm9qZWN0cy5nZXQocHJvamVjdCk7XG4gICAgICAgICAgaWYgKCFwcm9qZWN0RGVmaW5pdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQcm9qZWN0IFwiJHtwcm9qZWN0fVwiIGRvZXMgbm90IGV4aXN0LmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByb290OiBwcm9qZWN0RGVmaW5pdGlvbi5yb290LFxuICAgICAgICAgICAgc291cmNlUm9vdDogcHJvamVjdERlZmluaXRpb24uc291cmNlUm9vdCxcbiAgICAgICAgICAgIHByZWZpeDogcHJvamVjdERlZmluaXRpb24ucHJlZml4LFxuICAgICAgICAgICAgLi4uKGNsb25lKHdvcmtzcGFjZU9ySG9zdC5leHRlbnNpb25zKSBhcyB7fSksXG4gICAgICAgICAgICAuLi4oY2xvbmUocHJvamVjdERlZmluaXRpb24uZXh0ZW5zaW9ucykgYXMge30pLFxuICAgICAgICAgIH0gYXMgdW5rbm93biBhcyBqc29uLkpzb25PYmplY3Q7XG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jIGhhc1RhcmdldChwcm9qZWN0LCB0YXJnZXQpIHtcbiAgICAgICAgICByZXR1cm4gISF3b3Jrc3BhY2VPckhvc3QucHJvamVjdHMuZ2V0KHByb2plY3QpPy50YXJnZXRzLmhhcyh0YXJnZXQpO1xuICAgICAgICB9LFxuICAgICAgICBhc3luYyBnZXREZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUocHJvamVjdCwgdGFyZ2V0KSB7XG4gICAgICAgICAgcmV0dXJuIHdvcmtzcGFjZU9ySG9zdC5wcm9qZWN0cy5nZXQocHJvamVjdCk/LnRhcmdldHMuZ2V0KHRhcmdldCk/LmRlZmF1bHRDb25maWd1cmF0aW9uO1xuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRCdWlsZGVyTmFtZUZvclRhcmdldCh0YXJnZXQ6IFRhcmdldCkge1xuICAgIHJldHVybiB0aGlzLndvcmtzcGFjZUhvc3QuZ2V0QnVpbGRlck5hbWUodGFyZ2V0LnByb2plY3QsIHRhcmdldC50YXJnZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgYSBidWlsZGVyLiBUaGlzIG5lZWRzIHRvIGJlIGEgc3RyaW5nIHdoaWNoIHdpbGwgYmUgdXNlZCBpbiBhIGR5bmFtaWMgYGltcG9ydCgpYFxuICAgKiBjbGF1c2UuIFRoaXMgc2hvdWxkIHRocm93IGlmIG5vIGJ1aWxkZXIgY2FuIGJlIGZvdW5kLiBUaGUgZHluYW1pYyBpbXBvcnQgd2lsbCB0aHJvdyBpZlxuICAgKiBpdCBpcyB1bnN1cHBvcnRlZC5cbiAgICogQHBhcmFtIGJ1aWxkZXJTdHIgVGhlIG5hbWUgb2YgdGhlIGJ1aWxkZXIgdG8gYmUgdXNlZC5cbiAgICogQHJldHVybnMgQWxsIHRoZSBpbmZvIG5lZWRlZCBmb3IgdGhlIGJ1aWxkZXIgaXRzZWxmLlxuICAgKi9cbiAgcmVzb2x2ZUJ1aWxkZXIoYnVpbGRlclN0cjogc3RyaW5nKTogUHJvbWlzZTxOb2RlTW9kdWxlc0J1aWxkZXJJbmZvPiB7XG4gICAgY29uc3QgW3BhY2thZ2VOYW1lLCBidWlsZGVyTmFtZV0gPSBidWlsZGVyU3RyLnNwbGl0KCc6JywgMik7XG4gICAgaWYgKCFidWlsZGVyTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBidWlsZGVyIG5hbWUgc3BlY2lmaWVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IHBhY2thZ2VKc29uUGF0aCA9IHJlcXVpcmUucmVzb2x2ZShwYWNrYWdlTmFtZSArICcvcGFja2FnZS5qc29uJywge1xuICAgICAgcGF0aHM6IFt0aGlzLl9yb290XSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHBhY2thZ2VKc29uID0gcmVxdWlyZShwYWNrYWdlSnNvblBhdGgpO1xuICAgIGlmICghcGFja2FnZUpzb25bJ2J1aWxkZXJzJ10pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUGFja2FnZSAke0pTT04uc3RyaW5naWZ5KHBhY2thZ2VOYW1lKX0gaGFzIG5vIGJ1aWxkZXJzIGRlZmluZWQuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgYnVpbGRlckpzb25QYXRoID0gcGF0aC5yZXNvbHZlKHBhdGguZGlybmFtZShwYWNrYWdlSnNvblBhdGgpLCBwYWNrYWdlSnNvblsnYnVpbGRlcnMnXSk7XG4gICAgY29uc3QgYnVpbGRlckpzb24gPSByZXF1aXJlKGJ1aWxkZXJKc29uUGF0aCkgYXMgQnVpbGRlclNjaGVtYTtcblxuICAgIGNvbnN0IGJ1aWxkZXIgPSBidWlsZGVySnNvbi5idWlsZGVycyAmJiBidWlsZGVySnNvbi5idWlsZGVyc1tidWlsZGVyTmFtZV07XG5cbiAgICBpZiAoIWJ1aWxkZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgYnVpbGRlciAke0pTT04uc3RyaW5naWZ5KGJ1aWxkZXJTdHIpfS5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbXBvcnRQYXRoID0gYnVpbGRlci5pbXBsZW1lbnRhdGlvbjtcbiAgICBpZiAoIWltcG9ydFBhdGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGZpbmQgdGhlIGltcGxlbWVudGF0aW9uIGZvciBidWlsZGVyICcgKyBidWlsZGVyU3RyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgIG5hbWU6IGJ1aWxkZXJTdHIsXG4gICAgICBidWlsZGVyTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBidWlsZGVyWydkZXNjcmlwdGlvbiddLFxuICAgICAgb3B0aW9uU2NoZW1hOiByZXF1aXJlKHBhdGgucmVzb2x2ZShwYXRoLmRpcm5hbWUoYnVpbGRlckpzb25QYXRoKSwgYnVpbGRlci5zY2hlbWEpKSxcbiAgICAgIGltcG9ydDogcGF0aC5yZXNvbHZlKHBhdGguZGlybmFtZShidWlsZGVySnNvblBhdGgpLCBpbXBvcnRQYXRoKSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGdldEN1cnJlbnREaXJlY3RvcnkoKSB7XG4gICAgcmV0dXJuIHByb2Nlc3MuY3dkKCk7XG4gIH1cblxuICBhc3luYyBnZXRXb3Jrc3BhY2VSb290KCkge1xuICAgIHJldHVybiB0aGlzLl9yb290O1xuICB9XG5cbiAgYXN5bmMgZ2V0T3B0aW9uc0ZvclRhcmdldCh0YXJnZXQ6IFRhcmdldCk6IFByb21pc2U8anNvbi5Kc29uT2JqZWN0IHwgbnVsbD4ge1xuICAgIGlmICghKGF3YWl0IHRoaXMud29ya3NwYWNlSG9zdC5oYXNUYXJnZXQodGFyZ2V0LnByb2plY3QsIHRhcmdldC50YXJnZXQpKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IG9wdGlvbnMgPSBhd2FpdCB0aGlzLndvcmtzcGFjZUhvc3QuZ2V0T3B0aW9ucyh0YXJnZXQucHJvamVjdCwgdGFyZ2V0LnRhcmdldCk7XG4gICAgY29uc3QgdGFyZ2V0Q29uZmlndXJhdGlvbiA9XG4gICAgICB0YXJnZXQuY29uZmlndXJhdGlvbiB8fFxuICAgICAgKGF3YWl0IHRoaXMud29ya3NwYWNlSG9zdC5nZXREZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUodGFyZ2V0LnByb2plY3QsIHRhcmdldC50YXJnZXQpKTtcblxuICAgIGlmICh0YXJnZXRDb25maWd1cmF0aW9uKSB7XG4gICAgICBjb25zdCBjb25maWd1cmF0aW9ucyA9IHRhcmdldENvbmZpZ3VyYXRpb24uc3BsaXQoJywnKS5tYXAoKGMpID0+IGMudHJpbSgpKTtcbiAgICAgIGZvciAoY29uc3QgY29uZmlndXJhdGlvbiBvZiBjb25maWd1cmF0aW9ucykge1xuICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgLi4uKGF3YWl0IHRoaXMud29ya3NwYWNlSG9zdC5nZXRPcHRpb25zKHRhcmdldC5wcm9qZWN0LCB0YXJnZXQudGFyZ2V0LCBjb25maWd1cmF0aW9uKSksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsb25lKG9wdGlvbnMpIGFzIGpzb24uSnNvbk9iamVjdDtcbiAgfVxuXG4gIGFzeW5jIGdldFByb2plY3RNZXRhZGF0YSh0YXJnZXQ6IFRhcmdldCB8IHN0cmluZyk6IFByb21pc2U8anNvbi5Kc29uT2JqZWN0IHwgbnVsbD4ge1xuICAgIGNvbnN0IHByb2plY3ROYW1lID0gdHlwZW9mIHRhcmdldCA9PT0gJ3N0cmluZycgPyB0YXJnZXQgOiB0YXJnZXQucHJvamVjdDtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMud29ya3NwYWNlSG9zdC5nZXRNZXRhZGF0YShwcm9qZWN0TmFtZSk7XG5cbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH1cblxuICBhc3luYyBsb2FkQnVpbGRlcihpbmZvOiBOb2RlTW9kdWxlc0J1aWxkZXJJbmZvKTogUHJvbWlzZTxCdWlsZGVyPiB7XG4gICAgY29uc3QgYnVpbGRlciA9IGF3YWl0IGdldEJ1aWxkZXIoaW5mby5pbXBvcnQpO1xuXG4gICAgaWYgKGJ1aWxkZXJbQnVpbGRlclN5bWJvbF0pIHtcbiAgICAgIHJldHVybiBidWlsZGVyO1xuICAgIH1cblxuICAgIC8vIERlZmF1bHQgaGFuZGxpbmcgY29kZSBpcyBmb3Igb2xkIGJ1aWxkZXJzIHRoYXQgaW5jb3JyZWN0bHkgZXhwb3J0IGBkZWZhdWx0YCB3aXRoIG5vbi1FU00gbW9kdWxlXG4gICAgaWYgKGJ1aWxkZXI/LmRlZmF1bHRbQnVpbGRlclN5bWJvbF0pIHtcbiAgICAgIHJldHVybiBidWlsZGVyLmRlZmF1bHQ7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdCdWlsZGVyIGlzIG5vdCBhIGJ1aWxkZXInKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgdXNlcyBhIGR5bmFtaWMgaW1wb3J0IHRvIGxvYWQgYSBtb2R1bGUgd2hpY2ggbWF5IGJlIEVTTS5cbiAqIENvbW1vbkpTIGNvZGUgY2FuIGxvYWQgRVNNIGNvZGUgdmlhIGEgZHluYW1pYyBpbXBvcnQuIFVuZm9ydHVuYXRlbHksIFR5cGVTY3JpcHRcbiAqIHdpbGwgY3VycmVudGx5LCB1bmNvbmRpdGlvbmFsbHkgZG93bmxldmVsIGR5bmFtaWMgaW1wb3J0IGludG8gYSByZXF1aXJlIGNhbGwuXG4gKiByZXF1aXJlIGNhbGxzIGNhbm5vdCBsb2FkIEVTTSBjb2RlIGFuZCB3aWxsIHJlc3VsdCBpbiBhIHJ1bnRpbWUgZXJyb3IuIFRvIHdvcmthcm91bmRcbiAqIHRoaXMsIGEgRnVuY3Rpb24gY29uc3RydWN0b3IgaXMgdXNlZCB0byBwcmV2ZW50IFR5cGVTY3JpcHQgZnJvbSBjaGFuZ2luZyB0aGUgZHluYW1pYyBpbXBvcnQuXG4gKiBPbmNlIFR5cGVTY3JpcHQgcHJvdmlkZXMgc3VwcG9ydCBmb3Iga2VlcGluZyB0aGUgZHluYW1pYyBpbXBvcnQgdGhpcyB3b3JrYXJvdW5kIGNhblxuICogYmUgZHJvcHBlZC5cbiAqXG4gKiBAcGFyYW0gbW9kdWxlUGF0aCBUaGUgcGF0aCBvZiB0aGUgbW9kdWxlIHRvIGxvYWQuXG4gKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgZHluYW1pY2FsbHkgaW1wb3J0ZWQgbW9kdWxlLlxuICovXG5mdW5jdGlvbiBsb2FkRXNtTW9kdWxlPFQ+KG1vZHVsZVBhdGg6IHN0cmluZyB8IFVSTCk6IFByb21pc2U8VD4ge1xuICByZXR1cm4gbmV3IEZ1bmN0aW9uKCdtb2R1bGVQYXRoJywgYHJldHVybiBpbXBvcnQobW9kdWxlUGF0aCk7YCkobW9kdWxlUGF0aCkgYXMgUHJvbWlzZTxUPjtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmFzeW5jIGZ1bmN0aW9uIGdldEJ1aWxkZXIoYnVpbGRlclBhdGg6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gIHN3aXRjaCAocGF0aC5leHRuYW1lKGJ1aWxkZXJQYXRoKSkge1xuICAgIGNhc2UgJy5tanMnOlxuICAgICAgLy8gTG9hZCB0aGUgRVNNIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2luZyB0aGUgVHlwZVNjcmlwdCBkeW5hbWljIGltcG9ydCB3b3JrYXJvdW5kLlxuICAgICAgLy8gT25jZSBUeXBlU2NyaXB0IHByb3ZpZGVzIHN1cHBvcnQgZm9yIGtlZXBpbmcgdGhlIGR5bmFtaWMgaW1wb3J0IHRoaXMgd29ya2Fyb3VuZCBjYW4gYmVcbiAgICAgIC8vIGNoYW5nZWQgdG8gYSBkaXJlY3QgZHluYW1pYyBpbXBvcnQuXG4gICAgICByZXR1cm4gKGF3YWl0IGxvYWRFc21Nb2R1bGU8eyBkZWZhdWx0OiB1bmtub3duIH0+KHBhdGhUb0ZpbGVVUkwoYnVpbGRlclBhdGgpKSkuZGVmYXVsdDtcbiAgICBjYXNlICcuY2pzJzpcbiAgICAgIHJldHVybiByZXF1aXJlKGJ1aWxkZXJQYXRoKTtcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gVGhlIGZpbGUgY291bGQgYmUgZWl0aGVyIENvbW1vbkpTIG9yIEVTTS5cbiAgICAgIC8vIENvbW1vbkpTIGlzIHRyaWVkIGZpcnN0IHRoZW4gRVNNIGlmIGxvYWRpbmcgZmFpbHMuXG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gcmVxdWlyZShidWlsZGVyUGF0aCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmICgoZSBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb24pLmNvZGUgPT09ICdFUlJfUkVRVUlSRV9FU00nKSB7XG4gICAgICAgICAgLy8gTG9hZCB0aGUgRVNNIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2luZyB0aGUgVHlwZVNjcmlwdCBkeW5hbWljIGltcG9ydCB3b3JrYXJvdW5kLlxuICAgICAgICAgIC8vIE9uY2UgVHlwZVNjcmlwdCBwcm92aWRlcyBzdXBwb3J0IGZvciBrZWVwaW5nIHRoZSBkeW5hbWljIGltcG9ydCB0aGlzIHdvcmthcm91bmQgY2FuIGJlXG4gICAgICAgICAgLy8gY2hhbmdlZCB0byBhIGRpcmVjdCBkeW5hbWljIGltcG9ydC5cbiAgICAgICAgICByZXR1cm4gKGF3YWl0IGxvYWRFc21Nb2R1bGU8eyBkZWZhdWx0OiB1bmtub3duIH0+KHBhdGhUb0ZpbGVVUkwoYnVpbGRlclBhdGgpKSkuZGVmYXVsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gIH1cbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@angular-devkit/architect",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1600.0-next.0",
|
|
4
4
|
"description": "Angular Build Facade",
|
|
5
5
|
"experimental": true,
|
|
6
6
|
"main": "src/index.js",
|
|
7
7
|
"typings": "src/index.d.ts",
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@angular-devkit/core": "
|
|
10
|
-
"rxjs": "
|
|
9
|
+
"@angular-devkit/core": "16.0.0-next.0",
|
|
10
|
+
"rxjs": "7.8.0"
|
|
11
11
|
},
|
|
12
12
|
"builders": "./builders/builders.json",
|
|
13
13
|
"keywords": [
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"url": "https://github.com/angular/angular-cli.git"
|
|
23
23
|
},
|
|
24
24
|
"engines": {
|
|
25
|
-
"node": "^
|
|
25
|
+
"node": "^16.13.0 || >=18.10.0",
|
|
26
26
|
"npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
|
|
27
27
|
"yarn": ">= 1.13.0"
|
|
28
28
|
},
|
package/src/api.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
8
|
import { json, logging } from '@angular-devkit/core';
|
|
9
|
-
import { Observable,
|
|
9
|
+
import { Observable, ObservableInput } from 'rxjs';
|
|
10
10
|
import { Schema as RealBuilderInput, Target as RealTarget } from './input-schema';
|
|
11
11
|
import { Registry } from './jobs';
|
|
12
12
|
import { Schema as RealBuilderOutput } from './output-schema';
|
|
@@ -74,6 +74,11 @@ export interface BuilderRun {
|
|
|
74
74
|
* interested in the result of that single run, not of a watch-mode builder.
|
|
75
75
|
*/
|
|
76
76
|
result: Promise<BuilderOutput>;
|
|
77
|
+
/**
|
|
78
|
+
* The last output from a builder. This is recommended when scheduling a builder and only being
|
|
79
|
+
* interested in the result of that last run.
|
|
80
|
+
*/
|
|
81
|
+
lastOutput: Promise<BuilderOutput>;
|
|
77
82
|
/**
|
|
78
83
|
* The output(s) from the builder. A builder can have multiple outputs.
|
|
79
84
|
* This always replay the last output when subscribed.
|
|
@@ -213,7 +218,7 @@ export interface BuilderContext {
|
|
|
213
218
|
/**
|
|
214
219
|
* An accepted return value from a builder. Can be either an Observable, a Promise or a vector.
|
|
215
220
|
*/
|
|
216
|
-
export type BuilderOutputLike =
|
|
221
|
+
export type BuilderOutputLike = ObservableInput<BuilderOutput> | BuilderOutput;
|
|
217
222
|
export declare function isBuilderOutput(obj: any): obj is BuilderOutput;
|
|
218
223
|
export declare function fromAsyncIterable<T>(iterable: AsyncIterable<T>): Observable<T>;
|
|
219
224
|
/**
|
package/src/api.js
CHANGED
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.scheduleTargetAndForget = exports.targetFromTargetString = exports.targetStringFromTarget = exports.fromAsyncIterable = exports.isBuilderOutput = exports.BuilderProgressState = void 0;
|
|
11
11
|
const rxjs_1 = require("rxjs");
|
|
12
|
-
const operators_1 = require("rxjs/operators");
|
|
13
12
|
const progress_schema_1 = require("./progress-schema");
|
|
14
13
|
Object.defineProperty(exports, "BuilderProgressState", { enumerable: true, get: function () { return progress_schema_1.State; } });
|
|
15
14
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -30,7 +29,6 @@ function fromAsyncIterable(iterable) {
|
|
|
30
29
|
}
|
|
31
30
|
exports.fromAsyncIterable = fromAsyncIterable;
|
|
32
31
|
async function handleAsyncIterator(subscriber, iterator) {
|
|
33
|
-
var _a;
|
|
34
32
|
const teardown = new Promise((resolve) => subscriber.add(() => resolve()));
|
|
35
33
|
try {
|
|
36
34
|
while (!subscriber.closed) {
|
|
@@ -42,7 +40,7 @@ async function handleAsyncIterator(subscriber, iterator) {
|
|
|
42
40
|
}
|
|
43
41
|
}
|
|
44
42
|
finally {
|
|
45
|
-
await
|
|
43
|
+
await iterator.return?.();
|
|
46
44
|
}
|
|
47
45
|
}
|
|
48
46
|
/**
|
|
@@ -84,7 +82,7 @@ function scheduleTargetAndForget(context, target, overrides, scheduleOptions) {
|
|
|
84
82
|
let resolve = null;
|
|
85
83
|
const promise = new Promise((r) => (resolve = r));
|
|
86
84
|
context.addTeardown(() => promise);
|
|
87
|
-
return (0, rxjs_1.from)(context.scheduleTarget(target, overrides, scheduleOptions)).pipe((0,
|
|
85
|
+
return (0, rxjs_1.from)(context.scheduleTarget(target, overrides, scheduleOptions)).pipe((0, rxjs_1.switchMap)((run) => new rxjs_1.Observable((observer) => {
|
|
88
86
|
const subscription = run.output.subscribe(observer);
|
|
89
87
|
return () => {
|
|
90
88
|
subscription.unsubscribe();
|
|
@@ -96,4 +94,4 @@ function scheduleTargetAndForget(context, target, overrides, scheduleOptions) {
|
|
|
96
94
|
})));
|
|
97
95
|
}
|
|
98
96
|
exports.scheduleTargetAndForget = scheduleTargetAndForget;
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYXJjaGl0ZWN0L3NyYy9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBR0gsK0JBQTJFO0FBQzNFLDhDQUEyQztBQUkzQyx1REFBaUc7QUFHeEYscUdBSFMsdUJBQW9CLE9BR1Q7QUE4TzdCLDhEQUE4RDtBQUM5RCxTQUFnQixlQUFlLENBQUMsR0FBUTtJQUN0QyxJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLElBQUksT0FBTyxHQUFHLENBQUMsU0FBUyxLQUFLLFVBQVUsRUFBRTtRQUNqRixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssVUFBVSxFQUFFO1FBQ25ELE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxPQUFPLE9BQU8sR0FBRyxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUM7QUFDMUMsQ0FBQztBQVZELDBDQVVDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQUksUUFBMEI7SUFDN0QsT0FBTyxJQUFJLGlCQUFVLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtRQUNuQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNwRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQzNCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUNuQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBUEQsOENBT0M7QUFFRCxLQUFLLFVBQVUsbUJBQW1CLENBQ2hDLFVBQXlCLEVBQ3pCLFFBQTBCOztJ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QztBQUNKLENBQUM7QUExQkQsMERBMEJDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IGpzb24sIGxvZ2dpbmcgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpYmFibGVPclByb21pc2UsIFN1YnNjcmliZXIsIGZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFNjaGVtYSBhcyBSZWFsQnVpbGRlcklucHV0LCBUYXJnZXQgYXMgUmVhbFRhcmdldCB9IGZyb20gJy4vaW5wdXQtc2NoZW1hJztcbmltcG9ydCB7IFJlZ2lzdHJ5IH0gZnJvbSAnLi9qb2JzJztcbmltcG9ydCB7IFNjaGVtYSBhcyBSZWFsQnVpbGRlck91dHB1dCB9IGZyb20gJy4vb3V0cHV0LXNjaGVtYSc7XG5pbXBvcnQgeyBTdGF0ZSBhcyBCdWlsZGVyUHJvZ3Jlc3NTdGF0ZSwgU2NoZW1hIGFzIFJlYWxCdWlsZGVyUHJvZ3Jlc3MgfSBmcm9tICcuL3Byb2dyZXNzLXNjaGVtYSc7XG5cbmV4cG9ydCB0eXBlIFRhcmdldCA9IGpzb24uSnNvbk9iamVjdCAmIFJlYWxUYXJnZXQ7XG5leHBvcnQgeyBCdWlsZGVyUHJvZ3Jlc3NTdGF0ZSB9O1xuXG4vLyBUeXBlIHNob3J0IGhhbmRzLlxuZXhwb3J0IHR5cGUgQnVpbGRlclJlZ2lzdHJ5ID0gUmVnaXN0cnk8anNvbi5Kc29uT2JqZWN0LCBCdWlsZGVySW5wdXQsIEJ1aWxkZXJPdXRwdXQ+O1xuXG4vKipcbiAqIEFuIEFQSSB0eXBlZCBCdWlsZGVyUHJvZ3Jlc3MuIFRoZSBpbnRlcmZhY2UgZ2VuZXJhdGVkIGZyb20gdGhlIHNjaGVtYSBpcyB0b28gcGVybWlzc2l2ZSxcbiAqIHNvIHRoaXMgQVBJIGlzIHRoZSBvbmUgd2Ugc2hvdyBpbiBvdXIgQVBJLiBQbGVhc2Ugbm90ZSB0aGF0IG5vdCBhbGwgZmllbGRzIGFyZSBpbiB0aGVyZTsgdGhpc1xuICogaXMgaW4gYWRkaXRpb24gdG8gZmllbGRzIGluIHRoZSBzY2hlbWEuXG4gKi9cbmV4cG9ydCB0eXBlIFR5cGVkQnVpbGRlclByb2dyZXNzID1cbiAgfCB7IHN0YXRlOiBCdWlsZGVyUHJvZ3Jlc3NTdGF0ZS5TdG9wcGVkIH1cbiAgfCB7IHN0YXRlOiBCdWlsZGVyUHJvZ3Jlc3NTdGF0ZS5FcnJvcjsgZXJyb3I6IGpzb24uSnNvblZhbHVlIH1cbiAgfCB7IHN0YXRlOiBCdWlsZGVyUHJvZ3Jlc3NTdGF0ZS5XYWl0aW5nOyBzdGF0dXM/OiBzdHJpbmcgfVxuICB8IHsgc3RhdGU6IEJ1aWxkZXJQcm9ncmVzc1N0YXRlLlJ1bm5pbmc7IHN0YXR1cz86IHN0cmluZzsgY3VycmVudDogbnVtYmVyOyB0b3RhbD86IG51bWJlciB9O1xuXG4vKipcbiAqIERlY2xhcmF0aW9uIG9mIHRob3NlIHR5cGVzIGFzIEpzb25PYmplY3QgY29tcGF0aWJsZS4gSnNvbk9iamVjdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoXG4gKiBvcHRpb25hbCBtZW1iZXJzLCBzbyB0aG9zZSB3b3VsZG4ndCBiZSBkaXJlY3RseSBhc3NpZ25hYmxlIHRvIG91ciBpbnRlcm5hbCBKc29uIHR5cGluZ3MuXG4gKiBGb3JjaW5nIHRoZSB0eXBlIHRvIGJlIGJvdGggYSBKc29uT2JqZWN0IGFuZCB0aGUgdHlwZSBmcm9tIHRoZSBTY2hlbWEgdGVsbHMgVHlwZXNjcmlwdCB0aGV5XG4gKiBhcmUgY29tcGF0aWJsZSAod2hpY2ggdGhleSBhcmUpLlxuICogVGhlc2UgdHlwZXMgc2hvdWxkIGJlIHVzZWQgZXZlcnl3aGVyZS5cbiAqL1xuZXhwb3J0IHR5cGUgQnVpbGRlcklucHV0ID0ganNvbi5Kc29uT2JqZWN0ICYgUmVhbEJ1aWxkZXJJbnB1dDtcbmV4cG9ydCB0eXBlIEJ1aWxkZXJPdXRwdXQgPSBqc29uLkpzb25PYmplY3QgJiBSZWFsQnVpbGRlck91dHB1dDtcbmV4cG9ydCB0eXBlIEJ1aWxkZXJQcm9ncmVzcyA9IGpzb24uSnNvbk9iamVjdCAmIFJlYWxCdWlsZGVyUHJvZ3Jlc3MgJiBUeXBlZEJ1aWxkZXJQcm9ncmVzcztcblxuLyoqXG4gKiBBIHByb2dyZXNzIHJlcG9ydCBpcyB3aGF0IHRoZSB0b29saW5nIHdpbGwgcmVjZWl2ZS4gSXQgY29udGFpbnMgdGhlIGJ1aWxkZXIgaW5mbyBhbmQgdGhlIHRhcmdldC5cbiAqIEFsdGhvdWdoIHRoZXNlIGFyZSBzZXJpYWxpemFibGUsIHRoZXkgYXJlIG9ubHkgZXhwb3NlZCB0aHJvdWdoIHRoZSB0b29saW5nIGludGVyZmFjZSwgbm90IHRoZVxuICogYnVpbGRlciBpbnRlcmZhY2UuIFRoZSB3YXRjaCBkb2cgc2VuZHMgQnVpbGRlclByb2dyZXNzIGFuZCB0aGUgQnVpbGRlciBoYXMgYSBzZXQgb2YgZnVuY3Rpb25zXG4gKiB0byBtYW5hZ2UgdGhlIHN0YXRlLlxuICovXG5leHBvcnQgdHlwZSBCdWlsZGVyUHJvZ3Jlc3NSZXBvcnQgPSBCdWlsZGVyUHJvZ3Jlc3MgJiB7XG4gIHRhcmdldD86IFRhcmdldDtcbiAgYnVpbGRlcjogQnVpbGRlckluZm87XG59O1xuXG4vKipcbiAqIEEgUnVuLCB3aGljaCBpcyB3aGF0IGlzIHJldHVybmVkIGJ5IHNjaGVkdWxlQnVpbGRlciBvciBzY2hlZHVsZVRhcmdldCBmdW5jdGlvbnMuIFRoaXMgc2hvdWxkXG4gKiBiZSByZWNvbnN0cnVjdGVkIGFjcm9zcyBtZW1vcnkgYm91bmRhcmllcyAoaXQncyBub3Qgc2VyaWFsaXphYmxlIGJ1dCBhbGwgaW50ZXJuYWwgaW5mb3JtYXRpb25cbiAqIGFyZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRlclJ1biB7XG4gIC8qKlxuICAgKiBVbmlxdWUgYW1vbmdzdCBydW5zLiBUaGlzIGlzIHRoZSBzYW1lIElEIGFzIHRoZSBjb250ZXh0IGdlbmVyYXRlZCBmb3IgdGhlIHJ1bi4gSXQgY2FuIGJlXG4gICAqIHVzZWQgdG8gaWRlbnRpZnkgbXVsdGlwbGUgdW5pcXVlIHJ1bnMuIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGEgcnVuIGlzIGEgc2luZ2xlIG91dHB1dDtcbiAgICogYSBidWlsZGVyIGNhbiByZWJ1aWxkIG9uIGl0cyBvd24gYW5kIHdpbGwgZ2VuZXJhdGUgbXVsdGlwbGUgb3V0cHV0cy5cbiAgICovXG4gIGlkOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBidWlsZGVyIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgaW5mbzogQnVpbGRlckluZm87XG5cbiAgLyoqXG4gICAqIFRoZSBuZXh0IG91dHB1dCBmcm9tIGEgYnVpbGRlci4gVGhpcyBpcyByZWNvbW1lbmRlZCB3aGVuIHNjaGVkdWxpbmcgYSBidWlsZGVyIGFuZCBvbmx5IGJlaW5nXG4gICAqIGludGVyZXN0ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGF0IHNpbmdsZSBydW4sIG5vdCBvZiBhIHdhdGNoLW1vZGUgYnVpbGRlci5cbiAgICovXG4gIHJlc3VsdDogUHJvbWlzZTxCdWlsZGVyT3V0cHV0PjtcblxuICAvKipcbiAgICogVGhlIG91dHB1dChzKSBmcm9tIHRoZSBidWlsZGVyLiBBIGJ1aWxkZXIgY2FuIGhhdmUgbXVsdGlwbGUgb3V0cHV0cy5cbiAgICogVGhpcyBhbHdheXMgcmVwbGF5IHRoZSBsYXN0IG91dHB1dCB3aGVuIHN1YnNjcmliZWQuXG4gICAqL1xuICBvdXRwdXQ6IE9ic2VydmFibGU8QnVpbGRlck91dHB1dD47XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9ncmVzcyByZXBvcnQuIEEgcHJvZ3Jlc3MgYWxzbyBjb250YWlucyBhbiBJRCwgd2hpY2ggY2FuIGJlIGRpZmZlcmVudCB0aGFuIHRoaXMgcnVuJ3NcbiAgICogSUQgKGlmIHRoZSBidWlsZGVyIGNhbGxzIHNjaGVkdWxlQnVpbGRlciBvciBzY2hlZHVsZVRhcmdldCkuXG4gICAqIFRoaXMgd2lsbCBhbHdheXMgcmVwbGF5IHRoZSBsYXN0IHByb2dyZXNzIG9uIG5ldyBzdWJzY3JpcHRpb25zLlxuICAgKi9cbiAgcHJvZ3Jlc3M6IE9ic2VydmFibGU8QnVpbGRlclByb2dyZXNzUmVwb3J0PjtcblxuICAvKipcbiAgICogU3RvcCB0aGUgYnVpbGRlciBmcm9tIHJ1bm5pbmcuIFJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYnVpbGRlciBpcyBzdG9wcGVkLlxuICAgKiBTb21lIGJ1aWxkZXJzIG1pZ2h0IG5vdCBoYW5kbGUgc3RvcHBpbmcgcHJvcGVybHkgYW5kIHNob3VsZCBoYXZlIGEgdGltZW91dCBoZXJlLlxuICAgKi9cbiAgc3RvcCgpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIEFkZGl0aW9uYWwgb3B0aW9uYWwgc2NoZWR1bGluZyBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBMb2dnZXIgdG8gcGFzcyB0byB0aGUgYnVpbGRlci4gTm90ZSB0aGF0IG1lc3NhZ2VzIHdpbGwgc3RvcCBiZWluZyBmb3J3YXJkZWQsIGFuZCBpZiB5b3Ugd2FudFxuICAgKiB0byBsb2cgYSBidWlsZGVyIHNjaGVkdWxlZCBmcm9tIHlvdXIgYnVpbGRlciB5b3Ugc2hvdWxkIGZvcndhcmQgbG9nIGV2ZW50cyB5b3Vyc2VsZi5cbiAgICovXG4gIGxvZ2dlcj86IGxvZ2dpbmcuTG9nZ2VyO1xuXG4gIC8qKlxuICAgKiBUYXJnZXQgdG8gcGFzcyB0byB0aGUgYnVpbGRlci5cbiAgICovXG4gIHRhcmdldD86IFRhcmdldDtcbn1cblxuLyoqXG4gKiBUaGUgY29udGV4dCByZWNlaXZlZCBhcyBhIHNlY29uZCBhcmd1bWVudCBpbiB5b3VyIGJ1aWxkZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRlckNvbnRleHQge1xuICAvKipcbiAgICogVW5pcXVlIGFtb25nc3QgY29udGV4dHMuIENvbnRleHRzIGluc3RhbmNlcyBhcmUgbm90IGd1YXJhbnRlZWQgdG8gYmUgdGhlIHNhbWUgKGJ1dCBpdCBjb3VsZFxuICAgKiBiZSB0aGUgc2FtZSBjb250ZXh0KSwgYW5kIGFsbCB0aGUgZmllbGRzIGluIGEgY29udGV4dCBjb3VsZCBiZSB0aGUgc2FtZSwgeWV0IHRoZSBidWlsZGVyJ3NcbiAgICogY29udGV4dCBjb3VsZCBiZSBkaWZmZXJlbnQuIFRoaXMgaXMgdGhlIHNhbWUgSUQgYXMgdGhlIGNvcnJlc3BvbmRpbmcgcnVuLlxuICAgKi9cbiAgaWQ6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGJ1aWxkZXIgaW5mbyB0aGF0IGNhbGxlZCB5b3VyIGZ1bmN0aW9uLiBTaW5jZSB0aGUgYnVpbGRlciBpbmZvIGlzIGZyb20gdGhlIGJ1aWxkZXIuanNvblxuICAgKiAob3IgdGhlIGhvc3QpLCBpdCBjb3VsZCBjb250YWluIGluZm9ybWF0aW9uIHRoYXQgaXMgZGlmZmVyZW50IHRoYW4gZXhwZWN0ZWQuXG4gICAqL1xuICBidWlsZGVyOiBCdWlsZGVySW5mbztcblxuICAvKipcbiAgICogQSBsb2dnZXIgdGhhdCBhcHBlbmRzIG1lc3NhZ2VzIHRvIGEgbG9nLiBUaGlzIGNvdWxkIGJlIGEgc2VwYXJhdGUgaW50ZXJmYWNlIG9yIGNvbXBsZXRlbHlcbiAgICogaWdub3JlZC4gYGNvbnNvbGUubG9nYCBjb3VsZCBhbHNvIGJlIGNvbXBsZXRlbHkgaWdub3JlZC5cbiAgICovXG4gIGxvZ2dlcjogbG9nZ2luZy5Mb2dnZXJBcGk7XG5cbiAgLyoqXG4gICAqIFRoZSBhYnNvbHV0ZSB3b3Jrc3BhY2Ugcm9vdCBvZiB0aGlzIHJ1bi4gVGhpcyBpcyBhIHN5c3RlbSBwYXRoIGFuZCB3aWxsIG5vdCBiZSBub3JtYWxpemVkO1xuICAgKiBpZS4gb24gV2luZG93cyBpdCB3aWxsIHN0YXJ0cyB3aXRoIGBDOlxcXFxgIChvciB3aGF0ZXZlciBkcml2ZSkuXG4gICAqL1xuICB3b3Jrc3BhY2VSb290OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGRpcmVjdG9yeSB0aGUgdXNlciBpcyBpbi4gVGhpcyBjb3VsZCBiZSBvdXRzaWRlIHRoZSB3b3Jrc3BhY2Ugcm9vdC4gVGhpcyBpcyBhXG4gICAqIHN5c3RlbSBwYXRoIGFuZCB3aWxsIG5vdCBiZSBub3JtYWxpemVkOyBpZS4gb24gV2luZG93cyBpdCB3aWxsIHN0YXJ0cyB3aXRoIGBDOlxcXFxgIChvclxuICAgKiB3aGF0ZXZlciBkcml2ZSkuXG4gICAqL1xuICBjdXJyZW50RGlyZWN0b3J5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQgdGhhdCB3YXMgdXNlZCB0byBydW4gdGhpcyBidWlsZGVyLlxuICAgKiBUYXJnZXQgaXMgb3B0aW9uYWwgaWYgYSBidWlsZGVyIHdhcyByYW4gdXNpbmcgYHNjaGVkdWxlQnVpbGRlcigpYC5cbiAgICovXG4gIHRhcmdldD86IFRhcmdldDtcblxuICAvKipcbiAgICogU2NoZWR1bGUgYSB0YXJnZXQgaW4gdGhlIHNhbWUgd29ya3NwYWNlLiBUaGlzIGNhbiBiZSB0aGUgc2FtZSB0YXJnZXQgdGhhdCBpcyBiZWluZyBleGVjdXRlZFxuICAgKiByaWdodCBub3csIGJ1dCB0YXJnZXRzIG9mIHRoZSBzYW1lIG5hbWUgYXJlIHNlcmlhbGl6ZWQuXG4gICAqIFJ1bm5pbmcgdGhlIHNhbWUgdGFyZ2V0IGFuZCB3YWl0aW5nIGZvciBpdCB0byBlbmQgd2lsbCByZXN1bHQgaW4gYSBkZWFkbG9ja2luZyBzY2VuYXJpby5cbiAgICogVGFyZ2V0cyBhcmUgY29uc2lkZXJlZCB0aGUgc2FtZSBpZiB0aGUgcHJvamVjdCwgdGhlIHRhcmdldCBBTkQgdGhlIGNvbmZpZ3VyYXRpb24gYXJlIHRoZSBzYW1lLlxuICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgdG8gc2NoZWR1bGUuXG4gICAqIEBwYXJhbSBvdmVycmlkZXMgQSBzZXQgb2Ygb3B0aW9ucyB0byBvdmVycmlkZSB0aGUgd29ya3NwYWNlIHNldCBvZiBvcHRpb25zLlxuICAgKiBAcGFyYW0gc2NoZWR1bGVPcHRpb25zIEFkZGl0aW9uYWwgb3B0aW9uYWwgc2NoZWR1bGluZyBvcHRpb25zLlxuICAgKiBAcmV0dXJuIEEgcHJvbWlzZSBvZiBhIHJ1bi4gSXQgd2lsbCByZXNvbHZlIHdoZW4gYWxsIHRoZSBtZW1iZXJzIG9mIHRoZSBydW4gYXJlIGF2YWlsYWJsZS5cbiAgICovXG4gIHNjaGVkdWxlVGFyZ2V0KFxuICAgIHRhcmdldDogVGFyZ2V0LFxuICAgIG92ZXJyaWRlcz86IGpzb24uSnNvbk9iamVjdCxcbiAgICBzY2hlZHVsZU9wdGlvbnM/OiBTY2hlZHVsZU9wdGlvbnMsXG4gICk6IFByb21pc2U8QnVpbGRlclJ1bj47XG5cbiAgLyoqXG4gICAqIFNjaGVkdWxlIGEgYnVpbGRlciBieSBpdHMgbmFtZS4gVGhpcyBjYW4gYmUgdGhlIHNhbWUgYnVpbGRlciB0aGF0IGlzIGJlaW5nIGV4ZWN1dGVkLlxuICAgKiBAcGFyYW0gYnVpbGRlck5hbWUgVGhlIG5hbWUgb2YgdGhlIGJ1aWxkZXIsIGllLiBpdHMgYHBhY2thZ2VOYW1lOmJ1aWxkZXJOYW1lYCB0dXBsZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgQWxsIG9wdGlvbnMgdG8gdXNlIGZvciB0aGUgYnVpbGRlciAoYnkgZGVmYXVsdCBlbXB0eSBvYmplY3QpLiBUaGVyZSBpcyBub1xuICAgKiAgICAgYWRkaXRpb25hbCBvcHRpb25zIGFkZGVkLCBlLmcuIGZyb20gdGhlIHdvcmtzcGFjZS5cbiAgICogQHBhcmFtIHNjaGVkdWxlT3B0aW9ucyBBZGRpdGlvbmFsIG9wdGlvbmFsIHNjaGVkdWxpbmcgb3B0aW9ucy5cbiAgICogQHJldHVybiBBIHByb21pc2Ugb2YgYSBydW4uIEl0IHdpbGwgcmVzb2x2ZSB3aGVuIGFsbCB0aGUgbWVtYmVycyBvZiB0aGUgcnVuIGFyZSBhdmFpbGFibGUuXG4gICAqL1xuICBzY2hlZHVsZUJ1aWxkZXIoXG4gICAgYnVpbGRlck5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzoganNvbi5Kc29uT2JqZWN0LFxuICAgIHNjaGVkdWxlT3B0aW9ucz86IFNjaGVkdWxlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxCdWlsZGVyUnVuPjtcblxuICAvKipcbiAgICogUmVzb2x2ZSBhbmQgcmV0dXJuIG9wdGlvbnMgZm9yIGEgc3BlY2lmaWVkIHRhcmdldC4gSWYgdGhlIHRhcmdldCBpc24ndCBkZWZpbmVkIGluIHRoZVxuICAgKiB3b3Jrc3BhY2UgdGhpcyB3aWxsIHJlamVjdCB0aGUgcHJvbWlzZS4gVGhpcyBvYmplY3Qgd2lsbCBiZSByZWFkIGRpcmVjdGx5IGZyb20gdGhlIHdvcmtzcGFjZVxuICAgKiBidXQgbm90IHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBidWlsZGVyIG9mIHRoZSB0YXJnZXQuXG4gICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCB0byByZXNvbHZlIHRoZSBvcHRpb25zIG9mLlxuICAgKiBAcmV0dXJuIEEgbm9uLXZhbGlkYXRlZCBvYmplY3QgcmVzb2x2ZWQgZnJvbSB0aGUgd29ya3NwYWNlLlxuICAgKi9cbiAgZ2V0VGFyZ2V0T3B0aW9ucyh0YXJnZXQ6IFRhcmdldCk6IFByb21pc2U8anNvbi5Kc29uT2JqZWN0PjtcblxuICBnZXRQcm9qZWN0TWV0YWRhdGEocHJvamVjdE5hbWU6IHN0cmluZyk6IFByb21pc2U8anNvbi5Kc29uT2JqZWN0PjtcbiAgZ2V0UHJvamVjdE1ldGFkYXRhKHRhcmdldDogVGFyZ2V0KTogUHJvbWlzZTxqc29uLkpzb25PYmplY3Q+O1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhbmQgcmV0dXJuIGEgYnVpbGRlciBuYW1lLiBUaGUgZXhhY3QgZm9ybWF0IG9mIHRoZSBuYW1lIGlzIHVwIHRvIHRoZSBob3N0LFxuICAgKiBzbyBpdCBzaG91bGQgbm90IGJlIHBhcnNlZCB0byBnYXRoZXIgaW5mb3JtYXRpb24gKGl0J3MgZnJlZSBmb3JtKS4gVGhpcyBzdHJpbmcgY2FuIGJlXG4gICAqIHVzZWQgdG8gdmFsaWRhdGUgb3B0aW9ucyBvciBzY2hlZHVsZSBhIGJ1aWxkZXIgZGlyZWN0bHkuXG4gICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCB0byByZXNvbHZlIHRoZSBidWlsZGVyIG5hbWUuXG4gICAqL1xuICBnZXRCdWlsZGVyTmFtZUZvclRhcmdldCh0YXJnZXQ6IFRhcmdldCk6IFByb21pc2U8c3RyaW5nPjtcblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBvcHRpb25zIGFnYWluc3QgYSBidWlsZGVyIHNjaGVtYS4gVGhpcyB1c2VzIHRoZSBzYW1lIG1ldGhvZHMgYXMgdGhlXG4gICAqIHNjaGVkdWxlVGFyZ2V0IGFuZCBzY2hlZHVsZUJyb3dzZXIgbWV0aG9kcyB0byB2YWxpZGF0ZSBhbmQgYXBwbHkgZGVmYXVsdHMgdG8gdGhlIG9wdGlvbnMuXG4gICAqIEl0IGNhbiBiZSBnZW5lcmljYWxseSB0eXBlZCwgaWYgeW91IGtub3cgd2hpY2ggaW50ZXJmYWNlIGl0IGlzIHN1cHBvc2VkIHRvIHZhbGlkYXRlIGFnYWluc3QuXG4gICAqIEBwYXJhbSBvcHRpb25zIEEgZ2VuZXJpYyBvcHRpb24gb2JqZWN0IHRvIHZhbGlkYXRlLlxuICAgKiBAcGFyYW0gYnVpbGRlck5hbWUgVGhlIG5hbWUgb2YgYSBidWlsZGVyIHRvIHVzZS4gVGhpcyBjYW4gYmUgZ290dGVuIGZvciBhIHRhcmdldCBieSB1c2luZyB0aGVcbiAgICogICAgICAgICAgICAgICAgICAgIGdldEJ1aWxkZXJGb3JUYXJnZXQoKSBtZXRob2Qgb24gdGhlIGNvbnRleHQuXG4gICAqL1xuICB2YWxpZGF0ZU9wdGlvbnM8VCBleHRlbmRzIGpzb24uSnNvbk9iamVjdCA9IGpzb24uSnNvbk9iamVjdD4oXG4gICAgb3B0aW9uczoganNvbi5Kc29uT2JqZWN0LFxuICAgIGJ1aWxkZXJOYW1lOiBzdHJpbmcsXG4gICk6IFByb21pc2U8VD47XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgYnVpbGRlciB0byBydW5uaW5nLiBUaGlzIHNob3VsZCBiZSB1c2VkIGlmIGFuIGV4dGVybmFsIGV2ZW50IHRyaWdnZXJlZCBhIHJlLXJ1bixcbiAgICogZS5nLiBhIGZpbGUgd2F0Y2hlZCB3YXMgY2hhbmdlZC5cbiAgICovXG4gIHJlcG9ydFJ1bm5pbmcoKTogdm9pZDtcblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBzdGF0dXMgc3RyaW5nIHNob3duIG9uIHRoZSBpbnRlcmZhY2UuXG4gICAqIEBwYXJhbSBzdGF0dXMgVGhlIHN0YXR1cyB0byBzZXQgaXQgdG8uIEFuIGVtcHR5IHN0cmluZyBjYW4gYmUgdXNlZCB0byByZW1vdmUgdGhlIHN0YXR1cy5cbiAgICovXG4gIHJlcG9ydFN0YXR1cyhzdGF0dXM6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcHJvZ3Jlc3MgZm9yIHRoaXMgYnVpbGRlciBydW4uXG4gICAqIEBwYXJhbSBjdXJyZW50IFRoZSBjdXJyZW50IHByb2dyZXNzLiBUaGlzIHdpbGwgYmUgYmV0d2VlbiAwIGFuZCB0b3RhbC5cbiAgICogQHBhcmFtIHRvdGFsIEEgbmV3IHRvdGFsIHRvIHNldC4gQnkgZGVmYXVsdCBhdCB0aGUgc3RhcnQgb2YgYSBydW4gdGhpcyBpcyAxLiBJZiBvbWl0dGVkIGl0XG4gICAqICAgICB3aWxsIHVzZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgbGFzdCB0b3RhbC5cbiAgICogQHBhcmFtIHN0YXR1cyBVcGRhdGUgdGhlIHN0YXR1cyBzdHJpbmcuIElmIG9taXR0ZWQgdGhlIHN0YXR1cyBzdHJpbmcgaXMgbm90IG1vZGlmaWVkLlxuICAgKi9cbiAgcmVwb3J0UHJvZ3Jlc3MoY3VycmVudDogbnVtYmVyLCB0b3RhbD86IG51bWJlciwgc3RhdHVzPzogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogQWRkIHRlYXJkb3duIGxvZ2ljIHRvIHRoaXMgQ29udGV4dCwgc28gdGhhdCB3aGVuIGl0J3MgYmVpbmcgc3RvcHBlZCBpdCB3aWxsIGV4ZWN1dGUgdGVhcmRvd24uXG4gICAqL1xuICBhZGRUZWFyZG93bih0ZWFyZG93bjogKCkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQpOiB2b2lkO1xufVxuXG4vKipcbiAqIEFuIGFjY2VwdGVkIHJldHVybiB2YWx1ZSBmcm9tIGEgYnVpbGRlci4gQ2FuIGJlIGVpdGhlciBhbiBPYnNlcnZhYmxlLCBhIFByb21pc2Ugb3IgYSB2ZWN0b3IuXG4gKi9cbmV4cG9ydCB0eXBlIEJ1aWxkZXJPdXRwdXRMaWtlID1cbiAgfCBBc3luY0l0ZXJhYmxlPEJ1aWxkZXJPdXRwdXQ+XG4gIHwgU3Vic2NyaWJhYmxlT3JQcm9taXNlPEJ1aWxkZXJPdXRwdXQ+XG4gIHwgQnVpbGRlck91dHB1dDtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiBpc0J1aWxkZXJPdXRwdXQob2JqOiBhbnkpOiBvYmogaXMgQnVpbGRlck91dHB1dCB7XG4gIGlmICghb2JqIHx8IHR5cGVvZiBvYmoudGhlbiA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2Ygb2JqLnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0eXBlb2Ygb2JqLnN1Y2Nlc3MgPT09ICdib29sZWFuJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21Bc3luY0l0ZXJhYmxlPFQ+KGl0ZXJhYmxlOiBBc3luY0l0ZXJhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcikgPT4ge1xuICAgIGhhbmRsZUFzeW5jSXRlcmF0b3Ioc3Vic2NyaWJlciwgaXRlcmFibGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkpLnRoZW4oXG4gICAgICAoKSA9PiBzdWJzY3JpYmVyLmNvbXBsZXRlKCksXG4gICAgICAoZXJyb3IpID0+IHN1YnNjcmliZXIuZXJyb3IoZXJyb3IpLFxuICAgICk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVBc3luY0l0ZXJhdG9yPFQ+KFxuICBzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPFQ+LFxuICBpdGVyYXRvcjogQXN5bmNJdGVyYXRvcjxUPixcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB0ZWFyZG93biA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiBzdWJzY3JpYmVyLmFkZCgoKSA9PiByZXNvbHZlKCkpKTtcblxuICB0cnkge1xuICAgIHdoaWxlICghc3Vic2NyaWJlci5jbG9zZWQpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UucmFjZShbdGVhcmRvd24sIGl0ZXJhdG9yLm5leHQoKV0pO1xuICAgICAgaWYgKCFyZXN1bHQgfHwgcmVzdWx0LmRvbmUpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHN1YnNjcmliZXIubmV4dChyZXN1bHQudmFsdWUpO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBpdGVyYXRvci5yZXR1cm4/LigpO1xuICB9XG59XG5cbi8qKlxuICogQSBidWlsZGVyIGhhbmRsZXIgZnVuY3Rpb24uIFRoZSBmdW5jdGlvbiBzaWduYXR1cmUgcGFzc2VkIHRvIGBjcmVhdGVCdWlsZGVyKClgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXJIYW5kbGVyRm48QT4ge1xuICAvKipcbiAgICogQnVpbGRlcnMgYXJlIGRlZmluZWQgYnkgdXNlcnMgdG8gcGVyZm9ybSBhbnkga2luZCBvZiB0YXNrLCBsaWtlIGJ1aWxkaW5nLCB0ZXN0aW5nIG9yIGxpbnRpbmcsXG4gICAqIGFuZCBzaG91bGQgdXNlIHRoaXMgaW50ZXJmYWNlLlxuICAgKiBAcGFyYW0gaW5wdXQgVGhlIG9wdGlvbnMgKGEgSnNvbk9iamVjdCksIHZhbGlkYXRlZCBieSB0aGUgc2NoZW1hIGFuZCByZWNlaXZlZCBieSB0aGVcbiAgICogICAgIGJ1aWxkZXIuIFRoaXMgY2FuIGluY2x1ZGUgcmVzb2x2ZWQgb3B0aW9ucyBmcm9tIHRoZSBDTEkgb3IgdGhlIHdvcmtzcGFjZS5cbiAgICogQHBhcmFtIGNvbnRleHQgQSBjb250ZXh0IHRoYXQgY2FuIGJlIHVzZWQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgQXJjaGl0ZWN0IGZyYW1ld29yay5cbiAgICogQHJldHVybiBPbmUgb3IgbWFueSBidWlsZGVyIG91dHB1dC5cbiAgICovXG4gIChpbnB1dDogQSwgY29udGV4dDogQnVpbGRlckNvbnRleHQpOiBCdWlsZGVyT3V0cHV0TGlrZTtcbn1cblxuLyoqXG4gKiBBIEJ1aWxkZXIgZ2VuZXJhbCBpbmZvcm1hdGlvbi4gVGhpcyBpcyBnZW5lcmF0ZWQgYnkgdGhlIGhvc3QgYW5kIGlzIGV4cGFuZGVkIGJ5IHRoZSBob3N0LCBidXRcbiAqIHRoZSBwdWJsaWMgQVBJIGNvbnRhaW5zIHRob3NlIGZpZWxkcy5cbiAqL1xuZXhwb3J0IHR5cGUgQnVpbGRlckluZm8gPSBqc29uLkpzb25PYmplY3QgJiB7XG4gIGJ1aWxkZXJOYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIG9wdGlvblNjaGVtYToganNvbi5zY2hlbWEuSnNvblNjaGVtYTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhIHN0cmluZyBvZiBcInByb2plY3Q6dGFyZ2V0Wzpjb25maWd1cmF0aW9uXVwiIGZvciB0aGUgdGFyZ2V0IG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRhcmdldFN0cmluZ0Zyb21UYXJnZXQoeyBwcm9qZWN0LCB0YXJnZXQsIGNvbmZpZ3VyYXRpb24gfTogVGFyZ2V0KSB7XG4gIHJldHVybiBgJHtwcm9qZWN0fToke3RhcmdldH0ke2NvbmZpZ3VyYXRpb24gIT09IHVuZGVmaW5lZCA/ICc6JyArIGNvbmZpZ3VyYXRpb24gOiAnJ31gO1xufVxuXG4vKipcbiAqIFJldHVybiBhIFRhcmdldCB0dXBsZSBmcm9tIGEgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdGFyZ2V0RnJvbVRhcmdldFN0cmluZyhzdHI6IHN0cmluZyk6IFRhcmdldCB7XG4gIGNvbnN0IHR1cGxlID0gc3RyLnNwbGl0KC86LywgMyk7XG4gIGlmICh0dXBsZS5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRhcmdldCBzdHJpbmc6ICcgKyBKU09OLnN0cmluZ2lmeShzdHIpKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcHJvamVjdDogdHVwbGVbMF0sXG4gICAgdGFyZ2V0OiB0dXBsZVsxXSxcbiAgICAuLi4odHVwbGVbMl0gIT09IHVuZGVmaW5lZCAmJiB7IGNvbmZpZ3VyYXRpb246IHR1cGxlWzJdIH0pLFxuICB9O1xufVxuXG4vKipcbiAqIFNjaGVkdWxlIGEgdGFyZ2V0LCBhbmQgZm9yZ2V0IGFib3V0IGl0cyBydW4uIFRoaXMgd2lsbCByZXR1cm4gYW4gb2JzZXJ2YWJsZSBvZiBvdXRwdXRzLCB0aGF0XG4gKiBhcyBhIGEgdGVhcmRvd24gd2lsbCBzdG9wIHRoZSB0YXJnZXQgZnJvbSBydW5uaW5nLiBUaGlzIG1lYW5zIHRoYXQgdGhlIFJ1biBvYmplY3QgdGhpcyByZXR1cm5zXG4gKiBzaG91bGQgbm90IGJlIHNoYXJlZC5cbiAqXG4gKiBUaGUgcmVhc29uIHRoaXMgaXMgbm90IHBhcnQgb2YgdGhlIENvbnRleHQgaW50ZXJmYWNlIGlzIHRvIGtlZXAgdGhlIENvbnRleHQgYXMgbm9ybWFsIGZvcm0gYXNcbiAqIHBvc3NpYmxlLiBUaGlzIGlzIHJlYWxseSBhbiB1dGlsaXR5IHRoYXQgcGVvcGxlIHdvdWxkIGltcGxlbWVudCBpbiB0aGVpciBwcm9qZWN0LlxuICpcbiAqIEBwYXJhbSBjb250ZXh0IFRoZSBjb250ZXh0IG9mIHlvdXIgY3VycmVudCBleGVjdXRpb24uXG4gKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgdG8gc2NoZWR1bGUuXG4gKiBAcGFyYW0gb3ZlcnJpZGVzIE92ZXJyaWRlcyB0aGF0IGFyZSB1c2VkIGluIHRoZSB0YXJnZXQuXG4gKiBAcGFyYW0gc2NoZWR1bGVPcHRpb25zIEFkZGl0aW9uYWwgc2NoZWR1bGluZyBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2NoZWR1bGVUYXJnZXRBbmRGb3JnZXQoXG4gIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0LFxuICB0YXJnZXQ6IFRhcmdldCxcbiAgb3ZlcnJpZGVzPzoganNvbi5Kc29uT2JqZWN0LFxuICBzY2hlZHVsZU9wdGlvbnM/OiBTY2hlZHVsZU9wdGlvbnMsXG4pOiBPYnNlcnZhYmxlPEJ1aWxkZXJPdXRwdXQ+IHtcbiAgbGV0IHJlc29sdmU6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHIpID0+IChyZXNvbHZlID0gcikpO1xuICBjb250ZXh0LmFkZFRlYXJkb3duKCgpID0+IHByb21pc2UpO1xuXG4gIHJldHVybiBmcm9tKGNvbnRleHQuc2NoZWR1bGVUYXJnZXQodGFyZ2V0LCBvdmVycmlkZXMsIHNjaGVkdWxlT3B0aW9ucykpLnBpcGUoXG4gICAgc3dpdGNoTWFwKFxuICAgICAgKHJ1bikgPT5cbiAgICAgICAgbmV3IE9ic2VydmFibGU8QnVpbGRlck91dHB1dD4oKG9ic2VydmVyKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gcnVuLm91dHB1dC5zdWJzY3JpYmUob2JzZXJ2ZXIpO1xuXG4gICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgLy8gV2UgY2FuIHByb3Blcmx5IGlnbm9yZSB0aGUgZmxvYXRpbmcgcHJvbWlzZSBhcyBpdCdzIGEgXCJyZXZlcnNlXCIgcHJvbWlzZTsgdGhlIHRlYXJkb3duXG4gICAgICAgICAgICAvLyBpcyB3YWl0aW5nIGZvciB0aGUgcmVzb2x2ZS5cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICAgICAgICAgIHJ1bi5zdG9wKCkudGhlbihyZXNvbHZlKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9KSxcbiAgICApLFxuICApO1xufVxuIl19
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYXJjaGl0ZWN0L3NyYy9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBR0gsK0JBQWdGO0FBSWhGLHVEQUFpRztBQUd4RixxR0FIUyx1QkFBb0IsT0FHVDtBQWlQN0IsOERBQThEO0FBQzlELFNBQWdCLGVBQWUsQ0FBQyxHQUFRO0lBQ3RDLElBQUksQ0FBQyxHQUFHLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxPQUFPLEdBQUcsQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFO1FBQ2pGLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxJQUFJLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxVQUFVLEVBQUU7UUFDbkQsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELE9BQU8sT0FBTyxHQUFHLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQztBQUMxQyxDQUFDO0FBVkQsMENBVUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBSSxRQUEwQjtJQUM3RCxPQUFPLElBQUksaUJBQVUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1FBQ25DLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3BFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFDM0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQ25DLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFQRCw4Q0FPQztBQUVELEtBQUssVUFBVSxtQkFBbUIsQ0FDaEMsVUFBeUIsRUFDekIsUUFBMEI7SUFFMUIsTUFBTSxRQUFR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LCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsganNvbiwgbG9nZ2luZyB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIE9ic2VydmFibGVJbnB1dCwgU3Vic2NyaWJlciwgZnJvbSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTY2hlbWEgYXMgUmVhbEJ1aWxkZXJJbnB1dCwgVGFyZ2V0IGFzIFJlYWxUYXJnZXQgfSBmcm9tICcuL2lucHV0LXNjaGVtYSc7XG5pbXBvcnQgeyBSZWdpc3RyeSB9IGZyb20gJy4vam9icyc7XG5pbXBvcnQgeyBTY2hlbWEgYXMgUmVhbEJ1aWxkZXJPdXRwdXQgfSBmcm9tICcuL291dHB1dC1zY2hlbWEnO1xuaW1wb3J0IHsgU3RhdGUgYXMgQnVpbGRlclByb2dyZXNzU3RhdGUsIFNjaGVtYSBhcyBSZWFsQnVpbGRlclByb2dyZXNzIH0gZnJvbSAnLi9wcm9ncmVzcy1zY2hlbWEnO1xuXG5leHBvcnQgdHlwZSBUYXJnZXQgPSBqc29uLkpzb25PYmplY3QgJiBSZWFsVGFyZ2V0O1xuZXhwb3J0IHsgQnVpbGRlclByb2dyZXNzU3RhdGUgfTtcblxuLy8gVHlwZSBzaG9ydCBoYW5kcy5cbmV4cG9ydCB0eXBlIEJ1aWxkZXJSZWdpc3RyeSA9IFJlZ2lzdHJ5PGpzb24uSnNvbk9iamVjdCwgQnVpbGRlcklucHV0LCBCdWlsZGVyT3V0cHV0PjtcblxuLyoqXG4gKiBBbiBBUEkgdHlwZWQgQnVpbGRlclByb2dyZXNzLiBUaGUgaW50ZXJmYWNlIGdlbmVyYXRlZCBmcm9tIHRoZSBzY2hlbWEgaXMgdG9vIHBlcm1pc3NpdmUsXG4gKiBzbyB0aGlzIEFQSSBpcyB0aGUgb25lIHdlIHNob3cgaW4gb3VyIEFQSS4gUGxlYXNlIG5vdGUgdGhhdCBub3QgYWxsIGZpZWxkcyBhcmUgaW4gdGhlcmU7IHRoaXNcbiAqIGlzIGluIGFkZGl0aW9uIHRvIGZpZWxkcyBpbiB0aGUgc2NoZW1hLlxuICovXG5leHBvcnQgdHlwZSBUeXBlZEJ1aWxkZXJQcm9ncmVzcyA9XG4gIHwgeyBzdGF0ZTogQnVpbGRlclByb2dyZXNzU3RhdGUuU3RvcHBlZCB9XG4gIHwgeyBzdGF0ZTogQnVpbGRlclByb2dyZXNzU3RhdGUuRXJyb3I7IGVycm9yOiBqc29uLkpzb25WYWx1ZSB9XG4gIHwgeyBzdGF0ZTogQnVpbGRlclByb2dyZXNzU3RhdGUuV2FpdGluZzsgc3RhdHVzPzogc3RyaW5nIH1cbiAgfCB7IHN0YXRlOiBCdWlsZGVyUHJvZ3Jlc3NTdGF0ZS5SdW5uaW5nOyBzdGF0dXM/OiBzdHJpbmc7IGN1cnJlbnQ6IG51bWJlcjsgdG90YWw/OiBudW1iZXIgfTtcblxuLyoqXG4gKiBEZWNsYXJhdGlvbiBvZiB0aG9zZSB0eXBlcyBhcyBKc29uT2JqZWN0IGNvbXBhdGlibGUuIEpzb25PYmplY3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aFxuICogb3B0aW9uYWwgbWVtYmVycywgc28gdGhvc2Ugd291bGRuJ3QgYmUgZGlyZWN0bHkgYXNzaWduYWJsZSB0byBvdXIgaW50ZXJuYWwgSnNvbiB0eXBpbmdzLlxuICogRm9yY2luZyB0aGUgdHlwZSB0byBiZSBib3RoIGEgSnNvbk9iamVjdCBhbmQgdGhlIHR5cGUgZnJvbSB0aGUgU2NoZW1hIHRlbGxzIFR5cGVzY3JpcHQgdGhleVxuICogYXJlIGNvbXBhdGlibGUgKHdoaWNoIHRoZXkgYXJlKS5cbiAqIFRoZXNlIHR5cGVzIHNob3VsZCBiZSB1c2VkIGV2ZXJ5d2hlcmUuXG4gKi9cbmV4cG9ydCB0eXBlIEJ1aWxkZXJJbnB1dCA9IGpzb24uSnNvbk9iamVjdCAmIFJlYWxCdWlsZGVySW5wdXQ7XG5leHBvcnQgdHlwZSBCdWlsZGVyT3V0cHV0ID0ganNvbi5Kc29uT2JqZWN0ICYgUmVhbEJ1aWxkZXJPdXRwdXQ7XG5leHBvcnQgdHlwZSBCdWlsZGVyUHJvZ3Jlc3MgPSBqc29uLkpzb25PYmplY3QgJiBSZWFsQnVpbGRlclByb2dyZXNzICYgVHlwZWRCdWlsZGVyUHJvZ3Jlc3M7XG5cbi8qKlxuICogQSBwcm9ncmVzcyByZXBvcnQgaXMgd2hhdCB0aGUgdG9vbGluZyB3aWxsIHJlY2VpdmUuIEl0IGNvbnRhaW5zIHRoZSBidWlsZGVyIGluZm8gYW5kIHRoZSB0YXJnZXQuXG4gKiBBbHRob3VnaCB0aGVzZSBhcmUgc2VyaWFsaXphYmxlLCB0aGV5IGFyZSBvbmx5IGV4cG9zZWQgdGhyb3VnaCB0aGUgdG9vbGluZyBpbnRlcmZhY2UsIG5vdCB0aGVcbiAqIGJ1aWxkZXIgaW50ZXJmYWNlLiBUaGUgd2F0Y2ggZG9nIHNlbmRzIEJ1aWxkZXJQcm9ncmVzcyBhbmQgdGhlIEJ1aWxkZXIgaGFzIGEgc2V0IG9mIGZ1bmN0aW9uc1xuICogdG8gbWFuYWdlIHRoZSBzdGF0ZS5cbiAqL1xuZXhwb3J0IHR5cGUgQnVpbGRlclByb2dyZXNzUmVwb3J0ID0gQnVpbGRlclByb2dyZXNzICYge1xuICB0YXJnZXQ/OiBUYXJnZXQ7XG4gIGJ1aWxkZXI6IEJ1aWxkZXJJbmZvO1xufTtcblxuLyoqXG4gKiBBIFJ1biwgd2hpY2ggaXMgd2hhdCBpcyByZXR1cm5lZCBieSBzY2hlZHVsZUJ1aWxkZXIgb3Igc2NoZWR1bGVUYXJnZXQgZnVuY3Rpb25zLiBUaGlzIHNob3VsZFxuICogYmUgcmVjb25zdHJ1Y3RlZCBhY3Jvc3MgbWVtb3J5IGJvdW5kYXJpZXMgKGl0J3Mgbm90IHNlcmlhbGl6YWJsZSBidXQgYWxsIGludGVybmFsIGluZm9ybWF0aW9uXG4gKiBhcmUpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXJSdW4ge1xuICAvKipcbiAgICogVW5pcXVlIGFtb25nc3QgcnVucy4gVGhpcyBpcyB0aGUgc2FtZSBJRCBhcyB0aGUgY29udGV4dCBnZW5lcmF0ZWQgZm9yIHRoZSBydW4uIEl0IGNhbiBiZVxuICAgKiB1c2VkIHRvIGlkZW50aWZ5IG11bHRpcGxlIHVuaXF1ZSBydW5zLiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBhIHJ1biBpcyBhIHNpbmdsZSBvdXRwdXQ7XG4gICAqIGEgYnVpbGRlciBjYW4gcmVidWlsZCBvbiBpdHMgb3duIGFuZCB3aWxsIGdlbmVyYXRlIG11bHRpcGxlIG91dHB1dHMuXG4gICAqL1xuICBpZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgYnVpbGRlciBpbmZvcm1hdGlvbi5cbiAgICovXG4gIGluZm86IEJ1aWxkZXJJbmZvO1xuXG4gIC8qKlxuICAgKiBUaGUgbmV4dCBvdXRwdXQgZnJvbSBhIGJ1aWxkZXIuIFRoaXMgaXMgcmVjb21tZW5kZWQgd2hlbiBzY2hlZHVsaW5nIGEgYnVpbGRlciBhbmQgb25seSBiZWluZ1xuICAgKiBpbnRlcmVzdGVkIGluIHRoZSByZXN1bHQgb2YgdGhhdCBzaW5nbGUgcnVuLCBub3Qgb2YgYSB3YXRjaC1tb2RlIGJ1aWxkZXIuXG4gICAqL1xuICByZXN1bHQ6IFByb21pc2U8QnVpbGRlck91dHB1dD47XG5cbiAgLyoqXG4gICAqIFRoZSBsYXN0IG91dHB1dCBmcm9tIGEgYnVpbGRlci4gVGhpcyBpcyByZWNvbW1lbmRlZCB3aGVuIHNjaGVkdWxpbmcgYSBidWlsZGVyIGFuZCBvbmx5IGJlaW5nXG4gICAqIGludGVyZXN0ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGF0IGxhc3QgcnVuLlxuICAgKi9cbiAgbGFzdE91dHB1dDogUHJvbWlzZTxCdWlsZGVyT3V0cHV0PjtcblxuICAvKipcbiAgICogVGhlIG91dHB1dChzKSBmcm9tIHRoZSBidWlsZGVyLiBBIGJ1aWxkZXIgY2FuIGhhdmUgbXVsdGlwbGUgb3V0cHV0cy5cbiAgICogVGhpcyBhbHdheXMgcmVwbGF5IHRoZSBsYXN0IG91dHB1dCB3aGVuIHN1YnNjcmliZWQuXG4gICAqL1xuICBvdXRwdXQ6IE9ic2VydmFibGU8QnVpbGRlck91dHB1dD47XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9ncmVzcyByZXBvcnQuIEEgcHJvZ3Jlc3MgYWxzbyBjb250YWlucyBhbiBJRCwgd2hpY2ggY2FuIGJlIGRpZmZlcmVudCB0aGFuIHRoaXMgcnVuJ3NcbiAgICogSUQgKGlmIHRoZSBidWlsZGVyIGNhbGxzIHNjaGVkdWxlQnVpbGRlciBvciBzY2hlZHVsZVRhcmdldCkuXG4gICAqIFRoaXMgd2lsbCBhbHdheXMgcmVwbGF5IHRoZSBsYXN0IHByb2dyZXNzIG9uIG5ldyBzdWJzY3JpcHRpb25zLlxuICAgKi9cbiAgcHJvZ3Jlc3M6IE9ic2VydmFibGU8QnVpbGRlclByb2dyZXNzUmVwb3J0PjtcblxuICAvKipcbiAgICogU3RvcCB0aGUgYnVpbGRlciBmcm9tIHJ1bm5pbmcuIFJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYnVpbGRlciBpcyBzdG9wcGVkLlxuICAgKiBTb21lIGJ1aWxkZXJzIG1pZ2h0IG5vdCBoYW5kbGUgc3RvcHBpbmcgcHJvcGVybHkgYW5kIHNob3VsZCBoYXZlIGEgdGltZW91dCBoZXJlLlxuICAgKi9cbiAgc3RvcCgpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIEFkZGl0aW9uYWwgb3B0aW9uYWwgc2NoZWR1bGluZyBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBMb2dnZXIgdG8gcGFzcyB0byB0aGUgYnVpbGRlci4gTm90ZSB0aGF0IG1lc3NhZ2VzIHdpbGwgc3RvcCBiZWluZyBmb3J3YXJkZWQsIGFuZCBpZiB5b3Ugd2FudFxuICAgKiB0byBsb2cgYSBidWlsZGVyIHNjaGVkdWxlZCBmcm9tIHlvdXIgYnVpbGRlciB5b3Ugc2hvdWxkIGZvcndhcmQgbG9nIGV2ZW50cyB5b3Vyc2VsZi5cbiAgICovXG4gIGxvZ2dlcj86IGxvZ2dpbmcuTG9nZ2VyO1xuXG4gIC8qKlxuICAgKiBUYXJnZXQgdG8gcGFzcyB0byB0aGUgYnVpbGRlci5cbiAgICovXG4gIHRhcmdldD86IFRhcmdldDtcbn1cblxuLyoqXG4gKiBUaGUgY29udGV4dCByZWNlaXZlZCBhcyBhIHNlY29uZCBhcmd1bWVudCBpbiB5b3VyIGJ1aWxkZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRlckNvbnRleHQge1xuICAvKipcbiAgICogVW5pcXVlIGFtb25nc3QgY29udGV4dHMuIENvbnRleHRzIGluc3RhbmNlcyBhcmUgbm90IGd1YXJhbnRlZWQgdG8gYmUgdGhlIHNhbWUgKGJ1dCBpdCBjb3VsZFxuICAgKiBiZSB0aGUgc2FtZSBjb250ZXh0KSwgYW5kIGFsbCB0aGUgZmllbGRzIGluIGEgY29udGV4dCBjb3VsZCBiZSB0aGUgc2FtZSwgeWV0IHRoZSBidWlsZGVyJ3NcbiAgICogY29udGV4dCBjb3VsZCBiZSBkaWZmZXJlbnQuIFRoaXMgaXMgdGhlIHNhbWUgSUQgYXMgdGhlIGNvcnJlc3BvbmRpbmcgcnVuLlxuICAgKi9cbiAgaWQ6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGJ1aWxkZXIgaW5mbyB0aGF0IGNhbGxlZCB5b3VyIGZ1bmN0aW9uLiBTaW5jZSB0aGUgYnVpbGRlciBpbmZvIGlzIGZyb20gdGhlIGJ1aWxkZXIuanNvblxuICAgKiAob3IgdGhlIGhvc3QpLCBpdCBjb3VsZCBjb250YWluIGluZm9ybWF0aW9uIHRoYXQgaXMgZGlmZmVyZW50IHRoYW4gZXhwZWN0ZWQuXG4gICAqL1xuICBidWlsZGVyOiBCdWlsZGVySW5mbztcblxuICAvKipcbiAgICogQSBsb2dnZXIgdGhhdCBhcHBlbmRzIG1lc3NhZ2VzIHRvIGEgbG9nLiBUaGlzIGNvdWxkIGJlIGEgc2VwYXJhdGUgaW50ZXJmYWNlIG9yIGNvbXBsZXRlbHlcbiAgICogaWdub3JlZC4gYGNvbnNvbGUubG9nYCBjb3VsZCBhbHNvIGJlIGNvbXBsZXRlbHkgaWdub3JlZC5cbiAgICovXG4gIGxvZ2dlcjogbG9nZ2luZy5Mb2dnZXJBcGk7XG5cbiAgLyoqXG4gICAqIFRoZSBhYnNvbHV0ZSB3b3Jrc3BhY2Ugcm9vdCBvZiB0aGlzIHJ1bi4gVGhpcyBpcyBhIHN5c3RlbSBwYXRoIGFuZCB3aWxsIG5vdCBiZSBub3JtYWxpemVkO1xuICAgKiBpZS4gb24gV2luZG93cyBpdCB3aWxsIHN0YXJ0cyB3aXRoIGBDOlxcXFxgIChvciB3aGF0ZXZlciBkcml2ZSkuXG4gICAqL1xuICB3b3Jrc3BhY2VSb290OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGRpcmVjdG9yeSB0aGUgdXNlciBpcyBpbi4gVGhpcyBjb3VsZCBiZSBvdXRzaWRlIHRoZSB3b3Jrc3BhY2Ugcm9vdC4gVGhpcyBpcyBhXG4gICAqIHN5c3RlbSBwYXRoIGFuZCB3aWxsIG5vdCBiZSBub3JtYWxpemVkOyBpZS4gb24gV2luZG93cyBpdCB3aWxsIHN0YXJ0cyB3aXRoIGBDOlxcXFxgIChvclxuICAgKiB3aGF0ZXZlciBkcml2ZSkuXG4gICAqL1xuICBjdXJyZW50RGlyZWN0b3J5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQgdGhhdCB3YXMgdXNlZCB0byBydW4gdGhpcyBidWlsZGVyLlxuICAgKiBUYXJnZXQgaXMgb3B0aW9uYWwgaWYgYSBidWlsZGVyIHdhcyByYW4gdXNpbmcgYHNjaGVkdWxlQnVpbGRlcigpYC5cbiAgICovXG4gIHRhcmdldD86IFRhcmdldDtcblxuICAvKipcbiAgICogU2NoZWR1bGUgYSB0YXJnZXQgaW4gdGhlIHNhbWUgd29ya3NwYWNlLiBUaGlzIGNhbiBiZSB0aGUgc2FtZSB0YXJnZXQgdGhhdCBpcyBiZWluZyBleGVjdXRlZFxuICAgKiByaWdodCBub3csIGJ1dCB0YXJnZXRzIG9mIHRoZSBzYW1lIG5hbWUgYXJlIHNlcmlhbGl6ZWQuXG4gICAqIFJ1bm5pbmcgdGhlIHNhbWUgdGFyZ2V0IGFuZCB3YWl0aW5nIGZvciBpdCB0byBlbmQgd2lsbCByZXN1bHQgaW4gYSBkZWFkbG9ja2luZyBzY2VuYXJpby5cbiAgICogVGFyZ2V0cyBhcmUgY29uc2lkZXJlZCB0aGUgc2FtZSBpZiB0aGUgcHJvamVjdCwgdGhlIHRhcmdldCBBTkQgdGhlIGNvbmZpZ3VyYXRpb24gYXJlIHRoZSBzYW1lLlxuICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgdG8gc2NoZWR1bGUuXG4gICAqIEBwYXJhbSBvdmVycmlkZXMgQSBzZXQgb2Ygb3B0aW9ucyB0byBvdmVycmlkZSB0aGUgd29ya3NwYWNlIHNldCBvZiBvcHRpb25zLlxuICAgKiBAcGFyYW0gc2NoZWR1bGVPcHRpb25zIEFkZGl0aW9uYWwgb3B0aW9uYWwgc2NoZWR1bGluZyBvcHRpb25zLlxuICAgKiBAcmV0dXJuIEEgcHJvbWlzZSBvZiBhIHJ1bi4gSXQgd2lsbCByZXNvbHZlIHdoZW4gYWxsIHRoZSBtZW1iZXJzIG9mIHRoZSBydW4gYXJlIGF2YWlsYWJsZS5cbiAgICovXG4gIHNjaGVkdWxlVGFyZ2V0KFxuICAgIHRhcmdldDogVGFyZ2V0LFxuICAgIG92ZXJyaWRlcz86IGpzb24uSnNvbk9iamVjdCxcbiAgICBzY2hlZHVsZU9wdGlvbnM/OiBTY2hlZHVsZU9wdGlvbnMsXG4gICk6IFByb21pc2U8QnVpbGRlclJ1bj47XG5cbiAgLyoqXG4gICAqIFNjaGVkdWxlIGEgYnVpbGRlciBieSBpdHMgbmFtZS4gVGhpcyBjYW4gYmUgdGhlIHNhbWUgYnVpbGRlciB0aGF0IGlzIGJlaW5nIGV4ZWN1dGVkLlxuICAgKiBAcGFyYW0gYnVpbGRlck5hbWUgVGhlIG5hbWUgb2YgdGhlIGJ1aWxkZXIsIGllLiBpdHMgYHBhY2thZ2VOYW1lOmJ1aWxkZXJOYW1lYCB0dXBsZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgQWxsIG9wdGlvbnMgdG8gdXNlIGZvciB0aGUgYnVpbGRlciAoYnkgZGVmYXVsdCBlbXB0eSBvYmplY3QpLiBUaGVyZSBpcyBub1xuICAgKiAgICAgYWRkaXRpb25hbCBvcHRpb25zIGFkZGVkLCBlLmcuIGZyb20gdGhlIHdvcmtzcGFjZS5cbiAgICogQHBhcmFtIHNjaGVkdWxlT3B0aW9ucyBBZGRpdGlvbmFsIG9wdGlvbmFsIHNjaGVkdWxpbmcgb3B0aW9ucy5cbiAgICogQHJldHVybiBBIHByb21pc2Ugb2YgYSBydW4uIEl0IHdpbGwgcmVzb2x2ZSB3aGVuIGFsbCB0aGUgbWVtYmVycyBvZiB0aGUgcnVuIGFyZSBhdmFpbGFibGUuXG4gICAqL1xuICBzY2hlZHVsZUJ1aWxkZXIoXG4gICAgYnVpbGRlck5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzoganNvbi5Kc29uT2JqZWN0LFxuICAgIHNjaGVkdWxlT3B0aW9ucz86IFNjaGVkdWxlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxCdWlsZGVyUnVuPjtcblxuICAvKipcbiAgICogUmVzb2x2ZSBhbmQgcmV0dXJuIG9wdGlvbnMgZm9yIGEgc3BlY2lmaWVkIHRhcmdldC4gSWYgdGhlIHRhcmdldCBpc24ndCBkZWZpbmVkIGluIHRoZVxuICAgKiB3b3Jrc3BhY2UgdGhpcyB3aWxsIHJlamVjdCB0aGUgcHJvbWlzZS4gVGhpcyBvYmplY3Qgd2lsbCBiZSByZWFkIGRpcmVjdGx5IGZyb20gdGhlIHdvcmtzcGFjZVxuICAgKiBidXQgbm90IHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBidWlsZGVyIG9mIHRoZSB0YXJnZXQuXG4gICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCB0byByZXNvbHZlIHRoZSBvcHRpb25zIG9mLlxuICAgKiBAcmV0dXJuIEEgbm9uLXZhbGlkYXRlZCBvYmplY3QgcmVzb2x2ZWQgZnJvbSB0aGUgd29ya3NwYWNlLlxuICAgKi9cbiAgZ2V0VGFyZ2V0T3B0aW9ucyh0YXJnZXQ6IFRhcmdldCk6IFByb21pc2U8anNvbi5Kc29uT2JqZWN0PjtcblxuICBnZXRQcm9qZWN0TWV0YWRhdGEocHJvamVjdE5hbWU6IHN0cmluZyk6IFByb21pc2U8anNvbi5Kc29uT2JqZWN0PjtcbiAgZ2V0UHJvamVjdE1ldGFkYXRhKHRhcmdldDogVGFyZ2V0KTogUHJvbWlzZTxqc29uLkpzb25PYmplY3Q+O1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhbmQgcmV0dXJuIGEgYnVpbGRlciBuYW1lLiBUaGUgZXhhY3QgZm9ybWF0IG9mIHRoZSBuYW1lIGlzIHVwIHRvIHRoZSBob3N0LFxuICAgKiBzbyBpdCBzaG91bGQgbm90IGJlIHBhcnNlZCB0byBnYXRoZXIgaW5mb3JtYXRpb24gKGl0J3MgZnJlZSBmb3JtKS4gVGhpcyBzdHJpbmcgY2FuIGJlXG4gICAqIHVzZWQgdG8gdmFsaWRhdGUgb3B0aW9ucyBvciBzY2hlZHVsZSBhIGJ1aWxkZXIgZGlyZWN0bHkuXG4gICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCB0byByZXNvbHZlIHRoZSBidWlsZGVyIG5hbWUuXG4gICAqL1xuICBnZXRCdWlsZGVyTmFtZUZvclRhcmdldCh0YXJnZXQ6IFRhcmdldCk6IFByb21pc2U8c3RyaW5nPjtcblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBvcHRpb25zIGFnYWluc3QgYSBidWlsZGVyIHNjaGVtYS4gVGhpcyB1c2VzIHRoZSBzYW1lIG1ldGhvZHMgYXMgdGhlXG4gICAqIHNjaGVkdWxlVGFyZ2V0IGFuZCBzY2hlZHVsZUJyb3dzZXIgbWV0aG9kcyB0byB2YWxpZGF0ZSBhbmQgYXBwbHkgZGVmYXVsdHMgdG8gdGhlIG9wdGlvbnMuXG4gICAqIEl0IGNhbiBiZSBnZW5lcmljYWxseSB0eXBlZCwgaWYgeW91IGtub3cgd2hpY2ggaW50ZXJmYWNlIGl0IGlzIHN1cHBvc2VkIHRvIHZhbGlkYXRlIGFnYWluc3QuXG4gICAqIEBwYXJhbSBvcHRpb25zIEEgZ2VuZXJpYyBvcHRpb24gb2JqZWN0IHRvIHZhbGlkYXRlLlxuICAgKiBAcGFyYW0gYnVpbGRlck5hbWUgVGhlIG5hbWUgb2YgYSBidWlsZGVyIHRvIHVzZS4gVGhpcyBjYW4gYmUgZ290dGVuIGZvciBhIHRhcmdldCBieSB1c2luZyB0aGVcbiAgICogICAgICAgICAgICAgICAgICAgIGdldEJ1aWxkZXJGb3JUYXJnZXQoKSBtZXRob2Qgb24gdGhlIGNvbnRleHQuXG4gICAqL1xuICB2YWxpZGF0ZU9wdGlvbnM8VCBleHRlbmRzIGpzb24uSnNvbk9iamVjdCA9IGpzb24uSnNvbk9iamVjdD4oXG4gICAgb3B0aW9uczoganNvbi5Kc29uT2JqZWN0LFxuICAgIGJ1aWxkZXJOYW1lOiBzdHJpbmcsXG4gICk6IFByb21pc2U8VD47XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgYnVpbGRlciB0byBydW5uaW5nLiBUaGlzIHNob3VsZCBiZSB1c2VkIGlmIGFuIGV4dGVybmFsIGV2ZW50IHRyaWdnZXJlZCBhIHJlLXJ1bixcbiAgICogZS5nLiBhIGZpbGUgd2F0Y2hlZCB3YXMgY2hhbmdlZC5cbiAgICovXG4gIHJlcG9ydFJ1bm5pbmcoKTogdm9pZDtcblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBzdGF0dXMgc3RyaW5nIHNob3duIG9uIHRoZSBpbnRlcmZhY2UuXG4gICAqIEBwYXJhbSBzdGF0dXMgVGhlIHN0YXR1cyB0byBzZXQgaXQgdG8uIEFuIGVtcHR5IHN0cmluZyBjYW4gYmUgdXNlZCB0byByZW1vdmUgdGhlIHN0YXR1cy5cbiAgICovXG4gIHJlcG9ydFN0YXR1cyhzdGF0dXM6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcHJvZ3Jlc3MgZm9yIHRoaXMgYnVpbGRlciBydW4uXG4gICAqIEBwYXJhbSBjdXJyZW50IFRoZSBjdXJyZW50IHByb2dyZXNzLiBUaGlzIHdpbGwgYmUgYmV0d2VlbiAwIGFuZCB0b3RhbC5cbiAgICogQHBhcmFtIHRvdGFsIEEgbmV3IHRvdGFsIHRvIHNldC4gQnkgZGVmYXVsdCBhdCB0aGUgc3RhcnQgb2YgYSBydW4gdGhpcyBpcyAxLiBJZiBvbWl0dGVkIGl0XG4gICAqICAgICB3aWxsIHVzZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgbGFzdCB0b3RhbC5cbiAgICogQHBhcmFtIHN0YXR1cyBVcGRhdGUgdGhlIHN0YXR1cyBzdHJpbmcuIElmIG9taXR0ZWQgdGhlIHN0YXR1cyBzdHJpbmcgaXMgbm90IG1vZGlmaWVkLlxuICAgKi9cbiAgcmVwb3J0UHJvZ3Jlc3MoY3VycmVudDogbnVtYmVyLCB0b3RhbD86IG51bWJlciwgc3RhdHVzPzogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogQWRkIHRlYXJkb3duIGxvZ2ljIHRvIHRoaXMgQ29udGV4dCwgc28gdGhhdCB3aGVuIGl0J3MgYmVpbmcgc3RvcHBlZCBpdCB3aWxsIGV4ZWN1dGUgdGVhcmRvd24uXG4gICAqL1xuICBhZGRUZWFyZG93bih0ZWFyZG93bjogKCkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQpOiB2b2lkO1xufVxuXG4vKipcbiAqIEFuIGFjY2VwdGVkIHJldHVybiB2YWx1ZSBmcm9tIGEgYnVpbGRlci4gQ2FuIGJlIGVpdGhlciBhbiBPYnNlcnZhYmxlLCBhIFByb21pc2Ugb3IgYSB2ZWN0b3IuXG4gKi9cbmV4cG9ydCB0eXBlIEJ1aWxkZXJPdXRwdXRMaWtlID0gT2JzZXJ2YWJsZUlucHV0PEJ1aWxkZXJPdXRwdXQ+IHwgQnVpbGRlck91dHB1dDtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiBpc0J1aWxkZXJPdXRwdXQob2JqOiBhbnkpOiBvYmogaXMgQnVpbGRlck91dHB1dCB7XG4gIGlmICghb2JqIHx8IHR5cGVvZiBvYmoudGhlbiA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2Ygb2JqLnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0eXBlb2Ygb2JqLnN1Y2Nlc3MgPT09ICdib29sZWFuJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21Bc3luY0l0ZXJhYmxlPFQ+KGl0ZXJhYmxlOiBBc3luY0l0ZXJhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcikgPT4ge1xuICAgIGhhbmRsZUFzeW5jSXRlcmF0b3Ioc3Vic2NyaWJlciwgaXRlcmFibGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkpLnRoZW4oXG4gICAgICAoKSA9PiBzdWJzY3JpYmVyLmNvbXBsZXRlKCksXG4gICAgICAoZXJyb3IpID0+IHN1YnNjcmliZXIuZXJyb3IoZXJyb3IpLFxuICAgICk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVBc3luY0l0ZXJhdG9yPFQ+KFxuICBzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPFQ+LFxuICBpdGVyYXRvcjogQXN5bmNJdGVyYXRvcjxUPixcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB0ZWFyZG93biA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiBzdWJzY3JpYmVyLmFkZCgoKSA9PiByZXNvbHZlKCkpKTtcblxuICB0cnkge1xuICAgIHdoaWxlICghc3Vic2NyaWJlci5jbG9zZWQpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UucmFjZShbdGVhcmRvd24sIGl0ZXJhdG9yLm5leHQoKV0pO1xuICAgICAgaWYgKCFyZXN1bHQgfHwgcmVzdWx0LmRvbmUpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHN1YnNjcmliZXIubmV4dChyZXN1bHQudmFsdWUpO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBpdGVyYXRvci5yZXR1cm4/LigpO1xuICB9XG59XG5cbi8qKlxuICogQSBidWlsZGVyIGhhbmRsZXIgZnVuY3Rpb24uIFRoZSBmdW5jdGlvbiBzaWduYXR1cmUgcGFzc2VkIHRvIGBjcmVhdGVCdWlsZGVyKClgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXJIYW5kbGVyRm48QT4ge1xuICAvKipcbiAgICogQnVpbGRlcnMgYXJlIGRlZmluZWQgYnkgdXNlcnMgdG8gcGVyZm9ybSBhbnkga2luZCBvZiB0YXNrLCBsaWtlIGJ1aWxkaW5nLCB0ZXN0aW5nIG9yIGxpbnRpbmcsXG4gICAqIGFuZCBzaG91bGQgdXNlIHRoaXMgaW50ZXJmYWNlLlxuICAgKiBAcGFyYW0gaW5wdXQgVGhlIG9wdGlvbnMgKGEgSnNvbk9iamVjdCksIHZhbGlkYXRlZCBieSB0aGUgc2NoZW1hIGFuZCByZWNlaXZlZCBieSB0aGVcbiAgICogICAgIGJ1aWxkZXIuIFRoaXMgY2FuIGluY2x1ZGUgcmVzb2x2ZWQgb3B0aW9ucyBmcm9tIHRoZSBDTEkgb3IgdGhlIHdvcmtzcGFjZS5cbiAgICogQHBhcmFtIGNvbnRleHQgQSBjb250ZXh0IHRoYXQgY2FuIGJlIHVzZWQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgQXJjaGl0ZWN0IGZyYW1ld29yay5cbiAgICogQHJldHVybiBPbmUgb3IgbWFueSBidWlsZGVyIG91dHB1dC5cbiAgICovXG4gIChpbnB1dDogQSwgY29udGV4dDogQnVpbGRlckNvbnRleHQpOiBCdWlsZGVyT3V0cHV0TGlrZTtcbn1cblxuLyoqXG4gKiBBIEJ1aWxkZXIgZ2VuZXJhbCBpbmZvcm1hdGlvbi4gVGhpcyBpcyBnZW5lcmF0ZWQgYnkgdGhlIGhvc3QgYW5kIGlzIGV4cGFuZGVkIGJ5IHRoZSBob3N0LCBidXRcbiAqIHRoZSBwdWJsaWMgQVBJIGNvbnRhaW5zIHRob3NlIGZpZWxkcy5cbiAqL1xuZXhwb3J0IHR5cGUgQnVpbGRlckluZm8gPSBqc29uLkpzb25PYmplY3QgJiB7XG4gIGJ1aWxkZXJOYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIG9wdGlvblNjaGVtYToganNvbi5zY2hlbWEuSnNvblNjaGVtYTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhIHN0cmluZyBvZiBcInByb2plY3Q6dGFyZ2V0Wzpjb25maWd1cmF0aW9uXVwiIGZvciB0aGUgdGFyZ2V0IG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRhcmdldFN0cmluZ0Zyb21UYXJnZXQoeyBwcm9qZWN0LCB0YXJnZXQsIGNvbmZpZ3VyYXRpb24gfTogVGFyZ2V0KSB7XG4gIHJldHVybiBgJHtwcm9qZWN0fToke3RhcmdldH0ke2NvbmZpZ3VyYXRpb24gIT09IHVuZGVmaW5lZCA/ICc6JyArIGNvbmZpZ3VyYXRpb24gOiAnJ31gO1xufVxuXG4vKipcbiAqIFJldHVybiBhIFRhcmdldCB0dXBsZSBmcm9tIGEgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdGFyZ2V0RnJvbVRhcmdldFN0cmluZyhzdHI6IHN0cmluZyk6IFRhcmdldCB7XG4gIGNvbnN0IHR1cGxlID0gc3RyLnNwbGl0KC86LywgMyk7XG4gIGlmICh0dXBsZS5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRhcmdldCBzdHJpbmc6ICcgKyBKU09OLnN0cmluZ2lmeShzdHIpKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcHJvamVjdDogdHVwbGVbMF0sXG4gICAgdGFyZ2V0OiB0dXBsZVsxXSxcbiAgICAuLi4odHVwbGVbMl0gIT09IHVuZGVmaW5lZCAmJiB7IGNvbmZpZ3VyYXRpb246IHR1cGxlWzJdIH0pLFxuICB9O1xufVxuXG4vKipcbiAqIFNjaGVkdWxlIGEgdGFyZ2V0LCBhbmQgZm9yZ2V0IGFib3V0IGl0cyBydW4uIFRoaXMgd2lsbCByZXR1cm4gYW4gb2JzZXJ2YWJsZSBvZiBvdXRwdXRzLCB0aGF0XG4gKiBhcyBhIGEgdGVhcmRvd24gd2lsbCBzdG9wIHRoZSB0YXJnZXQgZnJvbSBydW5uaW5nLiBUaGlzIG1lYW5zIHRoYXQgdGhlIFJ1biBvYmplY3QgdGhpcyByZXR1cm5zXG4gKiBzaG91bGQgbm90IGJlIHNoYXJlZC5cbiAqXG4gKiBUaGUgcmVhc29uIHRoaXMgaXMgbm90IHBhcnQgb2YgdGhlIENvbnRleHQgaW50ZXJmYWNlIGlzIHRvIGtlZXAgdGhlIENvbnRleHQgYXMgbm9ybWFsIGZvcm0gYXNcbiAqIHBvc3NpYmxlLiBUaGlzIGlzIHJlYWxseSBhbiB1dGlsaXR5IHRoYXQgcGVvcGxlIHdvdWxkIGltcGxlbWVudCBpbiB0aGVpciBwcm9qZWN0LlxuICpcbiAqIEBwYXJhbSBjb250ZXh0IFRoZSBjb250ZXh0IG9mIHlvdXIgY3VycmVudCBleGVjdXRpb24uXG4gKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgdG8gc2NoZWR1bGUuXG4gKiBAcGFyYW0gb3ZlcnJpZGVzIE92ZXJyaWRlcyB0aGF0IGFyZSB1c2VkIGluIHRoZSB0YXJnZXQuXG4gKiBAcGFyYW0gc2NoZWR1bGVPcHRpb25zIEFkZGl0aW9uYWwgc2NoZWR1bGluZyBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2NoZWR1bGVUYXJnZXRBbmRGb3JnZXQoXG4gIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0LFxuICB0YXJnZXQ6IFRhcmdldCxcbiAgb3ZlcnJpZGVzPzoganNvbi5Kc29uT2JqZWN0LFxuICBzY2hlZHVsZU9wdGlvbnM/OiBTY2hlZHVsZU9wdGlvbnMsXG4pOiBPYnNlcnZhYmxlPEJ1aWxkZXJPdXRwdXQ+IHtcbiAgbGV0IHJlc29sdmU6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHIpID0+IChyZXNvbHZlID0gcikpO1xuICBjb250ZXh0LmFkZFRlYXJkb3duKCgpID0+IHByb21pc2UpO1xuXG4gIHJldHVybiBmcm9tKGNvbnRleHQuc2NoZWR1bGVUYXJnZXQodGFyZ2V0LCBvdmVycmlkZXMsIHNjaGVkdWxlT3B0aW9ucykpLnBpcGUoXG4gICAgc3dpdGNoTWFwKFxuICAgICAgKHJ1bikgPT5cbiAgICAgICAgbmV3IE9ic2VydmFibGU8QnVpbGRlck91dHB1dD4oKG9ic2VydmVyKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gcnVuLm91dHB1dC5zdWJzY3JpYmUob2JzZXJ2ZXIpO1xuXG4gICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgLy8gV2UgY2FuIHByb3Blcmx5IGlnbm9yZSB0aGUgZmxvYXRpbmcgcHJvbWlzZSBhcyBpdCdzIGEgXCJyZXZlcnNlXCIgcHJvbWlzZTsgdGhlIHRlYXJkb3duXG4gICAgICAgICAgICAvLyBpcyB3YWl0aW5nIGZvciB0aGUgcmVzb2x2ZS5cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICAgICAgICAgIHJ1bi5zdG9wKCkudGhlbihyZXNvbHZlKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9KSxcbiAgICApLFxuICApO1xufVxuIl19
|