botframework-directlinejs 0.15.8 → 0.15.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/directline.js +1 -1
- package/dist/directline.js.LICENSE.txt +18 -7
- package/dist/stats.json +47422 -28993
- package/lib/createDeferred.js +2 -3
- package/lib/directLine.js +32 -31
- package/lib/directLine.mock.js +19 -24
- package/lib/directLineStreaming.js +459 -482
- package/lib/parseFilename.js +3 -2
- package/lib/streaming/WebSocketClientWithNetworkInformation.js +33 -46
- package/package.json +31 -34
package/lib/directLine.mock.js
CHANGED
|
@@ -4,15 +4,15 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.
|
|
7
|
+
exports.mockWebSocket = exports.mockServices = exports.mockServer = exports.mockAjax = exports.mockActivity = exports.injectNewToken = exports.injectClose = void 0;
|
|
8
8
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
9
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
11
|
var _rxjs = require("rxjs");
|
|
12
12
|
var _url = require("url");
|
|
13
|
-
function _createForOfIteratorHelper(
|
|
14
|
-
function _unsupportedIterableToArray(
|
|
15
|
-
function _arrayLikeToArray(
|
|
13
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
14
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
15
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
16
16
|
// MOCK helpers
|
|
17
17
|
|
|
18
18
|
var notImplemented = function notImplemented() {
|
|
@@ -21,7 +21,7 @@ var notImplemented = function notImplemented() {
|
|
|
21
21
|
|
|
22
22
|
// MOCK Activity
|
|
23
23
|
|
|
24
|
-
var mockActivity = function mockActivity(text) {
|
|
24
|
+
var mockActivity = exports.mockActivity = function mockActivity(text) {
|
|
25
25
|
return {
|
|
26
26
|
type: 'message',
|
|
27
27
|
from: {
|
|
@@ -32,9 +32,9 @@ var mockActivity = function mockActivity(text) {
|
|
|
32
32
|
};
|
|
33
33
|
|
|
34
34
|
// MOCK DirectLine Server (shared state used by Observable.ajax and WebSocket mocks)
|
|
35
|
-
|
|
35
|
+
|
|
36
36
|
var tokenPrefix = 'token';
|
|
37
|
-
var mockServer = function mockServer(scheduler) {
|
|
37
|
+
var mockServer = exports.mockServer = function mockServer(scheduler) {
|
|
38
38
|
return {
|
|
39
39
|
scheduler: scheduler,
|
|
40
40
|
conversation: {
|
|
@@ -45,7 +45,6 @@ var mockServer = function mockServer(scheduler) {
|
|
|
45
45
|
}
|
|
46
46
|
};
|
|
47
47
|
};
|
|
48
|
-
exports.mockServer = mockServer;
|
|
49
48
|
var tokenResponse = function tokenResponse(server, request) {
|
|
50
49
|
var headers = request.headers;
|
|
51
50
|
var authorization = headers['Authorization'];
|
|
@@ -57,22 +56,20 @@ var tokenResponse = function tokenResponse(server, request) {
|
|
|
57
56
|
};
|
|
58
57
|
return response;
|
|
59
58
|
};
|
|
60
|
-
var injectClose = function injectClose(server) {
|
|
59
|
+
var injectClose = exports.injectClose = function injectClose(server) {
|
|
61
60
|
return server.conversation.sockets.forEach(function (s) {
|
|
62
61
|
return s.onclose(new CloseEvent('close'));
|
|
63
62
|
});
|
|
64
63
|
};
|
|
65
|
-
exports.
|
|
66
|
-
var injectNewToken = function injectNewToken(server) {
|
|
64
|
+
var injectNewToken = exports.injectNewToken = function injectNewToken(server) {
|
|
67
65
|
var conversation = server.conversation;
|
|
68
66
|
var suffix = Number.parseInt(conversation.token.substring(tokenPrefix.length), 10) + 1;
|
|
69
67
|
conversation.token = tokenPrefix + suffix;
|
|
70
68
|
};
|
|
71
|
-
exports.injectNewToken = injectNewToken;
|
|
72
69
|
var keyWatermark = 'watermark';
|
|
73
70
|
// MOCK Observable.ajax (uses shared state in Server)
|
|
74
71
|
|
|
75
|
-
var mockAjax = function mockAjax(server, customAjax) {
|
|
72
|
+
var mockAjax = exports.mockAjax = function mockAjax(server, customAjax) {
|
|
76
73
|
var uriBase = new _url.URL('https://directline.botframework.com/v3/directline/');
|
|
77
74
|
var createStreamUrl = function createStreamUrl(watermark) {
|
|
78
75
|
var uri = new _url.URL('conversations/stream', uriBase);
|
|
@@ -195,10 +192,10 @@ var mockAjax = function mockAjax(server, customAjax) {
|
|
|
195
192
|
};
|
|
196
193
|
|
|
197
194
|
// MOCK WebSocket (uses shared state in Server)
|
|
198
|
-
|
|
199
|
-
var mockWebSocket = function mockWebSocket(server) {
|
|
200
|
-
var
|
|
201
|
-
return
|
|
195
|
+
|
|
196
|
+
var mockWebSocket = exports.mockWebSocket = function mockWebSocket(server) {
|
|
197
|
+
var _MockWebSocket;
|
|
198
|
+
return _MockWebSocket = /*#__PURE__*/function () {
|
|
202
199
|
function MockWebSocket(url, protocols) {
|
|
203
200
|
var _this = this;
|
|
204
201
|
(0, _classCallCheck2["default"])(this, MockWebSocket);
|
|
@@ -225,7 +222,7 @@ var mockWebSocket = function mockWebSocket(server) {
|
|
|
225
222
|
}
|
|
226
223
|
});
|
|
227
224
|
}
|
|
228
|
-
(0, _createClass2["default"])(MockWebSocket, [{
|
|
225
|
+
return (0, _createClass2["default"])(MockWebSocket, [{
|
|
229
226
|
key: "play",
|
|
230
227
|
value: function play(start, after) {
|
|
231
228
|
var history = server.conversation.history;
|
|
@@ -267,13 +264,12 @@ var mockWebSocket = function mockWebSocket(server) {
|
|
|
267
264
|
throw new Error();
|
|
268
265
|
}
|
|
269
266
|
}]);
|
|
270
|
-
|
|
271
|
-
}(), (0, _defineProperty2["default"])(_class, "CLOSED", WebSocket.CLOSED), (0, _defineProperty2["default"])(_class, "CLOSING", WebSocket.CLOSING), (0, _defineProperty2["default"])(_class, "CONNECTING", WebSocket.CONNECTING), (0, _defineProperty2["default"])(_class, "OPEN", WebSocket.OPEN), _class;
|
|
267
|
+
}(), (0, _defineProperty2["default"])(_MockWebSocket, "CLOSED", WebSocket.CLOSED), (0, _defineProperty2["default"])(_MockWebSocket, "CLOSING", WebSocket.CLOSING), (0, _defineProperty2["default"])(_MockWebSocket, "CONNECTING", WebSocket.CONNECTING), (0, _defineProperty2["default"])(_MockWebSocket, "OPEN", WebSocket.OPEN), _MockWebSocket;
|
|
272
268
|
};
|
|
273
269
|
|
|
274
270
|
// MOCK services (top-level aggregation of all mocks)
|
|
275
|
-
|
|
276
|
-
var mockServices = function mockServices(server, scheduler) {
|
|
271
|
+
|
|
272
|
+
var mockServices = exports.mockServices = function mockServices(server, scheduler) {
|
|
277
273
|
return {
|
|
278
274
|
scheduler: scheduler,
|
|
279
275
|
WebSocket: mockWebSocket(server),
|
|
@@ -283,5 +279,4 @@ var mockServices = function mockServices(server, scheduler) {
|
|
|
283
279
|
}
|
|
284
280
|
};
|
|
285
281
|
};
|
|
286
|
-
exports.mockServices = mockServices;
|
|
287
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcnhqcyIsInJlcXVpcmUiLCJfdXJsIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJvIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiaSIsIkYiLCJzIiwibiIsImRvbmUiLCJ2YWx1ZSIsImUiLCJfZSIsImYiLCJUeXBlRXJyb3IiLCJub3JtYWxDb21wbGV0aW9uIiwiZGlkRXJyIiwiZXJyIiwiY2FsbCIsInN0ZXAiLCJuZXh0IiwiX2UyIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJhcnIiLCJsZW4iLCJhcnIyIiwibm90SW1wbGVtZW50ZWQiLCJFcnJvciIsIm1vY2tBY3Rpdml0eSIsInRleHQiLCJ0eXBlIiwiaWQiLCJleHBvcnRzIiwidG9rZW5QcmVmaXgiLCJtb2NrU2VydmVyIiwic2NoZWR1bGVyIiwiY29udmVyc2F0aW9uIiwic29ja2V0cyIsIlNldCIsImNvbnZlcnNhdGlvbklkIiwiaGlzdG9yeSIsInRva2VuIiwidG9rZW5SZXNwb25zZSIsInNlcnZlciIsInJlcXVlc3QiLCJoZWFkZXJzIiwiYXV0aG9yaXphdGlvbiIsImNvbmNhdCIsInJlc3BvbnNlIiwic3RhdHVzIiwiaW5qZWN0Q2xvc2UiLCJmb3JFYWNoIiwib25jbG9zZSIsIkNsb3NlRXZlbnQiLCJpbmplY3ROZXdUb2tlbiIsInN1ZmZpeCIsIk51bWJlciIsInBhcnNlSW50Iiwic3Vic3RyaW5nIiwia2V5V2F0ZXJtYXJrIiwibW9ja0FqYXgiLCJjdXN0b21BamF4IiwidXJpQmFzZSIsIlVSTCIsImNyZWF0ZVN0cmVhbVVybCIsIndhdGVybWFyayIsInVyaSIsInBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsImFwcGVuZCIsInNlYXJjaCIsImpheCIsInVybE9yUmVxdWVzdCIsInVybCIsInBhdGhuYW1lIiwic2VhcmNoUGFyYW1zIiwicGFydHMiLCJzcGxpdCIsInN0cmVhbVVybCIsInJlc3BvbnNlVG9rZW4iLCJhY3Rpdml0eSIsImJvZHkiLCJhZnRlciIsInB1c2giLCJzdGFydCIsIl9pdGVyYXRvciIsIl9zdGVwIiwic29ja2V0IiwicGxheSIsImdldCIsIm1ldGhvZCIsIk9ic2VydmFibGUiLCJzdWJzY3JpYmVyIiwiY29tcGxldGUiLCJlcnJvciIsInByb3BlcnRpZXMiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJfZGVsZXRlIiwiZ2V0SlNPTiIsImFzc2lnbiIsIm1vY2tXZWJTb2NrZXQiLCJfY2xhc3MiLCJNb2NrV2ViU29ja2V0IiwicHJvdG9jb2xzIiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2RlZmluZVByb3BlcnR5MiIsIldlYlNvY2tldCIsIkNMT1NFRCIsIkNMT1NJTkciLCJDT05ORUNUSU5HIiwiT1BFTiIsInNjaGVkdWxlIiwicmVhZHlTdGF0ZSIsImFkZCIsIm9ub3BlbiIsIkV2ZW50IiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsImFjdGl2aXRpZXMiLCJhY3Rpdml0eUdyb3VwIiwibWVzc2FnZSIsIk1lc3NhZ2VFdmVudCIsImRhdGEiLCJKU09OIiwic3RyaW5naWZ5Iiwib25tZXNzYWdlIiwiY2xvc2UiLCJjb2RlIiwicmVhc29uIiwic2VuZCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZGlzcGF0Y2hFdmVudCIsIm1vY2tTZXJ2aWNlcyIsImFqYXgiLCJyYW5kb20iXSwic291cmNlcyI6WyIuLi9zcmMvZGlyZWN0TGluZS5tb2NrLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIERpcmVjdExpbmVFeHBvcnQgZnJvbSBcIi4vZGlyZWN0TGluZVwiO1xuaW1wb3J0IHsgVGVzdFNjaGVkdWxlciwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBBamF4Q3JlYXRpb25NZXRob2QsIEFqYXhSZXF1ZXN0LCBBamF4UmVzcG9uc2UgfSBmcm9tIFwicnhqcy9vYnNlcnZhYmxlL2RvbS9BamF4T2JzZXJ2YWJsZVwiO1xuaW1wb3J0IHsgVVJMLCBVUkxTZWFyY2hQYXJhbXMgfSBmcm9tICd1cmwnO1xuXG4vLyBNT0NLIGhlbHBlcnNcblxuY29uc3Qgbm90SW1wbGVtZW50ZWQgPSAoKTogbmV2ZXIgPT4geyB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpIH07XG5cbi8vIE1PQ0sgQWN0aXZpdHlcblxuZXhwb3J0IGNvbnN0IG1vY2tBY3Rpdml0eSA9ICh0ZXh0OiBzdHJpbmcpOiBEaXJlY3RMaW5lRXhwb3J0LkFjdGl2aXR5ID0+ICh7IHR5cGU6ICdtZXNzYWdlJywgZnJvbTogeyBpZDogJ3NlbmRlcicgfSwgdGV4dCB9KTtcblxuLy8gTU9DSyBEaXJlY3RMaW5lIFNlcnZlciAoc2hhcmVkIHN0YXRlIHVzZWQgYnkgT2JzZXJ2YWJsZS5hamF4IGFuZCBXZWJTb2NrZXQgbW9ja3MpXG5cbmludGVyZmFjZSBBY3Rpdml0eVNvY2tldCB7XG4gIHBsYXk6IChzdGFydDogbnVtYmVyLCBhZnRlcjogbnVtYmVyKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBTb2NrZXQgPSBXZWJTb2NrZXQgJiBBY3Rpdml0eVNvY2tldDtcblxuZXhwb3J0IGludGVyZmFjZSBDb252ZXJzYXRpb24ge1xuICBzb2NrZXRzOiBTZXQ8U29ja2V0PjtcbiAgY29udmVyc2F0aW9uSWQ6IHN0cmluZztcbiAgaGlzdG9yeTogQXJyYXk8RGlyZWN0TGluZUV4cG9ydC5BY3Rpdml0eT47XG4gIHRva2VuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyIHtcbiAgc2NoZWR1bGVyOiBUZXN0U2NoZWR1bGVyO1xuICBjb252ZXJzYXRpb246IENvbnZlcnNhdGlvbjtcbn1cblxuY29uc3QgdG9rZW5QcmVmaXggPSAndG9rZW4nO1xuXG5leHBvcnQgY29uc3QgbW9ja1NlcnZlciA9IChzY2hlZHVsZXI6IFRlc3RTY2hlZHVsZXIpOiBTZXJ2ZXIgPT4gKHtcbiAgc2NoZWR1bGVyLFxuICBjb252ZXJzYXRpb246IHtcbiAgICBzb2NrZXRzOiBuZXcgU2V0PFNvY2tldD4oKSxcbiAgICBjb252ZXJzYXRpb25JZDogJ09uZUNvbnZlcnNhdGlvbicsXG4gICAgaGlzdG9yeTogW10sXG4gICAgdG9rZW46IHRva2VuUHJlZml4ICsgJzEnLFxuICB9XG59KTtcblxuY29uc3QgdG9rZW5SZXNwb25zZSA9IChzZXJ2ZXI6IFNlcnZlciwgcmVxdWVzdDogQWpheFJlcXVlc3QpOiBBamF4UmVzcG9uc2UgfCBudWxsID0+IHtcbiAgY29uc3QgeyBoZWFkZXJzIH0gPSByZXF1ZXN0O1xuICBjb25zdCBhdXRob3JpemF0aW9uID0gaGVhZGVyc1snQXV0aG9yaXphdGlvbiddO1xuICBpZiAoYXV0aG9yaXphdGlvbiA9PT0gYEJlYXJlciAke3NlcnZlci5jb252ZXJzYXRpb24udG9rZW59YCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgcmVzcG9uc2U6IFBhcnRpYWw8QWpheFJlc3BvbnNlPiA9IHtcbiAgICBzdGF0dXM6IDQwMyxcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZSBhcyBBamF4UmVzcG9uc2U7XG59XG5cbmV4cG9ydCBjb25zdCBpbmplY3RDbG9zZSA9IChzZXJ2ZXI6IFNlcnZlcik6IHZvaWQgPT5cbiAgc2VydmVyLmNvbnZlcnNhdGlvbi5zb2NrZXRzLmZvckVhY2gocyA9PiBzLm9uY2xvc2UobmV3IENsb3NlRXZlbnQoJ2Nsb3NlJykpKTtcblxuZXhwb3J0IGNvbnN0IGluamVjdE5ld1Rva2VuID0gKHNlcnZlcjogU2VydmVyKTogdm9pZCA9PiB7XG4gIGNvbnN0IHsgY29udmVyc2F0aW9uIH0gPSBzZXJ2ZXI7XG4gIGNvbnN0IHN1ZmZpeCA9IE51bWJlci5wYXJzZUludChjb252ZXJzYXRpb24udG9rZW4uc3Vic3RyaW5nKHRva2VuUHJlZml4Lmxlbmd0aCksIDEwKSArIDFcbiAgY29udmVyc2F0aW9uLnRva2VuID0gdG9rZW5QcmVmaXggKyBzdWZmaXg7XG59XG5cbmNvbnN0IGtleVdhdGVybWFyayA9ICd3YXRlcm1hcmsnO1xuXG50eXBlIGFqYXhUeXBlID0gKHVybE9yUmVxdWVzdDogc3RyaW5nIHwgQWpheFJlcXVlc3QpID0+IEFqYXhSZXNwb25zZTtcblxuLy8gTU9DSyBPYnNlcnZhYmxlLmFqYXggKHVzZXMgc2hhcmVkIHN0YXRlIGluIFNlcnZlcilcblxuZXhwb3J0IGNvbnN0IG1vY2tBamF4ID0gKHNlcnZlcjogU2VydmVyLCBjdXN0b21BamF4PzogYWpheFR5cGUpOiBBamF4Q3JlYXRpb25NZXRob2QgPT4ge1xuXG4gIGNvbnN0IHVyaUJhc2UgPSBuZXcgVVJMKCdodHRwczovL2RpcmVjdGxpbmUuYm90ZnJhbWV3b3JrLmNvbS92My9kaXJlY3RsaW5lLycpO1xuICBjb25zdCBjcmVhdGVTdHJlYW1VcmwgPSAod2F0ZXJtYXJrOiBudW1iZXIpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwoJ2NvbnZlcnNhdGlvbnMvc3RyZWFtJywgdXJpQmFzZSk7XG4gICAgaWYgKHdhdGVybWFyayA+IDApIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgIHBhcmFtcy5hcHBlbmQoa2V5V2F0ZXJtYXJrLCB3YXRlcm1hcmsudG9TdHJpbmcoMTApKTtcbiAgICAgIHVyaS5zZWFyY2ggPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXJpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBjb25zdCBqYXggPSBjdXN0b21BamF4IHx8ICgodXJsT3JSZXF1ZXN0OiBzdHJpbmcgfCBBamF4UmVxdWVzdCk6IEFqYXhSZXNwb25zZSA9PiB7XG4gICAgaWYgKHR5cGVvZiB1cmxPclJlcXVlc3QgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHVybE9yUmVxdWVzdC51cmwpO1xuXG4gICAgY29uc3QgeyBwYXRobmFtZSwgc2VhcmNoUGFyYW1zIH0gPSB1cmk7XG5cbiAgICBjb25zdCBwYXJ0cyA9IHBhdGhuYW1lLnNwbGl0KCcvJyk7XG5cbiAgICBpZiAocGFydHNbM10gPT09ICd0b2tlbnMnICYmIHBhcnRzWzRdID09PSAncmVmcmVzaCcpIHtcblxuICAgICAgY29uc3QgcmVzcG9uc2U6IFBhcnRpYWw8QWpheFJlc3BvbnNlPiA9IHtcbiAgICAgICAgcmVzcG9uc2U6IHsgdG9rZW46IHNlcnZlci5jb252ZXJzYXRpb24udG9rZW4gfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlIGFzIEFqYXhSZXNwb25zZTtcbiAgICB9XG5cbiAgICBpZiAocGFydHNbM10gIT09ICdjb252ZXJzYXRpb25zJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgfVxuXG4gICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gNCkge1xuICAgICAgY29uc3QgY29udmVyc2F0aW9uOiBEaXJlY3RMaW5lRXhwb3J0LkNvbnZlcnNhdGlvbiA9IHtcbiAgICAgICAgY29udmVyc2F0aW9uSWQ6IHNlcnZlci5jb252ZXJzYXRpb24uY29udmVyc2F0aW9uSWQsXG4gICAgICAgIHRva2VuOiBzZXJ2ZXIuY29udmVyc2F0aW9uLnRva2VuLFxuICAgICAgICBzdHJlYW1Vcmw6IGNyZWF0ZVN0cmVhbVVybCgwKSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBQYXJ0aWFsPEFqYXhSZXNwb25zZT4gPSB7XG4gICAgICAgIHJlc3BvbnNlOiBjb252ZXJzYXRpb24sXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNwb25zZSBhcyBBamF4UmVzcG9uc2U7XG4gICAgfVxuXG4gICAgaWYgKHBhcnRzWzRdICE9PSBzZXJ2ZXIuY29udmVyc2F0aW9uLmNvbnZlcnNhdGlvbklkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICB9XG5cbiAgICBpZiAocGFydHNbNV0gPT09ICdhY3Rpdml0aWVzJykge1xuICAgICAgY29uc3QgcmVzcG9uc2VUb2tlbiA9IHRva2VuUmVzcG9uc2Uoc2VydmVyLCB1cmxPclJlcXVlc3QpO1xuICAgICAgaWYgKHJlc3BvbnNlVG9rZW4gIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlVG9rZW47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFjdGl2aXR5OiBEaXJlY3RMaW5lRXhwb3J0LkFjdGl2aXR5ID0gdXJsT3JSZXF1ZXN0LmJvZHk7XG5cbiAgICAgIGNvbnN0IGFmdGVyID0gc2VydmVyLmNvbnZlcnNhdGlvbi5oaXN0b3J5LnB1c2goYWN0aXZpdHkpO1xuICAgICAgY29uc3Qgc3RhcnQgPSBhZnRlciAtIDE7XG5cbiAgICAgIGZvciAoY29uc3Qgc29ja2V0IG9mIHNlcnZlci5jb252ZXJzYXRpb24uc29ja2V0cykge1xuICAgICAgICBzb2NrZXQucGxheShzdGFydCwgYWZ0ZXIpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNwb25zZTogUGFydGlhbDxBamF4UmVzcG9uc2U+ID0ge1xuICAgICAgICByZXNwb25zZTogeyBpZDogJ21lc3NhZ2VJZCcgfSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3BvbnNlIGFzIEFqYXhSZXNwb25zZTtcbiAgICB9XG4gICAgZWxzZSBpZiAocGFydHMubGVuZ3RoID09PSA1KSB7XG4gICAgICBjb25zdCByZXNwb25zZVRva2VuID0gdG9rZW5SZXNwb25zZShzZXJ2ZXIsIHVybE9yUmVxdWVzdCk7XG4gICAgICBpZiAocmVzcG9uc2VUb2tlbiAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VUb2tlbjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgd2F0ZXJtYXJrID0gc2VhcmNoUGFyYW1zLmdldCgnd2F0ZXJtYXJrJyk7XG4gICAgICBjb25zdCBzdGFydCA9IE51bWJlci5wYXJzZUludCh3YXRlcm1hcmssIDEwKTtcblxuICAgICAgY29uc3QgY29udmVyc2F0aW9uOiBEaXJlY3RMaW5lRXhwb3J0LkNvbnZlcnNhdGlvbiA9IHtcbiAgICAgICAgY29udmVyc2F0aW9uSWQ6IHNlcnZlci5jb252ZXJzYXRpb24uY29udmVyc2F0aW9uSWQsXG4gICAgICAgIHRva2VuOiBzZXJ2ZXIuY29udmVyc2F0aW9uLnRva2VuLFxuICAgICAgICBzdHJlYW1Vcmw6IGNyZWF0ZVN0cmVhbVVybChzdGFydCksXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXNwb25zZTogUGFydGlhbDxBamF4UmVzcG9uc2U+ID0ge1xuICAgICAgICByZXNwb25zZTogY29udmVyc2F0aW9uLFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzcG9uc2UgYXMgQWpheFJlc3BvbnNlO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcigpO1xuICB9KTtcblxuICBjb25zdCBtZXRob2QgPSAodXJsT3JSZXF1ZXN0OiBzdHJpbmcgfCBBamF4UmVxdWVzdCk6IE9ic2VydmFibGU8QWpheFJlc3BvbnNlPiA9PlxuICAgIG5ldyBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4oc3Vic2NyaWJlciA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBzdWJzY3JpYmVyLm5leHQoamF4KHVybE9yUmVxdWVzdCkpO1xuICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgc3Vic2NyaWJlci5lcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgdHlwZSBWYWx1ZVR5cGU8VCwgVj4gPSB7XG4gICAgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBWID8gVFtLXSA6IG5ldmVyO1xuICB9XG5cbiAgdHlwZSBQcm9wZXJ0aWVzID0gVmFsdWVUeXBlPEFqYXhDcmVhdGlvbk1ldGhvZCwgRnVuY3Rpb24+O1xuXG4gIGNvbnN0IHByb3BlcnRpZXM6IFByb3BlcnRpZXMgPSB7XG4gICAgZ2V0OiAodXJsOiBzdHJpbmcsIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICBwb3N0OiAodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICBwdXQ6ICh1cmw6IHN0cmluZywgYm9keT86IGFueSwgaGVhZGVycz86IE9iamVjdCk6IE9ic2VydmFibGU8QWpheFJlc3BvbnNlPiA9PiBub3RJbXBsZW1lbnRlZCgpLFxuICAgIHBhdGNoOiAodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICBkZWxldGU6ICh1cmw6IHN0cmluZywgaGVhZGVycz86IE9iamVjdCk6IE9ic2VydmFibGU8QWpheFJlc3BvbnNlPiA9PiBub3RJbXBsZW1lbnRlZCgpLFxuICAgIGdldEpTT046ICh1cmw6IHN0cmluZywgaGVhZGVycz86IE9iamVjdCkgPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgfTtcblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbihtZXRob2QsIHByb3BlcnRpZXMpO1xufVxuXG4vLyBNT0NLIFdlYlNvY2tldCAodXNlcyBzaGFyZWQgc3RhdGUgaW4gU2VydmVyKVxuXG50eXBlIFdlYlNvY2tldENvbnN0cnVjdG9yID0gdHlwZW9mIFdlYlNvY2tldDtcbnR5cGUgRXZlbnRIYW5kbGVyPEUgZXh0ZW5kcyBFdmVudD4gPSAodGhpczogV2ViU29ja2V0LCBldjogRSkgPT4gYW55O1xuXG5leHBvcnQgY29uc3QgbW9ja1dlYlNvY2tldCA9IChzZXJ2ZXI6IFNlcnZlcik6IFdlYlNvY2tldENvbnN0cnVjdG9yID0+XG4gIGNsYXNzIE1vY2tXZWJTb2NrZXQgaW1wbGVtZW50cyBXZWJTb2NrZXQsIEFjdGl2aXR5U29ja2V0IHtcbiAgICBjb25zdHJ1Y3Rvcih1cmw6IHN0cmluZywgcHJvdG9jb2xzPzogc3RyaW5nIHwgc3RyaW5nW10pIHtcblxuICAgICAgc2VydmVyLnNjaGVkdWxlci5zY2hlZHVsZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVhZHlTdGF0ZSA9IFdlYlNvY2tldC5DT05ORUNUSU5HO1xuICAgICAgICBzZXJ2ZXIuY29udmVyc2F0aW9uLnNvY2tldHMuYWRkKHRoaXMpO1xuICAgICAgICB0aGlzLm9ub3BlbihuZXcgRXZlbnQoJ29wZW4nKSk7XG4gICAgICAgIHRoaXMucmVhZHlTdGF0ZSA9IFdlYlNvY2tldC5PUEVOO1xuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHVybCk7XG4gICAgICAgIGNvbnN0IHdhdGVybWFyayA9IHVyaS5zZWFyY2hQYXJhbXMuZ2V0KGtleVdhdGVybWFyaylcbiAgICAgICAgaWYgKHdhdGVybWFyayAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gTnVtYmVyLnBhcnNlSW50KHdhdGVybWFyaywgMTApO1xuICAgICAgICAgIHRoaXMucGxheShzdGFydCwgc2VydmVyLmNvbnZlcnNhdGlvbi5oaXN0b3J5Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHBsYXkoc3RhcnQ6IG51bWJlciwgYWZ0ZXI6IG51bWJlcikge1xuXG4gICAgICBjb25zdCB7IGNvbnZlcnNhdGlvbjogeyBoaXN0b3J5IH0gfSA9IHNlcnZlcjtcbiAgICAgIGNvbnN0IGFjdGl2aXRpZXMgPSBoaXN0b3J5LnNsaWNlKHN0YXJ0LCBhZnRlcik7XG4gICAgICBjb25zdCB3YXRlcm1hcmsgPSBoaXN0b3J5Lmxlbmd0aC50b1N0cmluZygpO1xuICAgICAgY29uc3QgYWN0aXZpdHlHcm91cDogRGlyZWN0TGluZUV4cG9ydC5BY3Rpdml0eUdyb3VwID0ge1xuICAgICAgICBhY3Rpdml0aWVzLFxuICAgICAgICB3YXRlcm1hcmssXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgTWVzc2FnZUV2ZW50KCd0eXBlJywgeyBkYXRhOiBKU09OLnN0cmluZ2lmeShhY3Rpdml0eUdyb3VwKSB9KTtcblxuICAgICAgdGhpcy5vbm1lc3NhZ2UobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgYmluYXJ5VHlwZTogQmluYXJ5VHlwZSA9ICdhcnJheWJ1ZmZlcic7XG4gICAgcmVhZG9ubHkgYnVmZmVyZWRBbW91bnQ6IG51bWJlciA9IDA7XG4gICAgcmVhZG9ubHkgZXh0ZW5zaW9uczogc3RyaW5nID0gJyc7XG4gICAgcmVhZG9ubHkgcHJvdG9jb2w6IHN0cmluZyA9ICdodHRwcyc7XG4gICAgcmVhZHlTdGF0ZTogbnVtYmVyID0gV2ViU29ja2V0LkNMT1NFRDtcbiAgICByZWFkb25seSB1cmw6IHN0cmluZyA9ICcnO1xuICAgIHJlYWRvbmx5IENMT1NFRDogbnVtYmVyID0gV2ViU29ja2V0LkNMT1NFRDtcbiAgICByZWFkb25seSBDTE9TSU5HOiBudW1iZXIgPSBXZWJTb2NrZXQuQ0xPU0lORztcbiAgICByZWFkb25seSBDT05ORUNUSU5HOiBudW1iZXIgPSBXZWJTb2NrZXQuQ09OTkVDVElORztcbiAgICByZWFkb25seSBPUEVOOiBudW1iZXIgPSBXZWJTb2NrZXQuT1BFTjtcblxuICAgIG9uY2xvc2U6IEV2ZW50SGFuZGxlcjxDbG9zZUV2ZW50PjtcbiAgICBvbmVycm9yOiBFdmVudEhhbmRsZXI8RXZlbnQ+O1xuICAgIG9ubWVzc2FnZTogRXZlbnRIYW5kbGVyPE1lc3NhZ2VFdmVudD47XG4gICAgb25vcGVuOiBFdmVudEhhbmRsZXI8RXZlbnQ+O1xuXG4gICAgY2xvc2UoY29kZT86IG51bWJlciwgcmVhc29uPzogc3RyaW5nKTogdm9pZCB7XG4gICAgICB0aGlzLnJlYWR5U3RhdGUgPSBXZWJTb2NrZXQuQ0xPU0lORztcbiAgICAgIHRoaXMub25jbG9zZShuZXcgQ2xvc2VFdmVudCgnY2xvc2UnKSlcbiAgICAgIHNlcnZlci5jb252ZXJzYXRpb24uc29ja2V0cy5kZWxldGUodGhpcyk7XG4gICAgICB0aGlzLnJlYWR5U3RhdGUgPSBXZWJTb2NrZXQuQ0xPU0VEO1xuICAgIH1cblxuICAgIHNlbmQoZGF0YTogc3RyaW5nIHwgQXJyYXlCdWZmZXJMaWtlIHwgQmxvYiB8IEFycmF5QnVmZmVyVmlldyk6IHZvaWQge1xuICAgIH1cblxuICAgIGFkZEV2ZW50TGlzdGVuZXIoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9XG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcigpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH1cbiAgICBkaXNwYXRjaEV2ZW50KCk6IGJvb2xlYW4geyB0aHJvdyBuZXcgRXJyb3IoKTsgfVxuXG4gICAgc3RhdGljIENMT1NFRCA9IFdlYlNvY2tldC5DTE9TRUQ7XG4gICAgc3RhdGljIENMT1NJTkcgPSBXZWJTb2NrZXQuQ0xPU0lORztcbiAgICBzdGF0aWMgQ09OTkVDVElORyA9IFdlYlNvY2tldC5DT05ORUNUSU5HO1xuICAgIHN0YXRpYyBPUEVOID0gV2ViU29ja2V0Lk9QRU47XG4gIH07XG5cbi8vIE1PQ0sgc2VydmljZXMgKHRvcC1sZXZlbCBhZ2dyZWdhdGlvbiBvZiBhbGwgbW9ja3MpXG5cbmV4cG9ydCBjb25zdCBtb2NrU2VydmljZXMgPSAoc2VydmVyOiBTZXJ2ZXIsIHNjaGVkdWxlcjogVGVzdFNjaGVkdWxlcik6IERpcmVjdExpbmVFeHBvcnQuU2VydmljZXMgPT4gKHtcbiAgc2NoZWR1bGVyLFxuICBXZWJTb2NrZXQ6IG1vY2tXZWJTb2NrZXQoc2VydmVyKSxcbiAgYWpheDogbW9ja0FqYXgoc2VydmVyKSxcbiAgcmFuZG9tOiAoKSA9PiAwLFxufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFDQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxJQUFBLEdBQUFELE9BQUE7QUFBMkMsU0FBQUUs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
|
|
282
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcnhqcyIsInJlcXVpcmUiLCJfdXJsIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJyIiwiZSIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJub3RJbXBsZW1lbnRlZCIsIkVycm9yIiwibW9ja0FjdGl2aXR5IiwiZXhwb3J0cyIsInRleHQiLCJ0eXBlIiwiaWQiLCJ0b2tlblByZWZpeCIsIm1vY2tTZXJ2ZXIiLCJzY2hlZHVsZXIiLCJjb252ZXJzYXRpb24iLCJzb2NrZXRzIiwiU2V0IiwiY29udmVyc2F0aW9uSWQiLCJoaXN0b3J5IiwidG9rZW4iLCJ0b2tlblJlc3BvbnNlIiwic2VydmVyIiwicmVxdWVzdCIsImhlYWRlcnMiLCJhdXRob3JpemF0aW9uIiwiY29uY2F0IiwicmVzcG9uc2UiLCJzdGF0dXMiLCJpbmplY3RDbG9zZSIsImZvckVhY2giLCJvbmNsb3NlIiwiQ2xvc2VFdmVudCIsImluamVjdE5ld1Rva2VuIiwic3VmZml4IiwiTnVtYmVyIiwicGFyc2VJbnQiLCJzdWJzdHJpbmciLCJrZXlXYXRlcm1hcmsiLCJtb2NrQWpheCIsImN1c3RvbUFqYXgiLCJ1cmlCYXNlIiwiVVJMIiwiY3JlYXRlU3RyZWFtVXJsIiwid2F0ZXJtYXJrIiwidXJpIiwicGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwiYXBwZW5kIiwic2VhcmNoIiwiamF4IiwidXJsT3JSZXF1ZXN0IiwidXJsIiwicGF0aG5hbWUiLCJzZWFyY2hQYXJhbXMiLCJwYXJ0cyIsInNwbGl0Iiwic3RyZWFtVXJsIiwicmVzcG9uc2VUb2tlbiIsImFjdGl2aXR5IiwiYm9keSIsImFmdGVyIiwicHVzaCIsInN0YXJ0IiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJzb2NrZXQiLCJwbGF5IiwiZXJyIiwiZ2V0IiwibWV0aG9kIiwiT2JzZXJ2YWJsZSIsInN1YnNjcmliZXIiLCJjb21wbGV0ZSIsImVycm9yIiwicHJvcGVydGllcyIsInBvc3QiLCJwdXQiLCJwYXRjaCIsImRlbGV0ZSIsImdldEpTT04iLCJPYmplY3QiLCJhc3NpZ24iLCJtb2NrV2ViU29ja2V0IiwiX01vY2tXZWJTb2NrZXQiLCJNb2NrV2ViU29ja2V0IiwicHJvdG9jb2xzIiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2RlZmluZVByb3BlcnR5MiIsIldlYlNvY2tldCIsIkNMT1NFRCIsIkNMT1NJTkciLCJDT05ORUNUSU5HIiwiT1BFTiIsInNjaGVkdWxlIiwicmVhZHlTdGF0ZSIsImFkZCIsIm9ub3BlbiIsIkV2ZW50IiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsImFjdGl2aXRpZXMiLCJhY3Rpdml0eUdyb3VwIiwibWVzc2FnZSIsIk1lc3NhZ2VFdmVudCIsImRhdGEiLCJKU09OIiwic3RyaW5naWZ5Iiwib25tZXNzYWdlIiwiY2xvc2UiLCJjb2RlIiwicmVhc29uIiwic2VuZCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZGlzcGF0Y2hFdmVudCIsIm1vY2tTZXJ2aWNlcyIsImFqYXgiLCJyYW5kb20iXSwic291cmNlcyI6WyIuLi9zcmMvZGlyZWN0TGluZS5tb2NrLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIERpcmVjdExpbmVFeHBvcnQgZnJvbSBcIi4vZGlyZWN0TGluZVwiO1xuaW1wb3J0IHsgVGVzdFNjaGVkdWxlciwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBBamF4Q3JlYXRpb25NZXRob2QsIEFqYXhSZXF1ZXN0LCBBamF4UmVzcG9uc2UgfSBmcm9tIFwicnhqcy9vYnNlcnZhYmxlL2RvbS9BamF4T2JzZXJ2YWJsZVwiO1xuaW1wb3J0IHsgVVJMLCBVUkxTZWFyY2hQYXJhbXMgfSBmcm9tICd1cmwnO1xuXG4vLyBNT0NLIGhlbHBlcnNcblxuY29uc3Qgbm90SW1wbGVtZW50ZWQgPSAoKTogbmV2ZXIgPT4geyB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpIH07XG5cbi8vIE1PQ0sgQWN0aXZpdHlcblxuZXhwb3J0IGNvbnN0IG1vY2tBY3Rpdml0eSA9ICh0ZXh0OiBzdHJpbmcpOiBEaXJlY3RMaW5lRXhwb3J0LkFjdGl2aXR5ID0+ICh7IHR5cGU6ICdtZXNzYWdlJywgZnJvbTogeyBpZDogJ3NlbmRlcicgfSwgdGV4dCB9KTtcblxuLy8gTU9DSyBEaXJlY3RMaW5lIFNlcnZlciAoc2hhcmVkIHN0YXRlIHVzZWQgYnkgT2JzZXJ2YWJsZS5hamF4IGFuZCBXZWJTb2NrZXQgbW9ja3MpXG5cbmludGVyZmFjZSBBY3Rpdml0eVNvY2tldCB7XG4gIHBsYXk6IChzdGFydDogbnVtYmVyLCBhZnRlcjogbnVtYmVyKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBTb2NrZXQgPSBXZWJTb2NrZXQgJiBBY3Rpdml0eVNvY2tldDtcblxuZXhwb3J0IGludGVyZmFjZSBDb252ZXJzYXRpb24ge1xuICBzb2NrZXRzOiBTZXQ8U29ja2V0PjtcbiAgY29udmVyc2F0aW9uSWQ6IHN0cmluZztcbiAgaGlzdG9yeTogQXJyYXk8RGlyZWN0TGluZUV4cG9ydC5BY3Rpdml0eT47XG4gIHRva2VuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyIHtcbiAgc2NoZWR1bGVyOiBUZXN0U2NoZWR1bGVyO1xuICBjb252ZXJzYXRpb246IENvbnZlcnNhdGlvbjtcbn1cblxuY29uc3QgdG9rZW5QcmVmaXggPSAndG9rZW4nO1xuXG5leHBvcnQgY29uc3QgbW9ja1NlcnZlciA9IChzY2hlZHVsZXI6IFRlc3RTY2hlZHVsZXIpOiBTZXJ2ZXIgPT4gKHtcbiAgc2NoZWR1bGVyLFxuICBjb252ZXJzYXRpb246IHtcbiAgICBzb2NrZXRzOiBuZXcgU2V0PFNvY2tldD4oKSxcbiAgICBjb252ZXJzYXRpb25JZDogJ09uZUNvbnZlcnNhdGlvbicsXG4gICAgaGlzdG9yeTogW10sXG4gICAgdG9rZW46IHRva2VuUHJlZml4ICsgJzEnLFxuICB9XG59KTtcblxuY29uc3QgdG9rZW5SZXNwb25zZSA9IChzZXJ2ZXI6IFNlcnZlciwgcmVxdWVzdDogQWpheFJlcXVlc3QpOiBBamF4UmVzcG9uc2UgfCBudWxsID0+IHtcbiAgY29uc3QgeyBoZWFkZXJzIH0gPSByZXF1ZXN0O1xuICBjb25zdCBhdXRob3JpemF0aW9uID0gaGVhZGVyc1snQXV0aG9yaXphdGlvbiddO1xuICBpZiAoYXV0aG9yaXphdGlvbiA9PT0gYEJlYXJlciAke3NlcnZlci5jb252ZXJzYXRpb24udG9rZW59YCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgcmVzcG9uc2U6IFBhcnRpYWw8QWpheFJlc3BvbnNlPiA9IHtcbiAgICBzdGF0dXM6IDQwMyxcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZSBhcyBBamF4UmVzcG9uc2U7XG59XG5cbmV4cG9ydCBjb25zdCBpbmplY3RDbG9zZSA9IChzZXJ2ZXI6IFNlcnZlcik6IHZvaWQgPT5cbiAgc2VydmVyLmNvbnZlcnNhdGlvbi5zb2NrZXRzLmZvckVhY2gocyA9PiBzLm9uY2xvc2UobmV3IENsb3NlRXZlbnQoJ2Nsb3NlJykpKTtcblxuZXhwb3J0IGNvbnN0IGluamVjdE5ld1Rva2VuID0gKHNlcnZlcjogU2VydmVyKTogdm9pZCA9PiB7XG4gIGNvbnN0IHsgY29udmVyc2F0aW9uIH0gPSBzZXJ2ZXI7XG4gIGNvbnN0IHN1ZmZpeCA9IE51bWJlci5wYXJzZUludChjb252ZXJzYXRpb24udG9rZW4uc3Vic3RyaW5nKHRva2VuUHJlZml4Lmxlbmd0aCksIDEwKSArIDFcbiAgY29udmVyc2F0aW9uLnRva2VuID0gdG9rZW5QcmVmaXggKyBzdWZmaXg7XG59XG5cbmNvbnN0IGtleVdhdGVybWFyayA9ICd3YXRlcm1hcmsnO1xuXG50eXBlIGFqYXhUeXBlID0gKHVybE9yUmVxdWVzdDogc3RyaW5nIHwgQWpheFJlcXVlc3QpID0+IEFqYXhSZXNwb25zZTtcblxuLy8gTU9DSyBPYnNlcnZhYmxlLmFqYXggKHVzZXMgc2hhcmVkIHN0YXRlIGluIFNlcnZlcilcblxuZXhwb3J0IGNvbnN0IG1vY2tBamF4ID0gKHNlcnZlcjogU2VydmVyLCBjdXN0b21BamF4PzogYWpheFR5cGUpOiBBamF4Q3JlYXRpb25NZXRob2QgPT4ge1xuXG4gIGNvbnN0IHVyaUJhc2UgPSBuZXcgVVJMKCdodHRwczovL2RpcmVjdGxpbmUuYm90ZnJhbWV3b3JrLmNvbS92My9kaXJlY3RsaW5lLycpO1xuICBjb25zdCBjcmVhdGVTdHJlYW1VcmwgPSAod2F0ZXJtYXJrOiBudW1iZXIpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwoJ2NvbnZlcnNhdGlvbnMvc3RyZWFtJywgdXJpQmFzZSk7XG4gICAgaWYgKHdhdGVybWFyayA+IDApIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgIHBhcmFtcy5hcHBlbmQoa2V5V2F0ZXJtYXJrLCB3YXRlcm1hcmsudG9TdHJpbmcoMTApKTtcbiAgICAgIHVyaS5zZWFyY2ggPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXJpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBjb25zdCBqYXggPSBjdXN0b21BamF4IHx8ICgodXJsT3JSZXF1ZXN0OiBzdHJpbmcgfCBBamF4UmVxdWVzdCk6IEFqYXhSZXNwb25zZSA9PiB7XG4gICAgaWYgKHR5cGVvZiB1cmxPclJlcXVlc3QgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHVybE9yUmVxdWVzdC51cmwpO1xuXG4gICAgY29uc3QgeyBwYXRobmFtZSwgc2VhcmNoUGFyYW1zIH0gPSB1cmk7XG5cbiAgICBjb25zdCBwYXJ0cyA9IHBhdGhuYW1lLnNwbGl0KCcvJyk7XG5cbiAgICBpZiAocGFydHNbM10gPT09ICd0b2tlbnMnICYmIHBhcnRzWzRdID09PSAncmVmcmVzaCcpIHtcblxuICAgICAgY29uc3QgcmVzcG9uc2U6IFBhcnRpYWw8QWpheFJlc3BvbnNlPiA9IHtcbiAgICAgICAgcmVzcG9uc2U6IHsgdG9rZW46IHNlcnZlci5jb252ZXJzYXRpb24udG9rZW4gfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlIGFzIEFqYXhSZXNwb25zZTtcbiAgICB9XG5cbiAgICBpZiAocGFydHNbM10gIT09ICdjb252ZXJzYXRpb25zJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgfVxuXG4gICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gNCkge1xuICAgICAgY29uc3QgY29udmVyc2F0aW9uOiBEaXJlY3RMaW5lRXhwb3J0LkNvbnZlcnNhdGlvbiA9IHtcbiAgICAgICAgY29udmVyc2F0aW9uSWQ6IHNlcnZlci5jb252ZXJzYXRpb24uY29udmVyc2F0aW9uSWQsXG4gICAgICAgIHRva2VuOiBzZXJ2ZXIuY29udmVyc2F0aW9uLnRva2VuLFxuICAgICAgICBzdHJlYW1Vcmw6IGNyZWF0ZVN0cmVhbVVybCgwKSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBQYXJ0aWFsPEFqYXhSZXNwb25zZT4gPSB7XG4gICAgICAgIHJlc3BvbnNlOiBjb252ZXJzYXRpb24sXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNwb25zZSBhcyBBamF4UmVzcG9uc2U7XG4gICAgfVxuXG4gICAgaWYgKHBhcnRzWzRdICE9PSBzZXJ2ZXIuY29udmVyc2F0aW9uLmNvbnZlcnNhdGlvbklkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICB9XG5cbiAgICBpZiAocGFydHNbNV0gPT09ICdhY3Rpdml0aWVzJykge1xuICAgICAgY29uc3QgcmVzcG9uc2VUb2tlbiA9IHRva2VuUmVzcG9uc2Uoc2VydmVyLCB1cmxPclJlcXVlc3QpO1xuICAgICAgaWYgKHJlc3BvbnNlVG9rZW4gIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlVG9rZW47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFjdGl2aXR5OiBEaXJlY3RMaW5lRXhwb3J0LkFjdGl2aXR5ID0gdXJsT3JSZXF1ZXN0LmJvZHk7XG5cbiAgICAgIGNvbnN0IGFmdGVyID0gc2VydmVyLmNvbnZlcnNhdGlvbi5oaXN0b3J5LnB1c2goYWN0aXZpdHkpO1xuICAgICAgY29uc3Qgc3RhcnQgPSBhZnRlciAtIDE7XG5cbiAgICAgIGZvciAoY29uc3Qgc29ja2V0IG9mIHNlcnZlci5jb252ZXJzYXRpb24uc29ja2V0cykge1xuICAgICAgICBzb2NrZXQucGxheShzdGFydCwgYWZ0ZXIpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNwb25zZTogUGFydGlhbDxBamF4UmVzcG9uc2U+ID0ge1xuICAgICAgICByZXNwb25zZTogeyBpZDogJ21lc3NhZ2VJZCcgfSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3BvbnNlIGFzIEFqYXhSZXNwb25zZTtcbiAgICB9XG4gICAgZWxzZSBpZiAocGFydHMubGVuZ3RoID09PSA1KSB7XG4gICAgICBjb25zdCByZXNwb25zZVRva2VuID0gdG9rZW5SZXNwb25zZShzZXJ2ZXIsIHVybE9yUmVxdWVzdCk7XG4gICAgICBpZiAocmVzcG9uc2VUb2tlbiAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VUb2tlbjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgd2F0ZXJtYXJrID0gc2VhcmNoUGFyYW1zLmdldCgnd2F0ZXJtYXJrJyk7XG4gICAgICBjb25zdCBzdGFydCA9IE51bWJlci5wYXJzZUludCh3YXRlcm1hcmssIDEwKTtcblxuICAgICAgY29uc3QgY29udmVyc2F0aW9uOiBEaXJlY3RMaW5lRXhwb3J0LkNvbnZlcnNhdGlvbiA9IHtcbiAgICAgICAgY29udmVyc2F0aW9uSWQ6IHNlcnZlci5jb252ZXJzYXRpb24uY29udmVyc2F0aW9uSWQsXG4gICAgICAgIHRva2VuOiBzZXJ2ZXIuY29udmVyc2F0aW9uLnRva2VuLFxuICAgICAgICBzdHJlYW1Vcmw6IGNyZWF0ZVN0cmVhbVVybChzdGFydCksXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXNwb25zZTogUGFydGlhbDxBamF4UmVzcG9uc2U+ID0ge1xuICAgICAgICByZXNwb25zZTogY29udmVyc2F0aW9uLFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzcG9uc2UgYXMgQWpheFJlc3BvbnNlO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcigpO1xuICB9KTtcblxuICBjb25zdCBtZXRob2QgPSAodXJsT3JSZXF1ZXN0OiBzdHJpbmcgfCBBamF4UmVxdWVzdCk6IE9ic2VydmFibGU8QWpheFJlc3BvbnNlPiA9PlxuICAgIG5ldyBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4oc3Vic2NyaWJlciA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBzdWJzY3JpYmVyLm5leHQoamF4KHVybE9yUmVxdWVzdCkpO1xuICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgc3Vic2NyaWJlci5lcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgdHlwZSBWYWx1ZVR5cGU8VCwgVj4gPSB7XG4gICAgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBWID8gVFtLXSA6IG5ldmVyO1xuICB9XG5cbiAgdHlwZSBQcm9wZXJ0aWVzID0gVmFsdWVUeXBlPEFqYXhDcmVhdGlvbk1ldGhvZCwgRnVuY3Rpb24+O1xuXG4gIGNvbnN0IHByb3BlcnRpZXM6IFByb3BlcnRpZXMgPSB7XG4gICAgZ2V0OiAodXJsOiBzdHJpbmcsIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICBwb3N0OiAodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICBwdXQ6ICh1cmw6IHN0cmluZywgYm9keT86IGFueSwgaGVhZGVycz86IE9iamVjdCk6IE9ic2VydmFibGU8QWpheFJlc3BvbnNlPiA9PiBub3RJbXBsZW1lbnRlZCgpLFxuICAgIHBhdGNoOiAodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICBkZWxldGU6ICh1cmw6IHN0cmluZywgaGVhZGVycz86IE9iamVjdCk6IE9ic2VydmFibGU8QWpheFJlc3BvbnNlPiA9PiBub3RJbXBsZW1lbnRlZCgpLFxuICAgIGdldEpTT046ICh1cmw6IHN0cmluZywgaGVhZGVycz86IE9iamVjdCkgPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgfTtcblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbihtZXRob2QsIHByb3BlcnRpZXMpO1xufVxuXG4vLyBNT0NLIFdlYlNvY2tldCAodXNlcyBzaGFyZWQgc3RhdGUgaW4gU2VydmVyKVxuXG50eXBlIFdlYlNvY2tldENvbnN0cnVjdG9yID0gdHlwZW9mIFdlYlNvY2tldDtcbnR5cGUgRXZlbnRIYW5kbGVyPEUgZXh0ZW5kcyBFdmVudD4gPSAodGhpczogV2ViU29ja2V0LCBldjogRSkgPT4gYW55O1xuXG5leHBvcnQgY29uc3QgbW9ja1dlYlNvY2tldCA9IChzZXJ2ZXI6IFNlcnZlcik6IFdlYlNvY2tldENvbnN0cnVjdG9yID0+XG4gIGNsYXNzIE1vY2tXZWJTb2NrZXQgaW1wbGVtZW50cyBXZWJTb2NrZXQsIEFjdGl2aXR5U29ja2V0IHtcbiAgICBjb25zdHJ1Y3Rvcih1cmw6IHN0cmluZywgcHJvdG9jb2xzPzogc3RyaW5nIHwgc3RyaW5nW10pIHtcblxuICAgICAgc2VydmVyLnNjaGVkdWxlci5zY2hlZHVsZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVhZHlTdGF0ZSA9IFdlYlNvY2tldC5DT05ORUNUSU5HO1xuICAgICAgICBzZXJ2ZXIuY29udmVyc2F0aW9uLnNvY2tldHMuYWRkKHRoaXMpO1xuICAgICAgICB0aGlzLm9ub3BlbihuZXcgRXZlbnQoJ29wZW4nKSk7XG4gICAgICAgIHRoaXMucmVhZHlTdGF0ZSA9IFdlYlNvY2tldC5PUEVOO1xuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHVybCk7XG4gICAgICAgIGNvbnN0IHdhdGVybWFyayA9IHVyaS5zZWFyY2hQYXJhbXMuZ2V0KGtleVdhdGVybWFyaylcbiAgICAgICAgaWYgKHdhdGVybWFyayAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gTnVtYmVyLnBhcnNlSW50KHdhdGVybWFyaywgMTApO1xuICAgICAgICAgIHRoaXMucGxheShzdGFydCwgc2VydmVyLmNvbnZlcnNhdGlvbi5oaXN0b3J5Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHBsYXkoc3RhcnQ6IG51bWJlciwgYWZ0ZXI6IG51bWJlcikge1xuXG4gICAgICBjb25zdCB7IGNvbnZlcnNhdGlvbjogeyBoaXN0b3J5IH0gfSA9IHNlcnZlcjtcbiAgICAgIGNvbnN0IGFjdGl2aXRpZXMgPSBoaXN0b3J5LnNsaWNlKHN0YXJ0LCBhZnRlcik7XG4gICAgICBjb25zdCB3YXRlcm1hcmsgPSBoaXN0b3J5Lmxlbmd0aC50b1N0cmluZygpO1xuICAgICAgY29uc3QgYWN0aXZpdHlHcm91cDogRGlyZWN0TGluZUV4cG9ydC5BY3Rpdml0eUdyb3VwID0ge1xuICAgICAgICBhY3Rpdml0aWVzLFxuICAgICAgICB3YXRlcm1hcmssXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgTWVzc2FnZUV2ZW50KCd0eXBlJywgeyBkYXRhOiBKU09OLnN0cmluZ2lmeShhY3Rpdml0eUdyb3VwKSB9KTtcblxuICAgICAgdGhpcy5vbm1lc3NhZ2UobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgYmluYXJ5VHlwZTogQmluYXJ5VHlwZSA9ICdhcnJheWJ1ZmZlcic7XG4gICAgcmVhZG9ubHkgYnVmZmVyZWRBbW91bnQ6IG51bWJlciA9IDA7XG4gICAgcmVhZG9ubHkgZXh0ZW5zaW9uczogc3RyaW5nID0gJyc7XG4gICAgcmVhZG9ubHkgcHJvdG9jb2w6IHN0cmluZyA9ICdodHRwcyc7XG4gICAgcmVhZHlTdGF0ZTogbnVtYmVyID0gV2ViU29ja2V0LkNMT1NFRDtcbiAgICByZWFkb25seSB1cmw6IHN0cmluZyA9ICcnO1xuICAgIHJlYWRvbmx5IENMT1NFRDogbnVtYmVyID0gV2ViU29ja2V0LkNMT1NFRDtcbiAgICByZWFkb25seSBDTE9TSU5HOiBudW1iZXIgPSBXZWJTb2NrZXQuQ0xPU0lORztcbiAgICByZWFkb25seSBDT05ORUNUSU5HOiBudW1iZXIgPSBXZWJTb2NrZXQuQ09OTkVDVElORztcbiAgICByZWFkb25seSBPUEVOOiBudW1iZXIgPSBXZWJTb2NrZXQuT1BFTjtcblxuICAgIG9uY2xvc2U6IEV2ZW50SGFuZGxlcjxDbG9zZUV2ZW50PjtcbiAgICBvbmVycm9yOiBFdmVudEhhbmRsZXI8RXZlbnQ+O1xuICAgIG9ubWVzc2FnZTogRXZlbnRIYW5kbGVyPE1lc3NhZ2VFdmVudD47XG4gICAgb25vcGVuOiBFdmVudEhhbmRsZXI8RXZlbnQ+O1xuXG4gICAgY2xvc2UoY29kZT86IG51bWJlciwgcmVhc29uPzogc3RyaW5nKTogdm9pZCB7XG4gICAgICB0aGlzLnJlYWR5U3RhdGUgPSBXZWJTb2NrZXQuQ0xPU0lORztcbiAgICAgIHRoaXMub25jbG9zZShuZXcgQ2xvc2VFdmVudCgnY2xvc2UnKSlcbiAgICAgIHNlcnZlci5jb252ZXJzYXRpb24uc29ja2V0cy5kZWxldGUodGhpcyk7XG4gICAgICB0aGlzLnJlYWR5U3RhdGUgPSBXZWJTb2NrZXQuQ0xPU0VEO1xuICAgIH1cblxuICAgIHNlbmQoZGF0YTogc3RyaW5nIHwgQXJyYXlCdWZmZXJMaWtlIHwgQmxvYiB8IEFycmF5QnVmZmVyVmlldyk6IHZvaWQge1xuICAgIH1cblxuICAgIGFkZEV2ZW50TGlzdGVuZXIoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9XG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcigpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH1cbiAgICBkaXNwYXRjaEV2ZW50KCk6IGJvb2xlYW4geyB0aHJvdyBuZXcgRXJyb3IoKTsgfVxuXG4gICAgc3RhdGljIENMT1NFRCA9IFdlYlNvY2tldC5DTE9TRUQ7XG4gICAgc3RhdGljIENMT1NJTkcgPSBXZWJTb2NrZXQuQ0xPU0lORztcbiAgICBzdGF0aWMgQ09OTkVDVElORyA9IFdlYlNvY2tldC5DT05ORUNUSU5HO1xuICAgIHN0YXRpYyBPUEVOID0gV2ViU29ja2V0Lk9QRU47XG4gIH07XG5cbi8vIE1PQ0sgc2VydmljZXMgKHRvcC1sZXZlbCBhZ2dyZWdhdGlvbiBvZiBhbGwgbW9ja3MpXG5cbmV4cG9ydCBjb25zdCBtb2NrU2VydmljZXMgPSAoc2VydmVyOiBTZXJ2ZXIsIHNjaGVkdWxlcjogVGVzdFNjaGVkdWxlcik6IERpcmVjdExpbmVFeHBvcnQuU2VydmljZXMgPT4gKHtcbiAgc2NoZWR1bGVyLFxuICBXZWJTb2NrZXQ6IG1vY2tXZWJTb2NrZXQoc2VydmVyKSxcbiAgYWpheDogbW9ja0FqYXgoc2VydmVyKSxcbiAgcmFuZG9tOiAoKSA9PiAwLFxufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFDQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxJQUFBLEdBQUFELE9BQUE7QUFBMkMsU0FBQUUsMkJBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLHlCQUFBQyxNQUFBLElBQUFILENBQUEsQ0FBQUcsTUFBQSxDQUFBQyxRQUFBLEtBQUFK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
|