agenticpool 1.0.13 → 1.0.15
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/dist/auth/AuthHelper.js +6 -6
- package/dist/commands/auth.js +23 -20
- package/dist/commands/config.js +13 -10
- package/dist/commands/connections.js +48 -45
- package/dist/commands/contacts.js +47 -44
- package/dist/commands/conversations.js +13 -13
- package/dist/commands/errors.js +4 -4
- package/dist/commands/humans.js +58 -56
- package/dist/commands/identities.js +24 -21
- package/dist/commands/messages.js +6 -6
- package/dist/commands/networks.js +30 -30
- package/dist/commands/profile.js +41 -38
- package/dist/datamodel/toon/index.js +63 -65
- package/dist/index.js +0 -0
- package/dist/utils/colors.d.ts +16 -0
- package/dist/utils/colors.js +23 -0
- package/dist/utils/logger.js +7 -7
- package/package.json +1 -1
|
@@ -6,25 +6,20 @@ exports.isToonFormat = isToonFormat;
|
|
|
6
6
|
exports.safeEncode = safeEncode;
|
|
7
7
|
exports.safeDecode = safeDecode;
|
|
8
8
|
function encode(data) {
|
|
9
|
-
if (data === null || data === undefined)
|
|
9
|
+
if (data === null || data === undefined)
|
|
10
10
|
return "null";
|
|
11
|
-
|
|
12
|
-
if (typeof data === "boolean") {
|
|
11
|
+
if (typeof data === "boolean")
|
|
13
12
|
return data ? "true" : "false";
|
|
14
|
-
|
|
15
|
-
if (typeof data === "number") {
|
|
13
|
+
if (typeof data === "number")
|
|
16
14
|
return String(data);
|
|
17
|
-
}
|
|
18
15
|
if (typeof data === "string") {
|
|
19
|
-
if (/^[a-zA-Z0-9_-]+$/.test(data) && data.length <
|
|
16
|
+
if (/^[a-zA-Z0-9_-]+$/.test(data) && data.length < 500)
|
|
20
17
|
return data;
|
|
21
|
-
}
|
|
22
18
|
return `"${data}"`;
|
|
23
19
|
}
|
|
24
20
|
if (Array.isArray(data)) {
|
|
25
|
-
if (data.length === 0)
|
|
21
|
+
if (data.length === 0)
|
|
26
22
|
return "[]";
|
|
27
|
-
}
|
|
28
23
|
const firstItem = data[0];
|
|
29
24
|
if (typeof firstItem === "object" && firstItem !== null && !Array.isArray(firstItem)) {
|
|
30
25
|
const keys = Object.keys(firstItem);
|
|
@@ -35,21 +30,17 @@ function encode(data) {
|
|
|
35
30
|
});
|
|
36
31
|
return header + "\n" + lines.map((line) => ` ${line}`).join("\n");
|
|
37
32
|
}
|
|
38
|
-
|
|
39
|
-
return `[${data.length}]:` + data.map((item) => encode(item)).join(",");
|
|
40
|
-
}
|
|
33
|
+
return `[${data.length}]:` + data.map((item) => encode(item)).join(",");
|
|
41
34
|
}
|
|
42
35
|
if (typeof data === "object") {
|
|
43
36
|
const obj = data;
|
|
44
37
|
const keys = Object.keys(obj).filter(k => obj[k] !== undefined);
|
|
45
|
-
if (keys.length === 0)
|
|
38
|
+
if (keys.length === 0)
|
|
46
39
|
return "{}";
|
|
47
|
-
}
|
|
48
40
|
const lines = keys.map((key) => {
|
|
49
41
|
const val = encode(obj[key]);
|
|
50
|
-
if (val.includes("\n"))
|
|
42
|
+
if (val.includes("\n"))
|
|
51
43
|
return `${key}:\n${val.split("\n").map(l => ` ${l}`).join("\n")}`;
|
|
52
|
-
}
|
|
53
44
|
return `${key}:${val}`;
|
|
54
45
|
});
|
|
55
46
|
return lines.join("\n");
|
|
@@ -60,48 +51,56 @@ function decode(str) {
|
|
|
60
51
|
if (!str)
|
|
61
52
|
return null;
|
|
62
53
|
const trimmed = str.trim();
|
|
63
|
-
// Try JSON first if it looks like JSON
|
|
64
54
|
if (trimmed.startsWith('{') || trimmed.startsWith('[')) {
|
|
65
55
|
try {
|
|
66
56
|
return JSON.parse(trimmed);
|
|
67
57
|
}
|
|
68
|
-
catch (e) {
|
|
69
|
-
// Not JSON, continue to TOON
|
|
70
|
-
}
|
|
58
|
+
catch (e) { }
|
|
71
59
|
}
|
|
72
60
|
const lines = str.split("\n");
|
|
73
61
|
const result = {};
|
|
74
|
-
let
|
|
62
|
+
let hasKeyValues = false;
|
|
75
63
|
for (let i = 0; i < lines.length; i++) {
|
|
76
64
|
const line = lines[i];
|
|
77
65
|
if (!line.trim())
|
|
78
66
|
continue;
|
|
79
|
-
// Detect key:value
|
|
80
67
|
const colonIndex = line.indexOf(":");
|
|
81
68
|
if (colonIndex > 0 && !line.startsWith(" ")) {
|
|
82
69
|
const key = line.substring(0, colonIndex).trim();
|
|
83
70
|
let valuePart = line.substring(colonIndex + 1).trim();
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
71
|
+
if (i + 1 < lines.length && lines[i + 1].startsWith(" ")) {
|
|
72
|
+
const nestedLines = [];
|
|
73
|
+
if (valuePart)
|
|
74
|
+
nestedLines.push(valuePart);
|
|
87
75
|
let j = i + 1;
|
|
88
76
|
while (j < lines.length && (lines[j].startsWith(" ") || !lines[j].trim())) {
|
|
89
|
-
|
|
77
|
+
if (lines[j].trim())
|
|
78
|
+
nestedLines.push(lines[j].substring(2));
|
|
79
|
+
else
|
|
80
|
+
nestedLines.push("");
|
|
90
81
|
j++;
|
|
91
82
|
}
|
|
92
83
|
i = j - 1;
|
|
93
|
-
result[key] = decodeValue(
|
|
84
|
+
result[key] = decodeValue(nestedLines.join("\n"));
|
|
94
85
|
}
|
|
95
86
|
else {
|
|
96
87
|
result[key] = decodeValue(valuePart);
|
|
97
88
|
}
|
|
98
|
-
|
|
89
|
+
hasKeyValues = true;
|
|
99
90
|
}
|
|
100
91
|
}
|
|
101
|
-
if (
|
|
102
|
-
|
|
92
|
+
if (hasKeyValues) {
|
|
93
|
+
// Flatten logic for common API patterns like data:publicToken:xyz
|
|
94
|
+
if (result.data && typeof result.data === 'object' && !Array.isArray(result.data)) {
|
|
95
|
+
// Merge properties from 'data' into top level if they don't collide
|
|
96
|
+
// OR specifically for generate-keys pattern:
|
|
97
|
+
if (result.privateKey && !result.data.privateKey) {
|
|
98
|
+
result.data.privateKey = result.privateKey;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return result;
|
|
103
102
|
}
|
|
104
|
-
return
|
|
103
|
+
return decodeValue(trimmed);
|
|
105
104
|
}
|
|
106
105
|
function decodeValue(str) {
|
|
107
106
|
const trimmed = str.trim();
|
|
@@ -111,14 +110,13 @@ function decodeValue(str) {
|
|
|
111
110
|
return true;
|
|
112
111
|
if (trimmed === "false")
|
|
113
112
|
return false;
|
|
114
|
-
const lines =
|
|
113
|
+
const lines = trimmed.split("\n");
|
|
115
114
|
const firstLine = lines[0].trim();
|
|
116
|
-
// Tabular array [count]{key1,key2}:
|
|
117
115
|
if (firstLine.startsWith("[") && firstLine.includes("]{")) {
|
|
118
|
-
const headerMatch = firstLine.match(/^\[(\d+)\]\{([^}]+)\}
|
|
116
|
+
const headerMatch = firstLine.match(/^\[(\d+)\]\{([^}]+)\}:?$/);
|
|
119
117
|
if (headerMatch) {
|
|
120
118
|
const keys = headerMatch[2].split(",").map((k) => k.trim());
|
|
121
|
-
const
|
|
119
|
+
const res = [];
|
|
122
120
|
for (let i = 1; i < lines.length; i++) {
|
|
123
121
|
const line = lines[i].trim();
|
|
124
122
|
if (!line)
|
|
@@ -126,41 +124,49 @@ function decodeValue(str) {
|
|
|
126
124
|
const values = parseCommaSeparated(line);
|
|
127
125
|
const item = {};
|
|
128
126
|
keys.forEach((key, j) => {
|
|
129
|
-
if (j < values.length)
|
|
127
|
+
if (j < values.length)
|
|
130
128
|
item[key] = parseValue(values[j]);
|
|
131
|
-
}
|
|
132
129
|
});
|
|
133
|
-
|
|
130
|
+
res.push(item);
|
|
134
131
|
}
|
|
135
|
-
return
|
|
132
|
+
return res;
|
|
136
133
|
}
|
|
137
134
|
}
|
|
138
|
-
// Simple array [count]:val1,val2
|
|
139
135
|
if (firstLine.startsWith("[") && firstLine.includes("]:")) {
|
|
140
136
|
const headerMatch = firstLine.match(/^\[(\d+)\]:(.*)$/);
|
|
141
137
|
if (headerMatch) {
|
|
142
138
|
const remaining = headerMatch[2] + (lines.length > 1 ? "\n" + lines.slice(1).join("\n") : "");
|
|
143
|
-
|
|
144
|
-
return values.map(parseValue);
|
|
139
|
+
return parseCommaSeparated(remaining.trim()).map(parseValue);
|
|
145
140
|
}
|
|
146
141
|
}
|
|
142
|
+
if (trimmed.includes(":") && !trimmed.startsWith('"') && !trimmed.includes("\n")) {
|
|
143
|
+
const res = {};
|
|
144
|
+
const parts = parseCommaSeparated(trimmed);
|
|
145
|
+
let isObj = false;
|
|
146
|
+
parts.forEach(part => {
|
|
147
|
+
const cIndex = part.indexOf(":");
|
|
148
|
+
if (cIndex > 0) {
|
|
149
|
+
res[part.substring(0, cIndex).trim()] = parseValue(part.substring(cIndex + 1).trim());
|
|
150
|
+
isObj = true;
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
if (isObj)
|
|
154
|
+
return res;
|
|
155
|
+
}
|
|
147
156
|
return parseValue(trimmed);
|
|
148
157
|
}
|
|
149
158
|
function parseValue(val) {
|
|
150
159
|
const v = val.trim();
|
|
151
160
|
if (!v || v === "null")
|
|
152
161
|
return null;
|
|
153
|
-
if (v === "true")
|
|
162
|
+
if (v === "true" || v === '"true"')
|
|
154
163
|
return true;
|
|
155
|
-
if (v === "false")
|
|
164
|
+
if (v === "false" || v === '"false"')
|
|
156
165
|
return false;
|
|
157
|
-
|
|
158
|
-
if (/^-?\d+(\.\d+)?$/.test(v) && v.length < 15) {
|
|
159
|
-
return Number(v);
|
|
160
|
-
}
|
|
161
|
-
if (v.startsWith('"') && v.endsWith('"')) {
|
|
166
|
+
if (v.startsWith('"') && v.endsWith('"'))
|
|
162
167
|
return v.substring(1, v.length - 1);
|
|
163
|
-
|
|
168
|
+
if (/^-?\d+(\.\d+)?$/.test(v) && v.length < 15)
|
|
169
|
+
return Number(v);
|
|
164
170
|
return v;
|
|
165
171
|
}
|
|
166
172
|
function parseCommaSeparated(str) {
|
|
@@ -169,30 +175,22 @@ function parseCommaSeparated(str) {
|
|
|
169
175
|
let inQuotes = false;
|
|
170
176
|
for (let i = 0; i < str.length; i++) {
|
|
171
177
|
const char = str[i];
|
|
172
|
-
if (char === '"')
|
|
178
|
+
if (char === '"')
|
|
173
179
|
inQuotes = !inQuotes;
|
|
174
|
-
|
|
175
|
-
}
|
|
176
|
-
else if (char === "," && !inQuotes) {
|
|
180
|
+
if (char === "," && !inQuotes) {
|
|
177
181
|
result.push(current.trim());
|
|
178
182
|
current = "";
|
|
179
183
|
}
|
|
180
|
-
else
|
|
184
|
+
else
|
|
181
185
|
current += char;
|
|
182
|
-
}
|
|
183
186
|
}
|
|
184
187
|
result.push(current.trim());
|
|
185
188
|
return result;
|
|
186
189
|
}
|
|
187
190
|
function isToonFormat(content) {
|
|
188
191
|
const trimmed = content.trim();
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
}
|
|
192
|
-
if (trimmed.includes(":") && !trimmed.startsWith("{")) {
|
|
193
|
-
return true;
|
|
194
|
-
}
|
|
195
|
-
return false;
|
|
192
|
+
return (trimmed.startsWith("[") && (trimmed.includes("]{") || trimmed.includes("]:"))) ||
|
|
193
|
+
(trimmed.includes(":") && !trimmed.startsWith("{"));
|
|
196
194
|
}
|
|
197
195
|
function safeEncode(data) {
|
|
198
196
|
try {
|
|
@@ -210,4 +208,4 @@ function safeDecode(str) {
|
|
|
210
208
|
return null;
|
|
211
209
|
}
|
|
212
210
|
}
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YW1vZGVsL3Rvb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3QkF5REM7QUFFRCx3QkFrREM7QUF1RkQsb0NBU0M7QUFFRCxnQ0FNQztBQUVELGdDQU1DO0FBN05ELFNBQWdCLE1BQU0sQ0FBQyxJQUFhO0lBQ2xDLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDeEMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQUksT0FBTyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzdCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzdCLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDdEQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxJQUFJLElBQUksR0FBRyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxJQUFJLFNB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LE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBZ0IsWUFBWSxDQUFDLE9BQWU7SUFDMUMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbEYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3RELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxJQUFhO0lBQ3RDLElBQUksQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsVUFBVSxDQUFjLEdBQVc7SUFDakQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUksR0FBRyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZW5jb2RlKGRhdGE6IHVua25vd24pOiBzdHJpbmcge1xuICBpZiAoZGF0YSA9PT0gbnVsbCB8fCBkYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gXCJudWxsXCI7XG4gIH1cblxuICBpZiAodHlwZW9mIGRhdGEgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIGRhdGEgPyBcInRydWVcIiA6IFwiZmFsc2VcIjtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiBTdHJpbmcoZGF0YSk7XG4gIH1cblxuICBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICBpZiAoL15bYS16QS1aMC05Xy1dKyQvLnRlc3QoZGF0YSkgJiYgZGF0YS5sZW5ndGggPCA1MCkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIHJldHVybiBgXCIke2RhdGF9XCJgO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBcIltdXCI7XG4gICAgfVxuXG4gICAgY29uc3QgZmlyc3RJdGVtID0gZGF0YVswXTtcbiAgICBpZiAodHlwZW9mIGZpcnN0SXRlbSA9PT0gXCJvYmplY3RcIiAmJiBmaXJzdEl0ZW0gIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkoZmlyc3RJdGVtKSkge1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGZpcnN0SXRlbSk7XG4gICAgICBjb25zdCBoZWFkZXIgPSBgWyR7ZGF0YS5sZW5ndGh9XXske2tleXMuam9pbihcIixcIil9fTpgO1xuICAgICAgY29uc3QgbGluZXMgPSBkYXRhLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBrZXlzLm1hcCgoa2V5KSA9PiBlbmNvZGUoaXRlbVtrZXldKSk7XG4gICAgICAgIHJldHVybiB2YWx1ZXMuam9pbihcIixcIik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBoZWFkZXIgKyBcIlxcblwiICsgbGluZXMubWFwKChsaW5lKSA9PiBgICAke2xpbmV9YCkuam9pbihcIlxcblwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGBbJHtkYXRhLmxlbmd0aH1dOmAgKyBkYXRhLm1hcCgoaXRlbSkgPT4gZW5jb2RlKGl0ZW0pKS5qb2luKFwiLFwiKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIGRhdGEgPT09IFwib2JqZWN0XCIpIHtcbiAgICBjb25zdCBvYmogPSBkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvYmopLmZpbHRlcihrID0+IG9ialtrXSAhPT0gdW5kZWZpbmVkKTtcbiAgICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBcInt9XCI7XG4gICAgfVxuXG4gICAgY29uc3QgbGluZXMgPSBrZXlzLm1hcCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBlbmNvZGUob2JqW2tleV0pO1xuICAgICAgaWYgKHZhbC5pbmNsdWRlcyhcIlxcblwiKSkge1xuICAgICAgICByZXR1cm4gYCR7a2V5fTpcXG4ke3ZhbC5zcGxpdChcIlxcblwiKS5tYXAobCA9PiBgICAke2x9YCkuam9pbihcIlxcblwiKX1gO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGAke2tleX06JHt2YWx9YDtcbiAgICB9KTtcbiAgICByZXR1cm4gbGluZXMuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIHJldHVybiBTdHJpbmcoZGF0YSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGU8VCA9IHVua25vd24+KHN0cjogc3RyaW5nKTogVCB7XG4gIGlmICghc3RyKSByZXR1cm4gbnVsbCBhcyB1bmtub3duIGFzIFQ7XG4gIFxuICBjb25zdCB0cmltbWVkID0gc3RyLnRyaW0oKTtcbiAgXG4gIC8vIFRyeSBKU09OIGZpcnN0IGlmIGl0IGxvb2tzIGxpa2UgSlNPTlxuICBpZiAodHJpbW1lZC5zdGFydHNXaXRoKCd7JykgfHwgdHJpbW1lZC5zdGFydHNXaXRoKCdbJykpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UodHJpbW1lZCkgYXMgVDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBOb3QgSlNPTiwgY29udGludWUgdG8gVE9PTlxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGxpbmVzID0gc3RyLnNwbGl0KFwiXFxuXCIpO1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgbGV0IGhhc0RhdGEgPSBmYWxzZTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbGluZSA9IGxpbmVzW2ldO1xuICAgIGlmICghbGluZS50cmltKCkpIGNvbnRpbnVlO1xuXG4gICAgLy8gRGV0ZWN0IGtleTp2YWx1ZVxuICAgIGNvbnN0IGNvbG9uSW5kZXggPSBsaW5lLmluZGV4T2YoXCI6XCIpO1xuICAgIGlmIChjb2xvbkluZGV4ID4gMCAmJiAhbGluZS5zdGFydHNXaXRoKFwiIFwiKSkge1xuICAgICAgY29uc3Qga2V5ID0gbGluZS5zdWJzdHJpbmcoMCwgY29sb25JbmRleCkudHJpbSgpO1xuICAgICAgbGV0IHZhbHVlUGFydCA9IGxpbmUuc3Vic3RyaW5nKGNvbG9uSW5kZXggKyAxKS50cmltKCk7XG5cbiAgICAgIC8vIENoZWNrIGlmIGl0J3MgYSBtdWx0aWxpbmUgdmFsdWUgb3IgYSBjb21wbGV4IHN0cnVjdHVyZVxuICAgICAgaWYgKCF2YWx1ZVBhcnQgJiYgaSArIDEgPCBsaW5lcy5sZW5ndGggJiYgbGluZXNbaSsxXS5zdGFydHNXaXRoKFwiICBcIikpIHtcbiAgICAgICAgY29uc3QgdmFsdWVMaW5lcyA9IFtdO1xuICAgICAgICBsZXQgaiA9IGkgKyAxO1xuICAgICAgICB3aGlsZSAoaiA8IGxpbmVzLmxlbmd0aCAmJiAobGluZXNbal0uc3RhcnRzV2l0aChcIiAgXCIpIHx8ICFsaW5lc1tqXS50cmltKCkpKSB7XG4gICAgICAgICAgdmFsdWVMaW5lcy5wdXNoKGxpbmVzW2pdLnN1YnN0cmluZygyKSk7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICAgIGkgPSBqIC0gMTtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBkZWNvZGVWYWx1ZSh2YWx1ZUxpbmVzLmpvaW4oXCJcXG5cIikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBkZWNvZGVWYWx1ZSh2YWx1ZVBhcnQpO1xuICAgICAgfVxuICAgICAgaGFzRGF0YSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFoYXNEYXRhKSB7XG4gICAgcmV0dXJuIGRlY29kZVZhbHVlKHRyaW1tZWQpIGFzIHVua25vd24gYXMgVDtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQgYXMgdW5rbm93biBhcyBUO1xufVxuXG5mdW5jdGlvbiBkZWNvZGVWYWx1ZShzdHI6IHN0cmluZyk6IGFueSB7XG4gIGNvbnN0IHRyaW1tZWQgPSBzdHIudHJpbSgpO1xuICBpZiAoIXRyaW1tZWQgfHwgdHJpbW1lZCA9PT0gXCJudWxsXCIpIHJldHVybiBudWxsO1xuICBpZiAodHJpbW1lZCA9PT0gXCJ0cnVlXCIpIHJldHVybiB0cnVlO1xuICBpZiAodHJpbW1lZCA9PT0gXCJmYWxzZVwiKSByZXR1cm4gZmFsc2U7XG5cbiAgY29uc3QgbGluZXMgPSBzdHIuc3BsaXQoXCJcXG5cIik7XG4gIGNvbnN0IGZpcnN0TGluZSA9IGxpbmVzWzBdLnRyaW0oKTtcblxuICAvLyBUYWJ1bGFyIGFycmF5IFtjb3VudF17a2V5MSxrZXkyfTpcbiAgaWYgKGZpcnN0TGluZS5zdGFydHNXaXRoKFwiW1wiKSAmJiBmaXJzdExpbmUuaW5jbHVkZXMoXCJde1wiKSkge1xuICAgIGNvbnN0IGhlYWRlck1hdGNoID0gZmlyc3RMaW5lLm1hdGNoKC9eXFxbKFxcZCspXFxdXFx7KFtefV0rKVxcfTokLyk7XG4gICAgaWYgKGhlYWRlck1hdGNoKSB7XG4gICAgICBjb25zdCBrZXlzID0gaGVhZGVyTWF0Y2hbMl0uc3BsaXQoXCIsXCIpLm1hcCgoaykgPT4gay50cmltKCkpO1xuICAgICAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xuICAgICAgXG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGxpbmUgPSBsaW5lc1tpXS50cmltKCk7XG4gICAgICAgIGlmICghbGluZSkgY29udGludWU7XG4gICAgICAgIFxuICAgICAgICBjb25zdCB2YWx1ZXMgPSBwYXJzZUNvbW1hU2VwYXJhdGVkKGxpbmUpO1xuICAgICAgICBjb25zdCBpdGVtOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgIGtleXMuZm9yRWFjaCgoa2V5LCBqKSA9PiB7XG4gICAgICAgICAgaWYgKGogPCB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBpdGVtW2tleV0gPSBwYXJzZVZhbHVlKHZhbHVlc1tqXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfVxuXG4gIC8vIFNpbXBsZSBhcnJheSBbY291bnRdOnZhbDEsdmFsMlxuICBpZiAoZmlyc3RMaW5lLnN0YXJ0c1dpdGgoXCJbXCIpICYmIGZpcnN0TGluZS5pbmNsdWRlcyhcIl06XCIpKSB7XG4gICAgY29uc3QgaGVhZGVyTWF0Y2ggPSBmaXJzdExpbmUubWF0Y2goL15cXFsoXFxkKylcXF06KC4qKSQvKTtcbiAgICBpZiAoaGVhZGVyTWF0Y2gpIHtcbiAgICAgIGNvbnN0IHJlbWFpbmluZyA9IGhlYWRlck1hdGNoWzJdICsgKGxpbmVzLmxlbmd0aCA+IDEgPyBcIlxcblwiICsgbGluZXMuc2xpY2UoMSkuam9pbihcIlxcblwiKSA6IFwiXCIpO1xuICAgICAgY29uc3QgdmFsdWVzID0gcGFyc2VDb21tYVNlcGFyYXRlZChyZW1haW5pbmcudHJpbSgpKTtcbiAgICAgIHJldHVybiB2YWx1ZXMubWFwKHBhcnNlVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXJzZVZhbHVlKHRyaW1tZWQpO1xufVxuXG5mdW5jdGlvbiBwYXJzZVZhbHVlKHZhbDogc3RyaW5nKTogYW55IHtcbiAgY29uc3QgdiA9IHZhbC50cmltKCk7XG4gIGlmICghdiB8fCB2ID09PSBcIm51bGxcIikgcmV0dXJuIG51bGw7XG4gIGlmICh2ID09PSBcInRydWVcIikgcmV0dXJuIHRydWU7XG4gIGlmICh2ID09PSBcImZhbHNlXCIpIHJldHVybiBmYWxzZTtcbiAgXG4gIC8vIFJvYnVzdCBudW1iZXIgcGFyc2luZyAoYXZvaWQgZGF0ZXMgb3IgdG9rZW5zIGJlaW5nIHBhcnNlZCBhcyBudW1iZXJzKVxuICBpZiAoL14tP1xcZCsoXFwuXFxkKyk/JC8udGVzdCh2KSAmJiB2Lmxlbmd0aCA8IDE1KSB7XG4gICAgcmV0dXJuIE51bWJlcih2KTtcbiAgfVxuICBcbiAgaWYgKHYuc3RhcnRzV2l0aCgnXCInKSAmJiB2LmVuZHNXaXRoKCdcIicpKSB7XG4gICAgcmV0dXJuIHYuc3Vic3RyaW5nKDEsIHYubGVuZ3RoIC0gMSk7XG4gIH1cbiAgXG4gIHJldHVybiB2O1xufVxuXG5mdW5jdGlvbiBwYXJzZUNvbW1hU2VwYXJhdGVkKHN0cjogc3RyaW5nKTogc3RyaW5nW10ge1xuICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gIGxldCBjdXJyZW50ID0gXCJcIjtcbiAgbGV0IGluUXVvdGVzID0gZmFsc2U7XG4gIFxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNoYXIgPSBzdHJbaV07XG4gICAgaWYgKGNoYXIgPT09ICdcIicpIHtcbiAgICAgIGluUXVvdGVzID0gIWluUXVvdGVzO1xuICAgICAgY3VycmVudCArPSBjaGFyO1xuICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCIsXCIgJiYgIWluUXVvdGVzKSB7XG4gICAgICByZXN1bHQucHVzaChjdXJyZW50LnRyaW0oKSk7XG4gICAgICBjdXJyZW50ID0gXCJcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudCArPSBjaGFyO1xuICAgIH1cbiAgfVxuICByZXN1bHQucHVzaChjdXJyZW50LnRyaW0oKSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Rvb25Gb3JtYXQoY29udGVudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHRyaW1tZWQgPSBjb250ZW50LnRyaW0oKTtcbiAgaWYgKHRyaW1tZWQuc3RhcnRzV2l0aChcIltcIikgJiYgKHRyaW1tZWQuaW5jbHVkZXMoXCJde1wiKSB8fCB0cmltbWVkLmluY2x1ZGVzKFwiXTpcIikpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHRyaW1tZWQuaW5jbHVkZXMoXCI6XCIpICYmICF0cmltbWVkLnN0YXJ0c1dpdGgoXCJ7XCIpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2FmZUVuY29kZShkYXRhOiB1bmtub3duKTogc3RyaW5nIHwgbnVsbCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGVuY29kZShkYXRhKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhZmVEZWNvZGU8VCA9IHVua25vd24+KHN0cjogc3RyaW5nKTogVCB8IG51bGwge1xuICB0cnkge1xuICAgIHJldHVybiBkZWNvZGU8VD4oc3RyKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YW1vZGVsL3Rvb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3QkFrQ0M7QUFFRCx3QkFnREM7QUFpRkQsb0NBSUM7QUFFRCxnQ0FFQztBQUVELGdDQUVDO0FBakxELFNBQWdCLE1BQU0sQ0FBQyxJQUFhO0lBQ2xDLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssU0FBUztRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQ3ZELElBQUksT0FBTyxJQUFJLEtBQUssU0FBUztRQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUM5RCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFBRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzdCLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3BFLE9BQU8sSUFBSSxJQUFJLEdBQUcsQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNuQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLElBQUksU0FBUyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNyRixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFD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QUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQUUsU0FBUztRQUMzQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN0RCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN4RCxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksU0FBUztvQkFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNkLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDM0UsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMs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SSxDQUFDLENBQUMsQ0FBQztRQUMvRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxJQUFhO0lBQ3RDLElBQUksQ0FBQztRQUFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUFDLE9BQU8sSUFBSSxDQUFDO0lBQUMsQ0FBQztBQUNyRCxDQUFDO0FBRUQsU0FBZ0IsVUFBVSxDQUFjLEdBQVc7SUFDakQsSUFBSSxDQUFDO1FBQUMsT0FBTyxNQUFNLENBQUksR0FBRyxDQUFDLENBQUM7SUFBQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQUMsT0FBTyxJQUFJLENBQUM7SUFBQyxDQUFDO0FBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZW5jb2RlKGRhdGE6IHVua25vd24pOiBzdHJpbmcge1xuICBpZiAoZGF0YSA9PT0gbnVsbCB8fCBkYXRhID09PSB1bmRlZmluZWQpIHJldHVybiBcIm51bGxcIjtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSBcImJvb2xlYW5cIikgcmV0dXJuIGRhdGEgPyBcInRydWVcIiA6IFwiZmFsc2VcIjtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSBcIm51bWJlclwiKSByZXR1cm4gU3RyaW5nKGRhdGEpO1xuICBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICBpZiAoL15bYS16QS1aMC05Xy1dKyQvLnRlc3QoZGF0YSkgJiYgZGF0YS5sZW5ndGggPCA1MDApIHJldHVybiBkYXRhO1xuICAgIHJldHVybiBgXCIke2RhdGF9XCJgO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSByZXR1cm4gXCJbXVwiO1xuICAgIGNvbnN0IGZpcnN0SXRlbSA9IGRhdGFbMF07XG4gICAgaWYgKHR5cGVvZiBmaXJzdEl0ZW0gPT09IFwib2JqZWN0XCIgJiYgZmlyc3RJdGVtICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KGZpcnN0SXRlbSkpIHtcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhmaXJzdEl0ZW0pO1xuICAgICAgY29uc3QgaGVhZGVyID0gYFske2RhdGEubGVuZ3RofV17JHtrZXlzLmpvaW4oXCIsXCIpfX06YDtcbiAgICAgIGNvbnN0IGxpbmVzID0gZGF0YS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0ga2V5cy5tYXAoKGtleSkgPT4gZW5jb2RlKGl0ZW1ba2V5XSkpO1xuICAgICAgICByZXR1cm4gdmFsdWVzLmpvaW4oXCIsXCIpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gaGVhZGVyICsgXCJcXG5cIiArIGxpbmVzLm1hcCgobGluZSkgPT4gYCAgJHtsaW5lfWApLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuICAgIHJldHVybiBgWyR7ZGF0YS5sZW5ndGh9XTpgICsgZGF0YS5tYXAoKGl0ZW0pID0+IGVuY29kZShpdGVtKSkuam9pbihcIixcIik7XG4gIH1cbiAgaWYgKHR5cGVvZiBkYXRhID09PSBcIm9iamVjdFwiKSB7XG4gICAgY29uc3Qgb2JqID0gZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqKS5maWx0ZXIoayA9PiBvYmpba10gIT09IHVuZGVmaW5lZCk7XG4gICAgaWYgKGtleXMubGVuZ3RoID09PSAwKSByZXR1cm4gXCJ7fVwiO1xuICAgIGNvbnN0IGxpbmVzID0ga2V5cy5tYXAoKGtleSkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gZW5jb2RlKG9ialtrZXldKTtcbiAgICAgIGlmICh2YWwuaW5jbHVkZXMoXCJcXG5cIikpIHJldHVybiBgJHtrZXl9OlxcbiR7dmFsLnNwbGl0KFwiXFxuXCIpLm1hcChsID0+IGAgICR7bH1gKS5qb2luKFwiXFxuXCIpfWA7XG4gICAgICByZXR1cm4gYCR7a2V5fToke3ZhbH1gO1xuICAgIH0pO1xuICAgIHJldHVybiBsaW5lcy5qb2luKFwiXFxuXCIpO1xuICB9XG4gIHJldHVybiBTdHJpbmcoZGF0YSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGU8VCA9IHVua25vd24+KHN0cjogc3RyaW5nKTogVCB7XG4gIGlmICghc3RyKSByZXR1cm4gbnVsbCBhcyB1bmtub3duIGFzIFQ7XG4gIGNvbnN0IHRyaW1tZWQgPSBzdHIudHJpbSgpO1xuICBpZiAodHJpbW1lZC5zdGFydHNXaXRoKCd7JykgfHwgdHJpbW1lZC5zdGFydHNXaXRoKCdbJykpIHtcbiAgICB0cnkgeyByZXR1cm4gSlNPTi5wYXJzZSh0cmltbWVkKSBhcyBUOyB9IGNhdGNoIChlKSB7fVxuICB9XG5cbiAgY29uc3QgbGluZXMgPSBzdHIuc3BsaXQoXCJcXG5cIik7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBsZXQgaGFzS2V5VmFsdWVzID0gZmFsc2U7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGxpbmUgPSBsaW5lc1tpXTtcbiAgICBpZiAoIWxpbmUudHJpbSgpKSBjb250aW51ZTtcbiAgICBjb25zdCBjb2xvbkluZGV4ID0gbGluZS5pbmRleE9mKFwiOlwiKTtcbiAgICBpZiAoY29sb25JbmRleCA+IDAgJiYgIWxpbmUuc3RhcnRzV2l0aChcIiBcIikpIHtcbiAgICAgIGNvbnN0IGtleSA9IGxpbmUuc3Vic3RyaW5nKDAsIGNvbG9uSW5kZXgpLnRyaW0oKTtcbiAgICAgIGxldCB2YWx1ZVBhcnQgPSBsaW5lLnN1YnN0cmluZyhjb2xvbkluZGV4ICsgMSkudHJpbSgpO1xuICAgICAgaWYgKGkgKyAxIDwgbGluZXMubGVuZ3RoICYmIGxpbmVzW2krMV0uc3RhcnRzV2l0aChcIiAgXCIpKSB7XG4gICAgICAgIGNvbnN0IG5lc3RlZExpbmVzID0gW107XG4gICAgICAgIGlmICh2YWx1ZVBhcnQpIG5lc3RlZExpbmVzLnB1c2godmFsdWVQYXJ0KTtcbiAgICAgICAgbGV0IGogPSBpICsgMTtcbiAgICAgICAgd2hpbGUgKGogPCBsaW5lcy5sZW5ndGggJiYgKGxpbmVzW2pdLnN0YXJ0c1dpdGgoXCIgIFwiKSB8fCAhbGluZXNbal0udHJpbSgpKSkge1xuICAgICAgICAgIGlmIChsaW5lc1tqXS50cmltKCkpIG5lc3RlZExpbmVzLnB1c2gobGluZXNbal0uc3Vic3RyaW5nKDIpKTtcbiAgICAgICAgICBlbHNlIG5lc3RlZExpbmVzLnB1c2goXCJcIik7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICAgIGkgPSBqIC0gMTtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBkZWNvZGVWYWx1ZShuZXN0ZWRMaW5lcy5qb2luKFwiXFxuXCIpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gZGVjb2RlVmFsdWUodmFsdWVQYXJ0KTtcbiAgICAgIH1cbiAgICAgIGhhc0tleVZhbHVlcyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKGhhc0tleVZhbHVlcykge1xuICAgIC8vIEZsYXR0ZW4gbG9naWMgZm9yIGNvbW1vbiBBUEkgcGF0dGVybnMgbGlrZSBkYXRhOnB1YmxpY1Rva2VuOnh5elxuICAgIGlmIChyZXN1bHQuZGF0YSAmJiB0eXBlb2YgcmVzdWx0LmRhdGEgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHJlc3VsdC5kYXRhKSkge1xuICAgICAgLy8gTWVyZ2UgcHJvcGVydGllcyBmcm9tICdkYXRhJyBpbnRvIHRvcCBsZXZlbCBpZiB0aGV5IGRvbid0IGNvbGxpZGVcbiAgICAgIC8vIE9SIHNwZWNpZmljYWxseSBmb3IgZ2VuZXJhdGUta2V5cyBwYXR0ZXJuOlxuICAgICAgaWYgKHJlc3VsdC5wcml2YXRlS2V5ICYmICFyZXN1bHQuZGF0YS5wcml2YXRlS2V5KSB7XG4gICAgICAgIHJlc3VsdC5kYXRhLnByaXZhdGVLZXkgPSByZXN1bHQucHJpdmF0ZUtleTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdCBhcyB1bmtub3duIGFzIFQ7XG4gIH1cbiAgcmV0dXJuIGRlY29kZVZhbHVlKHRyaW1tZWQpIGFzIHVua25vd24gYXMgVDtcbn1cblxuZnVuY3Rpb24gZGVjb2RlVmFsdWUoc3RyOiBzdHJpbmcpOiBhbnkge1xuICBjb25zdCB0cmltbWVkID0gc3RyLnRyaW0oKTtcbiAgaWYgKCF0cmltbWVkIHx8IHRyaW1tZWQgPT09IFwibnVsbFwiKSByZXR1cm4gbnVsbDtcbiAgaWYgKHRyaW1tZWQgPT09IFwidHJ1ZVwiKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKHRyaW1tZWQgPT09IFwiZmFsc2VcIikgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IGxpbmVzID0gdHJpbW1lZC5zcGxpdChcIlxcblwiKTtcbiAgY29uc3QgZmlyc3RMaW5lID0gbGluZXNbMF0udHJpbSgpO1xuXG4gIGlmIChmaXJzdExpbmUuc3RhcnRzV2l0aChcIltcIikgJiYgZmlyc3RMaW5lLmluY2x1ZGVzKFwiXXtcIikpIHtcbiAgICBjb25zdCBoZWFkZXJNYXRjaCA9IGZpcnN0TGluZS5tYXRjaCgvXlxcWyhcXGQrKVxcXVxceyhbXn1dKylcXH06PyQvKTtcbiAgICBpZiAoaGVhZGVyTWF0Y2gpIHtcbiAgICAgIGNvbnN0IGtleXMgPSBoZWFkZXJNYXRjaFsyXS5zcGxpdChcIixcIikubWFwKChrKSA9PiBrLnRyaW0oKSk7XG4gICAgICBjb25zdCByZXM6IGFueVtdID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGxpbmUgPSBsaW5lc1tpXS50cmltKCk7XG4gICAgICAgIGlmICghbGluZSkgY29udGludWU7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHBhcnNlQ29tbWFTZXBhcmF0ZWQobGluZSk7XG4gICAgICAgIGNvbnN0IGl0ZW06IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXksIGopID0+IHtcbiAgICAgICAgICBpZiAoaiA8IHZhbHVlcy5sZW5ndGgpIGl0ZW1ba2V5XSA9IHBhcnNlVmFsdWUodmFsdWVzW2pdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJlcy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gIH1cblxuICBpZiAoZmlyc3RMaW5lLnN0YXJ0c1dpdGgoXCJbXCIpICYmIGZpcnN0TGluZS5pbmNsdWRlcyhcIl06XCIpKSB7XG4gICAgY29uc3QgaGVhZGVyTWF0Y2ggPSBmaXJzdExpbmUubWF0Y2goL15cXFsoXFxkKylcXF06KC4qKSQvKTtcbiAgICBpZiAoaGVhZGVyTWF0Y2gpIHtcbiAgICAgIGNvbnN0IHJlbWFpbmluZyA9IGhlYWRlck1hdGNoWzJdICsgKGxpbmVzLmxlbmd0aCA+IDEgPyBcIlxcblwiICsgbGluZXMuc2xpY2UoMSkuam9pbihcIlxcblwiKSA6IFwiXCIpO1xuICAgICAgcmV0dXJuIHBhcnNlQ29tbWFTZXBhcmF0ZWQocmVtYWluaW5nLnRyaW0oKSkubWFwKHBhcnNlVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0cmltbWVkLmluY2x1ZGVzKFwiOlwiKSAmJiAhdHJpbW1lZC5zdGFydHNXaXRoKCdcIicpICYmICF0cmltbWVkLmluY2x1ZGVzKFwiXFxuXCIpKSB7XG4gICAgY29uc3QgcmVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgY29uc3QgcGFydHMgPSBwYXJzZUNvbW1hU2VwYXJhdGVkKHRyaW1tZWQpO1xuICAgIGxldCBpc09iaiA9IGZhbHNlO1xuICAgIHBhcnRzLmZvckVhY2gocGFydCA9PiB7XG4gICAgICBjb25zdCBjSW5kZXggPSBwYXJ0LmluZGV4T2YoXCI6XCIpO1xuICAgICAgaWYgKGNJbmRleCA+IDApIHtcbiAgICAgICAgcmVzW3BhcnQuc3Vic3RyaW5nKDAsIGNJbmRleCkudHJpbSgpXSA9IHBhcnNlVmFsdWUocGFydC5zdWJzdHJpbmcoY0luZGV4ICsgMSkudHJpbSgpKTtcbiAgICAgICAgaXNPYmogPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChpc09iaikgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHJldHVybiBwYXJzZVZhbHVlKHRyaW1tZWQpO1xufVxuXG5mdW5jdGlvbiBwYXJzZVZhbHVlKHZhbDogc3RyaW5nKTogYW55IHtcbiAgY29uc3QgdiA9IHZhbC50cmltKCk7XG4gIGlmICghdiB8fCB2ID09PSBcIm51bGxcIikgcmV0dXJuIG51bGw7XG4gIGlmICh2ID09PSBcInRydWVcIiB8fCB2ID09PSAnXCJ0cnVlXCInKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKHYgPT09IFwiZmFsc2VcIiB8fCB2ID09PSAnXCJmYWxzZVwiJykgcmV0dXJuIGZhbHNlO1xuICBpZiAodi5zdGFydHNXaXRoKCdcIicpICYmIHYuZW5kc1dpdGgoJ1wiJykpIHJldHVybiB2LnN1YnN0cmluZygxLCB2Lmxlbmd0aCAtIDEpO1xuICBpZiAoL14tP1xcZCsoXFwuXFxkKyk/JC8udGVzdCh2KSAmJiB2Lmxlbmd0aCA8IDE1KSByZXR1cm4gTnVtYmVyKHYpO1xuICByZXR1cm4gdjtcbn1cblxuZnVuY3Rpb24gcGFyc2VDb21tYVNlcGFyYXRlZChzdHI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuICBsZXQgY3VycmVudCA9IFwiXCI7XG4gIGxldCBpblF1b3RlcyA9IGZhbHNlO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNoYXIgPSBzdHJbaV07XG4gICAgaWYgKGNoYXIgPT09ICdcIicpIGluUXVvdGVzID0gIWluUXVvdGVzO1xuICAgIGlmIChjaGFyID09PSBcIixcIiAmJiAhaW5RdW90ZXMpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGN1cnJlbnQudHJpbSgpKTtcbiAgICAgIGN1cnJlbnQgPSBcIlwiO1xuICAgIH0gZWxzZSBjdXJyZW50ICs9IGNoYXI7XG4gIH1cbiAgcmVzdWx0LnB1c2goY3VycmVudC50cmltKCkpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUb29uRm9ybWF0KGNvbnRlbnQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCB0cmltbWVkID0gY29udGVudC50cmltKCk7XG4gIHJldHVybiAodHJpbW1lZC5zdGFydHNXaXRoKFwiW1wiKSAmJiAodHJpbW1lZC5pbmNsdWRlcyhcIl17XCIpIHx8IHRyaW1tZWQuaW5jbHVkZXMoXCJdOlwiKSkpIHx8XG4gICAgICAgICAodHJpbW1lZC5pbmNsdWRlcyhcIjpcIikgJiYgIXRyaW1tZWQuc3RhcnRzV2l0aChcIntcIikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2FmZUVuY29kZShkYXRhOiB1bmtub3duKTogc3RyaW5nIHwgbnVsbCB7XG4gIHRyeSB7IHJldHVybiBlbmNvZGUoZGF0YSk7IH0gY2F0Y2ggeyByZXR1cm4gbnVsbDsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2FmZURlY29kZTxUID0gdW5rbm93bj4oc3RyOiBzdHJpbmcpOiBUIHwgbnVsbCB7XG4gIHRyeSB7IHJldHVybiBkZWNvZGU8VD4oc3RyKTsgfSBjYXRjaCB7IHJldHVybiBudWxsOyB9XG59XG4iXX0=
|
package/dist/index.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
type ColorFn = (s: string) => string;
|
|
2
|
+
type ColorWithBold = ColorFn & {
|
|
3
|
+
bold: ColorFn;
|
|
4
|
+
};
|
|
5
|
+
export declare const colors: {
|
|
6
|
+
red: ColorWithBold;
|
|
7
|
+
green: ColorWithBold;
|
|
8
|
+
yellow: ColorWithBold;
|
|
9
|
+
blue: ColorWithBold;
|
|
10
|
+
magenta: ColorWithBold;
|
|
11
|
+
cyan: ColorWithBold;
|
|
12
|
+
white: ColorWithBold;
|
|
13
|
+
gray: ColorWithBold;
|
|
14
|
+
bold: (s: string) => string;
|
|
15
|
+
};
|
|
16
|
+
export default colors;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Simple color helper to avoid ESM/CommonJS issues with chalk
|
|
3
|
+
// Supports chaining .bold (e.g., colors.cyan.bold('text'))
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.colors = void 0;
|
|
6
|
+
const createColor = (code) => {
|
|
7
|
+
const fn = (s) => `\x1b[${code}m${s}\x1b[0m`;
|
|
8
|
+
fn.bold = (s) => `\x1b[${code}m\x1b[1m${s}\x1b[22m\x1b[0m`;
|
|
9
|
+
return fn;
|
|
10
|
+
};
|
|
11
|
+
exports.colors = {
|
|
12
|
+
red: createColor('31'),
|
|
13
|
+
green: createColor('32'),
|
|
14
|
+
yellow: createColor('33'),
|
|
15
|
+
blue: createColor('34'),
|
|
16
|
+
magenta: createColor('35'),
|
|
17
|
+
cyan: createColor('36'),
|
|
18
|
+
white: createColor('37'),
|
|
19
|
+
gray: createColor('90'),
|
|
20
|
+
bold: (s) => `\x1b[1m${s}\x1b[22m`,
|
|
21
|
+
};
|
|
22
|
+
exports.default = exports.colors;
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2NvbG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsOERBQThEO0FBQzlELDJEQUEyRDs7O0FBSzNELE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBWSxFQUFpQixFQUFFO0lBQ2xELE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNyRCxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxRQUFRLElBQUksV0FBVyxDQUFDLGlCQUFpQixDQUFDO0lBQ25FLE9BQU8sRUFBbUIsQ0FBQztBQUM3QixDQUFDLENBQUM7QUFFVyxRQUFBLE1BQU0sR0FBRztJQUNwQixHQUFHLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQztJQUN0QixLQUFLLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQztJQUN4QixNQUFNLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQztJQUN6QixJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQztJQUN2QixPQUFPLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMxQixJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQztJQUN2QixLQUFLLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQztJQUN4QixJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQztJQUN2QixJQUFJLEVBQUUsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVO0NBQzNDLENBQUM7QUFFRixrQkFBZSxjQUFNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTaW1wbGUgY29sb3IgaGVscGVyIHRvIGF2b2lkIEVTTS9Db21tb25KUyBpc3N1ZXMgd2l0aCBjaGFsa1xuLy8gU3VwcG9ydHMgY2hhaW5pbmcgLmJvbGQgKGUuZy4sIGNvbG9ycy5jeWFuLmJvbGQoJ3RleHQnKSlcblxudHlwZSBDb2xvckZuID0gKHM6IHN0cmluZykgPT4gc3RyaW5nO1xudHlwZSBDb2xvcldpdGhCb2xkID0gQ29sb3JGbiAmIHsgYm9sZDogQ29sb3JGbiB9O1xuXG5jb25zdCBjcmVhdGVDb2xvciA9IChjb2RlOiBzdHJpbmcpOiBDb2xvcldpdGhCb2xkID0+IHtcbiAgY29uc3QgZm4gPSAoczogc3RyaW5nKSA9PiBgXFx4MWJbJHtjb2RlfW0ke3N9XFx4MWJbMG1gO1xuICBmbi5ib2xkID0gKHM6IHN0cmluZykgPT4gYFxceDFiWyR7Y29kZX1tXFx4MWJbMW0ke3N9XFx4MWJbMjJtXFx4MWJbMG1gO1xuICByZXR1cm4gZm4gYXMgQ29sb3JXaXRoQm9sZDtcbn07XG5cbmV4cG9ydCBjb25zdCBjb2xvcnMgPSB7XG4gIHJlZDogY3JlYXRlQ29sb3IoJzMxJyksXG4gIGdyZWVuOiBjcmVhdGVDb2xvcignMzInKSxcbiAgeWVsbG93OiBjcmVhdGVDb2xvcignMzMnKSxcbiAgYmx1ZTogY3JlYXRlQ29sb3IoJzM0JyksXG4gIG1hZ2VudGE6IGNyZWF0ZUNvbG9yKCczNScpLFxuICBjeWFuOiBjcmVhdGVDb2xvcignMzYnKSxcbiAgd2hpdGU6IGNyZWF0ZUNvbG9yKCczNycpLFxuICBncmF5OiBjcmVhdGVDb2xvcignOTAnKSxcbiAgYm9sZDogKHM6IHN0cmluZykgPT4gYFxceDFiWzFtJHtzfVxceDFiWzIybWAsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb2xvcnM7XG4iXX0=
|
package/dist/utils/logger.js
CHANGED
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.logger = void 0;
|
|
7
|
-
const
|
|
7
|
+
const colors_1 = __importDefault(require("./colors"));
|
|
8
8
|
class Logger {
|
|
9
9
|
constructor() {
|
|
10
10
|
this.debugEnabled = false;
|
|
@@ -14,21 +14,21 @@ class Logger {
|
|
|
14
14
|
}
|
|
15
15
|
debug(message, ...args) {
|
|
16
16
|
if (this.debugEnabled) {
|
|
17
|
-
console.log(
|
|
17
|
+
console.log(colors_1.default.gray(`[DEBUG] ${message}`), ...args);
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
error(message, ...args) {
|
|
21
|
-
console.error(
|
|
21
|
+
console.error(colors_1.default.red(message), ...args);
|
|
22
22
|
}
|
|
23
23
|
success(message, ...args) {
|
|
24
|
-
console.log(
|
|
24
|
+
console.log(colors_1.default.green(message), ...args);
|
|
25
25
|
}
|
|
26
26
|
info(message, ...args) {
|
|
27
|
-
console.log(
|
|
27
|
+
console.log(colors_1.default.cyan(message), ...args);
|
|
28
28
|
}
|
|
29
29
|
warn(message, ...args) {
|
|
30
|
-
console.log(
|
|
30
|
+
console.log(colors_1.default.yellow(message), ...args);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
exports.logger = new Logger();
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxzREFBNkI7QUFFN0IsTUFBTSxNQUFNO0lBQVo7UUFDVSxpQkFBWSxHQUFHLEtBQUssQ0FBQztJQTJCL0IsQ0FBQztJQXpCQyxRQUFRLENBQUMsT0FBZ0I7UUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7SUFDOUIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFlLEVBQUUsR0FBRyxJQUFXO1FBQ25DLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDekQsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsT0FBZSxFQUFFLEdBQUcsSUFBVztRQUNuQyxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFlLEVBQUUsR0FBRyxJQUFXO1FBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQVc7UUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBZSxFQUFFLEdBQUcsSUFBVztRQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNGO0FBRVksUUFBQSxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tICcuL2NvbG9ycyc7XG5cbmNsYXNzIExvZ2dlciB7XG4gIHByaXZhdGUgZGVidWdFbmFibGVkID0gZmFsc2U7XG5cbiAgc2V0RGVidWcoZW5hYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGVidWdFbmFibGVkID0gZW5hYmxlZDtcbiAgfVxuXG4gIGRlYnVnKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAodGhpcy5kZWJ1Z0VuYWJsZWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoYFtERUJVR10gJHttZXNzYWdlfWApLCAuLi5hcmdzKTtcbiAgICB9XG4gIH1cblxuICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgY29uc29sZS5lcnJvcihjaGFsay5yZWQobWVzc2FnZSksIC4uLmFyZ3MpO1xuICB9XG5cbiAgc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4obWVzc2FnZSksIC4uLmFyZ3MpO1xuICB9XG5cbiAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgY29uc29sZS5sb2coY2hhbGsuY3lhbihtZXNzYWdlKSwgLi4uYXJncyk7XG4gIH1cblxuICB3YXJuKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICBjb25zb2xlLmxvZyhjaGFsay55ZWxsb3cobWVzc2FnZSksIC4uLmFyZ3MpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCk7XG4iXX0=
|