@matter/tools 0.13.0-alpha.0-20250324-d7b7d9731 → 0.13.0-alpha.0-20250327-8b06e5a79
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/cjs/util/progress.d.ts +3 -0
- package/dist/cjs/util/progress.d.ts.map +1 -1
- package/dist/cjs/util/progress.js +42 -14
- package/dist/cjs/util/progress.js.map +1 -1
- package/dist/esm/util/progress.d.ts +3 -0
- package/dist/esm/util/progress.d.ts.map +1 -1
- package/dist/esm/util/progress.js +43 -15
- package/dist/esm/util/progress.js.map +1 -1
- package/package.json +3 -3
- package/src/util/progress.ts +41 -13
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { Package } from "./package.js";
|
|
7
|
+
export declare const STATUS_ICON_SUCCESS: import("../ansi-text/text-builder.js").TextBuilder;
|
|
8
|
+
export declare const STATUS_ICON_FAILURE: import("../ansi-text/text-builder.js").TextBuilder;
|
|
7
9
|
export declare class Progress {
|
|
8
10
|
#private;
|
|
9
11
|
status: Progress.Status;
|
|
@@ -30,5 +32,6 @@ export declare namespace Progress {
|
|
|
30
32
|
Success = "success",
|
|
31
33
|
Failure = "failure"
|
|
32
34
|
}
|
|
35
|
+
function formatDuration(duration: number): string;
|
|
33
36
|
}
|
|
34
37
|
//# sourceMappingURL=progress.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../src/util/progress.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../src/util/progress.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,eAAO,MAAM,mBAAmB,oDAAkB,CAAC;AACnD,eAAO,MAAM,mBAAmB,oDAAuB,CAAC;AA2ExD,qBAAa,QAAQ;;IACjB,MAAM,kBAA2B;;IAWjC,SAAS,CAAC,IAAI,EAAE,OAAO;IAIvB,WAAW,CAAC,IAAI,EAAE,OAAO;IAIzB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO;IAI9B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO;IAcxD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAwBnC,OAAO,CAAC,IAAI,EAAE,MAAM;IAMpB,OAAO,CAAC,IAAI,EAAE,MAAM;IAMpB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG;IAO/B,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB,KAAK;IAQL,CAAC,MAAM,CAAC,OAAO,CAAC;IAIhB,OAAO;IAMD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IA2B7C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAiBtD;AAED,yBAAiB,QAAQ,CAAC;IACtB,KAAY,MAAM;QACd,OAAO,YAAY;QACnB,OAAO,YAAY;QACnB,OAAO,YAAY;QACnB,OAAO,YAAY;KACtB;IAED,SAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,UAiB9C;CACJ"}
|
|
@@ -18,7 +18,9 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var progress_exports = {};
|
|
20
20
|
__export(progress_exports, {
|
|
21
|
-
Progress: () => Progress
|
|
21
|
+
Progress: () => Progress,
|
|
22
|
+
STATUS_ICON_FAILURE: () => STATUS_ICON_FAILURE,
|
|
23
|
+
STATUS_ICON_SUCCESS: () => STATUS_ICON_SUCCESS
|
|
22
24
|
});
|
|
23
25
|
module.exports = __toCommonJS(progress_exports);
|
|
24
26
|
var import_node_process = require("node:process");
|
|
@@ -30,6 +32,8 @@ var import_text_builder = require("../ansi-text/text-builder.js");
|
|
|
30
32
|
* Copyright 2022-2025 Matter.js Authors
|
|
31
33
|
* SPDX-License-Identifier: Apache-2.0
|
|
32
34
|
*/
|
|
35
|
+
const STATUS_ICON_SUCCESS = import_text_builder.ansi.green("\u2713");
|
|
36
|
+
const STATUS_ICON_FAILURE = import_text_builder.ansi.bright.red("\u2717");
|
|
33
37
|
const SPINNER = "\u25D0\u25D3\u25D1\u25D2";
|
|
34
38
|
const SPINNER_INTERVAL = 100;
|
|
35
39
|
function packageIdentity(pkg) {
|
|
@@ -46,13 +50,25 @@ const writeStatus = (() => {
|
|
|
46
50
|
const actualWrite = stream.write;
|
|
47
51
|
stream.write = (payload, ...params) => {
|
|
48
52
|
if (lastStatus) {
|
|
49
|
-
|
|
53
|
+
if (payload[0] !== "\n" && payload[0] !== 10) {
|
|
54
|
+
actualWrite.call(stream, "\n");
|
|
55
|
+
}
|
|
50
56
|
lastStatus = void 0;
|
|
51
57
|
}
|
|
52
58
|
if (!payload.length) {
|
|
53
59
|
return true;
|
|
54
60
|
}
|
|
55
|
-
|
|
61
|
+
switch (payload[payload.length - 1]) {
|
|
62
|
+
case "\n":
|
|
63
|
+
case 10:
|
|
64
|
+
case "\r":
|
|
65
|
+
case 13:
|
|
66
|
+
needNewline = false;
|
|
67
|
+
break;
|
|
68
|
+
default:
|
|
69
|
+
needNewline = true;
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
56
72
|
return actualWrite.call(stream, payload, ...params);
|
|
57
73
|
};
|
|
58
74
|
}
|
|
@@ -131,12 +147,12 @@ class Progress {
|
|
|
131
147
|
}
|
|
132
148
|
success(text) {
|
|
133
149
|
this.status = Progress.Status.Success;
|
|
134
|
-
writeStatus(` ${
|
|
150
|
+
writeStatus(` ${STATUS_ICON_SUCCESS} ${text} ${this.#duration}`);
|
|
135
151
|
this.#start = this.#ongoingText = void 0;
|
|
136
152
|
}
|
|
137
153
|
failure(text) {
|
|
138
154
|
this.status = Progress.Status.Failure;
|
|
139
|
-
writeStatus(` ${
|
|
155
|
+
writeStatus(` ${STATUS_ICON_FAILURE} ${text} ${this.#duration}`);
|
|
140
156
|
this.#start = this.#ongoingText = void 0;
|
|
141
157
|
}
|
|
142
158
|
info(label, value) {
|
|
@@ -198,15 +214,8 @@ class Progress {
|
|
|
198
214
|
return result;
|
|
199
215
|
}
|
|
200
216
|
get #duration() {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
ms = Math.round(ms / 10) / 100;
|
|
204
|
-
} else if (ms < 1e4) {
|
|
205
|
-
ms = Math.round(ms / 100) / 10;
|
|
206
|
-
} else {
|
|
207
|
-
ms = Math.trunc(ms / 1e3);
|
|
208
|
-
}
|
|
209
|
-
return `${import_text_builder.ansi.dim.yellow}(${ms}s)${import_text_builder.ansi.not.dim.not.yellow}`;
|
|
217
|
+
const duration = this.#start ? (/* @__PURE__ */ new Date()).getTime() - this.#start : 0;
|
|
218
|
+
return Progress.formatDuration(duration);
|
|
210
219
|
}
|
|
211
220
|
}
|
|
212
221
|
((Progress2) => {
|
|
@@ -217,5 +226,24 @@ class Progress {
|
|
|
217
226
|
Status2["Success"] = "success";
|
|
218
227
|
Status2["Failure"] = "failure";
|
|
219
228
|
})(Status = Progress2.Status || (Progress2.Status = {}));
|
|
229
|
+
function formatDuration(duration) {
|
|
230
|
+
let seconds;
|
|
231
|
+
if (duration < 1e4) {
|
|
232
|
+
seconds = (duration / 1e3).toPrecision(2);
|
|
233
|
+
if (seconds.startsWith("0.")) {
|
|
234
|
+
seconds = seconds.slice(1);
|
|
235
|
+
}
|
|
236
|
+
while (seconds.endsWith("0")) {
|
|
237
|
+
seconds = seconds.slice(0, seconds.length - 1);
|
|
238
|
+
}
|
|
239
|
+
if (seconds === ".") {
|
|
240
|
+
seconds = "0";
|
|
241
|
+
}
|
|
242
|
+
} else {
|
|
243
|
+
seconds = Math.trunc(duration / 1e3);
|
|
244
|
+
}
|
|
245
|
+
return `${import_text_builder.ansi.dim.yellow}(${seconds}s)${import_text_builder.ansi.not.dim.not.yellow}`;
|
|
246
|
+
}
|
|
247
|
+
Progress2.formatDuration = formatDuration;
|
|
220
248
|
})(Progress || (Progress = {}));
|
|
221
249
|
//# sourceMappingURL=progress.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/util/progress.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,0BAA+B;AAC/B,oBAAuB;AACvB,iBAAoB;AACpB,0BAAqB;AATrB;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["writeStatus", "Progress", "Status"]
|
|
6
6
|
}
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { Package } from "./package.js";
|
|
7
|
+
export declare const STATUS_ICON_SUCCESS: import("../ansi-text/text-builder.js").TextBuilder;
|
|
8
|
+
export declare const STATUS_ICON_FAILURE: import("../ansi-text/text-builder.js").TextBuilder;
|
|
7
9
|
export declare class Progress {
|
|
8
10
|
#private;
|
|
9
11
|
status: Progress.Status;
|
|
@@ -30,5 +32,6 @@ export declare namespace Progress {
|
|
|
30
32
|
Success = "success",
|
|
31
33
|
Failure = "failure"
|
|
32
34
|
}
|
|
35
|
+
function formatDuration(duration: number): string;
|
|
33
36
|
}
|
|
34
37
|
//# sourceMappingURL=progress.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../src/util/progress.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../src/util/progress.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,eAAO,MAAM,mBAAmB,oDAAkB,CAAC;AACnD,eAAO,MAAM,mBAAmB,oDAAuB,CAAC;AA2ExD,qBAAa,QAAQ;;IACjB,MAAM,kBAA2B;;IAWjC,SAAS,CAAC,IAAI,EAAE,OAAO;IAIvB,WAAW,CAAC,IAAI,EAAE,OAAO;IAIzB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO;IAI9B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO;IAcxD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAwBnC,OAAO,CAAC,IAAI,EAAE,MAAM;IAMpB,OAAO,CAAC,IAAI,EAAE,MAAM;IAMpB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG;IAO/B,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB,KAAK;IAQL,CAAC,MAAM,CAAC,OAAO,CAAC;IAIhB,OAAO;IAMD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IA2B7C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAiBtD;AAED,yBAAiB,QAAQ,CAAC;IACtB,KAAY,MAAM;QACd,OAAO,YAAY;QACnB,OAAO,YAAY;QACnB,OAAO,YAAY;QACnB,OAAO,YAAY;KACtB;IAED,SAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,UAiB9C;CACJ"}
|
|
@@ -7,6 +7,8 @@ import { stderr, stdout } from "node:process";
|
|
|
7
7
|
import { screen } from "../ansi-text/screen.js";
|
|
8
8
|
import { std } from "../ansi-text/std.js";
|
|
9
9
|
import { ansi } from "../ansi-text/text-builder.js";
|
|
10
|
+
const STATUS_ICON_SUCCESS = ansi.green("\u2713");
|
|
11
|
+
const STATUS_ICON_FAILURE = ansi.bright.red("\u2717");
|
|
10
12
|
const SPINNER = "\u25D0\u25D3\u25D1\u25D2";
|
|
11
13
|
const SPINNER_INTERVAL = 100;
|
|
12
14
|
function packageIdentity(pkg) {
|
|
@@ -23,13 +25,25 @@ const writeStatus = (() => {
|
|
|
23
25
|
const actualWrite = stream.write;
|
|
24
26
|
stream.write = (payload, ...params) => {
|
|
25
27
|
if (lastStatus) {
|
|
26
|
-
|
|
28
|
+
if (payload[0] !== "\n" && payload[0] !== 10) {
|
|
29
|
+
actualWrite.call(stream, "\n");
|
|
30
|
+
}
|
|
27
31
|
lastStatus = void 0;
|
|
28
32
|
}
|
|
29
33
|
if (!payload.length) {
|
|
30
34
|
return true;
|
|
31
35
|
}
|
|
32
|
-
|
|
36
|
+
switch (payload[payload.length - 1]) {
|
|
37
|
+
case "\n":
|
|
38
|
+
case 10:
|
|
39
|
+
case "\r":
|
|
40
|
+
case 13:
|
|
41
|
+
needNewline = false;
|
|
42
|
+
break;
|
|
43
|
+
default:
|
|
44
|
+
needNewline = true;
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
33
47
|
return actualWrite.call(stream, payload, ...params);
|
|
34
48
|
};
|
|
35
49
|
}
|
|
@@ -108,12 +122,12 @@ class Progress {
|
|
|
108
122
|
}
|
|
109
123
|
success(text) {
|
|
110
124
|
this.status = Progress.Status.Success;
|
|
111
|
-
writeStatus(` ${
|
|
125
|
+
writeStatus(` ${STATUS_ICON_SUCCESS} ${text} ${this.#duration}`);
|
|
112
126
|
this.#start = this.#ongoingText = void 0;
|
|
113
127
|
}
|
|
114
128
|
failure(text) {
|
|
115
129
|
this.status = Progress.Status.Failure;
|
|
116
|
-
writeStatus(` ${
|
|
130
|
+
writeStatus(` ${STATUS_ICON_FAILURE} ${text} ${this.#duration}`);
|
|
117
131
|
this.#start = this.#ongoingText = void 0;
|
|
118
132
|
}
|
|
119
133
|
info(label, value) {
|
|
@@ -175,15 +189,8 @@ class Progress {
|
|
|
175
189
|
return result;
|
|
176
190
|
}
|
|
177
191
|
get #duration() {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
ms = Math.round(ms / 10) / 100;
|
|
181
|
-
} else if (ms < 1e4) {
|
|
182
|
-
ms = Math.round(ms / 100) / 10;
|
|
183
|
-
} else {
|
|
184
|
-
ms = Math.trunc(ms / 1e3);
|
|
185
|
-
}
|
|
186
|
-
return `${ansi.dim.yellow}(${ms}s)${ansi.not.dim.not.yellow}`;
|
|
192
|
+
const duration = this.#start ? (/* @__PURE__ */ new Date()).getTime() - this.#start : 0;
|
|
193
|
+
return Progress.formatDuration(duration);
|
|
187
194
|
}
|
|
188
195
|
}
|
|
189
196
|
((Progress2) => {
|
|
@@ -194,8 +201,29 @@ class Progress {
|
|
|
194
201
|
Status2["Success"] = "success";
|
|
195
202
|
Status2["Failure"] = "failure";
|
|
196
203
|
})(Status = Progress2.Status || (Progress2.Status = {}));
|
|
204
|
+
function formatDuration(duration) {
|
|
205
|
+
let seconds;
|
|
206
|
+
if (duration < 1e4) {
|
|
207
|
+
seconds = (duration / 1e3).toPrecision(2);
|
|
208
|
+
if (seconds.startsWith("0.")) {
|
|
209
|
+
seconds = seconds.slice(1);
|
|
210
|
+
}
|
|
211
|
+
while (seconds.endsWith("0")) {
|
|
212
|
+
seconds = seconds.slice(0, seconds.length - 1);
|
|
213
|
+
}
|
|
214
|
+
if (seconds === ".") {
|
|
215
|
+
seconds = "0";
|
|
216
|
+
}
|
|
217
|
+
} else {
|
|
218
|
+
seconds = Math.trunc(duration / 1e3);
|
|
219
|
+
}
|
|
220
|
+
return `${ansi.dim.yellow}(${seconds}s)${ansi.not.dim.not.yellow}`;
|
|
221
|
+
}
|
|
222
|
+
Progress2.formatDuration = formatDuration;
|
|
197
223
|
})(Progress || (Progress = {}));
|
|
198
224
|
export {
|
|
199
|
-
Progress
|
|
225
|
+
Progress,
|
|
226
|
+
STATUS_ICON_FAILURE,
|
|
227
|
+
STATUS_ICON_SUCCESS
|
|
200
228
|
};
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3V0aWwvcHJvZ3Jlc3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIyLTIwMjUgTWF0dGVyLmpzIEF1dGhvcnNcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IHsgc3RkZXJyLCBzdGRvdXQgfSBmcm9tIFwibm9kZTpwcm9jZXNzXCI7XG5pbXBvcnQgeyBzY3JlZW4gfSBmcm9tIFwiLi4vYW5zaS10ZXh0L3NjcmVlbi5qc1wiO1xuaW1wb3J0IHsgc3RkIH0gZnJvbSBcIi4uL2Fuc2ktdGV4dC9zdGQuanNcIjtcbmltcG9ydCB7IGFuc2kgfSBmcm9tIFwiLi4vYW5zaS10ZXh0L3RleHQtYnVpbGRlci5qc1wiO1xuaW1wb3J0IHsgUGFja2FnZSB9IGZyb20gXCIuL3BhY2thZ2UuanNcIjtcblxuY29uc3QgU1BJTk5FUiA9IFwiXHUyNUQwXHUyNUQzXHUyNUQxXHUyNUQyXCI7IC8vXCJcdTI4NUNcdTI4MTRcdTI4MjJcdTI4QTNcIjsgLy9bXCJcdTI2QUJcdUZFMEVcIiwgXCJcdTI2QUFcdUZFMEVcIl07IFwiXHUyODQ4XHUyODE0XHUyODIyXHUyODgxXCI7XG5jb25zdCBTUElOTkVSX0lOVEVSVkFMID0gMTAwO1xuXG5mdW5jdGlvbiBwYWNrYWdlSWRlbnRpdHkocGtnOiBQYWNrYWdlKSB7XG4gICAgbGV0IGlkZW50aXR5ID0gYW5zaS5ib2xkKHBrZy5uYW1lKS50b1N0cmluZygpO1xuICAgIGlmIChwa2cuanNvbi52ZXJzaW9uKSB7XG4gICAgICAgIGlkZW50aXR5ID0gYCR7aWRlbnRpdHl9QCR7cGtnLmpzb24udmVyc2lvbn1gO1xuICAgIH1cbiAgICByZXR1cm4gaWRlbnRpdHk7XG59XG5cbi8qKlxuICogSW50ZXJjZXB0IHdyaXRlcyB0byBzdGRlcnIgYW5kIHN0ZG91dCBzbyB3ZSBjYW4gZW5zdXJlIG91ciB1cGRhdGVzIGFwcGVhciBvbiBkaWZmZXJlbnQgbGluZXMgZnJvbSBvdGhlciBvdXRwdXQuXG4gKi9cbmNvbnN0IHdyaXRlU3RhdHVzID0gKCgpID0+IHtcbiAgICBsZXQgbGFzdFN0YXR1czogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgIGxldCBuZWVkTmV3bGluZSA9IGZhbHNlO1xuXG4gICAgZnVuY3Rpb24gaW50ZXJjZXB0KHN0cmVhbTogTm9kZUpTLldyaXRlU3RyZWFtKSB7XG4gICAgICAgIGNvbnN0IGFjdHVhbFdyaXRlID0gc3RyZWFtLndyaXRlO1xuICAgICAgICBzdHJlYW0ud3JpdGUgPSAocGF5bG9hZDogVWludDhBcnJheSB8IHN0cmluZywgLi4ucGFyYW1zOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgaWYgKGxhc3RTdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBhY3R1YWxXcml0ZS5jYWxsKHN0cmVhbSwgXCJcXG5cIik7XG4gICAgICAgICAgICAgICAgbGFzdFN0YXR1cyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwYXlsb2FkLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBSZXF1aXJlIGEgbmV3bGluZSBmb3Igc3RhdHVzIHVwZGF0ZXMgYW55IHRpbWUgdGhlIGN1cnNvciBkb2VzIG5vdCBlbmQgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmVcbiAgICAgICAgICAgIG5lZWROZXdsaW5lID0gcGF5bG9hZFtwYXlsb2FkLmxlbmd0aCAtIDFdICE9PSBcIlxcblwiICYmIHBheWxvYWRbcGF5bG9hZC5sZW5ndGggLSAxXSAhPT0gXCJcXHJcIjtcblxuICAgICAgICAgICAgcmV0dXJuIGFjdHVhbFdyaXRlLmNhbGwoc3RyZWFtLCBwYXlsb2FkLCAuLi5wYXJhbXMpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGludGVyY2VwdChzdGRvdXQpO1xuICAgIGludGVyY2VwdChzdGRlcnIpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIHdyaXRlU3RhdHVzKHRleHQ6IHN0cmluZywgd2lsbE92ZXJ3cml0ZSA9IGZhbHNlKSB7XG4gICAgICAgIHRleHQgKz0gd2lsbE92ZXJ3cml0ZSA/IGAke3NjcmVlbi5lcmFzZS50b0VvbH1cXHJgIDogYCR7c2NyZWVuLmVyYXNlLnRvRW9sfVxcbmA7XG4gICAgICAgIGlmICh0ZXh0ID09PSBsYXN0U3RhdHVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzdGQub3V0LnN0YXRlKHsgYnVmZmVyOiB0cnVlIH0sICgpID0+IHtcbiAgICAgICAgICAgIGlmIChsYXN0U3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgbGFzdFN0YXR1cyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobmVlZE5ld2xpbmUgJiYgIXRleHQuc3RhcnRzV2l0aChcIlxcblwiKSkge1xuICAgICAgICAgICAgICAgIHN0ZC5vdXQoXCJcXG5cIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN0ZC5vdXQud3JpdGVUcnVuY2F0ZWQodGV4dCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxhc3RTdGF0dXMgPSB0ZXh0O1xuICAgIH07XG59KSgpO1xuXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3Mge1xuICAgIHN0YXR1cyA9IFByb2dyZXNzLlN0YXR1cy5TdGFydHVwO1xuICAgICNvbmdvaW5nVGV4dD86IHN0cmluZztcbiAgICAjc3RhcnQ/OiBudW1iZXI7XG4gICAgI3NwaW5uZXIgPSBcIlx1MjlEN1wiO1xuICAgICNyZWZyZXNoSW50ZXJ2YWw/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD47XG4gICAgI3NwaW5uZXJQb3NpdGlvbiA9IDA7XG4gICAgI3NwaW5uZXJXaW5kb3c/OiBudW1iZXI7XG4gICAgI3N1YnRhc2tzID0gQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgZW1waGFzaXplKHRleHQ6IHVua25vd24pIHtcbiAgICAgICAgcmV0dXJuIGFuc2kuYm9sZChgJHt0ZXh0fWApO1xuICAgIH1cblxuICAgIGRlZW1waGFzaXplKHRleHQ6IHVua25vd24pIHtcbiAgICAgICAgcmV0dXJuIGFuc2kuZGltKGAke3RleHR9YCk7XG4gICAgfVxuXG4gICAgc2tpcCh3aHk6IHN0cmluZywgcGtnOiBQYWNrYWdlKSB7XG4gICAgICAgIHN0ZC5vdXQud3JpdGUoYW5zaS5kaW0oYFNraXAgJHtwYWNrYWdlSWRlbnRpdHkocGtnKX06ICR7d2h5fVxcblxcbmApKTtcbiAgICB9XG5cbiAgICBzdGFydHVwKHdoYXQ6IHN0cmluZywgcGtnT3JPdmVyd3JpdGU/OiBQYWNrYWdlIHwgYm9vbGVhbikge1xuICAgICAgICBpZiAocHJvY2Vzcy5zdGRvdXQuaXNUVFkpIHtcbiAgICAgICAgICAgIHRoaXMuI3VwZGF0ZVNwaW5uZXIoKTtcbiAgICAgICAgICAgIHRoaXMuI3JlZnJlc2hJbnRlcnZhbCA9IHNldEludGVydmFsKHRoaXMucmVmcmVzaC5iaW5kKHRoaXMpLCBTUElOTkVSX0lOVEVSVkFMKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLlN0YXJ0dXA7XG4gICAgICAgIGlmIChwa2dPck92ZXJ3cml0ZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBwa2dPck92ZXJ3cml0ZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICAgIHdyaXRlU3RhdHVzKHdoYXQsIHBrZ09yT3ZlcndyaXRlID8/IHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd3JpdGVTdGF0dXMoYCR7d2hhdH0gJHtwYWNrYWdlSWRlbnRpdHkocGtnT3JPdmVyd3JpdGUpfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlKHRleHQ6IHN0cmluZywgZXh0cmE/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBQcm9ncmVzcy5TdGF0dXMuT25nb2luZztcbiAgICAgICAgbGV0IGR1cmF0aW9uO1xuICAgICAgICBpZiAodGhpcy4jc3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy4jc3RhcnQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgIGR1cmF0aW9uID0gXCJcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGR1cmF0aW9uID0gdGhpcy4jZHVyYXRpb247XG4gICAgICAgIH1cbiAgICAgICAgZXh0cmEgPSBleHRyYSA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IGAgJHtleHRyYX1gO1xuICAgICAgICB0aGlzLiNvbmdvaW5nVGV4dCA9IGAke3RleHR9ICR7ZHVyYXRpb259JHtleHRyYX1gO1xuICAgICAgICB0aGlzLiN3cml0ZU9uZ29pbmcoKTtcbiAgICB9XG5cbiAgICAjd3JpdGVPbmdvaW5nKCkge1xuICAgICAgICBpZiAoIXRoaXMuI29uZ29pbmdUZXh0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdWJ0YXNrID0gdGhpcy4jc3VidGFza3MubGVuZ3RoID8gYW5zaS5kaW0oYCAoJHt0aGlzLiNzdWJ0YXNrc1t0aGlzLiNzdWJ0YXNrcy5sZW5ndGggLSAxXX0pYCkgOiBcIlwiO1xuXG4gICAgICAgIHdyaXRlU3RhdHVzKGAgICR7YW5zaS55ZWxsb3codGhpcy4jc3Bpbm5lcil9ICR7dGhpcy4jb25nb2luZ1RleHR9JHtzdWJ0YXNrfWAsIHRydWUpO1xuICAgIH1cblxuICAgIHN1Y2Nlc3ModGV4dDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLlN1Y2Nlc3M7XG4gICAgICAgIHdyaXRlU3RhdHVzKGAgICR7YW5zaS5ncmVlbihcIlx1MjcxM1wiKX0gJHt0ZXh0fSAke3RoaXMuI2R1cmF0aW9ufWApO1xuICAgICAgICB0aGlzLiNzdGFydCA9IHRoaXMuI29uZ29pbmdUZXh0ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGZhaWx1cmUodGV4dDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLkZhaWx1cmU7XG4gICAgICAgIHdyaXRlU3RhdHVzKGAgICR7YW5zaS5icmlnaHQucmVkKFwiXHUyNzE3XCIpfSAke3RleHR9ICR7dGhpcy4jZHVyYXRpb259YCk7XG4gICAgICAgIHRoaXMuI3N0YXJ0ID0gdGhpcy4jb25nb2luZ1RleHQgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaW5mbyhsYWJlbDogc3RyaW5nLCB2YWx1ZT86IGFueSkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIGxhYmVsID0gYCR7YW5zaS5kaW0obGFiZWwpfSAke3ZhbHVlfWA7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVTdGF0dXMoYCAgJHthbnNpLmRpbShcIlx1MjAyM1wiKX0gJHtsYWJlbH1gKTtcbiAgICB9XG5cbiAgICB3YXJuKHRleHQ6IHN0cmluZykge1xuICAgICAgICBzdGQub3V0LndyaXRlKGAgICAgJHthbnNpLnllbGxvdyhcIldhcm5pbmc6XCIpfSAke3RleHR9XFxuYCk7XG4gICAgfVxuXG4gICAgY2xvc2UoKSB7XG4gICAgICAgIGlmICh0aGlzLiNyZWZyZXNoSW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy4jcmVmcmVzaEludGVydmFsKTtcbiAgICAgICAgICAgIHRoaXMuI3JlZnJlc2hJbnRlcnZhbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB3cml0ZVN0YXR1cyhcIlwiKTtcbiAgICB9XG5cbiAgICBbU3ltYm9sLmRpc3Bvc2VdKCkge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcmVmcmVzaCgpIHtcbiAgICAgICAgaWYgKHRoaXMuI3VwZGF0ZVNwaW5uZXIoKSkge1xuICAgICAgICAgICAgdGhpcy4jd3JpdGVPbmdvaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBzdWJ0YXNrKHRleHQ6IHN0cmluZywgZm46ICgpID0+IFByb21pc2U8dm9pZD4pIHtcbiAgICAgICAgdGhpcy4jc3VidGFza3MucHVzaCh0ZXh0KTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgZm4oKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuI3N1YnRhc2tzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgI3VwZGF0ZVNwaW5uZXIoKSB7XG4gICAgICAgIGlmICghc3Rkb3V0LmlzVFRZKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3aW5kb3cgPSBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gU1BJTk5FUl9JTlRFUlZBTCk7XG4gICAgICAgIGlmICh0aGlzLiNzcGlubmVyV2luZG93ID09PSB3aW5kb3cpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNzcGlubmVyV2luZG93ID0gd2luZG93O1xuXG4gICAgICAgIHRoaXMuI3NwaW5uZXJQb3NpdGlvbiA9ICh0aGlzLiNzcGlubmVyUG9zaXRpb24gKyAxKSAlIFNQSU5ORVIubGVuZ3RoO1xuICAgICAgICB0aGlzLiNzcGlubmVyID0gU1BJTk5FUlt0aGlzLiNzcGlubmVyUG9zaXRpb25dO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGFzeW5jIHJ1bjxUPih3aGF0OiBzdHJpbmcsIGZuOiAoKSA9PiBUIHwgUHJvbWlzZTxUPikge1xuICAgICAgICB0aGlzLnVwZGF0ZSh3aGF0KTtcbiAgICAgICAgbGV0IHJlc3VsdDogVDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IGZuKCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMuZmFpbHVyZSh3aGF0KTtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdWNjZXNzKHdoYXQpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGdldCAjZHVyYXRpb24oKSB7XG4gICAgICAgIGxldCBtcyA9IHRoaXMuI3N0YXJ0ID8gbmV3IERhdGUoKS5nZXRUaW1lKCkgLSB0aGlzLiNzdGFydCA6IDA7XG4gICAgICAgIGlmIChtcyA8IDEwMDApIHtcbiAgICAgICAgICAgIG1zID0gTWF0aC5yb3VuZChtcyAvIDEwKSAvIDEwMDtcbiAgICAgICAgfSBlbHNlIGlmIChtcyA8IDEwMDAwKSB7XG4gICAgICAgICAgICBtcyA9IE1hdGgucm91bmQobXMgLyAxMDApIC8gMTA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtcyA9IE1hdGgudHJ1bmMobXMgLyAxMDAwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCR7YW5zaS5kaW0ueWVsbG93fSgke21zfXMpJHthbnNpLm5vdC5kaW0ubm90LnllbGxvd31gO1xuICAgIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBQcm9ncmVzcyB7XG4gICAgZXhwb3J0IGVudW0gU3RhdHVzIHtcbiAgICAgICAgU3RhcnR1cCA9IFwic3RhcnR1cFwiLFxuICAgICAgICBPbmdvaW5nID0gXCJvbmdvaW5nXCIsXG4gICAgICAgIFN1Y2Nlc3MgPSBcInN1Y2Nlc3NcIixcbiAgICAgICAgRmFpbHVyZSA9IFwiZmFpbHVyZVwiLFxuICAgIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxTQUFTLFFBQVEsY0FBYztBQUMvQixTQUFTLGNBQWM7QUFDdkIsU0FBUyxXQUFXO0FBQ3BCLFNBQVMsWUFBWTtBQUdyQixNQUFNLFVBQVU7QUFDaEIsTUFBTSxtQkFBbUI7QUFFekIsU0FBUyxnQkFBZ0IsS0FBYztBQUNuQyxNQUFJLFdBQVcsS0FBSyxLQUFLLElBQUksSUFBSSxFQUFFLFNBQVM7QUFDNUMsTUFBSSxJQUFJLEtBQUssU0FBUztBQUNsQixlQUFXLEdBQUcsUUFBUSxJQUFJLElBQUksS0FBSyxPQUFPO0FBQUEsRUFDOUM7QUFDQSxTQUFPO0FBQ1g7QUFLQSxNQUFNLGVBQWUsTUFBTTtBQUN2QixNQUFJO0FBQ0osTUFBSSxjQUFjO0FBRWxCLFdBQVMsVUFBVSxRQUE0QjtBQUMzQyxVQUFNLGNBQWMsT0FBTztBQUMzQixXQUFPLFFBQVEsQ0FBQyxZQUFpQyxXQUFrQjtBQUMvRCxVQUFJLFlBQVk7QUFDWixvQkFBWSxLQUFLLFFBQVEsSUFBSTtBQUM3QixxQkFBYTtBQUFBLE1BQ2pCO0FBRUEsVUFBSSxDQUFDLFFBQVEsUUFBUTtBQUNqQixlQUFPO0FBQUEsTUFDWDtBQUdBLG9CQUFjLFFBQVEsUUFBUSxTQUFTLENBQUMsTUFBTSxRQUFRLFFBQVEsUUFBUSxTQUFTLENBQUMsTUFBTTtBQUV0RixhQUFPLFlBQVksS0FBSyxRQUFRLFNBQVMsR0FBRyxNQUFNO0FBQUEsSUFDdEQ7QUFBQSxFQUNKO0FBRUEsWUFBVSxNQUFNO0FBQ2hCLFlBQVUsTUFBTTtBQUVoQixTQUFPLFNBQVNBLGFBQVksTUFBYyxnQkFBZ0IsT0FBTztBQUM3RCxZQUFRLGdCQUFnQixHQUFHLE9BQU8sTUFBTSxLQUFLLE9BQU8sR0FBRyxPQUFPLE1BQU0sS0FBSztBQUFBO0FBQ3pFLFFBQUksU0FBUyxZQUFZO0FBQ3JCO0FBQUEsSUFDSjtBQUVBLFFBQUksSUFBSSxNQUFNLEVBQUUsUUFBUSxLQUFLLEdBQUcsTUFBTTtBQUNsQyxVQUFJLFlBQVk7QUFDWixxQkFBYTtBQUFBLE1BQ2pCLFdBQVcsZUFBZSxDQUFDLEtBQUssV0FBVyxJQUFJLEdBQUc7QUFDOUMsWUFBSSxJQUFJLElBQUk7QUFBQSxNQUNoQjtBQUVBLFVBQUksSUFBSSxlQUFlLElBQUk7QUFBQSxJQUMvQixDQUFDO0FBRUQsaUJBQWE7QUFBQSxFQUNqQjtBQUNKLEdBQUc7QUFFSSxNQUFNLFNBQVM7QUFBQSxFQUNsQixTQUFTLFNBQVMsT0FBTztBQUFBLEVBQ3pCO0FBQUEsRUFDQTtBQUFBLEVBQ0EsV0FBVztBQUFBLEVBQ1g7QUFBQSxFQUNBLG1CQUFtQjtBQUFBLEVBQ25CO0FBQUEsRUFDQSxZQUFZLE1BQWM7QUFBQSxFQUUxQixjQUFjO0FBQUEsRUFBQztBQUFBLEVBRWYsVUFBVSxNQUFlO0FBQ3JCLFdBQU8sS0FBSyxLQUFLLEdBQUcsSUFBSSxFQUFFO0FBQUEsRUFDOUI7QUFBQSxFQUVBLFlBQVksTUFBZTtBQUN2QixXQUFPLEtBQUssSUFBSSxHQUFHLElBQUksRUFBRTtBQUFBLEVBQzdCO0FBQUEsRUFFQSxLQUFLLEtBQWEsS0FBYztBQUM1QixRQUFJLElBQUksTUFBTSxLQUFLLElBQUksUUFBUSxnQkFBZ0IsR0FBRyxDQUFDLEtBQUssR0FBRztBQUFBO0FBQUEsQ0FBTSxDQUFDO0FBQUEsRUFDdEU7QUFBQSxFQUVBLFFBQVEsTUFBYyxnQkFBb0M7QUFDdEQsUUFBSSxRQUFRLE9BQU8sT0FBTztBQUN0QixXQUFLLGVBQWU7QUFDcEIsV0FBSyxtQkFBbUIsWUFBWSxLQUFLLFFBQVEsS0FBSyxJQUFJLEdBQUcsZ0JBQWdCO0FBQUEsSUFDakY7QUFFQSxTQUFLLFNBQVMsU0FBUyxPQUFPO0FBQzlCLFFBQUksbUJBQW1CLFVBQWEsT0FBTyxtQkFBbUIsV0FBVztBQUNyRSxrQkFBWSxNQUFNLGtCQUFrQixJQUFJO0FBQUEsSUFDNUMsT0FBTztBQUNILGtCQUFZLEdBQUcsSUFBSSxJQUFJLGdCQUFnQixjQUFjLENBQUMsRUFBRTtBQUFBLElBQzVEO0FBQUEsRUFDSjtBQUFBLEVBRUEsT0FBTyxNQUFjLE9BQWdCO0FBQ2pDLFNBQUssU0FBUyxTQUFTLE9BQU87QUFDOUIsUUFBSTtBQUNKLFFBQUksS0FBSyxXQUFXLFFBQVc7QUFDM0IsV0FBSyxVQUFTLG9CQUFJLEtBQUssR0FBRSxRQUFRO0FBQ2pDLGlCQUFXO0FBQUEsSUFDZixPQUFPO0FBQ0gsaUJBQVcsS0FBSztBQUFBLElBQ3BCO0FBQ0EsWUFBUSxVQUFVLFNBQVksS0FBSyxJQUFJLEtBQUs7QUFDNUMsU0FBSyxlQUFlLEdBQUcsSUFBSSxJQUFJLFFBQVEsR0FBRyxLQUFLO0FBQy9DLFNBQUssY0FBYztBQUFBLEVBQ3ZCO0FBQUEsRUFFQSxnQkFBZ0I7QUFDWixRQUFJLENBQUMsS0FBSyxjQUFjO0FBQ3BCO0FBQUEsSUFDSjtBQUVBLFVBQU0sVUFBVSxLQUFLLFVBQVUsU0FBUyxLQUFLLElBQUksS0FBSyxLQUFLLFVBQVUsS0FBSyxVQUFVLFNBQVMsQ0FBQyxDQUFDLEdBQUcsSUFBSTtBQUV0RyxnQkFBWSxLQUFLLEtBQUssT0FBTyxLQUFLLFFBQVEsQ0FBQyxJQUFJLEtBQUssWUFBWSxHQUFHLE9BQU8sSUFBSSxJQUFJO0FBQUEsRUFDdEY7QUFBQSxFQUVBLFFBQVEsTUFBYztBQUNsQixTQUFLLFNBQVMsU0FBUyxPQUFPO0FBQzlCLGdCQUFZLEtBQUssS0FBSyxNQUFNLFFBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtBQUM1RCxTQUFLLFNBQVMsS0FBSyxlQUFlO0FBQUEsRUFDdEM7QUFBQSxFQUVBLFFBQVEsTUFBYztBQUNsQixTQUFLLFNBQVMsU0FBUyxPQUFPO0FBQzlCLGdCQUFZLEtBQUssS0FBSyxPQUFPLElBQUksUUFBRyxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO0FBQ2pFLFNBQUssU0FBUyxLQUFLLGVBQWU7QUFBQSxFQUN0QztBQUFBLEVBRUEsS0FBSyxPQUFlLE9BQWE7QUFDN0IsUUFBSSxPQUFPO0FBQ1AsY0FBUSxHQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLO0FBQUEsSUFDdkM7QUFDQSxnQkFBWSxLQUFLLEtBQUssSUFBSSxRQUFHLENBQUMsSUFBSSxLQUFLLEVBQUU7QUFBQSxFQUM3QztBQUFBLEVBRUEsS0FBSyxNQUFjO0FBQ2YsUUFBSSxJQUFJLE1BQU0sT0FBTyxLQUFLLE9BQU8sVUFBVSxDQUFDLElBQUksSUFBSTtBQUFBLENBQUk7QUFBQSxFQUM1RDtBQUFBLEVBRUEsUUFBUTtBQUNKLFFBQUksS0FBSyxrQkFBa0I7QUFDdkIsb0JBQWMsS0FBSyxnQkFBZ0I7QUFDbkMsV0FBSyxtQkFBbUI7QUFBQSxJQUM1QjtBQUNBLGdCQUFZLEVBQUU7QUFBQSxFQUNsQjtBQUFBLEVBRUEsQ0FBQyxPQUFPLE9BQU8sSUFBSTtBQUNmLFNBQUssTUFBTTtBQUFBLEVBQ2Y7QUFBQSxFQUVBLFVBQVU7QUFDTixRQUFJLEtBQUssZUFBZSxHQUFHO0FBQ3ZCLFdBQUssY0FBYztBQUFBLElBQ3ZCO0FBQUEsRUFDSjtBQUFBLEVBRUEsTUFBTSxRQUFRLE1BQWMsSUFBeUI7QUFDakQsU0FBSyxVQUFVLEtBQUssSUFBSTtBQUV4QixRQUFJO0FBQ0EsWUFBTSxHQUFHO0FBQUEsSUFDYixVQUFFO0FBQ0UsV0FBSyxVQUFVLElBQUk7QUFBQSxJQUN2QjtBQUFBLEVBQ0o7QUFBQSxFQUVBLGlCQUFpQjtBQUNiLFFBQUksQ0FBQyxPQUFPLE9BQU87QUFDZixhQUFPO0FBQUEsSUFDWDtBQUVBLFVBQU0sU0FBUyxLQUFLLE9BQU0sb0JBQUksS0FBSyxHQUFFLFFBQVEsSUFBSSxnQkFBZ0I7QUFDakUsUUFBSSxLQUFLLG1CQUFtQixRQUFRO0FBQ2hDLGFBQU87QUFBQSxJQUNYO0FBQ0EsU0FBSyxpQkFBaUI7QUFFdEIsU0FBSyxvQkFBb0IsS0FBSyxtQkFBbUIsS0FBSyxRQUFRO0FBQzlELFNBQUssV0FBVyxRQUFRLEtBQUssZ0JBQWdCO0FBRTdDLFdBQU87QUFBQSxFQUNYO0FBQUEsRUFFQSxNQUFNLElBQU8sTUFBYyxJQUEwQjtBQUNqRCxTQUFLLE9BQU8sSUFBSTtBQUNoQixRQUFJO0FBQ0osUUFBSTtBQUNBLGVBQVMsTUFBTSxHQUFHO0FBQUEsSUFDdEIsU0FBUyxHQUFHO0FBQ1IsV0FBSyxRQUFRLElBQUk7QUFDakIsWUFBTTtBQUFBLElBQ1Y7QUFDQSxTQUFLLFFBQVEsSUFBSTtBQUNqQixXQUFPO0FBQUEsRUFDWDtBQUFBLEVBRUEsSUFBSSxZQUFZO0FBQ1osUUFBSSxLQUFLLEtBQUssVUFBUyxvQkFBSSxLQUFLLEdBQUUsUUFBUSxJQUFJLEtBQUssU0FBUztBQUM1RCxRQUFJLEtBQUssS0FBTTtBQUNYLFdBQUssS0FBSyxNQUFNLEtBQUssRUFBRSxJQUFJO0FBQUEsSUFDL0IsV0FBVyxLQUFLLEtBQU87QUFDbkIsV0FBSyxLQUFLLE1BQU0sS0FBSyxHQUFHLElBQUk7QUFBQSxJQUNoQyxPQUFPO0FBQ0gsV0FBSyxLQUFLLE1BQU0sS0FBSyxHQUFJO0FBQUEsSUFDN0I7QUFDQSxXQUFPLEdBQUcsS0FBSyxJQUFJLE1BQU0sSUFBSSxFQUFFLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxNQUFNO0FBQUEsRUFDL0Q7QUFDSjtBQUFBLENBRU8sQ0FBVUMsY0FBVjtBQUNJLE1BQUs7QUFBTCxJQUFLQyxZQUFMO0FBQ0gsSUFBQUEsUUFBQSxhQUFVO0FBQ1YsSUFBQUEsUUFBQSxhQUFVO0FBQ1YsSUFBQUEsUUFBQSxhQUFVO0FBQ1YsSUFBQUEsUUFBQSxhQUFVO0FBQUEsS0FKRixTQUFBRCxVQUFBLFdBQUFBLFVBQUE7QUFBQSxHQURDOyIsCiAgIm5hbWVzIjogWyJ3cml0ZVN0YXR1cyIsICJQcm9ncmVzcyIsICJTdGF0dXMiXQp9Cg==
|
|
229
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3V0aWwvcHJvZ3Jlc3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIyLTIwMjUgTWF0dGVyLmpzIEF1dGhvcnNcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IHsgc3RkZXJyLCBzdGRvdXQgfSBmcm9tIFwibm9kZTpwcm9jZXNzXCI7XG5pbXBvcnQgeyBzY3JlZW4gfSBmcm9tIFwiLi4vYW5zaS10ZXh0L3NjcmVlbi5qc1wiO1xuaW1wb3J0IHsgc3RkIH0gZnJvbSBcIi4uL2Fuc2ktdGV4dC9zdGQuanNcIjtcbmltcG9ydCB7IGFuc2kgfSBmcm9tIFwiLi4vYW5zaS10ZXh0L3RleHQtYnVpbGRlci5qc1wiO1xuaW1wb3J0IHsgUGFja2FnZSB9IGZyb20gXCIuL3BhY2thZ2UuanNcIjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19JQ09OX1NVQ0NFU1MgPSBhbnNpLmdyZWVuKFwiXHUyNzEzXCIpO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JQ09OX0ZBSUxVUkUgPSBhbnNpLmJyaWdodC5yZWQoXCJcdTI3MTdcIik7XG5cbmNvbnN0IFNQSU5ORVIgPSBcIlx1MjVEMFx1MjVEM1x1MjVEMVx1MjVEMlwiOyAvL1wiXHUyODVDXHUyODE0XHUyODIyXHUyOEEzXCI7IC8vW1wiXHUyNkFCXHVGRTBFXCIsIFwiXHUyNkFBXHVGRTBFXCJdOyBcIlx1Mjg0OFx1MjgxNFx1MjgyMlx1Mjg4MVwiO1xuY29uc3QgU1BJTk5FUl9JTlRFUlZBTCA9IDEwMDtcblxuZnVuY3Rpb24gcGFja2FnZUlkZW50aXR5KHBrZzogUGFja2FnZSkge1xuICAgIGxldCBpZGVudGl0eSA9IGFuc2kuYm9sZChwa2cubmFtZSkudG9TdHJpbmcoKTtcbiAgICBpZiAocGtnLmpzb24udmVyc2lvbikge1xuICAgICAgICBpZGVudGl0eSA9IGAke2lkZW50aXR5fUAke3BrZy5qc29uLnZlcnNpb259YDtcbiAgICB9XG4gICAgcmV0dXJuIGlkZW50aXR5O1xufVxuXG4vKipcbiAqIEludGVyY2VwdCB3cml0ZXMgdG8gc3RkZXJyIGFuZCBzdGRvdXQgc28gd2UgY2FuIGVuc3VyZSBvdXIgdXBkYXRlcyBhcHBlYXIgb24gZGlmZmVyZW50IGxpbmVzIGZyb20gb3RoZXIgb3V0cHV0LlxuICovXG5jb25zdCB3cml0ZVN0YXR1cyA9ICgoKSA9PiB7XG4gICAgbGV0IGxhc3RTdGF0dXM6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBsZXQgbmVlZE5ld2xpbmUgPSBmYWxzZTtcblxuICAgIGZ1bmN0aW9uIGludGVyY2VwdChzdHJlYW06IE5vZGVKUy5Xcml0ZVN0cmVhbSkge1xuICAgICAgICBjb25zdCBhY3R1YWxXcml0ZSA9IHN0cmVhbS53cml0ZTtcbiAgICAgICAgc3RyZWFtLndyaXRlID0gKHBheWxvYWQ6IFVpbnQ4QXJyYXkgfCBzdHJpbmcsIC4uLnBhcmFtczogYW55W10pID0+IHtcbiAgICAgICAgICAgIGlmIChsYXN0U3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBheWxvYWRbMF0gIT09IFwiXFxuXCIgJiYgcGF5bG9hZFswXSAhPT0gMHhhKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdHVhbFdyaXRlLmNhbGwoc3RyZWFtLCBcIlxcblwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFzdFN0YXR1cyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwYXlsb2FkLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBSZXF1aXJlIGEgbmV3bGluZSBmb3Igc3RhdHVzIHVwZGF0ZXMgYW55IHRpbWUgdGhlIGN1cnNvciBkb2VzIG5vdCBlbmQgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmVcbiAgICAgICAgICAgIHN3aXRjaCAocGF5bG9hZFtwYXlsb2FkLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcIlxcblwiOlxuICAgICAgICAgICAgICAgIGNhc2UgMHhhOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJcXHJcIjpcbiAgICAgICAgICAgICAgICBjYXNlIDB4ZDpcbiAgICAgICAgICAgICAgICAgICAgbmVlZE5ld2xpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBuZWVkTmV3bGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYWN0dWFsV3JpdGUuY2FsbChzdHJlYW0sIHBheWxvYWQsIC4uLnBhcmFtcyk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaW50ZXJjZXB0KHN0ZG91dCk7XG4gICAgaW50ZXJjZXB0KHN0ZGVycik7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gd3JpdGVTdGF0dXModGV4dDogc3RyaW5nLCB3aWxsT3ZlcndyaXRlID0gZmFsc2UpIHtcbiAgICAgICAgdGV4dCArPSB3aWxsT3ZlcndyaXRlID8gYCR7c2NyZWVuLmVyYXNlLnRvRW9sfVxccmAgOiBgJHtzY3JlZW4uZXJhc2UudG9Fb2x9XFxuYDtcbiAgICAgICAgaWYgKHRleHQgPT09IGxhc3RTdGF0dXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0ZC5vdXQuc3RhdGUoeyBidWZmZXI6IHRydWUgfSwgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGxhc3RTdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBsYXN0U3RhdHVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChuZWVkTmV3bGluZSAmJiAhdGV4dC5zdGFydHNXaXRoKFwiXFxuXCIpKSB7XG4gICAgICAgICAgICAgICAgc3RkLm91dChcIlxcblwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3RkLm91dC53cml0ZVRydW5jYXRlZCh0ZXh0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGFzdFN0YXR1cyA9IHRleHQ7XG4gICAgfTtcbn0pKCk7XG5cbmV4cG9ydCBjbGFzcyBQcm9ncmVzcyB7XG4gICAgc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLlN0YXJ0dXA7XG4gICAgI29uZ29pbmdUZXh0Pzogc3RyaW5nO1xuICAgICNzdGFydD86IG51bWJlcjtcbiAgICAjc3Bpbm5lciA9IFwiXHUyOUQ3XCI7XG4gICAgI3JlZnJlc2hJbnRlcnZhbD86IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPjtcbiAgICAjc3Bpbm5lclBvc2l0aW9uID0gMDtcbiAgICAjc3Bpbm5lcldpbmRvdz86IG51bWJlcjtcbiAgICAjc3VidGFza3MgPSBBcnJheTxzdHJpbmc+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBlbXBoYXNpemUodGV4dDogdW5rbm93bikge1xuICAgICAgICByZXR1cm4gYW5zaS5ib2xkKGAke3RleHR9YCk7XG4gICAgfVxuXG4gICAgZGVlbXBoYXNpemUodGV4dDogdW5rbm93bikge1xuICAgICAgICByZXR1cm4gYW5zaS5kaW0oYCR7dGV4dH1gKTtcbiAgICB9XG5cbiAgICBza2lwKHdoeTogc3RyaW5nLCBwa2c6IFBhY2thZ2UpIHtcbiAgICAgICAgc3RkLm91dC53cml0ZShhbnNpLmRpbShgU2tpcCAke3BhY2thZ2VJZGVudGl0eShwa2cpfTogJHt3aHl9XFxuXFxuYCkpO1xuICAgIH1cblxuICAgIHN0YXJ0dXAod2hhdDogc3RyaW5nLCBwa2dPck92ZXJ3cml0ZT86IFBhY2thZ2UgfCBib29sZWFuKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLnN0ZG91dC5pc1RUWSkge1xuICAgICAgICAgICAgdGhpcy4jdXBkYXRlU3Bpbm5lcigpO1xuICAgICAgICAgICAgdGhpcy4jcmVmcmVzaEludGVydmFsID0gc2V0SW50ZXJ2YWwodGhpcy5yZWZyZXNoLmJpbmQodGhpcyksIFNQSU5ORVJfSU5URVJWQUwpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdGF0dXMgPSBQcm9ncmVzcy5TdGF0dXMuU3RhcnR1cDtcbiAgICAgICAgaWYgKHBrZ09yT3ZlcndyaXRlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHBrZ09yT3ZlcndyaXRlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgd3JpdGVTdGF0dXMod2hhdCwgcGtnT3JPdmVyd3JpdGUgPz8gdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3cml0ZVN0YXR1cyhgJHt3aGF0fSAke3BhY2thZ2VJZGVudGl0eShwa2dPck92ZXJ3cml0ZSl9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGUodGV4dDogc3RyaW5nLCBleHRyYT86IHN0cmluZykge1xuICAgICAgICB0aGlzLnN0YXR1cyA9IFByb2dyZXNzLlN0YXR1cy5PbmdvaW5nO1xuICAgICAgICBsZXQgZHVyYXRpb247XG4gICAgICAgIGlmICh0aGlzLiNzdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLiNzdGFydCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgZHVyYXRpb24gPSBcIlwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB0aGlzLiNkdXJhdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBleHRyYSA9IGV4dHJhID09PSB1bmRlZmluZWQgPyBcIlwiIDogYCAke2V4dHJhfWA7XG4gICAgICAgIHRoaXMuI29uZ29pbmdUZXh0ID0gYCR7dGV4dH0gJHtkdXJhdGlvbn0ke2V4dHJhfWA7XG4gICAgICAgIHRoaXMuI3dyaXRlT25nb2luZygpO1xuICAgIH1cblxuICAgICN3cml0ZU9uZ29pbmcoKSB7XG4gICAgICAgIGlmICghdGhpcy4jb25nb2luZ1RleHQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN1YnRhc2sgPSB0aGlzLiNzdWJ0YXNrcy5sZW5ndGggPyBhbnNpLmRpbShgICgke3RoaXMuI3N1YnRhc2tzW3RoaXMuI3N1YnRhc2tzLmxlbmd0aCAtIDFdfSlgKSA6IFwiXCI7XG5cbiAgICAgICAgd3JpdGVTdGF0dXMoYCAgJHthbnNpLnllbGxvdyh0aGlzLiNzcGlubmVyKX0gJHt0aGlzLiNvbmdvaW5nVGV4dH0ke3N1YnRhc2t9YCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgc3VjY2Vzcyh0ZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBQcm9ncmVzcy5TdGF0dXMuU3VjY2VzcztcbiAgICAgICAgd3JpdGVTdGF0dXMoYCAgJHtTVEFUVVNfSUNPTl9TVUNDRVNTfSAke3RleHR9ICR7dGhpcy4jZHVyYXRpb259YCk7XG4gICAgICAgIHRoaXMuI3N0YXJ0ID0gdGhpcy4jb25nb2luZ1RleHQgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZmFpbHVyZSh0ZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBQcm9ncmVzcy5TdGF0dXMuRmFpbHVyZTtcbiAgICAgICAgd3JpdGVTdGF0dXMoYCAgJHtTVEFUVVNfSUNPTl9GQUlMVVJFfSAke3RleHR9ICR7dGhpcy4jZHVyYXRpb259YCk7XG4gICAgICAgIHRoaXMuI3N0YXJ0ID0gdGhpcy4jb25nb2luZ1RleHQgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaW5mbyhsYWJlbDogc3RyaW5nLCB2YWx1ZT86IGFueSkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIGxhYmVsID0gYCR7YW5zaS5kaW0obGFiZWwpfSAke3ZhbHVlfWA7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVTdGF0dXMoYCAgJHthbnNpLmRpbShcIlx1MjAyM1wiKX0gJHtsYWJlbH1gKTtcbiAgICB9XG5cbiAgICB3YXJuKHRleHQ6IHN0cmluZykge1xuICAgICAgICBzdGQub3V0LndyaXRlKGAgICAgJHthbnNpLnllbGxvdyhcIldhcm5pbmc6XCIpfSAke3RleHR9XFxuYCk7XG4gICAgfVxuXG4gICAgY2xvc2UoKSB7XG4gICAgICAgIGlmICh0aGlzLiNyZWZyZXNoSW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy4jcmVmcmVzaEludGVydmFsKTtcbiAgICAgICAgICAgIHRoaXMuI3JlZnJlc2hJbnRlcnZhbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB3cml0ZVN0YXR1cyhcIlwiKTtcbiAgICB9XG5cbiAgICBbU3ltYm9sLmRpc3Bvc2VdKCkge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcmVmcmVzaCgpIHtcbiAgICAgICAgaWYgKHRoaXMuI3VwZGF0ZVNwaW5uZXIoKSkge1xuICAgICAgICAgICAgdGhpcy4jd3JpdGVPbmdvaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBzdWJ0YXNrKHRleHQ6IHN0cmluZywgZm46ICgpID0+IFByb21pc2U8dm9pZD4pIHtcbiAgICAgICAgdGhpcy4jc3VidGFza3MucHVzaCh0ZXh0KTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgZm4oKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuI3N1YnRhc2tzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgI3VwZGF0ZVNwaW5uZXIoKSB7XG4gICAgICAgIGlmICghc3Rkb3V0LmlzVFRZKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3aW5kb3cgPSBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gU1BJTk5FUl9JTlRFUlZBTCk7XG4gICAgICAgIGlmICh0aGlzLiNzcGlubmVyV2luZG93ID09PSB3aW5kb3cpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNzcGlubmVyV2luZG93ID0gd2luZG93O1xuXG4gICAgICAgIHRoaXMuI3NwaW5uZXJQb3NpdGlvbiA9ICh0aGlzLiNzcGlubmVyUG9zaXRpb24gKyAxKSAlIFNQSU5ORVIubGVuZ3RoO1xuICAgICAgICB0aGlzLiNzcGlubmVyID0gU1BJTk5FUlt0aGlzLiNzcGlubmVyUG9zaXRpb25dO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGFzeW5jIHJ1bjxUPih3aGF0OiBzdHJpbmcsIGZuOiAoKSA9PiBUIHwgUHJvbWlzZTxUPikge1xuICAgICAgICB0aGlzLnVwZGF0ZSh3aGF0KTtcbiAgICAgICAgbGV0IHJlc3VsdDogVDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IGZuKCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMuZmFpbHVyZSh3aGF0KTtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdWNjZXNzKHdoYXQpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGdldCAjZHVyYXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGR1cmF0aW9uID0gdGhpcy4jc3RhcnQgPyBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMuI3N0YXJ0IDogMDtcbiAgICAgICAgcmV0dXJuIFByb2dyZXNzLmZvcm1hdER1cmF0aW9uKGR1cmF0aW9uKTtcbiAgICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUHJvZ3Jlc3Mge1xuICAgIGV4cG9ydCBlbnVtIFN0YXR1cyB7XG4gICAgICAgIFN0YXJ0dXAgPSBcInN0YXJ0dXBcIixcbiAgICAgICAgT25nb2luZyA9IFwib25nb2luZ1wiLFxuICAgICAgICBTdWNjZXNzID0gXCJzdWNjZXNzXCIsXG4gICAgICAgIEZhaWx1cmUgPSBcImZhaWx1cmVcIixcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gZm9ybWF0RHVyYXRpb24oZHVyYXRpb246IG51bWJlcikge1xuICAgICAgICBsZXQgc2Vjb25kcztcbiAgICAgICAgaWYgKGR1cmF0aW9uIDwgMTAwMDApIHtcbiAgICAgICAgICAgIHNlY29uZHMgPSAoZHVyYXRpb24gLyAxMDAwKS50b1ByZWNpc2lvbigyKTtcbiAgICAgICAgICAgIGlmIChzZWNvbmRzLnN0YXJ0c1dpdGgoXCIwLlwiKSkge1xuICAgICAgICAgICAgICAgIHNlY29uZHMgPSBzZWNvbmRzLnNsaWNlKDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKHNlY29uZHMuZW5kc1dpdGgoXCIwXCIpKSB7XG4gICAgICAgICAgICAgICAgc2Vjb25kcyA9IHNlY29uZHMuc2xpY2UoMCwgc2Vjb25kcy5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWNvbmRzID09PSBcIi5cIikge1xuICAgICAgICAgICAgICAgIHNlY29uZHMgPSBcIjBcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlY29uZHMgPSBNYXRoLnRydW5jKGR1cmF0aW9uIC8gMTAwMCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke2Fuc2kuZGltLnllbGxvd30oJHtzZWNvbmRzfXMpJHthbnNpLm5vdC5kaW0ubm90LnllbGxvd31gO1xuICAgIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxTQUFTLFFBQVEsY0FBYztBQUMvQixTQUFTLGNBQWM7QUFDdkIsU0FBUyxXQUFXO0FBQ3BCLFNBQVMsWUFBWTtBQUdkLE1BQU0sc0JBQXNCLEtBQUssTUFBTSxRQUFHO0FBQzFDLE1BQU0sc0JBQXNCLEtBQUssT0FBTyxJQUFJLFFBQUc7QUFFdEQsTUFBTSxVQUFVO0FBQ2hCLE1B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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/util/progress.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,QAAQ,cAAc;AAC/B,SAAS,cAAc;AACvB,SAAS,WAAW;AACpB,SAAS,YAAY;
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,QAAQ,cAAc;AAC/B,SAAS,cAAc;AACvB,SAAS,WAAW;AACpB,SAAS,YAAY;AAGd,MAAM,sBAAsB,KAAK,MAAM,QAAG;AAC1C,MAAM,sBAAsB,KAAK,OAAO,IAAI,QAAG;AAEtD,MAAM,UAAU;AAChB,MAAM,mBAAmB;AAEzB,SAAS,gBAAgB,KAAc;AACnC,MAAI,WAAW,KAAK,KAAK,IAAI,IAAI,EAAE,SAAS;AAC5C,MAAI,IAAI,KAAK,SAAS;AAClB,eAAW,GAAG,QAAQ,IAAI,IAAI,KAAK,OAAO;AAAA,EAC9C;AACA,SAAO;AACX;AAKA,MAAM,eAAe,MAAM;AACvB,MAAI;AACJ,MAAI,cAAc;AAElB,WAAS,UAAU,QAA4B;AAC3C,UAAM,cAAc,OAAO;AAC3B,WAAO,QAAQ,CAAC,YAAiC,WAAkB;AAC/D,UAAI,YAAY;AACZ,YAAI,QAAQ,CAAC,MAAM,QAAQ,QAAQ,CAAC,MAAM,IAAK;AAC3C,sBAAY,KAAK,QAAQ,IAAI;AAAA,QACjC;AACA,qBAAa;AAAA,MACjB;AAEA,UAAI,CAAC,QAAQ,QAAQ;AACjB,eAAO;AAAA,MACX;AAGA,cAAQ,QAAQ,QAAQ,SAAS,CAAC,GAAG;AAAA,QACjC,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD,wBAAc;AACd;AAAA,QAEJ;AACI,wBAAc;AACd;AAAA,MACR;AAEA,aAAO,YAAY,KAAK,QAAQ,SAAS,GAAG,MAAM;AAAA,IACtD;AAAA,EACJ;AAEA,YAAU,MAAM;AAChB,YAAU,MAAM;AAEhB,SAAO,SAASA,aAAY,MAAc,gBAAgB,OAAO;AAC7D,YAAQ,gBAAgB,GAAG,OAAO,MAAM,KAAK,OAAO,GAAG,OAAO,MAAM,KAAK;AAAA;AACzE,QAAI,SAAS,YAAY;AACrB;AAAA,IACJ;AAEA,QAAI,IAAI,MAAM,EAAE,QAAQ,KAAK,GAAG,MAAM;AAClC,UAAI,YAAY;AACZ,qBAAa;AAAA,MACjB,WAAW,eAAe,CAAC,KAAK,WAAW,IAAI,GAAG;AAC9C,YAAI,IAAI,IAAI;AAAA,MAChB;AAEA,UAAI,IAAI,eAAe,IAAI;AAAA,IAC/B,CAAC;AAED,iBAAa;AAAA,EACjB;AACJ,GAAG;AAEI,MAAM,SAAS;AAAA,EAClB,SAAS,SAAS,OAAO;AAAA,EACzB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,mBAAmB;AAAA,EACnB;AAAA,EACA,YAAY,MAAc;AAAA,EAE1B,cAAc;AAAA,EAAC;AAAA,EAEf,UAAU,MAAe;AACrB,WAAO,KAAK,KAAK,GAAG,IAAI,EAAE;AAAA,EAC9B;AAAA,EAEA,YAAY,MAAe;AACvB,WAAO,KAAK,IAAI,GAAG,IAAI,EAAE;AAAA,EAC7B;AAAA,EAEA,KAAK,KAAa,KAAc;AAC5B,QAAI,IAAI,MAAM,KAAK,IAAI,QAAQ,gBAAgB,GAAG,CAAC,KAAK,GAAG;AAAA;AAAA,CAAM,CAAC;AAAA,EACtE;AAAA,EAEA,QAAQ,MAAc,gBAAoC;AACtD,QAAI,QAAQ,OAAO,OAAO;AACtB,WAAK,eAAe;AACpB,WAAK,mBAAmB,YAAY,KAAK,QAAQ,KAAK,IAAI,GAAG,gBAAgB;AAAA,IACjF;AAEA,SAAK,SAAS,SAAS,OAAO;AAC9B,QAAI,mBAAmB,UAAa,OAAO,mBAAmB,WAAW;AACrE,kBAAY,MAAM,kBAAkB,IAAI;AAAA,IAC5C,OAAO;AACH,kBAAY,GAAG,IAAI,IAAI,gBAAgB,cAAc,CAAC,EAAE;AAAA,IAC5D;AAAA,EACJ;AAAA,EAEA,OAAO,MAAc,OAAgB;AACjC,SAAK,SAAS,SAAS,OAAO;AAC9B,QAAI;AACJ,QAAI,KAAK,WAAW,QAAW;AAC3B,WAAK,UAAS,oBAAI,KAAK,GAAE,QAAQ;AACjC,iBAAW;AAAA,IACf,OAAO;AACH,iBAAW,KAAK;AAAA,IACpB;AACA,YAAQ,UAAU,SAAY,KAAK,IAAI,KAAK;AAC5C,SAAK,eAAe,GAAG,IAAI,IAAI,QAAQ,GAAG,KAAK;AAC/C,SAAK,cAAc;AAAA,EACvB;AAAA,EAEA,gBAAgB;AACZ,QAAI,CAAC,KAAK,cAAc;AACpB;AAAA,IACJ;AAEA,UAAM,UAAU,KAAK,UAAU,SAAS,KAAK,IAAI,KAAK,KAAK,UAAU,KAAK,UAAU,SAAS,CAAC,CAAC,GAAG,IAAI;AAEtG,gBAAY,KAAK,KAAK,OAAO,KAAK,QAAQ,CAAC,IAAI,KAAK,YAAY,GAAG,OAAO,IAAI,IAAI;AAAA,EACtF;AAAA,EAEA,QAAQ,MAAc;AAClB,SAAK,SAAS,SAAS,OAAO;AAC9B,gBAAY,KAAK,mBAAmB,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;AAChE,SAAK,SAAS,KAAK,eAAe;AAAA,EACtC;AAAA,EAEA,QAAQ,MAAc;AAClB,SAAK,SAAS,SAAS,OAAO;AAC9B,gBAAY,KAAK,mBAAmB,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;AAChE,SAAK,SAAS,KAAK,eAAe;AAAA,EACtC;AAAA,EAEA,KAAK,OAAe,OAAa;AAC7B,QAAI,OAAO;AACP,cAAQ,GAAG,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK;AAAA,IACvC;AACA,gBAAY,KAAK,KAAK,IAAI,QAAG,CAAC,IAAI,KAAK,EAAE;AAAA,EAC7C;AAAA,EAEA,KAAK,MAAc;AACf,QAAI,IAAI,MAAM,OAAO,KAAK,OAAO,UAAU,CAAC,IAAI,IAAI;AAAA,CAAI;AAAA,EAC5D;AAAA,EAEA,QAAQ;AACJ,QAAI,KAAK,kBAAkB;AACvB,oBAAc,KAAK,gBAAgB;AACnC,WAAK,mBAAmB;AAAA,IAC5B;AACA,gBAAY,EAAE;AAAA,EAClB;AAAA,EAEA,CAAC,OAAO,OAAO,IAAI;AACf,SAAK,MAAM;AAAA,EACf;AAAA,EAEA,UAAU;AACN,QAAI,KAAK,eAAe,GAAG;AACvB,WAAK,cAAc;AAAA,IACvB;AAAA,EACJ;AAAA,EAEA,MAAM,QAAQ,MAAc,IAAyB;AACjD,SAAK,UAAU,KAAK,IAAI;AAExB,QAAI;AACA,YAAM,GAAG;AAAA,IACb,UAAE;AACE,WAAK,UAAU,IAAI;AAAA,IACvB;AAAA,EACJ;AAAA,EAEA,iBAAiB;AACb,QAAI,CAAC,OAAO,OAAO;AACf,aAAO;AAAA,IACX;AAEA,UAAM,SAAS,KAAK,OAAM,oBAAI,KAAK,GAAE,QAAQ,IAAI,gBAAgB;AACjE,QAAI,KAAK,mBAAmB,QAAQ;AAChC,aAAO;AAAA,IACX;AACA,SAAK,iBAAiB;AAEtB,SAAK,oBAAoB,KAAK,mBAAmB,KAAK,QAAQ;AAC9D,SAAK,WAAW,QAAQ,KAAK,gBAAgB;AAE7C,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,IAAO,MAAc,IAA0B;AACjD,SAAK,OAAO,IAAI;AAChB,QAAI;AACJ,QAAI;AACA,eAAS,MAAM,GAAG;AAAA,IACtB,SAAS,GAAG;AACR,WAAK,QAAQ,IAAI;AACjB,YAAM;AAAA,IACV;AACA,SAAK,QAAQ,IAAI;AACjB,WAAO;AAAA,EACX;AAAA,EAEA,IAAI,YAAY;AACZ,UAAM,WAAW,KAAK,UAAS,oBAAI,KAAK,GAAE,QAAQ,IAAI,KAAK,SAAS;AACpE,WAAO,SAAS,eAAe,QAAQ;AAAA,EAC3C;AACJ;AAAA,CAEO,CAAUC,cAAV;AACI,MAAK;AAAL,IAAKC,YAAL;AACH,IAAAA,QAAA,aAAU;AACV,IAAAA,QAAA,aAAU;AACV,IAAAA,QAAA,aAAU;AACV,IAAAA,QAAA,aAAU;AAAA,KAJF,SAAAD,UAAA,WAAAA,UAAA;AAOL,WAAS,eAAe,UAAkB;AAC7C,QAAI;AACJ,QAAI,WAAW,KAAO;AAClB,iBAAW,WAAW,KAAM,YAAY,CAAC;AACzC,UAAI,QAAQ,WAAW,IAAI,GAAG;AAC1B,kBAAU,QAAQ,MAAM,CAAC;AAAA,MAC7B;AACA,aAAO,QAAQ,SAAS,GAAG,GAAG;AAC1B,kBAAU,QAAQ,MAAM,GAAG,QAAQ,SAAS,CAAC;AAAA,MACjD;AACA,UAAI,YAAY,KAAK;AACjB,kBAAU;AAAA,MACd;AAAA,IACJ,OAAO;AACH,gBAAU,KAAK,MAAM,WAAW,GAAI;AAAA,IACxC;AACA,WAAO,GAAG,KAAK,IAAI,MAAM,IAAI,OAAO,KAAK,KAAK,IAAI,IAAI,IAAI,MAAM;AAAA,EACpE;AAjBO,EAAAA,UAAS;AAAA,GARH;",
|
|
5
5
|
"names": ["writeStatus", "Progress", "Status"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/tools",
|
|
3
|
-
"version": "0.13.0-alpha.0-
|
|
3
|
+
"version": "0.13.0-alpha.0-20250327-8b06e5a79",
|
|
4
4
|
"description": "Matter.js tooling",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"minimatch": "^10.0.1",
|
|
66
66
|
"typescript": "~5.8.2",
|
|
67
67
|
"type-fest": "^4.37.0",
|
|
68
|
-
"typedoc": "^0.28.
|
|
68
|
+
"typedoc": "^0.28.1",
|
|
69
69
|
"typedoc-github-theme": "^0.2.1"
|
|
70
70
|
},
|
|
71
71
|
"optionalDependencies": {
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"devDependencies": {
|
|
75
75
|
"@types/madge": "^5.0.3",
|
|
76
76
|
"@types/minimatch": "^5.1.2",
|
|
77
|
-
"@types/node": "^22.13.
|
|
77
|
+
"@types/node": "^22.13.12",
|
|
78
78
|
"detective-typescript": "^14.0.0"
|
|
79
79
|
},
|
|
80
80
|
"publishConfig": {
|
package/src/util/progress.ts
CHANGED
|
@@ -10,6 +10,9 @@ import { std } from "../ansi-text/std.js";
|
|
|
10
10
|
import { ansi } from "../ansi-text/text-builder.js";
|
|
11
11
|
import { Package } from "./package.js";
|
|
12
12
|
|
|
13
|
+
export const STATUS_ICON_SUCCESS = ansi.green("✓");
|
|
14
|
+
export const STATUS_ICON_FAILURE = ansi.bright.red("✗");
|
|
15
|
+
|
|
13
16
|
const SPINNER = "◐◓◑◒"; //"⡜⠔⠢⢣"; //["⚫︎", "⚪︎"]; "⡈⠔⠢⢁";
|
|
14
17
|
const SPINNER_INTERVAL = 100;
|
|
15
18
|
|
|
@@ -32,7 +35,9 @@ const writeStatus = (() => {
|
|
|
32
35
|
const actualWrite = stream.write;
|
|
33
36
|
stream.write = (payload: Uint8Array | string, ...params: any[]) => {
|
|
34
37
|
if (lastStatus) {
|
|
35
|
-
|
|
38
|
+
if (payload[0] !== "\n" && payload[0] !== 0xa) {
|
|
39
|
+
actualWrite.call(stream, "\n");
|
|
40
|
+
}
|
|
36
41
|
lastStatus = undefined;
|
|
37
42
|
}
|
|
38
43
|
|
|
@@ -41,7 +46,18 @@ const writeStatus = (() => {
|
|
|
41
46
|
}
|
|
42
47
|
|
|
43
48
|
// Require a newline for status updates any time the cursor does not end at the beginning of a line
|
|
44
|
-
|
|
49
|
+
switch (payload[payload.length - 1]) {
|
|
50
|
+
case "\n":
|
|
51
|
+
case 0xa:
|
|
52
|
+
case "\r":
|
|
53
|
+
case 0xd:
|
|
54
|
+
needNewline = false;
|
|
55
|
+
break;
|
|
56
|
+
|
|
57
|
+
default:
|
|
58
|
+
needNewline = true;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
45
61
|
|
|
46
62
|
return actualWrite.call(stream, payload, ...params);
|
|
47
63
|
};
|
|
@@ -134,13 +150,13 @@ export class Progress {
|
|
|
134
150
|
|
|
135
151
|
success(text: string) {
|
|
136
152
|
this.status = Progress.Status.Success;
|
|
137
|
-
writeStatus(` ${
|
|
153
|
+
writeStatus(` ${STATUS_ICON_SUCCESS} ${text} ${this.#duration}`);
|
|
138
154
|
this.#start = this.#ongoingText = undefined;
|
|
139
155
|
}
|
|
140
156
|
|
|
141
157
|
failure(text: string) {
|
|
142
158
|
this.status = Progress.Status.Failure;
|
|
143
|
-
writeStatus(` ${
|
|
159
|
+
writeStatus(` ${STATUS_ICON_FAILURE} ${text} ${this.#duration}`);
|
|
144
160
|
this.#start = this.#ongoingText = undefined;
|
|
145
161
|
}
|
|
146
162
|
|
|
@@ -214,15 +230,8 @@ export class Progress {
|
|
|
214
230
|
}
|
|
215
231
|
|
|
216
232
|
get #duration() {
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
ms = Math.round(ms / 10) / 100;
|
|
220
|
-
} else if (ms < 10000) {
|
|
221
|
-
ms = Math.round(ms / 100) / 10;
|
|
222
|
-
} else {
|
|
223
|
-
ms = Math.trunc(ms / 1000);
|
|
224
|
-
}
|
|
225
|
-
return `${ansi.dim.yellow}(${ms}s)${ansi.not.dim.not.yellow}`;
|
|
233
|
+
const duration = this.#start ? new Date().getTime() - this.#start : 0;
|
|
234
|
+
return Progress.formatDuration(duration);
|
|
226
235
|
}
|
|
227
236
|
}
|
|
228
237
|
|
|
@@ -233,4 +242,23 @@ export namespace Progress {
|
|
|
233
242
|
Success = "success",
|
|
234
243
|
Failure = "failure",
|
|
235
244
|
}
|
|
245
|
+
|
|
246
|
+
export function formatDuration(duration: number) {
|
|
247
|
+
let seconds;
|
|
248
|
+
if (duration < 10000) {
|
|
249
|
+
seconds = (duration / 1000).toPrecision(2);
|
|
250
|
+
if (seconds.startsWith("0.")) {
|
|
251
|
+
seconds = seconds.slice(1);
|
|
252
|
+
}
|
|
253
|
+
while (seconds.endsWith("0")) {
|
|
254
|
+
seconds = seconds.slice(0, seconds.length - 1);
|
|
255
|
+
}
|
|
256
|
+
if (seconds === ".") {
|
|
257
|
+
seconds = "0";
|
|
258
|
+
}
|
|
259
|
+
} else {
|
|
260
|
+
seconds = Math.trunc(duration / 1000);
|
|
261
|
+
}
|
|
262
|
+
return `${ansi.dim.yellow}(${seconds}s)${ansi.not.dim.not.yellow}`;
|
|
263
|
+
}
|
|
236
264
|
}
|