@dbx-tools/core 0.6.82 → 0.6.86
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +75 -2
- package/index.ts +3 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +3 -1
- package/lib/src/config.d.ts +159 -0
- package/lib/src/config.js +445 -0
- package/lib/src/project.js +12 -32
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -3
- package/src/config.ts +539 -0
- package/src/project.ts +15 -30
package/lib/src/project.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { spawnSync } from "node:child_process";
|
|
2
2
|
import { readFileSync } from "node:fs";
|
|
3
3
|
import { basename, dirname, join, resolve } from "node:path";
|
|
4
|
-
import {
|
|
4
|
+
import { context, json, net, string } from "@dbx-tools/shared-core";
|
|
5
5
|
import { statSync as stat } from "./file.js";
|
|
6
6
|
const ROOT_MARKERS = [
|
|
7
7
|
".projenrc.ts",
|
|
@@ -33,38 +33,18 @@ function projectContextCommandOutput(command, args, cwd) {
|
|
|
33
33
|
return { cwd, output };
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
36
|
+
* {@link projectContextCommandOutput} through the process-context cache.
|
|
37
|
+
*
|
|
38
|
+
* These commands (`npm prefix`, `git rev-parse`, `gh repo view`) are pure
|
|
39
|
+
* functions of the directory they run in, so their output is worth keeping - but
|
|
40
|
+
* only while the process is still IN that directory. {@link context.cached}
|
|
41
|
+
* owns that rule: the slot remembers the `cwd` it was loaded under and misses
|
|
42
|
+
* once the process moves, and a lookup for some OTHER directory runs the command
|
|
43
|
+
* without caching, so it can't evict the hot entry. The slot name carries the
|
|
44
|
+
* command and its arguments (order-sensitive), so two commands never share one.
|
|
40
45
|
*/
|
|
41
|
-
const parsedCommandCache = new Map();
|
|
42
46
|
function projectContextCommand(command, args, cwd) {
|
|
43
|
-
|
|
44
|
-
let cacheEnabled;
|
|
45
|
-
if (!cwd) {
|
|
46
|
-
cwd = processCwd;
|
|
47
|
-
cacheEnabled = true;
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
cwd = resolve(cwd);
|
|
51
|
-
if (cwd == processCwd) {
|
|
52
|
-
cacheEnabled = true;
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
cacheEnabled = false;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
const cacheKey = cacheEnabled ? hash.fnvHash(command, args) : undefined;
|
|
59
|
-
const cacheHit = cacheKey ? parsedCommandCache.get(cacheKey) : undefined;
|
|
60
|
-
if (cacheHit?.cwd === cwd) {
|
|
61
|
-
return cacheHit;
|
|
62
|
-
}
|
|
63
|
-
const result = projectContextCommandOutput(command, args, cwd);
|
|
64
|
-
if (cacheKey) {
|
|
65
|
-
parsedCommandCache.set(cacheKey, result);
|
|
66
|
-
}
|
|
67
|
-
return result;
|
|
47
|
+
return context.cached(["project", command, ...args], (resolved) => projectContextCommandOutput(command, args, resolved ?? resolve(cwd ?? ".")), cwd ? resolve(cwd) : undefined);
|
|
68
48
|
}
|
|
69
49
|
function npmRoot(cwd) {
|
|
70
50
|
const parsed = projectContextCommand("npm", ["prefix"], cwd);
|
|
@@ -295,4 +275,4 @@ if (import.meta.main) {
|
|
|
295
275
|
console.log("repository url:", repositoryUrl());
|
|
296
276
|
console.log("repository url (npm):", repositoryUrl(process.cwd(), "npm"));
|
|
297
277
|
}
|
|
298
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQVMsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDN0QsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxRQUFRLElBQUksSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTdDLE1BQU0sWUFBWSxHQUFHO0lBQ25CLGNBQWM7SUFDZCxjQUFjO0lBQ2QsZUFBZTtJQUNmLGVBQWU7SUFDZixjQUFjO0NBQ04sQ0FBQztBQWtCWDs7Ozs7OztHQU9HO0FBQ0gsU0FBUywyQkFBMkIsQ0FBQyxPQUFlLEVBQUUsSUFBYyxFQUFFLEdBQVc7SUFDL0UsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEYsTUFBTSxNQUFNLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQiwwRUFBMEU7UUFDMUUsNEVBQTRFO1FBQzVFLHlFQUF5RTtRQUN6RSw0RUFBNEU7UUFDNUUsTUFBTSxHQUFHLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDekYsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQy9FLENBQUM7SUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQ3pCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQTBCLENBQUM7QUFFN0QsU0FBUyxxQkFBcUIsQ0FBQyxPQUFlLEVBQUUsSUFBYyxFQUFFLEdBQVk7SUFDMUUsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLElBQUksWUFBcUIsQ0FBQztJQUMxQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDVCxHQUFHLEdBQUcsVUFBVSxDQUFDO1FBQ2pCLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQztTQUFNLENBQUM7UUFDTixHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ3RCLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDdEIsQ0FBQzthQUFNLENBQUM7WUFDTixZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBQ0QsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3hFLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDekUsSUFBSSxRQUFRLEVBQUUsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQzFCLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRywyQkFBMkIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9ELElBQUksUUFBUSxFQUFFLENBQUM7UUFDYixrQkFBa0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsR0FBWTtJQUMzQixNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM3RCxPQUFPLE1BQU0sQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNuRSxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsR0FBWTtJQUMzQixNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNuRixPQUFPLE1BQU0sQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNuRSxDQUFDO0FBRUQsTUFBTSxVQUFVLElBQUksQ0FBQyxNQUFjLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFDOUMsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRTNCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQztRQUNsQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FDeEIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBa0IsRUFBRSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUM7U0FDcEQsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDaEMsQ0FBQztJQUNGLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLElBQUksSUFBbUQsQ0FBQztJQUN4RCxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ1osS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ3hELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDO2dCQUMxQyxJQUNFLElBQUksS0FBSyxTQUFTO29CQUNsQixRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVE7b0JBQ3hCLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUNoRSxDQUFDO29CQUNELElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7Z0JBQ3BDLENBQUM7Z0JBQ0QsTUFBTTtZQUNSLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbEIsQ0FBQztRQUNELElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxFQUFFLEdBQUcsQ0FBQztRQUNuQixDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLElBQUksTUFBTSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxFQUFFLEdBQUcsQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEdBQVc7SUFDeEMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLElBQUksQ0FBQyxPQUFPO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFL0IsTUFBTSxHQUFHLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELElBQUksR0FBRztRQUFFLE9BQU8sZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUU5QyxJQUFJLENBQUM7UUFDSCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsRCxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDOUMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3hELENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLElBQVk7SUFDbkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQy9ELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFNBQVMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLE1BQWMsT0FBTyxDQUFDLEdBQUcsRUFBRTtJQUM5RCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUMvQixLQUFLLE1BQU0sU0FBUyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdkQsSUFBSSxDQUFDLFNBQVM7WUFBRSxTQUFTO1FBQ3pCLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQUUsU0FBUztRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsV0FBVyxFQUFFO1lBQUUsTUFBTSxHQUFHLENBQUM7SUFDMUMsQ0FBQztJQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztRQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ2xDLENBQUM7QUFFRCw4RkFBOEY7QUFDOUYsU0FBUyxhQUFhLENBQUMsTUFBYyxPQUFPLENBQUMsR0FBRyxFQUFFO0lBQ2hELElBQUksSUFBd0IsQ0FBQztJQUM3QixLQUFLLE1BQU0sR0FBRyxJQUFJLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDM0MsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtZQUFFLE9BQU8sR0FBRyxDQUFDO1FBQzdELElBQUksR0FBRyxHQUFHLENBQUM7SUFDYixDQUFDO0lBQ0QsT0FBTyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLElBQUksQ0FBQyxNQUFjLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFDOUMsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRW5DLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsSUFBSSxXQUFXO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFFcEMsTUFBTSxNQUFNLEdBQUcscUJBQXFCLENBQ2xDLEtBQUssRUFDTCxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFDOUMsT0FBTyxDQUNSLENBQUMsTUFBTSxDQUFDO0lBQ1QsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM1RCxJQUFJLE9BQU87UUFBRSxPQUFPLE9BQU8sQ0FBQztJQUU1QixPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsbUJBQW1CLENBQUMsR0FBWTtJQUN2QyxNQUFNLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDdkYsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDO0FBQ3BFLENBQUM7QUFFRCw0RkFBNEY7QUFDNUYsU0FBUyxrQkFBa0IsQ0FBQyxJQUFZLEVBQUUsR0FBWTtJQUNwRCxNQUFNLElBQUksR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDO1NBQ3pELE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDO1NBQ25CLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sSUFBSSxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsT0FBTyxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDbEQsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FBQyxHQUFZO0lBQ3hDLE1BQU0sR0FBRyxHQUFHLHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3RGLElBQUksQ0FBQyxHQUFHO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFM0IsNEVBQTRFO0lBQzVFLDBFQUEwRTtJQUMxRSwrRUFBK0U7SUFDL0UsK0VBQStFO0lBQy9FLCtEQUErRDtJQUMvRCxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0QyxNQUFNLEdBQUcsR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsSUFBSSxHQUFHO1FBQUUsS0FBSyxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQy9DLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRXJELElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUMvQixnREFBZ0Q7SUFDaEQsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QyxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0QscUZBQXFGO0lBQ3JGLE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDM0QsSUFBSSxRQUFRO1FBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRTNELE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ3RFLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsTUFBYyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQzNCLFNBQTBCLE9BQU87SUFFakMsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEUsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM3QixPQUFPLE1BQU0sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQzdFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FDekIsR0FBbUIsRUFDbkIsT0FBdUQ7SUFFdkQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDM0IsTUFBTSxxQkFBcUIsQ0FDekIsS0FBSyxFQUNMLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsRUFDN0IsR0FBRyxJQUFJLFNBQVMsQ0FDakIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDakIsSUFBSSxPQUFPLE9BQU8sS0FBSyxXQUFXLElBQUksT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ25ELE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDO1lBQ3JDLElBQUksT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUNyQixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzFCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUMxQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDTCxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ25DLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDVCxTQUFTO1lBQ1gsQ0FBQztpQkFBTSxJQUFJLE9BQU8sRUFBRSxZQUFZLEVBQUUsQ0FBQztnQkFDakMsTUFBTSxnQkFBZ0IsR0FBRyw0QkFBNEIsQ0FBQztnQkFDdEQsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLFdBQVcsS0FBSyxnQkFBZ0IsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3ZGLFNBQVM7Z0JBQ1gsQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLE9BQWU7SUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUMvQyxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDO0FBQy9GLENBQUM7QUFFRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNyQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDNUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwYXduU3luYyB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IFN0YXRzLCByZWFkRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgYmFzZW5hbWUsIGRpcm5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBoYXNoLCBqc29uLCBuZXQsIHN0cmluZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBzdGF0U3luYyBhcyBzdGF0IH0gZnJvbSBcIi4vZmlsZS50c1wiO1xuXG5jb25zdCBST09UX01BUktFUlMgPSBbXG4gIFwiLnByb2plbnJjLnRzXCIsXG4gIFwiLnByb2plbnJjLmpzXCIsXG4gIFwiLnByb2plbnJjLm1qc1wiLFxuICBcIi5wcm9qZW5yYy5janNcIixcbiAgXCJwYWNrYWdlLmpzb25cIixcbl0gYXMgY29uc3Q7XG5cbi8qKiBBIGNvbW1hbmQncyBzdGRvdXQsIGNsYXNzaWZpZWQgYXMgYSBmaWxlc3lzdGVtIHBhdGggYW5kL29yIGEgVVJMLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0Q29udGV4dCB7XG4gIHJlYWRvbmx5IGN3ZDogc3RyaW5nO1xuICByZWFkb25seSBvdXRwdXQ6IHN0cmluZztcbiAgLyoqIGBvdXRwdXRgIHdoZW4gaXQgbmFtZXMgc29tZXRoaW5nIG9uIGRpc2suICovXG4gIHJlYWRvbmx5IHBhdGg/OiBzdHJpbmc7XG4gIC8qKiBgZnMuc3RhdGAgb2Yge0BsaW5rIHBhdGh9LCB3aGVuIGl0IGV4aXN0cy4gKi9cbiAgcmVhZG9ubHkgcGF0aFN0YXRzPzogU3RhdHM7XG4gIC8qKlxuICAgKiBgb3V0cHV0YCBwYXJzZWQgaW50byBhIGNoYWluYWJsZSB7QGxpbmsgbmV0LlVybEJ1aWxkZXJ9LCB3aGVuIGl0IGlzIGEgcmVhbFxuICAgKiBuZXR3b3JrIFVSTCAtIGEgbm9uLWJsYW5rIHNjaGVtZSAobm90IGBmaWxlOmApIEFORCBhIG5vbi1ibGFuayBob3N0bmFtZS5cbiAgICogQmFyZSBwYXRocywgc2NwLWxpa2UgYGdpdEBob3N0Oi4uLmAgcmVtb3RlcywgYW5kIGBmaWxlOmAgVVJMcyBzdGF5IHVuc2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgdXJsPzogbmV0LlVybEJ1aWxkZXI7XG59XG5cbi8qKlxuICogYmVjYXVzZSB0aGlzIGlzIGNydWNpYWwgZG8gbm90IHVzZSBleGVjLnNwYXduU3luY1xuICpcbiAqIFJ1biBgY29tbWFuZCBhcmdzYCBpbiBgY3dkYCBhbmQgY2xhc3NpZnkgaXRzIHN0ZG91dDogYHBhdGhgICsgYHBhdGhTdGF0c2Agd2hlblxuICogdGhlIG91dHB1dCBuYW1lcyBzb21ldGhpbmcgb24gZGlzaywgYHVybGAgKGEge0BsaW5rIG5ldC5VcmxCdWlsZGVyfSkgd2hlbiBpdFxuICogcGFyc2VzIGFzIGEgcmVhbCBuZXR3b3JrIFVSTC4gRW1wdHkge0BsaW5rIFByb2plY3RDb250ZXh0fSBvbiBhIG5vbi16ZXJvIGV4aXRcbiAqIG9yIGVtcHR5IG91dHB1dC5cbiAqL1xuZnVuY3Rpb24gcHJvamVjdENvbnRleHRDb21tYW5kT3V0cHV0KGNvbW1hbmQ6IHN0cmluZywgYXJnczogc3RyaW5nW10sIGN3ZDogc3RyaW5nKTogUHJvamVjdENvbnRleHQge1xuICBjb25zdCByZXN1bHQgPSBzcGF3blN5bmMoY29tbWFuZCwgYXJncywgeyBjd2QsIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJwaXBlXCIsIFwiaWdub3JlXCJdIH0pO1xuICBjb25zdCBvdXRwdXQgPSByZXN1bHQ/LnN0ZG91dD8udG9TdHJpbmcoKT8udHJpbSgpO1xuICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gMCAmJiBvdXRwdXQpIHtcbiAgICBjb25zdCBwYXRoU3RhdHMgPSBzdGF0KG91dHB1dCk7XG4gICAgLy8gT25seSBhbiBFWFBMSUNJVCBgc2NoZW1lOi8vLi4uYCBjb3VudHMgYXMgYSBVUkwuIGB1cmxCdWlsZGVyYCBvdGhlcndpc2VcbiAgICAvLyBzeW50aGVzaXplcyBvbmUgKGEgYmFyZSBgZXhhbXBsZS5jb21gIC0+IGBodHRwczovL+KApmAsIGFuIGFic29sdXRlIHBhdGggLT5cbiAgICAvLyBgaHR0cDovL2xvY2FsaG9zdC/igKZgKSwgd2hpY2ggd291bGQgbWlzbGFiZWwgZGlyZWN0b3J5IG91dHB1dHMgYW5kIGJhcmVcbiAgICAvLyB0b2tlbnMgLSBzbyBnYXRlIG9uIHRoZSByYXcgb3V0cHV0IGFscmVhZHkgY2FycnlpbmcgYSBzY2hlbWUgKyBhdXRob3JpdHkuXG4gICAgY29uc3QgdXJsID0gL15bYS16XVthLXowLTkrLi1dKjpcXC9cXC8vaS50ZXN0KG91dHB1dCkgPyBuZXQudXJsQnVpbGRlcihvdXRwdXQpIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiB7IGN3ZCwgb3V0cHV0LCBwYXRoOiBwYXRoU3RhdHMgPyBvdXRwdXQgOiB1bmRlZmluZWQsIHBhdGhTdGF0cywgdXJsIH07XG4gIH1cbiAgcmV0dXJuIHsgY3dkLCBvdXRwdXQgfTtcbn1cblxuLyoqXG4gKiBgcGFyc2VDb21tYW5kYCwgbWVtb2l6ZWQgcGVyIGAoY29tbWFuZCwgYXJncywgY3dkKWAgLSBzdG9yZXMgdGhlIHdob2xlXG4gKiB7QGxpbmsgUHJvamVjdENvbnRleHR9LiBUaGUgY2FjaGUga2V5IGlzIGEgc3RhYmxlIHtAbGluayBoYXNoLmZudkhhc2h9IG9mIHRoYXRcbiAqIHR1cGxlIChvcmRlci1zZW5zaXRpdmUgb3ZlciBgYXJnc2ApLCBzbyBgY3dkYCBpcyBwYXJ0IG9mIHRoZSBrZXkgYW5kIGEgbG9va3VwXG4gKiBpbiBhbm90aGVyIGRpcmVjdG9yeSBjYW4ndCBjb2xsaWRlIHdpdGggdGhlIGRlZmF1bHQtY3dkIGVudHJ5LlxuICovXG5jb25zdCBwYXJzZWRDb21tYW5kQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgUHJvamVjdENvbnRleHQ+KCk7XG5cbmZ1bmN0aW9uIHByb2plY3RDb250ZXh0Q29tbWFuZChjb21tYW5kOiBzdHJpbmcsIGFyZ3M6IHN0cmluZ1tdLCBjd2Q/OiBzdHJpbmcpOiBQcm9qZWN0Q29udGV4dCB7XG4gIGNvbnN0IHByb2Nlc3NDd2QgPSByZXNvbHZlKHByb2Nlc3MuY3dkKCkpO1xuICBsZXQgY2FjaGVFbmFibGVkOiBib29sZWFuO1xuICBpZiAoIWN3ZCkge1xuICAgIGN3ZCA9IHByb2Nlc3NDd2Q7XG4gICAgY2FjaGVFbmFibGVkID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBjd2QgPSByZXNvbHZlKGN3ZCk7XG4gICAgaWYgKGN3ZCA9PSBwcm9jZXNzQ3dkKSB7XG4gICAgICBjYWNoZUVuYWJsZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWNoZUVuYWJsZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgY29uc3QgY2FjaGVLZXkgPSBjYWNoZUVuYWJsZWQgPyBoYXNoLmZudkhhc2goY29tbWFuZCwgYXJncykgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGNhY2hlSGl0ID0gY2FjaGVLZXkgPyBwYXJzZWRDb21tYW5kQ2FjaGUuZ2V0KGNhY2hlS2V5KSA6IHVuZGVmaW5lZDtcbiAgaWYgKGNhY2hlSGl0Py5jd2QgPT09IGN3ZCkge1xuICAgIHJldHVybiBjYWNoZUhpdDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSBwcm9qZWN0Q29udGV4dENvbW1hbmRPdXRwdXQoY29tbWFuZCwgYXJncywgY3dkKTtcbiAgaWYgKGNhY2hlS2V5KSB7XG4gICAgcGFyc2VkQ29tbWFuZENhY2hlLnNldChjYWNoZUtleSwgcmVzdWx0KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBucG1Sb290KGN3ZD86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHBhcnNlZCA9IHByb2plY3RDb250ZXh0Q29tbWFuZChcIm5wbVwiLCBbXCJwcmVmaXhcIl0sIGN3ZCk7XG4gIHJldHVybiBwYXJzZWQucGF0aFN0YXRzPy5pc0RpcmVjdG9yeSgpID8gcGFyc2VkLnBhdGggOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdpdFJvb3QoY3dkPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcGFyc2VkID0gcHJvamVjdENvbnRleHRDb21tYW5kKFwiZ2l0XCIsIFtcInJldi1wYXJzZVwiLCBcIi0tc2hvdy10b3BsZXZlbFwiXSwgY3dkKTtcbiAgcmV0dXJuIHBhcnNlZC5wYXRoU3RhdHM/LmlzRGlyZWN0b3J5KCkgPyBwYXJzZWQucGF0aCA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJvb3QoY3dkOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgbGV0IGN1cnJlbnQgPSByZXNvbHZlKGN3ZCk7XG5cbiAgaWYgKCFzdGF0KGN1cnJlbnQpPy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgY3VycmVudCA9IGRpcm5hbWUoY3VycmVudCk7XG4gIH1cbiAgY29uc3QgYm91bmRhcmllcyA9IG5ldyBTZXQoXG4gICAgW25wbVJvb3QoY3dkKSwgZ2l0Um9vdChjd2QpXVxuICAgICAgLmZpbHRlcigocGF0aCk6IHBhdGggaXMgc3RyaW5nID0+IHBhdGggIT09IHVuZGVmaW5lZClcbiAgICAgIC5tYXAoKHBhdGgpID0+IHJlc29sdmUocGF0aCkpLFxuICApO1xuICBjb25zdCBoYXNCb3VuZGFyeSA9IGJvdW5kYXJpZXMuc2l6ZSA+IDA7XG4gIGxldCBiZXN0OiB7IGRpcjogc3RyaW5nOyBwcmlvcml0eTogbnVtYmVyIH0gfCB1bmRlZmluZWQ7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgZm9yIChjb25zdCBbcHJpb3JpdHksIG1hcmtlcl0gb2YgUk9PVF9NQVJLRVJTLmVudHJpZXMoKSkge1xuICAgICAgaWYgKHN0YXQoam9pbihjdXJyZW50LCBtYXJrZXIpKT8uaXNGaWxlKCkpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGJlc3QgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgIHByaW9yaXR5IDwgYmVzdC5wcmlvcml0eSB8fFxuICAgICAgICAgIChwcmlvcml0eSA9PT0gYmVzdC5wcmlvcml0eSAmJiBjdXJyZW50Lmxlbmd0aCA8IGJlc3QuZGlyLmxlbmd0aClcbiAgICAgICAgKSB7XG4gICAgICAgICAgYmVzdCA9IHsgZGlyOiBjdXJyZW50LCBwcmlvcml0eSB9O1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWhhc0JvdW5kYXJ5ICYmIGJlc3QpIHtcbiAgICAgIHJldHVybiBiZXN0LmRpcjtcbiAgICB9XG4gICAgaWYgKGJvdW5kYXJpZXMuaGFzKGN1cnJlbnQpKSB7XG4gICAgICByZXR1cm4gYmVzdD8uZGlyO1xuICAgIH1cbiAgICBjb25zdCBwYXJlbnQgPSBkaXJuYW1lKGN1cnJlbnQpO1xuICAgIGlmIChwYXJlbnQgPT09IGN1cnJlbnQpIHtcbiAgICAgIHJldHVybiBiZXN0Py5kaXI7XG4gICAgfVxuICAgIGN1cnJlbnQgPSBwYXJlbnQ7XG4gIH1cbn1cblxuLyoqXG4gKiBQYXJzZSBhIGdpdCByZW1vdGUgVVJMIChgaHR0cHM6Ly8uLi5gLCBgZ2l0QGhvc3Q6b3duZXIvcmVwby5naXRgLCBldGMuKSBhbmRcbiAqIHJldHVybiB0aGUgcmVwbyBzZWdtZW50LCBzdHJpcHBpbmcgYW55IGAuZ2l0YCBzdWZmaXguIFJldHVybnMgYHVuZGVmaW5lZGAgZm9yXG4gKiBlbXB0eSBvciB1bnBhcnNhYmxlIGlucHV0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VHaXRSZW1vdGUodXJsOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCB0cmltbWVkID0gdXJsLnRyaW0oKTtcbiAgaWYgKCF0cmltbWVkKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHNjcCA9IC9eW15AXStAW146XSs6KC4rKSQvaS5leGVjKHRyaW1tZWQpO1xuICBpZiAoc2NwKSByZXR1cm4gbGFzdFBhdGhTZWdtZW50KHNjcFsxXSA/PyBcIlwiKTtcblxuICB0cnkge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB0cmltbWVkLnJlcGxhY2UoL1xcLmdpdCQvaSwgXCJcIik7XG4gICAgY29uc3QgcGF0aG5hbWUgPSBuZXcgVVJMKG5vcm1hbGl6ZWQpLnBhdGhuYW1lO1xuICAgIGNvbnN0IHNlZ21lbnQgPSBwYXRobmFtZS5zcGxpdChcIi9cIikuZmlsdGVyKEJvb2xlYW4pLmF0KC0xKTtcbiAgICByZXR1cm4gc2VnbWVudCA/IGxhc3RQYXRoU2VnbWVudChzZWdtZW50KSA6IHVuZGVmaW5lZDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5mdW5jdGlvbiBsYXN0UGF0aFNlZ21lbnQocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc2VnbWVudCA9IHBhdGguc3BsaXQoXCIvXCIpLmZpbHRlcihCb29sZWFuKS5hdCgtMSkgPz8gcGF0aDtcbiAgcmV0dXJuIHNlZ21lbnQucmVwbGFjZSgvXFwuZ2l0JC9pLCBcIlwiKTtcbn1cblxuLyoqXG4gKiBZaWVsZCBjYW5kaWRhdGUgcHJvamVjdC1yb290IGRpcmVjdG9yaWVzIGZvciBgY3dkYCwgaW4gcHJpb3JpdHkgb3JkZXI6IHRoZVxuICogYG5wbSBwcmVmaXhgLCB0aGUgZ2l0IHRvcC1sZXZlbCwgdGhlbiBgY3dkYCBpdHNlbGYuIER1cGxpY2F0ZXMgYXJlIHNraXBwZWQ7XG4gKiBvbmx5IGV4aXN0aW5nIGRpcmVjdG9yaWVzIGFyZSB5aWVsZGVkIChleGNlcHQgdGhlIGZpbmFsIGBjd2RgIGZhbGxiYWNrKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uKiByZXNvbHZlUHJvamVjdFJvb3RzKGN3ZDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKSk6IEdlbmVyYXRvcjxzdHJpbmc+IHtcbiAgY29uc3QgYmFzZSA9IHJlc29sdmUoY3dkKTtcbiAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBbbnBtUm9vdChiYXNlKSwgZ2l0Um9vdChiYXNlKV0pIHtcbiAgICBpZiAoIWNhbmRpZGF0ZSkgY29udGludWU7XG4gICAgY29uc3QgZGlyID0gcmVzb2x2ZShjYW5kaWRhdGUpO1xuICAgIGlmIChzZWVuLmhhcyhkaXIpKSBjb250aW51ZTtcbiAgICBzZWVuLmFkZChkaXIpO1xuICAgIGlmIChzdGF0KGRpcik/LmlzRGlyZWN0b3J5KCkpIHlpZWxkIGRpcjtcbiAgfVxuICBpZiAoIXNlZW4uaGFzKGJhc2UpKSB5aWVsZCBiYXNlO1xufVxuXG4vKiogVGhlIG5lYXJlc3QgYW5jZXN0b3Igb2YgYGN3ZGAgKGZyb20ge0BsaW5rIHJlc29sdmVQcm9qZWN0Um9vdHN9KSB3aXRoIGEgYHBhY2thZ2UuanNvbmAuICovXG5mdW5jdGlvbiB3b3Jrc3BhY2VSb290KGN3ZDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKSk6IHN0cmluZyB7XG4gIGxldCBsYXN0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGZvciAoY29uc3QgZGlyIG9mIHJlc29sdmVQcm9qZWN0Um9vdHMoY3dkKSkge1xuICAgIGlmIChzdGF0KHJlc29sdmUoZGlyLCBcInBhY2thZ2UuanNvblwiKSk/LmlzRmlsZSgpKSByZXR1cm4gZGlyO1xuICAgIGxhc3QgPSBkaXI7XG4gIH1cbiAgcmV0dXJuIGxhc3QgPz8gcmVzb2x2ZShjd2QpO1xufVxuXG4vKipcbiAqIFJlc29sdmUgYSBodW1hbi1mcmllbmRseSBwcm9qZWN0IG5hbWUgZm9yIHRoZSByZXBvIHJvb3RlZCBhdCBgY3dkYDpcbiAqIGBwYWNrYWdlLmpzb25gIGBuYW1lYCwgdGhlbiB0aGUgZ2l0IHJlbW90ZSdzIHJlcG8gbmFtZSwgdGhlbiB0aGUgcm9vdFxuICogZGlyZWN0b3J5J3MgYmFzZW5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYW1lKGN3ZDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKSk6IHN0cmluZyB7XG4gIGNvbnN0IHJvb3REaXIgPSB3b3Jrc3BhY2VSb290KGN3ZCk7XG5cbiAgY29uc3QgZnJvbVBhY2thZ2UgPSByZWFkUGFja2FnZU5hbWUocmVzb2x2ZShyb290RGlyLCBcInBhY2thZ2UuanNvblwiKSk7XG4gIGlmIChmcm9tUGFja2FnZSkgcmV0dXJuIGZyb21QYWNrYWdlO1xuXG4gIGNvbnN0IHJlbW90ZSA9IHByb2plY3RDb250ZXh0Q29tbWFuZChcbiAgICBcImdpdFwiLFxuICAgIFtcIi1DXCIsIHJvb3REaXIsIFwicmVtb3RlXCIsIFwiZ2V0LXVybFwiLCBcIm9yaWdpblwiXSxcbiAgICByb290RGlyLFxuICApLm91dHB1dDtcbiAgY29uc3QgZnJvbUdpdCA9IHJlbW90ZSA/IHBhcnNlR2l0UmVtb3RlKHJlbW90ZSkgOiB1bmRlZmluZWQ7XG4gIGlmIChmcm9tR2l0KSByZXR1cm4gZnJvbUdpdDtcblxuICByZXR1cm4gYmFzZW5hbWUocm9vdERpcik7XG59XG5cbi8qKlxuICogVGhlIEdpdEh1YiBDTEkncyBjYW5vbmljYWwgcmVwbyBVUkwgLSB0aGUgZWFzeSBwYXRoLiBgZ2hgIGFscmVhZHkgcmVzb2x2ZXMgdGhlXG4gKiB0cnVlIGhvc3QgKG5vIHNzaC1hbGlhcyBwYXJzaW5nKSBhbmQgcHJpbnRzIGEgY2xlYW4gYGh0dHBzOi8vaG9zdC9vd25lci9yZXBvYC5cbiAqIGB1bmRlZmluZWRgIHdoZW4gYGdoYCBpcyBhYnNlbnQsIHVuYXV0aGVudGljYXRlZCwgb3IgdGhlIGRpciBpc24ndCBhIEdIIHJlcG8uXG4gKi9cbmZ1bmN0aW9uIHJlcG9zaXRvcnlVcmxGcm9tR2goY3dkPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgb3V0ID0gcHJvamVjdENvbnRleHRDb21tYW5kKFwiZ2hcIiwgW1wicmVwb1wiLCBcInZpZXdcIiwgXCItLWpzb25cIiwgXCJ1cmxcIl0sIGN3ZCkub3V0cHV0O1xuICByZXR1cm4gc3RyaW5nLnRyaW1Ub051bGwoanNvbi5wYXJzZVJlY29yZChvdXQpPy51cmwpID8/IHVuZGVmaW5lZDtcbn1cblxuLyoqIFJlc29sdmUgYW4gc3NoIGhvc3QgYWxpYXMgKGB+Ly5zc2gvY29uZmlnYCkgdG8gaXRzIGVmZmVjdGl2ZSBgaG9zdG5hbWVgIHZpYSBgc3NoIC1HYC4gKi9cbmZ1bmN0aW9uIHJlc29sdmVTc2hIb3N0TmFtZShob3N0OiBzdHJpbmcsIGN3ZD86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGxpbmUgPSBwcm9qZWN0Q29udGV4dENvbW1hbmQoXCJzc2hcIiwgW1wiLUdcIiwgaG9zdF0sIGN3ZClcbiAgICAub3V0cHV0Py5zcGxpdChcIlxcblwiKVxuICAgIC5maW5kKChsKSA9PiAvXmhvc3RuYW1lXFxzL2kudGVzdChsLnRyaW0oKSkpO1xuICBjb25zdCBuYW1lID0gbGluZT8udHJpbSgpLnNwbGl0KC9cXHMrLylbMV07XG4gIHJldHVybiBuYW1lICYmIG5hbWUgIT09IGhvc3QgPyBuYW1lIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEZhbGxiYWNrOiBub3JtYWxpemUgYGdpdCByZW1vdGUgZ2V0LXVybCBvcmlnaW5gIHRvIGEgcGxhaW5cbiAqIGBodHRwczovL2hvc3Qvb3duZXIvcmVwb2AgVVJMLiBzY3AtbGlrZSAvIGBzc2g6Ly9gIC8gYGdpdDovL2AgL1xuICogZW1iZWRkZWQtY3JlZGVudGlhbCBmb3JtcyBhcmUgcmV3cml0dGVuIHRvIGh0dHBzLCBhbmQgYW4gc3NoIGhvc3QgYWxpYXMgaXNcbiAqIGZvbGxvd2VkIHRvIGl0cyByZWFsIGhvc3RuYW1lLlxuICovXG5mdW5jdGlvbiByZXBvc2l0b3J5VXJsRnJvbUdpdChjd2Q/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCByYXcgPSBwcm9qZWN0Q29udGV4dENvbW1hbmQoXCJnaXRcIiwgW1wicmVtb3RlXCIsIFwiZ2V0LXVybFwiLCBcIm9yaWdpblwiXSwgY3dkKS5vdXRwdXQ7XG4gIGlmICghcmF3KSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgc2NoZW1lIHRvIGh0dHBzIGF0IHRoZSBzdHJpbmcgbGV2ZWwgZmlyc3Q6IHRoZSBXSEFUV0cgYFVSTGBcbiAgLy8gcGFyc2VyIGNhbid0IGNvbnZlcnQgYSBub24tc3BlY2lhbCBzY2hlbWUgKGBzc2hgL2BnaXRgKSB0byBgaHR0cHNgICh0aGVcbiAgLy8gYHByb3RvY29sYCBzZXR0ZXIgbm8tb3BzKSwgYW5kIHNjcC1saWtlIGBnaXRAaG9zdDpvd25lci9yZXBvYCBpc24ndCBhIFVSTCBhdFxuICAvLyBhbGwuIFJld3JpdGUgYm90aCBpbnRvIGFuIGBodHRwczovL2Agc3RyaW5nLCB0aGVuIGxldCB7QGxpbmsgbmV0LnVybEJ1aWxkZXJ9XG4gIC8vIG93biB0aGUgc3RydWN0dXJlZCBlZGl0cyAoc3RyaXAgY3JlZGVudGlhbHMsIHN3YXAgdGhlIGhvc3QpLlxuICBsZXQgaHR0cHMgPSByYXcucmVwbGFjZSgvXmdpdFxcKy8sIFwiXCIpO1xuICBjb25zdCBzY3AgPSAvXlteQF0rQChbXjpdKyk6KC4rKSQvLmV4ZWMoaHR0cHMpO1xuICBpZiAoc2NwKSBodHRwcyA9IGBodHRwczovLyR7c2NwWzFdfS8ke3NjcFsyXX1gO1xuICBodHRwcyA9IGh0dHBzLnJlcGxhY2UoL14oc3NofGdpdCk6XFwvXFwvLywgXCJodHRwczovL1wiKTtcblxuICBsZXQgYnVpbGRlciA9IG5ldC51cmxCdWlsZGVyKGh0dHBzKTtcbiAgaWYgKCFidWlsZGVyKSByZXR1cm4gdW5kZWZpbmVkO1xuICAvLyBEcm9wIGFueSBlbWJlZGRlZCBgdXNlcls6cGFzc11AYCBjcmVkZW50aWFscy5cbiAgaWYgKGJ1aWxkZXIudXNlcm5hbWUgfHwgYnVpbGRlci5wYXNzd29yZCkge1xuICAgIGJ1aWxkZXIgPSBidWlsZGVyLndpdGgoXCJ1c2VybmFtZVwiLCBcIlwiKS53aXRoKFwicGFzc3dvcmRcIiwgXCJcIik7XG4gIH1cbiAgLy8gRm9sbG93IGFuIHNzaCBob3N0IGFsaWFzIHRvIHRoZSB0cnVlIGhvc3QgKHNvIGBnaXRodWItcmVnZ2llLWRiYCAtPiBgZ2l0aHViLmNvbWApLlxuICBjb25zdCByZWFsSG9zdCA9IHJlc29sdmVTc2hIb3N0TmFtZShidWlsZGVyLmhvc3RuYW1lLCBjd2QpO1xuICBpZiAocmVhbEhvc3QpIGJ1aWxkZXIgPSBidWlsZGVyLndpdGgoXCJob3N0bmFtZVwiLCByZWFsSG9zdCk7XG5cbiAgcmV0dXJuIGAke2J1aWxkZXIub3JpZ2lufSR7YnVpbGRlci5wYXRobmFtZS5yZXBsYWNlKC9cXC5naXQkLywgXCJcIil9YDtcbn1cblxuLyoqXG4gKiBUaGUgcmVwbydzIGNhbm9uaWNhbCByZW1vdGUgVVJMLCBvciBgdW5kZWZpbmVkYCB3aGVuIHRoZXJlIGlzIG5vIGdpdCByZW1vdGUuXG4gKiBUcmllcyBgZ2ggcmVwbyB2aWV3YCBmaXJzdCAoaG9zdC1hY2N1cmF0ZSwgbm8gcGFyc2luZyksIHRoZW4gbm9ybWFsaXplc1xuICogYGdpdCByZW1vdGUgZ2V0LXVybCBvcmlnaW5gLiBCb3RoIHVuZGVybHlpbmcgY29tbWFuZHMgYXJlIGNhY2hlZCBwZXIgYGN3ZGAgdmlhXG4gKiB7QGxpbmsgcHJvamVjdENvbnRleHRDb21tYW5kfS5cbiAqXG4gKiBAcGFyYW0gY3dkIC0gZGlyZWN0b3J5IHRvIHJlc29sdmUgZnJvbSAoZGVmYXVsdHMgdG8gYHByb2Nlc3MuY3dkKClgKS5cbiAqIEBwYXJhbSBmb3JtYXQgLSBgXCJodHRwc1wiYCAoZGVmYXVsdCkgeWllbGRzIGBodHRwczovL2hvc3Qvb3duZXIvcmVwb2A7XG4gKiAgIGBcIm5wbVwiYCB5aWVsZHMgbnBtJ3MgYGdpdCtodHRwczovL2hvc3Qvb3duZXIvcmVwby5naXRgIGZvcm0gKGZvciBhXG4gKiAgIGBwYWNrYWdlLmpzb25gIGByZXBvc2l0b3J5LnVybGAgdGhhdCBwYXNzZXMgbnBtIHByb3ZlbmFuY2UpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwb3NpdG9yeVVybChcbiAgY3dkOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpLFxuICBmb3JtYXQ6IFwiaHR0cHNcIiB8IFwibnBtXCIgPSBcImh0dHBzXCIsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBodHRwcyA9IHJlcG9zaXRvcnlVcmxGcm9tR2goY3dkKSA/PyByZXBvc2l0b3J5VXJsRnJvbUdpdChjd2QpO1xuICBpZiAoIWh0dHBzKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gZm9ybWF0ID09PSBcIm5wbVwiID8gYGdpdCske2h0dHBzLnJlcGxhY2UoL1xcLmdpdCQvLCBcIlwiKX0uZ2l0YCA6IGh0dHBzO1xufVxuXG4vKipcbiAqIFRoZSBhY3RpdmUgbnBtIHJlZ2lzdHJ5IChgbnBtIGNvbmZpZyBnZXQgcmVnaXN0cnlgKSBhcyBhIGNoYWluYWJsZVxuICoge0BsaW5rIG5ldC5VcmxCdWlsZGVyfSwgb3IgYHVuZGVmaW5lZGAgd2hlbiBucG0gaXMgYWJzZW50IG9yIHByaW50cyBubyBVUkwuXG4gKiBDYWNoZWQgcGVyIGBjd2RgIHZpYSB7QGxpbmsgcHJvamVjdENvbnRleHRDb21tYW5kfS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5wbVJlZ2lzdHJ5KFxuICBjd2Q/OiBzdHJpbmcgfCBudWxsLFxuICBvcHRpb25zPzogeyBvdmVycmlkZU9ubHk/OiBib29sZWFuOyBlbnZWYXJzPzogYm9vbGVhbiB9LFxuKTogbmV0LlVybEJ1aWxkZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCBjYW5kaWRhdGVzID0gKGZ1bmN0aW9uKiAoKSB7XG4gICAgeWllbGQgcHJvamVjdENvbnRleHRDb21tYW5kKFxuICAgICAgXCJucG1cIixcbiAgICAgIFtcImNvbmZpZ1wiLCBcImdldFwiLCBcInJlZ2lzdHJ5XCJdLFxuICAgICAgY3dkID8/IHVuZGVmaW5lZCxcbiAgICApLm91dHB1dD8udHJpbSgpO1xuICAgIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBwcm9jZXNzPy5lbnYpIHtcbiAgICAgIGNvbnN0IGVudktleSA9IFwibnBtX2NvbmZpZ19yZWdpc3RyeVwiO1xuICAgICAgaWYgKG9wdGlvbnM/LmVudlZhcnMpIHtcbiAgICAgICAgeWllbGQgcHJvY2Vzcy5lbnZbZW52S2V5XTtcbiAgICAgICAgeWllbGQgcHJvY2Vzcy5lbnZbZW52S2V5LnRvVXBwZXJDYXNlKCldO1xuICAgICAgfVxuICAgIH1cbiAgfSkoKTtcbiAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgY2FuZGlkYXRlcykge1xuICAgIGlmIChjYW5kaWRhdGUpIHtcbiAgICAgIGNvbnN0IHVybCA9IG5ldC51cmxCdWlsZGVyKGNhbmRpZGF0ZSk7XG4gICAgICBpZiAoIXVybCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSBpZiAob3B0aW9ucz8ub3ZlcnJpZGVPbmx5KSB7XG4gICAgICAgIGNvbnN0IG5wbWpzUmVnaXN0cnlVcmwgPSBcImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnXCI7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5VXJsID0gdXJsLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmIChyZWdpc3RyeVVybCA9PT0gbnBtanNSZWdpc3RyeVVybCB8fCByZWdpc3RyeVVybC5zdGFydHNXaXRoKG5wbWpzUmVnaXN0cnlVcmwgKyBcIi9cIikpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gcmVhZFBhY2thZ2VOYW1lKHBrZ1BhdGg6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghc3RhdChwa2dQYXRoKT8uaXNGaWxlKCkpIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiBzdHJpbmcudHJpbVRvTnVsbChqc29uLnBhcnNlUmVjb3JkKHJlYWRGaWxlU3luYyhwa2dQYXRoLCBcInV0ZjhcIikpPy5uYW1lKSA/PyB1bmRlZmluZWQ7XG59XG5cbmlmIChpbXBvcnQubWV0YS5tYWluKSB7XG4gIGNvbnNvbGUubG9nKFwibnBtIHJvb3Q6XCIsIG5wbVJvb3QoKSk7XG4gIGNvbnNvbGUubG9nKFwicmVwbyByb290OlwiLCBnaXRSb290KCkpO1xuICBjb25zb2xlLmxvZyhcInBhY2thZ2Ugcm9vdDpcIiwgcm9vdCgpKTtcbiAgY29uc29sZS5sb2coXCJwcm9qZWN0IG5hbWU6XCIsIG5hbWUoKSk7XG4gIGNvbnNvbGUubG9nKFwicmVwb3NpdG9yeSB1cmw6XCIsIHJlcG9zaXRvcnlVcmwoKSk7XG4gIGNvbnNvbGUubG9nKFwicmVwb3NpdG9yeSB1cmwgKG5wbSk6XCIsIHJlcG9zaXRvcnlVcmwocHJvY2Vzcy5jd2QoKSwgXCJucG1cIikpO1xufVxuIl19
|
|
278
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQVMsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLElBQUksSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTdDLE1BQU0sWUFBWSxHQUFHO0lBQ25CLGNBQWM7SUFDZCxjQUFjO0lBQ2QsZUFBZTtJQUNmLGVBQWU7SUFDZixjQUFjO0NBQ04sQ0FBQztBQWtCWDs7Ozs7OztHQU9HO0FBQ0gsU0FBUywyQkFBMkIsQ0FBQyxPQUFlLEVBQUUsSUFBYyxFQUFFLEdBQVc7SUFDL0UsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEYsTUFBTSxNQUFNLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQiwwRUFBMEU7UUFDMUUsNEVBQTRFO1FBQzVFLHlFQUF5RTtRQUN6RSw0RUFBNEU7UUFDNUUsTUFBTSxHQUFHLEdB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SUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNyQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNoRCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM1RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3Bhd25TeW5jIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgU3RhdHMsIHJlYWRGaWxlU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBiYXNlbmFtZSwgZGlybmFtZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGNvbnRleHQsIGpzb24sIG5ldCwgc3RyaW5nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IHN0YXRTeW5jIGFzIHN0YXQgfSBmcm9tIFwiLi9maWxlLnRzXCI7XG5cbmNvbnN0IFJPT1RfTUFSS0VSUyA9IFtcbiAgXCIucHJvamVucmMudHNcIixcbiAgXCIucHJvamVucmMuanNcIixcbiAgXCIucHJvamVucmMubWpzXCIsXG4gIFwiLnByb2plbnJjLmNqc1wiLFxuICBcInBhY2thZ2UuanNvblwiLFxuXSBhcyBjb25zdDtcblxuLyoqIEEgY29tbWFuZCdzIHN0ZG91dCwgY2xhc3NpZmllZCBhcyBhIGZpbGVzeXN0ZW0gcGF0aCBhbmQvb3IgYSBVUkwuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2plY3RDb250ZXh0IHtcbiAgcmVhZG9ubHkgY3dkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dDogc3RyaW5nO1xuICAvKiogYG91dHB1dGAgd2hlbiBpdCBuYW1lcyBzb21ldGhpbmcgb24gZGlzay4gKi9cbiAgcmVhZG9ubHkgcGF0aD86IHN0cmluZztcbiAgLyoqIGBmcy5zdGF0YCBvZiB7QGxpbmsgcGF0aH0sIHdoZW4gaXQgZXhpc3RzLiAqL1xuICByZWFkb25seSBwYXRoU3RhdHM/OiBTdGF0cztcbiAgLyoqXG4gICAqIGBvdXRwdXRgIHBhcnNlZCBpbnRvIGEgY2hhaW5hYmxlIHtAbGluayBuZXQuVXJsQnVpbGRlcn0sIHdoZW4gaXQgaXMgYSByZWFsXG4gICAqIG5ldHdvcmsgVVJMIC0gYSBub24tYmxhbmsgc2NoZW1lIChub3QgYGZpbGU6YCkgQU5EIGEgbm9uLWJsYW5rIGhvc3RuYW1lLlxuICAgKiBCYXJlIHBhdGhzLCBzY3AtbGlrZSBgZ2l0QGhvc3Q6Li4uYCByZW1vdGVzLCBhbmQgYGZpbGU6YCBVUkxzIHN0YXkgdW5zZXQuXG4gICAqL1xuICByZWFkb25seSB1cmw/OiBuZXQuVXJsQnVpbGRlcjtcbn1cblxuLyoqXG4gKiBiZWNhdXNlIHRoaXMgaXMgY3J1Y2lhbCBkbyBub3QgdXNlIGV4ZWMuc3Bhd25TeW5jXG4gKlxuICogUnVuIGBjb21tYW5kIGFyZ3NgIGluIGBjd2RgIGFuZCBjbGFzc2lmeSBpdHMgc3Rkb3V0OiBgcGF0aGAgKyBgcGF0aFN0YXRzYCB3aGVuXG4gKiB0aGUgb3V0cHV0IG5hbWVzIHNvbWV0aGluZyBvbiBkaXNrLCBgdXJsYCAoYSB7QGxpbmsgbmV0LlVybEJ1aWxkZXJ9KSB3aGVuIGl0XG4gKiBwYXJzZXMgYXMgYSByZWFsIG5ldHdvcmsgVVJMLiBFbXB0eSB7QGxpbmsgUHJvamVjdENvbnRleHR9IG9uIGEgbm9uLXplcm8gZXhpdFxuICogb3IgZW1wdHkgb3V0cHV0LlxuICovXG5mdW5jdGlvbiBwcm9qZWN0Q29udGV4dENvbW1hbmRPdXRwdXQoY29tbWFuZDogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSwgY3dkOiBzdHJpbmcpOiBQcm9qZWN0Q29udGV4dCB7XG4gIGNvbnN0IHJlc3VsdCA9IHNwYXduU3luYyhjb21tYW5kLCBhcmdzLCB7IGN3ZCwgc3RkaW86IFtcImlnbm9yZVwiLCBcInBpcGVcIiwgXCJpZ25vcmVcIl0gfSk7XG4gIGNvbnN0IG91dHB1dCA9IHJlc3VsdD8uc3Rkb3V0Py50b1N0cmluZygpPy50cmltKCk7XG4gIGlmIChyZXN1bHQuc3RhdHVzID09PSAwICYmIG91dHB1dCkge1xuICAgIGNvbnN0IHBhdGhTdGF0cyA9IHN0YXQob3V0cHV0KTtcbiAgICAvLyBPbmx5IGFuIEVYUExJQ0lUIGBzY2hlbWU6Ly8uLi5gIGNvdW50cyBhcyBhIFVSTC4gYHVybEJ1aWxkZXJgIG90aGVyd2lzZVxuICAgIC8vIHN5bnRoZXNpemVzIG9uZSAoYSBiYXJlIGBleGFtcGxlLmNvbWAgLT4gYGh0dHBzOi8v4oCmYCwgYW4gYWJzb2x1dGUgcGF0aCAtPlxuICAgIC8vIGBodHRwOi8vbG9jYWxob3N0L+KApmApLCB3aGljaCB3b3VsZCBtaXNsYWJlbCBkaXJlY3Rvcnkgb3V0cHV0cyBhbmQgYmFyZVxuICAgIC8vIHRva2VucyAtIHNvIGdhdGUgb24gdGhlIHJhdyBvdXRwdXQgYWxyZWFkeSBjYXJyeWluZyBhIHNjaGVtZSArIGF1dGhvcml0eS5cbiAgICBjb25zdCB1cmwgPSAvXlthLXpdW2EtejAtOSsuLV0qOlxcL1xcLy9pLnRlc3Qob3V0cHV0KSA/IG5ldC51cmxCdWlsZGVyKG91dHB1dCkgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHsgY3dkLCBvdXRwdXQsIHBhdGg6IHBhdGhTdGF0cyA/IG91dHB1dCA6IHVuZGVmaW5lZCwgcGF0aFN0YXRzLCB1cmwgfTtcbiAgfVxuICByZXR1cm4geyBjd2QsIG91dHB1dCB9O1xufVxuXG4vKipcbiAqIHtAbGluayBwcm9qZWN0Q29udGV4dENvbW1hbmRPdXRwdXR9IHRocm91Z2ggdGhlIHByb2Nlc3MtY29udGV4dCBjYWNoZS5cbiAqXG4gKiBUaGVzZSBjb21tYW5kcyAoYG5wbSBwcmVmaXhgLCBgZ2l0IHJldi1wYXJzZWAsIGBnaCByZXBvIHZpZXdgKSBhcmUgcHVyZVxuICogZnVuY3Rpb25zIG9mIHRoZSBkaXJlY3RvcnkgdGhleSBydW4gaW4sIHNvIHRoZWlyIG91dHB1dCBpcyB3b3J0aCBrZWVwaW5nIC0gYnV0XG4gKiBvbmx5IHdoaWxlIHRoZSBwcm9jZXNzIGlzIHN0aWxsIElOIHRoYXQgZGlyZWN0b3J5LiB7QGxpbmsgY29udGV4dC5jYWNoZWR9XG4gKiBvd25zIHRoYXQgcnVsZTogdGhlIHNsb3QgcmVtZW1iZXJzIHRoZSBgY3dkYCBpdCB3YXMgbG9hZGVkIHVuZGVyIGFuZCBtaXNzZXNcbiAqIG9uY2UgdGhlIHByb2Nlc3MgbW92ZXMsIGFuZCBhIGxvb2t1cCBmb3Igc29tZSBPVEhFUiBkaXJlY3RvcnkgcnVucyB0aGUgY29tbWFuZFxuICogd2l0aG91dCBjYWNoaW5nLCBzbyBpdCBjYW4ndCBldmljdCB0aGUgaG90IGVudHJ5LiBUaGUgc2xvdCBuYW1lIGNhcnJpZXMgdGhlXG4gKiBjb21tYW5kIGFuZCBpdHMgYXJndW1lbnRzIChvcmRlci1zZW5zaXRpdmUpLCBzbyB0d28gY29tbWFuZHMgbmV2ZXIgc2hhcmUgb25lLlxuICovXG5mdW5jdGlvbiBwcm9qZWN0Q29udGV4dENvbW1hbmQoY29tbWFuZDogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSwgY3dkPzogc3RyaW5nKTogUHJvamVjdENvbnRleHQge1xuICByZXR1cm4gY29udGV4dC5jYWNoZWQoXG4gICAgW1wicHJvamVjdFwiLCBjb21tYW5kLCAuLi5hcmdzXSxcbiAgICAocmVzb2x2ZWQpID0+IHByb2plY3RDb250ZXh0Q29tbWFuZE91dHB1dChjb21tYW5kLCBhcmdzLCByZXNvbHZlZCA/PyByZXNvbHZlKGN3ZCA/PyBcIi5cIikpLFxuICAgIGN3ZCA/IHJlc29sdmUoY3dkKSA6IHVuZGVmaW5lZCxcbiAgKTtcbn1cblxuZnVuY3Rpb24gbnBtUm9vdChjd2Q/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBwYXJzZWQgPSBwcm9qZWN0Q29udGV4dENvbW1hbmQoXCJucG1cIiwgW1wicHJlZml4XCJdLCBjd2QpO1xuICByZXR1cm4gcGFyc2VkLnBhdGhTdGF0cz8uaXNEaXJlY3RvcnkoKSA/IHBhcnNlZC5wYXRoIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnaXRSb290KGN3ZD86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHBhcnNlZCA9IHByb2plY3RDb250ZXh0Q29tbWFuZChcImdpdFwiLCBbXCJyZXYtcGFyc2VcIiwgXCItLXNob3ctdG9wbGV2ZWxcIl0sIGN3ZCk7XG4gIHJldHVybiBwYXJzZWQucGF0aFN0YXRzPy5pc0RpcmVjdG9yeSgpID8gcGFyc2VkLnBhdGggOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByb290KGN3ZDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGxldCBjdXJyZW50ID0gcmVzb2x2ZShjd2QpO1xuXG4gIGlmICghc3RhdChjdXJyZW50KT8uaXNEaXJlY3RvcnkoKSkge1xuICAgIGN1cnJlbnQgPSBkaXJuYW1lKGN1cnJlbnQpO1xuICB9XG4gIGNvbnN0IGJvdW5kYXJpZXMgPSBuZXcgU2V0KFxuICAgIFtucG1Sb290KGN3ZCksIGdpdFJvb3QoY3dkKV1cbiAgICAgIC5maWx0ZXIoKHBhdGgpOiBwYXRoIGlzIHN0cmluZyA9PiBwYXRoICE9PSB1bmRlZmluZWQpXG4gICAgICAubWFwKChwYXRoKSA9PiByZXNvbHZlKHBhdGgpKSxcbiAgKTtcbiAgY29uc3QgaGFzQm91bmRhcnkgPSBib3VuZGFyaWVzLnNpemUgPiAwO1xuICBsZXQgYmVzdDogeyBkaXI6IHN0cmluZzsgcHJpb3JpdHk6IG51bWJlciB9IHwgdW5kZWZpbmVkO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIGZvciAoY29uc3QgW3ByaW9yaXR5LCBtYXJrZXJdIG9mIFJPT1RfTUFSS0VSUy5lbnRyaWVzKCkpIHtcbiAgICAgIGlmIChzdGF0KGpvaW4oY3VycmVudCwgbWFya2VyKSk/LmlzRmlsZSgpKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBiZXN0ID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICBwcmlvcml0eSA8IGJlc3QucHJpb3JpdHkgfHxcbiAgICAgICAgICAocHJpb3JpdHkgPT09IGJlc3QucHJpb3JpdHkgJiYgY3VycmVudC5sZW5ndGggPCBiZXN0LmRpci5sZW5ndGgpXG4gICAgICAgICkge1xuICAgICAgICAgIGJlc3QgPSB7IGRpcjogY3VycmVudCwgcHJpb3JpdHkgfTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFoYXNCb3VuZGFyeSAmJiBiZXN0KSB7XG4gICAgICByZXR1cm4gYmVzdC5kaXI7XG4gICAgfVxuICAgIGlmIChib3VuZGFyaWVzLmhhcyhjdXJyZW50KSkge1xuICAgICAgcmV0dXJuIGJlc3Q/LmRpcjtcbiAgICB9XG4gICAgY29uc3QgcGFyZW50ID0gZGlybmFtZShjdXJyZW50KTtcbiAgICBpZiAocGFyZW50ID09PSBjdXJyZW50KSB7XG4gICAgICByZXR1cm4gYmVzdD8uZGlyO1xuICAgIH1cbiAgICBjdXJyZW50ID0gcGFyZW50O1xuICB9XG59XG5cbi8qKlxuICogUGFyc2UgYSBnaXQgcmVtb3RlIFVSTCAoYGh0dHBzOi8vLi4uYCwgYGdpdEBob3N0Om93bmVyL3JlcG8uZ2l0YCwgZXRjLikgYW5kXG4gKiByZXR1cm4gdGhlIHJlcG8gc2VnbWVudCwgc3RyaXBwaW5nIGFueSBgLmdpdGAgc3VmZml4LiBSZXR1cm5zIGB1bmRlZmluZWRgIGZvclxuICogZW1wdHkgb3IgdW5wYXJzYWJsZSBpbnB1dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlR2l0UmVtb3RlKHVybDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdHJpbW1lZCA9IHVybC50cmltKCk7XG4gIGlmICghdHJpbW1lZCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBzY3AgPSAvXlteQF0rQFteOl0rOiguKykkL2kuZXhlYyh0cmltbWVkKTtcbiAgaWYgKHNjcCkgcmV0dXJuIGxhc3RQYXRoU2VnbWVudChzY3BbMV0gPz8gXCJcIik7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gdHJpbW1lZC5yZXBsYWNlKC9cXC5naXQkL2ksIFwiXCIpO1xuICAgIGNvbnN0IHBhdGhuYW1lID0gbmV3IFVSTChub3JtYWxpemVkKS5wYXRobmFtZTtcbiAgICBjb25zdCBzZWdtZW50ID0gcGF0aG5hbWUuc3BsaXQoXCIvXCIpLmZpbHRlcihCb29sZWFuKS5hdCgtMSk7XG4gICAgcmV0dXJuIHNlZ21lbnQgPyBsYXN0UGF0aFNlZ21lbnQoc2VnbWVudCkgOiB1bmRlZmluZWQ7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gbGFzdFBhdGhTZWdtZW50KHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHNlZ21lbnQgPSBwYXRoLnNwbGl0KFwiL1wiKS5maWx0ZXIoQm9vbGVhbikuYXQoLTEpID8/IHBhdGg7XG4gIHJldHVybiBzZWdtZW50LnJlcGxhY2UoL1xcLmdpdCQvaSwgXCJcIik7XG59XG5cbi8qKlxuICogWWllbGQgY2FuZGlkYXRlIHByb2plY3Qtcm9vdCBkaXJlY3RvcmllcyBmb3IgYGN3ZGAsIGluIHByaW9yaXR5IG9yZGVyOiB0aGVcbiAqIGBucG0gcHJlZml4YCwgdGhlIGdpdCB0b3AtbGV2ZWwsIHRoZW4gYGN3ZGAgaXRzZWxmLiBEdXBsaWNhdGVzIGFyZSBza2lwcGVkO1xuICogb25seSBleGlzdGluZyBkaXJlY3RvcmllcyBhcmUgeWllbGRlZCAoZXhjZXB0IHRoZSBmaW5hbCBgY3dkYCBmYWxsYmFjaykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiogcmVzb2x2ZVByb2plY3RSb290cyhjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCkpOiBHZW5lcmF0b3I8c3RyaW5nPiB7XG4gIGNvbnN0IGJhc2UgPSByZXNvbHZlKGN3ZCk7XG4gIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgW25wbVJvb3QoYmFzZSksIGdpdFJvb3QoYmFzZSldKSB7XG4gICAgaWYgKCFjYW5kaWRhdGUpIGNvbnRpbnVlO1xuICAgIGNvbnN0IGRpciA9IHJlc29sdmUoY2FuZGlkYXRlKTtcbiAgICBpZiAoc2Vlbi5oYXMoZGlyKSkgY29udGludWU7XG4gICAgc2Vlbi5hZGQoZGlyKTtcbiAgICBpZiAoc3RhdChkaXIpPy5pc0RpcmVjdG9yeSgpKSB5aWVsZCBkaXI7XG4gIH1cbiAgaWYgKCFzZWVuLmhhcyhiYXNlKSkgeWllbGQgYmFzZTtcbn1cblxuLyoqIFRoZSBuZWFyZXN0IGFuY2VzdG9yIG9mIGBjd2RgIChmcm9tIHtAbGluayByZXNvbHZlUHJvamVjdFJvb3RzfSkgd2l0aCBhIGBwYWNrYWdlLmpzb25gLiAqL1xuZnVuY3Rpb24gd29ya3NwYWNlUm9vdChjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCkpOiBzdHJpbmcge1xuICBsZXQgbGFzdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBmb3IgKGNvbnN0IGRpciBvZiByZXNvbHZlUHJvamVjdFJvb3RzKGN3ZCkpIHtcbiAgICBpZiAoc3RhdChyZXNvbHZlKGRpciwgXCJwYWNrYWdlLmpzb25cIikpPy5pc0ZpbGUoKSkgcmV0dXJuIGRpcjtcbiAgICBsYXN0ID0gZGlyO1xuICB9XG4gIHJldHVybiBsYXN0ID8/IHJlc29sdmUoY3dkKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGEgaHVtYW4tZnJpZW5kbHkgcHJvamVjdCBuYW1lIGZvciB0aGUgcmVwbyByb290ZWQgYXQgYGN3ZGA6XG4gKiBgcGFja2FnZS5qc29uYCBgbmFtZWAsIHRoZW4gdGhlIGdpdCByZW1vdGUncyByZXBvIG5hbWUsIHRoZW4gdGhlIHJvb3RcbiAqIGRpcmVjdG9yeSdzIGJhc2VuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmFtZShjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCkpOiBzdHJpbmcge1xuICBjb25zdCByb290RGlyID0gd29ya3NwYWNlUm9vdChjd2QpO1xuXG4gIGNvbnN0IGZyb21QYWNrYWdlID0gcmVhZFBhY2thZ2VOYW1lKHJlc29sdmUocm9vdERpciwgXCJwYWNrYWdlLmpzb25cIikpO1xuICBpZiAoZnJvbVBhY2thZ2UpIHJldHVybiBmcm9tUGFja2FnZTtcblxuICBjb25zdCByZW1vdGUgPSBwcm9qZWN0Q29udGV4dENvbW1hbmQoXG4gICAgXCJnaXRcIixcbiAgICBbXCItQ1wiLCByb290RGlyLCBcInJlbW90ZVwiLCBcImdldC11cmxcIiwgXCJvcmlnaW5cIl0sXG4gICAgcm9vdERpcixcbiAgKS5vdXRwdXQ7XG4gIGNvbnN0IGZyb21HaXQgPSByZW1vdGUgPyBwYXJzZUdpdFJlbW90ZShyZW1vdGUpIDogdW5kZWZpbmVkO1xuICBpZiAoZnJvbUdpdCkgcmV0dXJuIGZyb21HaXQ7XG5cbiAgcmV0dXJuIGJhc2VuYW1lKHJvb3REaXIpO1xufVxuXG4vKipcbiAqIFRoZSBHaXRIdWIgQ0xJJ3MgY2Fub25pY2FsIHJlcG8gVVJMIC0gdGhlIGVhc3kgcGF0aC4gYGdoYCBhbHJlYWR5IHJlc29sdmVzIHRoZVxuICogdHJ1ZSBob3N0IChubyBzc2gtYWxpYXMgcGFyc2luZykgYW5kIHByaW50cyBhIGNsZWFuIGBodHRwczovL2hvc3Qvb3duZXIvcmVwb2AuXG4gKiBgdW5kZWZpbmVkYCB3aGVuIGBnaGAgaXMgYWJzZW50LCB1bmF1dGhlbnRpY2F0ZWQsIG9yIHRoZSBkaXIgaXNuJ3QgYSBHSCByZXBvLlxuICovXG5mdW5jdGlvbiByZXBvc2l0b3J5VXJsRnJvbUdoKGN3ZD86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG91dCA9IHByb2plY3RDb250ZXh0Q29tbWFuZChcImdoXCIsIFtcInJlcG9cIiwgXCJ2aWV3XCIsIFwiLS1qc29uXCIsIFwidXJsXCJdLCBjd2QpLm91dHB1dDtcbiAgcmV0dXJuIHN0cmluZy50cmltVG9OdWxsKGpzb24ucGFyc2VSZWNvcmQob3V0KT8udXJsKSA/PyB1bmRlZmluZWQ7XG59XG5cbi8qKiBSZXNvbHZlIGFuIHNzaCBob3N0IGFsaWFzIChgfi8uc3NoL2NvbmZpZ2ApIHRvIGl0cyBlZmZlY3RpdmUgYGhvc3RuYW1lYCB2aWEgYHNzaCAtR2AuICovXG5mdW5jdGlvbiByZXNvbHZlU3NoSG9zdE5hbWUoaG9zdDogc3RyaW5nLCBjd2Q/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBsaW5lID0gcHJvamVjdENvbnRleHRDb21tYW5kKFwic3NoXCIsIFtcIi1HXCIsIGhvc3RdLCBjd2QpXG4gICAgLm91dHB1dD8uc3BsaXQoXCJcXG5cIilcbiAgICAuZmluZCgobCkgPT4gL15ob3N0bmFtZVxccy9pLnRlc3QobC50cmltKCkpKTtcbiAgY29uc3QgbmFtZSA9IGxpbmU/LnRyaW0oKS5zcGxpdCgvXFxzKy8pWzFdO1xuICByZXR1cm4gbmFtZSAmJiBuYW1lICE9PSBob3N0ID8gbmFtZSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBGYWxsYmFjazogbm9ybWFsaXplIGBnaXQgcmVtb3RlIGdldC11cmwgb3JpZ2luYCB0byBhIHBsYWluXG4gKiBgaHR0cHM6Ly9ob3N0L293bmVyL3JlcG9gIFVSTC4gc2NwLWxpa2UgLyBgc3NoOi8vYCAvIGBnaXQ6Ly9gIC9cbiAqIGVtYmVkZGVkLWNyZWRlbnRpYWwgZm9ybXMgYXJlIHJld3JpdHRlbiB0byBodHRwcywgYW5kIGFuIHNzaCBob3N0IGFsaWFzIGlzXG4gKiBmb2xsb3dlZCB0byBpdHMgcmVhbCBob3N0bmFtZS5cbiAqL1xuZnVuY3Rpb24gcmVwb3NpdG9yeVVybEZyb21HaXQoY3dkPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcmF3ID0gcHJvamVjdENvbnRleHRDb21tYW5kKFwiZ2l0XCIsIFtcInJlbW90ZVwiLCBcImdldC11cmxcIiwgXCJvcmlnaW5cIl0sIGN3ZCkub3V0cHV0O1xuICBpZiAoIXJhdykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAvLyBOb3JtYWxpemUgdGhlIHNjaGVtZSB0byBodHRwcyBhdCB0aGUgc3RyaW5nIGxldmVsIGZpcnN0OiB0aGUgV0hBVFdHIGBVUkxgXG4gIC8vIHBhcnNlciBjYW4ndCBjb252ZXJ0IGEgbm9uLXNwZWNpYWwgc2NoZW1lIChgc3NoYC9gZ2l0YCkgdG8gYGh0dHBzYCAodGhlXG4gIC8vIGBwcm90b2NvbGAgc2V0dGVyIG5vLW9wcyksIGFuZCBzY3AtbGlrZSBgZ2l0QGhvc3Q6b3duZXIvcmVwb2AgaXNuJ3QgYSBVUkwgYXRcbiAgLy8gYWxsLiBSZXdyaXRlIGJvdGggaW50byBhbiBgaHR0cHM6Ly9gIHN0cmluZywgdGhlbiBsZXQge0BsaW5rIG5ldC51cmxCdWlsZGVyfVxuICAvLyBvd24gdGhlIHN0cnVjdHVyZWQgZWRpdHMgKHN0cmlwIGNyZWRlbnRpYWxzLCBzd2FwIHRoZSBob3N0KS5cbiAgbGV0IGh0dHBzID0gcmF3LnJlcGxhY2UoL15naXRcXCsvLCBcIlwiKTtcbiAgY29uc3Qgc2NwID0gL15bXkBdK0AoW146XSspOiguKykkLy5leGVjKGh0dHBzKTtcbiAgaWYgKHNjcCkgaHR0cHMgPSBgaHR0cHM6Ly8ke3NjcFsxXX0vJHtzY3BbMl19YDtcbiAgaHR0cHMgPSBodHRwcy5yZXBsYWNlKC9eKHNzaHxnaXQpOlxcL1xcLy8sIFwiaHR0cHM6Ly9cIik7XG5cbiAgbGV0IGJ1aWxkZXIgPSBuZXQudXJsQnVpbGRlcihodHRwcyk7XG4gIGlmICghYnVpbGRlcikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgLy8gRHJvcCBhbnkgZW1iZWRkZWQgYHVzZXJbOnBhc3NdQGAgY3JlZGVudGlhbHMuXG4gIGlmIChidWlsZGVyLnVzZXJuYW1lIHx8IGJ1aWxkZXIucGFzc3dvcmQpIHtcbiAgICBidWlsZGVyID0gYnVpbGRlci53aXRoKFwidXNlcm5hbWVcIiwgXCJcIikud2l0aChcInBhc3N3b3JkXCIsIFwiXCIpO1xuICB9XG4gIC8vIEZvbGxvdyBhbiBzc2ggaG9zdCBhbGlhcyB0byB0aGUgdHJ1ZSBob3N0IChzbyBgZ2l0aHViLXJlZ2dpZS1kYmAgLT4gYGdpdGh1Yi5jb21gKS5cbiAgY29uc3QgcmVhbEhvc3QgPSByZXNvbHZlU3NoSG9zdE5hbWUoYnVpbGRlci5ob3N0bmFtZSwgY3dkKTtcbiAgaWYgKHJlYWxIb3N0KSBidWlsZGVyID0gYnVpbGRlci53aXRoKFwiaG9zdG5hbWVcIiwgcmVhbEhvc3QpO1xuXG4gIHJldHVybiBgJHtidWlsZGVyLm9yaWdpbn0ke2J1aWxkZXIucGF0aG5hbWUucmVwbGFjZSgvXFwuZ2l0JC8sIFwiXCIpfWA7XG59XG5cbi8qKlxuICogVGhlIHJlcG8ncyBjYW5vbmljYWwgcmVtb3RlIFVSTCwgb3IgYHVuZGVmaW5lZGAgd2hlbiB0aGVyZSBpcyBubyBnaXQgcmVtb3RlLlxuICogVHJpZXMgYGdoIHJlcG8gdmlld2AgZmlyc3QgKGhvc3QtYWNjdXJhdGUsIG5vIHBhcnNpbmcpLCB0aGVuIG5vcm1hbGl6ZXNcbiAqIGBnaXQgcmVtb3RlIGdldC11cmwgb3JpZ2luYC4gQm90aCB1bmRlcmx5aW5nIGNvbW1hbmRzIGFyZSBjYWNoZWQgcGVyIGBjd2RgIHZpYVxuICoge0BsaW5rIHByb2plY3RDb250ZXh0Q29tbWFuZH0uXG4gKlxuICogQHBhcmFtIGN3ZCAtIGRpcmVjdG9yeSB0byByZXNvbHZlIGZyb20gKGRlZmF1bHRzIHRvIGBwcm9jZXNzLmN3ZCgpYCkuXG4gKiBAcGFyYW0gZm9ybWF0IC0gYFwiaHR0cHNcImAgKGRlZmF1bHQpIHlpZWxkcyBgaHR0cHM6Ly9ob3N0L293bmVyL3JlcG9gO1xuICogICBgXCJucG1cImAgeWllbGRzIG5wbSdzIGBnaXQraHR0cHM6Ly9ob3N0L293bmVyL3JlcG8uZ2l0YCBmb3JtIChmb3IgYVxuICogICBgcGFja2FnZS5qc29uYCBgcmVwb3NpdG9yeS51cmxgIHRoYXQgcGFzc2VzIG5wbSBwcm92ZW5hbmNlKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcG9zaXRvcnlVcmwoXG4gIGN3ZDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKSxcbiAgZm9ybWF0OiBcImh0dHBzXCIgfCBcIm5wbVwiID0gXCJodHRwc1wiLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgaHR0cHMgPSByZXBvc2l0b3J5VXJsRnJvbUdoKGN3ZCkgPz8gcmVwb3NpdG9yeVVybEZyb21HaXQoY3dkKTtcbiAgaWYgKCFodHRwcykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIGZvcm1hdCA9PT0gXCJucG1cIiA/IGBnaXQrJHtodHRwcy5yZXBsYWNlKC9cXC5naXQkLywgXCJcIil9LmdpdGAgOiBodHRwcztcbn1cblxuLyoqXG4gKiBUaGUgYWN0aXZlIG5wbSByZWdpc3RyeSAoYG5wbSBjb25maWcgZ2V0IHJlZ2lzdHJ5YCkgYXMgYSBjaGFpbmFibGVcbiAqIHtAbGluayBuZXQuVXJsQnVpbGRlcn0sIG9yIGB1bmRlZmluZWRgIHdoZW4gbnBtIGlzIGFic2VudCBvciBwcmludHMgbm8gVVJMLlxuICogQ2FjaGVkIHBlciBgY3dkYCB2aWEge0BsaW5rIHByb2plY3RDb250ZXh0Q29tbWFuZH0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBucG1SZWdpc3RyeShcbiAgY3dkPzogc3RyaW5nIHwgbnVsbCxcbiAgb3B0aW9ucz86IHsgb3ZlcnJpZGVPbmx5PzogYm9vbGVhbjsgZW52VmFycz86IGJvb2xlYW4gfSxcbik6IG5ldC5VcmxCdWlsZGVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgY2FuZGlkYXRlcyA9IChmdW5jdGlvbiogKCkge1xuICAgIHlpZWxkIHByb2plY3RDb250ZXh0Q29tbWFuZChcbiAgICAgIFwibnBtXCIsXG4gICAgICBbXCJjb25maWdcIiwgXCJnZXRcIiwgXCJyZWdpc3RyeVwiXSxcbiAgICAgIGN3ZCA/PyB1bmRlZmluZWQsXG4gICAgKS5vdXRwdXQ/LnRyaW0oKTtcbiAgICBpZiAodHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgcHJvY2Vzcz8uZW52KSB7XG4gICAgICBjb25zdCBlbnZLZXkgPSBcIm5wbV9jb25maWdfcmVnaXN0cnlcIjtcbiAgICAgIGlmIChvcHRpb25zPy5lbnZWYXJzKSB7XG4gICAgICAgIHlpZWxkIHByb2Nlc3MuZW52W2VudktleV07XG4gICAgICAgIHlpZWxkIHByb2Nlc3MuZW52W2VudktleS50b1VwcGVyQ2FzZSgpXTtcbiAgICAgIH1cbiAgICB9XG4gIH0pKCk7XG4gIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpIHtcbiAgICBpZiAoY2FuZGlkYXRlKSB7XG4gICAgICBjb25zdCB1cmwgPSBuZXQudXJsQnVpbGRlcihjYW5kaWRhdGUpO1xuICAgICAgaWYgKCF1cmwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbnM/Lm92ZXJyaWRlT25seSkge1xuICAgICAgICBjb25zdCBucG1qc1JlZ2lzdHJ5VXJsID0gXCJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZ1wiO1xuICAgICAgICBjb25zdCByZWdpc3RyeVVybCA9IHVybC50b1N0cmluZygpO1xuICAgICAgICBpZiAocmVnaXN0cnlVcmwgPT09IG5wbWpzUmVnaXN0cnlVcmwgfHwgcmVnaXN0cnlVcmwuc3RhcnRzV2l0aChucG1qc1JlZ2lzdHJ5VXJsICsgXCIvXCIpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHJlYWRQYWNrYWdlTmFtZShwa2dQYXRoOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIXN0YXQocGtnUGF0aCk/LmlzRmlsZSgpKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gc3RyaW5nLnRyaW1Ub051bGwoanNvbi5wYXJzZVJlY29yZChyZWFkRmlsZVN5bmMocGtnUGF0aCwgXCJ1dGY4XCIpKT8ubmFtZSkgPz8gdW5kZWZpbmVkO1xufVxuXG5pZiAoaW1wb3J0Lm1ldGEubWFpbikge1xuICBjb25zb2xlLmxvZyhcIm5wbSByb290OlwiLCBucG1Sb290KCkpO1xuICBjb25zb2xlLmxvZyhcInJlcG8gcm9vdDpcIiwgZ2l0Um9vdCgpKTtcbiAgY29uc29sZS5sb2coXCJwYWNrYWdlIHJvb3Q6XCIsIHJvb3QoKSk7XG4gIGNvbnNvbGUubG9nKFwicHJvamVjdCBuYW1lOlwiLCBuYW1lKCkpO1xuICBjb25zb2xlLmxvZyhcInJlcG9zaXRvcnkgdXJsOlwiLCByZXBvc2l0b3J5VXJsKCkpO1xuICBjb25zb2xlLmxvZyhcInJlcG9zaXRvcnkgdXJsIChucG0pOlwiLCByZXBvc2l0b3J5VXJsKHByb2Nlc3MuY3dkKCksIFwibnBtXCIpKTtcbn1cbiJdfQ==
|
package/lib/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/bin.ts","../src/brand.ts","../src/exec.ts","../src/file-lock.ts","../src/file.ts","../src/process-lock.ts","../src/project.ts","../index.ts"],"version":"5.9.3"}
|
|
1
|
+
{"root":["../src/bin.ts","../src/brand.ts","../src/config.ts","../src/exec.ts","../src/file-lock.ts","../src/file.ts","../src/process-lock.ts","../src/project.ts","../index.ts"],"version":"5.9.3"}
|
package/package.json
CHANGED
|
@@ -23,10 +23,11 @@
|
|
|
23
23
|
"typescript": "^5.9.3"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@dbx-tools/shared-core": "0.6.
|
|
26
|
+
"@dbx-tools/shared-core": "0.6.86",
|
|
27
27
|
"extract-zip": "^2.0.1",
|
|
28
28
|
"tar": "^7.5.22",
|
|
29
|
-
"yaml": "^2.9.0"
|
|
29
|
+
"yaml": "^2.9.0",
|
|
30
|
+
"zod": "4.3.6"
|
|
30
31
|
},
|
|
31
32
|
"main": "./lib/index.js",
|
|
32
33
|
"license": "UNLICENSED",
|
|
@@ -42,7 +43,7 @@
|
|
|
42
43
|
"./package.json": "./package.json"
|
|
43
44
|
}
|
|
44
45
|
},
|
|
45
|
-
"version": "0.6.
|
|
46
|
+
"version": "0.6.86",
|
|
46
47
|
"types": "./lib/index.d.ts",
|
|
47
48
|
"type": "module",
|
|
48
49
|
"exports": {
|