@wppconnect/server 2.7.0 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/dist/controller/messageController.js +8 -3
- package/dist/controller/sessionController.js +10 -3
- package/dist/middleware/statusConnection.js +4 -2
- package/dist/swagger.json +19 -2
- package/dist/util/createSessionUtil.js +5 -1
- package/dist/util/functions.js +7 -2
- package/package.json +31 -30
package/CHANGELOG.md
CHANGED
|
@@ -51,6 +51,7 @@ async function sendMessage(req, res) {
|
|
|
51
51
|
phone: { type: "string" },
|
|
52
52
|
isGroup: { type: "boolean" },
|
|
53
53
|
isNewsletter: { type: "boolean" },
|
|
54
|
+
isLid: { type: "boolean" },
|
|
54
55
|
message: { type: "string" },
|
|
55
56
|
options: { type: "object" },
|
|
56
57
|
}
|
|
@@ -61,6 +62,7 @@ async function sendMessage(req, res) {
|
|
|
61
62
|
phone: '5521999999999',
|
|
62
63
|
isGroup: false,
|
|
63
64
|
isNewsletter: false,
|
|
65
|
+
isLid: false,
|
|
64
66
|
message: 'Hi from WPPConnect',
|
|
65
67
|
}
|
|
66
68
|
},
|
|
@@ -69,6 +71,7 @@ async function sendMessage(req, res) {
|
|
|
69
71
|
phone: '5521999999999',
|
|
70
72
|
isGroup: false,
|
|
71
73
|
isNewsletter: false,
|
|
74
|
+
isLid: false,
|
|
72
75
|
message: 'Hi from WPPConnect with reply',
|
|
73
76
|
options: {
|
|
74
77
|
quotedMsg: 'true_...@c.us_3EB01DE65ACC6_out',
|
|
@@ -173,6 +176,7 @@ async function sendFile(req, res) {
|
|
|
173
176
|
"phone": { type: "string" },
|
|
174
177
|
"isGroup": { type: "boolean" },
|
|
175
178
|
"isNewsletter": { type: "boolean" },
|
|
179
|
+
"isLid": { type: "boolean" },
|
|
176
180
|
"filename": { type: "string" },
|
|
177
181
|
"caption": { type: "string" },
|
|
178
182
|
"base64": { type: "string" }
|
|
@@ -184,6 +188,7 @@ async function sendFile(req, res) {
|
|
|
184
188
|
"phone": "5521999999999",
|
|
185
189
|
"isGroup": false,
|
|
186
190
|
"isNewsletter": false,
|
|
191
|
+
"isLid": false,
|
|
187
192
|
"filename": "file name lol",
|
|
188
193
|
"caption": "caption for my file",
|
|
189
194
|
"base64": "<base64> string"
|
|
@@ -890,10 +895,10 @@ async function sendMentioned(req, res) {
|
|
|
890
895
|
examples: {
|
|
891
896
|
"Default": {
|
|
892
897
|
value: {
|
|
893
|
-
"phone": "
|
|
898
|
+
"phone": "groupId@g.us",
|
|
894
899
|
"isGroup": true,
|
|
895
900
|
"message": "Your text message",
|
|
896
|
-
"mentioned": ["
|
|
901
|
+
"mentioned": ["556593077171@c.us"]
|
|
897
902
|
}
|
|
898
903
|
}
|
|
899
904
|
}
|
|
@@ -1041,4 +1046,4 @@ async function sendImageAsStickerGif(req, res) {
|
|
|
1041
1046
|
returnError(req, res, error);
|
|
1042
1047
|
}
|
|
1043
1048
|
}
|
|
1044
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnVuY3Rpb25zIiwicmVxdWlyZSIsInJldHVybkVycm9yIiwicmVxIiwicmVzIiwiZXJyb3IiLCJsb2dnZXIiLCJzdGF0dXMiLCJqc29uIiwibWVzc2FnZSIsInJldHVyblN1Y2VzcyIsImRhdGEiLCJyZXNwb25zZSIsIm1hcHBlciIsInNlbmRNZXNzYWdlIiwicGhvbmUiLCJib2R5Iiwib3B0aW9ucyIsInJlc3VsdHMiLCJjb250YXRvIiwicHVzaCIsImNsaWVudCIsInNlbmRUZXh0IiwibGVuZ3RoIiwiaW8iLCJlbWl0IiwiZWRpdE1lc3NhZ2UiLCJpZCIsIm5ld1RleHQiLCJlZGl0ZWQiLCJzZW5kRmlsZSIsInBhdGgiLCJiYXNlNjQiLCJmaWxlbmFtZSIsImNhcHRpb24iLCJxdW90ZWRNZXNzYWdlSWQiLCJmaWxlIiwic2VuZCIsInBhdGhGaWxlIiwibXNnIiwiY29udGFjdCIsInF1b3RlZE1zZyIsInVubGlua0FzeW5jIiwic2VuZFZvaWNlIiwic2VuZFB0dCIsInNlbmRWb2ljZTY0IiwiYmFzZTY0UHR0Iiwic2VuZFB0dEZyb21CYXNlNjQiLCJzZW5kTGlua1ByZXZpZXciLCJ1cmwiLCJzZW5kTG9jYXRpb24iLCJsYXQiLCJsbmciLCJ0aXRsZSIsImFkZHJlc3MiLCJuYW1lIiwic2VuZEJ1dHRvbnMiLCJzZW5kTGlzdE1lc3NhZ2UiLCJkZXNjcmlwdGlvbiIsInNlY3Rpb25zIiwiYnV0dG9uVGV4dCIsInNlbmRPcmRlck1lc3NhZ2UiLCJpdGVtcyIsInNlbmRQb2xsTWVzc2FnZSIsImNob2ljZXMiLCJzZW5kU3RhdHVzVGV4dCIsInJlcGx5TWVzc2FnZSIsIm1lc3NhZ2VJZCIsInJlcGx5IiwidG8iLCJzZW5kTWVudGlvbmVkIiwibWVudGlvbmVkIiwic2VuZEltYWdlQXNTdGlja2VyIiwic2VuZEltYWdlQXNTdGlja2VyR2lmIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyb2xsZXIvbWVzc2FnZUNvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIxIFdQUENvbm5lY3QgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBSZXF1ZXN0LCBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuXG5pbXBvcnQgeyB1bmxpbmtBc3luYyB9IGZyb20gJy4uL3V0aWwvZnVuY3Rpb25zJztcblxuZnVuY3Rpb24gcmV0dXJuRXJyb3IocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBlcnJvcjogYW55KSB7XG4gIHJlcS5sb2dnZXIuZXJyb3IoZXJyb3IpO1xuICByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgc3RhdHVzOiAnRXJyb3InLFxuICAgIG1lc3NhZ2U6ICdFcnJvIGFvIGVudmlhciBhIG1lbnNhZ2VtLicsXG4gICAgZXJyb3I6IGVycm9yLFxuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmV0dXJuU3VjZXNzKHJlczogYW55LCBkYXRhOiBhbnkpIHtcbiAgcmVzLnN0YXR1cygyMDEpLmpzb24oeyBzdGF0dXM6ICdzdWNjZXNzJywgcmVzcG9uc2U6IGRhdGEsIG1hcHBlcjogJ3JldHVybicgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kTWVzc2FnZShyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJNZXNzYWdlc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIHBob25lOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgaXNHcm91cDogeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICAgICAgICBpc05ld3NsZXR0ZXI6IHsgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgIG9wdGlvbnM6IHsgdHlwZTogXCJvYmplY3RcIiB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXhhbXBsZXM6IHtcbiAgICAgICAgICAgIFwiU2VuZCBtZXNzYWdlIHRvIGNvbnRhY3RcIjoge1xuICAgICAgICAgICAgICB2YWx1ZTogeyBcbiAgICAgICAgICAgICAgICBwaG9uZTogJzU1MjE5OTk5OTk5OTknLFxuICAgICAgICAgICAgICAgIGlzR3JvdXA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzTmV3c2xldHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ0hpIGZyb20gV1BQQ29ubmVjdCcsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIlNlbmQgbWVzc2FnZSB3aXRoIHJlcGx5XCI6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IHsgXG4gICAgICAgICAgICAgICAgcGhvbmU6ICc1NTIxOTk5OTk5OTk5JyxcbiAgICAgICAgICAgICAgICBpc0dyb3VwOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc05ld3NsZXR0ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdIaSBmcm9tIFdQUENvbm5lY3Qgd2l0aCByZXBseScsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgcXVvdGVkTXNnOiAndHJ1ZV8uLi5AYy51c18zRUIwMURFNjVBQ0M2X291dCcsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJTZW5kIG1lc3NhZ2UgdG8gZ3JvdXBcIjoge1xuICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgIHBob25lOiAnODg2NTYyMzIxNTI0NDU3OCcsXG4gICAgICAgICAgICAgICAgaXNHcm91cDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiAnSGkgZnJvbSBXUFBDb25uZWN0JyxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgfVxuICAgKi9cbiAgY29uc3QgeyBwaG9uZSwgbWVzc2FnZSB9ID0gcmVxLmJvZHk7XG5cbiAgY29uc3Qgb3B0aW9ucyA9IHJlcS5ib2R5Lm9wdGlvbnMgfHwge307XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHRzOiBhbnkgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNvbnRhdG8gb2YgcGhvbmUpIHtcbiAgICAgIHJlc3VsdHMucHVzaChhd2FpdCByZXEuY2xpZW50LnNlbmRUZXh0KGNvbnRhdG8sIG1lc3NhZ2UsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICBpZiAocmVzdWx0cy5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDApLmpzb24oJ0Vycm9yIHNlbmRpbmcgbWVzc2FnZScpO1xuICAgIHJlcS5pby5lbWl0KCdtZW5zYWdlbS1lbnZpYWRhJywgcmVzdWx0cyk7XG4gICAgcmV0dXJuU3VjZXNzKHJlcywgcmVzdWx0cyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuRXJyb3IocmVxLCByZXMsIGVycm9yKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZWRpdE1lc3NhZ2UocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgXCJAY29udGVudFwiOiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICBpZDogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgIG5ld1RleHQ6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICBvcHRpb25zOiB7IHR5cGU6IFwib2JqZWN0XCIgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICBcIkVkaXQgYSBtZXNzYWdlXCI6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IHsgXG4gICAgICAgICAgICAgICAgaWQ6ICd0cnVlXzU1MjE5OTk5OTk5OTlAYy51c18zRUIwNEZDQUExNTI3RUI2RDlERUM4JyxcbiAgICAgICAgICAgICAgICBuZXdUZXh0OiAnTmV3IHRleHQgZm9yIG1lc3NhZ2UnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgIH1cbiAgICovXG4gIGNvbnN0IHsgaWQsIG5ld1RleHQgfSA9IHJlcS5ib2R5O1xuXG4gIGNvbnN0IG9wdGlvbnMgPSByZXEuYm9keS5vcHRpb25zIHx8IHt9O1xuICB0cnkge1xuICAgIGNvbnN0IGVkaXRlZCA9IGF3YWl0IChyZXEuY2xpZW50IGFzIGFueSkuZWRpdE1lc3NhZ2UoaWQsIG5ld1RleHQsIG9wdGlvbnMpO1xuXG4gICAgcmVxLmlvLmVtaXQoJ2VkaXRlZC1tZXNzYWdlJywgZWRpdGVkKTtcbiAgICByZXR1cm5TdWNlc3MocmVzLCBlZGl0ZWQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybkVycm9yKHJlcSwgcmVzLCBlcnJvcik7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRGaWxlKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIk1lc3NhZ2VzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICBcInBob25lXCI6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICBcImlzR3JvdXBcIjogeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICAgICAgICAgICAgICBcImlzTmV3c2xldHRlclwiOiB7IHR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAgICAgICAgICAgICAgICAgIFwiZmlsZW5hbWVcIjogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIFwiY2FwdGlvblwiOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgXCJiYXNlNjRcIjogeyB0eXBlOiBcInN0cmluZ1wiIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXhhbXBsZXM6IHtcbiAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJwaG9uZVwiOiBcIjU1MjE5OTk5OTk5OTlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaXNHcm91cFwiOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaXNOZXdzbGV0dGVyXCI6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJmaWxlbmFtZVwiOiBcImZpbGUgbmFtZSBsb2xcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FwdGlvblwiOiBcImNhcHRpb24gZm9yIG15IGZpbGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYmFzZTY0XCI6IFwiPGJhc2U2ND4gc3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICovXG4gIGNvbnN0IHtcbiAgICBwaG9uZSxcbiAgICBwYXRoLFxuICAgIGJhc2U2NCxcbiAgICBmaWxlbmFtZSA9ICdmaWxlJyxcbiAgICBtZXNzYWdlLFxuICAgIGNhcHRpb24sXG4gICAgcXVvdGVkTWVzc2FnZUlkLFxuICB9ID0gcmVxLmJvZHk7XG5cbiAgY29uc3Qgb3B0aW9ucyA9IHJlcS5ib2R5Lm9wdGlvbnMgfHwge307XG5cbiAgaWYgKCFwYXRoICYmICFyZXEuZmlsZSAmJiAhYmFzZTY0KVxuICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuc2VuZCh7XG4gICAgICBtZXNzYWdlOiAnU2VuZGluZyB0aGUgZmlsZSBpcyBtYW5kYXRvcnknLFxuICAgIH0pO1xuXG4gIGNvbnN0IHBhdGhGaWxlID0gcGF0aCB8fCBiYXNlNjQgfHwgcmVxLmZpbGU/LnBhdGg7XG4gIGNvbnN0IG1zZyA9IG1lc3NhZ2UgfHwgY2FwdGlvbjtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdHM6IGFueSA9IFtdO1xuICAgIGZvciAoY29uc3QgY29udGFjdCBvZiBwaG9uZSkge1xuICAgICAgcmVzdWx0cy5wdXNoKFxuICAgICAgICBhd2FpdCByZXEuY2xpZW50LnNlbmRGaWxlKGNvbnRhY3QsIHBhdGhGaWxlLCB7XG4gICAgICAgICAgZmlsZW5hbWU6IGZpbGVuYW1lLFxuICAgICAgICAgIGNhcHRpb246IG1zZyxcbiAgICAgICAgICBxdW90ZWRNc2c6IHF1b3RlZE1lc3NhZ2VJZCxcbiAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocmVzdWx0cy5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDApLmpzb24oJ0Vycm9yIHNlbmRpbmcgbWVzc2FnZScpO1xuICAgIGlmIChyZXEuZmlsZSkgYXdhaXQgdW5saW5rQXN5bmMocGF0aEZpbGUpO1xuICAgIHJldHVyblN1Y2VzcyhyZXMsIHJlc3VsdHMpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybkVycm9yKHJlcSwgcmVzLCBlcnJvcik7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRWb2ljZShyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJNZXNzYWdlc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJwaG9uZVwiOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaXNHcm91cFwiOiB7IHR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcInBhdGhcIjogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcInF1b3RlZE1lc3NhZ2VJZFwiOiB7IHR5cGU6IFwic3RyaW5nXCIgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInBob25lXCI6IFwiNTUyMTk5OTk5OTk5OVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaXNHcm91cFwiOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInBhdGhcIjogXCI8cGF0aF9maWxlPlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicXVvdGVkTWVzc2FnZUlkXCI6IFwibWVzc2FnZSBJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAqL1xuICBjb25zdCB7XG4gICAgcGhvbmUsXG4gICAgcGF0aCxcbiAgICBmaWxlbmFtZSA9ICdWb2ljZSBBdWRpbycsXG4gICAgbWVzc2FnZSxcbiAgICBxdW90ZWRNZXNzYWdlSWQsXG4gIH0gPSByZXEuYm9keTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdHM6IGFueSA9IFtdO1xuICAgIGZvciAoY29uc3QgY29udGF0byBvZiBwaG9uZSkge1xuICAgICAgcmVzdWx0cy5wdXNoKFxuICAgICAgICBhd2FpdCByZXEuY2xpZW50LnNlbmRQdHQoXG4gICAgICAgICAgY29udGF0byxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIGZpbGVuYW1lLFxuICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgcXVvdGVkTWVzc2FnZUlkXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAwKS5qc29uKCdFcnJvciBzZW5kaW5nIG1lc3NhZ2UnKTtcbiAgICByZXR1cm5TdWNlc3MocmVzLCByZXN1bHRzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm5FcnJvcihyZXEsIHJlcywgZXJyb3IpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kVm9pY2U2NChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJNZXNzYWdlc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJwaG9uZVwiOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaXNHcm91cFwiOiB7IHR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcImJhc2U2NFB0dFwiOiB7IHR5cGU6IFwic3RyaW5nXCIgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInBob25lXCI6IFwiNTUyMTk5OTk5OTk5OVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaXNHcm91cFwiOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJhc2U2NFB0dFwiOiBcIjxiYXNlNjRfc3RyaW5nPlwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAqL1xuICBjb25zdCB7IHBob25lLCBiYXNlNjRQdHQsIHF1b3RlZE1lc3NhZ2VJZCB9ID0gcmVxLmJvZHk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHRzOiBhbnkgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNvbnRhdG8gb2YgcGhvbmUpIHtcbiAgICAgIHJlc3VsdHMucHVzaChcbiAgICAgICAgYXdhaXQgcmVxLmNsaWVudC5zZW5kUHR0RnJvbUJhc2U2NChcbiAgICAgICAgICBjb250YXRvLFxuICAgICAgICAgIGJhc2U2NFB0dCxcbiAgICAgICAgICAnVm9pY2UgQXVkaW8nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIHF1b3RlZE1lc3NhZ2VJZFxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMCkuanNvbignRXJyb3Igc2VuZGluZyBtZXNzYWdlJyk7XG4gICAgcmV0dXJuU3VjZXNzKHJlcywgcmVzdWx0cyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuRXJyb3IocmVxLCByZXMsIGVycm9yKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZExpbmtQcmV2aWV3KHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIk1lc3NhZ2VzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgXCJAY29udGVudFwiOiB7XG4gICAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInBob25lXCI6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJpc0dyb3VwXCI6IHsgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidXJsXCI6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjYXB0aW9uXCI6IHsgdHlwZTogXCJzdHJpbmdcIiB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiRGVmYXVsdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicGhvbmVcIjogXCI1NTIxOTk5OTk5OTk5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpc0dyb3VwXCI6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidXJsXCI6IFwiaHR0cDovL3d3dy5saW5rLmNvbVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FwdGlvblwiOiBcIlRleHQgZm9yIGRlc2NyaWJlIGxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgKi9cbiAgY29uc3QgeyBwaG9uZSwgdXJsLCBjYXB0aW9uIH0gPSByZXEuYm9keTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdHM6IGFueSA9IFtdO1xuICAgIGZvciAoY29uc3QgY29udGF0byBvZiBwaG9uZSkge1xuICAgICAgcmVzdWx0cy5wdXNoKFxuICAgICAgICBhd2FpdCByZXEuY2xpZW50LnNlbmRMaW5rUHJldmlldyhgJHtjb250YXRvfWAsIHVybCwgY2FwdGlvbilcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAwKS5qc29uKCdFcnJvciBzZW5kaW5nIG1lc3NhZ2UnKTtcbiAgICByZXR1cm5TdWNlc3MocmVzLCByZXN1bHRzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm5FcnJvcihyZXEsIHJlcywgZXJyb3IpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kTG9jYXRpb24ocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwicGhvbmVcIjogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcImlzR3JvdXBcIjogeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJsYXRcIjogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxuZ1wiOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGl0bGVcIjogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcImFkZHJlc3NcIjogeyB0eXBlOiBcInN0cmluZ1wiIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXhhbXBsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJEZWZhdWx0XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwaG9uZVwiOiBcIjU1MjE5OTk5OTk5OTlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlzR3JvdXBcIjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJsYXRcIjogXCItODk4OTgzMjJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImxuZ1wiOiBcIi01NDU0NTRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IFwiUmlvIGRlIEphbmVpcm9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImFkZHJlc3NcIjogXCJBdi4gTi4gUy4gZGUgQ29wYWNhYmFuYSwgMjUsIENvcGFjYWJhbmFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgKi9cbiAgY29uc3QgeyBwaG9uZSwgbGF0LCBsbmcsIHRpdGxlLCBhZGRyZXNzIH0gPSByZXEuYm9keTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdHM6IGFueSA9IFtdO1xuICAgIGZvciAoY29uc3QgY29udGF0byBvZiBwaG9uZSkge1xuICAgICAgcmVzdWx0cy5wdXNoKFxuICAgICAgICBhd2FpdCByZXEuY2xpZW50LnNlbmRMb2NhdGlvbihjb250YXRvLCB7XG4gICAgICAgICAgbGF0OiBsYXQsXG4gICAgICAgICAgbG5nOiBsbmcsXG4gICAgICAgICAgYWRkcmVzczogYWRkcmVzcyxcbiAgICAgICAgICBuYW1lOiB0aXRsZSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAwKS5qc29uKCdFcnJvciBzZW5kaW5nIG1lc3NhZ2UnKTtcbiAgICByZXR1cm5TdWNlc3MocmVzLCByZXN1bHRzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm5FcnJvcihyZXEsIHJlcywgZXJyb3IpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kQnV0dG9ucyhyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJNZXNzYWdlc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQScsXG4gICAgIH1cbiAgICAgI3N3YWdnZXIuZGVwcmVjYXRlZD10cnVlXG4gICAqL1xuICBjb25zdCB7IHBob25lLCBtZXNzYWdlLCBvcHRpb25zIH0gPSByZXEuYm9keTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdHM6IGFueSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBjb250YWN0IG9mIHBob25lKSB7XG4gICAgICByZXN1bHRzLnB1c2goYXdhaXQgcmVxLmNsaWVudC5zZW5kVGV4dChjb250YWN0LCBtZXNzYWdlLCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIHJldHVybkVycm9yKHJlcSwgcmVzLCAnRXJyb3Igc2VuZGluZyBtZXNzYWdlIHdpdGggYnV0dG9ucycpO1xuXG4gICAgcmV0dXJuU3VjZXNzKHJlcywgcGhvbmUpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybkVycm9yKHJlcSwgcmVzLCBlcnJvcik7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRMaXN0TWVzc2FnZShyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJNZXNzYWdlc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQScsXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgcGhvbmU6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICBpc0dyb3VwOiB7IHR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgc2VjdGlvbnM6IHsgdHlwZTogXCJhcnJheVwiIH0sXG4gICAgICAgICAgICAgIGJ1dHRvblRleHQ6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXhhbXBsZXM6IHtcbiAgICAgICAgICAgIFwiU2VuZCBsaXN0IG1lc3NhZ2VcIjoge1xuICAgICAgICAgICAgICB2YWx1ZTogeyBcbiAgICAgICAgICAgICAgICBwaG9uZTogJzU1MjE5OTk5OTk5OTknLFxuICAgICAgICAgICAgICAgIGlzR3JvdXA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRGVzYyBmb3IgbGlzdCcsXG4gICAgICAgICAgICAgICAgYnV0dG9uVGV4dDogJ1NlbGVjdCBhIG9wdGlvbicsXG4gICAgICAgICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdTZWN0aW9uIDEnLFxuICAgICAgICAgICAgICAgICAgICByb3dzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93SWQ6ICdteV9jdXN0b21faWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdUZXN0IDEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbiAxJyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0lkOiAnMicsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ1Rlc3QgMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uIDInLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgIH1cbiAgICovXG4gIGNvbnN0IHtcbiAgICBwaG9uZSxcbiAgICBkZXNjcmlwdGlvbiA9ICcnLFxuICAgIHNlY3Rpb25zLFxuICAgIGJ1dHRvblRleHQgPSAnU0VMRUNJT05FIFVNQSBPUMOHw4NPJyxcbiAgfSA9IHJlcS5ib2R5O1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0czogYW55ID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGNvbnRhY3Qgb2YgcGhvbmUpIHtcbiAgICAgIHJlc3VsdHMucHVzaChcbiAgICAgICAgYXdhaXQgcmVxLmNsaWVudC5zZW5kTGlzdE1lc3NhZ2UoY29udGFjdCwge1xuICAgICAgICAgIGJ1dHRvblRleHQ6IGJ1dHRvblRleHQsXG4gICAgICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxuICAgICAgICAgIHNlY3Rpb25zOiBzZWN0aW9ucyxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIHJldHVybkVycm9yKHJlcSwgcmVzLCAnRXJyb3Igc2VuZGluZyBsaXN0IGJ1dHRvbnMnKTtcblxuICAgIHJldHVyblN1Y2VzcyhyZXMsIHJlc3VsdHMpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybkVycm9yKHJlcSwgcmVzLCBlcnJvcik7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRPcmRlck1lc3NhZ2UocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgXCJAY29udGVudFwiOiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICBwaG9uZTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgIGlzR3JvdXA6IHsgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgICAgICAgICAgaXRlbXM6IHsgdHlwZTogXCJvYmplY3RcIiB9LFxuICAgICAgICAgICAgICBvcHRpb25zOiB7IHR5cGU6IFwib2JqZWN0XCIgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICBcIlNlbmQgd2l0aCBjdXN0b20gaXRlbXNcIjoge1xuICAgICAgICAgICAgICB2YWx1ZTogeyBcbiAgICAgICAgICAgICAgICBwaG9uZTogJzU1MjE5OTk5OTk5OTknLFxuICAgICAgICAgICAgICAgIGlzR3JvdXA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdjdXN0b20nLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnSXRlbSB0ZXN0JyxcbiAgICAgICAgICAgICAgICAgICAgcHJpY2U6IDEyMDAwMCxcbiAgICAgICAgICAgICAgICAgICAgcW50OiAyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2N1c3RvbScsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdJdGVtIHRlc3QgMicsXG4gICAgICAgICAgICAgICAgICAgIHByaWNlOiAxNDUwMDAsXG4gICAgICAgICAgICAgICAgICAgIHFudDogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiU2VuZCB3aXRoIHByb2R1Y3QgaXRlbXNcIjoge1xuICAgICAgICAgICAgICB2YWx1ZTogeyBcbiAgICAgICAgICAgICAgICBwaG9uZTogJzU1MjE5OTk5OTk5OTknLFxuICAgICAgICAgICAgICAgIGlzR3JvdXA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdwcm9kdWN0JyxcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICczNzg3ODc3NDQ1NycsXG4gICAgICAgICAgICAgICAgICAgIHByaWNlOiAxNDgwMDAsXG4gICAgICAgICAgICAgICAgICAgIHFudDogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiU2VuZCB3aXRoIGN1c3RvbSBpdGVtcyBhbmQgb3B0aW9uc1wiOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiB7IFxuICAgICAgICAgICAgICAgIHBob25lOiAnNTUyMTk5OTk5OTk5OScsXG4gICAgICAgICAgICAgICAgaXNHcm91cDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXRlbXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2N1c3RvbScsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdJdGVtIHRlc3QnLFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogMTIwMDAwLFxuICAgICAgICAgICAgICAgICAgICBxbnQ6IDIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgdGF4OiAxMDAwMCxcbiAgICAgICAgICAgICAgICAgIHNoaXBwaW5nOiA0MDAwLFxuICAgICAgICAgICAgICAgICAgZGlzY291bnQ6IDEwMDAwLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgfVxuICAgKi9cbiAgY29uc3QgeyBwaG9uZSwgaXRlbXMgfSA9IHJlcS5ib2R5O1xuXG4gIGNvbnN0IG9wdGlvbnMgPSByZXEuYm9keS5vcHRpb25zIHx8IHt9O1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0czogYW55ID0gW107XG4gICAgZm9yIChjb25zdCBjb250YXRvIG9mIHBob25lKSB7XG4gICAgICByZXN1bHRzLnB1c2goYXdhaXQgcmVxLmNsaWVudC5zZW5kT3JkZXJNZXNzYWdlKGNvbnRhdG8sIGl0ZW1zLCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAwKS5qc29uKCdFcnJvciBzZW5kaW5nIG9yZGVyIG1lc3NhZ2UnKTtcbiAgICByZXEuaW8uZW1pdCgnbWVuc2FnZW0tZW52aWFkYScsIHJlc3VsdHMpO1xuICAgIHJldHVyblN1Y2VzcyhyZXMsIHJlc3VsdHMpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybkVycm9yKHJlcSwgcmVzLCBlcnJvcik7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRQb2xsTWVzc2FnZShyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJNZXNzYWdlc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgXCJAY29udGVudFwiOiB7XG4gICAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0dyb3VwOiB7IHR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM6IHsgdHlwZTogXCJhcnJheVwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7IHR5cGU6IFwib2JqZWN0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXhhbXBsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJEZWZhdWx0XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBob25lOiAnNTUyMTk5OTk5OTk5OScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzR3JvdXA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnUG9sbCBuYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hvaWNlczogWydPcHRpb24gMScsICdPcHRpb24gMicsICdPcHRpb24gMyddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0YWJsZUNvdW50OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgKi9cbiAgY29uc3QgeyBwaG9uZSwgbmFtZSwgY2hvaWNlcywgb3B0aW9ucyB9ID0gcmVxLmJvZHk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHRzOiBhbnkgPSBbXTtcblxuICAgIGZvciAoY29uc3QgY29udGFjdCBvZiBwaG9uZSkge1xuICAgICAgcmVzdWx0cy5wdXNoKFxuICAgICAgICBhd2FpdCByZXEuY2xpZW50LnNlbmRQb2xsTWVzc2FnZShjb250YWN0LCBuYW1lLCBjaG9pY2VzLCBvcHRpb25zKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocmVzdWx0cy5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gcmV0dXJuRXJyb3IocmVxLCByZXMsICdFcnJvciBzZW5kaW5nIHBvbGwgbWVzc2FnZScpO1xuXG4gICAgcmV0dXJuU3VjZXNzKHJlcywgcmVzdWx0cyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuRXJyb3IocmVxLCByZXMsIGVycm9yKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZFN0YXR1c1RleHQocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiB7XG4gICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgcGhvbmU6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgICAgaXNHcm91cDogeyB0eXBlOiAnYm9vbGVhbicgfSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgICBtZXNzYWdlSWQ6IHsgdHlwZTogJ3N0cmluZycgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBbJ3Bob25lJywgJ2lzR3JvdXAnLCAnbWVzc2FnZSddXG4gICAgICAgICAgfSxcbiAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgRGVmYXVsdDoge1xuICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgIHBob25lOiAnNTUyMTk5OTk5OTk5OScsXG4gICAgICAgICAgICAgICAgaXNHcm91cDogZmFsc2UsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ1JlcGx5IHRvIG1lc3NhZ2UnLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2VJZDogJzxpZF9tZXNzYWdlPidcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICovXG4gIGNvbnN0IHsgbWVzc2FnZSB9ID0gcmVxLmJvZHk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHRzOiBhbnkgPSBbXTtcbiAgICByZXN1bHRzLnB1c2goYXdhaXQgcmVxLmNsaWVudC5zZW5kVGV4dCgnc3RhdHVzQGJyb2FkY2FzdCcsIG1lc3NhZ2UpKTtcblxuICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMCkuanNvbignRXJyb3Igc2VuZGluZyBtZXNzYWdlJyk7XG4gICAgcmV0dXJuU3VjZXNzKHJlcywgcmVzdWx0cyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuRXJyb3IocmVxLCByZXMsIGVycm9yKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVwbHlNZXNzYWdlKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIk1lc3NhZ2VzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIFwicGhvbmVcIjogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgIFwiaXNHcm91cFwiOiB7IHR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAgICAgICAgICAgIFwibWVzc2FnZVwiOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgXCJtZXNzYWdlSWRcIjogeyB0eXBlOiBcInN0cmluZ1wiIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgIFwicGhvbmVcIjogXCI1NTIxOTk5OTk5OTk5XCIsXG4gICAgICAgICAgICAgICAgXCJpc0dyb3VwXCI6IGZhbHNlLFxuICAgICAgICAgICAgICAgIFwibWVzc2FnZVwiOiBcIlJlcGx5IHRvIG1lc3NhZ2VcIixcbiAgICAgICAgICAgICAgICBcIm1lc3NhZ2VJZFwiOiBcIjxpZF9tZXNzYWdlPlwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAqL1xuICBjb25zdCB7IHBob25lLCBtZXNzYWdlLCBtZXNzYWdlSWQgfSA9IHJlcS5ib2R5O1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0czogYW55ID0gW107XG4gICAgZm9yIChjb25zdCBjb250YXRvIG9mIHBob25lKSB7XG4gICAgICByZXN1bHRzLnB1c2goYXdhaXQgcmVxLmNsaWVudC5yZXBseShjb250YXRvLCBtZXNzYWdlLCBtZXNzYWdlSWQpKTtcbiAgICB9XG5cbiAgICBpZiAocmVzdWx0cy5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDApLmpzb24oJ0Vycm9yIHNlbmRpbmcgbWVzc2FnZScpO1xuICAgIHJlcS5pby5lbWl0KCdtZW5zYWdlbS1lbnZpYWRhJywgeyBtZXNzYWdlOiBtZXNzYWdlLCB0bzogcGhvbmUgfSk7XG4gICAgcmV0dXJuU3VjZXNzKHJlcywgcmVzdWx0cyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuRXJyb3IocmVxLCByZXMsIGVycm9yKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZE1lbnRpb25lZChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJNZXNzYWdlc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgcmVxdWlyZWQ6IHRydWUsXG4gIFwiQGNvbnRlbnRcIjoge1xuICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIFwicGhvbmVcIjogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgXCJpc0dyb3VwXCI6IHsgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgICAgICBcIm1lc3NhZ2VcIjogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgXCJtZW50aW9uZWRcIjogeyB0eXBlOiBcImFycmF5XCIsIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVpcmVkOiBbXCJwaG9uZVwiLCBcIm1lc3NhZ2VcIiwgXCJtZW50aW9uZWRcIl1cbiAgICAgIH0sXG4gICAgICBleGFtcGxlczoge1xuICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICBcInBob25lXCI6IFwiNTUyMTk5OTk5OTk5OVwiLFxuICAgICAgICAgICAgXCJpc0dyb3VwXCI6IHRydWUsXG4gICAgICAgICAgICBcIm1lc3NhZ2VcIjogXCJZb3VyIHRleHQgbWVzc2FnZVwiLFxuICAgICAgICAgICAgXCJtZW50aW9uZWRcIjogW1wiQDU1NjU5MzA3NzE3MUBjLnVzXCJdXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4gICAqL1xuICBjb25zdCB7IHBob25lLCBtZXNzYWdlLCBtZW50aW9uZWQgfSA9IHJlcS5ib2R5O1xuXG4gIHRyeSB7XG4gICAgbGV0IHJlc3BvbnNlO1xuICAgIGZvciAoY29uc3QgY29udGF0byBvZiBwaG9uZSkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCByZXEuY2xpZW50LnNlbmRNZW50aW9uZWQoXG4gICAgICAgIGAke2NvbnRhdG99YCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgbWVudGlvbmVkXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuc3RhdHVzKDIwMSkuanNvbih7IHN0YXR1czogJ3N1Y2Nlc3MnLCByZXNwb25zZTogcmVzcG9uc2UgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihlcnJvcik7XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdFcnJvciBvbiBzZW5kIG1lc3NhZ2UgbWVudGlvbmVkJyxcbiAgICAgIGVycm9yOiBlcnJvcixcbiAgICB9KTtcbiAgfVxufVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRJbWFnZUFzU3RpY2tlcihyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJNZXNzYWdlc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgXCJAY29udGVudFwiOiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICBcInBob25lXCI6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICBcImlzR3JvdXBcIjogeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICAgICAgICBcInBhdGhcIjogeyB0eXBlOiBcInN0cmluZ1wiIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXF1aXJlZDogW1wicGhvbmVcIiwgXCJwYXRoXCJdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgXCJEZWZhdWx0XCI6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICBcInBob25lXCI6IFwiNTUyMTk5OTk5OTk5OVwiLFxuICAgICAgICAgICAgICAgIFwiaXNHcm91cFwiOiB0cnVlLFxuICAgICAgICAgICAgICAgIFwicGF0aFwiOiBcIjxwYXRoX2ZpbGU+XCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICovXG4gIGNvbnN0IHsgcGhvbmUsIHBhdGggfSA9IHJlcS5ib2R5O1xuXG4gIGlmICghcGF0aCAmJiAhcmVxLmZpbGUpXG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5zZW5kKHtcbiAgICAgIG1lc3NhZ2U6ICdTZW5kaW5nIHRoZSBmaWxlIGlzIG1hbmRhdG9yeScsXG4gICAgfSk7XG5cbiAgY29uc3QgcGF0aEZpbGUgPSBwYXRoIHx8IHJlcS5maWxlPy5wYXRoO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0czogYW55ID0gW107XG4gICAgZm9yIChjb25zdCBjb250YXRvIG9mIHBob25lKSB7XG4gICAgICByZXN1bHRzLnB1c2goYXdhaXQgcmVxLmNsaWVudC5zZW5kSW1hZ2VBc1N0aWNrZXIoY29udGF0bywgcGF0aEZpbGUpKTtcbiAgICB9XG5cbiAgICBpZiAocmVzdWx0cy5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDApLmpzb24oJ0Vycm9yIHNlbmRpbmcgbWVzc2FnZScpO1xuICAgIGlmIChyZXEuZmlsZSkgYXdhaXQgdW5saW5rQXN5bmMocGF0aEZpbGUpO1xuICAgIHJldHVyblN1Y2VzcyhyZXMsIHJlc3VsdHMpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybkVycm9yKHJlcSwgcmVzLCBlcnJvcik7XG4gIH1cbn1cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kSW1hZ2VBc1N0aWNrZXJHaWYocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiB7XG4gICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgcGhvbmU6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgICAgaXNHcm91cDogeyB0eXBlOiAnYm9vbGVhbicgfSxcbiAgICAgICAgICAgICAgcGF0aDogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBbJ3Bob25lJywgJ3BhdGgnXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICAnRGVmYXVsdCc6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICBwaG9uZTogJzU1MjE5OTk5OTk5OTknLFxuICAgICAgICAgICAgICAgIGlzR3JvdXA6IHRydWUsXG4gICAgICAgICAgICAgICAgcGF0aDogJzxwYXRoX2ZpbGU+JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfVxuICAgKi9cbiAgY29uc3QgeyBwaG9uZSwgcGF0aCB9ID0gcmVxLmJvZHk7XG5cbiAgaWYgKCFwYXRoICYmICFyZXEuZmlsZSlcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLnNlbmQoe1xuICAgICAgbWVzc2FnZTogJ1NlbmRpbmcgdGhlIGZpbGUgaXMgbWFuZGF0b3J5JyxcbiAgICB9KTtcblxuICBjb25zdCBwYXRoRmlsZSA9IHBhdGggfHwgcmVxLmZpbGU/LnBhdGg7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHRzOiBhbnkgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNvbnRhdG8gb2YgcGhvbmUpIHtcbiAgICAgIHJlc3VsdHMucHVzaChhd2FpdCByZXEuY2xpZW50LnNlbmRJbWFnZUFzU3RpY2tlckdpZihjb250YXRvLCBwYXRoRmlsZSkpO1xuICAgIH1cblxuICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMCkuanNvbignRXJyb3Igc2VuZGluZyBtZXNzYWdlJyk7XG4gICAgaWYgKHJlcS5maWxlKSBhd2FpdCB1bmxpbmtBc3luYyhwYXRoRmlsZSk7XG4gICAgcmV0dXJuU3VjZXNzKHJlcywgcmVzdWx0cyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuRXJyb3IocmVxLCByZXMsIGVycm9yKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQkEsSUFBQUEsVUFBQSxHQUFBQyxPQUFBLHNCQUFnRCxDQWxCaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBTUEsU0FBU0MsV0FBV0EsQ0FBQ0MsR0FBWSxFQUFFQyxHQUFhLEVBQUVDLEtBQVUsRUFBRSxDQUM1REYsR0FBRyxDQUFDRyxNQUFNLENBQUNELEtBQUssQ0FBQ0EsS0FBSyxDQUFDLENBQ3ZCRCxHQUFHLENBQUNHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLEVBQ25CRCxNQUFNLEVBQUUsT0FBTyxFQUNmRSxPQUFPLEVBQUUsNEJBQTRCLEVBQ3JDSixLQUFLLEVBQUVBLEtBQUssQ0FDZCxDQUFDLENBQUMsQ0FDSixDQUVBLGVBQWVLLFlBQVlBLENBQUNOLEdBQVEsRUFB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
|
|
1049
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnVuY3Rpb25zIiwicmVxdWlyZSIsInJldHVybkVycm9yIiwicmVxIiwicmVzIiwiZXJyb3IiLCJsb2dnZXIiLCJzdGF0dXMiLCJqc29uIiwibWVzc2FnZSIsInJldHVyblN1Y2VzcyIsImRhdGEiLCJyZXNwb25zZSIsIm1hcHBlciIsInNlbmRNZXNzYWdlIiwicGhvbmUiLCJib2R5Iiwib3B0aW9ucyIsInJlc3VsdHMiLCJjb250YXRvIiwicHVzaCIsImNsaWVudCIsInNlbmRUZXh0IiwibGVuZ3RoIiwiaW8iLCJlbWl0IiwiZWRpdE1lc3NhZ2UiLCJpZCIsIm5ld1RleHQiLCJlZGl0ZWQiLCJzZW5kRmlsZSIsInBhdGgiLCJiYXNlNjQiLCJmaWxlbmFtZSIsImNhcHRpb24iLCJxdW90ZWRNZXNzYWdlSWQiLCJmaWxlIiwic2VuZCIsInBhdGhGaWxlIiwibXNnIiwiY29udGFjdCIsInF1b3RlZE1zZyIsInVubGlua0FzeW5jIiwic2VuZFZvaWNlIiwic2VuZFB0dCIsInNlbmRWb2ljZTY0IiwiYmFzZTY0UHR0Iiwic2VuZFB0dEZyb21CYXNlNjQiLCJzZW5kTGlua1ByZXZpZXciLCJ1cmwiLCJzZW5kTG9jYXRpb24iLCJsYXQiLCJsbmciLCJ0aXRsZSIsImFkZHJlc3MiLCJuYW1lIiwic2VuZEJ1dHRvbnMiLCJzZW5kTGlzdE1lc3NhZ2UiLCJkZXNjcmlwdGlvbiIsInNlY3Rpb25zIiwiYnV0dG9uVGV4dCIsInNlbmRPcmRlck1lc3NhZ2UiLCJpdGVtcyIsInNlbmRQb2xsTWVzc2FnZSIsImNob2ljZXMiLCJzZW5kU3RhdHVzVGV4dCIsInJlcGx5TWVzc2FnZSIsIm1lc3NhZ2VJZCIsInJlcGx5IiwidG8iLCJzZW5kTWVudGlvbmVkIiwibWVudGlvbmVkIiwic2VuZEltYWdlQXNTdGlja2VyIiwic2VuZEltYWdlQXNTdGlja2VyR2lmIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyb2xsZXIvbWVzc2FnZUNvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIxIFdQUENvbm5lY3QgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBSZXF1ZXN0LCBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuXG5pbXBvcnQgeyB1bmxpbmtBc3luYyB9IGZyb20gJy4uL3V0aWwvZnVuY3Rpb25zJztcblxuZnVuY3Rpb24gcmV0dXJuRXJyb3IocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBlcnJvcjogYW55KSB7XG4gIHJlcS5sb2dnZXIuZXJyb3IoZXJyb3IpO1xuICByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgc3RhdHVzOiAnRXJyb3InLFxuICAgIG1lc3NhZ2U6ICdFcnJvIGFvIGVudmlhciBhIG1lbnNhZ2VtLicsXG4gICAgZXJyb3I6IGVycm9yLFxuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmV0dXJuU3VjZXNzKHJlczogYW55LCBkYXRhOiBhbnkpIHtcbiAgcmVzLnN0YXR1cygyMDEpLmpzb24oeyBzdGF0dXM6ICdzdWNjZXNzJywgcmVzcG9uc2U6IGRhdGEsIG1hcHBlcjogJ3JldHVybicgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kTWVzc2FnZShyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJNZXNzYWdlc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIHBob25lOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgaXNHcm91cDogeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICAgICAgICBpc05ld3NsZXR0ZXI6IHsgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgICAgICAgICAgaXNMaWQ6IHsgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgIG9wdGlvbnM6IHsgdHlwZTogXCJvYmplY3RcIiB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXhhbXBsZXM6IHtcbiAgICAgICAgICAgIFwiU2VuZCBtZXNzYWdlIHRvIGNvbnRhY3RcIjoge1xuICAgICAgICAgICAgICB2YWx1ZTogeyBcbiAgICAgICAgICAgICAgICBwaG9uZTogJzU1MjE5OTk5OTk5OTknLFxuICAgICAgICAgICAgICAgIGlzR3JvdXA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzTmV3c2xldHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNMaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdIaSBmcm9tIFdQUENvbm5lY3QnLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJTZW5kIG1lc3NhZ2Ugd2l0aCByZXBseVwiOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiB7IFxuICAgICAgICAgICAgICAgIHBob25lOiAnNTUyMTk5OTk5OTk5OScsXG4gICAgICAgICAgICAgICAgaXNHcm91cDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNOZXdzbGV0dGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc0xpZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ0hpIGZyb20gV1BQQ29ubmVjdCB3aXRoIHJlcGx5JyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBxdW90ZWRNc2c6ICd0cnVlXy4uLkBjLnVzXzNFQjAxREU2NUFDQzZfb3V0JyxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIlNlbmQgbWVzc2FnZSB0byBncm91cFwiOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgcGhvbmU6ICc4ODY1NjIzMjE1MjQ0NTc4JyxcbiAgICAgICAgICAgICAgICBpc0dyb3VwOiB0cnVlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdIaSBmcm9tIFdQUENvbm5lY3QnLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICB9XG4gICAqL1xuICBjb25zdCB7IHBob25lLCBtZXNzYWdlIH0gPSByZXEuYm9keTtcblxuICBjb25zdCBvcHRpb25zID0gcmVxLmJvZHkub3B0aW9ucyB8fCB7fTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdHM6IGFueSA9IFtdO1xuICAgIGZvciAoY29uc3QgY29udGF0byBvZiBwaG9uZSkge1xuICAgICAgcmVzdWx0cy5wdXNoKGF3YWl0IHJlcS5jbGllbnQuc2VuZFRleHQoY29udGF0bywgbWVzc2FnZSwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMCkuanNvbignRXJyb3Igc2VuZGluZyBtZXNzYWdlJyk7XG4gICAgcmVxLmlvLmVtaXQoJ21lbnNhZ2VtLWVudmlhZGEnLCByZXN1bHRzKTtcbiAgICByZXR1cm5TdWNlc3MocmVzLCByZXN1bHRzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm5FcnJvcihyZXEsIHJlcywgZXJyb3IpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlZGl0TWVzc2FnZShyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJNZXNzYWdlc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIGlkOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgbmV3VGV4dDogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgIG9wdGlvbnM6IHsgdHlwZTogXCJvYmplY3RcIiB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXhhbXBsZXM6IHtcbiAgICAgICAgICAgIFwiRWRpdCBhIG1lc3NhZ2VcIjoge1xuICAgICAgICAgICAgICB2YWx1ZTogeyBcbiAgICAgICAgICAgICAgICBpZDogJ3RydWVfNTUyMTk5OTk5OTk5OUBjLnVzXzNFQjA0RkNBQTE1MjdFQjZEOURFQzgnLFxuICAgICAgICAgICAgICAgIG5ld1RleHQ6ICdOZXcgdGV4dCBmb3IgbWVzc2FnZSdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgfVxuICAgKi9cbiAgY29uc3QgeyBpZCwgbmV3VGV4dCB9ID0gcmVxLmJvZHk7XG5cbiAgY29uc3Qgb3B0aW9ucyA9IHJlcS5ib2R5Lm9wdGlvbnMgfHwge307XG4gIHRyeSB7XG4gICAgY29uc3QgZWRpdGVkID0gYXdhaXQgKHJlcS5jbGllbnQgYXMgYW55KS5lZGl0TWVzc2FnZShpZCwgbmV3VGV4dCwgb3B0aW9ucyk7XG5cbiAgICByZXEuaW8uZW1pdCgnZWRpdGVkLW1lc3NhZ2UnLCBlZGl0ZWQpO1xuICAgIHJldHVyblN1Y2VzcyhyZXMsIGVkaXRlZCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuRXJyb3IocmVxLCByZXMsIGVycm9yKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZEZpbGUocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwicGhvbmVcIjogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIFwiaXNHcm91cFwiOiB7IHR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAgICAgICAgICAgICAgICAgIFwiaXNOZXdzbGV0dGVyXCI6IHsgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgXCJpc0xpZFwiOiB7IHR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAgICAgICAgICAgICAgICAgIFwiZmlsZW5hbWVcIjogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIFwiY2FwdGlvblwiOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgXCJiYXNlNjRcIjogeyB0eXBlOiBcInN0cmluZ1wiIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXhhbXBsZXM6IHtcbiAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJwaG9uZVwiOiBcIjU1MjE5OTk5OTk5OTlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaXNHcm91cFwiOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaXNOZXdzbGV0dGVyXCI6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJpc0xpZFwiOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZmlsZW5hbWVcIjogXCJmaWxlIG5hbWUgbG9sXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImNhcHRpb25cIjogXCJjYXB0aW9uIGZvciBteSBmaWxlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImJhc2U2NFwiOiBcIjxiYXNlNjQ+IHN0cmluZ1wiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAqL1xuICBjb25zdCB7XG4gICAgcGhvbmUsXG4gICAgcGF0aCxcbiAgICBiYXNlNjQsXG4gICAgZmlsZW5hbWUgPSAnZmlsZScsXG4gICAgbWVzc2FnZSxcbiAgICBjYXB0aW9uLFxuICAgIHF1b3RlZE1lc3NhZ2VJZCxcbiAgfSA9IHJlcS5ib2R5O1xuXG4gIGNvbnN0IG9wdGlvbnMgPSByZXEuYm9keS5vcHRpb25zIHx8IHt9O1xuXG4gIGlmICghcGF0aCAmJiAhcmVxLmZpbGUgJiYgIWJhc2U2NClcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLnNlbmQoe1xuICAgICAgbWVzc2FnZTogJ1NlbmRpbmcgdGhlIGZpbGUgaXMgbWFuZGF0b3J5JyxcbiAgICB9KTtcblxuICBjb25zdCBwYXRoRmlsZSA9IHBhdGggfHwgYmFzZTY0IHx8IHJlcS5maWxlPy5wYXRoO1xuICBjb25zdCBtc2cgPSBtZXNzYWdlIHx8IGNhcHRpb247XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHRzOiBhbnkgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNvbnRhY3Qgb2YgcGhvbmUpIHtcbiAgICAgIHJlc3VsdHMucHVzaChcbiAgICAgICAgYXdhaXQgcmVxLmNsaWVudC5zZW5kRmlsZShjb250YWN0LCBwYXRoRmlsZSwge1xuICAgICAgICAgIGZpbGVuYW1lOiBmaWxlbmFtZSxcbiAgICAgICAgICBjYXB0aW9uOiBtc2csXG4gICAgICAgICAgcXVvdGVkTXNnOiBxdW90ZWRNZXNzYWdlSWQsXG4gICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAwKS5qc29uKCdFcnJvciBzZW5kaW5nIG1lc3NhZ2UnKTtcbiAgICBpZiAocmVxLmZpbGUpIGF3YWl0IHVubGlua0FzeW5jKHBhdGhGaWxlKTtcbiAgICByZXR1cm5TdWNlc3MocmVzLCByZXN1bHRzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm5FcnJvcihyZXEsIHJlcywgZXJyb3IpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kVm9pY2UocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwicGhvbmVcIjogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcImlzR3JvdXBcIjogeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJwYXRoXCI6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJxdW90ZWRNZXNzYWdlSWRcIjogeyB0eXBlOiBcInN0cmluZ1wiIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXhhbXBsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJEZWZhdWx0XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwaG9uZVwiOiBcIjU1MjE5OTk5OTk5OTlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlzR3JvdXBcIjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwYXRoXCI6IFwiPHBhdGhfZmlsZT5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInF1b3RlZE1lc3NhZ2VJZFwiOiBcIm1lc3NhZ2UgSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgKi9cbiAgY29uc3Qge1xuICAgIHBob25lLFxuICAgIHBhdGgsXG4gICAgZmlsZW5hbWUgPSAnVm9pY2UgQXVkaW8nLFxuICAgIG1lc3NhZ2UsXG4gICAgcXVvdGVkTWVzc2FnZUlkLFxuICB9ID0gcmVxLmJvZHk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHRzOiBhbnkgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNvbnRhdG8gb2YgcGhvbmUpIHtcbiAgICAgIHJlc3VsdHMucHVzaChcbiAgICAgICAgYXdhaXQgcmVxLmNsaWVudC5zZW5kUHR0KFxuICAgICAgICAgIGNvbnRhdG8sXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBmaWxlbmFtZSxcbiAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgIHF1b3RlZE1lc3NhZ2VJZFxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMCkuanNvbignRXJyb3Igc2VuZGluZyBtZXNzYWdlJyk7XG4gICAgcmV0dXJuU3VjZXNzKHJlcywgcmVzdWx0cyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuRXJyb3IocmVxLCByZXMsIGVycm9yKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZFZvaWNlNjQocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwicGhvbmVcIjogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcImlzR3JvdXBcIjogeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJiYXNlNjRQdHRcIjogeyB0eXBlOiBcInN0cmluZ1wiIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXhhbXBsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJEZWZhdWx0XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwaG9uZVwiOiBcIjU1MjE5OTk5OTk5OTlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlzR3JvdXBcIjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiYXNlNjRQdHRcIjogXCI8YmFzZTY0X3N0cmluZz5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgKi9cbiAgY29uc3QgeyBwaG9uZSwgYmFzZTY0UHR0LCBxdW90ZWRNZXNzYWdlSWQgfSA9IHJlcS5ib2R5O1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0czogYW55ID0gW107XG4gICAgZm9yIChjb25zdCBjb250YXRvIG9mIHBob25lKSB7XG4gICAgICByZXN1bHRzLnB1c2goXG4gICAgICAgIGF3YWl0IHJlcS5jbGllbnQuc2VuZFB0dEZyb21CYXNlNjQoXG4gICAgICAgICAgY29udGF0byxcbiAgICAgICAgICBiYXNlNjRQdHQsXG4gICAgICAgICAgJ1ZvaWNlIEF1ZGlvJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBxdW90ZWRNZXNzYWdlSWRcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocmVzdWx0cy5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDApLmpzb24oJ0Vycm9yIHNlbmRpbmcgbWVzc2FnZScpO1xuICAgIHJldHVyblN1Y2VzcyhyZXMsIHJlc3VsdHMpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybkVycm9yKHJlcSwgcmVzLCBlcnJvcik7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRMaW5rUHJldmlldyhyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJNZXNzYWdlc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJwaG9uZVwiOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaXNHcm91cFwiOiB7IHR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcInVybFwiOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FwdGlvblwiOiB7IHR5cGU6IFwic3RyaW5nXCIgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInBob25lXCI6IFwiNTUyMTk5OTk5OTk5OVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaXNHcm91cFwiOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInVybFwiOiBcImh0dHA6Ly93d3cubGluay5jb21cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNhcHRpb25cIjogXCJUZXh0IGZvciBkZXNjcmliZSBsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICovXG4gIGNvbnN0IHsgcGhvbmUsIHVybCwgY2FwdGlvbiB9ID0gcmVxLmJvZHk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHRzOiBhbnkgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNvbnRhdG8gb2YgcGhvbmUpIHtcbiAgICAgIHJlc3VsdHMucHVzaChcbiAgICAgICAgYXdhaXQgcmVxLmNsaWVudC5zZW5kTGlua1ByZXZpZXcoYCR7Y29udGF0b31gLCB1cmwsIGNhcHRpb24pXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMCkuanNvbignRXJyb3Igc2VuZGluZyBtZXNzYWdlJyk7XG4gICAgcmV0dXJuU3VjZXNzKHJlcywgcmVzdWx0cyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuRXJyb3IocmVxLCByZXMsIGVycm9yKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZExvY2F0aW9uKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIk1lc3NhZ2VzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgXCJAY29udGVudFwiOiB7XG4gICAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInBob25lXCI6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJpc0dyb3VwXCI6IHsgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibGF0XCI6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJsbmdcIjogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcInRpdGxlXCI6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhZGRyZXNzXCI6IHsgdHlwZTogXCJzdHJpbmdcIiB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiRGVmYXVsdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicGhvbmVcIjogXCI1NTIxOTk5OTk5OTk5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpc0dyb3VwXCI6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibGF0XCI6IFwiLTg5ODk4MzIyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJsbmdcIjogXCItNTQ1NDU0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aXRsZVwiOiBcIlJpbyBkZSBKYW5laXJvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJhZGRyZXNzXCI6IFwiQXYuIE4uIFMuIGRlIENvcGFjYWJhbmEsIDI1LCBDb3BhY2FiYW5hXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICovXG4gIGNvbnN0IHsgcGhvbmUsIGxhdCwgbG5nLCB0aXRsZSwgYWRkcmVzcyB9ID0gcmVxLmJvZHk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHRzOiBhbnkgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNvbnRhdG8gb2YgcGhvbmUpIHtcbiAgICAgIHJlc3VsdHMucHVzaChcbiAgICAgICAgYXdhaXQgcmVxLmNsaWVudC5zZW5kTG9jYXRpb24oY29udGF0bywge1xuICAgICAgICAgIGxhdDogbGF0LFxuICAgICAgICAgIGxuZzogbG5nLFxuICAgICAgICAgIGFkZHJlc3M6IGFkZHJlc3MsXG4gICAgICAgICAgbmFtZTogdGl0bGUsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMCkuanNvbignRXJyb3Igc2VuZGluZyBtZXNzYWdlJyk7XG4gICAgcmV0dXJuU3VjZXNzKHJlcywgcmVzdWx0cyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuRXJyb3IocmVxLCByZXMsIGVycm9yKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZEJ1dHRvbnMocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnLFxuICAgICB9XG4gICAgICNzd2FnZ2VyLmRlcHJlY2F0ZWQ9dHJ1ZVxuICAgKi9cbiAgY29uc3QgeyBwaG9uZSwgbWVzc2FnZSwgb3B0aW9ucyB9ID0gcmVxLmJvZHk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHRzOiBhbnkgPSBbXTtcblxuICAgIGZvciAoY29uc3QgY29udGFjdCBvZiBwaG9uZSkge1xuICAgICAgcmVzdWx0cy5wdXNoKGF3YWl0IHJlcS5jbGllbnQuc2VuZFRleHQoY29udGFjdCwgbWVzc2FnZSwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHJldHVybiByZXR1cm5FcnJvcihyZXEsIHJlcywgJ0Vycm9yIHNlbmRpbmcgbWVzc2FnZSB3aXRoIGJ1dHRvbnMnKTtcblxuICAgIHJldHVyblN1Y2VzcyhyZXMsIHBob25lKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm5FcnJvcihyZXEsIHJlcywgZXJyb3IpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kTGlzdE1lc3NhZ2UocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnLFxuICAgICB9XG4gICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIHBob25lOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgaXNHcm91cDogeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgIHNlY3Rpb25zOiB7IHR5cGU6IFwiYXJyYXlcIiB9LFxuICAgICAgICAgICAgICBidXR0b25UZXh0OiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICBcIlNlbmQgbGlzdCBtZXNzYWdlXCI6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IHsgXG4gICAgICAgICAgICAgICAgcGhvbmU6ICc1NTIxOTk5OTk5OTk5JyxcbiAgICAgICAgICAgICAgICBpc0dyb3VwOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0Rlc2MgZm9yIGxpc3QnLFxuICAgICAgICAgICAgICAgIGJ1dHRvblRleHQ6ICdTZWxlY3QgYSBvcHRpb24nLFxuICAgICAgICAgICAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnU2VjdGlvbiAxJyxcbiAgICAgICAgICAgICAgICAgICAgcm93czogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0lkOiAnbXlfY3VzdG9tX2lkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnVGVzdCAxJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24gMScsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dJZDogJzInLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdUZXN0IDInLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbiAyJyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICB9XG4gICAqL1xuICBjb25zdCB7XG4gICAgcGhvbmUsXG4gICAgZGVzY3JpcHRpb24gPSAnJyxcbiAgICBzZWN0aW9ucyxcbiAgICBidXR0b25UZXh0ID0gJ1NFTEVDSU9ORSBVTUEgT1DDh8ODTycsXG4gIH0gPSByZXEuYm9keTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdHM6IGFueSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBjb250YWN0IG9mIHBob25lKSB7XG4gICAgICByZXN1bHRzLnB1c2goXG4gICAgICAgIGF3YWl0IHJlcS5jbGllbnQuc2VuZExpc3RNZXNzYWdlKGNvbnRhY3QsIHtcbiAgICAgICAgICBidXR0b25UZXh0OiBidXR0b25UZXh0LFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgICAgICAgICBzZWN0aW9uczogc2VjdGlvbnMsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHJldHVybiByZXR1cm5FcnJvcihyZXEsIHJlcywgJ0Vycm9yIHNlbmRpbmcgbGlzdCBidXR0b25zJyk7XG5cbiAgICByZXR1cm5TdWNlc3MocmVzLCByZXN1bHRzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm5FcnJvcihyZXEsIHJlcywgZXJyb3IpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kT3JkZXJNZXNzYWdlKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIk1lc3NhZ2VzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgcGhvbmU6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICBpc0dyb3VwOiB7IHR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6IFwib2JqZWN0XCIgfSxcbiAgICAgICAgICAgICAgb3B0aW9uczogeyB0eXBlOiBcIm9iamVjdFwiIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgXCJTZW5kIHdpdGggY3VzdG9tIGl0ZW1zXCI6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IHsgXG4gICAgICAgICAgICAgICAgcGhvbmU6ICc1NTIxOTk5OTk5OTk5JyxcbiAgICAgICAgICAgICAgICBpc0dyb3VwOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpdGVtczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnY3VzdG9tJyxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0l0ZW0gdGVzdCcsXG4gICAgICAgICAgICAgICAgICAgIHByaWNlOiAxMjAwMDAsXG4gICAgICAgICAgICAgICAgICAgIHFudDogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdjdXN0b20nLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnSXRlbSB0ZXN0IDInLFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogMTQ1MDAwLFxuICAgICAgICAgICAgICAgICAgICBxbnQ6IDIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIlNlbmQgd2l0aCBwcm9kdWN0IGl0ZW1zXCI6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IHsgXG4gICAgICAgICAgICAgICAgcGhvbmU6ICc1NTIxOTk5OTk5OTk5JyxcbiAgICAgICAgICAgICAgICBpc0dyb3VwOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpdGVtczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAncHJvZHVjdCcsXG4gICAgICAgICAgICAgICAgICAgIGlkOiAnMzc4Nzg3NzQ0NTcnLFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogMTQ4MDAwLFxuICAgICAgICAgICAgICAgICAgICBxbnQ6IDIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIlNlbmQgd2l0aCBjdXN0b20gaXRlbXMgYW5kIG9wdGlvbnNcIjoge1xuICAgICAgICAgICAgICB2YWx1ZTogeyBcbiAgICAgICAgICAgICAgICBwaG9uZTogJzU1MjE5OTk5OTk5OTknLFxuICAgICAgICAgICAgICAgIGlzR3JvdXA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdjdXN0b20nLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnSXRlbSB0ZXN0JyxcbiAgICAgICAgICAgICAgICAgICAgcHJpY2U6IDEyMDAwMCxcbiAgICAgICAgICAgICAgICAgICAgcW50OiAyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIHRheDogMTAwMDAsXG4gICAgICAgICAgICAgICAgICBzaGlwcGluZzogNDAwMCxcbiAgICAgICAgICAgICAgICAgIGRpc2NvdW50OiAxMDAwMCxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgIH1cbiAgICovXG4gIGNvbnN0IHsgcGhvbmUsIGl0ZW1zIH0gPSByZXEuYm9keTtcblxuICBjb25zdCBvcHRpb25zID0gcmVxLmJvZHkub3B0aW9ucyB8fCB7fTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdHM6IGFueSA9IFtdO1xuICAgIGZvciAoY29uc3QgY29udGF0byBvZiBwaG9uZSkge1xuICAgICAgcmVzdWx0cy5wdXNoKGF3YWl0IHJlcS5jbGllbnQuc2VuZE9yZGVyTWVzc2FnZShjb250YXRvLCBpdGVtcywgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMCkuanNvbignRXJyb3Igc2VuZGluZyBvcmRlciBtZXNzYWdlJyk7XG4gICAgcmVxLmlvLmVtaXQoJ21lbnNhZ2VtLWVudmlhZGEnLCByZXN1bHRzKTtcbiAgICByZXR1cm5TdWNlc3MocmVzLCByZXN1bHRzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm5FcnJvcihyZXEsIHJlcywgZXJyb3IpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kUG9sbE1lc3NhZ2UocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmU6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNHcm91cDogeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzOiB7IHR5cGU6IFwiYXJyYXlcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogeyB0eXBlOiBcIm9iamVjdFwiIH0sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiRGVmYXVsdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTogJzU1MjE5OTk5OTk5OTknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc0dyb3VwOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1BvbGwgbmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM6IFsnT3B0aW9uIDEnLCAnT3B0aW9uIDInLCAnT3B0aW9uIDMnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGFibGVDb3VudDogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICovXG4gIGNvbnN0IHsgcGhvbmUsIG5hbWUsIGNob2ljZXMsIG9wdGlvbnMgfSA9IHJlcS5ib2R5O1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0czogYW55ID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGNvbnRhY3Qgb2YgcGhvbmUpIHtcbiAgICAgIHJlc3VsdHMucHVzaChcbiAgICAgICAgYXdhaXQgcmVxLmNsaWVudC5zZW5kUG9sbE1lc3NhZ2UoY29udGFjdCwgbmFtZSwgY2hvaWNlcywgb3B0aW9ucylcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIHJldHVybkVycm9yKHJlcSwgcmVzLCAnRXJyb3Igc2VuZGluZyBwb2xsIG1lc3NhZ2UnKTtcblxuICAgIHJldHVyblN1Y2VzcyhyZXMsIHJlc3VsdHMpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybkVycm9yKHJlcSwgcmVzLCBlcnJvcik7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRTdGF0dXNUZXh0KHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIk1lc3NhZ2VzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBjb250ZW50OiB7XG4gICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzoge1xuICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIHBob25lOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICAgIGlzR3JvdXA6IHsgdHlwZTogJ2Jvb2xlYW4nIH0sXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgICAgbWVzc2FnZUlkOiB7IHR5cGU6ICdzdHJpbmcnIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXF1aXJlZDogWydwaG9uZScsICdpc0dyb3VwJywgJ21lc3NhZ2UnXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXhhbXBsZXM6IHtcbiAgICAgICAgICAgIERlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICBwaG9uZTogJzU1MjE5OTk5OTk5OTknLFxuICAgICAgICAgICAgICAgIGlzR3JvdXA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdSZXBseSB0byBtZXNzYWdlJyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlSWQ6ICc8aWRfbWVzc2FnZT4nXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAqL1xuICBjb25zdCB7IG1lc3NhZ2UgfSA9IHJlcS5ib2R5O1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0czogYW55ID0gW107XG4gICAgcmVzdWx0cy5wdXNoKGF3YWl0IHJlcS5jbGllbnQuc2VuZFRleHQoJ3N0YXR1c0Bicm9hZGNhc3QnLCBtZXNzYWdlKSk7XG5cbiAgICBpZiAocmVzdWx0cy5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDApLmpzb24oJ0Vycm9yIHNlbmRpbmcgbWVzc2FnZScpO1xuICAgIHJldHVyblN1Y2VzcyhyZXMsIHJlc3VsdHMpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybkVycm9yKHJlcSwgcmVzLCBlcnJvcik7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlcGx5TWVzc2FnZShyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJNZXNzYWdlc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgXCJAY29udGVudFwiOiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICBcInBob25lXCI6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICBcImlzR3JvdXBcIjogeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICAgICAgICBcIm1lc3NhZ2VcIjogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgIFwibWVzc2FnZUlkXCI6IHsgdHlwZTogXCJzdHJpbmdcIiB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBleGFtcGxlczoge1xuICAgICAgICAgICAgXCJEZWZhdWx0XCI6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICBcInBob25lXCI6IFwiNTUyMTk5OTk5OTk5OVwiLFxuICAgICAgICAgICAgICAgIFwiaXNHcm91cFwiOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBcIm1lc3NhZ2VcIjogXCJSZXBseSB0byBtZXNzYWdlXCIsXG4gICAgICAgICAgICAgICAgXCJtZXNzYWdlSWRcIjogXCI8aWRfbWVzc2FnZT5cIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgKi9cbiAgY29uc3QgeyBwaG9uZSwgbWVzc2FnZSwgbWVzc2FnZUlkIH0gPSByZXEuYm9keTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdHM6IGFueSA9IFtdO1xuICAgIGZvciAoY29uc3QgY29udGF0byBvZiBwaG9uZSkge1xuICAgICAgcmVzdWx0cy5wdXNoKGF3YWl0IHJlcS5jbGllbnQucmVwbHkoY29udGF0bywgbWVzc2FnZSwgbWVzc2FnZUlkKSk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAwKS5qc29uKCdFcnJvciBzZW5kaW5nIG1lc3NhZ2UnKTtcbiAgICByZXEuaW8uZW1pdCgnbWVuc2FnZW0tZW52aWFkYScsIHsgbWVzc2FnZTogbWVzc2FnZSwgdG86IHBob25lIH0pO1xuICAgIHJldHVyblN1Y2VzcyhyZXMsIHJlc3VsdHMpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybkVycm9yKHJlcSwgcmVzLCBlcnJvcik7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRNZW50aW9uZWQocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gIHJlcXVpcmVkOiB0cnVlLFxuICBcIkBjb250ZW50XCI6IHtcbiAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBcInBob25lXCI6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgIFwiaXNHcm91cFwiOiB7IHR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAgICAgICAgXCJtZXNzYWdlXCI6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgIFwibWVudGlvbmVkXCI6IHsgdHlwZTogXCJhcnJheVwiLCBpdGVtczogeyB0eXBlOiBcInN0cmluZ1wiIH0gfVxuICAgICAgICB9LFxuICAgICAgICByZXF1aXJlZDogW1wicGhvbmVcIiwgXCJtZXNzYWdlXCIsIFwibWVudGlvbmVkXCJdXG4gICAgICB9LFxuICAgICAgZXhhbXBsZXM6IHtcbiAgICAgICAgXCJEZWZhdWx0XCI6IHtcbiAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgXCJwaG9uZVwiOiBcImdyb3VwSWRAZy51c1wiLFxuICAgICAgICAgICAgXCJpc0dyb3VwXCI6IHRydWUsXG4gICAgICAgICAgICBcIm1lc3NhZ2VcIjogXCJZb3VyIHRleHQgbWVzc2FnZVwiLFxuICAgICAgICAgICAgXCJtZW50aW9uZWRcIjogW1wiNTU2NTkzMDc3MTcxQGMudXNcIl1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiAgICovXG4gIGNvbnN0IHsgcGhvbmUsIG1lc3NhZ2UsIG1lbnRpb25lZCB9ID0gcmVxLmJvZHk7XG5cbiAgdHJ5IHtcbiAgICBsZXQgcmVzcG9uc2U7XG4gICAgZm9yIChjb25zdCBjb250YXRvIG9mIHBob25lKSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IHJlcS5jbGllbnQuc2VuZE1lbnRpb25lZChcbiAgICAgICAgYCR7Y29udGF0b31gLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBtZW50aW9uZWRcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAxKS5qc29uKHsgc3RhdHVzOiAnc3VjY2VzcycsIHJlc3BvbnNlOiByZXNwb25zZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXEubG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIHNlbmQgbWVzc2FnZSBtZW50aW9uZWQnLFxuICAgICAgZXJyb3I6IGVycm9yLFxuICAgIH0pO1xuICB9XG59XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZEltYWdlQXNTdGlja2VyKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIk1lc3NhZ2VzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIFwicGhvbmVcIjogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgIFwiaXNHcm91cFwiOiB7IHR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAgICAgICAgICAgIFwicGF0aFwiOiB7IHR5cGU6IFwic3RyaW5nXCIgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBbXCJwaG9uZVwiLCBcInBhdGhcIl1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGV4YW1wbGVzOiB7XG4gICAgICAgICAgICBcIkRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgIFwicGhvbmVcIjogXCI1NTIxOTk5OTk5OTk5XCIsXG4gICAgICAgICAgICAgICAgXCJpc0dyb3VwXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgXCJwYXRoXCI6IFwiPHBhdGhfZmlsZT5cIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgKi9cbiAgY29uc3QgeyBwaG9uZSwgcGF0aCB9ID0gcmVxLmJvZHk7XG5cbiAgaWYgKCFwYXRoICYmICFyZXEuZmlsZSlcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLnNlbmQoe1xuICAgICAgbWVzc2FnZTogJ1NlbmRpbmcgdGhlIGZpbGUgaXMgbWFuZGF0b3J5JyxcbiAgICB9KTtcblxuICBjb25zdCBwYXRoRmlsZSA9IHBhdGggfHwgcmVxLmZpbGU/LnBhdGg7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHRzOiBhbnkgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNvbnRhdG8gb2YgcGhvbmUpIHtcbiAgICAgIHJlc3VsdHMucHVzaChhd2FpdCByZXEuY2xpZW50LnNlbmRJbWFnZUFzU3RpY2tlcihjb250YXRvLCBwYXRoRmlsZSkpO1xuICAgIH1cblxuICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMCkuanNvbignRXJyb3Igc2VuZGluZyBtZXNzYWdlJyk7XG4gICAgaWYgKHJlcS5maWxlKSBhd2FpdCB1bmxpbmtBc3luYyhwYXRoRmlsZSk7XG4gICAgcmV0dXJuU3VjZXNzKHJlcywgcmVzdWx0cyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuRXJyb3IocmVxLCByZXMsIGVycm9yKTtcbiAgfVxufVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRJbWFnZUFzU3RpY2tlckdpZihyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJNZXNzYWdlc1wiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgY29udGVudDoge1xuICAgICAgICAnYXBwbGljYXRpb24vanNvbic6IHtcbiAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICBwaG9uZTogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgICBpc0dyb3VwOiB7IHR5cGU6ICdib29sZWFuJyB9LFxuICAgICAgICAgICAgICBwYXRoOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IFsncGhvbmUnLCAncGF0aCddLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXhhbXBsZXM6IHtcbiAgICAgICAgICAgICdEZWZhdWx0Jzoge1xuICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgIHBob25lOiAnNTUyMTk5OTk5OTk5OScsXG4gICAgICAgICAgICAgICAgaXNHcm91cDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwYXRoOiAnPHBhdGhfZmlsZT4nLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG4gICAqL1xuICBjb25zdCB7IHBob25lLCBwYXRoIH0gPSByZXEuYm9keTtcblxuICBpZiAoIXBhdGggJiYgIXJlcS5maWxlKVxuICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuc2VuZCh7XG4gICAgICBtZXNzYWdlOiAnU2VuZGluZyB0aGUgZmlsZSBpcyBtYW5kYXRvcnknLFxuICAgIH0pO1xuXG4gIGNvbnN0IHBhdGhGaWxlID0gcGF0aCB8fCByZXEuZmlsZT8ucGF0aDtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdHM6IGFueSA9IFtdO1xuICAgIGZvciAoY29uc3QgY29udGF0byBvZiBwaG9uZSkge1xuICAgICAgcmVzdWx0cy5wdXNoKGF3YWl0IHJlcS5jbGllbnQuc2VuZEltYWdlQXNTdGlja2VyR2lmKGNvbnRhdG8sIHBhdGhGaWxlKSk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAwKS5qc29uKCdFcnJvciBzZW5kaW5nIG1lc3NhZ2UnKTtcbiAgICBpZiAocmVxLmZpbGUpIGF3YWl0IHVubGlua0FzeW5jKHBhdGhGaWxlKTtcbiAgICByZXR1cm5TdWNlc3MocmVzLCByZXN1bHRzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm5FcnJvcihyZXEsIHJlcywgZXJyb3IpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUEsc0JBQWdELENBbEJoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FNQSxTQUFTQyxXQUFXQSxDQUFDQyxHQUFZLEVBQUVDLEdBQWEsRUFBRUMsS0FBVSxFQUFFLENBQzVERixHQUFHLENBQUNHLE1B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
|
|
@@ -511,14 +511,21 @@ async function getQrCode(req, res) {
|
|
|
511
511
|
*/
|
|
512
512
|
try {
|
|
513
513
|
if (req?.client?.urlcode) {
|
|
514
|
+
// We add options to generate the QR code in higher resolution
|
|
515
|
+
// The /qrcode-session request will now return a readable qrcode.
|
|
516
|
+
const qrOptions = {
|
|
517
|
+
errorCorrectionLevel: 'M',
|
|
518
|
+
type: 'image/png',
|
|
519
|
+
scale: 5,
|
|
520
|
+
width: 500
|
|
521
|
+
};
|
|
514
522
|
const qr = req.client.urlcode ?
|
|
515
|
-
await _qrcode.default.toDataURL(req.client.urlcode) :
|
|
523
|
+
await _qrcode.default.toDataURL(req.client.urlcode, qrOptions) :
|
|
516
524
|
null;
|
|
517
525
|
const img = Buffer.from(
|
|
518
526
|
qr.replace(/^data:image\/(png|jpeg|jpg);base64,/, ''),
|
|
519
527
|
'base64'
|
|
520
528
|
);
|
|
521
|
-
|
|
522
529
|
res.writeHead(200, {
|
|
523
530
|
'Content-Type': 'image/png',
|
|
524
531
|
'Content-Length': img.length
|
|
@@ -729,4 +736,4 @@ async function editBusinessProfile(req, res) {
|
|
|
729
736
|
});
|
|
730
737
|
}
|
|
731
738
|
}
|
|
732
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9taW1lVHlwZXMiLCJfcXJjb2RlIiwiX3BhY2thZ2UiLCJfY29uZmlnIiwiX2NyZWF0ZVNlc3Npb25VdGlsIiwiX2Z1bmN0aW9ucyIsIl9nZXRBbGxUb2tlbnMiLCJfc2Vzc2lvblV0aWwiLCJTZXNzaW9uVXRpbCIsIkNyZWF0ZVNlc3Npb25VdGlsIiwiZG93bmxvYWRGaWxlRnVuY3Rpb24iLCJtZXNzYWdlIiwiY2xpZW50IiwibG9nZ2VyIiwiYnVmZmVyIiwiZGVjcnlwdEZpbGUiLCJmaWxlbmFtZSIsInQiLCJmcyIsImV4aXN0c1N5bmMiLCJyZXN1bHQiLCJ0eXBlIiwibWltZSIsImV4dGVuc2lvbiIsIm1pbWV0eXBlIiwid3JpdGVGaWxlIiwiZXJyIiwiZXJyb3IiLCJlIiwid2FybiIsImRvd25sb2FkTWVkaWEiLCJkb3dubG9hZCIsInBhdGgiLCJyZXBsYWNlIiwic3RhcnRBbGxTZXNzaW9ucyIsInJlcSIsInJlcyIsInNlY3JldGtleSIsInBhcmFtcyIsImF1dGhvcml6YXRpb24iLCJ0b2tlbiIsImhlYWRlcnMiLCJ0b2tlbkRlY3J5cHQiLCJ1bmRlZmluZWQiLCJzcGxpdCIsImFsbFNlc3Npb25zIiwiZ2V0QWxsVG9rZW5zIiwic2VydmVyT3B0aW9ucyIsInNlY3JldEtleSIsInN0YXR1cyIsImpzb24iLCJyZXNwb25zZSIsIm1hcCIsInNlc3Npb24iLCJ1dGlsIiwib3BlbmRhdGEiLCJzaG93QWxsU2Vzc2lvbnMiLCJhcnIiLCJPYmplY3QiLCJrZXlzIiwiY2xpZW50c0FycmF5IiwiZm9yRWFjaCIsIml0ZW0iLCJwdXNoIiwic3RhcnRTZXNzaW9uIiwid2FpdFFyQ29kZSIsImJvZHkiLCJnZXRTZXNzaW9uU3RhdGUiLCJjbG9zZVNlc3Npb24iLCJjbG9zZSIsImlvIiwiZW1pdCIsImNhbGxXZWJIb29rIiwiY29ubmVjdGVkIiwibG9nT3V0U2Vzc2lvbiIsImxvZ291dCIsImRlbGV0ZVNlc3Npb25PbkFycmF5Iiwic2V0VGltZW91dCIsInBhdGhVc2VyRGF0YSIsImNvbmZpZyIsImN1c3RvbVVzZXJEYXRhRGlyIiwicGF0aFRva2VucyIsIl9fZGlybmFtZSIsInByb21pc2VzIiwicm0iLCJyZWN1cnNpdmUiLCJtYXhSZXRyaWVzIiwiZm9yY2UiLCJyZXRyeURlbGF5IiwiY2hlY2tDb25uZWN0aW9uU2Vzc2lvbiIsImlzQ29ubmVjdGVkIiwiZG93bmxvYWRNZWRpYUJ5TWVzc2FnZSIsIm1lc3NhZ2VJZCIsImlzTWVkaWEiLCJnZXRNZXNzYWdlQnlJZCIsImlzTU1TIiwiYmFzZTY0IiwidG9TdHJpbmciLCJnZXRNZWRpYUJ5TWVzc2FnZSIsImV4IiwicXIiLCJ1cmxjb2RlIiwiUVJDb2RlIiwidG9EYXRhVVJMIiwicXJjb2RlIiwidmVyc2lvbiIsImdldFFyQ29kZSIsImltZyIsIkJ1ZmZlciIsImZyb20iLCJ3cml0ZUhlYWQiLCJsZW5ndGgiLCJlbmQiLCJraWxsU2VydmljZVdvcmtlciIsInJlc3RhcnRTZXJ2aWNlIiwic3Vic2NyaWJlUHJlc2VuY2UiLCJwaG9uZSIsImlzR3JvdXAiLCJhbGwiLCJjb250YWN0cyIsImdyb3VwcyIsImdldEFsbEdyb3VwcyIsInAiLCJpZCIsIl9zZXJpYWxpemVkIiwiY2hhdHMiLCJnZXRBbGxDb250YWN0cyIsImMiLCJjb250YXRvIiwiY29udGFjdFRvQXJyYXkiLCJlZGl0QnVzaW5lc3NQcm9maWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyb2xsZXIvc2Vzc2lvbkNvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIxIFdQUENvbm5lY3QgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWNsZWFyU2Vzc2lvbmlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgTWVzc2FnZSwgV2hhdHNhcHAgfSBmcm9tICdAd3BwY29ubmVjdC10ZWFtL3dwcGNvbm5lY3QnO1xuaW1wb3J0IHsgUmVxdWVzdCwgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgbWltZSBmcm9tICdtaW1lLXR5cGVzJztcbmltcG9ydCBRUkNvZGUgZnJvbSAncXJjb2RlJztcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gJ3dpbnN0b24nO1xuXG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi4vLi4vcGFja2FnZS5qc29uJztcbmltcG9ydCBjb25maWcgZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCBDcmVhdGVTZXNzaW9uVXRpbCBmcm9tICcuLi91dGlsL2NyZWF0ZVNlc3Npb25VdGlsJztcbmltcG9ydCB7IGNhbGxXZWJIb29rLCBjb250YWN0VG9BcnJheSB9IGZyb20gJy4uL3V0aWwvZnVuY3Rpb25zJztcbmltcG9ydCBnZXRBbGxUb2tlbnMgZnJvbSAnLi4vdXRpbC9nZXRBbGxUb2tlbnMnO1xuaW1wb3J0IHsgY2xpZW50c0FycmF5LCBkZWxldGVTZXNzaW9uT25BcnJheSB9IGZyb20gJy4uL3V0aWwvc2Vzc2lvblV0aWwnO1xuXG5jb25zdCBTZXNzaW9uVXRpbCA9IG5ldyBDcmVhdGVTZXNzaW9uVXRpbCgpO1xuXG5hc3luYyBmdW5jdGlvbiBkb3dubG9hZEZpbGVGdW5jdGlvbihcbiAgbWVzc2FnZTogTWVzc2FnZSxcbiAgY2xpZW50OiBXaGF0c2FwcCxcbiAgbG9nZ2VyOiBMb2dnZXJcbikge1xuICB0cnkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGNsaWVudC5kZWNyeXB0RmlsZShtZXNzYWdlKTtcblxuICAgIGNvbnN0IGZpbGVuYW1lID0gYC4vV2hhdHNBcHBJbWFnZXMvZmlsZSR7bWVzc2FnZS50fWA7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGZpbGVuYW1lKSkge1xuICAgICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ3B0dCcpIHtcbiAgICAgICAgcmVzdWx0ID0gYCR7ZmlsZW5hbWV9Lm9nYWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBgJHtmaWxlbmFtZX0uJHttaW1lLmV4dGVuc2lvbihtZXNzYWdlLm1pbWV0eXBlKX1gO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBmcy53cml0ZUZpbGUocmVzdWx0LCBidWZmZXIsIChlcnIpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIGxvZ2dlci5lcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAke2ZpbGVuYW1lfS4ke21pbWUuZXh0ZW5zaW9uKG1lc3NhZ2UubWltZXR5cGUpfWA7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmVycm9yKGUpO1xuICAgIGxvZ2dlci53YXJuKFxuICAgICAgJ0Vycm8gYW8gZGVzY3JpcHRvZ3JhZmFyIGEgbWlkaWEsIHRlbnRhbmRvIGZhemVyIG8gZG93bmxvYWQgZGlyZXRvLi4uJ1xuICAgICk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGNsaWVudC5kb3dubG9hZE1lZGlhKG1lc3NhZ2UpO1xuICAgICAgY29uc3QgZmlsZW5hbWUgPSBgLi9XaGF0c0FwcEltYWdlcy9maWxlJHttZXNzYWdlLnR9YDtcbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhmaWxlbmFtZSkpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgICAgICBpZiAobWVzc2FnZS50eXBlID09PSAncHR0Jykge1xuICAgICAgICAgIHJlc3VsdCA9IGAke2ZpbGVuYW1lfS5vZ2FgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGAke2ZpbGVuYW1lfS4ke21pbWUuZXh0ZW5zaW9uKG1lc3NhZ2UubWltZXR5cGUpfWA7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBmcy53cml0ZUZpbGUocmVzdWx0LCBidWZmZXIsIChlcnIpID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYCR7ZmlsZW5hbWV9LiR7bWltZS5leHRlbnNpb24obWVzc2FnZS5taW1ldHlwZSl9YDtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoZSk7XG4gICAgICBsb2dnZXIud2FybignTsOjbyBmb2kgcG9zc8OtdmVsIGJhaXhhciBhIG3DrWRpYS4uLicpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG93bmxvYWQobWVzc2FnZTogYW55LCBjbGllbnQ6IGFueSwgbG9nZ2VyOiBhbnkpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXRoID0gYXdhaXQgZG93bmxvYWRGaWxlRnVuY3Rpb24obWVzc2FnZSwgY2xpZW50LCBsb2dnZXIpO1xuICAgIHJldHVybiBwYXRoPy5yZXBsYWNlKCcuLycsICcnKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5lcnJvcihlKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRBbGxTZXNzaW9ucyhyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJBdXRoXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLm9wZXJhdGlvbklkID0gJ3N0YXJ0QWxsU2Vzc2lvbnMnXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZWNyZXRrZXlcIl0gPSB7XG4gICAgICBzY2hlbWE6ICdUSElTSVNNWVNFQ1VSRUNPREUnXG4gICAgIH1cbiAgICovXG4gIGNvbnN0IHsgc2VjcmV0a2V5IH0gPSByZXEucGFyYW1zO1xuICBjb25zdCB7IGF1dGhvcml6YXRpb246IHRva2VuIH0gPSByZXEuaGVhZGVycztcblxuICBsZXQgdG9rZW5EZWNyeXB0ID0gJyc7XG5cbiAgaWYgKHNlY3JldGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdG9rZW5EZWNyeXB0ID0gKHRva2VuIGFzIGFueSkuc3BsaXQoJyAnKVswXTtcbiAgfSBlbHNlIHtcbiAgICB0b2tlbkRlY3J5cHQgPSBzZWNyZXRrZXk7XG4gIH1cblxuICBjb25zdCBhbGxTZXNzaW9ucyA9IGF3YWl0IGdldEFsbFRva2VucyhyZXEpO1xuXG4gIGlmICh0b2tlbkRlY3J5cHQgIT09IHJlcS5zZXJ2ZXJPcHRpb25zLnNlY3JldEtleSkge1xuICAgIHJldHVybiByZXMuc3RhdHVzKDQwMCkuanNvbih7XG4gICAgICByZXNwb25zZTogJ2Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdUaGUgdG9rZW4gaXMgaW5jb3JyZWN0JyxcbiAgICB9KTtcbiAgfVxuXG4gIGFsbFNlc3Npb25zLm1hcChhc3luYyAoc2Vzc2lvbjogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgdXRpbCA9IG5ldyBDcmVhdGVTZXNzaW9uVXRpbCgpO1xuICAgIGF3YWl0IHV0aWwub3BlbmRhdGEocmVxLCBzZXNzaW9uKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGF3YWl0IHJlc1xuICAgIC5zdGF0dXMoMjAxKVxuICAgIC5qc29uKHsgc3RhdHVzOiAnc3VjY2VzcycsIG1lc3NhZ2U6ICdTdGFydGluZyBhbGwgc2Vzc2lvbnMnIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2hvd0FsbFNlc3Npb25zKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIkF1dGhcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnc2hvd0FsbFNlc3Npb25zJ1xuICAgICAjc3dhZ2dlci5hdXRvUXVlcnk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuYXV0b0hlYWRlcnM9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZWNyZXRrZXlcIl0gPSB7XG4gICAgICBzY2hlbWE6ICdUSElTSVNNWVNFQ1VSRVRPS0VOJ1xuICAgICB9XG4gICAqL1xuICBjb25zdCB7IHNlY3JldGtleSB9ID0gcmVxLnBhcmFtcztcbiAgY29uc3QgeyBhdXRob3JpemF0aW9uOiB0b2tlbiB9ID0gcmVxLmhlYWRlcnM7XG5cbiAgbGV0IHRva2VuRGVjcnlwdDogYW55ID0gJyc7XG5cbiAgaWYgKHNlY3JldGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdG9rZW5EZWNyeXB0ID0gdG9rZW4/LnNwbGl0KCcgJylbMF07XG4gIH0gZWxzZSB7XG4gICAgdG9rZW5EZWNyeXB0ID0gc2VjcmV0a2V5O1xuICB9XG5cbiAgY29uc3QgYXJyOiBhbnkgPSBbXTtcblxuICBpZiAodG9rZW5EZWNyeXB0ICE9PSByZXEuc2VydmVyT3B0aW9ucy5zZWNyZXRLZXkpIHtcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDApLmpzb24oe1xuICAgICAgcmVzcG9uc2U6IGZhbHNlLFxuICAgICAgbWVzc2FnZTogJ1RoZSB0b2tlbiBpcyBpbmNvcnJlY3QnLFxuICAgIH0pO1xuICB9XG5cbiAgT2JqZWN0LmtleXMoY2xpZW50c0FycmF5KS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgYXJyLnB1c2goeyBzZXNzaW9uOiBpdGVtIH0pO1xuICB9KTtcblxuICByZXR1cm4gcmVzLnN0YXR1cygyMDApLmpzb24oeyByZXNwb25zZTogYXdhaXQgZ2V0QWxsVG9rZW5zKHJlcSkgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydFNlc3Npb24ocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQXV0aFwiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5vcGVyYXRpb25JZCA9ICdzdGFydFNlc3Npb24nXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIHdlYmhvb2s6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICB3YWl0UXJDb2RlOiB7IHR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBleGFtcGxlOiB7XG4gICAgICAgICAgICB3ZWJob29rOiBcIlwiLFxuICAgICAgICAgICAgd2FpdFFyQ29kZTogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgIH1cbiAgICovXG4gIGNvbnN0IHNlc3Npb24gPSByZXEuc2Vzc2lvbjtcbiAgY29uc3QgeyB3YWl0UXJDb2RlID0gZmFsc2UgfSA9IHJlcS5ib2R5O1xuXG4gIGF3YWl0IGdldFNlc3Npb25TdGF0ZShyZXEsIHJlcyk7XG4gIGF3YWl0IFNlc3Npb25VdGlsLm9wZW5kYXRhKHJlcSwgc2Vzc2lvbiwgd2FpdFFyQ29kZSA/IHJlcyA6IG51bGwpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2xvc2VTZXNzaW9uKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIkF1dGhcIl1cbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnY2xvc2VTZXNzaW9uJ1xuICAgICAjc3dhZ2dlci5hdXRvQm9keT10cnVlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAqL1xuICBjb25zdCBzZXNzaW9uID0gcmVxLnNlc3Npb247XG4gIHRyeSB7XG4gICAgaWYgKChjbGllbnRzQXJyYXkgYXMgYW55KVtzZXNzaW9uXS5zdGF0dXMgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBhd2FpdCByZXNcbiAgICAgICAgLnN0YXR1cygyMDApXG4gICAgICAgIC5qc29uKHsgc3RhdHVzOiB0cnVlLCBtZXNzYWdlOiAnU2Vzc2lvbiBzdWNjZXNzZnVsbHkgY2xvc2VkJyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgKGNsaWVudHNBcnJheSBhcyBhbnkpW3Nlc3Npb25dID0geyBzdGF0dXM6IG51bGwgfTtcblxuICAgICAgYXdhaXQgcmVxLmNsaWVudC5jbG9zZSgpO1xuICAgICAgcmVxLmlvLmVtaXQoJ3doYXRzYXBwLXN0YXR1cycsIGZhbHNlKTtcbiAgICAgIGNhbGxXZWJIb29rKHJlcS5jbGllbnQsIHJlcSwgJ2Nsb3Nlc2Vzc2lvbicsIHtcbiAgICAgICAgbWVzc2FnZTogYFNlc3Npb246ICR7c2Vzc2lvbn0gZGlzY29ubmVjdGVkYCxcbiAgICAgICAgY29ubmVjdGVkOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gYXdhaXQgcmVzXG4gICAgICAgIC5zdGF0dXMoMjAwKVxuICAgICAgICAuanNvbih7IHN0YXR1czogdHJ1ZSwgbWVzc2FnZTogJ1Nlc3Npb24gc3VjY2Vzc2Z1bGx5IGNsb3NlZCcgfSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiBhd2FpdCByZXNcbiAgICAgIC5zdGF0dXMoNTAwKVxuICAgICAgLmpzb24oeyBzdGF0dXM6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3IgY2xvc2luZyBzZXNzaW9uJywgZXJyb3IgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvZ091dFNlc3Npb24ocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQXV0aFwiXVxuICAgICAjc3dhZ2dlci5vcGVyYXRpb25JZCA9ICdsb2dvdXRTZXNzaW9uJ1xuICAgKiAjc3dhZ2dlci5kZXNjcmlwdGlvbiA9ICdUaGlzIHJvdXRlIGxvZ291dCBhbmQgZGVsZXRlIHNlc3Npb24gZGF0YSdcbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICovXG4gIHRyeSB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHJlcS5zZXNzaW9uO1xuICAgIGF3YWl0IHJlcS5jbGllbnQubG9nb3V0KCk7XG4gICAgZGVsZXRlU2Vzc2lvbk9uQXJyYXkocmVxLnNlc3Npb24pO1xuXG4gICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBwYXRoVXNlckRhdGEgPSBjb25maWcuY3VzdG9tVXNlckRhdGFEaXIgKyByZXEuc2Vzc2lvbjtcbiAgICAgIGNvbnN0IHBhdGhUb2tlbnMgPSBfX2Rpcm5hbWUgKyBgLi4vLi4vLi4vdG9rZW5zLyR7cmVxLnNlc3Npb259LmRhdGEuanNvbmA7XG5cbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKHBhdGhVc2VyRGF0YSkpIHtcbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMucm0ocGF0aFVzZXJEYXRhLCB7XG4gICAgICAgICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgICAgICAgIG1heFJldHJpZXM6IDUsXG4gICAgICAgICAgZm9yY2U6IHRydWUsXG4gICAgICAgICAgcmV0cnlEZWxheTogMTAwMCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhwYXRoVG9rZW5zKSkge1xuICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy5ybShwYXRoVG9rZW5zLCB7XG4gICAgICAgICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgICAgICAgIG1heFJldHJpZXM6IDUsXG4gICAgICAgICAgZm9yY2U6IHRydWUsXG4gICAgICAgICAgcmV0cnlEZWxheTogMTAwMCxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJlcS5pby5lbWl0KCd3aGF0c2FwcC1zdGF0dXMnLCBmYWxzZSk7XG4gICAgICBjYWxsV2ViSG9vayhyZXEuY2xpZW50LCByZXEsICdsb2dvdXRzZXNzaW9uJywge1xuICAgICAgICBtZXNzYWdlOiBgU2Vzc2lvbjogJHtzZXNzaW9ufSBsb2dnZWQgb3V0YCxcbiAgICAgICAgY29ubmVjdGVkOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gYXdhaXQgcmVzXG4gICAgICAgIC5zdGF0dXMoMjAwKVxuICAgICAgICAuanNvbih7IHN0YXR1czogdHJ1ZSwgbWVzc2FnZTogJ1Nlc3Npb24gc3VjY2Vzc2Z1bGx5IGNsb3NlZCcgfSk7XG4gICAgfSwgNTAwKTtcbiAgICAvKnRyeSB7XG4gICAgICBhd2FpdCByZXEuY2xpZW50LmNsb3NlKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHt9Ki9cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXEubG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgICByZXR1cm4gYXdhaXQgcmVzXG4gICAgICAuc3RhdHVzKDUwMClcbiAgICAgIC5qc29uKHsgc3RhdHVzOiBmYWxzZSwgbWVzc2FnZTogJ0Vycm9yIGNsb3Npbmcgc2Vzc2lvbicsIGVycm9yIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja0Nvbm5lY3Rpb25TZXNzaW9uKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIkF1dGhcIl1cbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnQ2hlY2tDb25uZWN0aW9uU3RhdGUnXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAqL1xuICB0cnkge1xuICAgIGF3YWl0IHJlcS5jbGllbnQuaXNDb25uZWN0ZWQoKTtcblxuICAgIHJldHVybiByZXMuc3RhdHVzKDIwMCkuanNvbih7IHN0YXR1czogdHJ1ZSwgbWVzc2FnZTogJ0Nvbm5lY3RlZCcgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHsgc3RhdHVzOiBmYWxzZSwgbWVzc2FnZTogJ0Rpc2Nvbm5lY3RlZCcgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvd25sb2FkTWVkaWFCeU1lc3NhZ2UocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnZG93bmxvYWRNZWRpYWJ5TWVzc2FnZSdcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgbWVzc2FnZUlkOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGV4YW1wbGU6IHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogJzxtZXNzYWdlSWQ+J1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICB9XG4gICAqL1xuICBjb25zdCBjbGllbnQgPSByZXEuY2xpZW50O1xuICBjb25zdCB7IG1lc3NhZ2VJZCB9ID0gcmVxLmJvZHk7XG5cbiAgbGV0IG1lc3NhZ2U7XG5cbiAgdHJ5IHtcbiAgICBpZiAoIW1lc3NhZ2VJZC5pc01lZGlhIHx8ICFtZXNzYWdlSWQudHlwZSkge1xuICAgICAgbWVzc2FnZSA9IGF3YWl0IGNsaWVudC5nZXRNZXNzYWdlQnlJZChtZXNzYWdlSWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZXNzYWdlID0gbWVzc2FnZUlkO1xuICAgIH1cblxuICAgIGlmICghbWVzc2FnZSlcbiAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMCkuanNvbih7XG4gICAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgbWVzc2FnZTogJ01lc3NhZ2Ugbm90IGZvdW5kJyxcbiAgICAgIH0pO1xuXG4gICAgaWYgKCEobWVzc2FnZVsnbWltZXR5cGUnXSB8fCBtZXNzYWdlLmlzTWVkaWEgfHwgbWVzc2FnZS5pc01NUykpXG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDApLmpzb24oe1xuICAgICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICAgIG1lc3NhZ2U6ICdNZXNzYWdlIGRvZXMgbm90IGNvbnRhaW4gbWVkaWEnLFxuICAgICAgfSk7XG5cbiAgICBjb25zdCBidWZmZXIgPSBhd2FpdCBjbGllbnQuZGVjcnlwdEZpbGUobWVzc2FnZSk7XG5cbiAgICByZXR1cm4gcmVzXG4gICAgICAuc3RhdHVzKDIwMClcbiAgICAgIC5qc29uKHsgYmFzZTY0OiBidWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpLCBtaW1ldHlwZTogbWVzc2FnZS5taW1ldHlwZSB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZSk7XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdEZWNyeXB0IGZpbGUgZXJyb3InLFxuICAgICAgZXJyb3I6IGUsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE1lZGlhQnlNZXNzYWdlKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIk1lc3NhZ2VzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLm9wZXJhdGlvbklkID0gJ2dldE1lZGlhQnlNZXNzYWdlJ1xuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ21lc3NhZ2VJZCdcbiAgICAgfVxuICAgKi9cbiAgY29uc3QgY2xpZW50ID0gcmVxLmNsaWVudDtcbiAgY29uc3QgeyBtZXNzYWdlSWQgfSA9IHJlcS5wYXJhbXM7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgY2xpZW50LmdldE1lc3NhZ2VCeUlkKG1lc3NhZ2VJZCk7XG5cbiAgICBpZiAoIW1lc3NhZ2UpXG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDApLmpzb24oe1xuICAgICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICAgIG1lc3NhZ2U6ICdNZXNzYWdlIG5vdCBmb3VuZCcsXG4gICAgICB9KTtcblxuICAgIGlmICghKG1lc3NhZ2VbJ21pbWV0eXBlJ10gfHwgbWVzc2FnZS5pc01lZGlhIHx8IG1lc3NhZ2UuaXNNTVMpKVxuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAwKS5qc29uKHtcbiAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICBtZXNzYWdlOiAnTWVzc2FnZSBkb2VzIG5vdCBjb250YWluIG1lZGlhJyxcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgY2xpZW50LmRlY3J5cHRGaWxlKG1lc3NhZ2UpO1xuXG4gICAgcmV0dXJuIHJlc1xuICAgICAgLnN0YXR1cygyMDApXG4gICAgICAuanNvbih7IGJhc2U2NDogYnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKSwgbWltZXR5cGU6IG1lc3NhZ2UubWltZXR5cGUgfSk7XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihleCk7XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdUaGUgc2Vzc2lvbiBpcyBub3QgYWN0aXZlJyxcbiAgICAgIGVycm9yOiBleCxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U2Vzc2lvblN0YXRlKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICAgI3N3YWdnZXIudGFncyA9IFtcIkF1dGhcIl1cbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnZ2V0U2Vzc2lvblN0YXRlJ1xuICAgICAjc3dhZ2dlci5zdW1tYXJ5ID0gJ1JldHJpZXZlIHN0YXR1cyBvZiBhIHNlc3Npb24nXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5ID0gZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICovXG4gIHRyeSB7XG4gICAgY29uc3QgeyB3YWl0UXJDb2RlID0gZmFsc2UgfSA9IHJlcS5ib2R5O1xuICAgIGNvbnN0IGNsaWVudCA9IHJlcS5jbGllbnQ7XG4gICAgY29uc3QgcXIgPVxuICAgICAgY2xpZW50Py51cmxjb2RlICE9IG51bGwgJiYgY2xpZW50Py51cmxjb2RlICE9ICcnXG4gICAgICAgID8gYXdhaXQgUVJDb2RlLnRvRGF0YVVSTChjbGllbnQudXJsY29kZSlcbiAgICAgICAgOiBudWxsO1xuXG4gICAgaWYgKChjbGllbnQgPT0gbnVsbCB8fCBjbGllbnQuc3RhdHVzID09IG51bGwpICYmICF3YWl0UXJDb2RlKVxuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHsgc3RhdHVzOiAnQ0xPU0VEJywgcXJjb2RlOiBudWxsIH0pO1xuICAgIGVsc2UgaWYgKGNsaWVudCAhPSBudWxsKVxuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHtcbiAgICAgICAgc3RhdHVzOiBjbGllbnQuc3RhdHVzLFxuICAgICAgICBxcmNvZGU6IHFyLFxuICAgICAgICB1cmxjb2RlOiBjbGllbnQudXJsY29kZSxcbiAgICAgICAgdmVyc2lvbjogdmVyc2lvbixcbiAgICAgIH0pO1xuICB9IGNhdGNoIChleCkge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZXgpO1xuICAgIHJldHVybiByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICBtZXNzYWdlOiAnVGhlIHNlc3Npb24gaXMgbm90IGFjdGl2ZScsXG4gICAgICBlcnJvcjogZXgsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFFyQ29kZShyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJBdXRoXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLm9wZXJhdGlvbklkID0gJ2dldFFyQ29kZSdcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICovXG4gIHRyeSB7XG4gICAgaWYgKHJlcT8uY2xpZW50Py51cmxjb2RlKSB7XG4gICAgICBjb25zdCBxciA9IHJlcS5jbGllbnQudXJsY29kZVxuICAgICAgICA/IGF3YWl0IFFSQ29kZS50b0RhdGFVUkwocmVxLmNsaWVudC51cmxjb2RlKVxuICAgICAgICA6IG51bGw7XG4gICAgICBjb25zdCBpbWcgPSBCdWZmZXIuZnJvbShcbiAgICAgICAgKHFyIGFzIGFueSkucmVwbGFjZSgvXmRhdGE6aW1hZ2VcXC8ocG5nfGpwZWd8anBnKTtiYXNlNjQsLywgJycpLFxuICAgICAgICAnYmFzZTY0J1xuICAgICAgKTtcblxuICAgICAgcmVzLndyaXRlSGVhZCgyMDAsIHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdpbWFnZS9wbmcnLFxuICAgICAgICAnQ29udGVudC1MZW5ndGgnOiBpbWcubGVuZ3RoLFxuICAgICAgfSk7XG4gICAgICByZXMuZW5kKGltZyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcmVxLmNsaWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiByZXMuc3RhdHVzKDIwMCkuanNvbih7XG4gICAgICAgIHN0YXR1czogbnVsbCxcbiAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAnU2Vzc2lvbiBub3Qgc3RhcnRlZC4gUGxlYXNlLCB1c2UgdGhlIC9zdGFydC1zZXNzaW9uIHJvdXRlLCBmb3IgaW5pdGlhbGl6YXRpb24geW91ciBzZXNzaW9uJyxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVzLnN0YXR1cygyMDApLmpzb24oe1xuICAgICAgICBzdGF0dXM6IHJlcS5jbGllbnQuc3RhdHVzLFxuICAgICAgICBtZXNzYWdlOiAnUVJDb2RlIGlzIG5vdCBhdmFpbGFibGUuLi4nLFxuICAgICAgfSk7XG4gICAgfVxuICB9IGNhdGNoIChleCkge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZXgpO1xuICAgIHJldHVybiByZXNcbiAgICAgIC5zdGF0dXMoNTAwKVxuICAgICAgLmpzb24oeyBzdGF0dXM6ICdlcnJvcicsIG1lc3NhZ2U6ICdFcnJvciByZXRyaWV2aW5nIFFSQ29kZScsIGVycm9yOiBleCB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24ga2lsbFNlcnZpY2VXb3JrZXIocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci5pZ25vcmU9dHJ1ZVxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAna2lsbFNlcnZpY2VXb3JraWVyJ1xuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgKi9cbiAgdHJ5IHtcbiAgICByZXR1cm4gcmVzXG4gICAgICAuc3RhdHVzKDIwMClcbiAgICAgIC5qc29uKHsgc3RhdHVzOiAnZXJyb3InLCByZXNwb25zZTogJ05vdCBpbXBsZW1lbnRlZCB5ZXQnIH0pO1xuICB9IGNhdGNoIChleCkge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZXgpO1xuICAgIHJldHVybiByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICBtZXNzYWdlOiAnVGhlIHNlc3Npb24gaXMgbm90IGFjdGl2ZScsXG4gICAgICBlcnJvcjogZXgsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc3RhcnRTZXJ2aWNlKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIuaWdub3JlPXRydWVcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIk1lc3NhZ2VzXCJdXG4gICAgICNzd2FnZ2VyLm9wZXJhdGlvbklkID0gJ3Jlc3RhcnRTZXJ2aWNlJ1xuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgKi9cbiAgdHJ5IHtcbiAgICByZXR1cm4gcmVzXG4gICAgICAuc3RhdHVzKDIwMClcbiAgICAgIC5qc29uKHsgc3RhdHVzOiAnZXJyb3InLCByZXNwb25zZTogJ05vdCBpbXBsZW1lbnRlZCB5ZXQnIH0pO1xuICB9IGNhdGNoIChleCkge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZXgpO1xuICAgIHJldHVybiByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICByZXNwb25zZTogeyBtZXNzYWdlOiAnVGhlIHNlc3Npb24gaXMgbm90IGFjdGl2ZScsIGVycm9yOiBleCB9LFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdWJzY3JpYmVQcmVzZW5jZShyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJNaXNjXCJdXG4gICAgICNzd2FnZ2VyLm9wZXJhdGlvbklkID0gJ3N1YnNjcmliZVByZXNlbmNlJ1xuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgXCJAY29udGVudFwiOiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICBwaG9uZTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgIGlzR3JvdXA6IHsgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgICAgICAgICAgYWxsOiB7IHR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBleGFtcGxlOiB7XG4gICAgICAgICAgICBwaG9uZTogJzU1MjE5OTk5OTk5OTknLFxuICAgICAgICAgICAgaXNHcm91cDogZmFsc2UsXG4gICAgICAgICAgICBhbGw6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICB9XG4gICAqL1xuICB0cnkge1xuICAgIGNvbnN0IHsgcGhvbmUsIGlzR3JvdXAgPSBmYWxzZSwgYWxsID0gZmFsc2UgfSA9IHJlcS5ib2R5O1xuXG4gICAgaWYgKGFsbCkge1xuICAgICAgbGV0IGNvbnRhY3RzO1xuICAgICAgaWYgKGlzR3JvdXApIHtcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gYXdhaXQgcmVxLmNsaWVudC5nZXRBbGxHcm91cHMoZmFsc2UpO1xuICAgICAgICBjb250YWN0cyA9IGdyb3Vwcy5tYXAoKHA6IGFueSkgPT4gcC5pZC5fc2VyaWFsaXplZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjaGF0cyA9IGF3YWl0IHJlcS5jbGllbnQuZ2V0QWxsQ29udGFjdHMoKTtcbiAgICAgICAgY29udGFjdHMgPSBjaGF0cy5tYXAoKGM6IGFueSkgPT4gYy5pZC5fc2VyaWFsaXplZCk7XG4gICAgICB9XG4gICAgICBhd2FpdCByZXEuY2xpZW50LnN1YnNjcmliZVByZXNlbmNlKGNvbnRhY3RzKTtcbiAgICB9IGVsc2VcbiAgICAgIGZvciAoY29uc3QgY29udGF0byBvZiBjb250YWN0VG9BcnJheShwaG9uZSwgaXNHcm91cCkpIHtcbiAgICAgICAgYXdhaXQgcmVxLmNsaWVudC5zdWJzY3JpYmVQcmVzZW5jZShjb250YXRvKTtcbiAgICAgIH1cblxuICAgIHJldHVybiBhd2FpdCByZXMuc3RhdHVzKDIwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdzdWNjZXNzJyxcbiAgICAgIHJlc3BvbnNlOiB7IG1lc3NhZ2U6ICdTdWJzY3JpYmUgcHJlc2VuY2UgZXhlY3V0ZWQnIH0sXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGF3YWl0IHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdFcnJvciBvbiBzdWJzY3JpYmUgcHJlc2VuY2UnLFxuICAgICAgZXJyb3I6IGVycm9yLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlZGl0QnVzaW5lc3NQcm9maWxlKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIlByb2ZpbGVcIl1cbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnZWRpdEJ1c2luZXNzUHJvZmlsZSdcbiAgICogI3N3YWdnZXIuZGVzY3JpcHRpb24gPSAnRWRpdCB5b3VyIGJ1c3NpbmVzcyBwcm9maWxlJ1xuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wib2JqXCJdID0ge1xuICAgICAgaW46ICdib2R5JyxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICAkYWRyZXNzOiAnQXYuIE5vc3NhIFNlbmhvcmEgZGUgQ29wYWNhYmFuYSwgMzE1JyxcbiAgICAgICAgJGVtYWlsOiAndGVzdEB0ZXN0LmNvbS5icicsXG4gICAgICAgICRjYXRlZ29yaWVzOiB7XG4gICAgICAgICAgJGlkOiBcIjEzMzQzNjc0MzM4ODIxN1wiLFxuICAgICAgICAgICRsb2NhbGl6ZWRfZGlzcGxheV9uYW1lOiBcIkFydGVzIGUgZW50cmV0ZW5pbWVudG9cIixcbiAgICAgICAgICAkbm90X2FfYml6OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgJHdlYnNpdGU6IFtcbiAgICAgICAgICBcImh0dHBzOi8vd3d3LndwcGNvbm5lY3QuaW9cIixcbiAgICAgICAgICBcImh0dHBzOi8vd3d3LnRlc3RlMi5jb20uYnJcIixcbiAgICAgICAgXSxcbiAgICAgIH1cbiAgICAgfVxuICAgICBcbiAgICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgYWRyZXNzOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgZW1haWw6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICBjYXRlZ29yaWVzOiB7IHR5cGU6IFwib2JqZWN0XCIgfSxcbiAgICAgICAgICAgICAgd2Vic2l0ZXM6IHsgdHlwZTogXCJhcnJheVwiIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBleGFtcGxlOiB7XG4gICAgICAgICAgICBhZHJlc3M6ICdBdi4gTm9zc2EgU2VuaG9yYSBkZSBDb3BhY2FiYW5hLCAzMTUnLFxuICAgICAgICAgICAgZW1haWw6ICd0ZXN0QHRlc3QuY29tLmJyJyxcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHtcbiAgICAgICAgICAgICAgJGlkOiBcIjEzMzQzNjc0MzM4ODIxN1wiLFxuICAgICAgICAgICAgICAkbG9jYWxpemVkX2Rpc3BsYXlfbmFtZTogXCJBcnRlcyBlIGVudHJldGVuaW1lbnRvXCIsXG4gICAgICAgICAgICAgICRub3RfYV9iaXo6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdlYnNpdGU6IFtcbiAgICAgICAgICAgICAgXCJodHRwczovL3d3dy53cHBjb25uZWN0LmlvXCIsXG4gICAgICAgICAgICAgIFwiaHR0cHM6Ly93d3cudGVzdGUyLmNvbS5iclwiLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgfVxuICAgKi9cbiAgdHJ5IHtcbiAgICByZXR1cm4gcmVzLnN0YXR1cygyMDApLmpzb24oYXdhaXQgcmVxLmNsaWVudC5lZGl0QnVzaW5lc3NQcm9maWxlKHJlcS5ib2R5KSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdFcnJvciBvbiBlZGl0IGJ1c2luZXNzIHByb2ZpbGUnLFxuICAgICAgZXJyb3I6IGVycm9yLFxuICAgIH0pO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJBLElBQUFBLEdBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTs7O0FBR0EsSUFBQUcsUUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssa0JBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGFBQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLFlBQUEsR0FBQVIsT0FBQSx3QkFBeUUsQ0EzQnpFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQWVBLE1BQU1TLFdBQVcsR0FBRyxJQUFJQywwQkFBaUIsQ0FBQyxDQUFDLENBRTNDLGVBQWVDLG9CQUFvQkEsQ0FDakNDLE9BQWdCLEVBQ2hCQyxNQUFnQixFQUNoQkMsTUFBYyxFQUNkLENBQ0Es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
|
|
739
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9taW1lVHlwZXMiLCJfcXJjb2RlIiwiX3BhY2thZ2UiLCJfY29uZmlnIiwiX2NyZWF0ZVNlc3Npb25VdGlsIiwiX2Z1bmN0aW9ucyIsIl9nZXRBbGxUb2tlbnMiLCJfc2Vzc2lvblV0aWwiLCJTZXNzaW9uVXRpbCIsIkNyZWF0ZVNlc3Npb25VdGlsIiwiZG93bmxvYWRGaWxlRnVuY3Rpb24iLCJtZXNzYWdlIiwiY2xpZW50IiwibG9nZ2VyIiwiYnVmZmVyIiwiZGVjcnlwdEZpbGUiLCJmaWxlbmFtZSIsInQiLCJmcyIsImV4aXN0c1N5bmMiLCJyZXN1bHQiLCJ0eXBlIiwibWltZSIsImV4dGVuc2lvbiIsIm1pbWV0eXBlIiwid3JpdGVGaWxlIiwiZXJyIiwiZXJyb3IiLCJlIiwid2FybiIsImRvd25sb2FkTWVkaWEiLCJkb3dubG9hZCIsInBhdGgiLCJyZXBsYWNlIiwic3RhcnRBbGxTZXNzaW9ucyIsInJlcSIsInJlcyIsInNlY3JldGtleSIsInBhcmFtcyIsImF1dGhvcml6YXRpb24iLCJ0b2tlbiIsImhlYWRlcnMiLCJ0b2tlbkRlY3J5cHQiLCJ1bmRlZmluZWQiLCJzcGxpdCIsImFsbFNlc3Npb25zIiwiZ2V0QWxsVG9rZW5zIiwic2VydmVyT3B0aW9ucyIsInNlY3JldEtleSIsInN0YXR1cyIsImpzb24iLCJyZXNwb25zZSIsIm1hcCIsInNlc3Npb24iLCJ1dGlsIiwib3BlbmRhdGEiLCJzaG93QWxsU2Vzc2lvbnMiLCJhcnIiLCJPYmplY3QiLCJrZXlzIiwiY2xpZW50c0FycmF5IiwiZm9yRWFjaCIsIml0ZW0iLCJwdXNoIiwic3RhcnRTZXNzaW9uIiwid2FpdFFyQ29kZSIsImJvZHkiLCJnZXRTZXNzaW9uU3RhdGUiLCJjbG9zZVNlc3Npb24iLCJjbG9zZSIsImlvIiwiZW1pdCIsImNhbGxXZWJIb29rIiwiY29ubmVjdGVkIiwibG9nT3V0U2Vzc2lvbiIsImxvZ291dCIsImRlbGV0ZVNlc3Npb25PbkFycmF5Iiwic2V0VGltZW91dCIsInBhdGhVc2VyRGF0YSIsImNvbmZpZyIsImN1c3RvbVVzZXJEYXRhRGlyIiwicGF0aFRva2VucyIsIl9fZGlybmFtZSIsInByb21pc2VzIiwicm0iLCJyZWN1cnNpdmUiLCJtYXhSZXRyaWVzIiwiZm9yY2UiLCJyZXRyeURlbGF5IiwiY2hlY2tDb25uZWN0aW9uU2Vzc2lvbiIsImlzQ29ubmVjdGVkIiwiZG93bmxvYWRNZWRpYUJ5TWVzc2FnZSIsIm1lc3NhZ2VJZCIsImlzTWVkaWEiLCJnZXRNZXNzYWdlQnlJZCIsImlzTU1TIiwiYmFzZTY0IiwidG9TdHJpbmciLCJnZXRNZWRpYUJ5TWVzc2FnZSIsImV4IiwicXIiLCJ1cmxjb2RlIiwiUVJDb2RlIiwidG9EYXRhVVJMIiwicXJjb2RlIiwidmVyc2lvbiIsImdldFFyQ29kZSIsInFyT3B0aW9ucyIsImVycm9yQ29ycmVjdGlvbkxldmVsIiwic2NhbGUiLCJ3aWR0aCIsImltZyIsIkJ1ZmZlciIsImZyb20iLCJ3cml0ZUhlYWQiLCJsZW5ndGgiLCJlbmQiLCJraWxsU2VydmljZVdvcmtlciIsInJlc3RhcnRTZXJ2aWNlIiwic3Vic2NyaWJlUHJlc2VuY2UiLCJwaG9uZSIsImlzR3JvdXAiLCJhbGwiLCJjb250YWN0cyIsImdyb3VwcyIsImdldEFsbEdyb3VwcyIsInAiLCJpZCIsIl9zZXJpYWxpemVkIiwiY2hhdHMiLCJnZXRBbGxDb250YWN0cyIsImMiLCJjb250YXRvIiwiY29udGFjdFRvQXJyYXkiLCJlZGl0QnVzaW5lc3NQcm9maWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyb2xsZXIvc2Vzc2lvbkNvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIxIFdQUENvbm5lY3QgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWNsZWFyU2Vzc2lvbmlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgTWVzc2FnZSwgV2hhdHNhcHAgfSBmcm9tICdAd3BwY29ubmVjdC10ZWFtL3dwcGNvbm5lY3QnO1xuaW1wb3J0IHsgUmVxdWVzdCwgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgbWltZSBmcm9tICdtaW1lLXR5cGVzJztcbmltcG9ydCBRUkNvZGUgZnJvbSAncXJjb2RlJztcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gJ3dpbnN0b24nO1xuXG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi4vLi4vcGFja2FnZS5qc29uJztcbmltcG9ydCBjb25maWcgZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCBDcmVhdGVTZXNzaW9uVXRpbCBmcm9tICcuLi91dGlsL2NyZWF0ZVNlc3Npb25VdGlsJztcbmltcG9ydCB7IGNhbGxXZWJIb29rLCBjb250YWN0VG9BcnJheSB9IGZyb20gJy4uL3V0aWwvZnVuY3Rpb25zJztcbmltcG9ydCBnZXRBbGxUb2tlbnMgZnJvbSAnLi4vdXRpbC9nZXRBbGxUb2tlbnMnO1xuaW1wb3J0IHsgY2xpZW50c0FycmF5LCBkZWxldGVTZXNzaW9uT25BcnJheSB9IGZyb20gJy4uL3V0aWwvc2Vzc2lvblV0aWwnO1xuXG5jb25zdCBTZXNzaW9uVXRpbCA9IG5ldyBDcmVhdGVTZXNzaW9uVXRpbCgpO1xuXG5hc3luYyBmdW5jdGlvbiBkb3dubG9hZEZpbGVGdW5jdGlvbihcbiAgbWVzc2FnZTogTWVzc2FnZSxcbiAgY2xpZW50OiBXaGF0c2FwcCxcbiAgbG9nZ2VyOiBMb2dnZXJcbikge1xuICB0cnkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGNsaWVudC5kZWNyeXB0RmlsZShtZXNzYWdlKTtcblxuICAgIGNvbnN0IGZpbGVuYW1lID0gYC4vV2hhdHNBcHBJbWFnZXMvZmlsZSR7bWVzc2FnZS50fWA7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGZpbGVuYW1lKSkge1xuICAgICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ3B0dCcpIHtcbiAgICAgICAgcmVzdWx0ID0gYCR7ZmlsZW5hbWV9Lm9nYWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBgJHtmaWxlbmFtZX0uJHttaW1lLmV4dGVuc2lvbihtZXNzYWdlLm1pbWV0eXBlKX1gO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBmcy53cml0ZUZpbGUocmVzdWx0LCBidWZmZXIsIChlcnIpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIGxvZ2dlci5lcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAke2ZpbGVuYW1lfS4ke21pbWUuZXh0ZW5zaW9uKG1lc3NhZ2UubWltZXR5cGUpfWA7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmVycm9yKGUpO1xuICAgIGxvZ2dlci53YXJuKFxuICAgICAgJ0Vycm8gYW8gZGVzY3JpcHRvZ3JhZmFyIGEgbWlkaWEsIHRlbnRhbmRvIGZhemVyIG8gZG93bmxvYWQgZGlyZXRvLi4uJ1xuICAgICk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGNsaWVudC5kb3dubG9hZE1lZGlhKG1lc3NhZ2UpO1xuICAgICAgY29uc3QgZmlsZW5hbWUgPSBgLi9XaGF0c0FwcEltYWdlcy9maWxlJHttZXNzYWdlLnR9YDtcbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhmaWxlbmFtZSkpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgICAgICBpZiAobWVzc2FnZS50eXBlID09PSAncHR0Jykge1xuICAgICAgICAgIHJlc3VsdCA9IGAke2ZpbGVuYW1lfS5vZ2FgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGAke2ZpbGVuYW1lfS4ke21pbWUuZXh0ZW5zaW9uKG1lc3NhZ2UubWltZXR5cGUpfWA7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBmcy53cml0ZUZpbGUocmVzdWx0LCBidWZmZXIsIChlcnIpID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYCR7ZmlsZW5hbWV9LiR7bWltZS5leHRlbnNpb24obWVzc2FnZS5taW1ldHlwZSl9YDtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoZSk7XG4gICAgICBsb2dnZXIud2FybignTsOjbyBmb2kgcG9zc8OtdmVsIGJhaXhhciBhIG3DrWRpYS4uLicpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG93bmxvYWQobWVzc2FnZTogYW55LCBjbGllbnQ6IGFueSwgbG9nZ2VyOiBhbnkpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXRoID0gYXdhaXQgZG93bmxvYWRGaWxlRnVuY3Rpb24obWVzc2FnZSwgY2xpZW50LCBsb2dnZXIpO1xuICAgIHJldHVybiBwYXRoPy5yZXBsYWNlKCcuLycsICcnKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5lcnJvcihlKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRBbGxTZXNzaW9ucyhyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJBdXRoXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLm9wZXJhdGlvbklkID0gJ3N0YXJ0QWxsU2Vzc2lvbnMnXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZWNyZXRrZXlcIl0gPSB7XG4gICAgICBzY2hlbWE6ICdUSElTSVNNWVNFQ1VSRUNPREUnXG4gICAgIH1cbiAgICovXG4gIGNvbnN0IHsgc2VjcmV0a2V5IH0gPSByZXEucGFyYW1zO1xuICBjb25zdCB7IGF1dGhvcml6YXRpb246IHRva2VuIH0gPSByZXEuaGVhZGVycztcblxuICBsZXQgdG9rZW5EZWNyeXB0ID0gJyc7XG5cbiAgaWYgKHNlY3JldGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdG9rZW5EZWNyeXB0ID0gKHRva2VuIGFzIGFueSkuc3BsaXQoJyAnKVswXTtcbiAgfSBlbHNlIHtcbiAgICB0b2tlbkRlY3J5cHQgPSBzZWNyZXRrZXk7XG4gIH1cblxuICBjb25zdCBhbGxTZXNzaW9ucyA9IGF3YWl0IGdldEFsbFRva2VucyhyZXEpO1xuXG4gIGlmICh0b2tlbkRlY3J5cHQgIT09IHJlcS5zZXJ2ZXJPcHRpb25zLnNlY3JldEtleSkge1xuICAgIHJldHVybiByZXMuc3RhdHVzKDQwMCkuanNvbih7XG4gICAgICByZXNwb25zZTogJ2Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdUaGUgdG9rZW4gaXMgaW5jb3JyZWN0JyxcbiAgICB9KTtcbiAgfVxuXG4gIGFsbFNlc3Npb25zLm1hcChhc3luYyAoc2Vzc2lvbjogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgdXRpbCA9IG5ldyBDcmVhdGVTZXNzaW9uVXRpbCgpO1xuICAgIGF3YWl0IHV0aWwub3BlbmRhdGEocmVxLCBzZXNzaW9uKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGF3YWl0IHJlc1xuICAgIC5zdGF0dXMoMjAxKVxuICAgIC5qc29uKHsgc3RhdHVzOiAnc3VjY2VzcycsIG1lc3NhZ2U6ICdTdGFydGluZyBhbGwgc2Vzc2lvbnMnIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2hvd0FsbFNlc3Npb25zKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIkF1dGhcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnc2hvd0FsbFNlc3Npb25zJ1xuICAgICAjc3dhZ2dlci5hdXRvUXVlcnk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuYXV0b0hlYWRlcnM9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZWNyZXRrZXlcIl0gPSB7XG4gICAgICBzY2hlbWE6ICdUSElTSVNNWVNFQ1VSRVRPS0VOJ1xuICAgICB9XG4gICAqL1xuICBjb25zdCB7IHNlY3JldGtleSB9ID0gcmVxLnBhcmFtcztcbiAgY29uc3QgeyBhdXRob3JpemF0aW9uOiB0b2tlbiB9ID0gcmVxLmhlYWRlcnM7XG5cbiAgbGV0IHRva2VuRGVjcnlwdDogYW55ID0gJyc7XG5cbiAgaWYgKHNlY3JldGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdG9rZW5EZWNyeXB0ID0gdG9rZW4/LnNwbGl0KCcgJylbMF07XG4gIH0gZWxzZSB7XG4gICAgdG9rZW5EZWNyeXB0ID0gc2VjcmV0a2V5O1xuICB9XG5cbiAgY29uc3QgYXJyOiBhbnkgPSBbXTtcblxuICBpZiAodG9rZW5EZWNyeXB0ICE9PSByZXEuc2VydmVyT3B0aW9ucy5zZWNyZXRLZXkpIHtcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDApLmpzb24oe1xuICAgICAgcmVzcG9uc2U6IGZhbHNlLFxuICAgICAgbWVzc2FnZTogJ1RoZSB0b2tlbiBpcyBpbmNvcnJlY3QnLFxuICAgIH0pO1xuICB9XG5cbiAgT2JqZWN0LmtleXMoY2xpZW50c0FycmF5KS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgYXJyLnB1c2goeyBzZXNzaW9uOiBpdGVtIH0pO1xuICB9KTtcblxuICByZXR1cm4gcmVzLnN0YXR1cygyMDApLmpzb24oeyByZXNwb25zZTogYXdhaXQgZ2V0QWxsVG9rZW5zKHJlcSkgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydFNlc3Npb24ocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQXV0aFwiXVxuICAgICAjc3dhZ2dlci5hdXRvQm9keT1mYWxzZVxuICAgICAjc3dhZ2dlci5vcGVyYXRpb25JZCA9ICdzdGFydFNlc3Npb24nXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIHdlYmhvb2s6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICB3YWl0UXJDb2RlOiB7IHR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBleGFtcGxlOiB7XG4gICAgICAgICAgICB3ZWJob29rOiBcIlwiLFxuICAgICAgICAgICAgd2FpdFFyQ29kZTogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgIH1cbiAgICovXG4gIGNvbnN0IHNlc3Npb24gPSByZXEuc2Vzc2lvbjtcbiAgY29uc3QgeyB3YWl0UXJDb2RlID0gZmFsc2UgfSA9IHJlcS5ib2R5O1xuXG4gIGF3YWl0IGdldFNlc3Npb25TdGF0ZShyZXEsIHJlcyk7XG4gIGF3YWl0IFNlc3Npb25VdGlsLm9wZW5kYXRhKHJlcSwgc2Vzc2lvbiwgd2FpdFFyQ29kZSA/IHJlcyA6IG51bGwpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2xvc2VTZXNzaW9uKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIkF1dGhcIl1cbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnY2xvc2VTZXNzaW9uJ1xuICAgICAjc3dhZ2dlci5hdXRvQm9keT10cnVlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAqL1xuICBjb25zdCBzZXNzaW9uID0gcmVxLnNlc3Npb247XG4gIHRyeSB7XG4gICAgaWYgKChjbGllbnRzQXJyYXkgYXMgYW55KVtzZXNzaW9uXS5zdGF0dXMgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBhd2FpdCByZXNcbiAgICAgICAgLnN0YXR1cygyMDApXG4gICAgICAgIC5qc29uKHsgc3RhdHVzOiB0cnVlLCBtZXNzYWdlOiAnU2Vzc2lvbiBzdWNjZXNzZnVsbHkgY2xvc2VkJyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgKGNsaWVudHNBcnJheSBhcyBhbnkpW3Nlc3Npb25dID0geyBzdGF0dXM6IG51bGwgfTtcblxuICAgICAgYXdhaXQgcmVxLmNsaWVudC5jbG9zZSgpO1xuICAgICAgcmVxLmlvLmVtaXQoJ3doYXRzYXBwLXN0YXR1cycsIGZhbHNlKTtcbiAgICAgIGNhbGxXZWJIb29rKHJlcS5jbGllbnQsIHJlcSwgJ2Nsb3Nlc2Vzc2lvbicsIHtcbiAgICAgICAgbWVzc2FnZTogYFNlc3Npb246ICR7c2Vzc2lvbn0gZGlzY29ubmVjdGVkYCxcbiAgICAgICAgY29ubmVjdGVkOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gYXdhaXQgcmVzXG4gICAgICAgIC5zdGF0dXMoMjAwKVxuICAgICAgICAuanNvbih7IHN0YXR1czogdHJ1ZSwgbWVzc2FnZTogJ1Nlc3Npb24gc3VjY2Vzc2Z1bGx5IGNsb3NlZCcgfSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiBhd2FpdCByZXNcbiAgICAgIC5zdGF0dXMoNTAwKVxuICAgICAgLmpzb24oeyBzdGF0dXM6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3IgY2xvc2luZyBzZXNzaW9uJywgZXJyb3IgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvZ091dFNlc3Npb24ocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiQXV0aFwiXVxuICAgICAjc3dhZ2dlci5vcGVyYXRpb25JZCA9ICdsb2dvdXRTZXNzaW9uJ1xuICAgKiAjc3dhZ2dlci5kZXNjcmlwdGlvbiA9ICdUaGlzIHJvdXRlIGxvZ291dCBhbmQgZGVsZXRlIHNlc3Npb24gZGF0YSdcbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICovXG4gIHRyeSB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHJlcS5zZXNzaW9uO1xuICAgIGF3YWl0IHJlcS5jbGllbnQubG9nb3V0KCk7XG4gICAgZGVsZXRlU2Vzc2lvbk9uQXJyYXkocmVxLnNlc3Npb24pO1xuXG4gICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBwYXRoVXNlckRhdGEgPSBjb25maWcuY3VzdG9tVXNlckRhdGFEaXIgKyByZXEuc2Vzc2lvbjtcbiAgICAgIGNvbnN0IHBhdGhUb2tlbnMgPSBfX2Rpcm5hbWUgKyBgLi4vLi4vLi4vdG9rZW5zLyR7cmVxLnNlc3Npb259LmRhdGEuanNvbmA7XG5cbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKHBhdGhVc2VyRGF0YSkpIHtcbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMucm0ocGF0aFVzZXJEYXRhLCB7XG4gICAgICAgICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgICAgICAgIG1heFJldHJpZXM6IDUsXG4gICAgICAgICAgZm9yY2U6IHRydWUsXG4gICAgICAgICAgcmV0cnlEZWxheTogMTAwMCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhwYXRoVG9rZW5zKSkge1xuICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy5ybShwYXRoVG9rZW5zLCB7XG4gICAgICAgICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgICAgICAgIG1heFJldHJpZXM6IDUsXG4gICAgICAgICAgZm9yY2U6IHRydWUsXG4gICAgICAgICAgcmV0cnlEZWxheTogMTAwMCxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJlcS5pby5lbWl0KCd3aGF0c2FwcC1zdGF0dXMnLCBmYWxzZSk7XG4gICAgICBjYWxsV2ViSG9vayhyZXEuY2xpZW50LCByZXEsICdsb2dvdXRzZXNzaW9uJywge1xuICAgICAgICBtZXNzYWdlOiBgU2Vzc2lvbjogJHtzZXNzaW9ufSBsb2dnZWQgb3V0YCxcbiAgICAgICAgY29ubmVjdGVkOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gYXdhaXQgcmVzXG4gICAgICAgIC5zdGF0dXMoMjAwKVxuICAgICAgICAuanNvbih7IHN0YXR1czogdHJ1ZSwgbWVzc2FnZTogJ1Nlc3Npb24gc3VjY2Vzc2Z1bGx5IGNsb3NlZCcgfSk7XG4gICAgfSwgNTAwKTtcbiAgICAvKnRyeSB7XG4gICAgICBhd2FpdCByZXEuY2xpZW50LmNsb3NlKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHt9Ki9cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXEubG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgICByZXR1cm4gYXdhaXQgcmVzXG4gICAgICAuc3RhdHVzKDUwMClcbiAgICAgIC5qc29uKHsgc3RhdHVzOiBmYWxzZSwgbWVzc2FnZTogJ0Vycm9yIGNsb3Npbmcgc2Vzc2lvbicsIGVycm9yIH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja0Nvbm5lY3Rpb25TZXNzaW9uKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIkF1dGhcIl1cbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnQ2hlY2tDb25uZWN0aW9uU3RhdGUnXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAqL1xuICB0cnkge1xuICAgIGF3YWl0IHJlcS5jbGllbnQuaXNDb25uZWN0ZWQoKTtcblxuICAgIHJldHVybiByZXMuc3RhdHVzKDIwMCkuanNvbih7IHN0YXR1czogdHJ1ZSwgbWVzc2FnZTogJ0Nvbm5lY3RlZCcgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHsgc3RhdHVzOiBmYWxzZSwgbWVzc2FnZTogJ0Rpc2Nvbm5lY3RlZCcgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvd25sb2FkTWVkaWFCeU1lc3NhZ2UocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIuYXV0b0JvZHk9ZmFsc2VcbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnZG93bmxvYWRNZWRpYWJ5TWVzc2FnZSdcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICAgI3N3YWdnZXIucmVxdWVzdEJvZHkgPSB7XG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIFwiQGNvbnRlbnRcIjoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgbWVzc2FnZUlkOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGV4YW1wbGU6IHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogJzxtZXNzYWdlSWQ+J1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICB9XG4gICAqL1xuICBjb25zdCBjbGllbnQgPSByZXEuY2xpZW50O1xuICBjb25zdCB7IG1lc3NhZ2VJZCB9ID0gcmVxLmJvZHk7XG5cbiAgbGV0IG1lc3NhZ2U7XG5cbiAgdHJ5IHtcbiAgICBpZiAoIW1lc3NhZ2VJZC5pc01lZGlhIHx8ICFtZXNzYWdlSWQudHlwZSkge1xuICAgICAgbWVzc2FnZSA9IGF3YWl0IGNsaWVudC5nZXRNZXNzYWdlQnlJZChtZXNzYWdlSWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZXNzYWdlID0gbWVzc2FnZUlkO1xuICAgIH1cblxuICAgIGlmICghbWVzc2FnZSlcbiAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMCkuanNvbih7XG4gICAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgbWVzc2FnZTogJ01lc3NhZ2Ugbm90IGZvdW5kJyxcbiAgICAgIH0pO1xuXG4gICAgaWYgKCEobWVzc2FnZVsnbWltZXR5cGUnXSB8fCBtZXNzYWdlLmlzTWVkaWEgfHwgbWVzc2FnZS5pc01NUykpXG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDApLmpzb24oe1xuICAgICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICAgIG1lc3NhZ2U6ICdNZXNzYWdlIGRvZXMgbm90IGNvbnRhaW4gbWVkaWEnLFxuICAgICAgfSk7XG5cbiAgICBjb25zdCBidWZmZXIgPSBhd2FpdCBjbGllbnQuZGVjcnlwdEZpbGUobWVzc2FnZSk7XG5cbiAgICByZXR1cm4gcmVzXG4gICAgICAuc3RhdHVzKDIwMClcbiAgICAgIC5qc29uKHsgYmFzZTY0OiBidWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpLCBtaW1ldHlwZTogbWVzc2FnZS5taW1ldHlwZSB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZSk7XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdEZWNyeXB0IGZpbGUgZXJyb3InLFxuICAgICAgZXJyb3I6IGUsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE1lZGlhQnlNZXNzYWdlKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIk1lc3NhZ2VzXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLm9wZXJhdGlvbklkID0gJ2dldE1lZGlhQnlNZXNzYWdlJ1xuICAgICAjc3dhZ2dlci5zZWN1cml0eSA9IFt7XG4gICAgICAgICAgICBcImJlYXJlckF1dGhcIjogW11cbiAgICAgfV1cbiAgICAgI3N3YWdnZXIucGFyYW1ldGVyc1tcInNlc3Npb25cIl0gPSB7XG4gICAgICBzY2hlbWE6ICdORVJEV0hBVFNfQU1FUklDQSdcbiAgICAgfVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ21lc3NhZ2VJZCdcbiAgICAgfVxuICAgKi9cbiAgY29uc3QgY2xpZW50ID0gcmVxLmNsaWVudDtcbiAgY29uc3QgeyBtZXNzYWdlSWQgfSA9IHJlcS5wYXJhbXM7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgY2xpZW50LmdldE1lc3NhZ2VCeUlkKG1lc3NhZ2VJZCk7XG5cbiAgICBpZiAoIW1lc3NhZ2UpXG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDApLmpzb24oe1xuICAgICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICAgIG1lc3NhZ2U6ICdNZXNzYWdlIG5vdCBmb3VuZCcsXG4gICAgICB9KTtcblxuICAgIGlmICghKG1lc3NhZ2VbJ21pbWV0eXBlJ10gfHwgbWVzc2FnZS5pc01lZGlhIHx8IG1lc3NhZ2UuaXNNTVMpKVxuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAwKS5qc29uKHtcbiAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICBtZXNzYWdlOiAnTWVzc2FnZSBkb2VzIG5vdCBjb250YWluIG1lZGlhJyxcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgY2xpZW50LmRlY3J5cHRGaWxlKG1lc3NhZ2UpO1xuXG4gICAgcmV0dXJuIHJlc1xuICAgICAgLnN0YXR1cygyMDApXG4gICAgICAuanNvbih7IGJhc2U2NDogYnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKSwgbWltZXR5cGU6IG1lc3NhZ2UubWltZXR5cGUgfSk7XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihleCk7XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdUaGUgc2Vzc2lvbiBpcyBub3QgYWN0aXZlJyxcbiAgICAgIGVycm9yOiBleCxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U2Vzc2lvblN0YXRlKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICAgI3N3YWdnZXIudGFncyA9IFtcIkF1dGhcIl1cbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnZ2V0U2Vzc2lvblN0YXRlJ1xuICAgICAjc3dhZ2dlci5zdW1tYXJ5ID0gJ1JldHJpZXZlIHN0YXR1cyBvZiBhIHNlc3Npb24nXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5ID0gZmFsc2VcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICovXG4gIHRyeSB7XG4gICAgY29uc3QgeyB3YWl0UXJDb2RlID0gZmFsc2UgfSA9IHJlcS5ib2R5O1xuICAgIGNvbnN0IGNsaWVudCA9IHJlcS5jbGllbnQ7XG4gICAgY29uc3QgcXIgPVxuICAgICAgY2xpZW50Py51cmxjb2RlICE9IG51bGwgJiYgY2xpZW50Py51cmxjb2RlICE9ICcnXG4gICAgICAgID8gYXdhaXQgUVJDb2RlLnRvRGF0YVVSTChjbGllbnQudXJsY29kZSlcbiAgICAgICAgOiBudWxsO1xuXG4gICAgaWYgKChjbGllbnQgPT0gbnVsbCB8fCBjbGllbnQuc3RhdHVzID09IG51bGwpICYmICF3YWl0UXJDb2RlKVxuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHsgc3RhdHVzOiAnQ0xPU0VEJywgcXJjb2RlOiBudWxsIH0pO1xuICAgIGVsc2UgaWYgKGNsaWVudCAhPSBudWxsKVxuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHtcbiAgICAgICAgc3RhdHVzOiBjbGllbnQuc3RhdHVzLFxuICAgICAgICBxcmNvZGU6IHFyLFxuICAgICAgICB1cmxjb2RlOiBjbGllbnQudXJsY29kZSxcbiAgICAgICAgdmVyc2lvbjogdmVyc2lvbixcbiAgICAgIH0pO1xuICB9IGNhdGNoIChleCkge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZXgpO1xuICAgIHJldHVybiByZXMuc3RhdHVzKDUwMCkuanNvbih7XG4gICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICBtZXNzYWdlOiAnVGhlIHNlc3Npb24gaXMgbm90IGFjdGl2ZScsXG4gICAgICBlcnJvcjogZXgsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFFyQ29kZShyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJBdXRoXCJdXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLm9wZXJhdGlvbklkID0gJ2dldFFyQ29kZSdcbiAgICAgI3N3YWdnZXIuc2VjdXJpdHkgPSBbe1xuICAgICAgICAgICAgXCJiZWFyZXJBdXRoXCI6IFtdXG4gICAgIH1dXG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJzZXNzaW9uXCJdID0ge1xuICAgICAgc2NoZW1hOiAnTkVSRFdIQVRTX0FNRVJJQ0EnXG4gICAgIH1cbiAgICovXG4gIHRyeSB7XG4gICAgaWYgKHJlcT8uY2xpZW50Py51cmxjb2RlKSB7XG4gICAgICAvLyBXZSBhZGQgb3B0aW9ucyB0byBnZW5lcmF0ZSB0aGUgUVIgY29kZSBpbiBoaWdoZXIgcmVzb2x1dGlvblxuICAgICAgLy8gVGhlIC9xcmNvZGUtc2Vzc2lvbiByZXF1ZXN0IHdpbGwgbm93IHJldHVybiBhIHJlYWRhYmxlIHFyY29kZS5cbiAgICAgIGNvbnN0IHFyT3B0aW9ucyA9IHtcbiAgICAgICAgZXJyb3JDb3JyZWN0aW9uTGV2ZWw6ICdNJyBhcyBjb25zdCxcbiAgICAgICAgdHlwZTogJ2ltYWdlL3BuZycgYXMgY29uc3QsXG4gICAgICAgIHNjYWxlOiA1LFxuICAgICAgICB3aWR0aDogNTAwLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHFyID0gcmVxLmNsaWVudC51cmxjb2RlXG4gICAgICAgID8gYXdhaXQgUVJDb2RlLnRvRGF0YVVSTChyZXEuY2xpZW50LnVybGNvZGUsIHFyT3B0aW9ucylcbiAgICAgICAgOiBudWxsO1xuICAgICAgY29uc3QgaW1nID0gQnVmZmVyLmZyb20oXG4gICAgICAgIChxciBhcyBhbnkpLnJlcGxhY2UoL15kYXRhOmltYWdlXFwvKHBuZ3xqcGVnfGpwZyk7YmFzZTY0LC8sICcnKSxcbiAgICAgICAgJ2Jhc2U2NCdcbiAgICAgICk7XG4gICAgICByZXMud3JpdGVIZWFkKDIwMCwge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2ltYWdlL3BuZycsXG4gICAgICAgICdDb250ZW50LUxlbmd0aCc6IGltZy5sZW5ndGgsXG4gICAgICB9KTtcbiAgICAgIHJlcy5lbmQoaW1nKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXEuY2xpZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoMjAwKS5qc29uKHtcbiAgICAgICAgc3RhdHVzOiBudWxsLFxuICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICdTZXNzaW9uIG5vdCBzdGFydGVkLiBQbGVhc2UsIHVzZSB0aGUgL3N0YXJ0LXNlc3Npb24gcm91dGUsIGZvciBpbml0aWFsaXphdGlvbiB5b3VyIHNlc3Npb24nLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZXMuc3RhdHVzKDIwMCkuanNvbih7XG4gICAgICAgIHN0YXR1czogcmVxLmNsaWVudC5zdGF0dXMsXG4gICAgICAgIG1lc3NhZ2U6ICdRUkNvZGUgaXMgbm90IGF2YWlsYWJsZS4uLicsXG4gICAgICB9KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihleCk7XG4gICAgcmV0dXJuIHJlc1xuICAgICAgLnN0YXR1cyg1MDApXG4gICAgICAuanNvbih7IHN0YXR1czogJ2Vycm9yJywgbWVzc2FnZTogJ0Vycm9yIHJldHJpZXZpbmcgUVJDb2RlJywgZXJyb3I6IGV4IH0pO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBraWxsU2VydmljZVdvcmtlcihyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcbiAgLyoqXG4gICAqICNzd2FnZ2VyLmlnbm9yZT10cnVlXG4gICAqICNzd2FnZ2VyLnRhZ3MgPSBbXCJNZXNzYWdlc1wiXVxuICAgICAjc3dhZ2dlci5vcGVyYXRpb25JZCA9ICdraWxsU2VydmljZVdvcmtpZXInXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAqL1xuICB0cnkge1xuICAgIHJldHVybiByZXNcbiAgICAgIC5zdGF0dXMoMjAwKVxuICAgICAgLmpzb24oeyBzdGF0dXM6ICdlcnJvcicsIHJlc3BvbnNlOiAnTm90IGltcGxlbWVudGVkIHlldCcgfSk7XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihleCk7XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6ICdUaGUgc2Vzc2lvbiBpcyBub3QgYWN0aXZlJyxcbiAgICAgIGVycm9yOiBleCxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzdGFydFNlcnZpY2UocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci5pZ25vcmU9dHJ1ZVxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiTWVzc2FnZXNcIl1cbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAncmVzdGFydFNlcnZpY2UnXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAqL1xuICB0cnkge1xuICAgIHJldHVybiByZXNcbiAgICAgIC5zdGF0dXMoMjAwKVxuICAgICAgLmpzb24oeyBzdGF0dXM6ICdlcnJvcicsIHJlc3BvbnNlOiAnTm90IGltcGxlbWVudGVkIHlldCcgfSk7XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihleCk7XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgIHJlc3BvbnNlOiB7IG1lc3NhZ2U6ICdUaGUgc2Vzc2lvbiBpcyBub3QgYWN0aXZlJywgZXJyb3I6IGV4IH0sXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN1YnNjcmliZVByZXNlbmNlKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xuICAvKipcbiAgICogI3N3YWdnZXIudGFncyA9IFtcIk1pc2NcIl1cbiAgICAgI3N3YWdnZXIub3BlcmF0aW9uSWQgPSAnc3Vic2NyaWJlUHJlc2VuY2UnXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnJlcXVlc3RCb2R5ID0ge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBcIkBjb250ZW50XCI6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIHBob25lOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgaXNHcm91cDogeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICAgICAgICBhbGw6IHsgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGV4YW1wbGU6IHtcbiAgICAgICAgICAgIHBob25lOiAnNTUyMTk5OTk5OTk5OScsXG4gICAgICAgICAgICBpc0dyb3VwOiBmYWxzZSxcbiAgICAgICAgICAgIGFsbDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgIH1cbiAgICovXG4gIHRyeSB7XG4gICAgY29uc3QgeyBwaG9uZSwgaXNHcm91cCA9IGZhbHNlLCBhbGwgPSBmYWxzZSB9ID0gcmVxLmJvZHk7XG5cbiAgICBpZiAoYWxsKSB7XG4gICAgICBsZXQgY29udGFjdHM7XG4gICAgICBpZiAoaXNHcm91cCkge1xuICAgICAgICBjb25zdCBncm91cHMgPSBhd2FpdCByZXEuY2xpZW50LmdldEFsbEdyb3VwcyhmYWxzZSk7XG4gICAgICAgIGNvbnRhY3RzID0gZ3JvdXBzLm1hcCgocDogYW55KSA9PiBwLmlkLl9zZXJpYWxpemVkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNoYXRzID0gYXdhaXQgcmVxLmNsaWVudC5nZXRBbGxDb250YWN0cygpO1xuICAgICAgICBjb250YWN0cyA9IGNoYXRzLm1hcCgoYzogYW55KSA9PiBjLmlkLl9zZXJpYWxpemVkKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHJlcS5jbGllbnQuc3Vic2NyaWJlUHJlc2VuY2UoY29udGFjdHMpO1xuICAgIH0gZWxzZVxuICAgICAgZm9yIChjb25zdCBjb250YXRvIG9mIGNvbnRhY3RUb0FycmF5KHBob25lLCBpc0dyb3VwKSkge1xuICAgICAgICBhd2FpdCByZXEuY2xpZW50LnN1YnNjcmliZVByZXNlbmNlKGNvbnRhdG8pO1xuICAgICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHJlcy5zdGF0dXMoMjAwKS5qc29uKHtcbiAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxuICAgICAgcmVzcG9uc2U6IHsgbWVzc2FnZTogJ1N1YnNjcmliZSBwcmVzZW5jZSBleGVjdXRlZCcgfSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gYXdhaXQgcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIHN1YnNjcmliZSBwcmVzZW5jZScsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVkaXRCdXNpbmVzc1Byb2ZpbGUocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XG4gIC8qKlxuICAgKiAjc3dhZ2dlci50YWdzID0gW1wiUHJvZmlsZVwiXVxuICAgICAjc3dhZ2dlci5vcGVyYXRpb25JZCA9ICdlZGl0QnVzaW5lc3NQcm9maWxlJ1xuICAgKiAjc3dhZ2dlci5kZXNjcmlwdGlvbiA9ICdFZGl0IHlvdXIgYnVzc2luZXNzIHByb2ZpbGUnXG4gICAgICNzd2FnZ2VyLmF1dG9Cb2R5PWZhbHNlXG4gICAgICNzd2FnZ2VyLnNlY3VyaXR5ID0gW3tcbiAgICAgICAgICAgIFwiYmVhcmVyQXV0aFwiOiBbXVxuICAgICB9XVxuICAgICAjc3dhZ2dlci5wYXJhbWV0ZXJzW1wic2Vzc2lvblwiXSA9IHtcbiAgICAgIHNjaGVtYTogJ05FUkRXSEFUU19BTUVSSUNBJ1xuICAgICB9XG4gICAgICNzd2FnZ2VyLnBhcmFtZXRlcnNbXCJvYmpcIl0gPSB7XG4gICAgICBpbjogJ2JvZHknLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgICRhZHJlc3M6ICdBdi4gTm9zc2EgU2VuaG9yYSBkZSBDb3BhY2FiYW5hLCAzMTUnLFxuICAgICAgICAkZW1haWw6ICd0ZXN0QHRlc3QuY29tLmJyJyxcbiAgICAgICAgJGNhdGVnb3JpZXM6IHtcbiAgICAgICAgICAkaWQ6IFwiMTMzNDM2NzQzMzg4MjE3XCIsXG4gICAgICAgICAgJGxvY2FsaXplZF9kaXNwbGF5X25hbWU6IFwiQXJ0ZXMgZSBlbnRyZXRlbmltZW50b1wiLFxuICAgICAgICAgICRub3RfYV9iaXo6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICAkd2Vic2l0ZTogW1xuICAgICAgICAgIFwiaHR0cHM6Ly93d3cud3BwY29ubmVjdC5pb1wiLFxuICAgICAgICAgIFwiaHR0cHM6Ly93d3cudGVzdGUyLmNvbS5iclwiLFxuICAgICAgICBdLFxuICAgICAgfVxuICAgICB9XG4gICAgIFxuICAgICAjc3dhZ2dlci5yZXF1ZXN0Qm9keSA9IHtcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgXCJAY29udGVudFwiOiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICBhZHJlc3M6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICBlbWFpbDogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgIGNhdGVnb3JpZXM6IHsgdHlwZTogXCJvYmplY3RcIiB9LFxuICAgICAgICAgICAgICB3ZWJzaXRlczogeyB0eXBlOiBcImFycmF5XCIgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGV4YW1wbGU6IHtcbiAgICAgICAgICAgIGFkcmVzczogJ0F2LiBOb3NzYSBTZW5ob3JhIGRlIENvcGFjYWJhbmEsIDMxNScsXG4gICAgICAgICAgICBlbWFpbDogJ3Rlc3RAdGVzdC5jb20uYnInLFxuICAgICAgICAgICAgY2F0ZWdvcmllczoge1xuICAgICAgICAgICAgICAkaWQ6IFwiMTMzNDM2NzQzMzg4MjE3XCIsXG4gICAgICAgICAgICAgICRsb2NhbGl6ZWRfZGlzcGxheV9uYW1lOiBcIkFydGVzIGUgZW50cmV0ZW5pbWVudG9cIixcbiAgICAgICAgICAgICAgJG5vdF9hX2JpejogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgd2Vic2l0ZTogW1xuICAgICAgICAgICAgICBcImh0dHBzOi8vd3d3LndwcGNvbm5lY3QuaW9cIixcbiAgICAgICAgICAgICAgXCJodHRwczovL3d3dy50ZXN0ZTIuY29tLmJyXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICB9XG4gICAqL1xuICB0cnkge1xuICAgIHJldHVybiByZXMuc3RhdHVzKDIwMCkuanNvbihhd2FpdCByZXEuY2xpZW50LmVkaXRCdXNpbmVzc1Byb2ZpbGUocmVxLmJvZHkpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgbWVzc2FnZTogJ0Vycm9yIG9uIGVkaXQgYnVzaW5lc3MgcHJvZmlsZScsXG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgfSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkEsSUFBQUEsR0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBOzs7QUFHQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFDQSxJ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
|
|
@@ -31,13 +31,15 @@ var _functions = require("../util/functions"); /*
|
|
|
31
31
|
* See the License for the specific language governing permissions and
|
|
32
32
|
* limitations under the License.
|
|
33
33
|
*/async function statusConnection(req, res, next) {try {const numbers = [];if (req.client && req.client.isConnected) {await req.client.isConnected();const localArr = (0, _functions.contactToArray)(req.body.phone || [], req.body.isGroup,
|
|
34
|
-
req.body.isNewsletter
|
|
34
|
+
req.body.isNewsletter,
|
|
35
|
+
req.body.isLid
|
|
35
36
|
);
|
|
36
37
|
let index = 0;
|
|
37
38
|
for (const contact of localArr) {
|
|
38
39
|
if (req.body.isGroup || req.body.isNewsletter) {
|
|
39
40
|
localArr[index] = contact;
|
|
40
41
|
} else if (numbers.indexOf(contact) < 0) {
|
|
42
|
+
console.log(contact);
|
|
41
43
|
const profile = await req.client.
|
|
42
44
|
checkNumberStatus(contact).
|
|
43
45
|
catch((error) => console.log(error));
|
|
@@ -75,4 +77,4 @@ var _functions = require("../util/functions"); /*
|
|
|
75
77
|
});
|
|
76
78
|
}
|
|
77
79
|
}
|
|
78
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnVuY3Rpb25zIiwicmVxdWlyZSIsInN0YXR1c0Nvbm5lY3Rpb24iLCJyZXEiLCJyZXMiLCJuZXh0IiwibnVtYmVycyIsImNsaWVudCIsImlzQ29ubmVjdGVkIiwibG9jYWxBcnIiLCJjb250YWN0VG9BcnJheSIsImJvZHkiLCJwaG9uZSIsImlzR3JvdXAiLCJpc05ld3NsZXR0ZXIiLCJpc0xpZCIsImluZGV4IiwiY29udGFjdCIsImluZGV4T2YiLCJjb25zb2xlIiwibG9nIiwicHJvZmlsZSIsImNoZWNrTnVtYmVyU3RhdHVzIiwiY2F0Y2giLCJlcnJvciIsIm51bWJlckV4aXN0cyIsIm51bSIsInNwbGl0Iiwic3RhdHVzIiwianNvbiIsInJlc3BvbnNlIiwibWVzc2FnZSIsImlkIiwiX3NlcmlhbGl6ZWQiLCJwdXNoIiwibG9nZ2VyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21pZGRsZXdhcmUvc3RhdHVzQ29ubmVjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjEgV1BQQ29ubmVjdCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IE5leHRGdW5jdGlvbiwgUmVxdWVzdCwgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcblxuaW1wb3J0IHsgY29udGFjdFRvQXJyYXkgfSBmcm9tICcuLi91dGlsL2Z1bmN0aW9ucyc7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHN0YXR1c0Nvbm5lY3Rpb24oXG4gIHJlcTogUmVxdWVzdCxcbiAgcmVzOiBSZXNwb25zZSxcbiAgbmV4dDogTmV4dEZ1bmN0aW9uXG4pIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBudW1iZXJzOiBhbnkgPSBbXTtcbiAgICBpZiAocmVxLmNsaWVudCAmJiByZXEuY2xpZW50LmlzQ29ubmVjdGVkKSB7XG4gICAgICBhd2FpdCByZXEuY2xpZW50LmlzQ29ubmVjdGVkKCk7XG5cbiAgICAgIGNvbnN0IGxvY2FsQXJyID0gY29udGFjdFRvQXJyYXkoXG4gICAgICAgIHJlcS5ib2R5LnBob25lIHx8IFtdLFxuICAgICAgICByZXEuYm9keS5pc0dyb3VwLFxuICAgICAgICByZXEuYm9keS5pc05ld3NsZXR0ZXIsXG4gICAgICAgIHJlcS5ib2R5LmlzTGlkXG4gICAgICApO1xuICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgIGZvciAoY29uc3QgY29udGFjdCBvZiBsb2NhbEFycikge1xuICAgICAgICBpZiAocmVxLmJvZHkuaXNHcm91cCB8fCByZXEuYm9keS5pc05ld3NsZXR0ZXIpIHtcbiAgICAgICAgICBsb2NhbEFycltpbmRleF0gPSBjb250YWN0O1xuICAgICAgICB9IGVsc2UgaWYgKG51bWJlcnMuaW5kZXhPZihjb250YWN0KSA8IDApIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhjb250YWN0KTtcbiAgICAgICAgICBjb25zdCBwcm9maWxlOiBhbnkgPSBhd2FpdCByZXEuY2xpZW50XG4gICAgICAgICAgICAuY2hlY2tOdW1iZXJTdGF0dXMoY29udGFjdClcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUubG9nKGVycm9yKSk7XG4gICAgICAgICAgaWYgKCFwcm9maWxlPy5udW1iZXJFeGlzdHMpIHtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IChjb250YWN0IGFzIGFueSkuc3BsaXQoJ0AnKVswXTtcbiAgICAgICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMCkuanNvbih7XG4gICAgICAgICAgICAgIHJlc3BvbnNlOiBudWxsLFxuICAgICAgICAgICAgICBzdGF0dXM6ICdDb25uZWN0ZWQnLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBgTyBuw7ptZXJvICR7bnVtfSBuw6NvIGV4aXN0ZS5gLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICgobnVtYmVycyBhcyBhbnkpLmluZGV4T2YocHJvZmlsZS5pZC5fc2VyaWFsaXplZCkgPCAwKSB7XG4gICAgICAgICAgICAgIChudW1iZXJzIGFzIGFueSkucHVzaChwcm9maWxlLmlkLl9zZXJpYWxpemVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIChsb2NhbEFyciBhcyBhbnkpW2luZGV4XSA9IHByb2ZpbGUuaWQuX3NlcmlhbGl6ZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGluZGV4Kys7XG4gICAgICB9XG4gICAgICByZXEuYm9keS5waG9uZSA9IGxvY2FsQXJyO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDQpLmpzb24oe1xuICAgICAgICByZXNwb25zZTogbnVsbCxcbiAgICAgICAgc3RhdHVzOiAnRGlzY29ubmVjdGVkJyxcbiAgICAgICAgbWVzc2FnZTogJ0Egc2Vzc8OjbyBkbyBXaGF0c0FwcCBuw6NvIGVzdMOhIGF0aXZhLicsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbmV4dCgpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiByZXMuc3RhdHVzKDQwNCkuanNvbih7XG4gICAgICByZXNwb25zZTogbnVsbCxcbiAgICAgIHN0YXR1czogJ0Rpc2Nvbm5lY3RlZCcsXG4gICAgICBtZXNzYWdlOiAnQSBzZXNzw6NvIGRvIFdoYXRzQXBwIG7Do28gZXN0w6EgYXRpdmEuJyxcbiAgICB9KTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQkEsSUFBQUEsVUFBQSxHQUFBQyxPQUFBLHNCQUFtRCxDQWxCbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBTWUsZUFBZUMsZ0JBQWdCQSxDQUM1Q0MsR0FBWSxFQUNaQyxHQUFhLEVBQ2JDLElBQWtCLEVBQ2xCLENBQ0EsSUFBSSxDQUNGLE1BQU1DLE9BQVksR0FBRyxFQUFFLENBQ3ZCLElBQUlILEdBQUcsQ0FBQ0ksTUFBTSxJQUFJSixHQUFHLENBQUNJLE1BQU0sQ0FBQ0MsV0FBVyxFQUFFLENBQ3hDLE1BQU1MLEdBQUcsQ0FBQ0ksTUFBTSxDQUFDQyxXQUFXLENBQUMsQ0FBQyxDQUU5QixNQUFNQyxRQUFRLEdBQUcsSUFBQUMseUJBQWMsRUFDN0JQLEdBQUcsQ0FBQ1EsSUFBSSxDQUFDQyxLQUFLLElBQUksRUFBRSxFQUNwQlQsR0FBRyxDQUFDUSxJQUFJLENBQUNFLE9BQU87UUFDaEJWLEdBQUcsQ0FBQ1EsSUFBSSxDQUFDRyxZQUFZO1FBQ3JCWCxHQUFHLENBQUNRLElBQUksQ0FBQ0k7TUFDWCxDQUFDO01BQ0QsSUFBSUMsS0FBSyxHQUFHLENBQUM7TUFDYixLQUFLLE1BQU1DLE9BQU8sSUFBSVIsUUFBUSxFQUFFO1FBQzlCLElBQUlOLEdBQUcsQ0FBQ1EsSUFBSSxDQUFDRSxPQUFPLElBQUlWLEdBQUcsQ0FBQ1EsSUFBSSxDQUFDRyxZQUFZLEVBQUU7VUFDN0NMLFFBQVEsQ0FBQ08sS0FBSyxDQUFDLEdBQUdDLE9BQU87UUFDM0IsQ0FBQyxNQUFNLElBQUlYLE9BQU8sQ0FBQ1ksT0FBTyxDQUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7VUFDdkNFLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDSCxPQUFPLENBQUM7VUFDcEIsTUFBTUksT0FBWSxHQUFHLE1BQU1sQixHQUFHLENBQUNJLE1BQU07VUFDbENlLGlCQUFpQixDQUFDTCxPQUFPLENBQUM7VUFDMUJNLEtBQUssQ0FBQyxDQUFDQyxLQUFLLEtBQUtMLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDSSxLQUFLLENBQUMsQ0FBQztVQUN2QyxJQUFJLENBQUNILE9BQU8sRUFBRUksWUFBWSxFQUFFO1lBQzFCLE1BQU1DLEdBQUcsR0FBSVQsT0FBTyxDQUFTVSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFDLE9BQU92QixHQUFHLENBQUN3QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUNDLElBQUksQ0FBQztjQUMxQkMsUUFBUSxFQUFFLElBQUk7Y0FDZEYsTUFBTSxFQUFFLFdBQVc7Y0FDbkJHLE9BQU8sRUFBRSxZQUFZTCxHQUFHO1lBQzFCLENBQUMsQ0FBQztVQUNKLENBQUMsTUFBTTtZQUNMLElBQUtwQixPQUFPLENBQVNZLE9BQU8sQ0FBQ0csT0FBTyxDQUFDVyxFQUFFLENBQUNDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRTtjQUN2RDNCLE9BQU8sQ0FBUzRCLElBQUksQ0FBQ2IsT0FBTyxDQUFDVyxFQUFFLENBQUNDLFdBQVcsQ0FBQztZQUMvQztZQUNDeEIsUUFBUSxDQUFTTyxLQUFLLENBQUMsR0FBR0ssT0FBTyxDQUFDVyxFQUFFLENBQUNDLFdBQVc7VUFDbkQ7UUFDRjtRQUNBakIsS0FBSyxFQUFFO01BQ1Q7TUFDQWIsR0FBRyxDQUFDUSxJQUFJLENBQUNDLEtBQUssR0FBR0gsUUFBUTtJQUMzQixDQUFDLE1BQU07TUFDTCxPQUFPTCxHQUFHLENBQUN3QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUNDLElBQUksQ0FBQztRQUMxQkMsUUFBUSxFQUFFLElBQUk7UUFDZEYsTUFBTSxFQUFFLGNBQWM7UUFDdEJHLE9BQU8sRUFBRTtNQUNYLENBQUMsQ0FBQztJQUNKO0lBQ0ExQixJQUFJLENBQUMsQ0FBQztFQUNSLENBQUMsQ0FBQyxPQUFPbUIsS0FBSyxFQUFFO0lBQ2RyQixHQUFHLENBQUNnQyxNQUFNLENBQUNYLEtBQUssQ0FBQ0EsS0FBSyxDQUFDO0lBQ3ZCLE9BQU9wQixHQUFHLENBQUN3QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUNDLElBQUksQ0FBQztNQUMxQkMsUUFBUSxFQUFFLElBQUk7TUFDZEYsTUFBTSxFQUFFLGNBQWM7TUFDdEJHLE9BQU8sRUFBRTtJQUNYLENBQUMsQ0FBQztFQUNKO0FBQ0YiLCJpZ25vcmVMaXN0IjpbXX0=
|
package/dist/swagger.json
CHANGED
|
@@ -602,6 +602,9 @@
|
|
|
602
602
|
"isNewsletter": {
|
|
603
603
|
"type": "boolean"
|
|
604
604
|
},
|
|
605
|
+
"isLid": {
|
|
606
|
+
"type": "boolean"
|
|
607
|
+
},
|
|
605
608
|
"message": {
|
|
606
609
|
"type": "string"
|
|
607
610
|
},
|
|
@@ -616,6 +619,7 @@
|
|
|
616
619
|
"phone": "5521999999999",
|
|
617
620
|
"isGroup": false,
|
|
618
621
|
"isNewsletter": false,
|
|
622
|
+
"isLid": false,
|
|
619
623
|
"message": "Hi from WPPConnect"
|
|
620
624
|
}
|
|
621
625
|
},
|
|
@@ -624,6 +628,7 @@
|
|
|
624
628
|
"phone": "5521999999999",
|
|
625
629
|
"isGroup": false,
|
|
626
630
|
"isNewsletter": false,
|
|
631
|
+
"isLid": false,
|
|
627
632
|
"message": "Hi from WPPConnect with reply",
|
|
628
633
|
"options": {
|
|
629
634
|
"quotedMsg": "true_...@c.us_3EB01DE65ACC6_out"
|
|
@@ -743,6 +748,9 @@
|
|
|
743
748
|
"isNewsletter": {
|
|
744
749
|
"type": "boolean"
|
|
745
750
|
},
|
|
751
|
+
"isLid": {
|
|
752
|
+
"type": "boolean"
|
|
753
|
+
},
|
|
746
754
|
"filename": {
|
|
747
755
|
"type": "string"
|
|
748
756
|
},
|
|
@@ -760,6 +768,7 @@
|
|
|
760
768
|
"phone": "5521999999999",
|
|
761
769
|
"isGroup": false,
|
|
762
770
|
"isNewsletter": false,
|
|
771
|
+
"isLid": false,
|
|
763
772
|
"filename": "file name lol",
|
|
764
773
|
"caption": "caption for my file",
|
|
765
774
|
"base64": "<base64> string"
|
|
@@ -998,6 +1007,9 @@
|
|
|
998
1007
|
"isNewsletter": {
|
|
999
1008
|
"type": "boolean"
|
|
1000
1009
|
},
|
|
1010
|
+
"isLid": {
|
|
1011
|
+
"type": "boolean"
|
|
1012
|
+
},
|
|
1001
1013
|
"filename": {
|
|
1002
1014
|
"type": "string"
|
|
1003
1015
|
},
|
|
@@ -1015,6 +1027,7 @@
|
|
|
1015
1027
|
"phone": "5521999999999",
|
|
1016
1028
|
"isGroup": false,
|
|
1017
1029
|
"isNewsletter": false,
|
|
1030
|
+
"isLid": false,
|
|
1018
1031
|
"filename": "file name lol",
|
|
1019
1032
|
"caption": "caption for my file",
|
|
1020
1033
|
"base64": "<base64> string"
|
|
@@ -1070,6 +1083,9 @@
|
|
|
1070
1083
|
"isNewsletter": {
|
|
1071
1084
|
"type": "boolean"
|
|
1072
1085
|
},
|
|
1086
|
+
"isLid": {
|
|
1087
|
+
"type": "boolean"
|
|
1088
|
+
},
|
|
1073
1089
|
"filename": {
|
|
1074
1090
|
"type": "string"
|
|
1075
1091
|
},
|
|
@@ -1087,6 +1103,7 @@
|
|
|
1087
1103
|
"phone": "5521999999999",
|
|
1088
1104
|
"isGroup": false,
|
|
1089
1105
|
"isNewsletter": false,
|
|
1106
|
+
"isLid": false,
|
|
1090
1107
|
"filename": "file name lol",
|
|
1091
1108
|
"caption": "caption for my file",
|
|
1092
1109
|
"base64": "<base64> string"
|
|
@@ -1495,10 +1512,10 @@
|
|
|
1495
1512
|
"examples": {
|
|
1496
1513
|
"Default": {
|
|
1497
1514
|
"value": {
|
|
1498
|
-
"phone": "
|
|
1515
|
+
"phone": "groupId@g.us",
|
|
1499
1516
|
"isGroup": true,
|
|
1500
1517
|
"message": "Your text message",
|
|
1501
|
-
"mentioned": ["
|
|
1518
|
+
"mentioned": ["556593077171@c.us"]
|
|
1502
1519
|
}
|
|
1503
1520
|
}
|
|
1504
1521
|
}
|
|
@@ -144,6 +144,10 @@ var _factory = _interopRequireDefault(require("./tokenStore/factory")); /*
|
|
|
144
144
|
}
|
|
145
145
|
} catch (e) {
|
|
146
146
|
req.logger.error(e);
|
|
147
|
+
if (e instanceof Error && e.name == 'TimeoutError') {
|
|
148
|
+
const client = this.getClient(session);
|
|
149
|
+
client.status = 'CLOSED';
|
|
150
|
+
}
|
|
147
151
|
}
|
|
148
152
|
}
|
|
149
153
|
|
|
@@ -369,4 +373,4 @@ var _factory = _interopRequireDefault(require("./tokenStore/factory")); /*
|
|
|
369
373
|
return client;
|
|
370
374
|
}
|
|
371
375
|
}exports.default = CreateSessionUtil;
|
|
372
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3BwY29ubmVjdCIsInJlcXVpcmUiLCJfc2Vzc2lvbkNvbnRyb2xsZXIiLCJfY2hhdFdvb3RDbGllbnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2Z1bmN0aW9ucyIsIl9zZXNzaW9uVXRpbCIsIl9mYWN0b3J5IiwiQ3JlYXRlU2Vzc2lvblV0aWwiLCJzdGFydENoYXRXb290Q2xpZW50IiwiY2xpZW50IiwiY29uZmlnIiwiY2hhdFdvb3QiLCJjaGF0V29vdENsaWVudCIsInNlc3Npb24iLCJjcmVhdGVTZXNzaW9uVXRpbCIsInJlcSIsImNsaWVudHNBcnJheSIsInJlcyIsImdldENsaWVudCIsInN0YXR1cyIsImJvZHkiLCJ0b2tlblN0b3JlIiwiRmFjdG9yeSIsIm15VG9rZW5TdG9yZSIsImNyZWF0ZVRva2VuU3RvcnkiLCJ0b2tlbkRhdGEiLCJnZXRUb2tlbiIsInNldFRva2VuIiwic2VydmVyT3B0aW9ucyIsImN1c3RvbVVzZXJEYXRhRGlyIiwiY3JlYXRlT3B0aW9ucyIsInB1cHBldGVlck9wdGlvbnMiLCJ1c2VyRGF0YURpciIsIndwcENsaWVudCIsImNyZWF0ZSIsIk9iamVjdCIsImFzc2lnbiIsInBob25lTnVtYmVyIiwicGhvbmUiLCJkZXZpY2VOYW1lIiwidW5kZWZpbmVkIiwicG93ZXJlZEJ5IiwiY2F0Y2hMaW5rQ29kZSIsImNvZGUiLCJleHBvcnRQaG9uZUNvZGUiLCJjYXRjaFFSIiwiYmFzZTY0UXIiLCJhc2NpaVFSIiwiYXR0ZW1wdCIsInVybENvZGUiLCJleHBvcnRRUiIsIm9uTG9hZGluZ1NjcmVlbiIsInBlcmNlbnQiLCJtZXNzYWdlIiwibG9nZ2VyIiwiaW5mbyIsInN0YXR1c0ZpbmQiLCJldmVudEVtaXR0ZXIiLCJlbWl0IiwicXJjb2RlIiwiY2xvc2UiLCJjYWxsV2ViSG9vayIsImVycm9yIiwic3RhcnQiLCJ3ZWJob29rIiwib25QYXJ0aWNpcGFudHNDaGFuZ2VkIiwib25SZWFjdGlvbk1lc3NhZ2UiLCJvblJldm9rZWRNZXNzYWdlIiwib25Qb2xsUmVzcG9uc2UiLCJvbkxhYmVsVXBkYXRlZCIsImUiLCJvcGVuZGF0YSIsInBob25lQ29kZSIsImlvIiwiZGF0YSIsIl9oZWFkZXJTZW50IiwianNvbiIsInFyQ29kZSIsInVybGNvZGUiLCJyZXBsYWNlIiwiaW1hZ2VCdWZmZXIiLCJCdWZmZXIiLCJmcm9tIiwidG9TdHJpbmciLCJpc0Nvbm5lY3RlZCIsInN0YXJ0SGVscGVyIiwiY2hlY2tTdGF0ZVNlc3Npb24iLCJsaXN0ZW5NZXNzYWdlcyIsImxpc3RlbkFja3MiLCJvblByZXNlbmNlQ2hhbmdlZCIsIm9uU3RhdGVDaGFuZ2UiLCJzdGF0ZSIsImNvbmZsaXRzIiwiU29ja2V0U3RhdGUiLCJDT05GTElDVCIsImluY2x1ZGVzIiwidXNlSGVyZSIsIm9uTWVzc2FnZSIsInR5cGUiLCJvbkxpdmVMb2NhdGlvbiIsInNlbmRlciIsImlkIiwibG9jYXRpb24iLCJvbkFueU1lc3NhZ2UiLCJkb3dubG9hZCIsIndlYnNvY2tldCIsImF1dG9Eb3dubG9hZCIsImZyb21NZSIsInJlc3BvbnNlIiwib25TZWxmTWVzc2FnZSIsIm9uSW5jb21pbmdDYWxsIiwiY2FsbCIsIm9uQWNrIiwiYWNrIiwicHJlc2VuY2VDaGFuZ2VkRXZlbnQiLCJyZWFjdGlvbiIsIm9uVXBkYXRlTGFiZWwiLCJlbmNvZGVGdW5jdGlvbiIsIkpTT04iLCJzdHJpbmdpZnkiLCJkZWNvZGVGdW5jdGlvbiIsInRleHQiLCJvYmplY3QiLCJwYXJzZSIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvY3JlYXRlU2Vzc2lvblV0aWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIxIFdQUENvbm5lY3QgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3JlYXRlLCBTb2NrZXRTdGF0ZSB9IGZyb20gJ0B3cHBjb25uZWN0LXRlYW0vd3BwY29ubmVjdCc7XG5pbXBvcnQgeyBSZXF1ZXN0IH0gZnJvbSAnZXhwcmVzcyc7XG5cbmltcG9ydCB7IGRvd25sb2FkIH0gZnJvbSAnLi4vY29udHJvbGxlci9zZXNzaW9uQ29udHJvbGxlcic7XG5pbXBvcnQgeyBXaGF0c0FwcFNlcnZlciB9IGZyb20gJy4uL3R5cGVzL1doYXRzQXBwU2VydmVyJztcbmltcG9ydCBjaGF0V29vdENsaWVudCBmcm9tICcuL2NoYXRXb290Q2xpZW50JztcbmltcG9ydCB7IGF1dG9Eb3dubG9hZCwgY2FsbFdlYkhvb2ssIHN0YXJ0SGVscGVyIH0gZnJvbSAnLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgY2xpZW50c0FycmF5LCBldmVudEVtaXR0ZXIgfSBmcm9tICcuL3Nlc3Npb25VdGlsJztcbmltcG9ydCBGYWN0b3J5IGZyb20gJy4vdG9rZW5TdG9yZS9mYWN0b3J5JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ3JlYXRlU2Vzc2lvblV0aWwge1xuICBzdGFydENoYXRXb290Q2xpZW50KGNsaWVudDogYW55KSB7XG4gICAgaWYgKGNsaWVudC5jb25maWcuY2hhdFdvb3QgJiYgIWNsaWVudC5fY2hhdFdvb3RDbGllbnQpXG4gICAgICBjbGllbnQuX2NoYXRXb290Q2xpZW50ID0gbmV3IGNoYXRXb290Q2xpZW50KFxuICAgICAgICBjbGllbnQuY29uZmlnLmNoYXRXb290LFxuICAgICAgICBjbGllbnQuc2Vzc2lvblxuICAgICAgKTtcbiAgICByZXR1cm4gY2xpZW50Ll9jaGF0V29vdENsaWVudDtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNlc3Npb25VdGlsKFxuICAgIHJlcTogYW55LFxuICAgIGNsaWVudHNBcnJheTogYW55LFxuICAgIHNlc3Npb246IHN0cmluZyxcbiAgICByZXM/OiBhbnlcbiAgKSB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBjbGllbnQgPSB0aGlzLmdldENsaWVudChzZXNzaW9uKSBhcyBhbnk7XG4gICAgICBpZiAoY2xpZW50LnN0YXR1cyAhPSBudWxsICYmIGNsaWVudC5zdGF0dXMgIT09ICdDTE9TRUQnKSByZXR1cm47XG4gICAgICBjbGllbnQuc3RhdHVzID0gJ0lOSVRJQUxJWklORyc7XG4gICAgICBjbGllbnQuY29uZmlnID0gcmVxLmJvZHk7XG5cbiAgICAgIGNvbnN0IHRva2VuU3RvcmUgPSBuZXcgRmFjdG9yeSgpO1xuICAgICAgY29uc3QgbXlUb2tlblN0b3JlID0gdG9rZW5TdG9yZS5jcmVhdGVUb2tlblN0b3J5KGNsaWVudCk7XG4gICAgICBjb25zdCB0b2tlbkRhdGEgPSBhd2FpdCBteVRva2VuU3RvcmUuZ2V0VG9rZW4oc2Vzc2lvbik7XG5cbiAgICAgIC8vIHdlIG5lZWQgdGhpcyB0byB1cGRhdGUgcGhvbmUgaW4gY29uZmlnIGV2ZXJ5IHRpbWUgc2Vzc2lvbiBzdGFydHMsIHNvIHdlIGNhbiBhc2sgZm9yIGNvZGUgZm9yIGl0IGFnYWluLlxuICAgICAgbXlUb2tlblN0b3JlLnNldFRva2VuKHNlc3Npb24sIHRva2VuRGF0YSA/PyB7fSk7XG5cbiAgICAgIHRoaXMuc3RhcnRDaGF0V29vdENsaWVudChjbGllbnQpO1xuXG4gICAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMuY3VzdG9tVXNlckRhdGFEaXIpIHtcbiAgICAgICAgcmVxLnNlcnZlck9wdGlvbnMuY3JlYXRlT3B0aW9ucy5wdXBwZXRlZXJPcHRpb25zID0ge1xuICAgICAgICAgIHVzZXJEYXRhRGlyOiByZXEuc2VydmVyT3B0aW9ucy5jdXN0b21Vc2VyRGF0YURpciArIHNlc3Npb24sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdwcENsaWVudCA9IGF3YWl0IGNyZWF0ZShcbiAgICAgICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICB7fSxcbiAgICAgICAgICB7IHRva2VuU3RvcmU6IG15VG9rZW5TdG9yZSB9LFxuICAgICAgICAgIHJlcS5zZXJ2ZXJPcHRpb25zLmNyZWF0ZU9wdGlvbnMsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2Vzc2lvbjogc2Vzc2lvbixcbiAgICAgICAgICAgIHBob25lTnVtYmVyOiBjbGllbnQuY29uZmlnLnBob25lID8/IG51bGwsXG4gICAgICAgICAgICBkZXZpY2VOYW1lOlxuICAgICAgICAgICAgICBjbGllbnQuY29uZmlnLnBob25lID09IHVuZGVmaW5lZCAvLyBidWcgd2hlbiB1c2luZyBwaG9uZSBjb2RlIHRoaXMgc2hvdWxkbid0IGJlIHBhc3NlZCAoaHR0cHM6Ly9naXRodWIuY29tL3dwcGNvbm5lY3QtdGVhbS93cHBjb25uZWN0LXNlcnZlci9pc3N1ZXMvMTY4NyNpc3N1ZWNvbW1lbnQtMjA5OTM1Nzg3NClcbiAgICAgICAgICAgICAgICA/IGNsaWVudC5jb25maWc/LmRldmljZU5hbWUgfHxcbiAgICAgICAgICAgICAgICAgIHJlcS5zZXJ2ZXJPcHRpb25zLmRldmljZU5hbWUgfHxcbiAgICAgICAgICAgICAgICAgICdXcHBDb25uZWN0J1xuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcG93ZXJlZEJ5OlxuICAgICAgICAgICAgICBjbGllbnQuY29uZmlnLnBob25lID09IHVuZGVmaW5lZCAvLyBidWcgd2hlbiB1c2luZyBwaG9uZSBjb2RlIHRoaXMgc2hvdWxkbid0IGJlIHBhc3NlZCAoaHR0cHM6Ly9naXRodWIuY29tL3dwcGNvbm5lY3QtdGVhbS93cHBjb25uZWN0LXNlcnZlci9pc3N1ZXMvMTY4NyNpc3N1ZWNvbW1lbnQtMjA5OTM1Nzg3NClcbiAgICAgICAgICAgICAgICA/IGNsaWVudC5jb25maWc/LnBvd2VyZWRCeSB8fFxuICAgICAgICAgICAgICAgICAgcmVxLnNlcnZlck9wdGlvbnMucG93ZXJlZEJ5IHx8XG4gICAgICAgICAgICAgICAgICAnV1BQQ29ubmVjdC1TZXJ2ZXInXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjYXRjaExpbmtDb2RlOiAoY29kZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZXhwb3J0UGhvbmVDb2RlKHJlcSwgY2xpZW50LmNvbmZpZy5waG9uZSwgY29kZSwgY2xpZW50LCByZXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhdGNoUVI6IChcbiAgICAgICAgICAgICAgYmFzZTY0UXI6IGFueSxcbiAgICAgICAgICAgICAgYXNjaWlRUjogYW55LFxuICAgICAgICAgICAgICBhdHRlbXB0OiBhbnksXG4gICAgICAgICAgICAgIHVybENvZGU6IHN0cmluZ1xuICAgICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZXhwb3J0UVIocmVxLCBiYXNlNjRRciwgdXJsQ29kZSwgY2xpZW50LCByZXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uTG9hZGluZ1NjcmVlbjogKHBlcmNlbnQ6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIHJlcS5sb2dnZXIuaW5mbyhgWyR7c2Vzc2lvbn1dICR7cGVyY2VudH0lIC0gJHttZXNzYWdlfWApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0YXR1c0ZpbmQ6IChzdGF0dXNGaW5kOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBldmVudEVtaXR0ZXIuZW1pdChcbiAgICAgICAgICAgICAgICAgIGBzdGF0dXMtJHtjbGllbnQuc2Vzc2lvbn1gLFxuICAgICAgICAgICAgICAgICAgY2xpZW50LFxuICAgICAgICAgICAgICAgICAgc3RhdHVzRmluZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgc3RhdHVzRmluZCA9PT0gJ2F1dG9jbG9zZUNhbGxlZCcgfHxcbiAgICAgICAgICAgICAgICAgIHN0YXR1c0ZpbmQgPT09ICdkZXNjb25uZWN0ZWRNb2JpbGUnXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBjbGllbnQuc3RhdHVzID0gJ0NMT1NFRCc7XG4gICAgICAgICAgICAgICAgICBjbGllbnQucXJjb2RlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgIGNsaWVudC5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgY2xpZW50c0FycmF5W3Nlc3Npb25dID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ3N0YXR1cy1maW5kJywge1xuICAgICAgICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXNGaW5kLFxuICAgICAgICAgICAgICAgICAgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmVxLmxvZ2dlci5pbmZvKHN0YXR1c0ZpbmQgKyAnXFxuXFxuJyk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAgIGNsaWVudCA9IGNsaWVudHNBcnJheVtzZXNzaW9uXSA9IE9iamVjdC5hc3NpZ24od3BwQ2xpZW50LCBjbGllbnQpO1xuICAgICAgYXdhaXQgdGhpcy5zdGFydChyZXEsIGNsaWVudCk7XG5cbiAgICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLm9uUGFydGljaXBhbnRzQ2hhbmdlZCkge1xuICAgICAgICBhd2FpdCB0aGlzLm9uUGFydGljaXBhbnRzQ2hhbmdlZChyZXEsIGNsaWVudCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLm9uUmVhY3Rpb25NZXNzYWdlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub25SZWFjdGlvbk1lc3NhZ2UoY2xpZW50LCByZXEpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5vblJldm9rZWRNZXNzYWdlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub25SZXZva2VkTWVzc2FnZShjbGllbnQsIHJlcSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLm9uUG9sbFJlc3BvbnNlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub25Qb2xsUmVzcG9uc2UoY2xpZW50LCByZXEpO1xuICAgICAgfVxuICAgICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2sub25MYWJlbFVwZGF0ZWQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5vbkxhYmVsVXBkYXRlZChjbGllbnQsIHJlcSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVxLmxvZ2dlci5lcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvcGVuZGF0YShyZXE6IFJlcXVlc3QsIHNlc3Npb246IHN0cmluZywgcmVzPzogYW55KSB7XG4gICAgYXdhaXQgdGhpcy5jcmVhdGVTZXNzaW9uVXRpbChyZXEsIGNsaWVudHNBcnJheSwgc2Vzc2lvbiwgcmVzKTtcbiAgfVxuXG4gIGV4cG9ydFBob25lQ29kZShcbiAgICByZXE6IGFueSxcbiAgICBwaG9uZTogYW55LFxuICAgIHBob25lQ29kZTogYW55LFxuICAgIGNsaWVudDogV2hhdHNBcHBTZXJ2ZXIsXG4gICAgcmVzPzogYW55XG4gICkge1xuICAgIGV2ZW50RW1pdHRlci5lbWl0KGBwaG9uZUNvZGUtJHtjbGllbnQuc2Vzc2lvbn1gLCBwaG9uZUNvZGUsIGNsaWVudCk7XG5cbiAgICBPYmplY3QuYXNzaWduKGNsaWVudCwge1xuICAgICAgc3RhdHVzOiAnUEhPTkVDT0RFJyxcbiAgICAgIHBob25lQ29kZTogcGhvbmVDb2RlLFxuICAgICAgcGhvbmU6IHBob25lLFxuICAgIH0pO1xuXG4gICAgcmVxLmlvLmVtaXQoJ3Bob25lQ29kZScsIHtcbiAgICAgIGRhdGE6IHBob25lQ29kZSxcbiAgICAgIHBob25lOiBwaG9uZSxcbiAgICAgIHNlc3Npb246IGNsaWVudC5zZXNzaW9uLFxuICAgIH0pO1xuXG4gICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdwaG9uZUNvZGUnLCB7XG4gICAgICBwaG9uZUNvZGU6IHBob25lQ29kZSxcbiAgICAgIHBob25lOiBwaG9uZSxcbiAgICAgIHNlc3Npb246IGNsaWVudC5zZXNzaW9uLFxuICAgIH0pO1xuXG4gICAgaWYgKHJlcyAmJiAhcmVzLl9oZWFkZXJTZW50KVxuICAgICAgcmVzLnN0YXR1cygyMDApLmpzb24oe1xuICAgICAgICBzdGF0dXM6ICdwaG9uZUNvZGUnLFxuICAgICAgICBwaG9uZTogcGhvbmUsXG4gICAgICAgIHBob25lQ29kZTogcGhvbmVDb2RlLFxuICAgICAgICBzZXNzaW9uOiBjbGllbnQuc2Vzc2lvbixcbiAgICAgIH0pO1xuICB9XG5cbiAgZXhwb3J0UVIoXG4gICAgcmVxOiBhbnksXG4gICAgcXJDb2RlOiBhbnksXG4gICAgdXJsQ29kZTogYW55LFxuICAgIGNsaWVudDogV2hhdHNBcHBTZXJ2ZXIsXG4gICAgcmVzPzogYW55XG4gICkge1xuICAgIGV2ZW50RW1pdHRlci5lbWl0KGBxcmNvZGUtJHtjbGllbnQuc2Vzc2lvbn1gLCBxckNvZGUsIHVybENvZGUsIGNsaWVudCk7XG4gICAgT2JqZWN0LmFzc2lnbihjbGllbnQsIHtcbiAgICAgIHN0YXR1czogJ1FSQ09ERScsXG4gICAgICBxcmNvZGU6IHFyQ29kZSxcbiAgICAgIHVybGNvZGU6IHVybENvZGUsXG4gICAgfSk7XG5cbiAgICBxckNvZGUgPSBxckNvZGUucmVwbGFjZSgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LCcsICcnKTtcbiAgICBjb25zdCBpbWFnZUJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHFyQ29kZSwgJ2Jhc2U2NCcpO1xuXG4gICAgcmVxLmlvLmVtaXQoJ3FyQ29kZScsIHtcbiAgICAgIGRhdGE6ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsJyArIGltYWdlQnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgIHNlc3Npb246IGNsaWVudC5zZXNzaW9uLFxuICAgIH0pO1xuXG4gICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdxcmNvZGUnLCB7XG4gICAgICBxcmNvZGU6IHFyQ29kZSxcbiAgICAgIHVybGNvZGU6IHVybENvZGUsXG4gICAgICBzZXNzaW9uOiBjbGllbnQuc2Vzc2lvbixcbiAgICB9KTtcbiAgICBpZiAocmVzICYmICFyZXMuX2hlYWRlclNlbnQpXG4gICAgICByZXMuc3RhdHVzKDIwMCkuanNvbih7XG4gICAgICAgIHN0YXR1czogJ3FyY29kZScsXG4gICAgICAgIHFyY29kZTogcXJDb2RlLFxuICAgICAgICB1cmxjb2RlOiB1cmxDb2RlLFxuICAgICAgICBzZXNzaW9uOiBjbGllbnQuc2Vzc2lvbixcbiAgICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgb25QYXJ0aWNpcGFudHNDaGFuZ2VkKHJlcTogYW55LCBjbGllbnQ6IGFueSkge1xuICAgIGF3YWl0IGNsaWVudC5pc0Nvbm5lY3RlZCgpO1xuICAgIGF3YWl0IGNsaWVudC5vblBhcnRpY2lwYW50c0NoYW5nZWQoKG1lc3NhZ2U6IGFueSkgPT4ge1xuICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdvbnBhcnRpY2lwYW50c2NoYW5nZWQnLCBtZXNzYWdlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0KHJlcTogUmVxdWVzdCwgY2xpZW50OiBXaGF0c0FwcFNlcnZlcikge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjbGllbnQuaXNDb25uZWN0ZWQoKTtcbiAgICAgIE9iamVjdC5hc3NpZ24oY2xpZW50LCB7IHN0YXR1czogJ0NPTk5FQ1RFRCcsIHFyY29kZTogbnVsbCB9KTtcblxuICAgICAgcmVxLmxvZ2dlci5pbmZvKGBTdGFydGVkIFNlc3Npb246ICR7Y2xpZW50LnNlc3Npb259YCk7XG4gICAgICAvL2NhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnc2Vzc2lvbi1sb2dnZWQnLCB7IHN0YXR1czogJ0NPTk5FQ1RFRCd9KTtcbiAgICAgIHJlcS5pby5lbWl0KCdzZXNzaW9uLWxvZ2dlZCcsIHsgc3RhdHVzOiB0cnVlLCBzZXNzaW9uOiBjbGllbnQuc2Vzc2lvbiB9KTtcbiAgICAgIHN0YXJ0SGVscGVyKGNsaWVudCwgcmVxKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmVxLmxvZ2dlci5lcnJvcihlcnJvcik7XG4gICAgICByZXEuaW8uZW1pdCgnc2Vzc2lvbi1lcnJvcicsIGNsaWVudC5zZXNzaW9uKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmNoZWNrU3RhdGVTZXNzaW9uKGNsaWVudCwgcmVxKTtcbiAgICBhd2FpdCB0aGlzLmxpc3Rlbk1lc3NhZ2VzKGNsaWVudCwgcmVxKTtcblxuICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLmxpc3RlbkFja3MpIHtcbiAgICAgIGF3YWl0IHRoaXMubGlzdGVuQWNrcyhjbGllbnQsIHJlcSk7XG4gICAgfVxuXG4gICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2sub25QcmVzZW5jZUNoYW5nZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMub25QcmVzZW5jZUNoYW5nZWQoY2xpZW50LCByZXEpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNoZWNrU3RhdGVTZXNzaW9uKGNsaWVudDogV2hhdHNBcHBTZXJ2ZXIsIHJlcTogUmVxdWVzdCkge1xuICAgIGF3YWl0IGNsaWVudC5vblN0YXRlQ2hhbmdlKChzdGF0ZSkgPT4ge1xuICAgICAgcmVxLmxvZ2dlci5pbmZvKGBTdGF0ZSBDaGFuZ2UgJHtzdGF0ZX06ICR7Y2xpZW50LnNlc3Npb259YCk7XG4gICAgICBjb25zdCBjb25mbGl0cyA9IFtTb2NrZXRTdGF0ZS5DT05GTElDVF07XG5cbiAgICAgIGlmIChjb25mbGl0cy5pbmNsdWRlcyhzdGF0ZSkpIHtcbiAgICAgICAgY2xpZW50LnVzZUhlcmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGxpc3Rlbk1lc3NhZ2VzKGNsaWVudDogV2hhdHNBcHBTZXJ2ZXIsIHJlcTogUmVxdWVzdCkge1xuICAgIGF3YWl0IGNsaWVudC5vbk1lc3NhZ2UoYXN5bmMgKG1lc3NhZ2U6IGFueSkgPT4ge1xuICAgICAgZXZlbnRFbWl0dGVyLmVtaXQoYG1lbnNhZ2VtLSR7Y2xpZW50LnNlc3Npb259YCwgY2xpZW50LCBtZXNzYWdlKTtcbiAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnb25tZXNzYWdlJywgbWVzc2FnZSk7XG4gICAgICBpZiAobWVzc2FnZS50eXBlID09PSAnbG9jYXRpb24nKVxuICAgICAgICBjbGllbnQub25MaXZlTG9jYXRpb24obWVzc2FnZS5zZW5kZXIuaWQsIChsb2NhdGlvbikgPT4ge1xuICAgICAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnbG9jYXRpb24nLCBsb2NhdGlvbik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgYXdhaXQgY2xpZW50Lm9uQW55TWVzc2FnZShhc3luYyAobWVzc2FnZTogYW55KSA9PiB7XG4gICAgICBtZXNzYWdlLnNlc3Npb24gPSBjbGllbnQuc2Vzc2lvbjtcblxuICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ3N0aWNrZXInKSB7XG4gICAgICAgIGRvd25sb2FkKG1lc3NhZ2UsIGNsaWVudCwgcmVxLmxvZ2dlcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgcmVxLnNlcnZlck9wdGlvbnM/LndlYnNvY2tldD8uYXV0b0Rvd25sb2FkIHx8XG4gICAgICAgIChyZXEuc2VydmVyT3B0aW9ucz8ud2ViaG9vaz8uYXV0b0Rvd25sb2FkICYmIG1lc3NhZ2UuZnJvbU1lID09IGZhbHNlKVxuICAgICAgKSB7XG4gICAgICAgIGF3YWl0IGF1dG9Eb3dubG9hZChjbGllbnQsIHJlcSwgbWVzc2FnZSk7XG4gICAgICB9XG5cbiAgICAgIHJlcS5pby5lbWl0KCdyZWNlaXZlZC1tZXNzYWdlJywgeyByZXNwb25zZTogbWVzc2FnZSB9KTtcbiAgICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLm9uU2VsZk1lc3NhZ2UgJiYgbWVzc2FnZS5mcm9tTWUpXG4gICAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnb25zZWxmbWVzc2FnZScsIG1lc3NhZ2UpO1xuICAgIH0pO1xuXG4gICAgYXdhaXQgY2xpZW50Lm9uSW5jb21pbmdDYWxsKGFzeW5jIChjYWxsKSA9PiB7XG4gICAgICByZXEuaW8uZW1pdCgnaW5jb21pbmdjYWxsJywgY2FsbCk7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ2luY29taW5nY2FsbCcsIGNhbGwpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbGlzdGVuQWNrcyhjbGllbnQ6IFdoYXRzQXBwU2VydmVyLCByZXE6IFJlcXVlc3QpIHtcbiAgICBhd2FpdCBjbGllbnQub25BY2soYXN5bmMgKGFjaykgPT4ge1xuICAgICAgcmVxLmlvLmVtaXQoJ29uYWNrJywgYWNrKTtcbiAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnb25hY2snLCBhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgb25QcmVzZW5jZUNoYW5nZWQoY2xpZW50OiBXaGF0c0FwcFNlcnZlciwgcmVxOiBSZXF1ZXN0KSB7XG4gICAgYXdhaXQgY2xpZW50Lm9uUHJlc2VuY2VDaGFuZ2VkKGFzeW5jIChwcmVzZW5jZUNoYW5nZWRFdmVudCkgPT4ge1xuICAgICAgcmVxLmlvLmVtaXQoJ29ucHJlc2VuY2VjaGFuZ2VkJywgcHJlc2VuY2VDaGFuZ2VkRXZlbnQpO1xuICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdvbnByZXNlbmNlY2hhbmdlZCcsIHByZXNlbmNlQ2hhbmdlZEV2ZW50KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG9uUmVhY3Rpb25NZXNzYWdlKGNsaWVudDogV2hhdHNBcHBTZXJ2ZXIsIHJlcTogUmVxdWVzdCkge1xuICAgIGF3YWl0IGNsaWVudC5pc0Nvbm5lY3RlZCgpO1xuICAgIGF3YWl0IGNsaWVudC5vblJlYWN0aW9uTWVzc2FnZShhc3luYyAocmVhY3Rpb246IGFueSkgPT4ge1xuICAgICAgcmVxLmlvLmVtaXQoJ29ucmVhY3Rpb25tZXNzYWdlJywgcmVhY3Rpb24pO1xuICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdvbnJlYWN0aW9ubWVzc2FnZScsIHJlYWN0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG9uUmV2b2tlZE1lc3NhZ2UoY2xpZW50OiBXaGF0c0FwcFNlcnZlciwgcmVxOiBSZXF1ZXN0KSB7XG4gICAgYXdhaXQgY2xpZW50LmlzQ29ubmVjdGVkKCk7XG4gICAgYXdhaXQgY2xpZW50Lm9uUmV2b2tlZE1lc3NhZ2UoYXN5bmMgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIHJlcS5pby5lbWl0KCdvbnJldm9rZWRtZXNzYWdlJywgcmVzcG9uc2UpO1xuICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdvbnJldm9rZWRtZXNzYWdlJywgcmVzcG9uc2UpO1xuICAgIH0pO1xuICB9XG4gIGFzeW5jIG9uUG9sbFJlc3BvbnNlKGNsaWVudDogV2hhdHNBcHBTZXJ2ZXIsIHJlcTogUmVxdWVzdCkge1xuICAgIGF3YWl0IGNsaWVudC5pc0Nvbm5lY3RlZCgpO1xuICAgIGF3YWl0IGNsaWVudC5vblBvbGxSZXNwb25zZShhc3luYyAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgcmVxLmlvLmVtaXQoJ29ucG9sbHJlc3BvbnNlJywgcmVzcG9uc2UpO1xuICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdvbnBvbGxyZXNwb25zZScsIHJlc3BvbnNlKTtcbiAgICB9KTtcbiAgfVxuICBhc3luYyBvbkxhYmVsVXBkYXRlZChjbGllbnQ6IFdoYXRzQXBwU2VydmVyLCByZXE6IFJlcXVlc3QpIHtcbiAgICBhd2FpdCBjbGllbnQuaXNDb25uZWN0ZWQoKTtcbiAgICBhd2FpdCBjbGllbnQub25VcGRhdGVMYWJlbChhc3luYyAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgcmVxLmlvLmVtaXQoJ29udXBkYXRlbGFiZWwnLCByZXNwb25zZSk7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29udXBkYXRlbGFiZWwnLCByZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBlbmNvZGVGdW5jdGlvbihkYXRhOiBhbnksIHdlYmhvb2s6IGFueSkge1xuICAgIGRhdGEud2ViaG9vayA9IHdlYmhvb2s7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICB9XG5cbiAgZGVjb2RlRnVuY3Rpb24odGV4dDogYW55LCBjbGllbnQ6IGFueSkge1xuICAgIGNvbnN0IG9iamVjdCA9IEpTT04ucGFyc2UodGV4dCk7XG4gICAgaWYgKG9iamVjdC53ZWJob29rICYmICFjbGllbnQud2ViaG9vaykgY2xpZW50LndlYmhvb2sgPSBvYmplY3Qud2ViaG9vaztcbiAgICBkZWxldGUgb2JqZWN0LndlYmhvb2s7XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfVxuXG4gIGdldENsaWVudChzZXNzaW9uOiBhbnkpIHtcbiAgICBsZXQgY2xpZW50ID0gY2xpZW50c0FycmF5W3Nlc3Npb25dO1xuXG4gICAgaWYgKCFjbGllbnQpXG4gICAgICBjbGllbnQgPSBjbGllbnRzQXJyYXlbc2Vzc2lvbl0gPSB7XG4gICAgICAgIHN0YXR1czogbnVsbCxcbiAgICAgICAgc2Vzc2lvbjogc2Vzc2lvbixcbiAgICAgIH0gYXMgYW55O1xuICAgIHJldHVybiBjbGllbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsSUFBQUEsV0FBQSxHQUFBQyxPQUFBOzs7QUFHQSxJQUFBQyxrQkFBQSxHQUFBRCxPQUFBOztBQUVBLElBQUFFLGVBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLFVBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFlBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFFBQUEsR0FBQUgsc0JBQUEsQ0FBQUgsT0FBQSwwQkFBMkMsQ0F2QjNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQVdlLE1BQU1PLGlCQUFpQixDQUFDLENBQ3JDQyxtQkFBbUJBLENBQUNDLE1BQVcsRUFBRSxDQUMvQixJQUFJQSxNQUFNLENBQUNDLE1BQU0sQ0FBQ0MsUUFBUSxJQUFJLENBQUNGLE1BQU0sQ0FBQ1AsZUFBZSxFQUNuRE8sTUFBTSxDQUFDUCxlQUFlLEdBQUcsSUFBSVUsdUJBQWMsQ0FDekNILE1BQU0sQ0FBQ0MsTUFBTSxDQUFDQyxRQUFRLEVBQ3RCRixNQUFNLENBQUNJLE9BQ1QsQ0FBQyxDQUNILE9BQU9KLE1BQU0sQ0FBQ1AsZUFBZSxDQUMvQixDQUVBLE1BQU1ZLGlCQUFpQkEsQ0FDckJDLEdBQVEsRUFDUkMsWUFBaUI7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
|
|
376
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3BwY29ubmVjdCIsInJlcXVpcmUiLCJfc2Vzc2lvbkNvbnRyb2xsZXIiLCJfY2hhdFdvb3RDbGllbnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2Z1bmN0aW9ucyIsIl9zZXNzaW9uVXRpbCIsIl9mYWN0b3J5IiwiQ3JlYXRlU2Vzc2lvblV0aWwiLCJzdGFydENoYXRXb290Q2xpZW50IiwiY2xpZW50IiwiY29uZmlnIiwiY2hhdFdvb3QiLCJjaGF0V29vdENsaWVudCIsInNlc3Npb24iLCJjcmVhdGVTZXNzaW9uVXRpbCIsInJlcSIsImNsaWVudHNBcnJheSIsInJlcyIsImdldENsaWVudCIsInN0YXR1cyIsImJvZHkiLCJ0b2tlblN0b3JlIiwiRmFjdG9yeSIsIm15VG9rZW5TdG9yZSIsImNyZWF0ZVRva2VuU3RvcnkiLCJ0b2tlbkRhdGEiLCJnZXRUb2tlbiIsInNldFRva2VuIiwic2VydmVyT3B0aW9ucyIsImN1c3RvbVVzZXJEYXRhRGlyIiwiY3JlYXRlT3B0aW9ucyIsInB1cHBldGVlck9wdGlvbnMiLCJ1c2VyRGF0YURpciIsIndwcENsaWVudCIsImNyZWF0ZSIsIk9iamVjdCIsImFzc2lnbiIsInBob25lTnVtYmVyIiwicGhvbmUiLCJkZXZpY2VOYW1lIiwidW5kZWZpbmVkIiwicG93ZXJlZEJ5IiwiY2F0Y2hMaW5rQ29kZSIsImNvZGUiLCJleHBvcnRQaG9uZUNvZGUiLCJjYXRjaFFSIiwiYmFzZTY0UXIiLCJhc2NpaVFSIiwiYXR0ZW1wdCIsInVybENvZGUiLCJleHBvcnRRUiIsIm9uTG9hZGluZ1NjcmVlbiIsInBlcmNlbnQiLCJtZXNzYWdlIiwibG9nZ2VyIiwiaW5mbyIsInN0YXR1c0ZpbmQiLCJldmVudEVtaXR0ZXIiLCJlbWl0IiwicXJjb2RlIiwiY2xvc2UiLCJjYWxsV2ViSG9vayIsImVycm9yIiwic3RhcnQiLCJ3ZWJob29rIiwib25QYXJ0aWNpcGFudHNDaGFuZ2VkIiwib25SZWFjdGlvbk1lc3NhZ2UiLCJvblJldm9rZWRNZXNzYWdlIiwib25Qb2xsUmVzcG9uc2UiLCJvbkxhYmVsVXBkYXRlZCIsImUiLCJFcnJvciIsIm5hbWUiLCJvcGVuZGF0YSIsInBob25lQ29kZSIsImlvIiwiZGF0YSIsIl9oZWFkZXJTZW50IiwianNvbiIsInFyQ29kZSIsInVybGNvZGUiLCJyZXBsYWNlIiwiaW1hZ2VCdWZmZXIiLCJCdWZmZXIiLCJmcm9tIiwidG9TdHJpbmciLCJpc0Nvbm5lY3RlZCIsInN0YXJ0SGVscGVyIiwiY2hlY2tTdGF0ZVNlc3Npb24iLCJsaXN0ZW5NZXNzYWdlcyIsImxpc3RlbkFja3MiLCJvblByZXNlbmNlQ2hhbmdlZCIsIm9uU3RhdGVDaGFuZ2UiLCJzdGF0ZSIsImNvbmZsaXRzIiwiU29ja2V0U3RhdGUiLCJDT05GTElDVCIsImluY2x1ZGVzIiwidXNlSGVyZSIsIm9uTWVzc2FnZSIsInR5cGUiLCJvbkxpdmVMb2NhdGlvbiIsInNlbmRlciIsImlkIiwibG9jYXRpb24iLCJvbkFueU1lc3NhZ2UiLCJkb3dubG9hZCIsIndlYnNvY2tldCIsImF1dG9Eb3dubG9hZCIsImZyb21NZSIsInJlc3BvbnNlIiwib25TZWxmTWVzc2FnZSIsIm9uSW5jb21pbmdDYWxsIiwiY2FsbCIsIm9uQWNrIiwiYWNrIiwicHJlc2VuY2VDaGFuZ2VkRXZlbnQiLCJyZWFjdGlvbiIsIm9uVXBkYXRlTGFiZWwiLCJlbmNvZGVGdW5jdGlvbiIsIkpTT04iLCJzdHJpbmdpZnkiLCJkZWNvZGVGdW5jdGlvbiIsInRleHQiLCJvYmplY3QiLCJwYXJzZSIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvY3JlYXRlU2Vzc2lvblV0aWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIxIFdQUENvbm5lY3QgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3JlYXRlLCBTb2NrZXRTdGF0ZSB9IGZyb20gJ0B3cHBjb25uZWN0LXRlYW0vd3BwY29ubmVjdCc7XG5pbXBvcnQgeyBSZXF1ZXN0IH0gZnJvbSAnZXhwcmVzcyc7XG5cbmltcG9ydCB7IGRvd25sb2FkIH0gZnJvbSAnLi4vY29udHJvbGxlci9zZXNzaW9uQ29udHJvbGxlcic7XG5pbXBvcnQgeyBXaGF0c0FwcFNlcnZlciB9IGZyb20gJy4uL3R5cGVzL1doYXRzQXBwU2VydmVyJztcbmltcG9ydCBjaGF0V29vdENsaWVudCBmcm9tICcuL2NoYXRXb290Q2xpZW50JztcbmltcG9ydCB7IGF1dG9Eb3dubG9hZCwgY2FsbFdlYkhvb2ssIHN0YXJ0SGVscGVyIH0gZnJvbSAnLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgY2xpZW50c0FycmF5LCBldmVudEVtaXR0ZXIgfSBmcm9tICcuL3Nlc3Npb25VdGlsJztcbmltcG9ydCBGYWN0b3J5IGZyb20gJy4vdG9rZW5TdG9yZS9mYWN0b3J5JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ3JlYXRlU2Vzc2lvblV0aWwge1xuICBzdGFydENoYXRXb290Q2xpZW50KGNsaWVudDogYW55KSB7XG4gICAgaWYgKGNsaWVudC5jb25maWcuY2hhdFdvb3QgJiYgIWNsaWVudC5fY2hhdFdvb3RDbGllbnQpXG4gICAgICBjbGllbnQuX2NoYXRXb290Q2xpZW50ID0gbmV3IGNoYXRXb290Q2xpZW50KFxuICAgICAgICBjbGllbnQuY29uZmlnLmNoYXRXb290LFxuICAgICAgICBjbGllbnQuc2Vzc2lvblxuICAgICAgKTtcbiAgICByZXR1cm4gY2xpZW50Ll9jaGF0V29vdENsaWVudDtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNlc3Npb25VdGlsKFxuICAgIHJlcTogYW55LFxuICAgIGNsaWVudHNBcnJheTogYW55LFxuICAgIHNlc3Npb246IHN0cmluZyxcbiAgICByZXM/OiBhbnlcbiAgKSB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBjbGllbnQgPSB0aGlzLmdldENsaWVudChzZXNzaW9uKSBhcyBhbnk7XG4gICAgICBpZiAoY2xpZW50LnN0YXR1cyAhPSBudWxsICYmIGNsaWVudC5zdGF0dXMgIT09ICdDTE9TRUQnKSByZXR1cm47XG4gICAgICBjbGllbnQuc3RhdHVzID0gJ0lOSVRJQUxJWklORyc7XG4gICAgICBjbGllbnQuY29uZmlnID0gcmVxLmJvZHk7XG5cbiAgICAgIGNvbnN0IHRva2VuU3RvcmUgPSBuZXcgRmFjdG9yeSgpO1xuICAgICAgY29uc3QgbXlUb2tlblN0b3JlID0gdG9rZW5TdG9yZS5jcmVhdGVUb2tlblN0b3J5KGNsaWVudCk7XG4gICAgICBjb25zdCB0b2tlbkRhdGEgPSBhd2FpdCBteVRva2VuU3RvcmUuZ2V0VG9rZW4oc2Vzc2lvbik7XG5cbiAgICAgIC8vIHdlIG5lZWQgdGhpcyB0byB1cGRhdGUgcGhvbmUgaW4gY29uZmlnIGV2ZXJ5IHRpbWUgc2Vzc2lvbiBzdGFydHMsIHNvIHdlIGNhbiBhc2sgZm9yIGNvZGUgZm9yIGl0IGFnYWluLlxuICAgICAgbXlUb2tlblN0b3JlLnNldFRva2VuKHNlc3Npb24sIHRva2VuRGF0YSA/PyB7fSk7XG5cbiAgICAgIHRoaXMuc3RhcnRDaGF0V29vdENsaWVudChjbGllbnQpO1xuXG4gICAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMuY3VzdG9tVXNlckRhdGFEaXIpIHtcbiAgICAgICAgcmVxLnNlcnZlck9wdGlvbnMuY3JlYXRlT3B0aW9ucy5wdXBwZXRlZXJPcHRpb25zID0ge1xuICAgICAgICAgIHVzZXJEYXRhRGlyOiByZXEuc2VydmVyT3B0aW9ucy5jdXN0b21Vc2VyRGF0YURpciArIHNlc3Npb24sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdwcENsaWVudCA9IGF3YWl0IGNyZWF0ZShcbiAgICAgICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICB7fSxcbiAgICAgICAgICB7IHRva2VuU3RvcmU6IG15VG9rZW5TdG9yZSB9LFxuICAgICAgICAgIHJlcS5zZXJ2ZXJPcHRpb25zLmNyZWF0ZU9wdGlvbnMsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2Vzc2lvbjogc2Vzc2lvbixcbiAgICAgICAgICAgIHBob25lTnVtYmVyOiBjbGllbnQuY29uZmlnLnBob25lID8/IG51bGwsXG4gICAgICAgICAgICBkZXZpY2VOYW1lOlxuICAgICAgICAgICAgICBjbGllbnQuY29uZmlnLnBob25lID09IHVuZGVmaW5lZCAvLyBidWcgd2hlbiB1c2luZyBwaG9uZSBjb2RlIHRoaXMgc2hvdWxkbid0IGJlIHBhc3NlZCAoaHR0cHM6Ly9naXRodWIuY29tL3dwcGNvbm5lY3QtdGVhbS93cHBjb25uZWN0LXNlcnZlci9pc3N1ZXMvMTY4NyNpc3N1ZWNvbW1lbnQtMjA5OTM1Nzg3NClcbiAgICAgICAgICAgICAgICA/IGNsaWVudC5jb25maWc/LmRldmljZU5hbWUgfHxcbiAgICAgICAgICAgICAgICAgIHJlcS5zZXJ2ZXJPcHRpb25zLmRldmljZU5hbWUgfHxcbiAgICAgICAgICAgICAgICAgICdXcHBDb25uZWN0J1xuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcG93ZXJlZEJ5OlxuICAgICAgICAgICAgICBjbGllbnQuY29uZmlnLnBob25lID09IHVuZGVmaW5lZCAvLyBidWcgd2hlbiB1c2luZyBwaG9uZSBjb2RlIHRoaXMgc2hvdWxkbid0IGJlIHBhc3NlZCAoaHR0cHM6Ly9naXRodWIuY29tL3dwcGNvbm5lY3QtdGVhbS93cHBjb25uZWN0LXNlcnZlci9pc3N1ZXMvMTY4NyNpc3N1ZWNvbW1lbnQtMjA5OTM1Nzg3NClcbiAgICAgICAgICAgICAgICA/IGNsaWVudC5jb25maWc/LnBvd2VyZWRCeSB8fFxuICAgICAgICAgICAgICAgICAgcmVxLnNlcnZlck9wdGlvbnMucG93ZXJlZEJ5IHx8XG4gICAgICAgICAgICAgICAgICAnV1BQQ29ubmVjdC1TZXJ2ZXInXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjYXRjaExpbmtDb2RlOiAoY29kZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZXhwb3J0UGhvbmVDb2RlKHJlcSwgY2xpZW50LmNvbmZpZy5waG9uZSwgY29kZSwgY2xpZW50LCByZXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhdGNoUVI6IChcbiAgICAgICAgICAgICAgYmFzZTY0UXI6IGFueSxcbiAgICAgICAgICAgICAgYXNjaWlRUjogYW55LFxuICAgICAgICAgICAgICBhdHRlbXB0OiBhbnksXG4gICAgICAgICAgICAgIHVybENvZGU6IHN0cmluZ1xuICAgICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZXhwb3J0UVIocmVxLCBiYXNlNjRRciwgdXJsQ29kZSwgY2xpZW50LCByZXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uTG9hZGluZ1NjcmVlbjogKHBlcmNlbnQ6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIHJlcS5sb2dnZXIuaW5mbyhgWyR7c2Vzc2lvbn1dICR7cGVyY2VudH0lIC0gJHttZXNzYWdlfWApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0YXR1c0ZpbmQ6IChzdGF0dXNGaW5kOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBldmVudEVtaXR0ZXIuZW1pdChcbiAgICAgICAgICAgICAgICAgIGBzdGF0dXMtJHtjbGllbnQuc2Vzc2lvbn1gLFxuICAgICAgICAgICAgICAgICAgY2xpZW50LFxuICAgICAgICAgICAgICAgICAgc3RhdHVzRmluZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgc3RhdHVzRmluZCA9PT0gJ2F1dG9jbG9zZUNhbGxlZCcgfHxcbiAgICAgICAgICAgICAgICAgIHN0YXR1c0ZpbmQgPT09ICdkZXNjb25uZWN0ZWRNb2JpbGUnXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBjbGllbnQuc3RhdHVzID0gJ0NMT1NFRCc7XG4gICAgICAgICAgICAgICAgICBjbGllbnQucXJjb2RlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgIGNsaWVudC5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgY2xpZW50c0FycmF5W3Nlc3Npb25dID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ3N0YXR1cy1maW5kJywge1xuICAgICAgICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXNGaW5kLFxuICAgICAgICAgICAgICAgICAgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmVxLmxvZ2dlci5pbmZvKHN0YXR1c0ZpbmQgKyAnXFxuXFxuJyk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAgIGNsaWVudCA9IGNsaWVudHNBcnJheVtzZXNzaW9uXSA9IE9iamVjdC5hc3NpZ24od3BwQ2xpZW50LCBjbGllbnQpO1xuICAgICAgYXdhaXQgdGhpcy5zdGFydChyZXEsIGNsaWVudCk7XG5cbiAgICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLm9uUGFydGljaXBhbnRzQ2hhbmdlZCkge1xuICAgICAgICBhd2FpdCB0aGlzLm9uUGFydGljaXBhbnRzQ2hhbmdlZChyZXEsIGNsaWVudCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLm9uUmVhY3Rpb25NZXNzYWdlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub25SZWFjdGlvbk1lc3NhZ2UoY2xpZW50LCByZXEpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5vblJldm9rZWRNZXNzYWdlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub25SZXZva2VkTWVzc2FnZShjbGllbnQsIHJlcSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLm9uUG9sbFJlc3BvbnNlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub25Qb2xsUmVzcG9uc2UoY2xpZW50LCByZXEpO1xuICAgICAgfVxuICAgICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2sub25MYWJlbFVwZGF0ZWQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5vbkxhYmVsVXBkYXRlZChjbGllbnQsIHJlcSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVxLmxvZ2dlci5lcnJvcihlKTtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5uYW1lID09ICdUaW1lb3V0RXJyb3InKSB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IHRoaXMuZ2V0Q2xpZW50KHNlc3Npb24pIGFzIGFueTtcbiAgICAgICAgY2xpZW50LnN0YXR1cyA9ICdDTE9TRUQnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9wZW5kYXRhKHJlcTogUmVxdWVzdCwgc2Vzc2lvbjogc3RyaW5nLCByZXM/OiBhbnkpIHtcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVNlc3Npb25VdGlsKHJlcSwgY2xpZW50c0FycmF5LCBzZXNzaW9uLCByZXMpO1xuICB9XG5cbiAgZXhwb3J0UGhvbmVDb2RlKFxuICAgIHJlcTogYW55LFxuICAgIHBob25lOiBhbnksXG4gICAgcGhvbmVDb2RlOiBhbnksXG4gICAgY2xpZW50OiBXaGF0c0FwcFNlcnZlcixcbiAgICByZXM/OiBhbnlcbiAgKSB7XG4gICAgZXZlbnRFbWl0dGVyLmVtaXQoYHBob25lQ29kZS0ke2NsaWVudC5zZXNzaW9ufWAsIHBob25lQ29kZSwgY2xpZW50KTtcblxuICAgIE9iamVjdC5hc3NpZ24oY2xpZW50LCB7XG4gICAgICBzdGF0dXM6ICdQSE9ORUNPREUnLFxuICAgICAgcGhvbmVDb2RlOiBwaG9uZUNvZGUsXG4gICAgICBwaG9uZTogcGhvbmUsXG4gICAgfSk7XG5cbiAgICByZXEuaW8uZW1pdCgncGhvbmVDb2RlJywge1xuICAgICAgZGF0YTogcGhvbmVDb2RlLFxuICAgICAgcGhvbmU6IHBob25lLFxuICAgICAgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24sXG4gICAgfSk7XG5cbiAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ3Bob25lQ29kZScsIHtcbiAgICAgIHBob25lQ29kZTogcGhvbmVDb2RlLFxuICAgICAgcGhvbmU6IHBob25lLFxuICAgICAgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24sXG4gICAgfSk7XG5cbiAgICBpZiAocmVzICYmICFyZXMuX2hlYWRlclNlbnQpXG4gICAgICByZXMuc3RhdHVzKDIwMCkuanNvbih7XG4gICAgICAgIHN0YXR1czogJ3Bob25lQ29kZScsXG4gICAgICAgIHBob25lOiBwaG9uZSxcbiAgICAgICAgcGhvbmVDb2RlOiBwaG9uZUNvZGUsXG4gICAgICAgIHNlc3Npb246IGNsaWVudC5zZXNzaW9uLFxuICAgICAgfSk7XG4gIH1cblxuICBleHBvcnRRUihcbiAgICByZXE6IGFueSxcbiAgICBxckNvZGU6IGFueSxcbiAgICB1cmxDb2RlOiBhbnksXG4gICAgY2xpZW50OiBXaGF0c0FwcFNlcnZlcixcbiAgICByZXM/OiBhbnlcbiAgKSB7XG4gICAgZXZlbnRFbWl0dGVyLmVtaXQoYHFyY29kZS0ke2NsaWVudC5zZXNzaW9ufWAsIHFyQ29kZSwgdXJsQ29kZSwgY2xpZW50KTtcbiAgICBPYmplY3QuYXNzaWduKGNsaWVudCwge1xuICAgICAgc3RhdHVzOiAnUVJDT0RFJyxcbiAgICAgIHFyY29kZTogcXJDb2RlLFxuICAgICAgdXJsY29kZTogdXJsQ29kZSxcbiAgICB9KTtcblxuICAgIHFyQ29kZSA9IHFyQ29kZS5yZXBsYWNlKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsJywgJycpO1xuICAgIGNvbnN0IGltYWdlQnVmZmVyID0gQnVmZmVyLmZyb20ocXJDb2RlLCAnYmFzZTY0Jyk7XG5cbiAgICByZXEuaW8uZW1pdCgncXJDb2RlJywge1xuICAgICAgZGF0YTogJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwnICsgaW1hZ2VCdWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24sXG4gICAgfSk7XG5cbiAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ3FyY29kZScsIHtcbiAgICAgIHFyY29kZTogcXJDb2RlLFxuICAgICAgdXJsY29kZTogdXJsQ29kZSxcbiAgICAgIHNlc3Npb246IGNsaWVudC5zZXNzaW9uLFxuICAgIH0pO1xuICAgIGlmIChyZXMgJiYgIXJlcy5faGVhZGVyU2VudClcbiAgICAgIHJlcy5zdGF0dXMoMjAwKS5qc29uKHtcbiAgICAgICAgc3RhdHVzOiAncXJjb2RlJyxcbiAgICAgICAgcXJjb2RlOiBxckNvZGUsXG4gICAgICAgIHVybGNvZGU6IHVybENvZGUsXG4gICAgICAgIHNlc3Npb246IGNsaWVudC5zZXNzaW9uLFxuICAgICAgfSk7XG4gIH1cblxuICBhc3luYyBvblBhcnRpY2lwYW50c0NoYW5nZWQocmVxOiBhbnksIGNsaWVudDogYW55KSB7XG4gICAgYXdhaXQgY2xpZW50LmlzQ29ubmVjdGVkKCk7XG4gICAgYXdhaXQgY2xpZW50Lm9uUGFydGljaXBhbnRzQ2hhbmdlZCgobWVzc2FnZTogYW55KSA9PiB7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29ucGFydGljaXBhbnRzY2hhbmdlZCcsIG1lc3NhZ2UpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc3RhcnQocmVxOiBSZXF1ZXN0LCBjbGllbnQ6IFdoYXRzQXBwU2VydmVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNsaWVudC5pc0Nvbm5lY3RlZCgpO1xuICAgICAgT2JqZWN0LmFzc2lnbihjbGllbnQsIHsgc3RhdHVzOiAnQ09OTkVDVEVEJywgcXJjb2RlOiBudWxsIH0pO1xuXG4gICAgICByZXEubG9nZ2VyLmluZm8oYFN0YXJ0ZWQgU2Vzc2lvbjogJHtjbGllbnQuc2Vzc2lvbn1gKTtcbiAgICAgIC8vY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdzZXNzaW9uLWxvZ2dlZCcsIHsgc3RhdHVzOiAnQ09OTkVDVEVEJ30pO1xuICAgICAgcmVxLmlvLmVtaXQoJ3Nlc3Npb24tbG9nZ2VkJywgeyBzdGF0dXM6IHRydWUsIHNlc3Npb246IGNsaWVudC5zZXNzaW9uIH0pO1xuICAgICAgc3RhcnRIZWxwZXIoY2xpZW50LCByZXEpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXEubG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgICAgIHJlcS5pby5lbWl0KCdzZXNzaW9uLWVycm9yJywgY2xpZW50LnNlc3Npb24pO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuY2hlY2tTdGF0ZVNlc3Npb24oY2xpZW50LCByZXEpO1xuICAgIGF3YWl0IHRoaXMubGlzdGVuTWVzc2FnZXMoY2xpZW50LCByZXEpO1xuXG4gICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2subGlzdGVuQWNrcykge1xuICAgICAgYXdhaXQgdGhpcy5saXN0ZW5BY2tzKGNsaWVudCwgcmVxKTtcbiAgICB9XG5cbiAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5vblByZXNlbmNlQ2hhbmdlZCkge1xuICAgICAgYXdhaXQgdGhpcy5vblByZXNlbmNlQ2hhbmdlZChjbGllbnQsIHJlcSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2hlY2tTdGF0ZVNlc3Npb24oY2xpZW50OiBXaGF0c0FwcFNlcnZlciwgcmVxOiBSZXF1ZXN0KSB7XG4gICAgYXdhaXQgY2xpZW50Lm9uU3RhdGVDaGFuZ2UoKHN0YXRlKSA9PiB7XG4gICAgICByZXEubG9nZ2VyLmluZm8oYFN0YXRlIENoYW5nZSAke3N0YXRlfTogJHtjbGllbnQuc2Vzc2lvbn1gKTtcbiAgICAgIGNvbnN0IGNvbmZsaXRzID0gW1NvY2tldFN0YXRlLkNPTkZMSUNUXTtcblxuICAgICAgaWYgKGNvbmZsaXRzLmluY2x1ZGVzKHN0YXRlKSkge1xuICAgICAgICBjbGllbnQudXNlSGVyZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbGlzdGVuTWVzc2FnZXMoY2xpZW50OiBXaGF0c0FwcFNlcnZlciwgcmVxOiBSZXF1ZXN0KSB7XG4gICAgYXdhaXQgY2xpZW50Lm9uTWVzc2FnZShhc3luYyAobWVzc2FnZTogYW55KSA9PiB7XG4gICAgICBldmVudEVtaXR0ZXIuZW1pdChgbWVuc2FnZW0tJHtjbGllbnQuc2Vzc2lvbn1gLCBjbGllbnQsIG1lc3NhZ2UpO1xuICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdvbm1lc3NhZ2UnLCBtZXNzYWdlKTtcbiAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09ICdsb2NhdGlvbicpXG4gICAgICAgIGNsaWVudC5vbkxpdmVMb2NhdGlvbihtZXNzYWdlLnNlbmRlci5pZCwgKGxvY2F0aW9uKSA9PiB7XG4gICAgICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdsb2NhdGlvbicsIGxvY2F0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBhd2FpdCBjbGllbnQub25BbnlNZXNzYWdlKGFzeW5jIChtZXNzYWdlOiBhbnkpID0+IHtcbiAgICAgIG1lc3NhZ2Uuc2Vzc2lvbiA9IGNsaWVudC5zZXNzaW9uO1xuXG4gICAgICBpZiAobWVzc2FnZS50eXBlID09PSAnc3RpY2tlcicpIHtcbiAgICAgICAgZG93bmxvYWQobWVzc2FnZSwgY2xpZW50LCByZXEubG9nZ2VyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICByZXEuc2VydmVyT3B0aW9ucz8ud2Vic29ja2V0Py5hdXRvRG93bmxvYWQgfHxcbiAgICAgICAgKHJlcS5zZXJ2ZXJPcHRpb25zPy53ZWJob29rPy5hdXRvRG93bmxvYWQgJiYgbWVzc2FnZS5mcm9tTWUgPT0gZmFsc2UpXG4gICAgICApIHtcbiAgICAgICAgYXdhaXQgYXV0b0Rvd25sb2FkKGNsaWVudCwgcmVxLCBtZXNzYWdlKTtcbiAgICAgIH1cblxuICAgICAgcmVxLmlvLmVtaXQoJ3JlY2VpdmVkLW1lc3NhZ2UnLCB7IHJlc3BvbnNlOiBtZXNzYWdlIH0pO1xuICAgICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2sub25TZWxmTWVzc2FnZSAmJiBtZXNzYWdlLmZyb21NZSlcbiAgICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdvbnNlbGZtZXNzYWdlJywgbWVzc2FnZSk7XG4gICAgfSk7XG5cbiAgICBhd2FpdCBjbGllbnQub25JbmNvbWluZ0NhbGwoYXN5bmMgKGNhbGwpID0+IHtcbiAgICAgIHJlcS5pby5lbWl0KCdpbmNvbWluZ2NhbGwnLCBjYWxsKTtcbiAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnaW5jb21pbmdjYWxsJywgY2FsbCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBsaXN0ZW5BY2tzKGNsaWVudDogV2hhdHNBcHBTZXJ2ZXIsIHJlcTogUmVxdWVzdCkge1xuICAgIGF3YWl0IGNsaWVudC5vbkFjayhhc3luYyAoYWNrKSA9PiB7XG4gICAgICByZXEuaW8uZW1pdCgnb25hY2snLCBhY2spO1xuICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdvbmFjaycsIGFjayk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBvblByZXNlbmNlQ2hhbmdlZChjbGllbnQ6IFdoYXRzQXBwU2VydmVyLCByZXE6IFJlcXVlc3QpIHtcbiAgICBhd2FpdCBjbGllbnQub25QcmVzZW5jZUNoYW5nZWQoYXN5bmMgKHByZXNlbmNlQ2hhbmdlZEV2ZW50KSA9PiB7XG4gICAgICByZXEuaW8uZW1pdCgnb25wcmVzZW5jZWNoYW5nZWQnLCBwcmVzZW5jZUNoYW5nZWRFdmVudCk7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29ucHJlc2VuY2VjaGFuZ2VkJywgcHJlc2VuY2VDaGFuZ2VkRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgb25SZWFjdGlvbk1lc3NhZ2UoY2xpZW50OiBXaGF0c0FwcFNlcnZlciwgcmVxOiBSZXF1ZXN0KSB7XG4gICAgYXdhaXQgY2xpZW50LmlzQ29ubmVjdGVkKCk7XG4gICAgYXdhaXQgY2xpZW50Lm9uUmVhY3Rpb25NZXNzYWdlKGFzeW5jIChyZWFjdGlvbjogYW55KSA9PiB7XG4gICAgICByZXEuaW8uZW1pdCgnb25yZWFjdGlvbm1lc3NhZ2UnLCByZWFjdGlvbik7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29ucmVhY3Rpb25tZXNzYWdlJywgcmVhY3Rpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgb25SZXZva2VkTWVzc2FnZShjbGllbnQ6IFdoYXRzQXBwU2VydmVyLCByZXE6IFJlcXVlc3QpIHtcbiAgICBhd2FpdCBjbGllbnQuaXNDb25uZWN0ZWQoKTtcbiAgICBhd2FpdCBjbGllbnQub25SZXZva2VkTWVzc2FnZShhc3luYyAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgcmVxLmlvLmVtaXQoJ29ucmV2b2tlZG1lc3NhZ2UnLCByZXNwb25zZSk7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29ucmV2b2tlZG1lc3NhZ2UnLCByZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cbiAgYXN5bmMgb25Qb2xsUmVzcG9uc2UoY2xpZW50OiBXaGF0c0FwcFNlcnZlciwgcmVxOiBSZXF1ZXN0KSB7XG4gICAgYXdhaXQgY2xpZW50LmlzQ29ubmVjdGVkKCk7XG4gICAgYXdhaXQgY2xpZW50Lm9uUG9sbFJlc3BvbnNlKGFzeW5jIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICByZXEuaW8uZW1pdCgnb25wb2xscmVzcG9uc2UnLCByZXNwb25zZSk7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29ucG9sbHJlc3BvbnNlJywgcmVzcG9uc2UpO1xuICAgIH0pO1xuICB9XG4gIGFzeW5jIG9uTGFiZWxVcGRhdGVkKGNsaWVudDogV2hhdHNBcHBTZXJ2ZXIsIHJlcTogUmVxdWVzdCkge1xuICAgIGF3YWl0IGNsaWVudC5pc0Nvbm5lY3RlZCgpO1xuICAgIGF3YWl0IGNsaWVudC5vblVwZGF0ZUxhYmVsKGFzeW5jIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICByZXEuaW8uZW1pdCgnb251cGRhdGVsYWJlbCcsIHJlc3BvbnNlKTtcbiAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnb251cGRhdGVsYWJlbCcsIHJlc3BvbnNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGVuY29kZUZ1bmN0aW9uKGRhdGE6IGFueSwgd2ViaG9vazogYW55KSB7XG4gICAgZGF0YS53ZWJob29rID0gd2ViaG9vaztcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gIH1cblxuICBkZWNvZGVGdW5jdGlvbih0ZXh0OiBhbnksIGNsaWVudDogYW55KSB7XG4gICAgY29uc3Qgb2JqZWN0ID0gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgICBpZiAob2JqZWN0LndlYmhvb2sgJiYgIWNsaWVudC53ZWJob29rKSBjbGllbnQud2ViaG9vayA9IG9iamVjdC53ZWJob29rO1xuICAgIGRlbGV0ZSBvYmplY3Qud2ViaG9vaztcbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG5cbiAgZ2V0Q2xpZW50KHNlc3Npb246IGFueSkge1xuICAgIGxldCBjbGllbnQgPSBjbGllbnRzQXJyYXlbc2Vzc2lvbl07XG5cbiAgICBpZiAoIWNsaWVudClcbiAgICAgIGNsaWVudCA9IGNsaWVudHNBcnJheVtzZXNzaW9uXSA9IHtcbiAgICAgICAgc3RhdHVzOiBudWxsLFxuICAgICAgICBzZXNzaW9uOiBzZXNzaW9uLFxuICAgICAgfSBhcyBhbnk7XG4gICAgcmV0dXJuIGNsaWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFlQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7OztBQUdBLElBQUFDLGtCQUFBLEdBQUFELE9BQUE7O0FBRUEsSUFBQUUsZUFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksVUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssWUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sUUFBQSxHQUFBSCxzQkFBQSxDQUFBSCxPQUFBLDBCQUEyQyxDQXZCM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBV2UsTUFBTU8saUJBQWlCLENBQUMsQ0FDckNDLG1CQUFtQkEsQ0FBQ0MsTUFBVyxFQUFFLENBQy9CLElBQUlBLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDQyxRQUFRLElBQUksQ0FBQ0YsTUFBTSxDQUFDUCxlQUFlLEVBQ25ETyxNQUFNLENBQUNQLGVBQWUsR0FBRyxJQUFJVSx1QkFBYyxDQUN6Q0gsTUFBTSxDQUFDQyxNQUFNLENBQUNDLFFBQVEsRUFDdEJGLE1BQU0sQ0FBQ0ksT0FDVCxDQUFDLENBQ0gsT0FBT0osTUFBTSxDQUFDUCxlQUFlLENBQy9CLENBRUEsTUFBTVksaUJBQWlCQSxDQUNyQkMsR0FBUSxFQUNSQyxZQUFpQjtFQUNqQkgsT0FBZTtFQUNmSSxHQUFTO0VBQ1Q7SUFDQSxJQUFJO01BQ0YsSUFBSVIsTUFBTSxHQUFHLElBQUksQ0FBQ1MsU0FBUyxDQUFDTCxPQUFPLENBQVE7TUFDM0MsSUFBSUosTUFBTSxDQUFDVSxNQUFNLElBQUksSUFBSSxJQUFJVixNQUFNLENBQUNVLE1BQU0sS0FBSyxRQUFRLEVBQUU7TUFDekRWLE1BQU0sQ0FBQ1UsTUFBTSxHQUFHLGNBQWM7TUFDOUJWLE1BQU0sQ0FBQ0MsTUFBTSxHQUFHSyxHQUFHLENBQUNLLElBQUk7O01BRXhCLE1BQU1DLFVBQVUsR0FBRyxJQUFJQyxnQkFBTyxDQUFDLENBQUM7TUFDaEMsTUFBTUMsWUFBWSxHQUFHRixVQUFVLENBQUNHLGdCQUFnQixDQUFDZixNQUFNLENBQUM7TUFDeEQsTUFBTWdCLFNBQVMsR0FBRyxNQUFNRixZQUFZLENBQUNHLFFBQVEsQ0FBQ2IsT0FBTyxDQUFDOztNQUV0RDtNQUNBVSxZQUFZLENBQUNJLFFBQVEsQ0FBQ2QsT0FBTyxFQUFFWSxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUM7O01BRS9DLElBQUksQ0FBQ2pCLG1CQUFtQixDQUFDQyxNQUFNLENBQUM7O01BRWhDLElBQUlNLEdBQUcsQ0FBQ2EsYUFBYSxDQUFDQyxpQkFBaUIsRUFBRTtRQUN2Q2QsR0FBRyxDQUFDYSxhQUFhLENBQUNFLGFBQWEsQ0FBQ0MsZ0JBQWdCLEdBQUc7VUFDakRDLFdBQVcsRUFBRWpCLEdBQUcsQ0FBQ2EsYUFBYSxDQUFDQyxpQkFBaUIsR0FBR2hCO1FBQ3JELENBQUM7TUFDSDs7TUFFQSxNQUFNb0IsU0FBUyxHQUFHLE1BQU0sSUFBQUMsa0JBQU07UUFDNUJDLE1BQU0sQ0FBQ0MsTUFBTTtVQUNYLENBQUMsQ0FBQztVQUNGLEVBQUVmLFVBQVUsRUFBRUUsWUFBWSxDQUFDLENBQUM7VUFDNUJSLEdBQUcsQ0FBQ2EsYUFBYSxDQUFDRSxhQUFhO1VBQy9CO1lBQ0VqQixPQUFPLEVBQUVBLE9BQU87WUFDaEJ3QixXQUFXLEVBQUU1QixNQUFNLENBQUNDLE1BQU0sQ0FBQzRCLEtBQUssSUFBSSxJQUFJO1lBQ3hDQyxVQUFVO1lBQ1I5QixNQUFNLENBQUNDLE1BQU0sQ0FBQzRCLEtBQUssSUFBSUUsU0FBUyxDQUFDO1lBQUEsRUFDN0IvQixNQUFNLENBQUNDLE1BQU0sRUFBRTZCLFVBQVU7WUFDekJ4QixHQUFHLENBQUNhLGFBQWEsQ0FBQ1csVUFBVTtZQUM1QixZQUFZO1lBQ1pDLFNBQVM7WUFDZkMsU0FBUztZQUNQaEMsTUFBTSxDQUFDQyxNQUFNLENBQUM0QixLQUFLLElBQUlFLFNBQVMsQ0FBQztZQUFBLEVBQzdCL0IsTUFBTSxDQUFDQyxNQUFNLEVBQUUrQixTQUFTO1lBQ3hCMUIsR0FBRyxDQUFDYSxhQUFhLENBQUNhLFNBQVM7WUFDM0IsbUJBQW1CO1lBQ25CRCxTQUFTO1lBQ2ZFLGFBQWEsRUFBRUEsQ0FBQ0MsSUFBWSxLQUFLO2NBQy9CLElBQUksQ0FBQ0MsZUFBZSxDQUFDN0IsR0FBRyxFQUFFTixNQUFNLENBQUNDLE1BQU0sQ0FBQzRCLEtBQUssRUFBRUssSUFBSSxFQUFFbEMsTUFBTSxFQUFFUSxHQUFHLENBQUM7WUFDbkUsQ0FBQztZQUNENEIsT0FBTyxFQUFFQTtZQUNQQyxRQUFhO1lBQ2JDLE9BQVk7WUFDWkMsT0FBWTtZQUNaQyxPQUFlO1lBQ1o7Y0FDSCxJQUFJLENBQUNDLFFBQVEsQ0FBQ25DLEdBQUcsRUFBRStCLFFBQVEsRUFBRUcsT0FBTyxFQUFFeEMsTUFBTSxFQUFFUSxHQUFHLENBQUM7WUFDcEQsQ0FBQztZQUNEa0MsZUFBZSxFQUFFQSxDQUFDQyxPQUFlLEVBQUVDLE9BQWUsS0FBSztjQUNyRHRDLEdBQUcsQ0FBQ3VDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLElBQUkxQyxPQUFPLEtBQUt1QyxPQUFPLE9BQU9DLE9BQU8sRUFBRSxDQUFDO1lBQzFELENBQUM7WUFDREcsVUFBVSxFQUFFQSxDQUFDQSxVQUFrQixLQUFLO2NBQ2xDLElBQUk7Z0JBQ0ZDLHlCQUFZLENBQUNDLElBQUk7a0JBQ2YsVUFBVWpELE1BQU0sQ0FBQ0ksT0FBTyxFQUFFO2tCQUMxQkosTUFBTTtrQkFDTitDO2dCQUNGLENBQUM7Z0JBQ0Q7Z0JBQ0VBLFVBQVUsS0FBSyxpQkFBaUI7Z0JBQ2hDQSxVQUFVLEtBQUssb0JBQW9CO2dCQUNuQztrQkFDQS9DLE1BQU0sQ0FBQ1UsTUFBTSxHQUFHLFFBQVE7a0JBQ3hCVixNQUFNLENBQUNrRCxNQUFNLEdBQUcsSUFBSTtrQkFDcEJsRCxNQUFNLENBQUNtRCxLQUFLLENBQUMsQ0FBQztrQkFDZDVDLFlBQVksQ0FBQ0gsT0FBTyxDQUFDLEdBQUcyQixTQUFTO2dCQUNuQztnQkFDQSxJQUFBcUIsc0JBQVcsRUFBQ3BELE1BQU0sRUFBRU0sR0FBRyxFQUFFLGFBQWEsRUFBRTtrQkFDdENJLE1BQU0sRUFBRXFDLFVBQVU7a0JBQ2xCM0MsT0FBTyxFQUFFSixNQUFNLENBQUNJO2dCQUNsQixDQUFDLENBQUM7Z0JBQ0ZFLEdBQUcsQ0FBQ3VDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDQyxVQUFVLEdBQUcsTUFBTSxDQUFDO2NBQ3RDLENBQUMsQ0FBQyxPQUFPTSxLQUFLLEVBQUUsQ0FBQztZQUNuQjtVQUNGO1FBQ0Y7TUFDRixDQUFDOztNQUVEckQsTUFBTSxHQUFHTyxZQUFZLENBQUNILE9BQU8sQ0FBQyxHQUFHc0IsTUFBTSxDQUFDQyxNQUFNLENBQUNILFNBQVMsRUFBRXhCLE1BQU0sQ0FBQztNQUNqRSxNQUFNLElBQUksQ0FBQ3NELEtBQUssQ0FBQ2hELEdBQUcsRUFBRU4sTUFBTSxDQUFDOztNQUU3QixJQUFJTSxHQUFHLENBQUNhLGFBQWEsQ0FBQ29DLE9BQU8sQ0FBQ0MscUJBQXFCLEVBQUU7UUFDbkQsTUFBTSxJQUFJLENBQUNBLHFCQUFxQixDQUFDbEQsR0FBRyxFQUFFTixNQUFNLENBQUM7TUFDL0M7O01BRUEsSUFBSU0sR0FBRyxDQUFDYSxhQUFhLENBQUNvQyxPQUFPLENBQUNFLGlCQUFpQixFQUFFO1FBQy9DLE1BQU0sSUFBSSxDQUFDQSxpQkFBaUIsQ0FBQ3pELE1BQU0sRUFBRU0sR0FBRyxDQUFDO01BQzNDOztNQUVBLElBQUlBLEdBQUcsQ0FBQ2EsYUFBYSxDQUFDb0MsT0FBTyxDQUFDRyxnQkFBZ0IsRUFBRTtRQUM5QyxNQUFNLElBQUksQ0FBQ0EsZ0JBQWdCLENBQUMxRCxNQUFNLEVBQUVNLEdBQUcsQ0FBQztNQUMxQzs7TUFFQSxJQUFJQSxHQUFHLENBQUNhLGFBQWEsQ0FBQ29DLE9BQU8sQ0FBQ0ksY0FBYyxFQUFFO1FBQzVDLE1BQU0sSUFBSSxDQUFDQSxjQUFjLENBQUMzRCxNQUFNLEVBQUVNLEdBQUcsQ0FBQztNQUN4QztNQUNBLElBQUlBLEdBQUcsQ0FBQ2EsYUFBYSxDQUFDb0MsT0FBTyxDQUFDSyxjQUFjLEVBQUU7UUFDNUMsTUFBTSxJQUFJLENBQUNBLGNBQWMsQ0FBQzVELE1BQU0sRUFBRU0sR0FBRyxDQUFDO01BQ3hDO0lBQ0YsQ0FBQyxDQUFDLE9BQU91RCxDQUFDLEVBQUU7TUFDVnZELEdBQUcsQ0FBQ3VDLE1BQU0sQ0FBQ1EsS0FBSyxDQUFDUSxDQUFDLENBQUM7TUFDbkIsSUFBSUEsQ0FBQyxZQUFZQyxLQUFLLElBQUlELENBQUMsQ0FBQ0UsSUFBSSxJQUFJLGNBQWMsRUFBRTtRQUNsRCxNQUFNL0QsTUFBTSxHQUFHLElBQUksQ0FBQ1MsU0FBUyxDQUFDTCxPQUFPLENBQVE7UUFDN0NKLE1BQU0sQ0FBQ1UsTUFBTSxHQUFHLFFBQVE7TUFDMUI7SUFDRjtFQUNGOztFQUVBLE1BQU1zRCxRQUFRQSxDQUFDMUQsR0FBWSxFQUFFRixPQUFlLEVBQUVJLEdBQVMsRUFBRTtJQUN2RCxNQUFNLElBQUksQ0FBQ0gsaUJBQWlCLENBQUNDLEdBQUcsRUFBRUMseUJBQVksRUFBRUgsT0FBTyxFQUFFSSxHQUFHLENBQUM7RUFDL0Q7O0VBRUEyQixlQUFlQTtFQUNiN0IsR0FBUTtFQUNSdUIsS0FBVTtFQUNWb0MsU0FBYztFQUNkakUsTUFBc0I7RUFDdEJRLEdBQVM7RUFDVDtJQUNBd0MseUJBQVksQ0FBQ0MsSUFBSSxDQUFDLGFBQWFqRCxNQUFNLENBQUNJLE9BQU8sRUFBRSxFQUFFNkQsU0FBUyxFQUFFakUsTUFBTSxDQUFDOztJQUVuRTBCLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDM0IsTUFBTSxFQUFFO01BQ3BCVSxNQUFNLEVBQUUsV0FBVztNQUNuQnVELFNBQVMsRUFBRUEsU0FBUztNQUNwQnBDLEtBQUssRUFBRUE7SUFDVCxDQUFDLENBQUM7O0lBRUZ2QixHQUFHLENBQUM0RCxFQUFFLENBQUNqQixJQUFJLENBQUMsV0FBVyxFQUFFO01BQ3ZCa0IsSUFBSSxFQUFFRixTQUFTO01BQ2ZwQyxLQUFLLEVBQUVBLEtBQUs7TUFDWnpCLE9BQU8sRUFBRUosTUFBTSxDQUFDSTtJQUNsQixDQUFDLENBQUM7O0lBRUYsSUFBQWdELHNCQUFXLEVBQUNwRCxNQUFNLEVBQUVNLEdBQUcsRUFBRSxXQUFXLEVBQUU7TUFDcEMyRCxTQUFTLEVBQUVBLFNBQVM7TUFDcEJwQyxLQUFLLEVBQUVBLEtBQUs7TUFDWnpCLE9BQU8sRUFBRUosTUFBTSxDQUFDSTtJQUNsQixDQUFDLENBQUM7O0lBRUYsSUFBSUksR0FBRyxJQUFJLENBQUNBLEdBQUcsQ0FBQzRELFdBQVc7SUFDekI1RCxHQUFHLENBQUNFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQzJELElBQUksQ0FBQztNQUNuQjNELE1BQU0sRUFBRSxXQUFXO01BQ25CbUIsS0FBSyxFQUFFQSxLQUFLO01BQ1pvQyxTQUFTLEVBQUVBLFNBQVM7TUFDcEI3RCxPQUFPLEVBQUVKLE1BQU0sQ0FBQ0k7SUFDbEIsQ0FBQyxDQUFDO0VBQ047O0VBRUFxQyxRQUFRQTtFQUNObkMsR0FBUTtFQUNSZ0UsTUFBVztFQUNYOUIsT0FBWTtFQUNaeEMsTUFBc0I7RUFDdEJRLEdBQVM7RUFDVDtJQUNBd0MseUJBQVksQ0FBQ0MsSUFBSSxDQUFDLFVBQVVqRCxNQUFNLENBQUNJLE9BQU8sRUFBRSxFQUFFa0UsTUFBTSxFQUFFOUIsT0FBTyxFQUFFeEMsTUFBTSxDQUFDO0lBQ3RFMEIsTUFBTSxDQUFDQyxNQUFNLENBQUMzQixNQUFNLEVBQUU7TUFDcEJVLE1BQU0sRUFBRSxRQUFRO01BQ2hCd0MsTUFBTSxFQUFFb0IsTUFBTTtNQUNkQyxPQUFPLEVBQUUvQjtJQUNYLENBQUMsQ0FBQzs7SUFFRjhCLE1BQU0sR0FBR0EsTUFBTSxDQUFDRSxPQUFPLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDO0lBQ3JELE1BQU1DLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUNMLE1BQU0sRUFBRSxRQUFRLENBQUM7O0lBRWpEaEUsR0FBRyxDQUFDNEQsRUFBRSxDQUFDakIsSUFBSSxDQUFDLFFBQVEsRUFBRTtNQUNwQmtCLElBQUksRUFBRSx3QkFBd0IsR0FBR00sV0FBVyxDQUFDRyxRQUFRLENBQUMsUUFBUSxDQUFDO01BQy9EeEUsT0FBTyxFQUFFSixNQUFNLENBQUNJO0lBQ2xCLENBQUMsQ0FBQzs7SUFFRixJQUFBZ0Qsc0JBQVcsRUFBQ3BELE1BQU0sRUFBRU0sR0FBRyxFQUFFLFFBQVEsRUFBRTtNQUNqQzRDLE1BQU0sRUFBRW9CLE1BQU07TUFDZEMsT0FBTyxFQUFFL0IsT0FBTztNQUNoQnBDLE9BQU8sRUFBRUosTUFBTSxDQUFDSTtJQUNsQixDQUFDLENBQUM7SUFDRixJQUFJSSxHQUFHLElBQUksQ0FBQ0EsR0FBRyxDQUFDNEQsV0FBVztJQUN6QjVELEdBQUcsQ0FBQ0UsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDMkQsSUFBSSxDQUFDO01BQ25CM0QsTUFBTSxFQUFFLFFBQVE7TUFDaEJ3QyxNQUFNLEVBQUVvQixNQUFNO01BQ2RDLE9BQU8sRUFBRS9CLE9BQU87TUFDaEJwQyxPQUFPLEVBQUVKLE1BQU0sQ0FBQ0k7SUFDbEIsQ0FBQyxDQUFDO0VBQ047O0VBRUEsTUFBTW9ELHFCQUFxQkEsQ0FBQ2xELEdBQVEsRUFBRU4sTUFBVyxFQUFFO0lBQ2pELE1BQU1BLE1BQU0sQ0FBQzZFLFdBQVcsQ0FBQyxDQUFDO0lBQzFCLE1BQU03RSxNQUFNLENBQUN3RCxxQkFBcUIsQ0FBQyxDQUFDWixPQUFZLEtBQUs7TUFDbkQsSUFBQVEsc0JBQVcsRUFBQ3BELE1BQU0sRUFBRU0sR0FBRyxFQUFFLHVCQUF1QixFQUFFc0MsT0FBTyxDQUFDO0lBQzVELENBQUMsQ0FBQztFQUNKOztFQUVBLE1BQU1VLEtBQUtBLENBQUNoRCxHQUFZLEVBQUVOLE1BQXNCLEVBQUU7SUFDaEQsSUFBSTtNQUNGLE1BQU1BLE1BQU0sQ0FBQzZFLFdBQVcsQ0FBQyxDQUFDO01BQzFCbkQsTUFBTSxDQUFDQyxNQUFNLENBQUMzQixNQUFNLEVBQUUsRUFBRVUsTUFBTSxFQUFFLFdBQVcsRUFBRXdDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDOztNQUU1RDVDLEdBQUcsQ0FBQ3VDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLG9CQUFvQjlDLE1BQU0sQ0FBQ0ksT0FBTyxFQUFFLENBQUM7TUFDckQ7TUFDQUUsR0FBRyxDQUFDNEQsRUFBRSxDQUFDakIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUV2QyxNQUFNLEVBQUUsSUFBSSxFQUFFTixPQUFPLEVBQUVKLE1BQU0sQ0FBQ0ksT0FBTyxDQUFDLENBQUMsQ0FBQztNQUN4RSxJQUFBMEUsc0JBQVcsRUFBQzlFLE1BQU0sRUFBRU0sR0FBRyxDQUFDO0lBQzFCLENBQUMsQ0FBQyxPQUFPK0MsS0FBSyxFQUFFO01BQ2QvQyxHQUFHLENBQUN1QyxNQUFNLENBQUNRLEtBQUssQ0FBQ0EsS0FBSyxDQUFDO01BQ3ZCL0MsR0FBRyxDQUFDNEQsRUFBRSxDQUFDakIsSUFBSSxDQUFDLGVBQWUsRUFBRWpELE1BQU0sQ0FBQ0ksT0FBTyxDQUFDO0lBQzlDOztJQUVBLE1BQU0sSUFBSSxDQUFDMkUsaUJBQWlCLENBQUMvRSxNQUFNLEVBQUVNLEdBQUcsQ0FBQztJQUN6QyxNQUFNLElBQUksQ0FBQzBFLGNBQWMsQ0FBQ2hGLE1BQU0sRUFBRU0sR0FBRyxDQUFDOztJQUV0QyxJQUFJQSxHQUFHLENBQUNhLGFBQWEsQ0FBQ29DLE9BQU8sQ0FBQzBCLFVBQVUsRUFBRTtNQUN4QyxNQUFNLElBQUksQ0FBQ0EsVUFBVSxDQUFDakYsTUFBTSxFQUFFTSxHQUFHLENBQUM7SUFDcEM7O0lBRUEsSUFBSUEsR0FBRyxDQUFDYSxhQUFhLENBQUNvQyxPQUFPLENBQUMyQixpQkFBaUIsRUFBRTtNQUMvQyxNQUFNLElBQUksQ0FBQ0EsaUJBQWlCLENBQUNsRixNQUFNLEVBQUVNLEdBQUcsQ0FBQztJQUMzQztFQUNGOztFQUVBLE1BQU15RSxpQkFBaUJBLENBQUMvRSxNQUFzQixFQUFFTSxHQUFZLEVBQUU7SUFDNUQsTUFBTU4sTUFBTSxDQUFDbUYsYUFBYSxDQUFDLENBQUNDLEtBQUssS0FBSztNQUNwQzlFLEdBQUcsQ0FBQ3VDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLGdCQUFnQnNDLEtBQUssS0FBS3BGLE1BQU0sQ0FBQ0ksT0FBTyxFQUFFLENBQUM7TUFDM0QsTUFBTWlGLFFBQVEsR0FBRyxDQUFDQyx1QkFBVyxDQUFDQyxRQUFRLENBQUM7O01BRXZDLElBQUlGLFFBQVEsQ0FBQ0csUUFBUSxDQUFDSixLQUFLLENBQUMsRUFBRTtRQUM1QnBGLE1BQU0sQ0FBQ3lGLE9BQU8sQ0FBQyxDQUFDO01BQ2xCO0lBQ0YsQ0FBQyxDQUFDO0VBQ0o7O0VBRUEsTUFBTVQsY0FBY0EsQ0FBQ2hGLE1BQXNCLEVBQUVNLEdBQVksRUFBRTtJQUN6RCxNQUFNTixNQUFNLENBQUMwRixTQUFTLENBQUMsT0FBTzlDLE9BQVksS0FBSztNQUM3Q0kseUJBQVksQ0FBQ0MsSUFBSSxDQUFDLFlBQVlqRCxNQUFNLENBQUNJLE9BQU8sRUFBRSxFQUFFSixNQUFNLEVBQUU0QyxPQUFPLENBQUM7TUFDaEUsSUFBQVEsc0JBQVcsRUFBQ3BELE1BQU0sRUFBRU0sR0FBRyxFQUFFLFdBQVcsRUFBRXNDLE9BQU8sQ0FBQztNQUM5QyxJQUFJQSxPQUFPLENBQUMrQyxJQUFJLEtBQUssVUFBVTtNQUM3QjNGLE1BQU0sQ0FBQzRGLGNBQWMsQ0FBQ2hELE9BQU8sQ0FBQ2lELE1BQU0sQ0FBQ0MsRUFBRSxFQUFFLENBQUNDLFFBQVEsS0FBSztRQUNyRCxJQUFBM0Msc0JBQVcsRUFBQ3BELE1BQU0sRUFBRU0sR0FBRyxFQUFFLFVBQVUsRUFBRXlGLFFBQVEsQ0FBQztNQUNoRCxDQUFDLENBQUM7SUFDTixDQUFDLENBQUM7O0lBRUYsTUFBTS9GLE1BQU0sQ0FBQ2dHLFlBQVksQ0FBQyxPQUFPcEQsT0FBWSxLQUFLO01BQ2hEQSxPQUFPLENBQUN4QyxPQUFPLEdBQUdKLE1BQU0sQ0FBQ0ksT0FBTzs7TUFFaEMsSUFBSXdDLE9BQU8sQ0FBQytDLElBQUksS0FBSyxTQUFTLEVBQUU7UUFDOUIsSUFBQU0sMkJBQVEsRUFBQ3JELE9BQU8sRUFBRTVDLE1BQU0sRUFBRU0sR0FBRyxDQUFDdUMsTUFBTSxDQUFDO01BQ3ZDOztNQUVBO01BQ0V2QyxHQUFHLENBQUNhLGFBQWEsRUFBRStFLFNBQVMsRUFBRUMsWUFBWTtNQUN6QzdGLEdBQUcsQ0FBQ2EsYUFBYSxFQUFFb0MsT0FBTyxFQUFFNEMsWUFBWSxJQUFJdkQsT0FBTyxDQUFDd0QsTUFBTSxJQUFJLEtBQU07TUFDckU7UUFDQSxNQUFNLElBQUFELHVCQUFZLEVBQUNuRyxNQUFNLEVBQUVNLEdBQUcsRUFBRXNDLE9BQU8sQ0FBQztNQUMxQzs7TUFFQXRDLEdBQUcsQ0FBQzRELEVBQUUsQ0FBQ2pCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFb0QsUUFBUSxFQUFFekQsT0FBTyxDQUFDLENBQUMsQ0FBQztNQUN0RCxJQUFJdEMsR0FBRyxDQUFDYSxhQUFhLENBQUNvQyxPQUFPLENBQUMrQyxhQUFhLElBQUkxRCxPQUFPLENBQUN3RCxNQUFNO01BQzNELElBQUFoRCxzQkFBVyxFQUFDcEQsTUFBTSxFQUFFTSxHQUFHLEVBQUUsZUFBZSxFQUFFc0MsT0FBTyxDQUFDO0lBQ3RELENBQUMsQ0FBQzs7SUFFRixNQUFNNUMsTUFBTSxDQUFDdUcsY0FBYyxDQUFDLE9BQU9DLElBQUksS0FBSztNQUMxQ2xHLEdBQUcsQ0FBQzRELEVBQUUsQ0FBQ2pCLElBQUksQ0FBQyxjQUFjLEVBQUV1RCxJQUFJLENBQUM7TUFDakMsSUFBQXBELHNCQUFXLEVBQUNwRCxNQUFNLEVBQUVNLEdBQUcsRUFBRSxjQUFjLEVBQUVrRyxJQUFJLENBQUM7SUFDaEQsQ0FBQyxDQUFDO0VBQ0o7O0VBRUEsTUFBTXZCLFVBQVVBLENBQUNqRixNQUFzQixFQUFFTSxHQUFZLEVBQUU7SUFDckQsTUFBTU4sTUFBTSxDQUFDeUcsS0FBSyxDQUFDLE9BQU9DLEdBQUcsS0FBSztNQUNoQ3BHLEdBQUcsQ0FBQzRELEVBQUUsQ0FBQ2pCLElBQUksQ0FBQyxPQUFPLEVBQUV5RCxHQUFHLENBQUM7TUFDekIsSUFBQXRELHNCQUFXLEVBQUNwRCxNQUFNLEVBQUVNLEdBQUcsRUFBRSxPQUFPLEVBQUVvRyxHQUFHLENBQUM7SUFDeEMsQ0FBQyxDQUFDO0VBQ0o7O0VBRUEsTUFBTXhCLGlCQUFpQkEsQ0FBQ2xGLE1BQXNCLEVBQUVNLEdBQVksRUFBRTtJQUM1RCxNQUFNTixNQUFNLENBQUNrRixpQkFBaUIsQ0FBQyxPQUFPeUIsb0JBQW9CLEtBQUs7TUFDN0RyRyxHQUFHLENBQUM0RCxFQUFFLENBQUNqQixJQUFJLENBQUMsbUJBQW1CLEVBQUUwRCxvQkFBb0IsQ0FBQztNQUN0RCxJQUFBdkQsc0JBQVcsRUFBQ3BELE1BQU0sRUFBRU0sR0FBRyxFQUFFLG1CQUFtQixFQUFFcUcsb0JBQW9CLENBQUM7SUFDckUsQ0FBQyxDQUFDO0VBQ0o7O0VBRUEsTUFBTWxELGlCQUFpQkEsQ0FBQ3pELE1BQXNCLEVBQUVNLEdBQVksRUFBRTtJQUM1RCxNQUFNTixNQUFNLENBQUM2RSxXQUFXLENBQUMsQ0FBQztJQUMxQixNQUFNN0UsTUFBTSxDQUFDeUQsaUJBQWlCLENBQUMsT0FBT21ELFFBQWEsS0FBSztNQUN0RHRHLEdBQUcsQ0FBQzRELEVBQUUsQ0FBQ2pCLElBQUksQ0FBQyxtQkFBbUIsRUFBRTJELFFBQVEsQ0FBQztNQUMxQyxJQUFBeEQsc0JBQVcsRUFBQ3BELE1BQU0sRUFBRU0sR0FBRyxFQUFFLG1CQUFtQixFQUFFc0csUUFBUSxDQUFDO0lBQ3pELENBQUMsQ0FBQztFQUNKOztFQUVBLE1BQU1sRCxnQkFBZ0JBLENBQUMxRCxNQUFzQixFQUFFTSxHQUFZLEVBQUU7SUFDM0QsTUFBTU4sTUFBTSxDQUFDNkUsV0FBVyxDQUFDLENBQUM7SUFDMUIsTUFBTTdFLE1BQU0sQ0FBQzBELGdCQUFnQixDQUFDLE9BQU8yQyxRQUFhLEtBQUs7TUFDckQvRixHQUFHLENBQUM0RCxFQUFFLENBQUNqQixJQUFJLENBQUMsa0JBQWtCLEVBQUVvRCxRQUFRLENBQUM7TUFDekMsSUFBQWpELHNCQUFXLEVBQUNwRCxNQUFNLEVBQUVNLEdBQUcsRUFBRSxrQkFBa0IsRUFBRStGLFFBQVEsQ0FBQztJQUN4RCxDQUFDLENBQUM7RUFDSjtFQUNBLE1BQU0xQyxjQUFjQSxDQUFDM0QsTUFBc0IsRUFBRU0sR0FBWSxFQUFFO0lBQ3pELE1BQU1OLE1BQU0sQ0FBQzZFLFdBQVcsQ0FBQyxDQUFDO0lBQzFCLE1BQU03RSxNQUFNLENBQUMyRCxjQUFjLENBQUMsT0FBTzBDLFFBQWEsS0FBSztNQUNuRC9GLEdBQUcsQ0FBQzRELEVBQUUsQ0FBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRW9ELFFBQVEsQ0FBQztNQUN2QyxJQUFBakQsc0JBQVcsRUFBQ3BELE1BQU0sRUFBRU0sR0FBRyxFQUFFLGdCQUFnQixFQUFFK0YsUUFBUSxDQUFDO0lBQ3RELENBQUMsQ0FBQztFQUNKO0VBQ0EsTUFBTXpDLGNBQWNBLENBQUM1RCxNQUFzQixFQUFFTSxHQUFZLEVBQUU7SUFDekQsTUFBTU4sTUFBTSxDQUFDNkUsV0FBVyxDQUFDLENBQUM7SUFDMUIsTUFBTTdFLE1BQU0sQ0FBQzZHLGFBQWEsQ0FBQyxPQUFPUixRQUFhLEtBQUs7TUFDbEQvRixHQUFHLENBQUM0RCxFQUFFLENBQUNqQixJQUFJLENBQUMsZUFBZSxFQUFFb0QsUUFBUSxDQUFDO01BQ3RDLElBQUFqRCxzQkFBVyxFQUFDcEQsTUFBTSxFQUFFTSxHQUFHLEVBQUUsZUFBZSxFQUFFK0YsUUFBUSxDQUFDO0lBQ3JELENBQUMsQ0FBQztFQUNKOztFQUVBUyxjQUFjQSxDQUFDM0MsSUFBUyxFQUFFWixPQUFZLEVBQUU7SUFDdENZLElBQUksQ0FBQ1osT0FBTyxHQUFHQSxPQUFPO0lBQ3RCLE9BQU93RCxJQUFJLENBQUNDLFNBQVMsQ0FBQzdDLElBQUksQ0FBQztFQUM3Qjs7RUFFQThDLGNBQWNBLENBQUNDLElBQVMsRUFBRWxILE1BQVcsRUFBRTtJQUNyQyxNQUFNbUgsTUFBTSxHQUFHSixJQUFJLENBQUNLLEtBQUssQ0FBQ0YsSUFBSSxDQUFDO0lBQy9CLElBQUlDLE1BQU0sQ0FBQzVELE9BQU8sSUFBSSxDQUFDdkQsTUFBTSxDQUFDdUQsT0FBTyxFQUFFdkQsTUFBTSxDQUFDdUQsT0FBTyxHQUFHNEQsTUFBTSxDQUFDNUQsT0FBTztJQUN0RSxPQUFPNEQsTUFBTSxDQUFDNUQsT0FBTztJQUNyQixPQUFPNEQsTUFBTTtFQUNmOztFQUVBMUcsU0FBU0EsQ0FBQ0wsT0FBWSxFQUFFO0lBQ3RCLElBQUlKLE1BQU0sR0FBR08seUJBQVksQ0FBQ0gsT0FBTyxDQUFDOztJQUVsQyxJQUFJLENBQUNKLE1BQU07SUFDVEEsTUFBTSxHQUFHTyx5QkFBWSxDQUFDSCxPQUFPLENBQUMsR0FBRztNQUMvQk0sTUFBTSxFQUFFLElBQUk7TUFDWk4sT0FBTyxFQUFFQTtJQUNYLENBQVE7SUFDVixPQUFPSixNQUFNO0VBQ2Y7QUFDRixDQUFDcUgsT0FBQSxDQUFBQyxPQUFBLEdBQUF4SCxpQkFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
package/dist/util/functions.js
CHANGED
|
@@ -46,7 +46,8 @@ var _bucketAlreadyExists = require("./bucketAlreadyExists"); /*
|
|
|
46
46
|
* See the License for the specific language governing permissions and
|
|
47
47
|
* limitations under the License.
|
|
48
48
|
*/let mime, crypto; //, aws: any;
|
|
49
|
-
if (_config.default.webhook.uploadS3) {mime = _config.default.webhook.uploadS3 ? _mimeTypes.default : null;crypto = _config.default.webhook.uploadS3 ? _crypto.default : null;}if (_config.default?.websocket?.uploadS3) {mime = _config.default.websocket.uploadS3 ? _mimeTypes.default : null;crypto = _config.default.websocket.uploadS3 ? _crypto.default : null;}function contactToArray(number, isGroup, isNewsletter
|
|
49
|
+
if (_config.default.webhook.uploadS3) {mime = _config.default.webhook.uploadS3 ? _mimeTypes.default : null;crypto = _config.default.webhook.uploadS3 ? _crypto.default : null;}if (_config.default?.websocket?.uploadS3) {mime = _config.default.websocket.uploadS3 ? _mimeTypes.default : null;crypto = _config.default.websocket.uploadS3 ? _crypto.default : null;}function contactToArray(number, isGroup, isNewsletter,
|
|
50
|
+
isLid)
|
|
50
51
|
{
|
|
51
52
|
const localArr = [];
|
|
52
53
|
if (Array.isArray(number)) {
|
|
@@ -57,6 +58,8 @@ if (_config.default.webhook.uploadS3) {mime = _config.default.webhook.uploadS3 ?
|
|
|
57
58
|
if (contact !== '')
|
|
58
59
|
if (isGroup) localArr.push(`${contact}@g.us`);else
|
|
59
60
|
if (isNewsletter) localArr.push(`${contact}@newsletter`);else
|
|
61
|
+
if (isLid || contact.length > 14)
|
|
62
|
+
localArr.push(`${contact}@lid`);else
|
|
60
63
|
localArr.push(`${contact}@c.us`);
|
|
61
64
|
}
|
|
62
65
|
} else {
|
|
@@ -68,6 +71,8 @@ if (_config.default.webhook.uploadS3) {mime = _config.default.webhook.uploadS3 ?
|
|
|
68
71
|
if (contact !== '')
|
|
69
72
|
if (isGroup) localArr.push(`${contact}@g.us`);else
|
|
70
73
|
if (isNewsletter) localArr.push(`${contact}@newsletter`);else
|
|
74
|
+
if (isLid || contact.length > 14)
|
|
75
|
+
localArr.push(`${contact}@lid`);else
|
|
71
76
|
localArr.push(`${contact}@c.us`);
|
|
72
77
|
}
|
|
73
78
|
}
|
|
@@ -367,4 +372,4 @@ function createCatalogLink(session) {
|
|
|
367
372
|
const [wid] = session.split('@');
|
|
368
373
|
return `https://wa.me/c/${wid}`;
|
|
369
374
|
}
|
|
370
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2xpZW50UyIsInJlcXVpcmUiLCJfYXhpb3MiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2NyeXB0byIsIl9mcyIsIl9taW1lVHlwZXMiLCJfb3MiLCJfcGF0aCIsIl91dGlsIiwiX2NvbmZpZyIsIl9pbmRleCIsIl9idWNrZXRBbHJlYWR5RXhpc3RzIiwibWltZSIsImNyeXB0byIsImNvbmZpZyIsIndlYmhvb2siLCJ1cGxvYWRTMyIsIm1pbWV0eXBlcyIsIkNyeXB0byIsIndlYnNvY2tldCIsImNvbnRhY3RUb0FycmF5IiwibnVtYmVyIiwiaXNHcm91cCIsImlzTmV3c2xldHRlciIsImxvY2FsQXJyIiwiQXJyYXkiLCJpc0FycmF5IiwiY29udGFjdCIsInNwbGl0IiwicmVwbGFjZSIsInB1c2giLCJhcnJDb250YWN0cyIsImdyb3VwVG9BcnJheSIsImdyb3VwIiwiZ3JvdXBOYW1lVG9BcnJheSIsImNhbGxXZWJIb29rIiwiY2xpZW50IiwicmVxIiwiZXZlbnQiLCJkYXRhIiwic2VydmVyT3B0aW9ucyIsInVybCIsImlnbm9yZSIsImluY2x1ZGVzIiwiZnJvbSIsInR5cGUiLCJhdXRvRG93bmxvYWQiLCJjaGF0SWQiLCJfc2VyaWFsaXplZCIsIk9iamVjdCIsImFzc2lnbiIsInNlc3Npb24iLCJtYXBwZXIiLCJlbmFibGUiLCJjb252ZXJ0IiwicHJlZml4IiwiYXBpIiwicG9zdCIsInRoZW4iLCJldmVudHMiLCJyZWFkTWVzc2FnZSIsInNlbmRTZWVuIiwiZSIsImNhdGNoIiwibG9nZ2VyIiwid2FybiIsImVycm9yIiwibWVzc2FnZSIsImlzTWVkaWEiLCJpc01NUyIsImJ1ZmZlciIsImRlY3J5cHRGaWxlIiwiaGFzaE5hbWUiLCJyYW5kb21CeXRlcyIsInRvU3RyaW5nIiwiYXdzX3MzIiwicmVnaW9uIiwiYWNjZXNzX2tleV9pZCIsInNlY3JldF9rZXkiLCJFcnJvciIsInMzQ2xpZW50IiwiUzNDbGllbnQiLCJlbmRwb2ludCIsInVuZGVmaW5lZCIsImZvcmNlUGF0aFN0eWxlIiwiYnVja2V0TmFtZSIsImRlZmF1bHRCdWNrZXROYW1lIiwibm9ybWFsaXplIiwidG9Mb3dlckNhc2UiLCJsZW5ndGgiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJmaWxlTmFtZSIsImV4dGVuc2lvbiIsIm1pbWV0eXBlIiwiYnVja2V0QWxyZWFkeUV4aXN0cyIsInNlbmQiLCJDcmVhdGVCdWNrZXRDb21tYW5kIiwiQnVja2V0IiwiT2JqZWN0T3duZXJzaGlwIiwiUHV0UHVibGljQWNjZXNzQmxvY2tDb21tYW5kIiwiUHVibGljQWNjZXNzQmxvY2tDb25maWd1cmF0aW9uIiwiQmxvY2tQdWJsaWNBY2xzIiwiSWdub3JlUHVibGljQWNscyIsIkJsb2NrUHVibGljUG9saWN5IiwiUHV0T2JqZWN0Q29tbWFuZCIsIktleSIsIkJvZHkiLCJDb250ZW50VHlwZSIsIkFDTCIsImZpbGVVcmwiLCJib2R5Iiwic3RhcnRBbGxTZXNzaW9ucyIsImhvc3QiLCJwb3J0Iiwic2VjcmV0S2V5Iiwic3RhcnRIZWxwZXIiLCJhbGxVbnJlYWRPblN0YXJ0Iiwic2VuZFVucmVhZCIsImFyY2hpdmUiLCJpbmZvIiwiY2hhdHMiLCJnZXRBbGxDaGF0c1dpdGhNZXNzYWdlcyIsImkiLCJqIiwibXNncyIsImV4Iiwic2xlZXAiLCJ0aW1lIiwiUHJvbWlzZSIsInJlc29sdmUiLCJzZXRUaW1lb3V0IiwiZ2V0QWxsQ2hhdHMiLCJmaWx0ZXIiLCJjIiwiZGF0ZSIsIkRhdGUiLCJ0IiwiRGF5c0JldHdlZW4iLCJkYXlzVG9BcmNoaXZlIiwiYXJjaGl2ZUNoYXQiLCJpZCIsIndhaXRUaW1lIiwiU3RhcnREYXRlIiwiZW5kRGF0ZSIsIm9uZURheSIsInN0YXJ0IiwiVVRDIiwiZ2V0RnVsbFllYXIiLCJnZXRNb250aCIsImdldERhdGUiLCJlbmQiLCJjcmVhdGVGb2xkZXJzIiwiX19kaXJuYW1lIiwicGF0aCIsImRpcm5hbWUiLCJkaXJGaWxlcyIsImZzIiwiZXhpc3RzU3luYyIsIm1rZGlyU3luYyIsImRpclVwbG9hZCIsInN0clRvQm9vbCIsInMiLCJ0ZXN0IiwiZ2V0SVBBZGRyZXNzIiwiaW50ZXJmYWNlcyIsIm9zIiwibmV0d29ya0ludGVyZmFjZXMiLCJkZXZOYW1lIiwiaWZhY2UiLCJhbGlhcyIsImZhbWlseSIsImFkZHJlc3MiLCJpbnRlcm5hbCIsInNldE1heExpc3RuZXJzIiwiTnVtYmVyIiwiaXNJbnRlZ2VyIiwibWF4TGlzdGVuZXJzIiwicHJvY2VzcyIsInNldE1heExpc3RlbmVycyIsInVubGlua0FzeW5jIiwiZXhwb3J0cyIsInByb21pc2lmeSIsInVubGluayIsImNyZWF0ZUNhdGFsb2dMaW5rIiwid2lkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvZnVuY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAyMyBXUFBDb25uZWN0IFRlYW1cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7XG4gIENyZWF0ZUJ1Y2tldENvbW1hbmQsXG4gIFB1dE9iamVjdENvbW1hbmQsXG4gIFB1dFB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZCxcbiAgUzNDbGllbnQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zMyc7XG5pbXBvcnQgYXBpIGZyb20gJ2F4aW9zJztcbmltcG9ydCBDcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IFJlcXVlc3QgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgbWltZXR5cGVzIGZyb20gJ21pbWUtdHlwZXMnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAndXRpbCc7XG5cbmltcG9ydCBjb25maWcgZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7IGNvbnZlcnQgfSBmcm9tICcuLi9tYXBwZXIvaW5kZXgnO1xuaW1wb3J0IHsgU2VydmVyT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzL1NlcnZlck9wdGlvbnMnO1xuaW1wb3J0IHsgYnVja2V0QWxyZWFkeUV4aXN0cyB9IGZyb20gJy4vYnVja2V0QWxyZWFkeUV4aXN0cyc7XG5cbmxldCBtaW1lOiBhbnksIGNyeXB0bzogYW55OyAvLywgYXdzOiBhbnk7XG5pZiAoY29uZmlnLndlYmhvb2sudXBsb2FkUzMpIHtcbiAgbWltZSA9IGNvbmZpZy53ZWJob29rLnVwbG9hZFMzID8gbWltZXR5cGVzIDogbnVsbDtcbiAgY3J5cHRvID0gY29uZmlnLndlYmhvb2sudXBsb2FkUzMgPyBDcnlwdG8gOiBudWxsO1xufVxuaWYgKGNvbmZpZz8ud2Vic29ja2V0Py51cGxvYWRTMykge1xuICBtaW1lID0gY29uZmlnLndlYnNvY2tldC51cGxvYWRTMyA/IG1pbWV0eXBlcyA6IG51bGw7XG4gIGNyeXB0byA9IGNvbmZpZy53ZWJzb2NrZXQudXBsb2FkUzMgPyBDcnlwdG8gOiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udGFjdFRvQXJyYXkoXG4gIG51bWJlcjogYW55LFxuICBpc0dyb3VwPzogYm9vbGVhbixcbiAgaXNOZXdzbGV0dGVyPzogYm9vbGVhblxuKSB7XG4gIGNvbnN0IGxvY2FsQXJyOiBhbnkgPSBbXTtcbiAgaWYgKEFycmF5LmlzQXJyYXkobnVtYmVyKSkge1xuICAgIGZvciAobGV0IGNvbnRhY3Qgb2YgbnVtYmVyKSB7XG4gICAgICBpc0dyb3VwIHx8IGlzTmV3c2xldHRlclxuICAgICAgICA/IChjb250YWN0ID0gY29udGFjdC5zcGxpdCgnQCcpWzBdKVxuICAgICAgICA6IChjb250YWN0ID0gY29udGFjdC5zcGxpdCgnQCcpWzBdPy5yZXBsYWNlKC9bXlxcdyBdL2csICcnKSk7XG4gICAgICBpZiAoY29udGFjdCAhPT0gJycpXG4gICAgICAgIGlmIChpc0dyb3VwKSAobG9jYWxBcnIgYXMgYW55KS5wdXNoKGAke2NvbnRhY3R9QGcudXNgKTtcbiAgICAgICAgZWxzZSBpZiAoaXNOZXdzbGV0dGVyKSAobG9jYWxBcnIgYXMgYW55KS5wdXNoKGAke2NvbnRhY3R9QG5ld3NsZXR0ZXJgKTtcbiAgICAgICAgZWxzZSAobG9jYWxBcnIgYXMgYW55KS5wdXNoKGAke2NvbnRhY3R9QGMudXNgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgYXJyQ29udGFjdHMgPSBudW1iZXIuc3BsaXQoL1xccypbLDtdXFxzKi9nKTtcbiAgICBmb3IgKGxldCBjb250YWN0IG9mIGFyckNvbnRhY3RzKSB7XG4gICAgICBpc0dyb3VwIHx8IGlzTmV3c2xldHRlclxuICAgICAgICA/IChjb250YWN0ID0gY29udGFjdC5zcGxpdCgnQCcpWzBdKVxuICAgICAgICA6IChjb250YWN0ID0gY29udGFjdC5zcGxpdCgnQCcpWzBdPy5yZXBsYWNlKC9bXlxcdyBdL2csICcnKSk7XG4gICAgICBpZiAoY29udGFjdCAhPT0gJycpXG4gICAgICAgIGlmIChpc0dyb3VwKSAobG9jYWxBcnIgYXMgYW55KS5wdXNoKGAke2NvbnRhY3R9QGcudXNgKTtcbiAgICAgICAgZWxzZSBpZiAoaXNOZXdzbGV0dGVyKSAobG9jYWxBcnIgYXMgYW55KS5wdXNoKGAke2NvbnRhY3R9QG5ld3NsZXR0ZXJgKTtcbiAgICAgICAgZWxzZSAobG9jYWxBcnIgYXMgYW55KS5wdXNoKGAke2NvbnRhY3R9QGMudXNgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbG9jYWxBcnI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncm91cFRvQXJyYXkoZ3JvdXA6IGFueSkge1xuICBjb25zdCBsb2NhbEFycjogYW55ID0gW107XG4gIGlmIChBcnJheS5pc0FycmF5KGdyb3VwKSkge1xuICAgIGZvciAobGV0IGNvbnRhY3Qgb2YgZ3JvdXApIHtcbiAgICAgIGNvbnRhY3QgPSBjb250YWN0LnNwbGl0KCdAJylbMF07XG4gICAgICBpZiAoY29udGFjdCAhPT0gJycpIChsb2NhbEFyciBhcyBhbnkpLnB1c2goYCR7Y29udGFjdH1AZy51c2ApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBhcnJDb250YWN0cyA9IGdyb3VwLnNwbGl0KC9cXHMqWyw7XVxccyovZyk7XG4gICAgZm9yIChsZXQgY29udGFjdCBvZiBhcnJDb250YWN0cykge1xuICAgICAgY29udGFjdCA9IGNvbnRhY3Quc3BsaXQoJ0AnKVswXTtcbiAgICAgIGlmIChjb250YWN0ICE9PSAnJykgKGxvY2FsQXJyIGFzIGFueSkucHVzaChgJHtjb250YWN0fUBnLnVzYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxvY2FsQXJyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBOYW1lVG9BcnJheShncm91cDogYW55KSB7XG4gIGNvbnN0IGxvY2FsQXJyOiBhbnkgPSBbXTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXApKSB7XG4gICAgZm9yIChjb25zdCBjb250YWN0IG9mIGdyb3VwKSB7XG4gICAgICBpZiAoY29udGFjdCAhPT0gJycpIChsb2NhbEFyciBhcyBhbnkpLnB1c2goYCR7Y29udGFjdH1gKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgYXJyQ29udGFjdHMgPSBncm91cC5zcGxpdCgvXFxzKlssO11cXHMqL2cpO1xuICAgIGZvciAoY29uc3QgY29udGFjdCBvZiBhcnJDb250YWN0cykge1xuICAgICAgaWYgKGNvbnRhY3QgIT09ICcnKSAobG9jYWxBcnIgYXMgYW55KS5wdXNoKGAke2NvbnRhY3R9YCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxvY2FsQXJyO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2FsbFdlYkhvb2soXG4gIGNsaWVudDogYW55LFxuICByZXE6IFJlcXVlc3QsXG4gIGV2ZW50OiBhbnksXG4gIGRhdGE6IGFueVxuKSB7XG4gIGNvbnN0IHdlYmhvb2sgPVxuICAgIGNsaWVudD8uY29uZmlnLndlYmhvb2sgfHwgcmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay51cmwgfHwgZmFsc2U7XG4gIGlmICh3ZWJob29rKSB7XG4gICAgaWYgKFxuICAgICAgcmVxLnNlcnZlck9wdGlvbnMud2ViaG9vaz8uaWdub3JlICYmXG4gICAgICAocmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5pZ25vcmUuaW5jbHVkZXMoZXZlbnQpIHx8XG4gICAgICAgIHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2suaWdub3JlLmluY2x1ZGVzKGRhdGE/LmZyb20pIHx8XG4gICAgICAgIHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2suaWdub3JlLmluY2x1ZGVzKGRhdGE/LnR5cGUpKVxuICAgIClcbiAgICAgIHJldHVybjtcbiAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5hdXRvRG93bmxvYWQpXG4gICAgICBhd2FpdCBhdXRvRG93bmxvYWQoY2xpZW50LCByZXEsIGRhdGEpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjaGF0SWQgPVxuICAgICAgICBkYXRhLmZyb20gfHxcbiAgICAgICAgZGF0YS5jaGF0SWQgfHxcbiAgICAgICAgKGRhdGEuY2hhdElkID8gZGF0YS5jaGF0SWQuX3NlcmlhbGl6ZWQgOiBudWxsKTtcbiAgICAgIGRhdGEgPSBPYmplY3QuYXNzaWduKHsgZXZlbnQ6IGV2ZW50LCBzZXNzaW9uOiBjbGllbnQuc2Vzc2lvbiB9LCBkYXRhKTtcbiAgICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy5tYXBwZXIuZW5hYmxlKVxuICAgICAgICBkYXRhID0gYXdhaXQgY29udmVydChyZXEuc2VydmVyT3B0aW9ucy5tYXBwZXIucHJlZml4LCBkYXRhKTtcbiAgICAgIGFwaVxuICAgICAgICAucG9zdCh3ZWJob29rLCBkYXRhKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50cyA9IFsndW5yZWFkbWVzc2FnZXMnLCAnb25tZXNzYWdlJ107XG4gICAgICAgICAgICBpZiAoZXZlbnRzLmluY2x1ZGVzKGV2ZW50KSAmJiByZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLnJlYWRNZXNzYWdlKVxuICAgICAgICAgICAgICBjbGllbnQuc2VuZFNlZW4oY2hhdElkKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICByZXEubG9nZ2VyLndhcm4oJ0Vycm9yIGNhbGxpbmcgV2ViaG9vay4nLCBlKTtcbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVxLmxvZ2dlci5lcnJvcihlKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGF1dG9Eb3dubG9hZChjbGllbnQ6IGFueSwgcmVxOiBhbnksIG1lc3NhZ2U6IGFueSkge1xuICB0cnkge1xuICAgIGlmIChtZXNzYWdlICYmIChtZXNzYWdlWydtaW1ldHlwZSddIHx8IG1lc3NhZ2UuaXNNZWRpYSB8fCBtZXNzYWdlLmlzTU1TKSkge1xuICAgICAgY29uc3QgYnVmZmVyID0gYXdhaXQgY2xpZW50LmRlY3J5cHRGaWxlKG1lc3NhZ2UpO1xuICAgICAgaWYgKFxuICAgICAgICByZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLnVwbG9hZFMzIHx8XG4gICAgICAgIHJlcS5zZXJ2ZXJPcHRpb25zPy53ZWJzb2NrZXQ/LnVwbG9hZFMzXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgaGFzaE5hbWUgPSBjcnlwdG8ucmFuZG9tQnl0ZXMoMjQpLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgIWNvbmZpZz8uYXdzX3MzPy5yZWdpb24gfHxcbiAgICAgICAgICAhY29uZmlnPy5hd3NfczM/LmFjY2Vzc19rZXlfaWQgfHxcbiAgICAgICAgICAhY29uZmlnPy5hd3NfczM/LnNlY3JldF9rZXlcbiAgICAgICAgKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlLCBjb25maWd1cmUgeW91ciBhd3MgY29uZmlncycpO1xuICAgICAgICBjb25zdCBzM0NsaWVudCA9IG5ldyBTM0NsaWVudCh7XG4gICAgICAgICAgcmVnaW9uOiBjb25maWc/LmF3c19zMz8ucmVnaW9uLFxuICAgICAgICAgIGVuZHBvaW50OiBjb25maWc/LmF3c19zMz8uZW5kcG9pbnQgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgIGZvcmNlUGF0aFN0eWxlOiBjb25maWc/LmF3c19zMz8uZm9yY2VQYXRoU3R5bGUgfHwgdW5kZWZpbmVkLFxuICAgICAgICB9KTtcbiAgICAgICAgbGV0IGJ1Y2tldE5hbWUgPSBjb25maWc/LmF3c19zMz8uZGVmYXVsdEJ1Y2tldE5hbWVcbiAgICAgICAgICA/IGNvbmZpZz8uYXdzX3MzPy5kZWZhdWx0QnVja2V0TmFtZVxuICAgICAgICAgIDogY2xpZW50LnNlc3Npb247XG4gICAgICAgIGJ1Y2tldE5hbWUgPSBidWNrZXROYW1lXG4gICAgICAgICAgLm5vcm1hbGl6ZSgnTkZEJylcbiAgICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl18W+KAlCBfLiw/IV0vZywgJycpXG4gICAgICAgICAgLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGJ1Y2tldE5hbWUgPVxuICAgICAgICAgIGJ1Y2tldE5hbWUubGVuZ3RoIDwgM1xuICAgICAgICAgICAgPyBidWNrZXROYW1lICtcbiAgICAgICAgICAgICAgYCR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKDk5OSAtIDEwMCArIDEpKSArIDEwMH1gXG4gICAgICAgICAgICA6IGJ1Y2tldE5hbWU7XG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gYCR7XG4gICAgICAgICAgY29uZmlnLmF3c19zMy5kZWZhdWx0QnVja2V0TmFtZSA/IGNsaWVudC5zZXNzaW9uICsgJy8nIDogJydcbiAgICAgICAgfSR7aGFzaE5hbWV9LiR7bWltZS5leHRlbnNpb24obWVzc2FnZS5taW1ldHlwZSl9YDtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgIWNvbmZpZy5hd3NfczMuZGVmYXVsdEJ1Y2tldE5hbWUgJiZcbiAgICAgICAgICAhKGF3YWl0IGJ1Y2tldEFscmVhZHlFeGlzdHMoYnVja2V0TmFtZSkpXG4gICAgICAgICkge1xuICAgICAgICAgIGF3YWl0IHMzQ2xpZW50LnNlbmQoXG4gICAgICAgICAgICBuZXcgQ3JlYXRlQnVja2V0Q29tbWFuZCh7XG4gICAgICAgICAgICAgIEJ1Y2tldDogYnVja2V0TmFtZSxcbiAgICAgICAgICAgICAgT2JqZWN0T3duZXJzaGlwOiAnT2JqZWN0V3JpdGVyJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICBhd2FpdCBzM0NsaWVudC5zZW5kKFxuICAgICAgICAgICAgbmV3IFB1dFB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZCh7XG4gICAgICAgICAgICAgIEJ1Y2tldDogYnVja2V0TmFtZSxcbiAgICAgICAgICAgICAgUHVibGljQWNjZXNzQmxvY2tDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICAgICAgQmxvY2tQdWJsaWNBY2xzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBJZ25vcmVQdWJsaWNBY2xzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBCbG9ja1B1YmxpY1BvbGljeTogZmFsc2UsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBzM0NsaWVudC5zZW5kKFxuICAgICAgICAgIG5ldyBQdXRPYmplY3RDb21tYW5kKHtcbiAgICAgICAgICAgIEJ1Y2tldDogYnVja2V0TmFtZSxcbiAgICAgICAgICAgIEtleTogZmlsZU5hbWUsXG4gICAgICAgICAgICBCb2R5OiBidWZmZXIsXG4gICAgICAgICAgICBDb250ZW50VHlwZTogbWVzc2FnZS5taW1ldHlwZSxcbiAgICAgICAgICAgIEFDTDogJ3B1YmxpYy1yZWFkJyxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIG1lc3NhZ2UuZmlsZVVybCA9IGBodHRwczovLyR7YnVja2V0TmFtZX0uczMuYW1hem9uYXdzLmNvbS8ke2ZpbGVOYW1lfWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXNzYWdlLmJvZHkgPSBhd2FpdCBidWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0QWxsU2Vzc2lvbnMoY29uZmlnOiBhbnksIGxvZ2dlcjogYW55KSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgYXBpLnBvc3QoXG4gICAgICBgJHtjb25maWcuaG9zdH06JHtjb25maWcucG9ydH0vYXBpLyR7Y29uZmlnLnNlY3JldEtleX0vc3RhcnQtYWxsYFxuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIuZXJyb3IoZSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0SGVscGVyKGNsaWVudDogYW55LCByZXE6IGFueSkge1xuICBpZiAocmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5hbGxVbnJlYWRPblN0YXJ0KSBhd2FpdCBzZW5kVW5yZWFkKGNsaWVudCwgcmVxKTtcblxuICBpZiAocmVxLnNlcnZlck9wdGlvbnMuYXJjaGl2ZS5lbmFibGUpIGF3YWl0IGFyY2hpdmUoY2xpZW50LCByZXEpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZW5kVW5yZWFkKGNsaWVudDogYW55LCByZXE6IGFueSkge1xuICByZXEubG9nZ2VyLmluZm8oYCR7Y2xpZW50LnNlc3Npb259IDogSW5pY2lvIGVudmlhciBtZW5zYWdlbnMgbsOjbyBsaWRhc2ApO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgY2hhdHMgPSBhd2FpdCBjbGllbnQuZ2V0QWxsQ2hhdHNXaXRoTWVzc2FnZXModHJ1ZSk7XG5cbiAgICBpZiAoY2hhdHMgJiYgY2hhdHMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGF0cy5sZW5ndGg7IGkrKylcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjaGF0c1tpXS5tc2dzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICd1bnJlYWRtZXNzYWdlcycsIGNoYXRzW2ldLm1zZ3Nbal0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVxLmxvZ2dlci5pbmZvKGAke2NsaWVudC5zZXNzaW9ufSA6IEZpbSBlbnZpYXIgbWVuc2FnZW5zIG7Do28gbGlkYXNgKTtcbiAgfSBjYXRjaCAoZXgpIHtcbiAgICByZXEubG9nZ2VyLmVycm9yKGV4KTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBhcmNoaXZlKGNsaWVudDogYW55LCByZXE6IGFueSkge1xuICBhc3luYyBmdW5jdGlvbiBzbGVlcCh0aW1lOiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgdGltZSAqIDEwKSk7XG4gIH1cblxuICByZXEubG9nZ2VyLmluZm8oYCR7Y2xpZW50LnNlc3Npb259IDogSW5pY2lvIGFycXVpdmFuZG8gY2hhdHNgKTtcblxuICB0cnkge1xuICAgIGxldCBjaGF0cyA9IGF3YWl0IGNsaWVudC5nZXRBbGxDaGF0cygpO1xuICAgIGlmIChjaGF0cyAmJiBBcnJheS5pc0FycmF5KGNoYXRzKSAmJiBjaGF0cy5sZW5ndGggPiAwKSB7XG4gICAgICBjaGF0cyA9IGNoYXRzLmZpbHRlcigoYykgPT4gIWMuYXJjaGl2ZSk7XG4gICAgfVxuICAgIGlmIChjaGF0cyAmJiBBcnJheS5pc0FycmF5KGNoYXRzKSAmJiBjaGF0cy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoYXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShjaGF0c1tpXS50ICogMTAwMCk7XG5cbiAgICAgICAgaWYgKERheXNCZXR3ZWVuKGRhdGUpID4gcmVxLnNlcnZlck9wdGlvbnMuYXJjaGl2ZS5kYXlzVG9BcmNoaXZlKSB7XG4gICAgICAgICAgYXdhaXQgY2xpZW50LmFyY2hpdmVDaGF0KFxuICAgICAgICAgICAgY2hhdHNbaV0uaWQuaWQgfHwgY2hhdHNbaV0uaWQuX3NlcmlhbGl6ZWQsXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgKTtcbiAgICAgICAgICBhd2FpdCBzbGVlcChcbiAgICAgICAgICAgIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHJlcS5zZXJ2ZXJPcHRpb25zLmFyY2hpdmUud2FpdFRpbWUgKyAxKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmVxLmxvZ2dlci5pbmZvKGAke2NsaWVudC5zZXNzaW9ufSA6IEZpbSBhcnF1aXZhbmRvIGNoYXRzYCk7XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihleCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gRGF5c0JldHdlZW4oU3RhcnREYXRlOiBEYXRlKSB7XG4gIGNvbnN0IGVuZERhdGUgPSBuZXcgRGF0ZSgpO1xuICAvLyBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBhbGwgVVRDIGRheXMgKG5vIERTVClcbiAgY29uc3Qgb25lRGF5ID0gMTAwMCAqIDYwICogNjAgKiAyNDtcblxuICAvLyBBIGRheSBpbiBVVEMgYWx3YXlzIGxhc3RzIDI0IGhvdXJzICh1bmxpa2UgaW4gb3RoZXIgdGltZSBmb3JtYXRzKVxuICBjb25zdCBzdGFydCA9IERhdGUuVVRDKFxuICAgIGVuZERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICBlbmREYXRlLmdldE1vbnRoKCksXG4gICAgZW5kRGF0ZS5nZXREYXRlKClcbiAgKTtcbiAgY29uc3QgZW5kID0gRGF0ZS5VVEMoXG4gICAgU3RhcnREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgU3RhcnREYXRlLmdldE1vbnRoKCksXG4gICAgU3RhcnREYXRlLmdldERhdGUoKVxuICApO1xuXG4gIC8vIHNvIGl0J3Mgc2FmZSB0byBkaXZpZGUgYnkgMjQgaG91cnNcbiAgcmV0dXJuIChzdGFydCAtIGVuZCkgLyBvbmVEYXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb2xkZXJzKCkge1xuICBjb25zdCBfX2Rpcm5hbWUgPSBwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKCcnKSk7XG4gIGNvbnN0IGRpckZpbGVzID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ1doYXRzQXBwSW1hZ2VzJyk7XG4gIGlmICghZnMuZXhpc3RzU3luYyhkaXJGaWxlcykpIHtcbiAgICBmcy5ta2RpclN5bmMoZGlyRmlsZXMpO1xuICB9XG5cbiAgY29uc3QgZGlyVXBsb2FkID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ3VwbG9hZHMnKTtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGRpclVwbG9hZCkpIHtcbiAgICBmcy5ta2RpclN5bmMoZGlyVXBsb2FkKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyVG9Cb29sKHM6IHN0cmluZykge1xuICByZXR1cm4gL14odHJ1ZXwxKSQvaS50ZXN0KHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SVBBZGRyZXNzKCkge1xuICBjb25zdCBpbnRlcmZhY2VzID0gb3MubmV0d29ya0ludGVyZmFjZXMoKTtcbiAgZm9yIChjb25zdCBkZXZOYW1lIGluIGludGVyZmFjZXMpIHtcbiAgICBjb25zdCBpZmFjZTogYW55ID0gaW50ZXJmYWNlc1tkZXZOYW1lXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlmYWNlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBhbGlhcyA9IGlmYWNlW2ldO1xuICAgICAgaWYgKFxuICAgICAgICBhbGlhcy5mYW1pbHkgPT09ICdJUHY0JyAmJlxuICAgICAgICBhbGlhcy5hZGRyZXNzICE9PSAnMTI3LjAuMC4xJyAmJlxuICAgICAgICAhYWxpYXMuaW50ZXJuYWxcbiAgICAgIClcbiAgICAgICAgcmV0dXJuIGFsaWFzLmFkZHJlc3M7XG4gICAgfVxuICB9XG4gIHJldHVybiAnMC4wLjAuMCc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRNYXhMaXN0bmVycyhzZXJ2ZXJPcHRpb25zOiBTZXJ2ZXJPcHRpb25zKSB7XG4gIGlmIChzZXJ2ZXJPcHRpb25zICYmIE51bWJlci5pc0ludGVnZXIoc2VydmVyT3B0aW9ucy5tYXhMaXN0ZW5lcnMpKSB7XG4gICAgcHJvY2Vzcy5zZXRNYXhMaXN0ZW5lcnMoc2VydmVyT3B0aW9ucy5tYXhMaXN0ZW5lcnMpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCB1bmxpbmtBc3luYyA9IHByb21pc2lmeShmcy51bmxpbmspO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2F0YWxvZ0xpbmsoc2Vzc2lvbjogYW55KSB7XG4gIGNvbnN0IFt3aWRdID0gc2Vzc2lvbi5zcGxp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
|
|
375
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2xpZW50UyIsInJlcXVpcmUiLCJfYXhpb3MiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2NyeXB0byIsIl9mcyIsIl9taW1lVHlwZXMiLCJfb3MiLCJfcGF0aCIsIl91dGlsIiwiX2NvbmZpZyIsIl9pbmRleCIsIl9idWNrZXRBbHJlYWR5RXhpc3RzIiwibWltZSIsImNyeXB0byIsImNvbmZpZyIsIndlYmhvb2siLCJ1cGxvYWRTMyIsIm1pbWV0eXBlcyIsIkNyeXB0byIsIndlYnNvY2tldCIsImNvbnRhY3RUb0FycmF5IiwibnVtYmVyIiwiaXNHcm91cCIsImlzTmV3c2xldHRlciIsImlzTGlkIiwibG9jYWxBcnIiLCJBcnJheSIsImlzQXJyYXkiLCJjb250YWN0Iiwic3BsaXQiLCJyZXBsYWNlIiwicHVzaCIsImxlbmd0aCIsImFyckNvbnRhY3RzIiwiZ3JvdXBUb0FycmF5IiwiZ3JvdXAiLCJncm91cE5hbWVUb0FycmF5IiwiY2FsbFdlYkhvb2siLCJjbGllbnQiLCJyZXEiLCJldmVudCIsImRhdGEiLCJzZXJ2ZXJPcHRpb25zIiwidXJsIiwiaWdub3JlIiwiaW5jbHVkZXMiLCJmcm9tIiwidHlwZSIsImF1dG9Eb3dubG9hZCIsImNoYXRJZCIsIl9zZXJpYWxpemVkIiwiT2JqZWN0IiwiYXNzaWduIiwic2Vzc2lvbiIsIm1hcHBlciIsImVuYWJsZSIsImNvbnZlcnQiLCJwcmVmaXgiLCJhcGkiLCJwb3N0IiwidGhlbiIsImV2ZW50cyIsInJlYWRNZXNzYWdlIiwic2VuZFNlZW4iLCJlIiwiY2F0Y2giLCJsb2dnZXIiLCJ3YXJuIiwiZXJyb3IiLCJtZXNzYWdlIiwiaXNNZWRpYSIsImlzTU1TIiwiYnVmZmVyIiwiZGVjcnlwdEZpbGUiLCJoYXNoTmFtZSIsInJhbmRvbUJ5dGVzIiwidG9TdHJpbmciLCJhd3NfczMiLCJyZWdpb24iLCJhY2Nlc3Nfa2V5X2lkIiwic2VjcmV0X2tleSIsIkVycm9yIiwiczNDbGllbnQiLCJTM0NsaWVudCIsImVuZHBvaW50IiwidW5kZWZpbmVkIiwiZm9yY2VQYXRoU3R5bGUiLCJidWNrZXROYW1lIiwiZGVmYXVsdEJ1Y2tldE5hbWUiLCJub3JtYWxpemUiLCJ0b0xvd2VyQ2FzZSIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImZpbGVOYW1lIiwiZXh0ZW5zaW9uIiwibWltZXR5cGUiLCJidWNrZXRBbHJlYWR5RXhpc3RzIiwic2VuZCIsIkNyZWF0ZUJ1Y2tldENvbW1hbmQiLCJCdWNrZXQiLCJPYmplY3RPd25lcnNoaXAiLCJQdXRQdWJsaWNBY2Nlc3NCbG9ja0NvbW1hbmQiLCJQdWJsaWNBY2Nlc3NCbG9ja0NvbmZpZ3VyYXRpb24iLCJCbG9ja1B1YmxpY0FjbHMiLCJJZ25vcmVQdWJsaWNBY2xzIiwiQmxvY2tQdWJsaWNQb2xpY3kiLCJQdXRPYmplY3RDb21tYW5kIiwiS2V5IiwiQm9keSIsIkNvbnRlbnRUeXBlIiwiQUNMIiwiZmlsZVVybCIsImJvZHkiLCJzdGFydEFsbFNlc3Npb25zIiwiaG9zdCIsInBvcnQiLCJzZWNyZXRLZXkiLCJzdGFydEhlbHBlciIsImFsbFVucmVhZE9uU3RhcnQiLCJzZW5kVW5yZWFkIiwiYXJjaGl2ZSIsImluZm8iLCJjaGF0cyIsImdldEFsbENoYXRzV2l0aE1lc3NhZ2VzIiwiaSIsImoiLCJtc2dzIiwiZXgiLCJzbGVlcCIsInRpbWUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNldFRpbWVvdXQiLCJnZXRBbGxDaGF0cyIsImZpbHRlciIsImMiLCJkYXRlIiwiRGF0ZSIsInQiLCJEYXlzQmV0d2VlbiIsImRheXNUb0FyY2hpdmUiLCJhcmNoaXZlQ2hhdCIsImlkIiwid2FpdFRpbWUiLCJTdGFydERhdGUiLCJlbmREYXRlIiwib25lRGF5Iiwic3RhcnQiLCJVVEMiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImVuZCIsImNyZWF0ZUZvbGRlcnMiLCJfX2Rpcm5hbWUiLCJwYXRoIiwiZGlybmFtZSIsImRpckZpbGVzIiwiZnMiLCJleGlzdHNTeW5jIiwibWtkaXJTeW5jIiwiZGlyVXBsb2FkIiwic3RyVG9Cb29sIiwicyIsInRlc3QiLCJnZXRJUEFkZHJlc3MiLCJpbnRlcmZhY2VzIiwib3MiLCJuZXR3b3JrSW50ZXJmYWNlcyIsImRldk5hbWUiLCJpZmFjZSIsImFsaWFzIiwiZmFtaWx5IiwiYWRkcmVzcyIsImludGVybmFsIiwic2V0TWF4TGlzdG5lcnMiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJtYXhMaXN0ZW5lcnMiLCJwcm9jZXNzIiwic2V0TWF4TGlzdGVuZXJzIiwidW5saW5rQXN5bmMiLCJleHBvcnRzIiwicHJvbWlzaWZ5IiwidW5saW5rIiwiY3JlYXRlQ2F0YWxvZ0xpbmsiLCJ3aWQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9mdW5jdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIzIFdQUENvbm5lY3QgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtcbiAgQ3JlYXRlQnVja2V0Q29tbWFuZCxcbiAgUHV0T2JqZWN0Q29tbWFuZCxcbiAgUHV0UHVibGljQWNjZXNzQmxvY2tDb21tYW5kLFxuICBTM0NsaWVudCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcbmltcG9ydCBhcGkgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IENyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgUmVxdWVzdCB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBtaW1ldHlwZXMgZnJvbSAnbWltZS10eXBlcyc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcblxuaW1wb3J0IGNvbmZpZyBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHsgY29udmVydCB9IGZyb20gJy4uL21hcHBlci9pbmRleCc7XG5pbXBvcnQgeyBTZXJ2ZXJPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMvU2VydmVyT3B0aW9ucyc7XG5pbXBvcnQgeyBidWNrZXRBbHJlYWR5RXhpc3RzIH0gZnJvbSAnLi9idWNrZXRBbHJlYWR5RXhpc3RzJztcblxubGV0IG1pbWU6IGFueSwgY3J5cHRvOiBhbnk7IC8vLCBhd3M6IGFueTtcbmlmIChjb25maWcud2ViaG9vay51cGxvYWRTMykge1xuICBtaW1lID0gY29uZmlnLndlYmhvb2sudXBsb2FkUzMgPyBtaW1ldHlwZXMgOiBudWxsO1xuICBjcnlwdG8gPSBjb25maWcud2ViaG9vay51cGxvYWRTMyA/IENyeXB0byA6IG51bGw7XG59XG5pZiAoY29uZmlnPy53ZWJzb2NrZXQ/LnVwbG9hZFMzKSB7XG4gIG1pbWUgPSBjb25maWcud2Vic29ja2V0LnVwbG9hZFMzID8gbWltZXR5cGVzIDogbnVsbDtcbiAgY3J5cHRvID0gY29uZmlnLndlYnNvY2tldC51cGxvYWRTMyA/IENyeXB0byA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb250YWN0VG9BcnJheShcbiAgbnVtYmVyOiBhbnksXG4gIGlzR3JvdXA/OiBib29sZWFuLFxuICBpc05ld3NsZXR0ZXI/OiBib29sZWFuLFxuICBpc0xpZD86IGJvb2xlYW5cbikge1xuICBjb25zdCBsb2NhbEFycjogYW55ID0gW107XG4gIGlmIChBcnJheS5pc0FycmF5KG51bWJlcikpIHtcbiAgICBmb3IgKGxldCBjb250YWN0IG9mIG51bWJlcikge1xuICAgICAgaXNHcm91cCB8fCBpc05ld3NsZXR0ZXJcbiAgICAgICAgPyAoY29udGFjdCA9IGNvbnRhY3Quc3BsaXQoJ0AnKVswXSlcbiAgICAgICAgOiAoY29udGFjdCA9IGNvbnRhY3Quc3BsaXQoJ0AnKVswXT8ucmVwbGFjZSgvW15cXHcgXS9nLCAnJykpO1xuICAgICAgaWYgKGNvbnRhY3QgIT09ICcnKVxuICAgICAgICBpZiAoaXNHcm91cCkgKGxvY2FsQXJyIGFzIGFueSkucHVzaChgJHtjb250YWN0fUBnLnVzYCk7XG4gICAgICAgIGVsc2UgaWYgKGlzTmV3c2xldHRlcikgKGxvY2FsQXJyIGFzIGFueSkucHVzaChgJHtjb250YWN0fUBuZXdzbGV0dGVyYCk7XG4gICAgICAgIGVsc2UgaWYgKGlzTGlkIHx8IGNvbnRhY3QubGVuZ3RoID4gMTQpXG4gICAgICAgICAgKGxvY2FsQXJyIGFzIGFueSkucHVzaChgJHtjb250YWN0fUBsaWRgKTtcbiAgICAgICAgZWxzZSAobG9jYWxBcnIgYXMgYW55KS5wdXNoKGAke2NvbnRhY3R9QGMudXNgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgYXJyQ29udGFjdHMgPSBudW1iZXIuc3BsaXQoL1xccypbLDtdXFxzKi9nKTtcbiAgICBmb3IgKGxldCBjb250YWN0IG9mIGFyckNvbnRhY3RzKSB7XG4gICAgICBpc0dyb3VwIHx8IGlzTmV3c2xldHRlclxuICAgICAgICA/IChjb250YWN0ID0gY29udGFjdC5zcGxpdCgnQCcpWzBdKVxuICAgICAgICA6IChjb250YWN0ID0gY29udGFjdC5zcGxpdCgnQCcpWzBdPy5yZXBsYWNlKC9bXlxcdyBdL2csICcnKSk7XG4gICAgICBpZiAoY29udGFjdCAhPT0gJycpXG4gICAgICAgIGlmIChpc0dyb3VwKSAobG9jYWxBcnIgYXMgYW55KS5wdXNoKGAke2NvbnRhY3R9QGcudXNgKTtcbiAgICAgICAgZWxzZSBpZiAoaXNOZXdzbGV0dGVyKSAobG9jYWxBcnIgYXMgYW55KS5wdXNoKGAke2NvbnRhY3R9QG5ld3NsZXR0ZXJgKTtcbiAgICAgICAgZWxzZSBpZiAoaXNMaWQgfHwgY29udGFjdC5sZW5ndGggPiAxNClcbiAgICAgICAgICAobG9jYWxBcnIgYXMgYW55KS5wdXNoKGAke2NvbnRhY3R9QGxpZGApO1xuICAgICAgICBlbHNlIChsb2NhbEFyciBhcyBhbnkpLnB1c2goYCR7Y29udGFjdH1AYy51c2ApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBsb2NhbEFycjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdyb3VwVG9BcnJheShncm91cDogYW55KSB7XG4gIGNvbnN0IGxvY2FsQXJyOiBhbnkgPSBbXTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXApKSB7XG4gICAgZm9yIChsZXQgY29udGFjdCBvZiBncm91cCkge1xuICAgICAgY29udGFjdCA9IGNvbnRhY3Quc3BsaXQoJ0AnKVswXTtcbiAgICAgIGlmIChjb250YWN0ICE9PSAnJykgKGxvY2FsQXJyIGFzIGFueSkucHVzaChgJHtjb250YWN0fUBnLnVzYCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGFyckNvbnRhY3RzID0gZ3JvdXAuc3BsaXQoL1xccypbLDtdXFxzKi9nKTtcbiAgICBmb3IgKGxldCBjb250YWN0IG9mIGFyckNvbnRhY3RzKSB7XG4gICAgICBjb250YWN0ID0gY29udGFjdC5zcGxpdCgnQCcpWzBdO1xuICAgICAgaWYgKGNvbnRhY3QgIT09ICcnKSAobG9jYWxBcnIgYXMgYW55KS5wdXNoKGAke2NvbnRhY3R9QGcudXNgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbG9jYWxBcnI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncm91cE5hbWVUb0FycmF5KGdyb3VwOiBhbnkpIHtcbiAgY29uc3QgbG9jYWxBcnI6IGFueSA9IFtdO1xuICBpZiAoQXJyYXkuaXNBcnJheShncm91cCkpIHtcbiAgICBmb3IgKGNvbnN0IGNvbnRhY3Qgb2YgZ3JvdXApIHtcbiAgICAgIGlmIChjb250YWN0ICE9PSAnJykgKGxvY2FsQXJyIGFzIGFueSkucHVzaChgJHtjb250YWN0fWApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBhcnJDb250YWN0cyA9IGdyb3VwLnNwbGl0KC9cXHMqWyw7XVxccyovZyk7XG4gICAgZm9yIChjb25zdCBjb250YWN0IG9mIGFyckNvbnRhY3RzKSB7XG4gICAgICBpZiAoY29udGFjdCAhPT0gJycpIChsb2NhbEFyciBhcyBhbnkpLnB1c2goYCR7Y29udGFjdH1gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbG9jYWxBcnI7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjYWxsV2ViSG9vayhcbiAgY2xpZW50OiBhbnksXG4gIHJlcTogUmVxdWVzdCxcbiAgZXZlbnQ6IGFueSxcbiAgZGF0YTogYW55XG4pIHtcbiAgY29uc3Qgd2ViaG9vayA9XG4gICAgY2xpZW50Py5jb25maWcud2ViaG9vayB8fCByZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLnVybCB8fCBmYWxzZTtcbiAgaWYgKHdlYmhvb2spIHtcbiAgICBpZiAoXG4gICAgICByZXEuc2VydmVyT3B0aW9ucy53ZWJob29rPy5pZ25vcmUgJiZcbiAgICAgIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLmlnbm9yZS5pbmNsdWRlcyhldmVudCkgfHxcbiAgICAgICAgcmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5pZ25vcmUuaW5jbHVkZXMoZGF0YT8uZnJvbSkgfHxcbiAgICAgICAgcmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5pZ25vcmUuaW5jbHVkZXMoZGF0YT8udHlwZSkpXG4gICAgKVxuICAgICAgcmV0dXJuO1xuICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLmF1dG9Eb3dubG9hZClcbiAgICAgIGF3YWl0IGF1dG9Eb3dubG9hZChjbGllbnQsIHJlcSwgZGF0YSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNoYXRJZCA9XG4gICAgICAgIGRhdGEuZnJvbSB8fFxuICAgICAgICBkYXRhLmNoYXRJZCB8fFxuICAgICAgICAoZGF0YS5jaGF0SWQgPyBkYXRhLmNoYXRJZC5fc2VyaWFsaXplZCA6IG51bGwpO1xuICAgICAgZGF0YSA9IE9iamVjdC5hc3NpZ24oeyBldmVudDogZXZlbnQsIHNlc3Npb246IGNsaWVudC5zZXNzaW9uIH0sIGRhdGEpO1xuICAgICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLm1hcHBlci5lbmFibGUpXG4gICAgICAgIGRhdGEgPSBhd2FpdCBjb252ZXJ0KHJlcS5zZXJ2ZXJPcHRpb25zLm1hcHBlci5wcmVmaXgsIGRhdGEpO1xuICAgICAgYXBpXG4gICAgICAgIC5wb3N0KHdlYmhvb2ssIGRhdGEpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZXZlbnRzID0gWyd1bnJlYWRtZXNzYWdlcycsICdvbm1lc3NhZ2UnXTtcbiAgICAgICAgICAgIGlmIChldmVudHMuaW5jbHVkZXMoZXZlbnQpICYmIHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2sucmVhZE1lc3NhZ2UpXG4gICAgICAgICAgICAgIGNsaWVudC5zZW5kU2VlbihjaGF0SWQpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgIHJlcS5sb2dnZXIud2FybignRXJyb3IgY2FsbGluZyBXZWJob29rLicsIGUpO1xuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXEubG9nZ2VyLmVycm9yKGUpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXV0b0Rvd25sb2FkKGNsaWVudDogYW55LCByZXE6IGFueSwgbWVzc2FnZTogYW55KSB7XG4gIHRyeSB7XG4gICAgaWYgKG1lc3NhZ2UgJiYgKG1lc3NhZ2VbJ21pbWV0eXBlJ10gfHwgbWVzc2FnZS5pc01lZGlhIHx8IG1lc3NhZ2UuaXNNTVMpKSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBhd2FpdCBjbGllbnQuZGVjcnlwdEZpbGUobWVzc2FnZSk7XG4gICAgICBpZiAoXG4gICAgICAgIHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2sudXBsb2FkUzMgfHxcbiAgICAgICAgcmVxLnNlcnZlck9wdGlvbnM/LndlYnNvY2tldD8udXBsb2FkUzNcbiAgICAgICkge1xuICAgICAgICBjb25zdCBoYXNoTmFtZSA9IGNyeXB0by5yYW5kb21CeXRlcygyNCkudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAhY29uZmlnPy5hd3NfczM/LnJlZ2lvbiB8fFxuICAgICAgICAgICFjb25maWc/LmF3c19zMz8uYWNjZXNzX2tleV9pZCB8fFxuICAgICAgICAgICFjb25maWc/LmF3c19zMz8uc2VjcmV0X2tleVxuICAgICAgICApXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UsIGNvbmZpZ3VyZSB5b3VyIGF3cyBjb25maWdzJyk7XG4gICAgICAgIGNvbnN0IHMzQ2xpZW50ID0gbmV3IFMzQ2xpZW50KHtcbiAgICAgICAgICByZWdpb246IGNvbmZpZz8uYXdzX3MzPy5yZWdpb24sXG4gICAgICAgICAgZW5kcG9pbnQ6IGNvbmZpZz8uYXdzX3MzPy5lbmRwb2ludCB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgZm9yY2VQYXRoU3R5bGU6IGNvbmZpZz8uYXdzX3MzPy5mb3JjZVBhdGhTdHlsZSB8fCB1bmRlZmluZWQsXG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgYnVja2V0TmFtZSA9IGNvbmZpZz8uYXdzX3MzPy5kZWZhdWx0QnVja2V0TmFtZVxuICAgICAgICAgID8gY29uZmlnPy5hd3NfczM/LmRlZmF1bHRCdWNrZXROYW1lXG4gICAgICAgICAgOiBjbGllbnQuc2Vzc2lvbjtcbiAgICAgICAgYnVja2V0TmFtZSA9IGJ1Y2tldE5hbWVcbiAgICAgICAgICAubm9ybWFsaXplKCdORkQnKVxuICAgICAgICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXXxb4oCUIF8uLD8hXS9nLCAnJylcbiAgICAgICAgICAudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgYnVja2V0TmFtZSA9XG4gICAgICAgICAgYnVja2V0TmFtZS5sZW5ndGggPCAzXG4gICAgICAgICAgICA/IGJ1Y2tldE5hbWUgK1xuICAgICAgICAgICAgICBgJHtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoOTk5IC0gMTAwICsgMSkpICsgMTAwfWBcbiAgICAgICAgICAgIDogYnVja2V0TmFtZTtcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBgJHtcbiAgICAgICAgICBjb25maWcuYXdzX3MzLmRlZmF1bHRCdWNrZXROYW1lID8gY2xpZW50LnNlc3Npb24gKyAnLycgOiAnJ1xuICAgICAgICB9JHtoYXNoTmFtZX0uJHttaW1lLmV4dGVuc2lvbihtZXNzYWdlLm1pbWV0eXBlKX1gO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAhY29uZmlnLmF3c19zMy5kZWZhdWx0QnVja2V0TmFtZSAmJlxuICAgICAgICAgICEoYXdhaXQgYnVja2V0QWxyZWFkeUV4aXN0cyhidWNrZXROYW1lKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgYXdhaXQgczNDbGllbnQuc2VuZChcbiAgICAgICAgICAgIG5ldyBDcmVhdGVCdWNrZXRDb21tYW5kKHtcbiAgICAgICAgICAgICAgQnVja2V0OiBidWNrZXROYW1lLFxuICAgICAgICAgICAgICBPYmplY3RPd25lcnNoaXA6ICdPYmplY3RXcml0ZXInLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICAgIGF3YWl0IHMzQ2xpZW50LnNlbmQoXG4gICAgICAgICAgICBuZXcgUHV0UHVibGljQWNjZXNzQmxvY2tDb21tYW5kKHtcbiAgICAgICAgICAgICAgQnVja2V0OiBidWNrZXROYW1lLFxuICAgICAgICAgICAgICBQdWJsaWNBY2Nlc3NCbG9ja0NvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgICAgICBCbG9ja1B1YmxpY0FjbHM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIElnbm9yZVB1YmxpY0FjbHM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIEJsb2NrUHVibGljUG9saWN5OiBmYWxzZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHMzQ2xpZW50LnNlbmQoXG4gICAgICAgICAgbmV3IFB1dE9iamVjdENvbW1hbmQoe1xuICAgICAgICAgICAgQnVja2V0OiBidWNrZXROYW1lLFxuICAgICAgICAgICAgS2V5OiBmaWxlTmFtZSxcbiAgICAgICAgICAgIEJvZHk6IGJ1ZmZlcixcbiAgICAgICAgICAgIENvbnRlbnRUeXBlOiBtZXNzYWdlLm1pbWV0eXBlLFxuICAgICAgICAgICAgQUNMOiAncHVibGljLXJlYWQnLFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgbWVzc2FnZS5maWxlVXJsID0gYGh0dHBzOi8vJHtidWNrZXROYW1lfS5zMy5hbWF6b25hd3MuY29tLyR7ZmlsZU5hbWV9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2UuYm9keSA9IGF3YWl0IGJ1ZmZlci50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihlKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRBbGxTZXNzaW9ucyhjb25maWc6IGFueSwgbG9nZ2VyOiBhbnkpIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBhcGkucG9zdChcbiAgICAgIGAke2NvbmZpZy5ob3N0fToke2NvbmZpZy5wb3J0fS9hcGkvJHtjb25maWcuc2VjcmV0S2V5fS9zdGFydC1hbGxgXG4gICAgKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5lcnJvcihlKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRIZWxwZXIoY2xpZW50OiBhbnksIHJlcTogYW55KSB7XG4gIGlmIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLmFsbFVucmVhZE9uU3RhcnQpIGF3YWl0IHNlbmRVbnJlYWQoY2xpZW50LCByZXEpO1xuXG4gIGlmIChyZXEuc2VydmVyT3B0aW9ucy5hcmNoaXZlLmVuYWJsZSkgYXdhaXQgYXJjaGl2ZShjbGllbnQsIHJlcSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRVbnJlYWQoY2xpZW50OiBhbnksIHJlcTogYW55KSB7XG4gIHJlcS5sb2dnZXIuaW5mbyhgJHtjbGllbnQuc2Vzc2lvbn0gOiBJbmljaW8gZW52aWFyIG1lbnNhZ2VucyBuw6NvIGxpZGFzYCk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjaGF0cyA9IGF3YWl0IGNsaWVudC5nZXRBbGxDaGF0c1dpdGhNZXNzYWdlcyh0cnVlKTtcblxuICAgIGlmIChjaGF0cyAmJiBjaGF0cy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoYXRzLmxlbmd0aDsgaSsrKVxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNoYXRzW2ldLm1zZ3MubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ3VucmVhZG1lc3NhZ2VzJywgY2hhdHNbaV0ubXNnc1tqXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXEubG9nZ2VyLmluZm8oYCR7Y2xpZW50LnNlc3Npb259IDogRmltIGVudmlhciBtZW5zYWdlbnMgbsOjbyBsaWRhc2ApO1xuICB9IGNhdGNoIChleCkge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZXgpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFyY2hpdmUoY2xpZW50OiBhbnksIHJlcTogYW55KSB7XG4gIGFzeW5jIGZ1bmN0aW9uIHNsZWVwKHRpbWU6IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCB0aW1lICogMTApKTtcbiAgfVxuXG4gIHJlcS5sb2dnZXIuaW5mbyhgJHtjbGllbnQuc2Vzc2lvbn0gOiBJbmljaW8gYXJxdWl2YW5kbyBjaGF0c2ApO1xuXG4gIHRyeSB7XG4gICAgbGV0IGNoYXRzID0gYXdhaXQgY2xpZW50LmdldEFsbENoYXRzKCk7XG4gICAgaWYgKGNoYXRzICYmIEFycmF5LmlzQXJyYXkoY2hhdHMpICYmIGNoYXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNoYXRzID0gY2hhdHMuZmlsdGVyKChjKSA9PiAhYy5hcmNoaXZlKTtcbiAgICB9XG4gICAgaWYgKGNoYXRzICYmIEFycmF5LmlzQXJyYXkoY2hhdHMpICYmIGNoYXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hhdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGNoYXRzW2ldLnQgKiAxMDAwKTtcblxuICAgICAgICBpZiAoRGF5c0JldHdlZW4oZGF0ZSkgPiByZXEuc2VydmVyT3B0aW9ucy5hcmNoaXZlLmRheXNUb0FyY2hpdmUpIHtcbiAgICAgICAgICBhd2FpdCBjbGllbnQuYXJjaGl2ZUNoYXQoXG4gICAgICAgICAgICBjaGF0c1tpXS5pZC5pZCB8fCBjaGF0c1tpXS5pZC5fc2VyaWFsaXplZCxcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICApO1xuICAgICAgICAgIGF3YWl0IHNsZWVwKFxuICAgICAgICAgICAgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogcmVxLnNlcnZlck9wdGlvbnMuYXJjaGl2ZS53YWl0VGltZSArIDEpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXEubG9nZ2VyLmluZm8oYCR7Y2xpZW50LnNlc3Npb259IDogRmltIGFycXVpdmFuZG8gY2hhdHNgKTtcbiAgfSBjYXRjaCAoZXgpIHtcbiAgICByZXEubG9nZ2VyLmVycm9yKGV4KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBEYXlzQmV0d2VlbihTdGFydERhdGU6IERhdGUpIHtcbiAgY29uc3QgZW5kRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIC8vIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIGFsbCBVVEMgZGF5cyAobm8gRFNUKVxuICBjb25zdCBvbmVEYXkgPSAxMDAwICogNjAgKiA2MCAqIDI0O1xuXG4gIC8vIEEgZGF5IGluIFVUQyBhbHdheXMgbGFzdHMgMjQgaG91cnMgKHVubGlrZSBpbiBvdGhlciB0aW1lIGZvcm1hdHMpXG4gIGNvbnN0IHN0YXJ0ID0gRGF0ZS5VVEMoXG4gICAgZW5kRGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgIGVuZERhdGUuZ2V0TW9udGgoKSxcbiAgICBlbmREYXRlLmdldERhdGUoKVxuICApO1xuICBjb25zdCBlbmQgPSBEYXRlLlVUQyhcbiAgICBTdGFydERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICBTdGFydERhdGUuZ2V0TW9udGgoKSxcbiAgICBTdGFydERhdGUuZ2V0RGF0ZSgpXG4gICk7XG5cbiAgLy8gc28gaXQncyBzYWZlIHRvIGRpdmlkZSBieSAyNCBob3Vyc1xuICByZXR1cm4gKHN0YXJ0IC0gZW5kKSAvIG9uZURheTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvbGRlcnMoKSB7XG4gIGNvbnN0IF9fZGlybmFtZSA9IHBhdGgucmVzb2x2ZShwYXRoLmRpcm5hbWUoJycpKTtcbiAgY29uc3QgZGlyRmlsZXMgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnV2hhdHNBcHBJbWFnZXMnKTtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGRpckZpbGVzKSkge1xuICAgIGZzLm1rZGlyU3luYyhkaXJGaWxlcyk7XG4gIH1cblxuICBjb25zdCBkaXJVcGxvYWQgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAndXBsb2FkcycpO1xuICBpZiAoIWZzLmV4aXN0c1N5bmMoZGlyVXBsb2FkKSkge1xuICAgIGZzLm1rZGlyU3luYyhkaXJVcGxvYWQpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJUb0Jvb2woczogc3RyaW5nKSB7XG4gIHJldHVybiAvXih0cnVlfDEpJC9pLnRlc3Qocyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJUEFkZHJlc3MoKSB7XG4gIGNvbnN0IGludGVyZmFjZXMgPSBvcy5uZXR3b3JrSW50ZXJmYWNlcygpO1xuICBmb3IgKGNvbnN0IGRldk5hbWUgaW4gaW50ZXJmYWNlcykge1xuICAgIGNvbnN0IGlmYWNlOiBhbnkgPSBpbnRlcmZhY2VzW2Rldk5hbWVdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaWZhY2UubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGFsaWFzID0gaWZhY2VbaV07XG4gICAgICBpZiAoXG4gICAgICAgIGFsaWFzLmZhbWlseSA9PT0gJ0lQdjQnICYmXG4gICAgICAgIGFsaWFzLmFkZHJlc3MgIT09ICcxMjcuMC4wLjEnICYmXG4gICAgICAgICFhbGlhcy5pbnRlcm5hbFxuICAgICAgKVxuICAgICAgICByZXR1cm4gYWxpYXMuYWRkcmVzcztcbiAgICB9XG4gIH1cbiAgcmV0dXJuICcwLjAuMC4wJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldE1heExpc3RuZXJzKHNlcnZlck9wdGlvbnM6IFNlcnZlck9wdGlvbnMpIHtcbiAgaWYgKHNlcnZlck9wdGlvbnMgJiYgTnVtYmVyLmlzSW50ZWdlcihzZXJ2ZXJPcHRpb25zLm1heExpc3RlbmVycykpIHtcbiAgICBwcm9jZXNzLnNldE1heExpc3RlbmVycyhzZXJ2ZXJPcHRpb25zLm1heExpc3RlbmVycyk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHVubGlua0FzeW5jID0gcHJvbWlzaWZ5KGZzLnVubGluayk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDYXRhbG9nTGluayhzZXNzaW9uOiBhbnkpIHtcbiAgY29uc3QgW3dpZF0gPSBzZXNzaW9uLnNwbGl0KCdAJyk7XG4gIHJldHVybiBgaHR0cHM6Ly93YS5tZS9jLyR7d2lkfWA7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQWVBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTs7Ozs7O0FBTUEsSUFBQUMsTUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBOztBQUVBLElBQUFJLEdBQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFLLFVBQUEsR0FBQUgsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFNLEdBQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFPLEtBQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLEtBQUEsR0FBQVIsT0FBQTs7QUFFQSxJQUFBUyxPQUFBLEdBQUFQLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBVSxNQUFBLEdBQUFWLE9BQUE7O0FBRUEsSUFBQVcsb0JBQUEsR0FBQVgsT0FBQSwwQkFBNEQsQ0FqQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQXFCQSxJQUFJWSxJQUFTLEVBQUVDLE1BQVcsQ0FBQyxDQUFDO0FBQzVCLElBQUlDLGVBQU0sQ0FBQ0MsT0FBTyxDQUFDQyxRQUFRLEVBQUUsQ0FDM0JKLElBQUksR0FBR0UsZUFBTSxDQUFDQyxPQUFPLENBQUNDLFFBQVEsR0FBR0Msa0JBQVMsR0FBRyxJQUFJLENBQ2pESixNQUFNLEdBQUdDLGVBQU0sQ0FBQ0MsT0FBTyxDQUFDQyxRQUFRLEdBQUdFLGVBQU0sR0FBRyxJQUFJLENBQ2xELENBQ0EsSUFBSUosZUFBTSxFQUFFSyxTQUFTLEVBQUVILFFBQVEsRUFBRSxDQUMvQkosSUFBSSxHQUFHRSxlQUFNLENBQUNLLFNBQVMsQ0FBQ0gsUUFBUSxHQUFHQyxrQkFBUyxHQUFHLElBQUksQ0FDbkRKLE1BQU0sR0FBR0MsZUFBTSxDQUFDSyxTQUFTLENBQUNILFFBQVEsR0FBR0UsZUFBTSxHQUFHLElBQUksQ0FDcEQsQ0FFTyxTQUFTRSxjQUFjQSxDQUM1QkMsTUFBVyxFQUNYQyxPQUFpQixFQUNqQkMsWUFBc0I7QUFDdEJDLEtBQWU7QUFDZjtFQUNBLE1BQU1DLFFBQWEsR0FBRyxFQUFFO0VBQ3hCLElBQUlDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDTixNQUFNLENBQUMsRUFBRTtJQUN6QixLQUFLLElBQUlPLE9BQU8sSUFBSVAsTUFBTSxFQUFFO01BQzFCQyxPQUFPLElBQUlDLFlBQVk7TUFDbEJLLE9BQU8sR0FBR0EsT0FBTyxDQUFDQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQy9CRCxPQUFPLEdBQUdBLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBRTtNQUM3RCxJQUFJRixPQUFPLEtBQUssRUFBRTtNQUNoQixJQUFJTixPQUFPLEVBQUdHLFFBQVEsQ0FBU00sSUFBSSxDQUFDLEdBQUdILE9BQU8sT0FBTyxDQUFDLENBQUM7TUFDbEQsSUFBSUwsWUFBWSxFQUFHRSxRQUFRLENBQVNNLElBQUksQ0FBQyxHQUFHSCxPQUFPLGFBQWEsQ0FBQyxDQUFDO01BQ2xFLElBQUlKLEtBQUssSUFBSUksT0FBTyxDQUFDSSxNQUFNLEdBQUcsRUFBRTtNQUNsQ1AsUUFBUSxDQUFTTSxJQUFJLENBQUMsR0FBR0gsT0FBTyxNQUFNLENBQUMsQ0FBQztNQUNyQ0gsUUFBUSxDQUFTTSxJQUFJLENBQUMsR0FBR0gsT0FBTyxPQUFPLENBQUM7SUFDbEQ7RUFDRixDQUFDLE1BQU07SUFDTCxNQUFNSyxXQUFXLEdBQUdaLE1BQU0sQ0FBQ1EsS0FBSyxDQUFDLGFBQWEsQ0FBQztJQUMvQyxLQUFLLElBQUlELE9BQU8sSUFBSUssV0FBVyxFQUFFO01BQy9CWCxPQUFPLElBQUlDLFlBQVk7TUFDbEJLLE9BQU8sR0FBR0EsT0FBTyxDQUFDQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQy9CRCxPQUFPLEdBQUdBLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBRTtNQUM3RCxJQUFJRixPQUFPLEtBQUssRUFBRTtNQUNoQixJQUFJTixPQUFPLEVBQUdHLFFBQVEsQ0FBU00sSUFBSSxDQUFDLEdBQUdILE9BQU8sT0FBTyxDQUFDLENBQUM7TUFDbEQsSUFBSUwsWUFBWSxFQUFHRSxRQUFRLENBQVNNLElBQUksQ0FBQyxHQUFHSCxPQUFPLGFBQWEsQ0FBQyxDQUFDO01BQ2xFLElBQUlKLEtBQUssSUFBSUksT0FBTyxDQUFDSSxNQUFNLEdBQUcsRUFBRTtNQUNsQ1AsUUFBUSxDQUFTTSxJQUFJLENBQUMsR0FBR0gsT0FBTyxNQUFNLENBQUMsQ0FBQztNQUNyQ0gsUUFBUSxDQUFTTSxJQUFJLENBQUMsR0FBR0gsT0FBTyxPQUFPLENBQUM7SUFDbEQ7RUFDRjs7RUFFQSxPQUFPSCxRQUFRO0FBQ2pCOztBQUVPLFNBQVNTLFlBQVlBLENBQUNDLEtBQVUsRUFBRTtFQUN2QyxNQUFNVixRQUFhLEdBQUcsRUFBRTtFQUN4QixJQUFJQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ1EsS0FBSyxDQUFDLEVBQUU7SUFDeEIsS0FBSyxJQUFJUCxPQUFPLElBQUlPLEtBQUssRUFBRTtNQUN6QlAsT0FBTyxHQUFHQSxPQUFPLENBQUNDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDL0IsSUFBSUQsT0FBTyxLQUFLLEVBQUUsRUFBR0gsUUFBUSxDQUFTTSxJQUFJLENBQUMsR0FBR0gsT0FBTyxPQUFPLENBQUM7SUFDL0Q7RUFDRixDQUFDLE1BQU07SUFDTCxNQUFNSyxXQUFXLEdBQUdFLEtBQUssQ0FBQ04sS0FBSyxDQUFDLGFBQWEsQ0FBQztJQUM5QyxLQUFLLElBQUlELE9BQU8sSUFBSUssV0FBVyxFQUFFO01BQy9CTCxPQUFPLEdBQUdBLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUMvQixJQUFJRCxPQUFPLEtBQUssRUFBRSxFQUFHSCxRQUFRLENBQVNNLElBQUksQ0FBQyxHQUFHSCxPQUFPLE9BQU8sQ0FBQztJQUMvRDtFQUNGOztFQUVBLE9BQU9ILFFBQVE7QUFDakI7O0FBRU8sU0FBU1csZ0JBQWdCQSxDQUFDRCxLQUFVLEVBQUU7RUFDM0MsTUFBTVYsUUFBYSxHQUFHLEVBQUU7RUFDeEIsSUFBSUMsS0FBSyxDQUFDQyxPQUFPLENBQUNRLEtBQUssQ0FBQyxFQUFFO0lBQ3hCLEtBQUssTUFBTVAsT0FBTyxJQUFJTyxLQUFLLEVBQUU7TUFDM0IsSUFBSVAsT0FBTyxLQUFLLEVBQUUsRUFBR0gsUUFBUSxDQUFTTSxJQUFJLENBQUMsR0FBR0gsT0FBTyxFQUFFLENBQUM7SUFDMUQ7RUFDRixDQUFDLE1BQU07SUFDTCxNQUFNSyxXQUFXLEdBQUdFLEtBQUssQ0FBQ04sS0FBSyxDQUFDLGFBQWEsQ0FBQztJQUM5QyxLQUFLLE1BQU1ELE9BQU8sSUFBSUssV0FBVyxFQUFFO01BQ2pDLElBQUlMLE9BQU8sS0FBSyxFQUFFLEVBQUdILFFBQVEsQ0FBU00sSUFBSSxDQUFDLEdBQUdILE9BQU8sRUFBRSxDQUFDO0lBQzFEO0VBQ0Y7O0VBRUEsT0FBT0gsUUFBUTtBQUNqQjs7QUFFTyxlQUFlWSxXQUFXQTtBQUMvQkMsTUFBVztBQUNYQyxHQUFZO0FBQ1pDLEtBQVU7QUFDVkMsSUFBUztBQUNUO0VBQ0EsTUFBTTFCLE9BQU87RUFDWHVCLE1BQU0sRUFBRXhCLE1BQU0sQ0FBQ0MsT0FBTyxJQUFJd0IsR0FBRyxDQUFDRyxhQUFhLENBQUMzQixPQUFPLENBQUM0QixHQUFHLElBQUksS0FBSztFQUNsRSxJQUFJNUIsT0FBTyxFQUFFO0lBQ1g7SUFDRXdCLEdBQUcsQ0FBQ0csYUFBYSxDQUFDM0IsT0FBTyxFQUFFNkIsTUFBTTtJQUNoQ0wsR0FBRyxDQUFDRyxhQUFhLENBQUMzQixPQUFPLENBQUM2QixNQUFNLENBQUNDLFFBQVEsQ0FBQ0wsS0FBSyxDQUFDO0lBQy9DRCxHQUFHLENBQUNHLGFBQWEsQ0FBQzNCLE9BQU8sQ0FBQzZCLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDSixJQUFJLEVBQUVLLElBQUksQ0FBQztJQUNyRFAsR0FBRyxDQUFDRyxhQUFhLENBQUMzQixPQUFPLENBQUM2QixNQUFNLENBQUNDLFFBQVEsQ0FBQ0osSUFBSSxFQUFFTSxJQUFJLENBQUMsQ0FBQzs7SUFFeEQ7SUFDRixJQUFJUixHQUFHLENBQUNHLGFBQWEsQ0FBQzNCLE9BQU8sQ0FBQ2lDLFlBQVk7SUFDeEMsTUFBTUEsWUFBWSxDQUFDVixNQUFNLEVBQUVDLEdBQUcsRUFBRUUsSUFBSSxDQUFDO0lBQ3ZDLElBQUk7TUFDRixNQUFNUSxNQUFNO01BQ1ZSLElBQUksQ0FBQ0ssSUFBSTtNQUNUTCxJQUFJLENBQUNRLE1BQU07TUFDVlIsSUFBSSxDQUFDUSxNQUFNLEdBQUdSLElBQUksQ0FBQ1EsTUFBTSxDQUFDQyxXQUFXLEdBQUcsSUFBSSxDQUFDO01BQ2hEVCxJQUFJLEdBQUdVLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLEVBQUVaLEtBQUssRUFBRUEsS0FBSyxFQUFFYSxPQUFPLEVBQUVmLE1BQU0sQ0FBQ2UsT0FBTyxDQUFDLENBQUMsRUFBRVosSUFBSSxDQUFDO01BQ3JFLElBQUlGLEdBQUcsQ0FBQ0csYUFBYSxDQUFDWSxNQUFNLENBQUNDLE1BQU07TUFDakNkLElBQUksR0FBRyxNQUFNLElBQUFlLGNBQU8sRUFBQ2pCLEdBQUcsQ0FBQ0csYUFBYSxDQUFDWSxNQUFNLENBQUNHLE1BQU0sRUFBRWhCLElBQUksQ0FBQztNQUM3RGlCLGNBQUc7TUFDQUMsSUFBSSxDQUFDNUMsT0FBTyxFQUFFMEIsSUFBSSxDQUFDO01BQ25CbUIsSUFBSSxDQUFDLE1BQU07UUFDVixJQUFJO1VBQ0YsTUFBTUMsTUFBTSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDO1VBQzlDLElBQUlBLE1BQU0sQ0FBQ2hCLFFBQVEsQ0FBQ0wsS0FBSyxDQUFDLElBQUlELEdBQUcsQ0FBQ0csYUFBYSxDQUFDM0IsT0FBTyxDQUFDK0MsV0FBVztVQUNqRXhCLE1BQU0sQ0FBQ3lCLFFBQVEsQ0FBQ2QsTUFBTSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxPQUFPZSxDQUFDLEVBQUUsQ0FBQztNQUNmLENBQUMsQ0FBQztNQUNEQyxLQUFLLENBQUMsQ0FBQ0QsQ0FBQyxLQUFLO1FBQ1p6QixHQUFHLENBQUMyQixNQUFNLENBQUNDLElBQUksQ0FBQyx3QkFBd0IsRUFBRUgsQ0FBQyxDQUFDO01BQzlDLENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQyxPQUFPQSxDQUFDLEVBQUU7TUFDVnpCLEdBQUcsQ0FBQzJCLE1BQU0sQ0FBQ0UsS0FBSyxDQUFDSixDQUFDLENBQUM7SUFDckI7RUFDRjtBQUNGOztBQUVPLGVBQWVoQixZQUFZQSxDQUFDVixNQUFXLEVBQUVDLEdBQVEsRUFBRThCLE9BQVksRUFBRTtFQUN0RSxJQUFJO0lBQ0YsSUFBSUEsT0FBTyxLQUFLQSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUlBLE9BQU8sQ0FBQ0MsT0FBTyxJQUFJRCxPQUFPLENBQUNFLEtBQUssQ0FBQyxFQUFFO01BQ3hFLE1BQU1DLE1BQU0sR0FBRyxNQUFNbEMsTUFBTSxDQUFDbUMsV0FBVyxDQUFDSixPQUFPLENBQUM7TUFDaEQ7TUFDRTlCLEdBQUcsQ0FBQ0csYUFBYSxDQUFDM0IsT0FBTyxDQUFDQyxRQUFRO01BQ2xDdUIsR0FBRyxDQUFDRyxhQUFhLEVBQUV2QixTQUFTLEVBQUVILFFBQVE7TUFDdEM7UUFDQSxNQUFNMEQsUUFBUSxHQUFHN0QsTUFBTSxDQUFDOEQsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDQyxRQUFRLENBQUMsS0FBSyxDQUFDOztRQUV2RDtRQUNFLENBQUM5RCxlQUFNLEVBQUUrRCxNQUFNLEVBQUVDLE1BQU07UUFDdkIsQ0FBQ2hFLGVBQU0sRUFBRStELE1BQU0sRUFBRUUsYUFBYTtRQUM5QixDQUFDakUsZUFBTSxFQUFFK0QsTUFBTSxFQUFFRyxVQUFVOztRQUUzQixNQUFNLElBQUlDLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQztRQUN2RCxNQUFNQyxRQUFRLEdBQUcsSUFBSUMsaUJBQVEsQ0FBQztVQUM1QkwsTUFBTSxFQUFFaEUsZUFBTSxFQUFFK0QsTUFBTSxFQUFFQyxNQUFNO1VBQzlCTSxRQUFRLEVBQUV0RSxlQUFNLEVBQUUrRCxNQUFNLEVBQUVPLFFBQVEsSUFBSUMsU0FBUztVQUMvQ0MsY0FBYyxFQUFFeEUsZUFBTSxFQUFFK0QsTUFBTSxFQUFFUyxjQUFjLElBQUlEO1FBQ3BELENBQUMsQ0FBQztRQUNGLElBQUlFLFVBQVUsR0FBR3pFLGVBQU0sRUFBRStELE1BQU0sRUFBRVcsaUJBQWlCO1FBQzlDMUUsZUFBTSxFQUFFK0QsTUFBTSxFQUFFVyxpQkFBaUI7UUFDakNsRCxNQUFNLENBQUNlLE9BQU87UUFDbEJrQyxVQUFVLEdBQUdBLFVBQVU7UUFDcEJFLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDaEIzRCxPQUFPLENBQUMsNEJBQTRCLEVBQUUsRUFBRSxDQUFDO1FBQ3pDNEQsV0FBVyxDQUFDLENBQUM7UUFDaEJILFVBQVU7UUFDUkEsVUFBVSxDQUFDdkQsTUFBTSxHQUFHLENBQUM7UUFDakJ1RCxVQUFVO1FBQ1YsR0FBR0ksSUFBSSxDQUFDQyxLQUFLLENBQUNELElBQUksQ0FBQ0UsTUFBTSxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFO1FBQ3RETixVQUFVO1FBQ2hCLE1BQU1PLFFBQVEsR0FBRztRQUNmaEYsZUFBTSxDQUFDK0QsTUFBTSxDQUFDVyxpQkFBaUIsR0FBR2xELE1BQU0sQ0FBQ2UsT0FBTyxHQUFHLEdBQUcsR0FBRyxFQUFFO1FBQzFEcUIsUUFBUSxJQUFJOUQsSUFBSSxDQUFDbUYsU0FBUyxDQUFDMUIsT0FBTyxDQUFDMkIsUUFBUSxDQUFDLEVBQUU7O1FBRWpEO1FBQ0UsQ0FBQ2xGLGVBQU0sQ0FBQytELE1BQU0sQ0FBQ1csaUJBQWlCO1FBQ2hDLEVBQUUsTUFBTSxJQUFBUyx3Q0FBbUIsRUFBQ1YsVUFBVSxDQUFDLENBQUM7UUFDeEM7VUFDQSxNQUFNTCxRQUFRLENBQUNnQixJQUFJO1lBQ2pCLElBQUlDLDRCQUFtQixDQUFDO2NBQ3RCQyxNQUFNLEVBQUViLFVBQVU7Y0FDbEJjLGVBQWUsRUFBRTtZQUNuQixDQUFDO1VBQ0gsQ0FBQztVQUNELE1BQU1uQixRQUFRLENBQUNnQixJQUFJO1lBQ2pCLElBQUlJLG9DQUEyQixDQUFDO2NBQzlCRixNQUFNLEVBQUViLFVBQVU7Y0FDbEJnQiw4QkFBOEIsRUFBRTtnQkFDOUJDLGVBQWUsRUFBRSxLQUFLO2dCQUN0QkMsZ0JBQWdCLEVBQUUsS0FBSztnQkFDdkJDLGlCQUFpQixFQUFFO2NBQ3JCO1lBQ0YsQ0FBQztVQUNILENBQUM7UUFDSDs7UUFFQSxNQUFNeEIsUUFBUSxDQUFDZ0IsSUFBSTtVQUNqQixJQUFJUyx5QkFBZ0IsQ0FBQztZQUNuQlAsTUFBTSxFQUFFYixVQUFVO1lBQ2xCcUIsR0FBRyxFQUFFZCxRQUFRO1lBQ2JlLElBQUksRUFBRXJDLE1BQU07WUFDWnNDLFdBQVcsRUFBRXpDLE9BQU8sQ0FBQzJCLFFBQVE7WUFDN0JlLEdBQUcsRUFBRTtVQUNQLENBQUM7UUFDSCxDQUFDOztRQUVEMUMsT0FBTyxDQUFDMkMsT0FBTyxHQUFHLFdBQVd6QixVQUFVLHFCQUFxQk8sUUFBUSxFQUFFO01BQ3hFLENBQUMsTUFBTTtRQUNMekIsT0FBTyxDQUFDNEMsSUFBSSxHQUFHLE1BQU16QyxNQUFNLENBQUNJLFFBQVEsQ0FBQyxRQUFRLENBQUM7TUFDaEQ7SUFDRjtFQUNGLENBQUMsQ0FBQyxPQUFPWixDQUFDLEVBQUU7SUFDVnpCLEdBQUcsQ0FBQzJCLE1BQU0sQ0FBQ0UsS0FBSyxDQUFDSixDQUFDLENBQUM7RUFDckI7QUFDRjs7QUFFTyxlQUFla0QsZ0JBQWdCQSxDQUFDcEcsTUFBVyxFQUFFb0QsTUFBVyxFQUFFO0VBQy9ELElBQUk7SUFDRixNQUFNUixjQUFHLENBQUNDLElBQUk7TUFDWixHQUFHN0MsTUFBTSxDQUFDcUcsSUFBSSxJQUFJckcsTUFBTSxDQUFDc0csSUFBSSxRQUFRdEcsTUFBTSxDQUFDdUcsU0FBUztJQUN2RCxDQUFDO0VBQ0gsQ0FBQyxDQUFDLE9BQU9yRCxDQUFDLEVBQUU7SUFDVkUsTUFBTSxDQUFDRSxLQUFLLENBQUNKLENBQUMsQ0FBQztFQUNqQjtBQUNGOztBQUVPLGVBQWVzRCxXQUFXQSxDQUFDaEYsTUFBVyxFQUFFQyxHQUFRLEVBQUU7RUFDdkQsSUFBSUEsR0FBRyxDQUFDRyxhQUFhLENBQUMzQixPQUFPLENBQUN3RyxnQkFBZ0IsRUFBRSxNQUFNQyxVQUFVLENBQUNsRixNQUFNLEVBQUVDLEdBQUcsQ0FBQzs7RUFFN0UsSUFBSUEsR0FBRyxDQUFDRyxhQUFhLENBQUMrRSxPQUFPLENBQUNsRSxNQUFNLEVBQUUsTUFBTWtFLE9BQU8sQ0FBQ25GLE1BQU0sRUFBRUMsR0FBRyxDQUFDO0FBQ2xFOztBQUVBLGVBQWVpRixVQUFVQSxDQUFDbEYsTUFBVyxFQUFFQyxHQUFRLEVBQUU7RUFDL0NBLEdBQUcsQ0FBQzJCLE1BQU0sQ0FBQ3dELElBQUksQ0FBQyxHQUFHcEYsTUFBTSxDQUFDZSxPQUFPLHNDQUFzQyxDQUFDOztFQUV4RSxJQUFJO0lBQ0YsTUFBTXNFLEtBQUssR0FBRyxNQUFNckYsTUFBTSxDQUFDc0YsdUJBQXVCLENBQUMsSUFBSSxDQUFDOztJQUV4RCxJQUFJRCxLQUFLLElBQUlBLEtBQUssQ0FBQzNGLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDN0IsS0FBSyxJQUFJNkYsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHRixLQUFLLENBQUMzRixNQUFNLEVBQUU2RixDQUFDLEVBQUU7TUFDbkMsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdILEtBQUssQ0FBQ0UsQ0FBQyxDQUFDLENBQUNFLElBQUksQ0FBQy9GLE1BQU0sRUFBRThGLENBQUMsRUFBRSxFQUFFO1FBQzdDekYsV0FBVyxDQUFDQyxNQUFNLEVBQUVDLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRW9GLEtBQUssQ0FBQ0UsQ0FBQyxDQUFDLENBQUNFLElBQUksQ0FBQ0QsQ0FBQyxDQUFDLENBQUM7TUFDOUQ7SUFDSjs7SUFFQXZGLEdBQUcsQ0FBQzJCLE1BQU0sQ0FBQ3dELElBQUksQ0FBQyxHQUFHcEYsTUFBTSxDQUFDZSxPQUFPLG1DQUFtQyxDQUFDO0VBQ3ZFLENBQUMsQ0FBQyxPQUFPMkUsRUFBRSxFQUFFO0lBQ1h6RixHQUFHLENBQUMyQixNQUFNLENBQUNFLEtBQUssQ0FBQzRELEVBQUUsQ0FBQztFQUN0QjtBQUNGOztBQUVBLGVBQWVQLE9BQU9BLENBQUNuRixNQUFXLEVBQUVDLEdBQVEsRUFBRTtFQUM1QyxlQUFlMEYsS0FBS0EsQ0FBQ0MsSUFBWSxFQUFFO0lBQ2pDLE9BQU8sSUFBSUMsT0FBTyxDQUFDLENBQUNDLE9BQU8sS0FBS0MsVUFBVSxDQUFDRCxPQUFPLEVBQUVGLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztFQUNqRTs7RUFFQTNGLEdBQUcsQ0FBQzJCLE1BQU0sQ0FBQ3dELElBQUksQ0FBQyxHQUFHcEYsTUFBTSxDQUFDZSxPQUFPLDRCQUE0QixDQUFDOztFQUU5RCxJQUFJO0lBQ0YsSUFBSXNFLEtBQUssR0FBRyxNQUFNckYsTUFBTSxDQUFDZ0csV0FBVyxDQUFDLENBQUM7SUFDdEMsSUFBSVgsS0FBSyxJQUFJakcsS0FBSyxDQUFDQyxPQUFPLENBQUNnRyxLQUFLLENBQUMsSUFBSUEsS0FBSyxDQUFDM0YsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUNyRDJGLEtBQUssR0FBR0EsS0FBSyxDQUFDWSxNQUFNLENBQUMsQ0FBQ0MsQ0FBQyxLQUFLLENBQUNBLENBQUMsQ0FBQ2YsT0FBTyxDQUFDO0lBQ3pDO0lBQ0EsSUFBSUUsS0FBSyxJQUFJakcsS0FBSyxDQUFDQyxPQUFPLENBQUNnRyxLQUFLLENBQUMsSUFBSUEsS0FBSyxDQUFDM0YsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUNyRCxLQUFLLElBQUk2RixDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdGLEtBQUssQ0FBQzNGLE1BQU0sRUFBRTZGLENBQUMsRUFBRSxFQUFFO1FBQ3JDLE1BQU1ZLElBQUksR0FBRyxJQUFJQyxJQUFJLENBQUNmLEtBQUssQ0FBQ0UsQ0FBQyxDQUFDLENBQUNjLENBQUMsR0FBRyxJQUFJLENBQUM7O1FBRXhDLElBQUlDLFdBQVcsQ0FBQ0gsSUFBSSxDQUFDLEdBQUdsRyxHQUFHLENBQUNHLGFBQWEsQ0FBQytFLE9BQU8sQ0FBQ29CLGFBQWEsRUFBRTtVQUMvRCxNQUFNdkcsTUFBTSxDQUFDd0csV0FBVztZQUN0Qm5CLEtBQUssQ0FBQ0UsQ0FBQyxDQUFDLENBQUNrQixFQUFFLENBQUNBLEVBQUUsSUFBSXBCLEtBQUssQ0FBQ0UsQ0FBQyxDQUFDLENBQUNrQixFQUFFLENBQUM3RixXQUFXO1lBQ3pDO1VBQ0YsQ0FBQztVQUNELE1BQU0rRSxLQUFLO1lBQ1R0QyxJQUFJLENBQUNDLEtBQUssQ0FBQ0QsSUFBSSxDQUFDRSxNQUFNLENBQUMsQ0FBQyxHQUFHdEQsR0FBRyxDQUFDRyxhQUFhLENBQUMrRSxPQUFPLENBQUN1QixRQUFRLEdBQUcsQ0FBQztVQUNuRSxDQUFDO1FBQ0g7TUFDRjtJQUNGO0lBQ0F6RyxHQUFHLENBQUMyQixNQUFNLENBQUN3RCxJQUFJLENBQUMsR0FBR3BGLE1BQU0sQ0FBQ2UsT0FBTyx5QkFBeUIsQ0FBQztFQUM3RCxDQUFDLENBQUMsT0FBTzJFLEVBQUUsRUFBRTtJQUNYekYsR0FBRyxDQUFDMkIsTUFBTSxDQUFDRSxLQUFLLENBQUM0RCxFQUFFLENBQUM7RUFDdEI7QUFDRjs7QUFFQSxTQUFTWSxXQUFXQSxDQUFDSyxTQUFlLEVBQUU7RUFDcEMsTUFBTUMsT0FBTyxHQUFHLElBQUlSLElBQUksQ0FBQyxDQUFDO0VBQzFCO0VBQ0EsTUFBTVMsTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7O0VBRWxDO0VBQ0EsTUFBTUMsS0FBSyxHQUFHVixJQUFJLENBQUNXLEdBQUc7SUFDcEJILE9BQU8sQ0FBQ0ksV0FBVyxDQUFDLENBQUM7SUFDckJKLE9BQU8sQ0FBQ0ssUUFBUSxDQUFDLENBQUM7SUFDbEJMLE9BQU8sQ0FBQ00sT0FBTyxDQUFDO0VBQ2xCLENBQUM7RUFDRCxNQUFNQyxHQUFHLEdBQUdmLElBQUksQ0FBQ1csR0FBRztJQUNsQkosU0FBUyxDQUFDSyxXQUFXLENBQUMsQ0FBQztJQUN2QkwsU0FBUyxDQUFDTSxRQUFRLENBQUMsQ0FBQztJQUNwQk4sU0FBUyxDQUFDTyxPQUFPLENBQUM7RUFDcEIsQ0FBQzs7RUFFRDtFQUNBLE9BQU8sQ0FBQ0osS0FBSyxHQUFHSyxHQUFHLElBQUlOLE1BQU07QUFDL0I7O0FBRU8sU0FBU08sYUFBYUEsQ0FBQSxFQUFHO0VBQzlCLE1BQU1DLFNBQVMsR0FBR0MsYUFBSSxDQUFDeEIsT0FBTyxDQUFDd0IsYUFBSSxDQUFDQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7RUFDaEQsTUFBTUMsUUFBUSxHQUFHRixhQUFJLENBQUN4QixPQUFPLENBQUN1QixTQUFTLEVBQUUsZ0JBQWdCLENBQUM7RUFDMUQsSUFBSSxDQUFDSSxXQUFFLENBQUNDLFVBQVUsQ0FBQ0YsUUFBUSxDQUFDLEVBQUU7SUFDNUJDLFdBQUUsQ0FBQ0UsU0FBUyxDQUFDSCxRQUFRLENBQUM7RUFDeEI7O0VBRUEsTUFBTUksU0FBUyxHQUFHTixhQUFJLENBQUN4QixPQUFPLENBQUN1QixTQUFTLEVBQUUsU0FBUyxDQUFDO0VBQ3BELElBQUksQ0FBQ0ksV0FBRSxDQUFDQyxVQUFVLENBQUNFLFNBQVMsQ0FBQyxFQUFFO0lBQzdCSCxXQUFFLENBQUNFLFNBQVMsQ0FBQ0MsU0FBUyxDQUFDO0VBQ3pCO0FBQ0Y7O0FBRU8sU0FBU0MsU0FBU0EsQ0FBQ0MsQ0FBUyxFQUFFO0VBQ25DLE9BQU8sYUFBYSxDQUFDQyxJQUFJLENBQUNELENBQUMsQ0FBQztBQUM5Qjs7QUFFTyxTQUFTRSxZQUFZQSxDQUFBLEVBQUc7RUFDN0IsTUFBTUMsVUFBVSxHQUFHQyxXQUFFLENBQUNDLGlCQUFpQixDQUFDLENBQUM7RUFDekMsS0FBSyxNQUFNQyxPQUFPLElBQUlILFVBQVUsRUFBRTtJQUNoQyxNQUFNSSxLQUFVLEdBQUdKLFVBQVUsQ0FBQ0csT0FBTyxDQUFDO0lBQ3RDLEtBQUssSUFBSTdDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBRzhDLEtBQUssQ0FBQzNJLE1BQU0sRUFBRTZGLENBQUMsRUFBRSxFQUFFO01BQ3JDLE1BQU0rQyxLQUFLLEdBQUdELEtBQUssQ0FBQzlDLENBQUMsQ0FBQztNQUN0QjtNQUNFK0MsS0FBSyxDQUFDQyxNQUFNLEtBQUssTUFBTTtNQUN2QkQsS0FBSyxDQUFDRSxPQUFPLEtBQUssV0FBVztNQUM3QixDQUFDRixLQUFLLENBQUNHLFFBQVE7O01BRWYsT0FBT0gsS0FBSyxDQUFDRSxPQUFPO0lBQ3hCO0VBQ0Y7RUFDQSxPQUFPLFNBQVM7QUFDbEI7O0FBRU8sU0FBU0UsY0FBY0EsQ0FBQ3RJLGFBQTRCLEVBQUU7RUFDM0QsSUFBSUEsYUFBYSxJQUFJdUksTUFBTSxDQUFDQyxTQUFTLENBQUN4SSxhQUFhLENBQUN5SSxZQUFZLENBQUMsRUFBRTtJQUNqRUMsT0FBTyxDQUFDQyxlQUFlLENBQUMzSSxhQUFhLENBQUN5SSxZQUFZLENBQUM7RUFDckQ7QUFDRjs7QUFFTyxNQUFNRyxXQUFXLEdBQUFDLE9BQUEsQ0FBQUQsV0FBQSxHQUFHLElBQUFFLGVBQVMsRUFBQ3pCLFdBQUUsQ0FBQzBCLE1BQU0sQ0FBQzs7QUFFeEMsU0FBU0MsaUJBQWlCQSxDQUFDckksT0FBWSxFQUFFO0VBQzlDLE1BQU0sQ0FBQ3NJLEdBQUcsQ0FBQyxHQUFHdEksT0FBTyxDQUFDeEIsS0FBSyxDQUFDLEdBQUcsQ0FBQztFQUNoQyxPQUFPLG1CQUFtQjhKLEdBQUcsRUFBRTtBQUNqQyIsImlnbm9yZUxpc3QiOltdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wppconnect/server",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.8.0",
|
|
4
4
|
"description": "Projeto feito para autenticar a automomacao do WhatsappWeb com multi-clientes de forma dinamica. Backend feito em Nodejs(express, socketio), FrontEnd (ReactJS)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"author": "kingaspx",
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"test": "jest"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@aws-sdk/client-s3": "^3.
|
|
32
|
-
"@wppconnect-team/wppconnect": "^1.34.
|
|
31
|
+
"@aws-sdk/client-s3": "^3.675.0",
|
|
32
|
+
"@wppconnect-team/wppconnect": "^1.34.2",
|
|
33
33
|
"archiver": "^7.0.1",
|
|
34
34
|
"axios": "^1.7.7",
|
|
35
35
|
"bcrypt": "^5.1.1",
|
|
@@ -37,61 +37,62 @@
|
|
|
37
37
|
"cors": "^2.8.5",
|
|
38
38
|
"cross-env": "^7.0.3",
|
|
39
39
|
"dotenv": "^16.4.5",
|
|
40
|
-
"express": "^4.
|
|
40
|
+
"express": "^4.21.1",
|
|
41
41
|
"express-query-boolean": "^2.0.0",
|
|
42
|
-
"form-data": "^4.0.
|
|
42
|
+
"form-data": "^4.0.1",
|
|
43
43
|
"json-mapper-json": "^1.3.3",
|
|
44
44
|
"merge-deep": "^3.0.3",
|
|
45
45
|
"moment": "^2.30.1",
|
|
46
46
|
"multer": "^1.4.5-lts.1",
|
|
47
47
|
"qrcode": "^1.5.4",
|
|
48
|
-
"socket.io": "^4.
|
|
48
|
+
"socket.io": "^4.8.1",
|
|
49
49
|
"swagger-autogen": "^2.23.7",
|
|
50
50
|
"swagger-ui-express": "^5.0.1",
|
|
51
51
|
"unzipper": "^0.12.3",
|
|
52
|
-
"winston": "^3.
|
|
52
|
+
"winston": "^3.15.0"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@babel/cli": "^7.
|
|
56
|
-
"@babel/core": "^7.25.
|
|
57
|
-
"@babel/eslint-parser": "^7.25.
|
|
58
|
-
"@babel/eslint-plugin": "^7.25.
|
|
59
|
-
"@babel/node": "^7.25.
|
|
60
|
-
"@babel/plugin-transform-runtime": "^7.
|
|
61
|
-
"@babel/preset-env": "^7.25.
|
|
62
|
-
"@babel/preset-typescript": "^7.
|
|
63
|
-
"@commitlint/cli": "^19.
|
|
64
|
-
"@commitlint/config-conventional": "^19.
|
|
65
|
-
"@commitlint/cz-commitlint": "^19.
|
|
66
|
-
"@types/archiver": "^6.0.
|
|
55
|
+
"@babel/cli": "^7.25.9",
|
|
56
|
+
"@babel/core": "^7.25.9",
|
|
57
|
+
"@babel/eslint-parser": "^7.25.9",
|
|
58
|
+
"@babel/eslint-plugin": "^7.25.9",
|
|
59
|
+
"@babel/node": "^7.25.9",
|
|
60
|
+
"@babel/plugin-transform-runtime": "^7.25.9",
|
|
61
|
+
"@babel/preset-env": "^7.25.9",
|
|
62
|
+
"@babel/preset-typescript": "^7.25.9",
|
|
63
|
+
"@commitlint/cli": "^19.5.0",
|
|
64
|
+
"@commitlint/config-conventional": "^19.5.0",
|
|
65
|
+
"@commitlint/cz-commitlint": "^19.5.0",
|
|
66
|
+
"@types/archiver": "^6.0.3",
|
|
67
67
|
"@types/bcrypt": "^5.0.2",
|
|
68
68
|
"@types/cors": "^2.8.17",
|
|
69
69
|
"@types/express": "^4.17.21",
|
|
70
|
-
"@types/jest": "^29.5.
|
|
70
|
+
"@types/jest": "^29.5.14",
|
|
71
71
|
"@types/merge-deep": "^3.0.3",
|
|
72
72
|
"@types/mime-types": "^2.1.4",
|
|
73
73
|
"@types/multer": "^1.4.12",
|
|
74
|
-
"@types/node": "^20.16.
|
|
74
|
+
"@types/node": "^20.16.13",
|
|
75
75
|
"@types/qrcode": "^1.5.5",
|
|
76
76
|
"@types/swagger-ui-express": "^4.1.6",
|
|
77
77
|
"@types/unzipper": "^0.10.10",
|
|
78
78
|
"@typescript-eslint/eslint-plugin": "^7.18.0",
|
|
79
|
-
"
|
|
79
|
+
"@typescript-eslint/parser": "^8.12.2",
|
|
80
|
+
"commitizen": "^4.3.1",
|
|
80
81
|
"conventional-changelog-cli": "^5.0.0",
|
|
81
82
|
"crypto-js": "^4.2.0",
|
|
82
|
-
"eslint": "^8.57.
|
|
83
|
-
"eslint-config-prettier": "^9.1.0",
|
|
83
|
+
"eslint": "^8.57.1",
|
|
84
84
|
"eslint-config-love": "^53.0.0",
|
|
85
|
-
"eslint-
|
|
86
|
-
"eslint-plugin-
|
|
85
|
+
"eslint-config-prettier": "^9.1.0",
|
|
86
|
+
"eslint-plugin-import": "^2.31.0",
|
|
87
|
+
"eslint-plugin-n": "^17.10.3",
|
|
87
88
|
"eslint-plugin-prettier": "^4.2.1",
|
|
88
89
|
"eslint-plugin-promise": "^6.6.0",
|
|
89
90
|
"eslint-plugin-simple-import-sort": "^12.1.1",
|
|
90
|
-
"husky": "^9.1.
|
|
91
|
+
"husky": "^9.1.6",
|
|
91
92
|
"jest": "^29.7.0",
|
|
92
93
|
"license-check-and-add": "^4.0.5",
|
|
93
|
-
"mongoose": "^8.
|
|
94
|
-
"nodemon": "^3.1.
|
|
94
|
+
"mongoose": "^8.7.3",
|
|
95
|
+
"nodemon": "^3.1.7",
|
|
95
96
|
"prettier": "^2.8.8",
|
|
96
97
|
"pretty-quick": "^4.0.0",
|
|
97
98
|
"prom-client": "^14.2.0",
|
|
@@ -108,7 +109,7 @@
|
|
|
108
109
|
},
|
|
109
110
|
"peerDependencies": {
|
|
110
111
|
"crypto-js": "^4.2.0",
|
|
111
|
-
"mongoose": "^8.
|
|
112
|
+
"mongoose": "^8.7.3",
|
|
112
113
|
"redis": "^4.7.0"
|
|
113
114
|
}
|
|
114
115
|
}
|