@witnet/sdk 1.0.7 → 1.0.8
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 +4 -4
- package/dist/package.json +2 -3
- package/dist/src/bin/helpers.js +3 -3
- package/package.json +2 -3
- package/src/bin/cli/radon.js +3 -3
- package/src/bin/helpers.js +2 -2
- package/src/bin/toolkit.js +1 -1
package/README.md
CHANGED
|
@@ -76,9 +76,9 @@ WITNET_TOOLKIT_REPORTER_URL=
|
|
|
76
76
|
|
|
77
77
|
### General-purpose usage
|
|
78
78
|
```
|
|
79
|
-
$ npx
|
|
79
|
+
$ npx witsdk
|
|
80
80
|
USAGE:
|
|
81
|
-
npx
|
|
81
|
+
npx witsdk [FLAGS] <COMMAND>
|
|
82
82
|
|
|
83
83
|
FLAGS:
|
|
84
84
|
--help Describes command or subcommand usage
|
|
@@ -95,9 +95,9 @@ COMMANDS:
|
|
|
95
95
|
```
|
|
96
96
|
### Setting up your own Radon assets workspace
|
|
97
97
|
```
|
|
98
|
-
$ npx
|
|
98
|
+
$ npx witsdk radon init
|
|
99
99
|
...
|
|
100
100
|
|
|
101
|
-
$ npx
|
|
101
|
+
$ npx witsdk radon
|
|
102
102
|
...
|
|
103
103
|
```
|
package/dist/package.json
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@witnet/sdk",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.8",
|
|
4
4
|
"description": "Typescript library and CLI tooling for Web3 buidlers willing to interact with the Witnet blockchain.",
|
|
5
5
|
"author": "Witnet Foundation",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"private": false,
|
|
8
8
|
"type": "commonjs",
|
|
9
9
|
"bin": {
|
|
10
|
-
"
|
|
11
|
-
"witnet-toolkit": "src/bin/toolkit.js",
|
|
10
|
+
"witsdk": "src/bin/toolkit.js",
|
|
12
11
|
"witnet-sdk": "src/bin/toolkit.js"
|
|
13
12
|
},
|
|
14
13
|
"files": [
|
package/dist/src/bin/helpers.js
CHANGED
|
@@ -291,14 +291,14 @@ function showUsageHeadline(cmd, subcmd, module) {
|
|
|
291
291
|
params = optionalize(params);
|
|
292
292
|
}
|
|
293
293
|
}
|
|
294
|
-
console.info(` ${white(`npx
|
|
294
|
+
console.info(` ${white(`npx witsdk ${cmd}`)} ${white(subcmd)} ${params ? green(params) + " " : ""}[OPTIONS] [FLAGS]`);
|
|
295
295
|
if (module?.router[subcmd]?.hint) {
|
|
296
296
|
console.info("\nDESCRIPTION:");
|
|
297
297
|
console.info(` ${module.router[subcmd].hint}`);
|
|
298
298
|
}
|
|
299
299
|
}
|
|
300
300
|
else {
|
|
301
|
-
console.info(` ${white(`npx
|
|
301
|
+
console.info(` ${white(`npx witsdk ${cmd}`)} <SUBCOMMAND> ... [OPTIONS] [FLAGS]`);
|
|
302
302
|
}
|
|
303
303
|
}
|
|
304
304
|
function showUsageOptions(options) {
|
|
@@ -823,4 +823,4 @@ module.exports = {
|
|
|
823
823
|
spliceWildcard,
|
|
824
824
|
txJsonReplacer,
|
|
825
825
|
};
|
|
826
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW4vaGVscGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUN6QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7QUFDaEMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzFCLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN4QixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7QUFFcEMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQ3JDLDZFQUE2RSxFQUFFLEVBQUUsQ0FDbEYsQ0FBQTtBQUVELE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUU7SUFDeEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMxQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7UUFDOUIsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsRUFBRTtRQUNyRCxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ25FLE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyxDQUFBO0FBRUQsU0FBUyxZQUFZLENBQUUsQ0FBQyxFQUFFLENBQUM7SUFDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQy9ELElBQUksQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ2xCLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ3BELE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQTtJQUM3QixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFBO0FBQ3ZCLENBQUM7QUFBQSxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7SUFDcEMsTUFBTSxNQUFNLEdBQUc7UUFDYixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtRQUMvQixFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7UUFDckMsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO1FBQ3JDLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtRQUN0QyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7S0FDdkMsQ0FBQTtJQUNELHlDQUF5QztJQUN6QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMxRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDL0UsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDOUcsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFBO0FBQzVILENBQUMsQ0FBQTtBQUVELE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsR0FBRyxhQUFhLENBQUE7QUFDdkQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFDbkQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFDcEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFDbEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFFckQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDaEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDaEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDakQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbkQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDOUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDOUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDL0MsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbkQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFFaEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDOUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDL0MsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDNUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDaEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFFL0MsU0FBUyxXQUFXLENBQUUsQ0FBQyxFQUFFLEdBQUc7SUFDMUIsSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxDQUFDLENBQUE7SUFDN0MsSUFBSSxHQUFHLFlBQVksQ0FBQztRQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzlCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTs7UUFDbEYsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcs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UUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9DLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQzdELENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBRSxPQUFPLEVBQUUsT0FBTztJQUNuQyxNQUFNLFNBQVMsR0FBRyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFDNUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNuQyxNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzNGLElBQUksQ0FBQyxPQUFPO1FBQUUsT0FBTyxHQUFHLEVBQUUsQ0FBQTtJQUMxQixNQUFNLE1BQU0sR0FBRyxPQUFPLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQTtJQUNwQyxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN4RSxNQUFNLGNBQWMsR0FBRyxPQUFPLEVBQUUsY0FBYyxJQUFJLEVBQUUsQ0FBQTtJQUNwRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBQzVDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxFQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzlELElBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7UUFDOUcsSUFBSSxPQUFPLEVBQUUsU0FBUyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuRCxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDM0YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUE7SUFDM0MsQ0FBQyxDQUFDLENBQUE7SUFDRixJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUNuRSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3BELElBQUksT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ3ZCLFFBQVEsR0FBRyxPQUFPLENBQUMsTUFBTSxD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ImNoaWxkX3Byb2Nlc3NcIilcclxuY29uc3QgbW9tZW50ID0gcmVxdWlyZShcIm1vbWVudFwiKVxyXG5jb25zdCBuZXQgPSByZXF1aXJlKFwibmV0XCIpXHJcbmNvbnN0IG9zID0gcmVxdWlyZShcIm9zXCIpXHJcbmNvbnN0IHJlYWRsaW5lID0gcmVxdWlyZShcInJlYWRsaW5lXCIpXHJcblxyXG5jb25zdCBjb2xvcnN0cmlwID0gKHN0cikgPT4gc3RyLnJlcGxhY2UoXHJcbiAgL1tcXHUwMDFiXFx1MDA5Yl1bWygpIzs/XSooPzpbMC05XXsxLDR9KD86O1swLTldezAsNH0pKik/WzAtOUEtT1JaY2YtbnFyeT0+PF0vZywgXCJcIlxyXG4pXHJcblxyXG5jb25zdCBjb21tYXMgPSAobnVtYmVyKSA9PiB7XHJcbiAgY29uc3QgcGFydHMgPSBudW1iZXIudG9TdHJpbmcoKS5zcGxpdChcIi5cIilcclxuICBjb25zdCByZXN1bHQgPSBwYXJ0cy5sZW5ndGggPD0gMVxyXG4gICAgPyBgJHtwYXJ0c1swXS5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIixcIil9YFxyXG4gICAgOiBgJHtwYXJ0c1swXS5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIixcIil9LiR7cGFydHNbMV19YFxyXG4gIHJldHVybiByZXN1bHRcclxufVxyXG5cclxuZnVuY3Rpb24gdG9GaXhlZFRydW5jICh4LCBuKSB7XHJcbiAgY29uc3QgdiA9ICh0eXBlb2YgeCA9PT0gXCJzdHJpbmdcIiA/IHggOiB4LnRvU3RyaW5nKCkpLnNwbGl0KFwiLlwiKVxyXG4gIGlmIChuIDw9IDApIHJldHVybiB2WzBdXHJcbiAgbGV0IGYgPSB2WzFdIHx8IFwiXCJcclxuICBpZiAoZi5sZW5ndGggPiBuKSByZXR1cm4gYCR7dlswXX0uJHtmLnN1YnN0cigwLCBuKX1gXHJcbiAgd2hpbGUgKGYubGVuZ3RoIDwgbikgZiArPSBcIjBcIlxyXG4gIHJldHVybiBgJHt2WzBdfS4ke2Z9YFxyXG59O1xyXG5cclxuY29uc3Qgd2hvbGVfd2l0cyA9IChudW1iZXIsIGRpZ2l0cykgPT4ge1xyXG4gIGNvbnN0IGxvb2t1cCA9IFtcclxuICAgIHsgdmFsdWU6IDFuLCBzeW1ib2w6IFwicGVkcm9zXCIgfSxcclxuICAgIHsgdmFsdWU6IDEwbiAqKiA2biwgc3ltYm9sOiBcIm1XaXRzXCIgfSxcclxuICAgIHsgdmFsdWU6IDEwbiAqKiA5biwgc3ltYm9sOiBcIiBXaXRzXCIgfSxcclxuICAgIHsgdmFsdWU6IDEwbiAqKiAxMm4sIHN5bWJvbDogXCJLV2l0c1wiIH0sXHJcbiAgICB7IHZhbHVlOiAxMG4gKiogMTVuLCBzeW1ib2w6IFwiTVdpdHNcIiB9LFxyXG4gIF1cclxuICAvLyBjb25zdCByZWdleHAgPSAvXFwuMCskfCg/PD1cXC5bMC05XSkwKyQvXHJcbiAgY29uc3QgaXRlbSA9IGxvb2t1cC5maW5kTGFzdChpdGVtID0+IG51bWJlciA+PSBpdGVtLnZhbHVlKVxyXG4gIGNvbnN0IHF1b3RpZW50ID0gaXRlbSA/IE51bWJlcihCaWdJbnQobnVtYmVyKSAvIGl0ZW0udmFsdWUpIDogbnVtYmVyLnRvU3RyaW5nKClcclxuICBjb25zdCBkZWNpbWFscyA9IGl0ZW0gPyAoaXRlbS52YWx1ZSArIEJpZ0ludChudW1iZXIpIC0gQmlnSW50KHF1b3RpZW50KSAqIGl0ZW0udmFsdWUpLnRvU3RyaW5nKCkuc2xpY2UoMSkgOiBcIlwiXHJcbiAgcmV0dXJuIGl0ZW0gPyBgJHtjb21tYXMocXVvdGllbnQpfSR7ZGVjaW1hbHMgIT09IFwiXCIgPyBgLiR7ZGVjaW1hbHMuc2xpY2UoMCwgZGlnaXRzKX1gIDogXCJcIn0gJHtpdGVtLnN5bWJvbH1gIDogXCIobm8gY29pbnMpXCJcclxufVxyXG5cclxuY29uc3QgYmJsdWUgPSAoc3RyKSA9PiBgXFx4MWJbMTs5ODs0NG0ke3N0cn1cXHgxYlswOzA7MG1gXHJcbmNvbnN0IGJjeWFuID0gKHN0cikgPT4gYFxceDFiWzM4OzQ2bSR7c3RyfVxceDFiWzA7MG1gXHJcbmNvbnN0IGJncmVlbiA9IChzdHIpID0+IGBcXHgxYlszMDs0Mm0ke3N0cn1cXHgxYlswOzBtYFxyXG5jb25zdCBicmVkID0gKHN0cikgPT4gYFxceDFiWzMwOzQxbSR7c3RyfVxceDFiWzA7MG1gXHJcbmNvbnN0IGJ2aW9sZXQgPSAoc3RyKSA9PiBgXFx4MWJbMzA7NDVtJHtzdHJ9XFx4MWJbMDswbWBcclxuXHJcbmNvbnN0IGxjeWFuID0gKHN0cikgPT4gYFxceDFiWzE7OTZtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IGxncmF5ID0gKHN0cikgPT4gYFxceDFiWzE7OTBtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IGxncmVlbiA9IChzdHIpID0+IGBcXHgxYlsxOzkybSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBsbWFnZW50YSA9IChzdHIpID0+IGBcXHgxYlsxOzk1bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBseWVsbG93ID0gKHN0cikgPT4gYFxceDFiWzE7OTNtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IG1ibHVlID0gKHN0cikgPT4gYFxceDFiWzk0bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBtY3lhbiA9IChzdHIpID0+IGBcXHgxYls5Nm0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgbWdyZWVuID0gKHN0cikgPT4gYFxceDFiWzkybSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBtbWFnZW50YSA9IChzdHIpID0+IGBcXHgxYlswOzk1bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBtcmVkID0gKHN0cikgPT4gYFxceDFiWzkxbSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBteWVsbG93ID0gKHN0cikgPT4gYFxceDFiWzkzbSR7c3RyfVxceDFiWzBtYFxyXG5cclxuY29uc3QgYmx1ZSA9IChzdHIpID0+IGBcXHgxYlszNG0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgY3lhbiA9IChzdHIpID0+IGBcXHgxYlszNm0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgZ3JheSA9IChzdHIpID0+IGBcXHgxYls5MG0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgZ3JlZW4gPSAoc3RyKSA9PiBgXFx4MWJbMzJtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IG1hZ2VudGEgPSAoc3RyKSA9PiBgXFx4MWJbMDszNW0ke3N0cn1cXHgxYlswbWBcclxuY29uc3Qgbm9ybWFsID0gKHN0cikgPT4gYFxceDFiWzk4bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCByZWQgPSAoc3RyKSA9PiBgXFx4MWJbMzFtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IHdoaXRlID0gKHN0cikgPT4gYFxceDFiWzE7OThtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IHllbGxvdyA9IChzdHIpID0+IGBcXHgxYlszM20ke3N0cn1cXHgxYlswbWBcclxuXHJcbmZ1bmN0aW9uIGNvdW50TGVhdmVzICh0LCBvYmopIHtcclxuICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSByZXR1cm4gMFxyXG4gIGlmIChvYmogaW5zdGFuY2VvZiB0KSByZXR1cm4gMVxyXG4gIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHJldHVybiBvYmoucmVkdWNlKChzdW0sIGl0ZW0pID0+IHN1bSArIGNvdW50TGVhdmVzKHQsIGl0ZW0pLCAwKVxyXG4gIGVsc2UgcmV0dXJuIE9iamVjdC52YWx1ZXMob2JqKS5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgY291bnRMZWF2ZXModCwgaXRlbSksIDApXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRlbGV0ZUV4dHJhRmxhZ3MgKGFyZ3MpIHtcclxuICByZXR1cm4gYXJncy5maWx0ZXIoYXJnID0+ICFhcmcuc3RhcnRzV2l0aChcIi0tXCIpKVxyXG59XHJcblxyXG5mdW5jdGlvbiBjbWQgKC4uLmNvbW1hbmQpIHtcclxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgZXhlYyhjb21tYW5kLmpvaW4oXCIgXCIpLCB7IG1heEJ1ZmZlcjogMTAyNCAqIDEwMjQgKiAxMCB9LCAoZXJyb3IsIHN0ZG91dCwgc3RkZXJyKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgIHJlamVjdChlcnJvcilcclxuICAgICAgfVxyXG4gICAgICBpZiAoc3RkZXJyKSB7XHJcbiAgICAgICAgcmVqZWN0KHN0ZGVycilcclxuICAgICAgfVxyXG4gICAgICByZXNvbHZlKHN0ZG91dClcclxuICAgIH0pXHJcbiAgfSlcclxufTtcclxuXHJcbmFzeW5jIGZ1bmN0aW9uIGV4ZWNSYWRvbkJ5dGVjb2RlIChieXRlY29kZSwgLi4uZmxhZ3MpIHtcclxuICBpZiAoIWlzSGV4U3RyaW5nKGJ5dGVjb2RlKSkge1xyXG4gICAgdGhyb3cgRXZhbEVycm9yKFwiaW52YWxpZCBoZXggc3RyaW5nXCIpXHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnN0IG5weCA9IG9zLnR5cGUoKSA9PT0gXCJXaW5kb3dzX05UXCIgPyBcIm5weC5jbWRcIiA6IFwibnB4XCJcclxuICAgIHJldHVybiBjbWQobnB4LCBcIndpdG5ldFwiLCBcInJhZG9uXCIsIFwiZHJ5LXJ1blwiLCBieXRlY29kZSwgLi4uZmxhZ3MpXHJcbiAgICAvLyAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgLy8gICAgIGxldCBlcnJvck1lc3NhZ2UgPSBlcnIubWVzc2FnZS5zcGxpdCgnXFxuJykuc2xpY2UoMSkuam9pbignXFxuJykudHJpbSgpXHJcbiAgICAvLyAgICAgY29uc3QgZXJyb3JSZWdleCA9IC8uKl5lcnJvcjogKD88bWVzc2FnZT4uKikkLiovZ21cclxuICAgIC8vICAgICBjb25zdCBtYXRjaGVkID0gZXJyb3JSZWdleC5leGVjKGVyci5tZXNzYWdlKVxyXG4gICAgLy8gICAgIGlmIChtYXRjaGVkKSB7XHJcbiAgICAvLyAgICAgICAgIGVycm9yTWVzc2FnZSA9IG1hdGNoZWQuZ3JvdXBzLm1lc3NhZ2VcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgY29uc29sZS5sb2coZXJyb3JNZXNzYWdlIHx8IGVycilcclxuICAgIC8vICAgICBjb25zb2xlLmVycm9yKGVycm9yTWVzc2FnZSB8fCBlcnIpXHJcbiAgICAvLyB9KVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZXh0cmFjdEZyb21BcmdzIChhcmdzLCBmbGFncykge1xyXG4gIGNvbnN0IGN1cmF0ZWQgPSB7fVxyXG4gIGlmIChhcmdzICYmIGZsYWdzKSB7XHJcbiAgICBPYmplY3Qua2V5cyhmbGFncykuZm9yRWFjaChmbGFnID0+IHtcclxuICAgICAgY29uc3QgZmxhZ0luZGV4ID0gYXJncy5pbmRleE9mKGAtLSR7ZmxhZ31gKVxyXG4gICAgICBpZiAoZmxhZ0luZGV4ID49IDApIHtcclxuICAgICAgICBpZiAoZmxhZ3NbZmxhZ10ucGFyYW0pIHtcclxuICAgICAgICAgIGN1cmF0ZWRbZmxhZ10gPSBhcmdzW2ZsYWdJbmRleF1cclxuICAgICAgICAgIGlmICghYXJnc1tmbGFnSW5kZXggKyAxXSB8fCBhcmdzW2ZsYWdJbmRleCArIDFdLnN0YXJ0c1dpdGgoXCItLVwiKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXIgZm9yIC0tJHtmbGFnfWApXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjdXJhdGVkW2ZsYWddID0gYXJnc1tmbGFnSW5kZXggKyAxXVxyXG4gICAgICAgICAgICBhcmdzLnNwbGljZShmbGFnSW5kZXgsIDIpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGN1cmF0ZWRbZmxhZ10gPSB0cnVlXHJcbiAgICAgICAgICBhcmdzLnNwbGljZShmbGFnSW5kZXgsIDEpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICByZXR1cm4gW2FyZ3MsIGN1cmF0ZWRdXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZyb21IZXhTdHJpbmcgKGhleFN0cmluZykge1xyXG4gIGlmIChoZXhTdHJpbmcuc3RhcnRzV2l0aChcIjB4XCIpKSBoZXhTdHJpbmcgPSBoZXhTdHJpbmcuc2xpY2UoMilcclxuICByZXR1cm4gVWludDhBcnJheS5mcm9tKGhleFN0cmluZy5tYXRjaCgvLnsxLDJ9L2cpLm1hcCgoYnl0ZSkgPT4gcGFyc2VJbnQoYnl0ZSwgMTYpKSlcclxufVxyXG5cclxuZnVuY3Rpb24gaXBJc1ByaXZhdGVPckxvY2FsaG9zdCAoaXApIHtcclxuICBpZiAoaXAuc3Vic3RyaW5nKDAsIDcpID09PSBcIjo6ZmZmZjpcIikgeyBpcCA9IGlwLnN1YnN0cmluZyg3KSB9XHJcblxyXG4gIGlmIChuZXQuaXNJUHY0KGlwKSkge1xyXG4gICAgLy8gY2hlY2sgbG9jYWxob3N0XHJcbiAgICBpZiAoaXAgPT09IFwiMTI3LjAuMC4xXCIpIHsgcmV0dXJuIHRydWUgfVxyXG5cclxuICAgIC8vICAgICAgICAgMTAuMC4wLjAgLSAxMC4yNTUuMjU1LjI1NSAgICAgICAgfHwgICAxNzIuMTYuMC4wIC0gMTcyLjMxLjI1NS4yNTUgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICAgIDE5Mi4xNjguMC4wIC0gMTkyLjE2OC4yNTUuMjU1XHJcbiAgICByZXR1cm4gL14oMTApXFwuKC4qKVxcLiguKilcXC4oLiopJC8udGVzdChpcCkgfHwgL14oMTcyKVxcLigxWzYtOV18MlswLTldfDNbMC0xXSlcXC4oLiopXFwuKC4qKSQvLnRlc3QoaXApIHx8IC9eKDE5MilcXC4oMTY4KVxcLiguKilcXC4oLiopJC8udGVzdChpcClcclxuICB9XHJcblxyXG4gIC8vIGVsc2U6IGlwIGlzIElQdjZcclxuICBjb25zdCBmaXJzdFdvcmQgPSBpcC5zcGxpdChcIjpcIikuZmluZChlbCA9PiAhIWVsKSAvLyBnZXQgZmlyc3Qgbm90IGVtcHR5IHdvcmRcclxuXHJcbiAgLy8gZXF1aXZhbGVudCBvZiAxMjcuMC4wLjEgaW4gSVB2NlxyXG4gIGlmIChpcCA9PT0gXCI6OjFcIikgcmV0dXJuIHRydWVcclxuXHJcbiAgLy8gVGhlIG9yaWdpbmFsIElQdjYgU2l0ZSBMb2NhbCBhZGRyZXNzZXMgKGZlYzA6Oi8xMCkgYXJlIGRlcHJlY2F0ZWQuIFJhbmdlOiBmZWMwIC0gZmVmZlxyXG4gIGVsc2UgaWYgKC9eZmVbYy1mXVswLWZdJC8udGVzdChmaXJzdFdvcmQpKSByZXR1cm4gdHJ1ZVxyXG5cclxuICAvLyBUaGVzZSBkYXlzIFVuaXF1ZSBMb2NhbCBBZGRyZXNzZXMgKFVMQSkgYXJlIHVzZWQgaW4gcGxhY2Ugb2YgU2l0ZSBMb2NhbC5cclxuICAvLyBSYW5nZTogZmMwMCAtIGZjZmZcclxuICBlbHNlIGlmICgvXmZjWzAtZl17Mn0kLy50ZXN0KGZpcnN0V29yZCkpIHJldHVybiB0cnVlXHJcblxyXG4gIC8vIFJhbmdlOiBmZDAwIC0gZmNmZlxyXG4gIGVsc2UgaWYgKC9eZmRbMC1mXXsyfSQvLnRlc3QoZmlyc3RXb3JkKSkgcmV0dXJuIHRydWVcclxuXHJcbiAgLy8gTGluayBsb2NhbCBhZGRyZXNzZXMgKHByZWZpeGVkIHdpdGggZmU4MCkgYXJlIG5vdCByb3V0YWJsZVxyXG4gIGVsc2UgaWYgKGZpcnN0V29yZCA9PT0gXCJmZTgwXCIpIHJldHVybiB0cnVlXHJcblxyXG4gIC8vIERpc2NhcmQgUHJlZml4XHJcbiAgZWxzZSBpZiAoZmlyc3RXb3JkID09PSBcIjEwMFwiKSByZXR1cm4gdHJ1ZVxyXG5cclxuICAvLyBBbnkgb3RoZXIgSVAgYWRkcmVzcyBpcyBub3QgVW5pcXVlIExvY2FsIEFkZHJlc3MgKFVMQSlcclxuICByZXR1cm4gZmFsc2VcclxufVxyXG5cclxuZnVuY3Rpb24gaXNIZXhTdHJpbmdPZkxlbmd0aCAoc3RyLCBsZW5ndGgpIHtcclxuICByZXR1cm4gKGlzSGV4U3RyaW5nKHN0cikgJiZcclxuICAgICAgICAoXHJcbiAgICAgICAgICAoc3RyLnN0YXJ0c1dpdGgoXCIweFwiKSAmJiBzdHIuc2xpY2UoMikubGVuZ3RoID09PSBsZW5ndGggKiAyKSB8fFxyXG4gICAgICAgICAgICBzdHIubGVuZ3RoID09PSBsZW5ndGggKiAyXHJcbiAgICAgICAgKVxyXG4gICkgfHwgaXNXaWxkY2FyZChzdHIpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzSGV4U3RyaW5nIChzdHIpIHtcclxuICByZXR1cm4gKFxyXG4gICAgdHlwZW9mIHN0ciA9PT0gXCJzdHJpbmdcIiAmJlxyXG4gICAgICAgIChcclxuICAgICAgICAgIChzdHIuc3RhcnRzV2l0aChcIjB4XCIpICYmIC9eW2EtZkEtRjAtOV0rJC9pLnRlc3Qoc3RyLnNsaWNlKDIpKSkgfHxcclxuICAgICAgICAgICAgL15bYS1mQS1GMC05XSskL2kudGVzdChzdHIpXHJcbiAgICAgICAgKVxyXG4gICkgfHwgaXNXaWxkY2FyZChzdHIpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvSGV4U3RyaW5nIChidWZmZXIsIHByZWZpeDB4ID0gZmFsc2UpIHtcclxuICBpZiAoYnVmZmVyIGluc3RhbmNlb2YgVWludDhBcnJheSkgYnVmZmVyID0gQnVmZmVyLmZyb20oYnVmZmVyKVxyXG4gIHJldHVybiAocHJlZml4MHggPyBcIjB4XCIgOiBcIlwiKSArIEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChidWZmZXIsIHggPT4gKFwiMDBcIiArIHgudG9TdHJpbmcoMTYpKS5zbGljZSgtMikpXHJcbiAgICAuam9pbihcIlwiKVxyXG4gICAgLm1hdGNoKC9bYS1mQS1GMC05XXsyfS9nKVxyXG4gICAgLmpvaW4oXCJcIilcclxufVxyXG5cclxuZnVuY3Rpb24gcGFyc2VVUkwgKHVybCkge1xyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBwYXJzZWRVcmwgPSBuZXcgVVJMKHVybClcclxuICAgIHJldHVybiBbXHJcbiAgICAgIHBhcnNlZFVybC5wcm90b2NvbCArIFwiLy9cIixcclxuICAgICAgcGFyc2VkVXJsLmhvc3QsXHJcbiAgICAgIHBhcnNlZFVybC5wYXRobmFtZS5zbGljZSgxKSxcclxuICAgICAgcGFyc2VkVXJsLnNlYXJjaC5zbGljZSgxKSxcclxuICAgIF1cclxuICB9IGNhdGNoIHtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgVVJMIHdhcyBwcm92aWRlZDogJHt1cmx9YClcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3dVc2FnZSAoY21kLCBtb2R1bGUpIHtcclxuICBzaG93VXNhZ2VIZWFkbGluZShjbWQpXHJcbiAgc2hvd1VzYWdlT3B0aW9ucyh7IC4uLm1vZHVsZT8uZmxhZ3MgfSlcclxuICBzaG93VXNhZ2VGbGFncyh7IC4uLm1vZHVsZT8uZmxhZ3MgfSlcclxuICBzaG93VXNhZ2VSb3V0ZXIoeyAuLi5tb2R1bGU/LnJvdXRlciB9KVxyXG4gIHNob3dVc2FnZUVudmFycyh7IC4uLm1vZHVsZT8uZW52YXJzIH0pXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3dVc2FnZVJvdXRlciAocm91dGVyKSB7XHJcbiAgY29uc3QgY21kcyA9IE9iamVjdC5lbnRyaWVzKHJvdXRlcilcclxuICBpZiAoY21kcy5sZW5ndGggPiAwKSB7XHJcbiAgICBjb25zb2xlLmluZm8oXCJcXG5TVUJDT01NQU5EUzpcIilcclxuICAgIGNvbnN0IG1heExlbmd0aCA9IE1hdGgubWF4KC4uLmNtZHMubWFwKChbY21kXSkgPT4gY21kLmxlbmd0aCkpXHJcbiAgICBjbWRzLmZvckVhY2goY21kID0+IHtcclxuICAgICAgY29uc29sZS5pbmZvKFwiICBcIiwgYCR7Y21kWzBdfSR7XCIgXCIucmVwZWF0KG1heExlbmd0aCAtIGNtZFswXS5sZW5ndGgpfWAsIFwiICBcIiwgY21kWzFdLmhpbnQpXHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gc2hvd1VzYWdlRXJyb3IgKGNtZCwgc3ViY21kLCBtb2R1bGUsIGVycm9yLCBmbGFncykge1xyXG4gIHNob3dVc2FnZVN1YmNvbW1hbmQoY21kLCBzdWJjbWQsIG1vZHVsZSwgZXJyb3IpXHJcbiAgaWYgKGVycm9yKSB7XHJcbiAgICBjb25zb2xlLmluZm8oXCJcXG5FUlJPUjpcIilcclxuICAgIGlmIChmbGFncz8uZGVidWcpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3I/LnN0YWNrPy5zcGxpdChcIlxcblwiKVswXSB8fCBlcnJvcilcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3dVc2FnZUVudmFycyAoZW52YXJzKSB7XHJcbiAgaWYgKGVudmFycykge1xyXG4gICAgZW52YXJzID0gT2JqZWN0LmVudHJpZXMoZW52YXJzKVxyXG4gICAgaWYgKGVudmFycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnNvbGUuaW5mbyhcIlxcbkVOVkFSUzpcIilcclxuICAgICAgY29uc3QgbWF4V2lkdGggPSBNYXRoLm1heCguLi5lbnZhcnMubWFwKChbZW52YXJdKSA9PiBlbnZhci5sZW5ndGgpKVxyXG4gICAgICBlbnZhcnMuZm9yRWFjaCgoW2VudmFyLCBoaW50XSkgPT4ge1xyXG4gICAgICAgIGlmIChlbnZhci50b1VwcGVyQ2FzZSgpLmluZGV4T2YoXCJLRVlcIikgPCAwICYmIHByb2Nlc3MuZW52W2VudmFyXSkge1xyXG4gICAgICAgICAgY29uc29sZS5pbmZvKFwiICBcIiwgYCR7eWVsbG93KGVudmFyLnRvVXBwZXJDYXNlKCkpfSR7XCIgXCIucmVwZWF0KG1heFdpZHRoIC0gZW52YXIubGVuZ3RoKX1gLCBgID0+IFNldHRsZWQgdG8gXCIke215ZWxsb3cocHJvY2Vzcy5lbnZbZW52YXJdKX1cImApXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnNvbGUuaW5mbyhcIiAgXCIsIGAke3llbGxvdyhlbnZhci50b1VwcGVyQ2FzZSgpKX0ke1wiIFwiLnJlcGVhdChtYXhXaWR0aCAtIGVudmFyLmxlbmd0aCl9YCwgYCAke2hpbnR9YClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VXNhZ2VGbGFncyAoZmxhZ3MpIHtcclxuICBpZiAoZmxhZ3MpIHtcclxuICAgIGZsYWdzID0gT2JqZWN0LmVudHJpZXMoZmxhZ3MpLmZpbHRlcigoWywgZmxhZ10pID0+ICFmbGFnPy5wYXJhbSkuc29ydCgoW2FdLCBbYl0pID0+IHtcclxuICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTFcclxuICAgICAgZWxzZSBpZiAoYSA+IGIpIHJldHVybiAxXHJcbiAgICAgIGVsc2UgcmV0dXJuIDBcclxuICAgIH0pXHJcbiAgICBpZiAoZmxhZ3MubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zb2xlLmluZm8oXCJcXG5GTEFHUzpcIilcclxuICAgICAgY29uc3QgbWF4TGVuZ3RoID0gTWF0aC5tYXgoLi4uZmxhZ3MuZmlsdGVyKChbLCB7IGhpbnQgfV0pID0+IGhpbnQpLm1hcCgoW2tleSwgeyBwYXJhbSB9XSkgPT4gcGFyYW0gPyBrZXkubGVuZ3RoICsgcGFyYW0ubGVuZ3RoICsgMyA6IGtleS5sZW5ndGgpKVxyXG4gICAgICBmbGFncy5mb3JFYWNoKGZsYWcgPT4ge1xyXG4gICAgICAgIGNvbnN0IHN0ciA9IGAke2ZsYWdbMF19JHtmbGFnWzFdLnBhcmFtID8gZ3JheShgIDwke2ZsYWdbMV0ucGFyYW19PmApIDogXCJcIn1gXHJcbiAgICAgICAgaWYgKGZsYWdbMV0uaGludCkge1xyXG4gICAgICAgICAgY29uc29sZS5pbmZvKFwiICBcIiwgYC0tJHtzdHJ9JHtcIiBcIi5yZXBlYXQobWF4TGVuZ3RoIC0gY29sb3JzdHJpcChzdHIpLmxlbmd0aCl9YCwgXCIgIFwiLCBmbGFnWzFdLmhpbnQpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gc2hvd1VzYWdlSGVhZGxpbmUgKGNtZCwgc3ViY21kLCBtb2R1bGUpIHtcclxuICBjb25zb2xlLmluZm8oXCJVU0FHRTpcIilcclxuICBpZiAoc3ViY21kKSB7XHJcbiAgICBsZXQgcGFyYW1zID0gbW9kdWxlLnJvdXRlcltzdWJjbWRdPy5wYXJhbXNcclxuICAgIC8vIGNvbnN0IG9wdGlvbnMgPSBtb2R1bGUucm91dGVyW3N1YmNtZF0/Lm9wdGlvbnNcclxuICAgIGlmIChwYXJhbXMpIHtcclxuICAgICAgY29uc3Qgb3B0aW9uYWxpemUgPSAoc3RyKSA9PiBzdHIuZW5kc1dpdGgoXCIgLi4uXVwiKVxyXG4gICAgICAgID8gYFs8JHtzdHIuc2xpY2UoMSwgLTUpfT4gLi4uXWBcclxuICAgICAgICA6IChcclxuICAgICAgICAgIHN0clswXSA9PT0gXCJbXCIgPyBgWzwke3N0ci5zbGljZSgxLCAtMSl9Pl1gIDogYDwke3N0cn0+YFxyXG4gICAgICAgIClcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGFyYW1zKSkge1xyXG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5tYXAocGFyYW0gPT4gb3B0aW9uYWxpemUocGFyYW0pKS5qb2luKFwiIFwiKSArIFwiIFwiXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFyYW1zID0gb3B0aW9uYWxpemUocGFyYW1zKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmluZm8oYCAgICR7d2hpdGUoYG5weCB3aXRuZXQgJHtjbWR9YCl9ICR7d2hpdGUoc3ViY21kKX0gJHtwYXJhbXMgPyBncmVlbihwYXJhbXMpICsgXCIgXCIgOiBcIlwifVtPUFRJT05TXSBbRkxBR1NdYClcclxuICAgIGlmIChtb2R1bGU/LnJvdXRlcltzdWJjbWRdPy5oaW50KSB7XHJcbiAgICAgIGNvbnNvbGUuaW5mbyhcIlxcbkRFU0NSSVBUSU9OOlwiKVxyXG4gICAgICBjb25zb2xlLmluZm8oYCAgICR7bW9kdWxlLnJvdXRlcltzdWJjbWRdLmhpbnR9YClcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgY29uc29sZS5pbmZvKGAgICAke3doaXRlKGBucHggd2l0bmV0ICR7Y21kfWApfSA8U1VCQ09NTUFORD4gLi4uIFtPUFRJT05TXSBbRkxBR1NdYClcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3dVc2FnZU9wdGlvbnMgKG9wdGlvbnMpIHtcclxuICBvcHRpb25zID0gT2JqZWN0LmVudHJpZXMob3B0aW9ucykuZmlsdGVyKChbLCBvcHRpb25dKSA9PiBvcHRpb24/LnBhcmFtKS5zb3J0KChbYV0sIFtiXSkgPT4ge1xyXG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTFcclxuICAgIGVsc2UgaWYgKGEgPiBiKSByZXR1cm4gMVxyXG4gICAgZWxzZSByZXR1cm4gMFxyXG4gIH0pXHJcbiAgaWYgKG9wdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgY29uc29sZS5pbmZvKFwiXFxuT1BUSU9OUzpcIilcclxuICAgIGNvbnN0IG1heExlbmd0aCA9IG9wdGlvbnNcclxuICAgICAgLm1hcChvcHRpb24gPT4gb3B0aW9uWzFdLnBhcmFtID8gb3B0aW9uWzFdLnBhcmFtLmxlbmd0aCArIG9wdGlvblswXS5sZW5ndGggKyAzIDogb3B0aW9uWzBdLmxlbmd0aClcclxuICAgICAgLnJlZHVjZSgocHJldiwgY3VycikgPT4gY3VyciA+IHByZXYgPyBjdXJyIDogcHJldilcclxuICAgIG9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4ge1xyXG4gICAgICBpZiAob3B0aW9uWzFdLmhpbnQpIHtcclxuICAgICAgICBjb25zdCBzdHIgPSBgJHtvcHRpb25bMF19JHtvcHRpb25bMV0ucGFyYW0gPyBncmF5KGAgPCR7b3B0aW9uWzFdLnBhcmFtfT5gKSA6IFwiXCJ9YFxyXG4gICAgICAgIGNvbnNvbGUuaW5mbyhcIiAgXCIsIGAtLSR7c3RyfSR7XCIgXCIucmVwZWF0KG1heExlbmd0aCAtIGNvbG9yc3RyaXAoc3RyKS5sZW5ndGgpfWAsIFwiICBcIiwgb3B0aW9uWzFdLmhpbnQpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VXNhZ2VTdWJjb21tYW5kIChjbWQsIHN1YmNtZCwgbW9kdWxlKSB7XHJcbiAgc2hvd1VzYWdlSGVhZGxpbmUoY21kLCBzdWJjbWQsIG1vZHVsZSlcclxuICBzaG93VXNhZ2VPcHRpb25zKHsgLi4ubW9kdWxlPy5mbGFncywgLi4ubW9kdWxlLnJvdXRlcltzdWJjbWRdPy5vcHRpb25zIH0pXHJcbiAgc2hvd1VzYWdlRmxhZ3MoeyAuLi5tb2R1bGU/LmZsYWdzLCAuLi5tb2R1bGUucm91dGVyW3N1YmNtZF0/Lm9wdGlvbnMgfSlcclxuICBzaG93VXNhZ2VFbnZhcnMobW9kdWxlLnJvdXRlcltzdWJjbWRdPy5lbnZhcnMgfHwgbW9kdWxlPy5lbnZhcnMpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3dWZXJzaW9uICgpIHtcclxuICBjb25zb2xlLmluZm8oYCR7bWN5YW4oYFdpdG5ldCBTREsgdiR7cmVxdWlyZShcIi4uLy4uL3BhY2thZ2UuanNvblwiKS52ZXJzaW9ufWApfWApXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFdpbGRjYXJkc0NvdW50RnJvbVN0cmluZyAoc3RyKSB7XHJcbiAgbGV0IG1heEFyZ3NJbmRleCA9IDBcclxuICBpZiAoc3RyICYmIHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnKSB7XHJcbiAgICBsZXQgbWF0Y2hcclxuICAgIGNvbnN0IHJlZ2V4cCA9IC9cXFxcXFxkXFxcXC9nXHJcbiAgICB3aGlsZSAoKG1hdGNoID0gcmVnZXhwLmV4ZWMoc3RyKSkgIT09IG51bGwpIHtcclxuICAgICAgY29uc3QgYXJnc0luZGV4ID0gcGFyc2VJbnQobWF0Y2hbMF1bMV0pICsgMVxyXG4gICAgICBpZiAoYXJnc0luZGV4ID4gbWF4QXJnc0luZGV4KSBtYXhBcmdzSW5kZXggPSBhcmdzSW5kZXhcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIG1heEFyZ3NJbmRleFxyXG59XHJcblxyXG5mdW5jdGlvbiBjaGVja1JwY1dpbGRjYXJkcyAod2lsZGNhcmRzKSB7XHJcbiAgaWYgKHR5cGVvZiB3aWxkY2FyZHMgPT09IFwib2JqZWN0XCIpIHtcclxuICAgIE9iamVjdC52YWx1ZXMod2lsZGNhcmRzKS5mb3JFYWNoKHdpbGRjYXJkID0+IHtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkod2lsZGNhcmQpKSB3aWxkY2FyZC5mb3JFYWNoKGl0ZW0gPT4gY2hlY2tScGNXaWxkY2FyZHMoaXRlbSkpXHJcbiAgICAgIGVsc2UgY2hlY2tScGNXaWxkY2FyZHMod2lsZGNhcmQpXHJcbiAgICB9KVxyXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh3aWxkY2FyZHMpKSB7XHJcbiAgICB3aWxkY2FyZHMuZm9yRWFjaCh3aWxkY2FyZCA9PiBjaGVja1JwY1dpbGRjYXJkcyh3aWxkY2FyZCkpXHJcbiAgfSBlbHNlIGlmICh0eXBlb2Ygd2lsZGNhcmRzID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICBpZiAoaXNXaWxkY2FyZCh3aWxkY2FyZHMpKSB7XHJcbiAgICAgIGNvbnN0IGNoYXIgPSB3aWxkY2FyZHMuY2hhckF0KDEpXHJcbiAgICAgIGlmIChjaGFyIDwgXCIxXCIgfHwgY2hhciA+IFwiOVwiKSB7XHJcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJSUEM6IHdpbGRjYXJkcyBub3QgaW4gcmFuZ2UgWzEgLi4gOV1cIilcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaXNXaWxkY2FyZCAoc3RyKSB7XHJcbiAgcmV0dXJuIHN0ci5sZW5ndGggPT09IDMgJiYgL1xcXFxcXGRcXFxcL2cudGVzdChzdHIpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlcGxhY2VXaWxkY2FyZHMgKG9iaiwgYXJncykge1xyXG4gIGlmIChhcmdzLmxlbmd0aCA+IDEwKSBhcmdzID0gYXJncy5zbGljZSgwLCAxMClcclxuICBpZiAob2JqICYmIHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHtcclxuICAgIGZvciAobGV0IGFyZ0luZGV4ID0gMDsgYXJnSW5kZXggPCBhcmdzLmxlbmd0aDsgYXJnSW5kZXgrKykge1xyXG4gICAgICBjb25zdCB3aWxkY2FyZCA9IGBcXFxcJHthcmdJbmRleH1cXFxcYFxyXG4gICAgICBvYmogPSBvYmoucmVwbGFjZUFsbCh3aWxkY2FyZCwgYXJnc1thcmdJbmRleF0pXHJcbiAgICB9XHJcbiAgfSBlbHNlIGlmIChvYmogJiYgQXJyYXkuaXNBcnJheShvYmopKSB7XHJcbiAgICBvYmogPSBvYmoubWFwKHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KHZhbHVlKVxyXG4gICAgICA/IHJlcGxhY2VXaWxkY2FyZHModmFsdWUsIGFyZ3MpXHJcbiAgICAgIDogdmFsdWVcclxuICAgIClcclxuICB9XHJcbiAgcmV0dXJuIG9ialxyXG59XHJcblxyXG5mdW5jdGlvbiBzcGxpY2VXaWxkY2FyZCAob2JqLCBhcmdJbmRleCwgYXJnVmFsdWUsIGFyZ3NDb3VudCkge1xyXG4gIGlmIChvYmogJiYgdHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgY29uc3Qgd2lsZGNhcmQgPSBgXFxcXCR7YXJnSW5kZXh9XFxcXGBcclxuICAgIG9iaiA9IG9iai5yZXBsYWNlQWxsKHdpbGRjYXJkLCBhcmdWYWx1ZSlcclxuICAgIGZvciAobGV0IGogPSBhcmdJbmRleCArIDE7IGogPCBhcmdzQ291bnQ7IGorKykge1xyXG4gICAgICBvYmogPSBvYmoucmVwbGFjZUFsbChgXFxcXCR7an1cXFxcYCwgYFxcXFwke2ogLSAxfVxcXFxgKVxyXG4gICAgfVxyXG4gIH0gZWxzZSBpZiAob2JqICYmIEFycmF5LmlzQXJyYXkob2JqKSkge1xyXG4gICAgb2JqID0gb2JqLm1hcCh2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSlcclxuICAgICAgPyBzcGxpY2VXaWxkY2FyZCh2YWx1ZSwgYXJnSW5kZXgsIGFyZ1ZhbHVlLCBhcmdzQ291bnQpXHJcbiAgICAgIDogdmFsdWVcclxuICAgIClcclxuICB9XHJcbiAgcmV0dXJuIG9ialxyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiB0b29sa2l0UnVuIChzZXR0aW5ncywgYXJncykge1xyXG4gIGNvbnN0IGNtZCA9IGAke3NldHRpbmdzLnBhdGhzLnRvb2xraXRCaW5QYXRofSAke2FyZ3Muam9pbihcIiBcIil9YFxyXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBleGVjKGNtZCwgeyBtYXhCdWZmZXI6IDEwMjQgKiAxMDI0ICogMTAgfSwgKGVycm9yLCBzdGRvdXQsIHN0ZGVycikgPT4ge1xyXG4gICAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgICByZWplY3QoZXJyb3IpXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHN0ZGVycikge1xyXG4gICAgICAgIHJlamVjdChzdGRlcnIpXHJcbiAgICAgIH1cclxuICAgICAgcmVzb2x2ZShzdGRvdXQpXHJcbiAgICB9KVxyXG4gIH0pXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvVXBwZXJDYW1lbENhc2UgKHN0cikge1xyXG4gIHJldHVybiBzdHIucmVwbGFjZSgvXFxiKFxcdykvZywgZnVuY3Rpb24gKG1hdGNoLCBjYXB0dXJlKSB7XHJcbiAgICByZXR1cm4gY2FwdHVyZS50b1VwcGVyQ2FzZSgpXHJcbiAgfSkucmVwbGFjZSgvXFxzKy9nLCBcIlwiKVxyXG59XHJcblxyXG5mdW5jdGlvbiB0b1V0ZjE2Qnl0ZXMoc3RyKSB7XHJcbiAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShzdHIubGVuZ3RoICogMik7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcclxuICAgIGNvbnN0IGNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcclxuICAgIGJ5dGVzW2kgKiAyXSA9IGNvZGUgPj4gODtcclxuICAgIGJ5dGVzW2kgKiAyICsgMV0gPSBjb2RlICYgMHhmZjtcclxuICB9XHJcbiAgcmV0dXJuIGJ5dGVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiB0b1V0ZjhBcnJheSAoc3RyKSB7XHJcbiAgY29uc3QgdXRmOCA9IFtdXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBjaGFyY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpXHJcbiAgICBpZiAoY2hhcmNvZGUgPCAweDgwKSB1dGY4LnB1c2goY2hhcmNvZGUpXHJcbiAgICBlbHNlIGlmIChjaGFyY29kZSA8IDB4ODAwKSB7XHJcbiAgICAgIHV0ZjgucHVzaCgweGMwIHwgKGNoYXJjb2RlID4+IDYpLFxyXG4gICAgICAgIDB4ODAgfCAoY2hhcmNvZGUgJiAweDNmKSlcclxuICAgIH0gZWxzZSBpZiAoY2hhcmNvZGUgPCAweGQ4MDAgfHwgY2hhcmNvZGUgPj0gMHhlMDAwKSB7XHJcbiAgICAgIHV0ZjgucHVzaCgweGUwIHwgKGNoYXJjb2RlID4+IDEyKSxcclxuICAgICAgICAweDgwIHwgKChjaGFyY29kZSA+PiA2KSAmIDB4M2YpLFxyXG4gICAgICAgIDB4ODAgfCAoY2hhcmNvZGUgJiAweDNmKSlcclxuICAgIH0gZWxzZSB7IC8vIHN1cnJvZ2F0ZSBwYWlyXHJcbiAgICAgIGkrK1xyXG4gICAgICAvLyBVVEYtMTYgZW5jb2RlcyAweDEwMDAwLTB4MTBGRkZGIGJ5XHJcbiAgICAgIC8vIHN1YnRyYWN0aW5nIDB4MTAwMDAgYW5kIHNwbGl0dGluZyB0aGVcclxuICAgICAgLy8gMjAgYml0cyBvZiAweDAtMHhGRkZGRiBpbnRvIHR3byBoYWx2ZXNcclxuICAgICAgY2hhcmNvZGUgPSAweDEwMDAwICsgKCgoY2hhcmNvZGUgJiAweDNmZikgPDwgMTApIHxcclxuICAgICAgICAgICAgICAgIChzdHIuY2hhckNvZGVBdChpKSAmIDB4M2ZmKSlcclxuICAgICAgdXRmOC5wdXNoKDB4ZjAgfCAoY2hhcmNvZGUgPj4gMTgpLFxyXG4gICAgICAgIDB4ODAgfCAoKGNoYXJjb2RlID4+IDEyKSAmIDB4M2YpLFxyXG4gICAgICAgIDB4ODAgfCAoKGNoYXJjb2RlID4+IDYpICYgMHgzZiksXHJcbiAgICAgICAgMHg4MCB8IChjaGFyY29kZSAmIDB4M2YpKVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gdXRmOFxyXG59XHJcblxyXG5mdW5jdGlvbiB1dGY4QXJyYXlUb1N0ciAoYXJyYXkpIHtcclxuICBjb25zdCBsZW4gPSBhcnJheS5sZW5ndGhcclxuICBsZXQgb3V0ID0gXCJcIjsgbGV0IGkgPSAwOyBsZXQgY1xyXG4gIGxldCBjaGFyMiwgY2hhcjNcclxuICB3aGlsZSAoaSA8IGxlbikge1xyXG4gICAgYyA9IGFycmF5W2krK11cclxuICAgIHN3aXRjaCAoYyA+PiA0KSB7XHJcbiAgICAgIGNhc2UgMDogY2FzZSAxOiBjYXNlIDI6IGNhc2UgMzogY2FzZSA0OiBjYXNlIDU6IGNhc2UgNjogY2FzZSA3OlxyXG4gICAgICAgIC8vIDB4eHh4eHh4XHJcbiAgICAgICAgb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYylcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlIDEyOiBjYXNlIDEzOlxyXG4gICAgICAgIC8vIDExMHggeHh4eCAgIDEweHggeHh4eFxyXG4gICAgICAgIGNoYXIyID0gYXJyYXlbaSsrXVxyXG4gICAgICAgIG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoYyAmIDB4MUYpIDw8IDYpIHwgKGNoYXIyICYgMHgzRikpXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAxNDpcclxuICAgICAgICAvLyAxMTEwIHh4eHggIDEweHggeHh4eCAgMTB4eCB4eHh4XHJcbiAgICAgICAgY2hhcjIgPSBhcnJheVtpKytdXHJcbiAgICAgICAgY2hhcjMgPSBhcnJheVtpKytdXHJcbiAgICAgICAgb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKChjICYgMHgwRikgPDwgMTIpIHxcclxuICAgICAgICAgICAgICAgICAgICAoKGNoYXIyICYgMHgzRikgPDwgNikgfFxyXG4gICAgICAgICAgICAgICAgICAgICgoY2hhcjMgJiAweDNGKSA8PCAwKSlcclxuICAgICAgICBicmVha1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gb3V0XHJcbn1cclxuXHJcbmFzeW5jIGZ1bmN0aW9uIHByb21wdCAocXVlc3Rpb24pIHtcclxuICBjb25zdCByZWFkbGluZUludGVyZmFjZSA9IHJlYWRsaW5lLmNyZWF0ZUludGVyZmFjZSh7XHJcbiAgICBpbnB1dDogcHJvY2Vzcy5zdGRpbixcclxuICAgIG91dHB1dDogcHJvY2Vzcy5zdGRvdXQsXHJcbiAgfSlcclxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgcmVhZGxpbmVJbnRlcmZhY2UucXVlc3Rpb24oYCR7cXVlc3Rpb259IGAsIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICByZWFkbGluZUludGVyZmFjZS5jbG9zZSgpXHJcbiAgICAgIHJlc29sdmUocmVzcG9uc2UudHJpbSgpKVxyXG4gICAgfSlcclxuICB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiBwcm9tcHRlciAocHJvbWlzZSkge1xyXG4gIGNvbnN0IGxvYWRpbmcgPSAoKCkgPT4ge1xyXG4gICAgY29uc3QgaCA9IFtcInxcIiwgXCIvXCIsIFwiLVwiLCBcIlxcXFxcIl1cclxuICAgIGxldCBpID0gMFxyXG4gICAgcmV0dXJuIHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgaSA9IChpID4gMykgPyAwIDogaVxyXG4gICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShgXFxiXFxiJHtoW2ldfSBgKVxyXG4gICAgICBpKytcclxuICAgIH0sIDUwKVxyXG4gIH0pKClcclxuICByZXR1cm4gcHJvbWlzZVxyXG4gICAgLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgY2xlYXJJbnRlcnZhbChsb2FkaW5nKVxyXG4gICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShcIlxcYlxcYlwiKVxyXG4gICAgICByZXR1cm4gcmVzdWx0XHJcbiAgICB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiB0cmFjZUNoZWNrbGlzdHMgKGNoZWNrbGlzdHMpIHtcclxuICBpZiAoY2hlY2tsaXN0cyAmJiBPYmplY3Qua2V5cyhjaGVja2xpc3RzKS5sZW5ndGggPiAwKSB7XHJcbiAgICBjb25zdCBoZWFkbGluZXMgPSBbXCJOT0RFU1wiLCAuLi5PYmplY3Qua2V5cyhjaGVja2xpc3RzKS5tYXAoa2V5ID0+IGA6JHtrZXl9YCldXHJcbiAgICBjaGVja2xpc3RzID0gT2JqZWN0LnZhbHVlcyhjaGVja2xpc3RzKVxyXG4gICAgY29uc3QgdXJscyA9IE9iamVjdC5rZXlzKGNoZWNrbGlzdHNbMF0pXHJcbiAgICBjb25zdCByZWNvcmRzID0gdXJscy5tYXAodXJsID0+IHtcclxuICAgICAgY29uc3QgZXJyb3JzID0gY2hlY2tsaXN0cy5maWx0ZXIoY2hlY2tsaXN0ID0+IGNoZWNrbGlzdFt1cmxdIGluc3RhbmNlb2YgRXJyb3IpLmxlbmd0aFxyXG4gICAgICByZXR1cm4gW1xyXG4gICAgICAgIGVycm9ycyA9PT0gY2hlY2tsaXN0cy5sZW5ndGggPyByZWQodXJsKSA6IChlcnJvcnMgPiAwID8gbXllbGxvdyh1cmwpIDogbWN5YW4odXJsKSksXHJcbiAgICAgICAgLi4uY2hlY2tsaXN0cy5tYXAoY2hlY2tsaXN0ID0+IGNoZWNrbGlzdFt1cmxdIGluc3RhbmNlb2YgRXJyb3JcclxuICAgICAgICAgID8gcmVkKGNoZWNrbGlzdFt1cmxdKVxyXG4gICAgICAgICAgOiAoY2hlY2tsaXN0W3VybF0gPT09IHRydWUgPyBsY3lhbihcIkF5ZVwiKSA6IGN5YW4oXCJOYXlcIikpXHJcbiAgICAgICAgKSxcclxuICAgICAgXVxyXG4gICAgfSlcclxuICAgIHRyYWNlVGFibGUocmVjb3Jkcywge1xyXG4gICAgICBoZWFkbGluZXMsXHJcbiAgICAgIG1heENvbHVtbldpZHRoOiAzMSxcclxuICAgIH0pXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB0cmFjZUhlYWRlciAoaGVhZGxpbmUsIGNvbG9yID0gbm9ybWFsLCBpbmRlbnQgPSBcIlwiLCkge1xyXG4gIGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSM4pSAJHtcIuKUgFwiLnJlcGVhdChoZWFkbGluZS5sZW5ndGgpfeKUgOKUkGApXHJcbiAgY29uc29sZS5pbmZvKGAke2luZGVudH3ilIIgJHtjb2xvcihoZWFkbGluZSl9IOKUgmApXHJcbiAgY29uc29sZS5pbmZvKGAke2luZGVudH3ilJTilIAke1wi4pSAXCIucmVwZWF0KGhlYWRsaW5lLmxlbmd0aCl94pSA4pSYYClcclxufVxyXG5cclxuZnVuY3Rpb24gdHJhY2VUYWJsZSAocmVjb3Jkcywgb3B0aW9ucykge1xyXG4gIGNvbnN0IHN0cmluZ2lmeSA9IChkYXRhLCBodW1hbml6ZXJzLCBpbmRleCkgPT4gaHVtYW5pemVycyAmJiBodW1hbml6ZXJzW2luZGV4XSA/IGh1bWFuaXplcnNbaW5kZXhdKGRhdGEpLnRvU3RyaW5nKCkgOiBkYXRhPy50b1N0cmluZygpID8/IFwiXCJcclxuICBjb25zdCBtYXggPSAoYSwgYikgPT4gYSA+IGIgPyBhIDogYlxyXG4gIGNvbnN0IHJlZHVjZU1heCA9IChudW1iZXJzKSA9PiBudW1iZXJzLnJlZHVjZSgoY3VyciwgcHJldikgPT4gcHJldiA+IGN1cnIgPyBwcmV2IDogY3VyciwgMClcclxuICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fVxyXG4gIGNvbnN0IGluZGVudCA9IG9wdGlvbnM/LmluZGVudCB8fCBcIlwiXHJcbiAgY29uc3QgbnVtQ29sdW1ucyA9IHJlZHVjZU1heChyZWNvcmRzLm1hcChyZWNvcmQgPT4gcmVjb3JkPy5sZW5ndGggfHwgMSkpXHJcbiAgY29uc3QgbWF4Q29sdW1uV2lkdGggPSBvcHRpb25zPy5tYXhDb2x1bW5XaWR0aCB8fCA4MFxyXG4gIGNvbnN0IHRhYmxlID0gdHJhbnNwb3NlKHJlY29yZHMsIG51bUNvbHVtbnMpXHJcbiAgb3B0aW9ucy53aWR0aHMgPSBvcHRpb25zPy53aWR0aHMgfHwgdGFibGUubWFwKChjb2x1bW4sIGluZGV4KSA9PiB7XHJcbiAgICBsZXQgbWF4V2lkdGggPSByZWR1Y2VNYXgoY29sdW1uLm1hcChmaWVsZCA9PiBjb2xvcnN0cmlwKHN0cmluZ2lmeShmaWVsZCwgb3B0aW9ucz8uaHVtYW5pemVycywgaW5kZXgpKS5sZW5ndGgpKVxyXG4gICAgaWYgKG9wdGlvbnM/LmhlYWRsaW5lcyAmJiBvcHRpb25zLmhlYWRsaW5lc1tpbmRleF0pIHtcclxuICAgICAgbWF4V2lkdGggPSBtYXgobWF4V2lkdGgsIGNvbG9yc3RyaXAob3B0aW9ucy5oZWFkbGluZXNbaW5kZXhdLnJlcGxhY2VBbGwoXCI6XCIsIFwiXCIpKS5sZW5ndGgpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gTWF0aC5taW4obWF4V2lkdGgsIG1heENvbHVtbldpZHRoKVxyXG4gIH0pXHJcbiAgbGV0IGhlYWRsaW5lID0gb3B0aW9ucy53aWR0aHMubWFwKG1heFdpZHRoID0+IFwi4pSAXCIucmVwZWF0KG1heFdpZHRoKSlcclxuICBjb25zb2xlLmluZm8oYCR7aW5kZW50feKUjOKUgCR7aGVhZGxpbmUuam9pbihcIuKUgOKUrOKUgFwiKX3ilIDilJBgKVxyXG4gIGlmIChvcHRpb25zPy5oZWFkbGluZXMpIHtcclxuICAgIGhlYWRsaW5lID0gb3B0aW9ucy53aWR0aHMubWFwKChtYXhXaWR0aCwgaW5kZXgpID0+IHtcclxuICAgICAgY29uc3QgY2FwdGlvbiA9IG9wdGlvbnMuaGVhZGxpbmVzW2luZGV4XS5yZXBsYWNlQWxsKFwiOlwiLCBcIlwiKVxyXG4gICAgICBjb25zdCBjYXB0aW9uTGVuZ3RoID0gY29sb3JzdHJpcChjYXB0aW9uKS5sZW5ndGhcclxuICAgICAgcmV0dXJuIGAke3doaXRlKGNhcHRpb24pfSR7XCIgXCIucmVwZWF0KG1heFdpZHRoIC0gY2FwdGlvbkxlbmd0aCl9YFxyXG4gICAgfSlcclxuICAgIGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSCICR7aGVhZGxpbmUuam9pbihcIiDilIIgXCIpfSDilIJgKVxyXG4gICAgaGVhZGxpbmUgPSBvcHRpb25zLndpZHRocy5tYXAobWF4V2lkdGggPT4gXCLilIBcIi5yZXBlYXQobWF4V2lkdGgpKVxyXG4gICAgY29uc29sZS5pbmZvKGAke2luZGVudH3ilJzilIAke2hlYWRsaW5lLmpvaW4oXCLilIDilLzilIBcIil94pSA4pSkYClcclxuICB9XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWNvcmRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgbGluZSA9IFwiXCJcclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbnVtQ29sdW1uczsgaisrKSB7XHJcbiAgICAgIGxldCBkYXRhID0gdGFibGVbal1baV1cclxuICAgICAgbGV0IGNvbG9yXHJcbiAgICAgIGlmIChvcHRpb25zPy5jb2xvcnMgJiYgb3B0aW9ucy5jb2xvcnNbal0pIHtcclxuICAgICAgICBjb2xvciA9IG9wdGlvbnMuY29sb3JzW2pdXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29sb3IgPSB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIlxyXG4gICAgICAgICAgPyBncmVlblxyXG4gICAgICAgICAgOiAoTnVtYmVyKGRhdGEpID09PSBkYXRhICYmIGRhdGEgJSAxICE9PSAwIC8vIGlzIGZsb2F0IG51bWJlcj9cclxuICAgICAgICAgICAgPyB5ZWxsb3dcclxuICAgICAgICAgICAgOiAoeCkgPT4geFxyXG4gICAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICAgIGRhdGEgPSBzdHJpbmdpZnkoZGF0YSwgb3B0aW9ucz8uaHVtYW5pemVycywgailcclxuICAgICAgaWYgKGNvbG9yc3RyaXAoZGF0YSkubGVuZ3RoID4gbWF4Q29sdW1uV2lkdGgpIHtcclxuICAgICAgICB3aGlsZSAoY29sb3JzdHJpcChkYXRhKS5sZW5ndGggPiBtYXhDb2x1bW5XaWR0aCAtIDMpIHtcclxuICAgICAgICAgIGRhdGEgPSBkYXRhLnNsaWNlKDAsIC0xKVxyXG4gICAgICAgIH1cclxuICAgICAgICBkYXRhICs9IFwiLi4uXCJcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBkYXRhTGVuZ3RoID0gY29sb3JzdHJpcChkYXRhKS5sZW5ndGhcclxuICAgICAgaWYgKG9wdGlvbnM/LmhlYWRsaW5lcyAmJiBvcHRpb25zLmhlYWRsaW5lc1tqXVswXSA9PT0gXCI6XCIpIHtcclxuICAgICAgICBkYXRhID0gYCR7Y29sb3IoZGF0YSl9JHtcIiBcIi5yZXBlYXQob3B0aW9ucy53aWR0aHNbal0gLSBkYXRhTGVuZ3RoKX1gXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZGF0YSA9IGAke1wiIFwiLnJlcGVhdChvcHRpb25zLndpZHRoc1tqXSAtIGRhdGFMZW5ndGgpfSR7Y29sb3IoZGF0YSl9YFxyXG4gICAgICB9XHJcbiAgICAgIGxpbmUgKz0gYOKUgiAke2RhdGF9IGBcclxuICAgIH1cclxuICAgIGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR9JHtsaW5lfeKUgmApXHJcbiAgfVxyXG4gIGhlYWRsaW5lID0gb3B0aW9ucy53aWR0aHMubWFwKG1heFdpZHRoID0+IFwi4pSAXCIucmVwZWF0KG1heFdpZHRoKSlcclxuICBjb25zb2xlLmluZm8oYCR7aW5kZW50feKUlOKUgCR7aGVhZGxpbmUuam9pbihcIuKUgOKUtOKUgFwiKX3ilIDilJhgKVxyXG59XHJcblxyXG5mdW5jdGlvbiB0cmFuc3Bvc2UgKHJlY29yZHMsIG51bUNvbHVtbnMpIHtcclxuICBjb25zdCBjb2x1bW5zID0gW11cclxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbnVtQ29sdW1uczsgaW5kZXgrKykge1xyXG4gICAgY29sdW1ucy5wdXNoKHJlY29yZHMubWFwKHJvdyA9PiByb3dbaW5kZXhdKSlcclxuICB9XHJcbiAgcmV0dXJuIGNvbHVtbnNcclxufVxyXG5cclxuZnVuY3Rpb24gdHhKc29uUmVwbGFjZXIgKGtleSwgdmFsdWUpIHtcclxuICBzd2l0Y2ggKGtleSkge1xyXG4gICAgY2FzZSBcImJ5dGVzXCI6XHJcbiAgICBjYXNlIFwiZGVyXCI6XHJcbiAgICAgIHJldHVybiB0b0hleFN0cmluZyh2YWx1ZSwgdHJ1ZSlcclxuICAgIGNhc2UgXCJ0eFwiOlxyXG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIHR4SnNvblJlcGxhY2VyKVxyXG4gICAgY2FzZSBcImNoYW5nZVwiOlxyXG4gICAgY2FzZSBcImZlZXNcIjpcclxuICAgIGNhc2UgXCJ2YWx1ZVwiOlxyXG4gICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWUpIC8gMTAgKiogOVxyXG4gICAgZGVmYXVsdDpcclxuICAgICAgcmV0dXJuIHZhbHVlXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB0eFJlY2VpcHRKc29uUmVwbGFjZXIgKGtleSwgdmFsdWUpIHtcclxuICBzd2l0Y2ggKGtleSkge1xyXG4gICAgY2FzZSBcImJ5dGVzXCI6XHJcbiAgICBjYXNlIFwiZGVyXCI6XHJcbiAgICAgIHJldHVybiB0b0hleFN0cmluZyh2YWx1ZSwgdHJ1ZSlcclxuICAgIGNhc2UgXCJ0eFwiOlxyXG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIHR4SnNvblJlcGxhY2VyKVxyXG4gICAgY2FzZSBcImNoYW5nZVwiOlxyXG4gICAgY2FzZSBcImZlZXNcIjpcclxuICAgIGNhc2UgXCJ2YWx1ZVwiOlxyXG4gICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWU/LnBlZHJvcykgLyAxMCAqKiA5XHJcbiAgICBjYXNlIFwidGltZXN0YW1wXCI6XHJcbiAgICAgIHJldHVybiBtb21lbnQudW5peCh2YWx1ZSkuZm9ybWF0KFwiTU1NTSBEbyBZWVlZLCBoOm1tOnNzIGFcIilcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIHJldHVybiB2YWx1ZVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gdHJhY2VUcmFuc2FjdGlvbk9uQ2hlY2twb2ludCAocmVjZWlwdCkge1xyXG4gIGlmIChyZWNlaXB0Py5jb25maXJtYXRpb25zKSB7XHJcbiAgICBjb25zb2xlLmluZm8oYCA+IENoZWNrcG9pbnQgIyR7Y29tbWFzKHJlY2VpcHQuY29uZmlybWF0aW9ucyl9Li4uYClcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRyYWNlVHJhbnNhY3Rpb25PblN0YXR1c0NoYW5nZSAocmVjZWlwdCkge1xyXG4gIGNvbnN0IGNhcHRpb25zID0ge1xyXG4gICAgcGVuZGluZzogXCJBd2FpdGluZyByZWxheS4uLlwiLFxyXG4gICAgLy8gY29uZmlybWVkOiBcIlRyYW5zYWN0aW9uIGNvbmZpcm1lZDpcIixcclxuICAgIC8vIGZpbmFsaXplZDogXCJUcmFuc2FjdGlvbiBmaW5hbGl6ZWQ6XCIsXHJcbiAgICByZWxheWVkOiBcIkF3YWl0aW5nIGluY2x1c2lvbi4uLlwiLFxyXG4gICAgbWluZWQ6IFwiQXdhaXRpbmcgY29uZmlybWF0aW9ucy4uLlwiLFxyXG4gIH1cclxuICBjb25zdCBjYXB0aW9uID0gY2FwdGlvbnNbcmVjZWlwdC5zdGF0dXNdXHJcbiAgaWYgKGNhcHRpb24pIGNvbnNvbGUuaW5mbyhgID4gJHtjYXB0aW9uc1tyZWNlaXB0LnN0YXR1c119YClcclxuICBpZiAoW1wiZmluYWxpemVkXCIsIFwiY29uZmlybWVkXCJdLmluY2x1ZGVzKHJlY2VpcHQuc3RhdHVzKSkge1xyXG4gICAgY29uc29sZS5pbmZvKGAgPiBCbG9jayBoYXNoOiAgICR7Z3JheShyZWNlaXB0Py5ibG9ja0hhc2gpfWApXHJcbiAgICBjb25zb2xlLmluZm8oYCA+IEJsb2NrIG1pbmVyOiAgJHtjeWFuKHJlY2VpcHQ/LmJsb2NrTWluZXIpfWApO1xyXG4gICAgY29uc29sZS5pbmZvKGAgPiBCbG9jayBlcG9jaDogICR7d2hpdGUoY29tbWFzKHJlY2VpcHQ/LmJsb2NrRXBvY2gpKX1gKVxyXG4gICAgY29uc29sZS5pbmZvKGAgPiBJbmNsdWRlZCBhdDogICR7Z3JlZW4obW9tZW50LnVuaXgocmVjZWlwdD8uYmxvY2tUaW1lc3RhbXApLmZvcm1hdChcIk1NTU0gRG8gWVlZWSwgaDptbTpzcyBhXCIpKX1gKVxyXG4gICAgY29uc29sZS5pbmZvKGAgPiAke3JlY2VpcHQuc3RhdHVzWzBdLnRvVXBwZXJDYXNlKCkgKyByZWNlaXB0LnN0YXR1cy5zbGljZSgxKX0gYXQ6ICR7bWdyZWVuKG1vbWVudC51bml4KHJlY2VpcHQudGltZXN0YW1wKS5mb3JtYXQoXCJNTU1NIERvIFlZWVksIGg6bW06c3MgYVwiKSl9YClcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRyYWNlVHJhbnNhY3Rpb25SZWNlaXB0IChyZWNlaXB0KSB7XHJcbiAgY29uc3QgY2FwdGlvbnMgPSB7XHJcbiAgICBEYXRhUmVxdWVzdDogXCIgPiBEUlQgaGFzaDogICAgIFwiLFxyXG4gICAgVmFsdWVUcmFuc2ZlcjogXCIgPiBWVFQgaGFzaDogICAgIFwiLFxyXG4gIH1cclxuICBjb25zb2xlLmluZm8oYCR7Y2FwdGlvbnNbcmVjZWlwdC50eXBlXSB8fCBcIiA+IFRYIGhhc2g6ICAgICAgXCJ9JHt3aGl0ZShyZWNlaXB0Lmhhc2gpfWApXHJcbiAgaWYgKHJlY2VpcHQ/LmRyb0hhc2gpIGNvbnNvbGUuaW5mbyhgID4gRFJPIGhhc2g6ICAgICAke2dyZWVuKHJlY2VpcHQuZHJvSGFzaCl9YClcclxuICBpZiAocmVjZWlwdD8ucmFkSGFzaCkgY29uc29sZS5pbmZvKGAgPiBSQUQgaGFzaDogICAgICR7bWdyZWVuKHJlY2VpcHQucmFkSGFzaCl9YClcclxuICBpZiAocmVjZWlwdD8uZHJvU0xBKSBjb25zb2xlLmluZm8oYCA+IFNMQSBwYXJhbXM6ICAgJHtKU09OLnN0cmluZ2lmeShyZWNlaXB0LmRyb1NMQSl9YClcclxuICBpZiAocmVjZWlwdD8ud2l0aGRyYXdlcikge1xyXG4gICAgaWYgKHJlY2VpcHQ/LnZhbGlkYXRvcikge1xyXG4gICAgICBjb25zb2xlLmluZm8oYCA+IFZhbGlkYXRvcjogICAgJHttY3lhbihyZWNlaXB0LnZhbGlkYXRvcil9YClcclxuICAgIH1cclxuICAgIGNvbnNvbGUuaW5mbyhgID4gV2l0aGRyYXdlcjogICAke21tYWdlbnRhKHJlY2VpcHQud2l0aGRyYXdlcil9YClcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc3Qgc2lnbmVycyA9IEFycmF5LmlzQXJyYXkocmVjZWlwdC5mcm9tKSA/IHJlY2VpcHQuZnJvbSA6IFtyZWNlaXB0LmZyb21dXHJcbiAgICBjb25zb2xlLmluZm8oYCA+IFNpZ25lci9zOiAgICAgJHttbWFnZW50YShzaWduZXJzWzBdKX1gKVxyXG4gICAgc2lnbmVycy5zbGljZSgxKS5mb3JFYWNoKHNpZ25lciA9PiB7XHJcbiAgICAgIGNvbnNvbGUuaW5mbyhgICAgICAgICAgICAgICAgICAke21tYWdlbnRhKHNpZ25lcil9YClcclxuICAgIH0pXHJcbiAgfVxyXG4gIGlmIChyZWNlaXB0Py5yZWNpcGllbnRzKSB7XHJcbiAgICBjb25zb2xlLmluZm8oYCA+IFJlY2lwaWVudC9zOiAgJHtcclxuICAgICAgbWJsdWUocmVjZWlwdC5yZWNpcGllbnRzLmZpbHRlcigocGtoLCBpbmRleCwgYXJyYXkpID0+IGluZGV4ID09PSBhcnJheS5pbmRleE9mKHBraCkpKVxyXG4gICAgfWApXHJcbiAgfVxyXG4gIGlmIChyZWNlaXB0Py5mZWVzKSBjb25zb2xlLmluZm8oYCA+IEZlZTogICAgICAgICAgJHt5ZWxsb3cocmVjZWlwdC5mZWVzLnRvU3RyaW5nKDIpKX1gKVxyXG4gIGlmIChyZWNlaXB0Py52YWx1ZSkgY29uc29sZS5pbmZvKGAgPiBWYWx1ZTogICAgICAgICR7bXllbGxvdyhyZWNlaXB0LnZhbHVlLnRvU3RyaW5nKDIpKX1gKVxyXG4gIGlmIChyZWNlaXB0Py53ZWlnaHQpIGNvbnNvbGUuaW5mbyhgID4gV2VpZ2h0OiAgICAgICAke21ncmVlbihjb21tYXMocmVjZWlwdC53ZWlnaHQpKX1gKVxyXG4gIGlmIChyZWNlaXB0Py53aXRuZXNzZXMpIHtcclxuICAgIGNvbnNvbGUuaW5mbyhgID4gV2l0bmVzc2VzOiAgICAke3JlY2VpcHQud2l0bmVzc2VzfWApXHJcbiAgfVxyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiB0cmFjZVRyYW5zYWN0aW9uICh0cmFuc21pdHRlciwgb3B0aW9ucykge1xyXG4gIGNvbnN0IGNvbG9yID0gb3B0aW9ucz8uY29sb3IgfHwgKCh4KSA9PiBgXFx4MWJbMzA7NDVtJHt4fVxceDFiWzBtYClcclxuICBsZXQgcmVjZWlwdCA9IGF3YWl0IHRyYW5zbWl0dGVyLnNpZ25UcmFuc2FjdGlvbihvcHRpb25zLCBvcHRpb25zPy5yZWxvYWQpXHJcbiAgaWYgKG9wdGlvbnM/LnZlcmJvc2UpIHtcclxuICAgIGNvbnNvbGUuaW5mbyhcclxuICAgICAgYFxcbiR7Z3JheShKU09OLnN0cmluZ2lmeShyZWNlaXB0LnR4LCB0eEpzb25SZXBsYWNlcikpfWBcclxuICAgIClcclxuICB9XHJcbiAgaWYgKG9wdGlvbnM/LmhlYWRsaW5lKSB7XHJcbiAgICBjb25zb2xlLmluZm8oYFxcbiAke2NvbG9yKGAgICR7b3B0aW9ucy5oZWFkbGluZX0gIGApfVxcbmApXHJcbiAgfVxyXG4gIHRyYWNlVHJhbnNhY3Rpb25SZWNlaXB0KHJlY2VpcHQpXHJcbiAgaWYgKCFvcHRpb25zPy5mb3JjZSkge1xyXG4gICAgLy8gcHJvbXB0IHVzZXIgY29uZmlybWF0aW9uXHJcbiAgICBjb25zb2xlLmluZm8oKVxyXG4gICAgY29uc3QgYW5zd2VyID0gYXdhaXQgcmVxdWlyZShcImlucXVpcmVyXCIpLmNyZWF0ZVByb21wdE1vZHVsZSgpKFt7XHJcbiAgICAgIG1lc3NhZ2U6IFwiU2VuZCB0cmFuc2FjdGlvbj9cIixcclxuICAgICAgdHlwZTogXCJjb25maXJtXCIsXHJcbiAgICAgIG5hbWU6IFwiY29udGludWVcIixcclxuICAgICAgZGVmYXVsdDogZmFsc2UsXHJcbiAgICB9XSlcclxuICAgIGlmICghYW5zd2VyLmNvbnRpbnVlKSB7XHJcbiAgICAgIHJldHVybiByZWNlaXB0XHJcbiAgICB9XHJcbiAgfVxyXG4gIHRyeSB7XHJcbiAgICBjb25zb2xlLmluZm8oKVxyXG4gICAgcmVjZWlwdCA9IGF3YWl0IHRyYW5zbWl0dGVyLnNlbmRUcmFuc2FjdGlvbigpXHJcbiAgICBpZiAob3B0aW9ucz8uYXdhaXQgfHwgb3B0aW9ucz8uY29uZmlybWF0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJlY2VpcHQgPSBhd2FpdCB0cmFuc21pdHRlci5jb25maXJtVHJhbnNhY3Rpb24ocmVjZWlwdC5oYXNoLCB7XHJcbiAgICAgICAgY29uZmlybWF0aW9uczogb3B0aW9ucz8uY29uZmlybWF0aW9ucyB8fCAwLFxyXG4gICAgICAgIG9uQ2hlY2twb2ludDogdHJhY2VUcmFuc2FjdGlvbk9uQ2hlY2twb2ludCxcclxuICAgICAgICBvblN0YXR1c0NoYW5nZTogdHJhY2VUcmFuc2FjdGlvbk9uU3RhdHVzQ2hhbmdlLFxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZGF0YSA9IHsgc3RhdHVzOiByZWNlaXB0Py5zdGF0dXMsIHRpbWVzdGFtcDogcmVjZWlwdD8udGltZXN0YW1wIHx8IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApIH1cclxuICAgICAgY29uc29sZS5pbmZvKGRhdGEpXHJcbiAgICB9XHJcbiAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICBpZiAoZXJyPy5pbkZsaWdodCAmJiBlcnIuaW5GbGlnaHQpIHtcclxuICAgICAgY29uc29sZS5pbmZvKGBcXG4ke2dyYXkoSlNPTi5zdHJpbmdpZnkoZXJyLmluRmxpZ3Q/Lm1lc3NhZ2UsIHR4UmVjZWlwdEpzb25SZXBsYWNlcikpfWApXHJcbiAgICB9XHJcbiAgICB0aHJvdyBlcnJcclxuICB9XHJcbiAgcmV0dXJuIHJlY2VpcHRcclxufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7XHJcbiAgY29sb3JzOiB7XHJcbiAgICBiYmx1ZSxcclxuICAgIGJjeWFuLFxyXG4gICAgYmdyZWVuLFxyXG4gICAgYmx1ZSxcclxuICAgIGJyZWQsXHJcbiAgICBidmlvbGV0LFxyXG4gICAgY3lhbixcclxuICAgIGdyYXksXHJcbiAgICBncmVlbixcclxuICAgIG1hZ2VudGEsXHJcbiAgICByZWQsXHJcbiAgICB3aGl0ZSxcclxuICAgIHllbGxvdyxcclxuICAgIG5vcm1hbCxcclxuICAgIGxjeWFuLFxyXG4gICAgbGdyYXksXHJcbiAgICBsZ3JlZW4sXHJcbiAgICBsbWFnZW50YSxcclxuICAgIGx5ZWxsb3csXHJcbiAgICBtYmx1ZSxcclxuICAgIG1jeWFuLFxyXG4gICAgbWdyZWVuLFxyXG4gICAgbW1hZ2VudGEsXHJcbiAgICBtcmVkLFxyXG4gICAgbXllbGxvdyxcclxuICB9LFxyXG4gIGNvbG9yc3RyaXAsXHJcbiAgY29tbWFzLFxyXG4gIHdob2xlX3dpdHMsXHJcbiAgdG9GaXhlZFRydW5jLFxyXG4gIGNvdW50TGVhdmVzLFxyXG4gIGV4ZWNSYWRvbkJ5dGVjb2RlLFxyXG4gIGRlbGV0ZUV4dHJhRmxhZ3MsXHJcbiAgZXh0cmFjdEZyb21BcmdzLFxyXG4gIGZyb21IZXhTdHJpbmcsXHJcbiAgaXNIZXhTdHJpbmcsXHJcbiAgaXNIZXhTdHJpbmdPZkxlbmd0aCxcclxuICB0b0hleFN0cmluZyxcclxuICBwYXJzZVVSTCxcclxuICBpcElzUHJpdmF0ZU9yTG9jYWxob3N0LFxyXG4gIHNob3dVc2FnZSxcclxuICBzaG93VXNhZ2VFcnJvcixcclxuICBzaG93VXNhZ2VTdWJjb21tYW5kLFxyXG4gIHNob3dWZXJzaW9uLFxyXG4gIHRvb2xraXRSdW4sXHJcbiAgdG9VcHBlckNhbWVsQ2FzZSxcclxuICB0b1V0ZjE2Qnl0ZXMsXHJcbiAgdG9VdGY4QXJyYXksICBcclxuICB1dGY4QXJyYXlUb1N0cixcclxuICBwcm9tcHQsXHJcbiAgcHJvbXB0ZXIsXHJcbiAgdHJhY2VDaGVja2xpc3RzLFxyXG4gIHRyYWNlSGVhZGVyLFxyXG4gIHRyYWNlVGFibGUsXHJcbiAgdHJhY2VUcmFuc2FjdGlvbixcclxuICB0cmFjZVRyYW5zYWN0aW9uT25TdGF0dXNDaGFuZ2UsXHJcbiAgdHJhY2VUcmFuc2FjdGlvbk9uQ2hlY2twb2ludCxcclxuICB0cmFjZVRyYW5zYWN0aW9uUmVjZWlwdCxcclxuICBjaGVja1JwY1dpbGRjYXJkcyxcclxuICBpc1dpbGRjYXJkLFxyXG4gIGdldFdpbGRjYXJkc0NvdW50RnJvbVN0cmluZyxcclxuICByZXBsYWNlV2lsZGNhcmRzLFxyXG4gIHNwbGljZVdpbGRjYXJkLFxyXG4gIHR4SnNvblJlcGxhY2VyLFxyXG59XHJcbiJdfQ==
|
|
826
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW4vaGVscGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUN6QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7QUFDaEMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzFCLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN4QixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7QUFFcEMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQ3JDLDZFQUE2RSxFQUFFLEVBQUUsQ0FDbEYsQ0FBQTtBQUVELE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUU7SUFDeEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMxQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7UUFDOUIsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsRUFBRTtRQUNyRCxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ25FLE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyxDQUFBO0FBRUQsU0FBUyxZQUFZLENBQUUsQ0FBQyxFQUFFLENBQUM7SUFDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQy9ELElBQUksQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ2xCLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ3BELE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQTtJQUM3QixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFBO0FBQ3ZCLENBQUM7QUFBQSxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7SUFDcEMsTUFBTSxNQUFNLEdBQUc7UUFDYixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtRQUMvQixFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7UUFDckMsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO1FBQ3JDLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtRQUN0QyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7S0FDdkMsQ0FBQTtJQUNELHlDQUF5QztJQUN6QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMxRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDL0UsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDOUcsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFBO0FBQzVILENBQUMsQ0FBQTtBQUVELE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsR0FBRyxhQUFhLENBQUE7QUFDdkQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFDbkQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFDcEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFDbEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFFckQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDaEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDaEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDakQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbkQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDOUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDOUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDL0MsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbkQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFFaEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDOUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDL0MsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDNUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDaEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFFL0MsU0FBUyxXQUFXLENBQUUsQ0FBQyxFQUFFLEdBQUc7SUFDMUIsSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxDQUFDLENBQUE7SUFDN0MsSUFBSSxHQUFHLFlBQVksQ0FBQztRQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzlCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTs7UUFDbEYsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcs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UUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9DLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQzdELENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBRSxPQUFPLEVBQUUsT0FBTztJQUNuQyxNQUFNLFNBQVMsR0FBRyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFDNUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNuQyxNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzNGLElBQUksQ0FBQyxPQUFPO1FBQUUsT0FBTyxHQUFHLEVBQUUsQ0FBQTtJQUMxQixNQUFNLE1BQU0sR0FBRyxPQUFPLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQTtJQUNwQyxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN4RSxNQUFNLGNBQWMsR0FBRyxPQUFPLEVBQUUsY0FBYyxJQUFJLEVBQUUsQ0FBQTtJQUNwRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBQzVDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxFQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzlELElBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7UUFDOUcsSUFBSSxPQUFPLEVBQUUsU0FBUyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuRCxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDM0YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUE7SUFDM0MsQ0FBQyxDQUFDLENBQUE7SUFDRixJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUNuRSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3BELElBQUksT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ3ZCLFFBQVEsR0FBRyxPQUFPLENBQUMsTUFBTSxD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ImNoaWxkX3Byb2Nlc3NcIilcclxuY29uc3QgbW9tZW50ID0gcmVxdWlyZShcIm1vbWVudFwiKVxyXG5jb25zdCBuZXQgPSByZXF1aXJlKFwibmV0XCIpXHJcbmNvbnN0IG9zID0gcmVxdWlyZShcIm9zXCIpXHJcbmNvbnN0IHJlYWRsaW5lID0gcmVxdWlyZShcInJlYWRsaW5lXCIpXHJcblxyXG5jb25zdCBjb2xvcnN0cmlwID0gKHN0cikgPT4gc3RyLnJlcGxhY2UoXHJcbiAgL1tcXHUwMDFiXFx1MDA5Yl1bWygpIzs/XSooPzpbMC05XXsxLDR9KD86O1swLTldezAsNH0pKik/WzAtOUEtT1JaY2YtbnFyeT0+PF0vZywgXCJcIlxyXG4pXHJcblxyXG5jb25zdCBjb21tYXMgPSAobnVtYmVyKSA9PiB7XHJcbiAgY29uc3QgcGFydHMgPSBudW1iZXIudG9TdHJpbmcoKS5zcGxpdChcIi5cIilcclxuICBjb25zdCByZXN1bHQgPSBwYXJ0cy5sZW5ndGggPD0gMVxyXG4gICAgPyBgJHtwYXJ0c1swXS5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIixcIil9YFxyXG4gICAgOiBgJHtwYXJ0c1swXS5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIixcIil9LiR7cGFydHNbMV19YFxyXG4gIHJldHVybiByZXN1bHRcclxufVxyXG5cclxuZnVuY3Rpb24gdG9GaXhlZFRydW5jICh4LCBuKSB7XHJcbiAgY29uc3QgdiA9ICh0eXBlb2YgeCA9PT0gXCJzdHJpbmdcIiA/IHggOiB4LnRvU3RyaW5nKCkpLnNwbGl0KFwiLlwiKVxyXG4gIGlmIChuIDw9IDApIHJldHVybiB2WzBdXHJcbiAgbGV0IGYgPSB2WzFdIHx8IFwiXCJcclxuICBpZiAoZi5sZW5ndGggPiBuKSByZXR1cm4gYCR7dlswXX0uJHtmLnN1YnN0cigwLCBuKX1gXHJcbiAgd2hpbGUgKGYubGVuZ3RoIDwgbikgZiArPSBcIjBcIlxyXG4gIHJldHVybiBgJHt2WzBdfS4ke2Z9YFxyXG59O1xyXG5cclxuY29uc3Qgd2hvbGVfd2l0cyA9IChudW1iZXIsIGRpZ2l0cykgPT4ge1xyXG4gIGNvbnN0IGxvb2t1cCA9IFtcclxuICAgIHsgdmFsdWU6IDFuLCBzeW1ib2w6IFwicGVkcm9zXCIgfSxcclxuICAgIHsgdmFsdWU6IDEwbiAqKiA2biwgc3ltYm9sOiBcIm1XaXRzXCIgfSxcclxuICAgIHsgdmFsdWU6IDEwbiAqKiA5biwgc3ltYm9sOiBcIiBXaXRzXCIgfSxcclxuICAgIHsgdmFsdWU6IDEwbiAqKiAxMm4sIHN5bWJvbDogXCJLV2l0c1wiIH0sXHJcbiAgICB7IHZhbHVlOiAxMG4gKiogMTVuLCBzeW1ib2w6IFwiTVdpdHNcIiB9LFxyXG4gIF1cclxuICAvLyBjb25zdCByZWdleHAgPSAvXFwuMCskfCg/PD1cXC5bMC05XSkwKyQvXHJcbiAgY29uc3QgaXRlbSA9IGxvb2t1cC5maW5kTGFzdChpdGVtID0+IG51bWJlciA+PSBpdGVtLnZhbHVlKVxyXG4gIGNvbnN0IHF1b3RpZW50ID0gaXRlbSA/IE51bWJlcihCaWdJbnQobnVtYmVyKSAvIGl0ZW0udmFsdWUpIDogbnVtYmVyLnRvU3RyaW5nKClcclxuICBjb25zdCBkZWNpbWFscyA9IGl0ZW0gPyAoaXRlbS52YWx1ZSArIEJpZ0ludChudW1iZXIpIC0gQmlnSW50KHF1b3RpZW50KSAqIGl0ZW0udmFsdWUpLnRvU3RyaW5nKCkuc2xpY2UoMSkgOiBcIlwiXHJcbiAgcmV0dXJuIGl0ZW0gPyBgJHtjb21tYXMocXVvdGllbnQpfSR7ZGVjaW1hbHMgIT09IFwiXCIgPyBgLiR7ZGVjaW1hbHMuc2xpY2UoMCwgZGlnaXRzKX1gIDogXCJcIn0gJHtpdGVtLnN5bWJvbH1gIDogXCIobm8gY29pbnMpXCJcclxufVxyXG5cclxuY29uc3QgYmJsdWUgPSAoc3RyKSA9PiBgXFx4MWJbMTs5ODs0NG0ke3N0cn1cXHgxYlswOzA7MG1gXHJcbmNvbnN0IGJjeWFuID0gKHN0cikgPT4gYFxceDFiWzM4OzQ2bSR7c3RyfVxceDFiWzA7MG1gXHJcbmNvbnN0IGJncmVlbiA9IChzdHIpID0+IGBcXHgxYlszMDs0Mm0ke3N0cn1cXHgxYlswOzBtYFxyXG5jb25zdCBicmVkID0gKHN0cikgPT4gYFxceDFiWzMwOzQxbSR7c3RyfVxceDFiWzA7MG1gXHJcbmNvbnN0IGJ2aW9sZXQgPSAoc3RyKSA9PiBgXFx4MWJbMzA7NDVtJHtzdHJ9XFx4MWJbMDswbWBcclxuXHJcbmNvbnN0IGxjeWFuID0gKHN0cikgPT4gYFxceDFiWzE7OTZtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IGxncmF5ID0gKHN0cikgPT4gYFxceDFiWzE7OTBtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IGxncmVlbiA9IChzdHIpID0+IGBcXHgxYlsxOzkybSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBsbWFnZW50YSA9IChzdHIpID0+IGBcXHgxYlsxOzk1bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBseWVsbG93ID0gKHN0cikgPT4gYFxceDFiWzE7OTNtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IG1ibHVlID0gKHN0cikgPT4gYFxceDFiWzk0bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBtY3lhbiA9IChzdHIpID0+IGBcXHgxYls5Nm0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgbWdyZWVuID0gKHN0cikgPT4gYFxceDFiWzkybSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBtbWFnZW50YSA9IChzdHIpID0+IGBcXHgxYlswOzk1bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBtcmVkID0gKHN0cikgPT4gYFxceDFiWzkxbSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBteWVsbG93ID0gKHN0cikgPT4gYFxceDFiWzkzbSR7c3RyfVxceDFiWzBtYFxyXG5cclxuY29uc3QgYmx1ZSA9IChzdHIpID0+IGBcXHgxYlszNG0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgY3lhbiA9IChzdHIpID0+IGBcXHgxYlszNm0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgZ3JheSA9IChzdHIpID0+IGBcXHgxYls5MG0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgZ3JlZW4gPSAoc3RyKSA9PiBgXFx4MWJbMzJtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IG1hZ2VudGEgPSAoc3RyKSA9PiBgXFx4MWJbMDszNW0ke3N0cn1cXHgxYlswbWBcclxuY29uc3Qgbm9ybWFsID0gKHN0cikgPT4gYFxceDFiWzk4bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCByZWQgPSAoc3RyKSA9PiBgXFx4MWJbMzFtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IHdoaXRlID0gKHN0cikgPT4gYFxceDFiWzE7OThtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IHllbGxvdyA9IChzdHIpID0+IGBcXHgxYlszM20ke3N0cn1cXHgxYlswbWBcclxuXHJcbmZ1bmN0aW9uIGNvdW50TGVhdmVzICh0LCBvYmopIHtcclxuICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSByZXR1cm4gMFxyXG4gIGlmIChvYmogaW5zdGFuY2VvZiB0KSByZXR1cm4gMVxyXG4gIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHJldHVybiBvYmoucmVkdWNlKChzdW0sIGl0ZW0pID0+IHN1bSArIGNvdW50TGVhdmVzKHQsIGl0ZW0pLCAwKVxyXG4gIGVsc2UgcmV0dXJuIE9iamVjdC52YWx1ZXMob2JqKS5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgY291bnRMZWF2ZXModCwgaXRlbSksIDApXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRlbGV0ZUV4dHJhRmxhZ3MgKGFyZ3MpIHtcclxuICByZXR1cm4gYXJncy5maWx0ZXIoYXJnID0+ICFhcmcuc3RhcnRzV2l0aChcIi0tXCIpKVxyXG59XHJcblxyXG5mdW5jdGlvbiBjbWQgKC4uLmNvbW1hbmQpIHtcclxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgZXhlYyhjb21tYW5kLmpvaW4oXCIgXCIpLCB7IG1heEJ1ZmZlcjogMTAyNCAqIDEwMjQgKiAxMCB9LCAoZXJyb3IsIHN0ZG91dCwgc3RkZXJyKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgIHJlamVjdChlcnJvcilcclxuICAgICAgfVxyXG4gICAgICBpZiAoc3RkZXJyKSB7XHJcbiAgICAgICAgcmVqZWN0KHN0ZGVycilcclxuICAgICAgfVxyXG4gICAgICByZXNvbHZlKHN0ZG91dClcclxuICAgIH0pXHJcbiAgfSlcclxufTtcclxuXHJcbmFzeW5jIGZ1bmN0aW9uIGV4ZWNSYWRvbkJ5dGVjb2RlIChieXRlY29kZSwgLi4uZmxhZ3MpIHtcclxuICBpZiAoIWlzSGV4U3RyaW5nKGJ5dGVjb2RlKSkge1xyXG4gICAgdGhyb3cgRXZhbEVycm9yKFwiaW52YWxpZCBoZXggc3RyaW5nXCIpXHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnN0IG5weCA9IG9zLnR5cGUoKSA9PT0gXCJXaW5kb3dzX05UXCIgPyBcIm5weC5jbWRcIiA6IFwibnB4XCJcclxuICAgIHJldHVybiBjbWQobnB4LCBcIndpdG5ldFwiLCBcInJhZG9uXCIsIFwiZHJ5LXJ1blwiLCBieXRlY29kZSwgLi4uZmxhZ3MpXHJcbiAgICAvLyAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgLy8gICAgIGxldCBlcnJvck1lc3NhZ2UgPSBlcnIubWVzc2FnZS5zcGxpdCgnXFxuJykuc2xpY2UoMSkuam9pbignXFxuJykudHJpbSgpXHJcbiAgICAvLyAgICAgY29uc3QgZXJyb3JSZWdleCA9IC8uKl5lcnJvcjogKD88bWVzc2FnZT4uKikkLiovZ21cclxuICAgIC8vICAgICBjb25zdCBtYXRjaGVkID0gZXJyb3JSZWdleC5leGVjKGVyci5tZXNzYWdlKVxyXG4gICAgLy8gICAgIGlmIChtYXRjaGVkKSB7XHJcbiAgICAvLyAgICAgICAgIGVycm9yTWVzc2FnZSA9IG1hdGNoZWQuZ3JvdXBzLm1lc3NhZ2VcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgY29uc29sZS5sb2coZXJyb3JNZXNzYWdlIHx8IGVycilcclxuICAgIC8vICAgICBjb25zb2xlLmVycm9yKGVycm9yTWVzc2FnZSB8fCBlcnIpXHJcbiAgICAvLyB9KVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZXh0cmFjdEZyb21BcmdzIChhcmdzLCBmbGFncykge1xyXG4gIGNvbnN0IGN1cmF0ZWQgPSB7fVxyXG4gIGlmIChhcmdzICYmIGZsYWdzKSB7XHJcbiAgICBPYmplY3Qua2V5cyhmbGFncykuZm9yRWFjaChmbGFnID0+IHtcclxuICAgICAgY29uc3QgZmxhZ0luZGV4ID0gYXJncy5pbmRleE9mKGAtLSR7ZmxhZ31gKVxyXG4gICAgICBpZiAoZmxhZ0luZGV4ID49IDApIHtcclxuICAgICAgICBpZiAoZmxhZ3NbZmxhZ10ucGFyYW0pIHtcclxuICAgICAgICAgIGN1cmF0ZWRbZmxhZ10gPSBhcmdzW2ZsYWdJbmRleF1cclxuICAgICAgICAgIGlmICghYXJnc1tmbGFnSW5kZXggKyAxXSB8fCBhcmdzW2ZsYWdJbmRleCArIDFdLnN0YXJ0c1dpdGgoXCItLVwiKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXIgZm9yIC0tJHtmbGFnfWApXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjdXJhdGVkW2ZsYWddID0gYXJnc1tmbGFnSW5kZXggKyAxXVxyXG4gICAgICAgICAgICBhcmdzLnNwbGljZShmbGFnSW5kZXgsIDIpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGN1cmF0ZWRbZmxhZ10gPSB0cnVlXHJcbiAgICAgICAgICBhcmdzLnNwbGljZShmbGFnSW5kZXgsIDEpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICByZXR1cm4gW2FyZ3MsIGN1cmF0ZWRdXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZyb21IZXhTdHJpbmcgKGhleFN0cmluZykge1xyXG4gIGlmIChoZXhTdHJpbmcuc3RhcnRzV2l0aChcIjB4XCIpKSBoZXhTdHJpbmcgPSBoZXhTdHJpbmcuc2xpY2UoMilcclxuICByZXR1cm4gVWludDhBcnJheS5mcm9tKGhleFN0cmluZy5tYXRjaCgvLnsxLDJ9L2cpLm1hcCgoYnl0ZSkgPT4gcGFyc2VJbnQoYnl0ZSwgMTYpKSlcclxufVxyXG5cclxuZnVuY3Rpb24gaXBJc1ByaXZhdGVPckxvY2FsaG9zdCAoaXApIHtcclxuICBpZiAoaXAuc3Vic3RyaW5nKDAsIDcpID09PSBcIjo6ZmZmZjpcIikgeyBpcCA9IGlwLnN1YnN0cmluZyg3KSB9XHJcblxyXG4gIGlmIChuZXQuaXNJUHY0KGlwKSkge1xyXG4gICAgLy8gY2hlY2sgbG9jYWxob3N0XHJcbiAgICBpZiAoaXAgPT09IFwiMTI3LjAuMC4xXCIpIHsgcmV0dXJuIHRydWUgfVxyXG5cclxuICAgIC8vICAgICAgICAgMTAuMC4wLjAgLSAxMC4yNTUuMjU1LjI1NSAgICAgICAgfHwgICAxNzIuMTYuMC4wIC0gMTcyLjMxLjI1NS4yNTUgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICAgIDE5Mi4xNjguMC4wIC0gMTkyLjE2OC4yNTUuMjU1XHJcbiAgICByZXR1cm4gL14oMTApXFwuKC4qKVxcLiguKilcXC4oLiopJC8udGVzdChpcCkgfHwgL14oMTcyKVxcLigxWzYtOV18MlswLTldfDNbMC0xXSlcXC4oLiopXFwuKC4qKSQvLnRlc3QoaXApIHx8IC9eKDE5MilcXC4oMTY4KVxcLiguKilcXC4oLiopJC8udGVzdChpcClcclxuICB9XHJcblxyXG4gIC8vIGVsc2U6IGlwIGlzIElQdjZcclxuICBjb25zdCBmaXJzdFdvcmQgPSBpcC5zcGxpdChcIjpcIikuZmluZChlbCA9PiAhIWVsKSAvLyBnZXQgZmlyc3Qgbm90IGVtcHR5IHdvcmRcclxuXHJcbiAgLy8gZXF1aXZhbGVudCBvZiAxMjcuMC4wLjEgaW4gSVB2NlxyXG4gIGlmIChpcCA9PT0gXCI6OjFcIikgcmV0dXJuIHRydWVcclxuXHJcbiAgLy8gVGhlIG9yaWdpbmFsIElQdjYgU2l0ZSBMb2NhbCBhZGRyZXNzZXMgKGZlYzA6Oi8xMCkgYXJlIGRlcHJlY2F0ZWQuIFJhbmdlOiBmZWMwIC0gZmVmZlxyXG4gIGVsc2UgaWYgKC9eZmVbYy1mXVswLWZdJC8udGVzdChmaXJzdFdvcmQpKSByZXR1cm4gdHJ1ZVxyXG5cclxuICAvLyBUaGVzZSBkYXlzIFVuaXF1ZSBMb2NhbCBBZGRyZXNzZXMgKFVMQSkgYXJlIHVzZWQgaW4gcGxhY2Ugb2YgU2l0ZSBMb2NhbC5cclxuICAvLyBSYW5nZTogZmMwMCAtIGZjZmZcclxuICBlbHNlIGlmICgvXmZjWzAtZl17Mn0kLy50ZXN0KGZpcnN0V29yZCkpIHJldHVybiB0cnVlXHJcblxyXG4gIC8vIFJhbmdlOiBmZDAwIC0gZmNmZlxyXG4gIGVsc2UgaWYgKC9eZmRbMC1mXXsyfSQvLnRlc3QoZmlyc3RXb3JkKSkgcmV0dXJuIHRydWVcclxuXHJcbiAgLy8gTGluayBsb2NhbCBhZGRyZXNzZXMgKHByZWZpeGVkIHdpdGggZmU4MCkgYXJlIG5vdCByb3V0YWJsZVxyXG4gIGVsc2UgaWYgKGZpcnN0V29yZCA9PT0gXCJmZTgwXCIpIHJldHVybiB0cnVlXHJcblxyXG4gIC8vIERpc2NhcmQgUHJlZml4XHJcbiAgZWxzZSBpZiAoZmlyc3RXb3JkID09PSBcIjEwMFwiKSByZXR1cm4gdHJ1ZVxyXG5cclxuICAvLyBBbnkgb3RoZXIgSVAgYWRkcmVzcyBpcyBub3QgVW5pcXVlIExvY2FsIEFkZHJlc3MgKFVMQSlcclxuICByZXR1cm4gZmFsc2VcclxufVxyXG5cclxuZnVuY3Rpb24gaXNIZXhTdHJpbmdPZkxlbmd0aCAoc3RyLCBsZW5ndGgpIHtcclxuICByZXR1cm4gKGlzSGV4U3RyaW5nKHN0cikgJiZcclxuICAgICAgICAoXHJcbiAgICAgICAgICAoc3RyLnN0YXJ0c1dpdGgoXCIweFwiKSAmJiBzdHIuc2xpY2UoMikubGVuZ3RoID09PSBsZW5ndGggKiAyKSB8fFxyXG4gICAgICAgICAgICBzdHIubGVuZ3RoID09PSBsZW5ndGggKiAyXHJcbiAgICAgICAgKVxyXG4gICkgfHwgaXNXaWxkY2FyZChzdHIpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzSGV4U3RyaW5nIChzdHIpIHtcclxuICByZXR1cm4gKFxyXG4gICAgdHlwZW9mIHN0ciA9PT0gXCJzdHJpbmdcIiAmJlxyXG4gICAgICAgIChcclxuICAgICAgICAgIChzdHIuc3RhcnRzV2l0aChcIjB4XCIpICYmIC9eW2EtZkEtRjAtOV0rJC9pLnRlc3Qoc3RyLnNsaWNlKDIpKSkgfHxcclxuICAgICAgICAgICAgL15bYS1mQS1GMC05XSskL2kudGVzdChzdHIpXHJcbiAgICAgICAgKVxyXG4gICkgfHwgaXNXaWxkY2FyZChzdHIpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvSGV4U3RyaW5nIChidWZmZXIsIHByZWZpeDB4ID0gZmFsc2UpIHtcclxuICBpZiAoYnVmZmVyIGluc3RhbmNlb2YgVWludDhBcnJheSkgYnVmZmVyID0gQnVmZmVyLmZyb20oYnVmZmVyKVxyXG4gIHJldHVybiAocHJlZml4MHggPyBcIjB4XCIgOiBcIlwiKSArIEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChidWZmZXIsIHggPT4gKFwiMDBcIiArIHgudG9TdHJpbmcoMTYpKS5zbGljZSgtMikpXHJcbiAgICAuam9pbihcIlwiKVxyXG4gICAgLm1hdGNoKC9bYS1mQS1GMC05XXsyfS9nKVxyXG4gICAgLmpvaW4oXCJcIilcclxufVxyXG5cclxuZnVuY3Rpb24gcGFyc2VVUkwgKHVybCkge1xyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBwYXJzZWRVcmwgPSBuZXcgVVJMKHVybClcclxuICAgIHJldHVybiBbXHJcbiAgICAgIHBhcnNlZFVybC5wcm90b2NvbCArIFwiLy9cIixcclxuICAgICAgcGFyc2VkVXJsLmhvc3QsXHJcbiAgICAgIHBhcnNlZFVybC5wYXRobmFtZS5zbGljZSgxKSxcclxuICAgICAgcGFyc2VkVXJsLnNlYXJjaC5zbGljZSgxKSxcclxuICAgIF1cclxuICB9IGNhdGNoIHtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgVVJMIHdhcyBwcm92aWRlZDogJHt1cmx9YClcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3dVc2FnZSAoY21kLCBtb2R1bGUpIHtcclxuICBzaG93VXNhZ2VIZWFkbGluZShjbWQpXHJcbiAgc2hvd1VzYWdlT3B0aW9ucyh7IC4uLm1vZHVsZT8uZmxhZ3MgfSlcclxuICBzaG93VXNhZ2VGbGFncyh7IC4uLm1vZHVsZT8uZmxhZ3MgfSlcclxuICBzaG93VXNhZ2VSb3V0ZXIoeyAuLi5tb2R1bGU/LnJvdXRlciB9KVxyXG4gIHNob3dVc2FnZUVudmFycyh7IC4uLm1vZHVsZT8uZW52YXJzIH0pXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3dVc2FnZVJvdXRlciAocm91dGVyKSB7XHJcbiAgY29uc3QgY21kcyA9IE9iamVjdC5lbnRyaWVzKHJvdXRlcilcclxuICBpZiAoY21kcy5sZW5ndGggPiAwKSB7XHJcbiAgICBjb25zb2xlLmluZm8oXCJcXG5TVUJDT01NQU5EUzpcIilcclxuICAgIGNvbnN0IG1heExlbmd0aCA9IE1hdGgubWF4KC4uLmNtZHMubWFwKChbY21kXSkgPT4gY21kLmxlbmd0aCkpXHJcbiAgICBjbWRzLmZvckVhY2goY21kID0+IHtcclxuICAgICAgY29uc29sZS5pbmZvKFwiICBcIiwgYCR7Y21kWzBdfSR7XCIgXCIucmVwZWF0KG1heExlbmd0aCAtIGNtZFswXS5sZW5ndGgpfWAsIFwiICBcIiwgY21kWzFdLmhpbnQpXHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gc2hvd1VzYWdlRXJyb3IgKGNtZCwgc3ViY21kLCBtb2R1bGUsIGVycm9yLCBmbGFncykge1xyXG4gIHNob3dVc2FnZVN1YmNvbW1hbmQoY21kLCBzdWJjbWQsIG1vZHVsZSwgZXJyb3IpXHJcbiAgaWYgKGVycm9yKSB7XHJcbiAgICBjb25zb2xlLmluZm8oXCJcXG5FUlJPUjpcIilcclxuICAgIGlmIChmbGFncz8uZGVidWcpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3I/LnN0YWNrPy5zcGxpdChcIlxcblwiKVswXSB8fCBlcnJvcilcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3dVc2FnZUVudmFycyAoZW52YXJzKSB7XHJcbiAgaWYgKGVudmFycykge1xyXG4gICAgZW52YXJzID0gT2JqZWN0LmVudHJpZXMoZW52YXJzKVxyXG4gICAgaWYgKGVudmFycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnNvbGUuaW5mbyhcIlxcbkVOVkFSUzpcIilcclxuICAgICAgY29uc3QgbWF4V2lkdGggPSBNYXRoLm1heCguLi5lbnZhcnMubWFwKChbZW52YXJdKSA9PiBlbnZhci5sZW5ndGgpKVxyXG4gICAgICBlbnZhcnMuZm9yRWFjaCgoW2VudmFyLCBoaW50XSkgPT4ge1xyXG4gICAgICAgIGlmIChlbnZhci50b1VwcGVyQ2FzZSgpLmluZGV4T2YoXCJLRVlcIikgPCAwICYmIHByb2Nlc3MuZW52W2VudmFyXSkge1xyXG4gICAgICAgICAgY29uc29sZS5pbmZvKFwiICBcIiwgYCR7eWVsbG93KGVudmFyLnRvVXBwZXJDYXNlKCkpfSR7XCIgXCIucmVwZWF0KG1heFdpZHRoIC0gZW52YXIubGVuZ3RoKX1gLCBgID0+IFNldHRsZWQgdG8gXCIke215ZWxsb3cocHJvY2Vzcy5lbnZbZW52YXJdKX1cImApXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnNvbGUuaW5mbyhcIiAgXCIsIGAke3llbGxvdyhlbnZhci50b1VwcGVyQ2FzZSgpKX0ke1wiIFwiLnJlcGVhdChtYXhXaWR0aCAtIGVudmFyLmxlbmd0aCl9YCwgYCAke2hpbnR9YClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VXNhZ2VGbGFncyAoZmxhZ3MpIHtcclxuICBpZiAoZmxhZ3MpIHtcclxuICAgIGZsYWdzID0gT2JqZWN0LmVudHJpZXMoZmxhZ3MpLmZpbHRlcigoWywgZmxhZ10pID0+ICFmbGFnPy5wYXJhbSkuc29ydCgoW2FdLCBbYl0pID0+IHtcclxuICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTFcclxuICAgICAgZWxzZSBpZiAoYSA+IGIpIHJldHVybiAxXHJcbiAgICAgIGVsc2UgcmV0dXJuIDBcclxuICAgIH0pXHJcbiAgICBpZiAoZmxhZ3MubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zb2xlLmluZm8oXCJcXG5GTEFHUzpcIilcclxuICAgICAgY29uc3QgbWF4TGVuZ3RoID0gTWF0aC5tYXgoLi4uZmxhZ3MuZmlsdGVyKChbLCB7IGhpbnQgfV0pID0+IGhpbnQpLm1hcCgoW2tleSwgeyBwYXJhbSB9XSkgPT4gcGFyYW0gPyBrZXkubGVuZ3RoICsgcGFyYW0ubGVuZ3RoICsgMyA6IGtleS5sZW5ndGgpKVxyXG4gICAgICBmbGFncy5mb3JFYWNoKGZsYWcgPT4ge1xyXG4gICAgICAgIGNvbnN0IHN0ciA9IGAke2ZsYWdbMF19JHtmbGFnWzFdLnBhcmFtID8gZ3JheShgIDwke2ZsYWdbMV0ucGFyYW19PmApIDogXCJcIn1gXHJcbiAgICAgICAgaWYgKGZsYWdbMV0uaGludCkge1xyXG4gICAgICAgICAgY29uc29sZS5pbmZvKFwiICBcIiwgYC0tJHtzdHJ9JHtcIiBcIi5yZXBlYXQobWF4TGVuZ3RoIC0gY29sb3JzdHJpcChzdHIpLmxlbmd0aCl9YCwgXCIgIFwiLCBmbGFnWzFdLmhpbnQpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gc2hvd1VzYWdlSGVhZGxpbmUgKGNtZCwgc3ViY21kLCBtb2R1bGUpIHtcclxuICBjb25zb2xlLmluZm8oXCJVU0FHRTpcIilcclxuICBpZiAoc3ViY21kKSB7XHJcbiAgICBsZXQgcGFyYW1zID0gbW9kdWxlLnJvdXRlcltzdWJjbWRdPy5wYXJhbXNcclxuICAgIC8vIGNvbnN0IG9wdGlvbnMgPSBtb2R1bGUucm91dGVyW3N1YmNtZF0/Lm9wdGlvbnNcclxuICAgIGlmIChwYXJhbXMpIHtcclxuICAgICAgY29uc3Qgb3B0aW9uYWxpemUgPSAoc3RyKSA9PiBzdHIuZW5kc1dpdGgoXCIgLi4uXVwiKVxyXG4gICAgICAgID8gYFs8JHtzdHIuc2xpY2UoMSwgLTUpfT4gLi4uXWBcclxuICAgICAgICA6IChcclxuICAgICAgICAgIHN0clswXSA9PT0gXCJbXCIgPyBgWzwke3N0ci5zbGljZSgxLCAtMSl9Pl1gIDogYDwke3N0cn0+YFxyXG4gICAgICAgIClcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGFyYW1zKSkge1xyXG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5tYXAocGFyYW0gPT4gb3B0aW9uYWxpemUocGFyYW0pKS5qb2luKFwiIFwiKSArIFwiIFwiXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFyYW1zID0gb3B0aW9uYWxpemUocGFyYW1zKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmluZm8oYCAgICR7d2hpdGUoYG5weCB3aXRzZGsgJHtjbWR9YCl9ICR7d2hpdGUoc3ViY21kKX0gJHtwYXJhbXMgPyBncmVlbihwYXJhbXMpICsgXCIgXCIgOiBcIlwifVtPUFRJT05TXSBbRkxBR1NdYClcclxuICAgIGlmIChtb2R1bGU/LnJvdXRlcltzdWJjbWRdPy5oaW50KSB7XHJcbiAgICAgIGNvbnNvbGUuaW5mbyhcIlxcbkRFU0NSSVBUSU9OOlwiKVxyXG4gICAgICBjb25zb2xlLmluZm8oYCAgICR7bW9kdWxlLnJvdXRlcltzdWJjbWRdLmhpbnR9YClcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgY29uc29sZS5pbmZvKGAgICAke3doaXRlKGBucHggd2l0c2RrICR7Y21kfWApfSA8U1VCQ09NTUFORD4gLi4uIFtPUFRJT05TXSBbRkxBR1NdYClcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3dVc2FnZU9wdGlvbnMgKG9wdGlvbnMpIHtcclxuICBvcHRpb25zID0gT2JqZWN0LmVudHJpZXMob3B0aW9ucykuZmlsdGVyKChbLCBvcHRpb25dKSA9PiBvcHRpb24/LnBhcmFtKS5zb3J0KChbYV0sIFtiXSkgPT4ge1xyXG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTFcclxuICAgIGVsc2UgaWYgKGEgPiBiKSByZXR1cm4gMVxyXG4gICAgZWxzZSByZXR1cm4gMFxyXG4gIH0pXHJcbiAgaWYgKG9wdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgY29uc29sZS5pbmZvKFwiXFxuT1BUSU9OUzpcIilcclxuICAgIGNvbnN0IG1heExlbmd0aCA9IG9wdGlvbnNcclxuICAgICAgLm1hcChvcHRpb24gPT4gb3B0aW9uWzFdLnBhcmFtID8gb3B0aW9uWzFdLnBhcmFtLmxlbmd0aCArIG9wdGlvblswXS5sZW5ndGggKyAzIDogb3B0aW9uWzBdLmxlbmd0aClcclxuICAgICAgLnJlZHVjZSgocHJldiwgY3VycikgPT4gY3VyciA+IHByZXYgPyBjdXJyIDogcHJldilcclxuICAgIG9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4ge1xyXG4gICAgICBpZiAob3B0aW9uWzFdLmhpbnQpIHtcclxuICAgICAgICBjb25zdCBzdHIgPSBgJHtvcHRpb25bMF19JHtvcHRpb25bMV0ucGFyYW0gPyBncmF5KGAgPCR7b3B0aW9uWzFdLnBhcmFtfT5gKSA6IFwiXCJ9YFxyXG4gICAgICAgIGNvbnNvbGUuaW5mbyhcIiAgXCIsIGAtLSR7c3RyfSR7XCIgXCIucmVwZWF0KG1heExlbmd0aCAtIGNvbG9yc3RyaXAoc3RyKS5sZW5ndGgpfWAsIFwiICBcIiwgb3B0aW9uWzFdLmhpbnQpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VXNhZ2VTdWJjb21tYW5kIChjbWQsIHN1YmNtZCwgbW9kdWxlKSB7XHJcbiAgc2hvd1VzYWdlSGVhZGxpbmUoY21kLCBzdWJjbWQsIG1vZHVsZSlcclxuICBzaG93VXNhZ2VPcHRpb25zKHsgLi4ubW9kdWxlPy5mbGFncywgLi4ubW9kdWxlLnJvdXRlcltzdWJjbWRdPy5vcHRpb25zIH0pXHJcbiAgc2hvd1VzYWdlRmxhZ3MoeyAuLi5tb2R1bGU/LmZsYWdzLCAuLi5tb2R1bGUucm91dGVyW3N1YmNtZF0/Lm9wdGlvbnMgfSlcclxuICBzaG93VXNhZ2VFbnZhcnMobW9kdWxlLnJvdXRlcltzdWJjbWRdPy5lbnZhcnMgfHwgbW9kdWxlPy5lbnZhcnMpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3dWZXJzaW9uICgpIHtcclxuICBjb25zb2xlLmluZm8oYCR7bWN5YW4oYFdpdG5ldCBTREsgdiR7cmVxdWlyZShcIi4uLy4uL3BhY2thZ2UuanNvblwiKS52ZXJzaW9ufWApfWApXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFdpbGRjYXJkc0NvdW50RnJvbVN0cmluZyAoc3RyKSB7XHJcbiAgbGV0IG1heEFyZ3NJbmRleCA9IDBcclxuICBpZiAoc3RyICYmIHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnKSB7XHJcbiAgICBsZXQgbWF0Y2hcclxuICAgIGNvbnN0IHJlZ2V4cCA9IC9cXFxcXFxkXFxcXC9nXHJcbiAgICB3aGlsZSAoKG1hdGNoID0gcmVnZXhwLmV4ZWMoc3RyKSkgIT09IG51bGwpIHtcclxuICAgICAgY29uc3QgYXJnc0luZGV4ID0gcGFyc2VJbnQobWF0Y2hbMF1bMV0pICsgMVxyXG4gICAgICBpZiAoYXJnc0luZGV4ID4gbWF4QXJnc0luZGV4KSBtYXhBcmdzSW5kZXggPSBhcmdzSW5kZXhcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIG1heEFyZ3NJbmRleFxyXG59XHJcblxyXG5mdW5jdGlvbiBjaGVja1JwY1dpbGRjYXJkcyAod2lsZGNhcmRzKSB7XHJcbiAgaWYgKHR5cGVvZiB3aWxkY2FyZHMgPT09IFwib2JqZWN0XCIpIHtcclxuICAgIE9iamVjdC52YWx1ZXMod2lsZGNhcmRzKS5mb3JFYWNoKHdpbGRjYXJkID0+IHtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkod2lsZGNhcmQpKSB3aWxkY2FyZC5mb3JFYWNoKGl0ZW0gPT4gY2hlY2tScGNXaWxkY2FyZHMoaXRlbSkpXHJcbiAgICAgIGVsc2UgY2hlY2tScGNXaWxkY2FyZHMod2lsZGNhcmQpXHJcbiAgICB9KVxyXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh3aWxkY2FyZHMpKSB7XHJcbiAgICB3aWxkY2FyZHMuZm9yRWFjaCh3aWxkY2FyZCA9PiBjaGVja1JwY1dpbGRjYXJkcyh3aWxkY2FyZCkpXHJcbiAgfSBlbHNlIGlmICh0eXBlb2Ygd2lsZGNhcmRzID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICBpZiAoaXNXaWxkY2FyZCh3aWxkY2FyZHMpKSB7XHJcbiAgICAgIGNvbnN0IGNoYXIgPSB3aWxkY2FyZHMuY2hhckF0KDEpXHJcbiAgICAgIGlmIChjaGFyIDwgXCIxXCIgfHwgY2hhciA+IFwiOVwiKSB7XHJcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJSUEM6IHdpbGRjYXJkcyBub3QgaW4gcmFuZ2UgWzEgLi4gOV1cIilcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaXNXaWxkY2FyZCAoc3RyKSB7XHJcbiAgcmV0dXJuIHN0ci5sZW5ndGggPT09IDMgJiYgL1xcXFxcXGRcXFxcL2cudGVzdChzdHIpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlcGxhY2VXaWxkY2FyZHMgKG9iaiwgYXJncykge1xyXG4gIGlmIChhcmdzLmxlbmd0aCA+IDEwKSBhcmdzID0gYXJncy5zbGljZSgwLCAxMClcclxuICBpZiAob2JqICYmIHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHtcclxuICAgIGZvciAobGV0IGFyZ0luZGV4ID0gMDsgYXJnSW5kZXggPCBhcmdzLmxlbmd0aDsgYXJnSW5kZXgrKykge1xyXG4gICAgICBjb25zdCB3aWxkY2FyZCA9IGBcXFxcJHthcmdJbmRleH1cXFxcYFxyXG4gICAgICBvYmogPSBvYmoucmVwbGFjZUFsbCh3aWxkY2FyZCwgYXJnc1thcmdJbmRleF0pXHJcbiAgICB9XHJcbiAgfSBlbHNlIGlmIChvYmogJiYgQXJyYXkuaXNBcnJheShvYmopKSB7XHJcbiAgICBvYmogPSBvYmoubWFwKHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KHZhbHVlKVxyXG4gICAgICA/IHJlcGxhY2VXaWxkY2FyZHModmFsdWUsIGFyZ3MpXHJcbiAgICAgIDogdmFsdWVcclxuICAgIClcclxuICB9XHJcbiAgcmV0dXJuIG9ialxyXG59XHJcblxyXG5mdW5jdGlvbiBzcGxpY2VXaWxkY2FyZCAob2JqLCBhcmdJbmRleCwgYXJnVmFsdWUsIGFyZ3NDb3VudCkge1xyXG4gIGlmIChvYmogJiYgdHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgY29uc3Qgd2lsZGNhcmQgPSBgXFxcXCR7YXJnSW5kZXh9XFxcXGBcclxuICAgIG9iaiA9IG9iai5yZXBsYWNlQWxsKHdpbGRjYXJkLCBhcmdWYWx1ZSlcclxuICAgIGZvciAobGV0IGogPSBhcmdJbmRleCArIDE7IGogPCBhcmdzQ291bnQ7IGorKykge1xyXG4gICAgICBvYmogPSBvYmoucmVwbGFjZUFsbChgXFxcXCR7an1cXFxcYCwgYFxcXFwke2ogLSAxfVxcXFxgKVxyXG4gICAgfVxyXG4gIH0gZWxzZSBpZiAob2JqICYmIEFycmF5LmlzQXJyYXkob2JqKSkge1xyXG4gICAgb2JqID0gb2JqLm1hcCh2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSlcclxuICAgICAgPyBzcGxpY2VXaWxkY2FyZCh2YWx1ZSwgYXJnSW5kZXgsIGFyZ1ZhbHVlLCBhcmdzQ291bnQpXHJcbiAgICAgIDogdmFsdWVcclxuICAgIClcclxuICB9XHJcbiAgcmV0dXJuIG9ialxyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiB0b29sa2l0UnVuIChzZXR0aW5ncywgYXJncykge1xyXG4gIGNvbnN0IGNtZCA9IGAke3NldHRpbmdzLnBhdGhzLnRvb2xraXRCaW5QYXRofSAke2FyZ3Muam9pbihcIiBcIil9YFxyXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBleGVjKGNtZCwgeyBtYXhCdWZmZXI6IDEwMjQgKiAxMDI0ICogMTAgfSwgKGVycm9yLCBzdGRvdXQsIHN0ZGVycikgPT4ge1xyXG4gICAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgICByZWplY3QoZXJyb3IpXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHN0ZGVycikge1xyXG4gICAgICAgIHJlamVjdChzdGRlcnIpXHJcbiAgICAgIH1cclxuICAgICAgcmVzb2x2ZShzdGRvdXQpXHJcbiAgICB9KVxyXG4gIH0pXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvVXBwZXJDYW1lbENhc2UgKHN0cikge1xyXG4gIHJldHVybiBzdHIucmVwbGFjZSgvXFxiKFxcdykvZywgZnVuY3Rpb24gKG1hdGNoLCBjYXB0dXJlKSB7XHJcbiAgICByZXR1cm4gY2FwdHVyZS50b1VwcGVyQ2FzZSgpXHJcbiAgfSkucmVwbGFjZSgvXFxzKy9nLCBcIlwiKVxyXG59XHJcblxyXG5mdW5jdGlvbiB0b1V0ZjE2Qnl0ZXMoc3RyKSB7XHJcbiAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShzdHIubGVuZ3RoICogMik7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcclxuICAgIGNvbnN0IGNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcclxuICAgIGJ5dGVzW2kgKiAyXSA9IGNvZGUgPj4gODtcclxuICAgIGJ5dGVzW2kgKiAyICsgMV0gPSBjb2RlICYgMHhmZjtcclxuICB9XHJcbiAgcmV0dXJuIGJ5dGVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiB0b1V0ZjhBcnJheSAoc3RyKSB7XHJcbiAgY29uc3QgdXRmOCA9IFtdXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBjaGFyY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpXHJcbiAgICBpZiAoY2hhcmNvZGUgPCAweDgwKSB1dGY4LnB1c2goY2hhcmNvZGUpXHJcbiAgICBlbHNlIGlmIChjaGFyY29kZSA8IDB4ODAwKSB7XHJcbiAgICAgIHV0ZjgucHVzaCgweGMwIHwgKGNoYXJjb2RlID4+IDYpLFxyXG4gICAgICAgIDB4ODAgfCAoY2hhcmNvZGUgJiAweDNmKSlcclxuICAgIH0gZWxzZSBpZiAoY2hhcmNvZGUgPCAweGQ4MDAgfHwgY2hhcmNvZGUgPj0gMHhlMDAwKSB7XHJcbiAgICAgIHV0ZjgucHVzaCgweGUwIHwgKGNoYXJjb2RlID4+IDEyKSxcclxuICAgICAgICAweDgwIHwgKChjaGFyY29kZSA+PiA2KSAmIDB4M2YpLFxyXG4gICAgICAgIDB4ODAgfCAoY2hhcmNvZGUgJiAweDNmKSlcclxuICAgIH0gZWxzZSB7IC8vIHN1cnJvZ2F0ZSBwYWlyXHJcbiAgICAgIGkrK1xyXG4gICAgICAvLyBVVEYtMTYgZW5jb2RlcyAweDEwMDAwLTB4MTBGRkZGIGJ5XHJcbiAgICAgIC8vIHN1YnRyYWN0aW5nIDB4MTAwMDAgYW5kIHNwbGl0dGluZyB0aGVcclxuICAgICAgLy8gMjAgYml0cyBvZiAweDAtMHhGRkZGRiBpbnRvIHR3byBoYWx2ZXNcclxuICAgICAgY2hhcmNvZGUgPSAweDEwMDAwICsgKCgoY2hhcmNvZGUgJiAweDNmZikgPDwgMTApIHxcclxuICAgICAgICAgICAgICAgIChzdHIuY2hhckNvZGVBdChpKSAmIDB4M2ZmKSlcclxuICAgICAgdXRmOC5wdXNoKDB4ZjAgfCAoY2hhcmNvZGUgPj4gMTgpLFxyXG4gICAgICAgIDB4ODAgfCAoKGNoYXJjb2RlID4+IDEyKSAmIDB4M2YpLFxyXG4gICAgICAgIDB4ODAgfCAoKGNoYXJjb2RlID4+IDYpICYgMHgzZiksXHJcbiAgICAgICAgMHg4MCB8IChjaGFyY29kZSAmIDB4M2YpKVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gdXRmOFxyXG59XHJcblxyXG5mdW5jdGlvbiB1dGY4QXJyYXlUb1N0ciAoYXJyYXkpIHtcclxuICBjb25zdCBsZW4gPSBhcnJheS5sZW5ndGhcclxuICBsZXQgb3V0ID0gXCJcIjsgbGV0IGkgPSAwOyBsZXQgY1xyXG4gIGxldCBjaGFyMiwgY2hhcjNcclxuICB3aGlsZSAoaSA8IGxlbikge1xyXG4gICAgYyA9IGFycmF5W2krK11cclxuICAgIHN3aXRjaCAoYyA+PiA0KSB7XHJcbiAgICAgIGNhc2UgMDogY2FzZSAxOiBjYXNlIDI6IGNhc2UgMzogY2FzZSA0OiBjYXNlIDU6IGNhc2UgNjogY2FzZSA3OlxyXG4gICAgICAgIC8vIDB4eHh4eHh4XHJcbiAgICAgICAgb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYylcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlIDEyOiBjYXNlIDEzOlxyXG4gICAgICAgIC8vIDExMHggeHh4eCAgIDEweHggeHh4eFxyXG4gICAgICAgIGNoYXIyID0gYXJyYXlbaSsrXVxyXG4gICAgICAgIG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoYyAmIDB4MUYpIDw8IDYpIHwgKGNoYXIyICYgMHgzRikpXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAxNDpcclxuICAgICAgICAvLyAxMTEwIHh4eHggIDEweHggeHh4eCAgMTB4eCB4eHh4XHJcbiAgICAgICAgY2hhcjIgPSBhcnJheVtpKytdXHJcbiAgICAgICAgY2hhcjMgPSBhcnJheVtpKytdXHJcbiAgICAgICAgb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKChjICYgMHgwRikgPDwgMTIpIHxcclxuICAgICAgICAgICAgICAgICAgICAoKGNoYXIyICYgMHgzRikgPDwgNikgfFxyXG4gICAgICAgICAgICAgICAgICAgICgoY2hhcjMgJiAweDNGKSA8PCAwKSlcclxuICAgICAgICBicmVha1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gb3V0XHJcbn1cclxuXHJcbmFzeW5jIGZ1bmN0aW9uIHByb21wdCAocXVlc3Rpb24pIHtcclxuICBjb25zdCByZWFkbGluZUludGVyZmFjZSA9IHJlYWRsaW5lLmNyZWF0ZUludGVyZmFjZSh7XHJcbiAgICBpbnB1dDogcHJvY2Vzcy5zdGRpbixcclxuICAgIG91dHB1dDogcHJvY2Vzcy5zdGRvdXQsXHJcbiAgfSlcclxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgcmVhZGxpbmVJbnRlcmZhY2UucXVlc3Rpb24oYCR7cXVlc3Rpb259IGAsIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICByZWFkbGluZUludGVyZmFjZS5jbG9zZSgpXHJcbiAgICAgIHJlc29sdmUocmVzcG9uc2UudHJpbSgpKVxyXG4gICAgfSlcclxuICB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiBwcm9tcHRlciAocHJvbWlzZSkge1xyXG4gIGNvbnN0IGxvYWRpbmcgPSAoKCkgPT4ge1xyXG4gICAgY29uc3QgaCA9IFtcInxcIiwgXCIvXCIsIFwiLVwiLCBcIlxcXFxcIl1cclxuICAgIGxldCBpID0gMFxyXG4gICAgcmV0dXJuIHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgaSA9IChpID4gMykgPyAwIDogaVxyXG4gICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShgXFxiXFxiJHtoW2ldfSBgKVxyXG4gICAgICBpKytcclxuICAgIH0sIDUwKVxyXG4gIH0pKClcclxuICByZXR1cm4gcHJvbWlzZVxyXG4gICAgLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgY2xlYXJJbnRlcnZhbChsb2FkaW5nKVxyXG4gICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShcIlxcYlxcYlwiKVxyXG4gICAgICByZXR1cm4gcmVzdWx0XHJcbiAgICB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiB0cmFjZUNoZWNrbGlzdHMgKGNoZWNrbGlzdHMpIHtcclxuICBpZiAoY2hlY2tsaXN0cyAmJiBPYmplY3Qua2V5cyhjaGVja2xpc3RzKS5sZW5ndGggPiAwKSB7XHJcbiAgICBjb25zdCBoZWFkbGluZXMgPSBbXCJOT0RFU1wiLCAuLi5PYmplY3Qua2V5cyhjaGVja2xpc3RzKS5tYXAoa2V5ID0+IGA6JHtrZXl9YCldXHJcbiAgICBjaGVja2xpc3RzID0gT2JqZWN0LnZhbHVlcyhjaGVja2xpc3RzKVxyXG4gICAgY29uc3QgdXJscyA9IE9iamVjdC5rZXlzKGNoZWNrbGlzdHNbMF0pXHJcbiAgICBjb25zdCByZWNvcmRzID0gdXJscy5tYXAodXJsID0+IHtcclxuICAgICAgY29uc3QgZXJyb3JzID0gY2hlY2tsaXN0cy5maWx0ZXIoY2hlY2tsaXN0ID0+IGNoZWNrbGlzdFt1cmxdIGluc3RhbmNlb2YgRXJyb3IpLmxlbmd0aFxyXG4gICAgICByZXR1cm4gW1xyXG4gICAgICAgIGVycm9ycyA9PT0gY2hlY2tsaXN0cy5sZW5ndGggPyByZWQodXJsKSA6IChlcnJvcnMgPiAwID8gbXllbGxvdyh1cmwpIDogbWN5YW4odXJsKSksXHJcbiAgICAgICAgLi4uY2hlY2tsaXN0cy5tYXAoY2hlY2tsaXN0ID0+IGNoZWNrbGlzdFt1cmxdIGluc3RhbmNlb2YgRXJyb3JcclxuICAgICAgICAgID8gcmVkKGNoZWNrbGlzdFt1cmxdKVxyXG4gICAgICAgICAgOiAoY2hlY2tsaXN0W3VybF0gPT09IHRydWUgPyBsY3lhbihcIkF5ZVwiKSA6IGN5YW4oXCJOYXlcIikpXHJcbiAgICAgICAgKSxcclxuICAgICAgXVxyXG4gICAgfSlcclxuICAgIHRyYWNlVGFibGUocmVjb3Jkcywge1xyXG4gICAgICBoZWFkbGluZXMsXHJcbiAgICAgIG1heENvbHVtbldpZHRoOiAzMSxcclxuICAgIH0pXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB0cmFjZUhlYWRlciAoaGVhZGxpbmUsIGNvbG9yID0gbm9ybWFsLCBpbmRlbnQgPSBcIlwiLCkge1xyXG4gIGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSM4pSAJHtcIuKUgFwiLnJlcGVhdChoZWFkbGluZS5sZW5ndGgpfeKUgOKUkGApXHJcbiAgY29uc29sZS5pbmZvKGAke2luZGVudH3ilIIgJHtjb2xvcihoZWFkbGluZSl9IOKUgmApXHJcbiAgY29uc29sZS5pbmZvKGAke2luZGVudH3ilJTilIAke1wi4pSAXCIucmVwZWF0KGhlYWRsaW5lLmxlbmd0aCl94pSA4pSYYClcclxufVxyXG5cclxuZnVuY3Rpb24gdHJhY2VUYWJsZSAocmVjb3Jkcywgb3B0aW9ucykge1xyXG4gIGNvbnN0IHN0cmluZ2lmeSA9IChkYXRhLCBodW1hbml6ZXJzLCBpbmRleCkgPT4gaHVtYW5pemVycyAmJiBodW1hbml6ZXJzW2luZGV4XSA/IGh1bWFuaXplcnNbaW5kZXhdKGRhdGEpLnRvU3RyaW5nKCkgOiBkYXRhPy50b1N0cmluZygpID8/IFwiXCJcclxuICBjb25zdCBtYXggPSAoYSwgYikgPT4gYSA+IGIgPyBhIDogYlxyXG4gIGNvbnN0IHJlZHVjZU1heCA9IChudW1iZXJzKSA9PiBudW1iZXJzLnJlZHVjZSgoY3VyciwgcHJldikgPT4gcHJldiA+IGN1cnIgPyBwcmV2IDogY3VyciwgMClcclxuICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fVxyXG4gIGNvbnN0IGluZGVudCA9IG9wdGlvbnM/LmluZGVudCB8fCBcIlwiXHJcbiAgY29uc3QgbnVtQ29sdW1ucyA9IHJlZHVjZU1heChyZWNvcmRzLm1hcChyZWNvcmQgPT4gcmVjb3JkPy5sZW5ndGggfHwgMSkpXHJcbiAgY29uc3QgbWF4Q29sdW1uV2lkdGggPSBvcHRpb25zPy5tYXhDb2x1bW5XaWR0aCB8fCA4MFxyXG4gIGNvbnN0IHRhYmxlID0gdHJhbnNwb3NlKHJlY29yZHMsIG51bUNvbHVtbnMpXHJcbiAgb3B0aW9ucy53aWR0aHMgPSBvcHRpb25zPy53aWR0aHMgfHwgdGFibGUubWFwKChjb2x1bW4sIGluZGV4KSA9PiB7XHJcbiAgICBsZXQgbWF4V2lkdGggPSByZWR1Y2VNYXgoY29sdW1uLm1hcChmaWVsZCA9PiBjb2xvcnN0cmlwKHN0cmluZ2lmeShmaWVsZCwgb3B0aW9ucz8uaHVtYW5pemVycywgaW5kZXgpKS5sZW5ndGgpKVxyXG4gICAgaWYgKG9wdGlvbnM/LmhlYWRsaW5lcyAmJiBvcHRpb25zLmhlYWRsaW5lc1tpbmRleF0pIHtcclxuICAgICAgbWF4V2lkdGggPSBtYXgobWF4V2lkdGgsIGNvbG9yc3RyaXAob3B0aW9ucy5oZWFkbGluZXNbaW5kZXhdLnJlcGxhY2VBbGwoXCI6XCIsIFwiXCIpKS5sZW5ndGgpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gTWF0aC5taW4obWF4V2lkdGgsIG1heENvbHVtbldpZHRoKVxyXG4gIH0pXHJcbiAgbGV0IGhlYWRsaW5lID0gb3B0aW9ucy53aWR0aHMubWFwKG1heFdpZHRoID0+IFwi4pSAXCIucmVwZWF0KG1heFdpZHRoKSlcclxuICBjb25zb2xlLmluZm8oYCR7aW5kZW50feKUjOKUgCR7aGVhZGxpbmUuam9pbihcIuKUgOKUrOKUgFwiKX3ilIDilJBgKVxyXG4gIGlmIChvcHRpb25zPy5oZWFkbGluZXMpIHtcclxuICAgIGhlYWRsaW5lID0gb3B0aW9ucy53aWR0aHMubWFwKChtYXhXaWR0aCwgaW5kZXgpID0+IHtcclxuICAgICAgY29uc3QgY2FwdGlvbiA9IG9wdGlvbnMuaGVhZGxpbmVzW2luZGV4XS5yZXBsYWNlQWxsKFwiOlwiLCBcIlwiKVxyXG4gICAgICBjb25zdCBjYXB0aW9uTGVuZ3RoID0gY29sb3JzdHJpcChjYXB0aW9uKS5sZW5ndGhcclxuICAgICAgcmV0dXJuIGAke3doaXRlKGNhcHRpb24pfSR7XCIgXCIucmVwZWF0KG1heFdpZHRoIC0gY2FwdGlvbkxlbmd0aCl9YFxyXG4gICAgfSlcclxuICAgIGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSCICR7aGVhZGxpbmUuam9pbihcIiDilIIgXCIpfSDilIJgKVxyXG4gICAgaGVhZGxpbmUgPSBvcHRpb25zLndpZHRocy5tYXAobWF4V2lkdGggPT4gXCLilIBcIi5yZXBlYXQobWF4V2lkdGgpKVxyXG4gICAgY29uc29sZS5pbmZvKGAke2luZGVudH3ilJzilIAke2hlYWRsaW5lLmpvaW4oXCLilIDilLzilIBcIil94pSA4pSkYClcclxuICB9XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWNvcmRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgbGluZSA9IFwiXCJcclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbnVtQ29sdW1uczsgaisrKSB7XHJcbiAgICAgIGxldCBkYXRhID0gdGFibGVbal1baV1cclxuICAgICAgbGV0IGNvbG9yXHJcbiAgICAgIGlmIChvcHRpb25zPy5jb2xvcnMgJiYgb3B0aW9ucy5jb2xvcnNbal0pIHtcclxuICAgICAgICBjb2xvciA9IG9wdGlvbnMuY29sb3JzW2pdXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29sb3IgPSB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIlxyXG4gICAgICAgICAgPyBncmVlblxyXG4gICAgICAgICAgOiAoTnVtYmVyKGRhdGEpID09PSBkYXRhICYmIGRhdGEgJSAxICE9PSAwIC8vIGlzIGZsb2F0IG51bWJlcj9cclxuICAgICAgICAgICAgPyB5ZWxsb3dcclxuICAgICAgICAgICAgOiAoeCkgPT4geFxyXG4gICAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICAgIGRhdGEgPSBzdHJpbmdpZnkoZGF0YSwgb3B0aW9ucz8uaHVtYW5pemVycywgailcclxuICAgICAgaWYgKGNvbG9yc3RyaXAoZGF0YSkubGVuZ3RoID4gbWF4Q29sdW1uV2lkdGgpIHtcclxuICAgICAgICB3aGlsZSAoY29sb3JzdHJpcChkYXRhKS5sZW5ndGggPiBtYXhDb2x1bW5XaWR0aCAtIDMpIHtcclxuICAgICAgICAgIGRhdGEgPSBkYXRhLnNsaWNlKDAsIC0xKVxyXG4gICAgICAgIH1cclxuICAgICAgICBkYXRhICs9IFwiLi4uXCJcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBkYXRhTGVuZ3RoID0gY29sb3JzdHJpcChkYXRhKS5sZW5ndGhcclxuICAgICAgaWYgKG9wdGlvbnM/LmhlYWRsaW5lcyAmJiBvcHRpb25zLmhlYWRsaW5lc1tqXVswXSA9PT0gXCI6XCIpIHtcclxuICAgICAgICBkYXRhID0gYCR7Y29sb3IoZGF0YSl9JHtcIiBcIi5yZXBlYXQob3B0aW9ucy53aWR0aHNbal0gLSBkYXRhTGVuZ3RoKX1gXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZGF0YSA9IGAke1wiIFwiLnJlcGVhdChvcHRpb25zLndpZHRoc1tqXSAtIGRhdGFMZW5ndGgpfSR7Y29sb3IoZGF0YSl9YFxyXG4gICAgICB9XHJcbiAgICAgIGxpbmUgKz0gYOKUgiAke2RhdGF9IGBcclxuICAgIH1cclxuICAgIGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR9JHtsaW5lfeKUgmApXHJcbiAgfVxyXG4gIGhlYWRsaW5lID0gb3B0aW9ucy53aWR0aHMubWFwKG1heFdpZHRoID0+IFwi4pSAXCIucmVwZWF0KG1heFdpZHRoKSlcclxuICBjb25zb2xlLmluZm8oYCR7aW5kZW50feKUlOKUgCR7aGVhZGxpbmUuam9pbihcIuKUgOKUtOKUgFwiKX3ilIDilJhgKVxyXG59XHJcblxyXG5mdW5jdGlvbiB0cmFuc3Bvc2UgKHJlY29yZHMsIG51bUNvbHVtbnMpIHtcclxuICBjb25zdCBjb2x1bW5zID0gW11cclxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbnVtQ29sdW1uczsgaW5kZXgrKykge1xyXG4gICAgY29sdW1ucy5wdXNoKHJlY29yZHMubWFwKHJvdyA9PiByb3dbaW5kZXhdKSlcclxuICB9XHJcbiAgcmV0dXJuIGNvbHVtbnNcclxufVxyXG5cclxuZnVuY3Rpb24gdHhKc29uUmVwbGFjZXIgKGtleSwgdmFsdWUpIHtcclxuICBzd2l0Y2ggKGtleSkge1xyXG4gICAgY2FzZSBcImJ5dGVzXCI6XHJcbiAgICBjYXNlIFwiZGVyXCI6XHJcbiAgICAgIHJldHVybiB0b0hleFN0cmluZyh2YWx1ZSwgdHJ1ZSlcclxuICAgIGNhc2UgXCJ0eFwiOlxyXG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIHR4SnNvblJlcGxhY2VyKVxyXG4gICAgY2FzZSBcImNoYW5nZVwiOlxyXG4gICAgY2FzZSBcImZlZXNcIjpcclxuICAgIGNhc2UgXCJ2YWx1ZVwiOlxyXG4gICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWUpIC8gMTAgKiogOVxyXG4gICAgZGVmYXVsdDpcclxuICAgICAgcmV0dXJuIHZhbHVlXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB0eFJlY2VpcHRKc29uUmVwbGFjZXIgKGtleSwgdmFsdWUpIHtcclxuICBzd2l0Y2ggKGtleSkge1xyXG4gICAgY2FzZSBcImJ5dGVzXCI6XHJcbiAgICBjYXNlIFwiZGVyXCI6XHJcbiAgICAgIHJldHVybiB0b0hleFN0cmluZyh2YWx1ZSwgdHJ1ZSlcclxuICAgIGNhc2UgXCJ0eFwiOlxyXG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIHR4SnNvblJlcGxhY2VyKVxyXG4gICAgY2FzZSBcImNoYW5nZVwiOlxyXG4gICAgY2FzZSBcImZlZXNcIjpcclxuICAgIGNhc2UgXCJ2YWx1ZVwiOlxyXG4gICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWU/LnBlZHJvcykgLyAxMCAqKiA5XHJcbiAgICBjYXNlIFwidGltZXN0YW1wXCI6XHJcbiAgICAgIHJldHVybiBtb21lbnQudW5peCh2YWx1ZSkuZm9ybWF0KFwiTU1NTSBEbyBZWVlZLCBoOm1tOnNzIGFcIilcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIHJldHVybiB2YWx1ZVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gdHJhY2VUcmFuc2FjdGlvbk9uQ2hlY2twb2ludCAocmVjZWlwdCkge1xyXG4gIGlmIChyZWNlaXB0Py5jb25maXJtYXRpb25zKSB7XHJcbiAgICBjb25zb2xlLmluZm8oYCA+IENoZWNrcG9pbnQgIyR7Y29tbWFzKHJlY2VpcHQuY29uZmlybWF0aW9ucyl9Li4uYClcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRyYWNlVHJhbnNhY3Rpb25PblN0YXR1c0NoYW5nZSAocmVjZWlwdCkge1xyXG4gIGNvbnN0IGNhcHRpb25zID0ge1xyXG4gICAgcGVuZGluZzogXCJBd2FpdGluZyByZWxheS4uLlwiLFxyXG4gICAgLy8gY29uZmlybWVkOiBcIlRyYW5zYWN0aW9uIGNvbmZpcm1lZDpcIixcclxuICAgIC8vIGZpbmFsaXplZDogXCJUcmFuc2FjdGlvbiBmaW5hbGl6ZWQ6XCIsXHJcbiAgICByZWxheWVkOiBcIkF3YWl0aW5nIGluY2x1c2lvbi4uLlwiLFxyXG4gICAgbWluZWQ6IFwiQXdhaXRpbmcgY29uZmlybWF0aW9ucy4uLlwiLFxyXG4gIH1cclxuICBjb25zdCBjYXB0aW9uID0gY2FwdGlvbnNbcmVjZWlwdC5zdGF0dXNdXHJcbiAgaWYgKGNhcHRpb24pIGNvbnNvbGUuaW5mbyhgID4gJHtjYXB0aW9uc1tyZWNlaXB0LnN0YXR1c119YClcclxuICBpZiAoW1wiZmluYWxpemVkXCIsIFwiY29uZmlybWVkXCJdLmluY2x1ZGVzKHJlY2VpcHQuc3RhdHVzKSkge1xyXG4gICAgY29uc29sZS5pbmZvKGAgPiBCbG9jayBoYXNoOiAgICR7Z3JheShyZWNlaXB0Py5ibG9ja0hhc2gpfWApXHJcbiAgICBjb25zb2xlLmluZm8oYCA+IEJsb2NrIG1pbmVyOiAgJHtjeWFuKHJlY2VpcHQ/LmJsb2NrTWluZXIpfWApO1xyXG4gICAgY29uc29sZS5pbmZvKGAgPiBCbG9jayBlcG9jaDogICR7d2hpdGUoY29tbWFzKHJlY2VpcHQ/LmJsb2NrRXBvY2gpKX1gKVxyXG4gICAgY29uc29sZS5pbmZvKGAgPiBJbmNsdWRlZCBhdDogICR7Z3JlZW4obW9tZW50LnVuaXgocmVjZWlwdD8uYmxvY2tUaW1lc3RhbXApLmZvcm1hdChcIk1NTU0gRG8gWVlZWSwgaDptbTpzcyBhXCIpKX1gKVxyXG4gICAgY29uc29sZS5pbmZvKGAgPiAke3JlY2VpcHQuc3RhdHVzWzBdLnRvVXBwZXJDYXNlKCkgKyByZWNlaXB0LnN0YXR1cy5zbGljZSgxKX0gYXQ6ICR7bWdyZWVuKG1vbWVudC51bml4KHJlY2VpcHQudGltZXN0YW1wKS5mb3JtYXQoXCJNTU1NIERvIFlZWVksIGg6bW06c3MgYVwiKSl9YClcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRyYWNlVHJhbnNhY3Rpb25SZWNlaXB0IChyZWNlaXB0KSB7XHJcbiAgY29uc3QgY2FwdGlvbnMgPSB7XHJcbiAgICBEYXRhUmVxdWVzdDogXCIgPiBEUlQgaGFzaDogICAgIFwiLFxyXG4gICAgVmFsdWVUcmFuc2ZlcjogXCIgPiBWVFQgaGFzaDogICAgIFwiLFxyXG4gIH1cclxuICBjb25zb2xlLmluZm8oYCR7Y2FwdGlvbnNbcmVjZWlwdC50eXBlXSB8fCBcIiA+IFRYIGhhc2g6ICAgICAgXCJ9JHt3aGl0ZShyZWNlaXB0Lmhhc2gpfWApXHJcbiAgaWYgKHJlY2VpcHQ/LmRyb0hhc2gpIGNvbnNvbGUuaW5mbyhgID4gRFJPIGhhc2g6ICAgICAke2dyZWVuKHJlY2VpcHQuZHJvSGFzaCl9YClcclxuICBpZiAocmVjZWlwdD8ucmFkSGFzaCkgY29uc29sZS5pbmZvKGAgPiBSQUQgaGFzaDogICAgICR7bWdyZWVuKHJlY2VpcHQucmFkSGFzaCl9YClcclxuICBpZiAocmVjZWlwdD8uZHJvU0xBKSBjb25zb2xlLmluZm8oYCA+IFNMQSBwYXJhbXM6ICAgJHtKU09OLnN0cmluZ2lmeShyZWNlaXB0LmRyb1NMQSl9YClcclxuICBpZiAocmVjZWlwdD8ud2l0aGRyYXdlcikge1xyXG4gICAgaWYgKHJlY2VpcHQ/LnZhbGlkYXRvcikge1xyXG4gICAgICBjb25zb2xlLmluZm8oYCA+IFZhbGlkYXRvcjogICAgJHttY3lhbihyZWNlaXB0LnZhbGlkYXRvcil9YClcclxuICAgIH1cclxuICAgIGNvbnNvbGUuaW5mbyhgID4gV2l0aGRyYXdlcjogICAke21tYWdlbnRhKHJlY2VpcHQud2l0aGRyYXdlcil9YClcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc3Qgc2lnbmVycyA9IEFycmF5LmlzQXJyYXkocmVjZWlwdC5mcm9tKSA/IHJlY2VpcHQuZnJvbSA6IFtyZWNlaXB0LmZyb21dXHJcbiAgICBjb25zb2xlLmluZm8oYCA+IFNpZ25lci9zOiAgICAgJHttbWFnZW50YShzaWduZXJzWzBdKX1gKVxyXG4gICAgc2lnbmVycy5zbGljZSgxKS5mb3JFYWNoKHNpZ25lciA9PiB7XHJcbiAgICAgIGNvbnNvbGUuaW5mbyhgICAgICAgICAgICAgICAgICAke21tYWdlbnRhKHNpZ25lcil9YClcclxuICAgIH0pXHJcbiAgfVxyXG4gIGlmIChyZWNlaXB0Py5yZWNpcGllbnRzKSB7XHJcbiAgICBjb25zb2xlLmluZm8oYCA+IFJlY2lwaWVudC9zOiAgJHtcclxuICAgICAgbWJsdWUocmVjZWlwdC5yZWNpcGllbnRzLmZpbHRlcigocGtoLCBpbmRleCwgYXJyYXkpID0+IGluZGV4ID09PSBhcnJheS5pbmRleE9mKHBraCkpKVxyXG4gICAgfWApXHJcbiAgfVxyXG4gIGlmIChyZWNlaXB0Py5mZWVzKSBjb25zb2xlLmluZm8oYCA+IEZlZTogICAgICAgICAgJHt5ZWxsb3cocmVjZWlwdC5mZWVzLnRvU3RyaW5nKDIpKX1gKVxyXG4gIGlmIChyZWNlaXB0Py52YWx1ZSkgY29uc29sZS5pbmZvKGAgPiBWYWx1ZTogICAgICAgICR7bXllbGxvdyhyZWNlaXB0LnZhbHVlLnRvU3RyaW5nKDIpKX1gKVxyXG4gIGlmIChyZWNlaXB0Py53ZWlnaHQpIGNvbnNvbGUuaW5mbyhgID4gV2VpZ2h0OiAgICAgICAke21ncmVlbihjb21tYXMocmVjZWlwdC53ZWlnaHQpKX1gKVxyXG4gIGlmIChyZWNlaXB0Py53aXRuZXNzZXMpIHtcclxuICAgIGNvbnNvbGUuaW5mbyhgID4gV2l0bmVzc2VzOiAgICAke3JlY2VpcHQud2l0bmVzc2VzfWApXHJcbiAgfVxyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiB0cmFjZVRyYW5zYWN0aW9uICh0cmFuc21pdHRlciwgb3B0aW9ucykge1xyXG4gIGNvbnN0IGNvbG9yID0gb3B0aW9ucz8uY29sb3IgfHwgKCh4KSA9PiBgXFx4MWJbMzA7NDVtJHt4fVxceDFiWzBtYClcclxuICBsZXQgcmVjZWlwdCA9IGF3YWl0IHRyYW5zbWl0dGVyLnNpZ25UcmFuc2FjdGlvbihvcHRpb25zLCBvcHRpb25zPy5yZWxvYWQpXHJcbiAgaWYgKG9wdGlvbnM/LnZlcmJvc2UpIHtcclxuICAgIGNvbnNvbGUuaW5mbyhcclxuICAgICAgYFxcbiR7Z3JheShKU09OLnN0cmluZ2lmeShyZWNlaXB0LnR4LCB0eEpzb25SZXBsYWNlcikpfWBcclxuICAgIClcclxuICB9XHJcbiAgaWYgKG9wdGlvbnM/LmhlYWRsaW5lKSB7XHJcbiAgICBjb25zb2xlLmluZm8oYFxcbiAke2NvbG9yKGAgICR7b3B0aW9ucy5oZWFkbGluZX0gIGApfVxcbmApXHJcbiAgfVxyXG4gIHRyYWNlVHJhbnNhY3Rpb25SZWNlaXB0KHJlY2VpcHQpXHJcbiAgaWYgKCFvcHRpb25zPy5mb3JjZSkge1xyXG4gICAgLy8gcHJvbXB0IHVzZXIgY29uZmlybWF0aW9uXHJcbiAgICBjb25zb2xlLmluZm8oKVxyXG4gICAgY29uc3QgYW5zd2VyID0gYXdhaXQgcmVxdWlyZShcImlucXVpcmVyXCIpLmNyZWF0ZVByb21wdE1vZHVsZSgpKFt7XHJcbiAgICAgIG1lc3NhZ2U6IFwiU2VuZCB0cmFuc2FjdGlvbj9cIixcclxuICAgICAgdHlwZTogXCJjb25maXJtXCIsXHJcbiAgICAgIG5hbWU6IFwiY29udGludWVcIixcclxuICAgICAgZGVmYXVsdDogZmFsc2UsXHJcbiAgICB9XSlcclxuICAgIGlmICghYW5zd2VyLmNvbnRpbnVlKSB7XHJcbiAgICAgIHJldHVybiByZWNlaXB0XHJcbiAgICB9XHJcbiAgfVxyXG4gIHRyeSB7XHJcbiAgICBjb25zb2xlLmluZm8oKVxyXG4gICAgcmVjZWlwdCA9IGF3YWl0IHRyYW5zbWl0dGVyLnNlbmRUcmFuc2FjdGlvbigpXHJcbiAgICBpZiAob3B0aW9ucz8uYXdhaXQgfHwgb3B0aW9ucz8uY29uZmlybWF0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJlY2VpcHQgPSBhd2FpdCB0cmFuc21pdHRlci5jb25maXJtVHJhbnNhY3Rpb24ocmVjZWlwdC5oYXNoLCB7XHJcbiAgICAgICAgY29uZmlybWF0aW9uczogb3B0aW9ucz8uY29uZmlybWF0aW9ucyB8fCAwLFxyXG4gICAgICAgIG9uQ2hlY2twb2ludDogdHJhY2VUcmFuc2FjdGlvbk9uQ2hlY2twb2ludCxcclxuICAgICAgICBvblN0YXR1c0NoYW5nZTogdHJhY2VUcmFuc2FjdGlvbk9uU3RhdHVzQ2hhbmdlLFxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZGF0YSA9IHsgc3RhdHVzOiByZWNlaXB0Py5zdGF0dXMsIHRpbWVzdGFtcDogcmVjZWlwdD8udGltZXN0YW1wIHx8IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApIH1cclxuICAgICAgY29uc29sZS5pbmZvKGRhdGEpXHJcbiAgICB9XHJcbiAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICBpZiAoZXJyPy5pbkZsaWdodCAmJiBlcnIuaW5GbGlnaHQpIHtcclxuICAgICAgY29uc29sZS5pbmZvKGBcXG4ke2dyYXkoSlNPTi5zdHJpbmdpZnkoZXJyLmluRmxpZ3Q/Lm1lc3NhZ2UsIHR4UmVjZWlwdEpzb25SZXBsYWNlcikpfWApXHJcbiAgICB9XHJcbiAgICB0aHJvdyBlcnJcclxuICB9XHJcbiAgcmV0dXJuIHJlY2VpcHRcclxufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7XHJcbiAgY29sb3JzOiB7XHJcbiAgICBiYmx1ZSxcclxuICAgIGJjeWFuLFxyXG4gICAgYmdyZWVuLFxyXG4gICAgYmx1ZSxcclxuICAgIGJyZWQsXHJcbiAgICBidmlvbGV0LFxyXG4gICAgY3lhbixcclxuICAgIGdyYXksXHJcbiAgICBncmVlbixcclxuICAgIG1hZ2VudGEsXHJcbiAgICByZWQsXHJcbiAgICB3aGl0ZSxcclxuICAgIHllbGxvdyxcclxuICAgIG5vcm1hbCxcclxuICAgIGxjeWFuLFxyXG4gICAgbGdyYXksXHJcbiAgICBsZ3JlZW4sXHJcbiAgICBsbWFnZW50YSxcclxuICAgIGx5ZWxsb3csXHJcbiAgICBtYmx1ZSxcclxuICAgIG1jeWFuLFxyXG4gICAgbWdyZWVuLFxyXG4gICAgbW1hZ2VudGEsXHJcbiAgICBtcmVkLFxyXG4gICAgbXllbGxvdyxcclxuICB9LFxyXG4gIGNvbG9yc3RyaXAsXHJcbiAgY29tbWFzLFxyXG4gIHdob2xlX3dpdHMsXHJcbiAgdG9GaXhlZFRydW5jLFxyXG4gIGNvdW50TGVhdmVzLFxyXG4gIGV4ZWNSYWRvbkJ5dGVjb2RlLFxyXG4gIGRlbGV0ZUV4dHJhRmxhZ3MsXHJcbiAgZXh0cmFjdEZyb21BcmdzLFxyXG4gIGZyb21IZXhTdHJpbmcsXHJcbiAgaXNIZXhTdHJpbmcsXHJcbiAgaXNIZXhTdHJpbmdPZkxlbmd0aCxcclxuICB0b0hleFN0cmluZyxcclxuICBwYXJzZVVSTCxcclxuICBpcElzUHJpdmF0ZU9yTG9jYWxob3N0LFxyXG4gIHNob3dVc2FnZSxcclxuICBzaG93VXNhZ2VFcnJvcixcclxuICBzaG93VXNhZ2VTdWJjb21tYW5kLFxyXG4gIHNob3dWZXJzaW9uLFxyXG4gIHRvb2xraXRSdW4sXHJcbiAgdG9VcHBlckNhbWVsQ2FzZSxcclxuICB0b1V0ZjE2Qnl0ZXMsXHJcbiAgdG9VdGY4QXJyYXksICBcclxuICB1dGY4QXJyYXlUb1N0cixcclxuICBwcm9tcHQsXHJcbiAgcHJvbXB0ZXIsXHJcbiAgdHJhY2VDaGVja2xpc3RzLFxyXG4gIHRyYWNlSGVhZGVyLFxyXG4gIHRyYWNlVGFibGUsXHJcbiAgdHJhY2VUcmFuc2FjdGlvbixcclxuICB0cmFjZVRyYW5zYWN0aW9uT25TdGF0dXNDaGFuZ2UsXHJcbiAgdHJhY2VUcmFuc2FjdGlvbk9uQ2hlY2twb2ludCxcclxuICB0cmFjZVRyYW5zYWN0aW9uUmVjZWlwdCxcclxuICBjaGVja1JwY1dpbGRjYXJkcyxcclxuICBpc1dpbGRjYXJkLFxyXG4gIGdldFdpbGRjYXJkc0NvdW50RnJvbVN0cmluZyxcclxuICByZXBsYWNlV2lsZGNhcmRzLFxyXG4gIHNwbGljZVdpbGRjYXJkLFxyXG4gIHR4SnNvblJlcGxhY2VyLFxyXG59XHJcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@witnet/sdk",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.8",
|
|
4
4
|
"description": "Typescript library and CLI tooling for Web3 buidlers willing to interact with the Witnet blockchain.",
|
|
5
5
|
"author": "Witnet Foundation",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"private": false,
|
|
8
8
|
"type": "commonjs",
|
|
9
9
|
"bin": {
|
|
10
|
-
"
|
|
11
|
-
"witnet-toolkit": "src/bin/toolkit.js",
|
|
10
|
+
"witsdk": "src/bin/toolkit.js",
|
|
12
11
|
"witnet-sdk": "src/bin/toolkit.js"
|
|
13
12
|
},
|
|
14
13
|
"files": [
|
package/src/bin/cli/radon.js
CHANGED
|
@@ -179,7 +179,7 @@ async function assets (options = {}, [...patterns]) {
|
|
|
179
179
|
|
|
180
180
|
async function check (options = {}) {
|
|
181
181
|
if (!isModuleInitialized) {
|
|
182
|
-
throw new Error(`No Witnet Radon workspace has been initialized. Please, run ${white("npx
|
|
182
|
+
throw new Error(`No Witnet Radon workspace has been initialized. Please, run ${white("npx witsdk radon init")} if willing to declare your own Radon assets.`)
|
|
183
183
|
}
|
|
184
184
|
try {
|
|
185
185
|
const assets = loadAssets({ ...options, legacy: true })
|
|
@@ -544,7 +544,7 @@ function traceWitnetRadonRequest (request, options) {
|
|
|
544
544
|
}`
|
|
545
545
|
)
|
|
546
546
|
console.info(`${indent} │ ${sep} > URL query: ${helpers.colors.green(source.url)}`)
|
|
547
|
-
if (source?.headers) {
|
|
547
|
+
if (source?.headers && Object.keys(source.headers).length > 0) {
|
|
548
548
|
console.info(`${indent} │ ${sep} > HTTP headers: ${helpers.colors.green(JSON.stringify(source.headers))}`)
|
|
549
549
|
}
|
|
550
550
|
if (source?.body) {
|
|
@@ -679,7 +679,7 @@ async function traceWitnetRadonRequestDryRun (request, options) {
|
|
|
679
679
|
}`
|
|
680
680
|
)
|
|
681
681
|
console.info(`${indent} │ ${sep} > URL query: ${helpers.colors.green(source.url)}`)
|
|
682
|
-
if (source?.headers) {
|
|
682
|
+
if (source?.headers && Object.keys(source.headers).length > 0) {
|
|
683
683
|
console.info(`${indent} │ ${sep} > HTTP headers: ${helpers.colors.green(JSON.stringify(source.headers))}`)
|
|
684
684
|
}
|
|
685
685
|
if (source?.body) {
|
package/src/bin/helpers.js
CHANGED
|
@@ -304,13 +304,13 @@ function showUsageHeadline (cmd, subcmd, module) {
|
|
|
304
304
|
params = optionalize(params)
|
|
305
305
|
}
|
|
306
306
|
}
|
|
307
|
-
console.info(` ${white(`npx
|
|
307
|
+
console.info(` ${white(`npx witsdk ${cmd}`)} ${white(subcmd)} ${params ? green(params) + " " : ""}[OPTIONS] [FLAGS]`)
|
|
308
308
|
if (module?.router[subcmd]?.hint) {
|
|
309
309
|
console.info("\nDESCRIPTION:")
|
|
310
310
|
console.info(` ${module.router[subcmd].hint}`)
|
|
311
311
|
}
|
|
312
312
|
} else {
|
|
313
|
-
console.info(` ${white(`npx
|
|
313
|
+
console.info(` ${white(`npx witsdk ${cmd}`)} <SUBCOMMAND> ... [OPTIONS] [FLAGS]`)
|
|
314
314
|
}
|
|
315
315
|
}
|
|
316
316
|
|
package/src/bin/toolkit.js
CHANGED
|
@@ -277,7 +277,7 @@ async function main () {
|
|
|
277
277
|
}
|
|
278
278
|
}
|
|
279
279
|
console.info("USAGE:")
|
|
280
|
-
console.info(` ${colors.white("npx
|
|
280
|
+
console.info(` ${colors.white("npx witsdk")} [FLAGS] <MODULE>`)
|
|
281
281
|
console.info("\nFLAGS:")
|
|
282
282
|
console.info(" --debug Outputs stack trace in case of error.")
|
|
283
283
|
console.info(" --force Avoids asking the user to confirm operation.")
|