@kontur.candy/tools 2.132.0 → 2.133.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 +8 -0
- package/distr/Common/CandyApiClient/CandyApiClient.js +49 -5
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js +19 -1
- package/distr/Common/CandyApiClient/Types/Staff/EmployeeInfo.js +6 -0
- package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesRequest.js +6 -0
- package/distr/Common/CandyApiClient/Types/Staff/StaffInfo.js +6 -0
- package/distr/Common/Enums/ButtonSettingsTypeEnum.js +2 -2
- package/distr/Common/HttpClient/HttpClient.js +2 -2
- package/distr/Common/UseTypedSelector.js +12 -0
- package/distr/Tools/src/BuildTasks/FSTask.js +20 -1
- package/distr/Tools/src/BuildTasks/ReadFormSource.js +2 -1
- package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +7 -3
- package/distr/Tools/src/CandyCLI.js +2 -2
- package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +65 -55
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +11 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
<a name="2.133.0"></a>
|
|
2
|
+
# [2.133.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.132.0...release/tools/v2.133.0) (2022-10-13)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* **Tools:** добавлен импорт XSLT из папки xsltTemplates ([58b9e46](https://git.skbkontur.ru/ke/candy-utils/commit/58b9e46)), see [#5909](https://yt.skbkontur.ru/issue/FS-5909)
|
|
8
|
+
|
|
1
9
|
<a name="2.132.0"></a>
|
|
2
10
|
# [2.132.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.131.0...release/tools/v2.132.0) (2022-08-26)
|
|
3
11
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.CandyApiDraftClient = exports.CandyApiClient = void 0;
|
|
6
|
+
exports.ServerErrors = exports.CandyApiDraftClient = exports.CandyApiClient = void 0;
|
|
7
7
|
|
|
8
8
|
var _TypingUtils = require("../TypingUtils");
|
|
9
9
|
|
|
@@ -25,6 +25,14 @@ const strangeOptions = {
|
|
|
25
25
|
src: "changeSet",
|
|
26
26
|
dataVersion: "0"
|
|
27
27
|
};
|
|
28
|
+
let ServerErrors;
|
|
29
|
+
exports.ServerErrors = ServerErrors;
|
|
30
|
+
|
|
31
|
+
(function (ServerErrors) {
|
|
32
|
+
ServerErrors["FufSizeTooLarge"] = "FufSizeTooLarge";
|
|
33
|
+
ServerErrors["BadRequest"] = "BadRequest";
|
|
34
|
+
ServerErrors["UnknownError"] = "UnknownError";
|
|
35
|
+
})(ServerErrors || (exports.ServerErrors = ServerErrors = {}));
|
|
28
36
|
|
|
29
37
|
class CandyApiClient {
|
|
30
38
|
constructor(fetchImpl, baseUrl, resourceZone, authentication) {
|
|
@@ -166,6 +174,12 @@ class CandyApiDraftClient {
|
|
|
166
174
|
return this.httpClient.get(this.getDraftPresentationUrl(_DraftPresentationType.DraftPresentationType.errorLog)).json();
|
|
167
175
|
}
|
|
168
176
|
|
|
177
|
+
async getErrorLogWithCheckScenarios(checkScenarios) {
|
|
178
|
+
return this.httpClient.post(this.getDraftUrl("errorlog")).withJsonBody({
|
|
179
|
+
checkScenarios: checkScenarios
|
|
180
|
+
}).json();
|
|
181
|
+
}
|
|
182
|
+
|
|
169
183
|
async getTaskById(taskId) {
|
|
170
184
|
var _tasks$;
|
|
171
185
|
|
|
@@ -329,7 +343,7 @@ class CandyApiDraftClient {
|
|
|
329
343
|
const response = await this.httpClient.get(`v1/files/prepare-and-get-properties`).withQueryParams({
|
|
330
344
|
gfv: gfv,
|
|
331
345
|
driveUri: driveUri
|
|
332
|
-
}).acceptCode(
|
|
346
|
+
}).acceptCode(413);
|
|
333
347
|
|
|
334
348
|
if (response.status === 400) {
|
|
335
349
|
return undefined;
|
|
@@ -348,17 +362,43 @@ class CandyApiDraftClient {
|
|
|
348
362
|
return await response.json();
|
|
349
363
|
}
|
|
350
364
|
|
|
365
|
+
async uploadAndGetFileProperties(driveUris, gfv, abortSignal) {
|
|
366
|
+
try {
|
|
367
|
+
const response = await this.httpClient.post(`v1/files/upload-and-get-properties`).withQueryParams({
|
|
368
|
+
gfv: gfv
|
|
369
|
+
}).withJsonBody(driveUris).withAbortSignal(abortSignal).acceptCode(400).acceptCode(413);
|
|
370
|
+
|
|
371
|
+
if (response.status !== 200) {
|
|
372
|
+
const data = await response.json();
|
|
373
|
+
return {
|
|
374
|
+
serverError: data.errorCode,
|
|
375
|
+
invalidSourceDriveContentNames: "",
|
|
376
|
+
sourcesTotalCount: 0
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
const data = await response.json();
|
|
381
|
+
return data;
|
|
382
|
+
} catch (e) {
|
|
383
|
+
return {
|
|
384
|
+
serverError: ServerErrors.UnknownError,
|
|
385
|
+
invalidSourceDriveContentNames: "",
|
|
386
|
+
sourcesTotalCount: 0
|
|
387
|
+
};
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
|
|
351
391
|
async setFufByDriveUri(driveUri) {
|
|
352
392
|
await this.httpClient.put(this.getDraftUrl("set-fuf")).withQueryParams({
|
|
353
393
|
driveUri: driveUri
|
|
354
394
|
});
|
|
355
395
|
}
|
|
356
396
|
|
|
357
|
-
async combineFufByDriveUri(driveUri, combineMethod) {
|
|
397
|
+
async combineFufByDriveUri(driveUri, combineMethod, abortSignal) {
|
|
358
398
|
const response = await this.httpClient.post(this.getDraftUrl("transfer/combine-with-fuf")).withQueryParams({
|
|
359
399
|
fufDriveUri: driveUri,
|
|
360
400
|
combineMethod: combineMethod
|
|
361
|
-
});
|
|
401
|
+
}).withAbortSignal(abortSignal);
|
|
362
402
|
|
|
363
403
|
if (response.status === 400) {
|
|
364
404
|
return undefined;
|
|
@@ -421,7 +461,11 @@ class CandyApiDraftClient {
|
|
|
421
461
|
await this.httpClient.post(this.getDraftUrl("inner/custom-normalize")).withQueryParams(params).withJsonBody(pathPrefixes);
|
|
422
462
|
}
|
|
423
463
|
|
|
464
|
+
async importEmployees(request) {
|
|
465
|
+
await this.httpClient.patch(this.getDraftUrl("staff")).withJsonBody(request);
|
|
466
|
+
}
|
|
467
|
+
|
|
424
468
|
}
|
|
425
469
|
|
|
426
470
|
exports.CandyApiDraftClient = CandyApiDraftClient;
|
|
427
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DYW5keUFwaUNsaWVudC50cyJdLCJuYW1lcyI6WyJzdHJhbmdlT3B0aW9ucyIsInNyYyIsImRhdGFWZXJzaW9uIiwiQ2FuZHlBcGlDbGllbnQiLCJjb25zdHJ1Y3RvciIsImZldGNoSW1wbCIsImJhc2VVcmwiLCJyZXNvdXJjZVpvbmUiLCJhdXRoZW50aWNhdGlvbiIsImh0dHBDbGllbnQiLCJIdHRwQ2xpZW50IiwiZm9yRHJhZnQiLCJkcmFmdEZ1bGxJZCIsIkNhbmR5QXBpRHJhZnRDbGllbnQiLCJjcmVhdGVEaWdlc3RBcGlDbGllbnQiLCJEaWdlc3RBcGlDbGllbnQiLCJnZXRJbmZvQnlJbm5zIiwiaW5ucyIsInBhdGhzIiwibWFwIiwiaW5uIiwicmVzcG9uc2UiLCJwb3N0IiwiZ2V0RHJhZnRVcmwiLCJ3aXRoSnNvbkJvZHkiLCJqc29uIiwicmVzdWx0IiwiaW5uU2VydmVyVmFsdWUiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImVycm9yIiwiZXJyb3JDb2RlIiwiRm9jdXNTZXJ2ZXJFcnJvckNvZGUiLCJOb0lubkVycm9yIiwiZ2V0QWxsR2Z2cyIsImFib3J0U2lnbmFsIiwiYm9keSIsImdldCIsIk9iamVjdCIsImtleXMiLCJmb3JtcyIsImNyZWF0ZURyYWZ0RnJvbURyaXZlIiwibnMiLCJmdWZEcml2ZVVyaSIsIndpdGhRdWVyeVBhcmFtcyIsIndpdGhBYm9ydFNpZ25hbCIsImNyZWF0ZUVtcHR5RHJhZnQiLCJnZnYiLCJjcmVhdGVEcmFmdCIsImZ1ZkNvbnRlbnQiLCJ3aXRoQ29udGVudFR5cGUiLCJ3aXRoQm9keUZyb21CdWZmZXIiLCJCdWZmZXIiLCJmcm9tIiwiRXJyb3IiLCJjaGVja0FsaXZlIiwiZHJhZnRSZWxhdGVkVXJsIiwiZHJhZnRJZCIsImdldEZlYXR1cmVGbGFncyIsImdldEhyZWZUb0lubmVyRWRpdG9yIiwidXJsIiwiZ2V0SHJlZkRvd25sb2FkRnVmIiwiZ2V0SHJlZlRvQ29udmVydGF0aW9uTG9nIiwiZ2V0SHJlZlRvRG93bmxvYWRJbm5lckZ1ZiIsImdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uIiwiRHJhZnRQcmVzZW50YXRpb25UeXBlIiwiaW5uZXJGdWYiLCJnZXRIcmVmVG9Eb3dubG9hZENsaWVudEluZm8iLCJjbGllbnRJbmZvIiwiZ2V0SHJlZlRvRG93bmxvYWRGb3Jtc0NsaWVudEluZm8iLCJmb3Jtc0NsaWVudEluZm8iLCJnZXRIcmVmRG93bmxvYWRJbm5lciIsImlubmVyIiwiZ2V0RXJyb3JMb2ciLCJnZXREcmFmdFByZXNlbnRhdGlvblVybCIsImVycm9yTG9nIiwiZ2V0VGFza0J5SWQiLCJ0YXNrSWQiLCJ0YXNrcyIsImdldEFsbFRhc2tzIiwidmFsdWVzIiwieCIsImVucXVldWVUYXNrIiwidGFza0luZm8iLCJhZGRlZCIsImNoYW5nZWQiLCJpZCIsInJlbW92ZWQiLCJjYW5jZWxUYXNrIiwiZ2V0RXhwZXJ0RXJyb3JMb2ciLCJlcnJvcmxvZ0V4cGVydCIsImdldEhyZWZUb0Vycm9yTG9nUGRmIiwiZXJyb3JMb2dOYW1lIiwicHJvcHNOYW1lIiwicHJvcHNEcml2ZU5hbWUiLCJjbGVhckRyYWZ0IiwiY29udmVydERyYWZ0RnJvbVByZXZHZnYiLCJwcmV2R2Z2RHJhZnRJZCIsInNlbmRDaGFuZ2VTZXQiLCJkYXRhIiwic2VuZENoYW5nZVNldFN5bmMiLCJwb3N0U3luYyIsImdldFJlcXVpc2l0ZXMiLCJyZXF1aXNpdGVMaXN0IiwiZ2V0SW5uZXIiLCJnZXRQYXJ0aWFsSW5uZXIiLCJydWxlcyIsIm1heEluc3RhbmNlQ291bnQiLCJ0b1N0cmluZyIsImdldFBhcnRpYWxJbm5lckFzSnNvblRyZWUiLCJmb3JtYXQiLCJnZXRFeHBsYW5hdG9yeU5vdGUiLCJleHBsYW5hdG9yeU5vdGUiLCJnZXRBdHRhY2htZW50QnlJZCIsImF0dGFjaG1lbnRJZCIsImdldEFsbEF0dGFjaG1lbnRzIiwicmVtb3ZlQXR0YWNobWVudHMiLCJhdHRhY2htZW50SWRzIiwiY3JlYXRlT3JVcGRhdGVBdHRhY2htZW50cyIsImF0dGFjaG1lbnRzIiwiYXR0YWNobWVudCIsImNvbnRlbnRVcmkiLCJtZXRhIiwic2V0UHJlc2VudGF0aW9uIiwicHJlc2VudGF0aW9uVHlwZSIsImNvbnRlbnQiLCJyZXF1ZXN0IiwicHV0Iiwid2l0aFJhd0JvZHkiLCJwYXRjaFByZXNlbnRhdGlvbiIsInByZXNlbnRhdGlvbkNvbnRlbnQiLCJwYXRjaCIsImdldEZpbGVQcm9wZXJ0aWVzIiwiZHJpdmVVcmkiLCJhY2NlcHRDb2RlIiwic3RhdHVzIiwicHJlcGFyZUFuZEdldEZpbGVQcm9wZXJ0aWVzIiwiZXJyb3JEYXRhIiwiRnVmU2l6ZVRvb0xhcmdlRXJyb3IiLCJtZXNzYWdlIiwiSHR0cEVycm9yIiwic2V0RnVmQnlEcml2ZVVyaSIsImNvbWJpbmVGdWZCeURyaXZlVXJpIiwiY29tYmluZU1ldGhvZCIsIm11bHRpcGxlQ29tYmluZUZ1ZkJ5RHJpdmVVcmkiLCJkcml2ZVVyaXMiLCJub3JtYWxpemVCeVJ1bGVzIiwic2V0QWxsQ2hlY2tib3hlc0ZvcjExMzEwMyIsImVuYWJsZWQiLCJ1cmkiLCJzZXRFbmFibGVkIiwic2VhcmNoSW5zdGFuY2VzQnlUZXh0IiwidGV4dCIsInBhdGhzUHJlZml4IiwicGF0aHNUb1NlYXJjaCIsIm1heEluc3RhbmNlQ291bnRQYXJhbXMiLCJwYXJhbXMiLCJzZWFyY2hTdHJpbmciLCJjdXN0b21Ob3JtYWxpemUiLCJub3JtYWxpemVySWQiLCJwYXRoUHJlZml4ZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFFQTs7QUFXQTs7QUFFQTs7QUFRQTs7QUFHQTs7QUFFQTs7QUFFQSxNQUFNQSxjQUFjLEdBQUc7QUFBRUMsRUFBQUEsR0FBRyxFQUFFLFdBQVA7QUFBb0JDLEVBQUFBLFdBQVcsRUFBRTtBQUFqQyxDQUF2Qjs7QUFFTyxNQUFNQyxjQUFOLENBQWdEO0FBRzVDQyxFQUFBQSxXQUFXLENBQ2RDLFNBRGMsRUFFZEMsT0FGYyxFQUdkQyxZ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LFdBRjhCLEVBRzlCQyxhQUg4QixFQUk5Qi9DLGdCQUo4QixFQUtiO0FBQ2pCLFVBQU1nRCxzQkFBc0IsR0FBR2hELGdCQUFnQixJQUFJOUUsU0FBcEIsR0FBZ0M7QUFBRThFLE1BQUFBLGdCQUFnQixFQUFFQTtBQUFwQixLQUFoQyxHQUF5RSxFQUF4RztBQUNBLFVBQU1pRCxNQUFNLEdBQUc7QUFBRUMsTUFBQUEsWUFBWSxFQUFFTCxJQUFoQjtBQUFzQkMsTUFBQUEsV0FBVyxFQUFFQSxXQUFuQztBQUFnRCxTQUFHRTtBQUFuRCxLQUFmO0FBQ0EsV0FBTyxLQUFLbEosVUFBTCxDQUNGYSxJQURFLENBQ0csS0FBS0MsV0FBTCxDQUFpQix3QkFBakIsQ0FESCxFQUVGcUIsZUFGRSxDQUVjZ0gsTUFGZCxFQUdGcEksWUFIRSxDQUdXa0ksYUFIWCxFQUlGakksSUFKRSxFQUFQO0FBS0g7O0FBRTJCLFFBQWZxSSxlQUFlLENBQUNDLFlBQUQsRUFBdUJDLFlBQXZCLEVBQThEO0FBQ3RGLFVBQU1KLE1BQU0sR0FBRztBQUFFRyxNQUFBQSxZQUFZLEVBQUVBO0FBQWhCLEtBQWY7QUFDQSxVQUFNLEtBQUt0SixVQUFMLENBQ0RhLElBREMsQ0FDSSxLQUFLQyxXQUFMLENBQWlCLHdCQUFqQixDQURKLEVBRURxQixlQUZDLENBRWVnSCxNQUZmLEVBR0RwSSxZQUhDLENBR1l3SSxZQUhaLENBQU47QUFJSDs7QUF4VTREIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgeyBGZXRjaCB9IGZyb20gXCIuLi9IdHRwQ2xpZW50L0ZldGNoSW1wbGVtZW50YXRpb24vRmV0Y2hcIjtcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvciB9IGZyb20gXCIuLi9IdHRwQ2xpZW50L0h0dHBDbGllbnRcIjtcbmltcG9ydCB7IEh0dHBTdGF0dXNDb2RlLCBJSHR0cENsaWVudCB9IGZyb20gXCIuLi9IdHRwQ2xpZW50L0lIdHRwQ2xpZW50XCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbk1vZGUsIGNyZWF0ZUF1dGhlbnRpY2F0aW9uUHJvdmlkZXIgfSBmcm9tIFwiLi4vSHR0cENsaWVudC9BdXRoZW50aWNhdGlvbk1vZGVcIjtcblxuaW1wb3J0IHsgSUNhbmR5QXBpQ2xpZW50LCBJQ2FuZHlBcGlEcmFmdENsaWVudCB9IGZyb20gXCIuL0lDYW5keUFwaUNsaWVudFwiO1xuaW1wb3J0IHsgU2VydmVyRXJyb3JMb2cgfSBmcm9tIFwiLi9UeXBlcy9FcnJvckxvZy9TZXJ2ZXJFcnJvckxvZ1wiO1xuaW1wb3J0IHsgU2VydmVySW5uZXJSZXNwb25zZSwgU2VydmVySnNvblJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvR2V0SW5uZXIvU2VydmVySW5uZXJSZXNwb25zZVwiO1xuaW1wb3J0IHsgRmlsZVByb3BlcnRpZXMgfSBmcm9tIFwiLi9UeXBlcy9EcmFmdEFjdGlvbnMvRmlsZVByb3BlcnRpZXNcIjtcbmltcG9ydCB7IENyZWF0ZURyYWZ0UmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9DcmVhdGVEcmFmdC9DcmVhdGVEcmFmdFJlc3BvbnNlXCI7XG5pbXBvcnQgeyBDcmVhdGVFeHBsYW5hdG9yeU5vdGVSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0V4cGxhbmF0b3J5Tm90ZS9DcmVhdGVFeHBsYW5hdG9yeU5vdGVSZXNwb25zZVwiO1xuaW1wb3J0IHsgRHJhZnRGdWxsSWQgfSBmcm9tIFwiLi9UeXBlcy9EcmFmdEZ1bGxJZFwiO1xuaW1wb3J0IHsgU2VydmVyQ2hhbmdlU2V0IH0gZnJvbSBcIi4vVHlwZXMvQ2hhbmdlU2V0L1NlcnZlckNoYW5nZVNldFwiO1xuaW1wb3J0IHsgU2VydmVyVGFzaywgVmVyaWZ5QW5kRml4Rm5zUmVxdWlyZW1lbnRzVGFza0luZm8gfSBmcm9tIFwiLi9UeXBlcy9UYXNrcy9UYXNrc1wiO1xuaW1wb3J0IHsgRm9jdXNTZXJ2ZXJFcnJvckNvZGUsIEdldEJ5SW5uUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9Gb2N1cy9Gb2N1c1R5cGVzXCI7XG5pbXBvcnQgeyBBdHRhY2hJbmZvIH0gZnJvbSBcIi4vVHlwZXMvQXR0YWNobWVudHMvQXR0YWNtZW50c1wiO1xuaW1wb3J0IHsgRHJhZnRQcmVzZW50YXRpb25UeXBlIH0gZnJvbSBcIi4vVHlwZXMvUHJlc2VudGF0aW9ucy9EcmFmdFByZXNlbnRhdGlvblR5cGVcIjtcbmltcG9ydCB7IFByZXNlbnRhdGlvbkNvbnRlbnQgfSBmcm9tIFwiLi9UeXBlcy9QcmVzZW50YXRpb25zL1ByZXNlbnRhdGlvbkNvbnRlbnRcIjtcbmltcG9ydCB7IENvbnZlcnREcmFmdFJlcXVlc3QgfSBmcm9tIFwiLi9UeXBlcy9EcmFmdEFjdGlvbnMvQ29udmVydERyYWZ0UmVxdWVzdFwiO1xuaW1wb3J0IHsgR2V0QXR0YWNobWVudHNSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0F0dGFjaG1lbnRzL0dldEF0dGFjaG1lbnRzUmVzcG9uc2VcIjtcbmltcG9ydCB7IEZvY3VzU2VydmVyUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9Gb2N1cy9Gb2N1c1NlcnZlclJlc3BvbnNlXCI7XG5pbXBvcnQgeyBHZXRUYXNrc1NlcnZlclJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvVGFza3MvR2V0VGFza3NTZXJ2ZXJSZXNwb25zZVwiO1xuaW1wb3J0IHsgRGlhZ1Jlc291cmNlc1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRGlhZ1Jlc291cmNlc1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBTZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9HZXRJbm5lci9TZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2VcIjtcbmltcG9ydCB7IGlzQnVmZmVyIH0gZnJvbSBcIi4vSXNCdWZmZXJcIjtcbmltcG9ydCB7IENvbWJpbmVGdWZSZXN1bHQsIEZ1ZkNvbWJpbmVNZXRob2QgfSBmcm9tIFwiLi9UeXBlcy9EcmFmdEFjdGlvbnMvQ29tYmluZUZ1ZlJlc3VsdFwiO1xuaW1wb3J0IHsgRmVhdHVyZUZsYWdzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9GZWF0dXJlRmxhZ3MvRmVhdHVyZUZsYWdzUmVzcG9uc2VcIjtcbmltcG9ydCB7IERpZ2VzdEFwaUNsaWVudCB9IGZyb20gXCIuL0RpZ2VzdEFwaUNsaWVudC9EaWdlc3RBcGlDbGllbnRcIjtcbmltcG9ydCB7IElEaWdlc3RBcGlDbGllbnQgfSBmcm9tIFwiLi9EaWdlc3RBcGlDbGllbnQvSURpZ2VzdEFwaUNsaWVudFwiO1xuaW1wb3J0IHsgRnVmU2l6ZVRvb0xhcmdlRXJyb3IgfSBmcm9tIFwiLi9UeXBlcy9EcmFmdEFjdGlvbnMvRnVmU2l6ZVRvb0xhcmdlRXJyb3JcIjtcblxuY29uc3Qgc3RyYW5nZU9wdGlvbnMgPSB7IHNyYzogXCJjaGFuZ2VTZXRcIiwgZGF0YVZlcnNpb246IFwiMFwiIH07XG5cbmV4cG9ydCBjbGFzcyBDYW5keUFwaUNsaWVudCBpbXBsZW1lbnRzIElDYW5keUFwaUNsaWVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwQ2xpZW50OiBJSHR0cENsaWVudDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgZmV0Y2hJbXBsOiBGZXRjaCxcbiAgICAgICAgYmFzZVVybDogc3RyaW5nLFxuICAgICAgICByZXNvdXJjZVpvbmU6IHVuZGVmaW5lZCB8IHN0cmluZyxcbiAgICAgICAgYXV0aGVudGljYXRpb246IHVuZGVmaW5lZCB8IEF1dGhlbnRpY2F0aW9uTW9kZVxuICAgICkge1xuICAgICAgICB0aGlzLmh0dHBDbGllbnQgPSBuZXcgSHR0cENsaWVudChmZXRjaEltcGwsIGJhc2VVcmwsIGNyZWF0ZUF1dGhlbnRpY2F0aW9uUHJvdmlkZXIoYXV0aGVudGljYXRpb24pLCB7XG4gICAgICAgICAgICByZXNvdXJjZVpvbmU6IHJlc291cmNlWm9uZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGZvckRyYWZ0KGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZCk6IElDYW5keUFwaURyYWZ0Q2xpZW50IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYW5keUFwaURyYWZ0Q2xpZW50KHRoaXMuaHR0cENsaWVudCwgZHJhZnRGdWxsSWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVEaWdlc3RBcGlDbGllbnQoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkKTogSURpZ2VzdEFwaUNsaWVudCB7XG4gICAgICAgIHJldHVybiBuZXcgRGlnZXN0QXBpQ2xpZW50KHRoaXMuaHR0cENsaWVudCwgZHJhZnRGdWxsSWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRJbmZvQnlJbm5zKGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZCwgaW5uczogcmVhZG9ubHkgc3RyaW5nW10pOiBQcm9taXNlPEdldEJ5SW5uUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcGF0aHMgPSBpbm5zLm1hcChpbm4gPT4gYEBmb2N1cy8ke2lubn1gKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoZHJhZnRGdWxsSWQsIFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShwYXRocylcbiAgICAgICAgICAgIC5qc29uPEZvY3VzU2VydmVyUmVzcG9uc2U+KCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogR2V0QnlJbm5SZXNwb25zZSA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGlubiBvZiBpbm5zKSB7XG4gICAgICAgICAgICBjb25zdCBpbm5TZXJ2ZXJWYWx1ZSA9IHJlc3BvbnNlW2BAZm9jdXMvJHtpbm59YF0/LnZhbHVlO1xuICAgICAgICAgICAgaWYgKGlublNlcnZlclZhbHVlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtpbm5dID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogXCJTZXJ2ZXIgZG9lcyBub3QgcmV0dXJuIGlubiBpbmZvXCIsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yQ29kZTogRm9jdXNTZXJ2ZXJFcnJvckNvZGUuTm9Jbm5FcnJvcixcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbaW5uXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGlublNlcnZlclZhbHVlLnZhbHVlID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JDb2RlOiBpbm5TZXJ2ZXJWYWx1ZS5lcnJvckNvZGUgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogaW5uU2VydmVyVmFsdWUuZXJyb3IgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsR2Z2cyhhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCBib2R5ID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50LmdldChgdjEvZGlhZy9yZXNvdXJjZXNgKS5qc29uPERpYWdSZXNvdXJjZXNSZXNwb25zZT4oKTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGJvZHkuZm9ybXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjcmVhdGVEcmFmdEZyb21Ecml2ZShcbiAgICAgICAgbnM6IHN0cmluZyxcbiAgICAgICAgZnVmRHJpdmVVcmk6IHN0cmluZyxcbiAgICAgICAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbFxuICAgICk6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0LWZyb20tZHJpdmVgKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7XG4gICAgICAgICAgICAgICAgbnM6IG5zLFxuICAgICAgICAgICAgICAgIGZ1ZkRyaXZlVXJpOiBmdWZEcml2ZVVyaSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAud2l0aEFib3J0U2lnbmFsKGFib3J0U2lnbmFsKVxuICAgICAgICAgICAgLmpzb248Q3JlYXRlRHJhZnRSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlRW1wdHlEcmFmdChuczogc3RyaW5nLCBnZnY6IHN0cmluZywgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0YClcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiB9KVxuICAgICAgICAgICAgLndpdGhBYm9ydFNpZ25hbChhYm9ydFNpZ25hbClcbiAgICAgICAgICAgIC5qc29uPENyZWF0ZURyYWZ0UmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZURyYWZ0KG5zOiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPjtcbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiB1bmRlZmluZWQsIGZ1ZkNvbnRlbnQ6IEJ1ZmZlcik6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT47XG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZURyYWZ0KG5zOiBzdHJpbmcsIGdmdjogdW5kZWZpbmVkIHwgc3RyaW5nLCBmdWZDb250ZW50PzogQnVmZmVyKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPiB7XG4gICAgICAgIGlmIChnZnYgPT0gdW5kZWZpbmVkICYmIGZ1ZkNvbnRlbnQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7bnN9L2NyZWF0ZS1kcmFmdGApXG4gICAgICAgICAgICAgICAgLndpdGhDb250ZW50VHlwZShcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiKVxuICAgICAgICAgICAgICAgIC53aXRoQm9keUZyb21CdWZmZXIoZnVmQ29udGVudClcbiAgICAgICAgICAgICAgICAuanNvbjxDcmVhdGVEcmFmdFJlc3BvbnNlPigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChnZnYgIT0gdW5kZWZpbmVkICYmIGZ1ZkNvbnRlbnQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7bnN9L2NyZWF0ZS1kcmFmdGApXG4gICAgICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGdmdjogZ2Z2IH0pXG4gICAgICAgICAgICAgICAgLndpdGhDb250ZW50VHlwZShcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiKVxuICAgICAgICAgICAgICAgIC53aXRoQm9keUZyb21CdWZmZXIoQnVmZmVyLmZyb20oW10pKVxuICAgICAgICAgICAgICAgIC5qc29uPENyZWF0ZURyYWZ0UmVzcG9uc2U+KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGdmdiA9PSB1bmRlZmluZWQgJiYgZnVmQ29udGVudCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBjcmVhdGUgZHJhZnQ6IG5vIGdmdiBhbmQgbm8gZnVmIHNwZWNpZmllZFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0YClcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiB9KVxuICAgICAgICAgICAgLndpdGhDb250ZW50VHlwZShcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiKVxuICAgICAgICAgICAgLndpdGhCb2R5RnJvbUJ1ZmZlcihmdWZDb250ZW50KVxuICAgICAgICAgICAgLmpzb248Q3JlYXRlRHJhZnRSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2hlY2tBbGl2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LmdldChgX3N0YXR1cy9waW5nYCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFVybChkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQsIGRyYWZ0UmVsYXRlZFVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGB2MS9ucy8ke2RyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHtkcmFmdEZ1bGxJZC5kcmFmdElkfS8ke2RyYWZ0UmVsYXRlZFVybH1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRGZWF0dXJlRmxhZ3MoKTogUHJvbWlzZTxGZWF0dXJlRmxhZ3NSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50LmdldChcInYxL2ZlYXR1cmVzL2ZsYWdzXCIpLmpzb248RmVhdHVyZUZsYWdzUmVzcG9uc2U+KCk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2FuZHlBcGlEcmFmdENsaWVudCBpbXBsZW1lbnRzIElDYW5keUFwaURyYWZ0Q2xpZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHBDbGllbnQ6IElIdHRwQ2xpZW50O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGh0dHBDbGllbnQ6IElIdHRwQ2xpZW50LCBkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQpIHtcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50ID0gaHR0cENsaWVudDtcbiAgICAgICAgdGhpcy5kcmFmdEZ1bGxJZCA9IGRyYWZ0RnVsbElkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Jbm5lckVkaXRvcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnVybChgaW5uZXItZWRpdG9yL25zLyR7dGhpcy5kcmFmdEZ1bGxJZC5uc30vZHJhZnRzLyR7dGhpcy5kcmFmdEZ1bGxJZC5kcmFmdElkfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmRG93bmxvYWRGdWYoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC51cmwodGhpcy5nZXREcmFmdFVybChcImdldC1mdWZcIikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Db252ZXJ0YXRpb25Mb2coKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC51cmwodGhpcy5nZXREcmFmdFVybChcImNvbnZlcnNpb25cIikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Eb3dubG9hZElubmVyRnVmKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lckZ1Zik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Rvd25sb2FkQ2xpZW50SW5mbygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRIcmVmRG93bmxvYWREcmFmdFByZXNlbnRhdGlvbihEcmFmdFByZXNlbnRhdGlvblR5cGUuY2xpZW50SW5mbyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Rvd25sb2FkRm9ybXNDbGllbnRJbmZvKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5mb3Jtc0NsaWVudEluZm8pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmRG93bmxvYWRJbm5lcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRIcmVmRG93bmxvYWREcmFmdFByZXNlbnRhdGlvbihEcmFmdFByZXNlbnRhdGlvblR5cGUuaW5uZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRFcnJvckxvZygpOiBQcm9taXNlPFNlcnZlckVycm9yTG9nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmVycm9yTG9nKSkuanNvbjxTZXJ2ZXJFcnJvckxvZz4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0VGFza0J5SWQodGFza0lkOiBzdHJpbmcpOiBQcm9taXNlPFNlcnZlclRhc2sgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgdGFza3MgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KFtgQHRhc2svKmBdKVxuICAgICAgICAgICAgLmpzb248R2V0VGFza3NTZXJ2ZXJSZXNwb25zZT4oKTtcbiAgICAgICAgcmV0dXJuIHRhc2tzW2BAdGFzay8ke3Rhc2tJZH1gXT8udmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFRhc2tzKCk6IFByb21pc2U8U2VydmVyVGFza1tdPiB7XG4gICAgICAgIGNvbnN0IHRhc2tzID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShbYEB0YXNrLypgXSlcbiAgICAgICAgICAgIC5qc29uPEdldFRhc2tzU2VydmVyUmVzcG9uc2U+KCk7XG4gICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRhc2tzKS5tYXAoeCA9PiB4LnZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZW5xdWV1ZVRhc2sodGFza0lkOiBzdHJpbmcsIHRhc2tJbmZvOiBWZXJpZnlBbmRGaXhGbnNSZXF1aXJlbWVudHNUYXNrSW5mbyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoc3RyYW5nZU9wdGlvbnMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHtcbiAgICAgICAgICAgICAgICBhZGRlZDogW10sXG4gICAgICAgICAgICAgICAgY2hhbmdlZDoge1xuICAgICAgICAgICAgICAgICAgICBbYEB0YXNrLyR7dGFza0lkfWBdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50YXNrSW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0YXNrSWQsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByZW1vdmVkOiBbXSxcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjYW5jZWxUYXNrKHRhc2tJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuaW5uZXIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhzdHJhbmdlT3B0aW9ucylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoe1xuICAgICAgICAgICAgICAgIGFkZGVkOiBbXSxcbiAgICAgICAgICAgICAgICBjaGFuZ2VkOiB7fSxcbiAgICAgICAgICAgICAgICByZW1vdmVkOiBbYEB0YXNrLyR7dGFza0lkfWBdLFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEV4cGVydEVycm9yTG9nKCk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLmdldCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5lcnJvcmxvZ0V4cGVydCkpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJFcnJvckxvZz4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRXJyb3JMb2dQZGYoZXJyb3JMb2dOYW1lOiBzdHJpbmcsIHByb3BzTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC51cmwodGhpcy5nZXREcmFmdFVybChcInByZXNlbnRhdGlvbnMvZXJyb3JMb2cvcHJpbnRcIiksIHtcbiAgICAgICAgICAgIGVycm9yTG9nTmFtZTogZXJyb3JMb2dOYW1lLFxuICAgICAgICAgICAgcHJvcHNEcml2ZU5hbWU6IHByb3BzTmFtZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNsZWFyRHJhZnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJjbGVhclwiKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNvbnZlcnREcmFmdEZyb21QcmV2R2Z2KHsgcHJldkdmdkRyYWZ0SWQsIGdmdiB9OiBDb252ZXJ0RHJhZnRSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJjb252ZXJ0XCIpKS53aXRoUXVlcnlQYXJhbXMoe1xuICAgICAgICAgICAgaWQ6IHByZXZHZnZEcmFmdElkLFxuICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZW5kQ2hhbmdlU2V0KGRhdGE6IFNlcnZlckNoYW5nZVNldCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoc3RyYW5nZU9wdGlvbnMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KGRhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZW5kQ2hhbmdlU2V0U3luYyhkYXRhOiBTZXJ2ZXJDaGFuZ2VTZXQpOiBIdHRwU3RhdHVzQ29kZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdFN5bmMoXG4gICAgICAgICAgICB0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lciksXG4gICAgICAgICAgICBzdHJhbmdlT3B0aW9ucyxcbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UmVxdWlzaXRlcyhyZXF1aXNpdGVMaXN0OiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8U2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHJlcXVpc2l0ZUxpc3QpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldElubmVyKHBhdGhzOiB1bmRlZmluZWQgfCByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8U2VydmVySW5uZXJSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShwYXRocylcbiAgICAgICAgICAgIC5qc29uPFNlcnZlcklubmVyUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhcnRpYWxJbm5lcihydWxlczogW1wiKlwiXSB8IHN0cmluZ1tdLCBtYXhJbnN0YW5jZUNvdW50PzogbnVtYmVyKTogUHJvbWlzZTxTZXJ2ZXJJbm5lclJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtcGFydGlhbC1pbm5lclwiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMobWF4SW5zdGFuY2VDb3VudCAhPSB1bmRlZmluZWQgJiYgeyBtYXhJbnN0YW5jZUNvdW50OiBtYXhJbnN0YW5jZUNvdW50LnRvU3RyaW5nKCkgfSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocnVsZXMpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJJbm5lclJlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQYXJ0aWFsSW5uZXJBc0pzb25UcmVlKHJ1bGVzOiBbXCIqXCJdIHwgc3RyaW5nW10sIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXIpOiBQcm9taXNlPFNlcnZlckpzb25SZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LXBhcnRpYWwtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKG1heEluc3RhbmNlQ291bnQgIT0gdW5kZWZpbmVkICYmIHsgbWF4SW5zdGFuY2VDb3VudDogbWF4SW5zdGFuY2VDb3VudC50b1N0cmluZygpIH0pXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZm9ybWF0OiBcIkpzb25UcmVlXCIgfSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocnVsZXMpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJKc29uUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEV4cGxhbmF0b3J5Tm90ZSgpOiBQcm9taXNlPENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5nZXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuZXhwbGFuYXRvcnlOb3RlKSlcbiAgICAgICAgICAgIC5qc29uPENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBdHRhY2htZW50QnlJZChhdHRhY2htZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QXR0YWNoSW5mbz4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KFtgQGF0dGFjaG1lbnQvJHthdHRhY2htZW50SWR9YF0pXG4gICAgICAgICAgICAuanNvbjxHZXRBdHRhY2htZW50c1Jlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gcmVzdWx0W2BAYXR0YWNobWVudC8ke2F0dGFjaG1lbnRJZH1gXT8udmFsdWUgPz8gcmVqZWN0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEF0dGFjaG1lbnRzKCk6IFByb21pc2U8QXR0YWNoSW5mb1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1pbm5lclwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoW2BAYXR0YWNobWVudC8qYF0pXG4gICAgICAgICAgICAuanNvbjxHZXRBdHRhY2htZW50c1Jlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhyZXN1bHQpLm1hcCh4ID0+IHgudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZW1vdmVBdHRhY2htZW50cyhhdHRhY2htZW50SWRzOiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoc3RyYW5nZU9wdGlvbnMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHtcbiAgICAgICAgICAgICAgICBhZGRlZDogW10sXG4gICAgICAgICAgICAgICAgY2hhbmdlZDoge30sXG4gICAgICAgICAgICAgICAgcmVtb3ZlZDogYXR0YWNobWVudElkcy5tYXAoaWQgPT4gYEBhdHRhY2htZW50LyR7aWR9YCksXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlT3JVcGRhdGVBdHRhY2htZW50cyhhdHRhY2htZW50czogcmVhZG9ubHkgQXR0YWNoSW5mb1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNoYW5nZWQgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBhdHRhY2htZW50IG9mIGF0dGFjaG1lbnRzKSB7XG4gICAgICAgICAgICBjaGFuZ2VkW2BAYXR0YWNobWVudC8ke2F0dGFjaG1lbnQuaWR9YF0gPSB7XG4gICAgICAgICAgICAgICAgY29udGVudFVyaTogYXR0YWNobWVudC5jb250ZW50VXJpLFxuICAgICAgICAgICAgICAgIGlkOiBhdHRhY2htZW50LmlkLFxuICAgICAgICAgICAgICAgIG1ldGE6IGF0dGFjaG1lbnQubWV0YSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHN0cmFuZ2VPcHRpb25zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7XG4gICAgICAgICAgICAgICAgYWRkZWQ6IFtdLFxuICAgICAgICAgICAgICAgIGNoYW5nZWQ6IGNoYW5nZWQsXG4gICAgICAgICAgICAgICAgcmVtb3ZlZDogW10sXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0UHJlc2VudGF0aW9uKHByZXNlbnRhdGlvblR5cGU6IERyYWZ0UHJlc2VudGF0aW9uVHlwZSwgY29udGVudDogc3RyaW5nIHwgdW5rbm93bik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgcmVxdWVzdCA9IHRoaXMuaHR0cENsaWVudC5wdXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlKSk7XG4gICAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3Qud2l0aFJhd0JvZHkoY29udGVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNCdWZmZXIoY29udGVudCkpIHtcbiAgICAgICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LndpdGhSYXdCb2R5KGNvbnRlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3Qud2l0aEpzb25Cb2R5KGNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHJlcXVlc3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHBhdGNoUHJlc2VudGF0aW9uKFxuICAgICAgICBwcmVzZW50YXRpb25UeXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUsXG4gICAgICAgIHByZXNlbnRhdGlvbkNvbnRlbnQ6IFByZXNlbnRhdGlvbkNvbnRlbnRcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBhdGNoKHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwocHJlc2VudGF0aW9uVHlwZSkpLndpdGhKc29uQm9keShwcmVzZW50YXRpb25Db250ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RmlsZVByb3BlcnRpZXMoZHJpdmVVcmk6IHN0cmluZyk6IFByb21pc2U8RmlsZVByb3BlcnRpZXMgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5nZXQoYHYxL2ZpbGVzL2dldC1wcm9wZXJ0aWVzYClcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBkcml2ZVVyaTogZHJpdmVVcmkgfSlcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQwMCk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbjxGaWxlUHJvcGVydGllcz4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcHJlcGFyZUFuZEdldEZpbGVQcm9wZXJ0aWVzKGRyaXZlVXJpOiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlUHJvcGVydGllcyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLmdldChgdjEvZmlsZXMvcHJlcGFyZS1hbmQtZ2V0LXByb3BlcnRpZXNgKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGdmdjogZ2Z2LCBkcml2ZVVyaTogZHJpdmVVcmkgfSlcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQwMClcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MTMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yRGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb248eyBlcnJvckNvZGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH0+KCk7XG4gICAgICAgICAgICBpZiAoZXJyb3JEYXRhLmVycm9yQ29kZSA9PT0gXCJGdWZTaXplVG9vTGFyZ2VcIikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBGdWZTaXplVG9vTGFyZ2VFcnJvcihlcnJvckRhdGEubWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKGVycm9yRGF0YS5tZXNzYWdlLCByZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPEZpbGVQcm9wZXJ0aWVzPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRGdWZCeURyaXZlVXJpKGRyaXZlVXJpOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnB1dCh0aGlzLmdldERyYWZ0VXJsKFwic2V0LWZ1ZlwiKSkud2l0aFF1ZXJ5UGFyYW1zKHsgZHJpdmVVcmk6IGRyaXZlVXJpIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjb21iaW5lRnVmQnlEcml2ZVVyaShcbiAgICAgICAgZHJpdmVVcmk6IHN0cmluZyxcbiAgICAgICAgY29tYmluZU1ldGhvZDogRnVmQ29tYmluZU1ldGhvZFxuICAgICk6IFByb21pc2U8Q29tYmluZUZ1ZlJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcInRyYW5zZmVyL2NvbWJpbmUtd2l0aC1mdWZcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZnVmRHJpdmVVcmk6IGRyaXZlVXJpLCBjb21iaW5lTWV0aG9kOiBjb21iaW5lTWV0aG9kIH0pO1xuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDApIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmpzb248Q29tYmluZUZ1ZlJlc3VsdD4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgbXVsdGlwbGVDb21iaW5lRnVmQnlEcml2ZVVyaShcbiAgICAgICAgZHJpdmVVcmlzOiBzdHJpbmdbXSxcbiAgICAgICAgY29tYmluZU1ldGhvZDogRnVmQ29tYmluZU1ldGhvZFxuICAgICk6IFByb21pc2U8Q29tYmluZUZ1ZlJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcInRyYW5zZmVyL2NvbWJpbmUtd2l0aC1mdWZzXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGNvbWJpbmVNZXRob2Q6IGNvbWJpbmVNZXRob2QgfSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoZHJpdmVVcmlzKTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPENvbWJpbmVGdWZSZXN1bHQ+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIG5vcm1hbGl6ZUJ5UnVsZXMocnVsZXM6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnQucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwibm9ybWFsaXplXCIpKS53aXRoSnNvbkJvZHkocnVsZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24ocHJlc2VudGF0aW9uVHlwZTogRHJhZnRQcmVzZW50YXRpb25UeXBlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC51cmwodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFVybChkcmFmdFJlbGF0ZWRVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgdjEvbnMvJHt0aGlzLmRyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHt0aGlzLmRyYWZ0RnVsbElkLmRyYWZ0SWR9LyR7ZHJhZnRSZWxhdGVkVXJsfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREcmFmdFVybChgcHJlc2VudGF0aW9ucy8ke3ByZXNlbnRhdGlvblR5cGUudG9TdHJpbmcoKX1gKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0QWxsQ2hlY2tib3hlc0ZvcjExMzEwMyhlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHVyaSA9IHRoaXMuZ2V0RHJhZnRVcmwoXCJpbm5lci9jaGVjay1hbGxcIik7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wYXRjaCh1cmkpLndpdGhRdWVyeVBhcmFtcyh7IHNldEVuYWJsZWQ6IGVuYWJsZWQgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNlYXJjaEluc3RhbmNlc0J5VGV4dChcbiAgICAgICAgdGV4dDogc3RyaW5nLFxuICAgICAgICBwYXRoc1ByZWZpeDogc3RyaW5nLFxuICAgICAgICBwYXRoc1RvU2VhcmNoOiBzdHJpbmdbXSxcbiAgICAgICAgbWF4SW5zdGFuY2VDb3VudD86IG51bWJlclxuICAgICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3QgbWF4SW5zdGFuY2VDb3VudFBhcmFtcyA9IG1heEluc3RhbmNlQ291bnQgIT0gdW5kZWZpbmVkID8geyBtYXhJbnN0YW5jZUNvdW50OiBtYXhJbnN0YW5jZUNvdW50IH0gOiB7fTtcbiAgICAgICAgY29uc3QgcGFyYW1zID0geyBzZWFyY2hTdHJpbmc6IHRleHQsIHBhdGhzUHJlZml4OiBwYXRoc1ByZWZpeCwgLi4ubWF4SW5zdGFuY2VDb3VudFBhcmFtcyB9O1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiaW5uZXIvc2VhcmNoLWJ5LXN0cmluZ1wiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMocGFyYW1zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShwYXRoc1RvU2VhcmNoKVxuICAgICAgICAgICAgLmpzb248c3RyaW5nW10+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGN1c3RvbU5vcm1hbGl6ZShub3JtYWxpemVySWQ6IHN0cmluZywgcGF0aFByZWZpeGVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7IG5vcm1hbGl6ZXJJZDogbm9ybWFsaXplcklkIH07XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImlubmVyL2N1c3RvbS1ub3JtYWxpemVcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHBhcmFtcylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocGF0aFByZWZpeGVzKTtcbiAgICB9XG59XG4iXX0=
|
|
471
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DYW5keUFwaUNsaWVudC50cyJdLCJuYW1lcyI6WyJzdHJhbmdlT3B0aW9ucyIsInNyYyIsImRhdGFWZXJzaW9uIiwiU2VydmVyRXJyb3JzIiwiQ2FuZHlBcGlDbGllbnQiLCJjb25zdHJ1Y3RvciIsImZldGNoSW1wbCIsImJhc2VVcmwiLCJyZXNvdXJjZVpvbmUiLCJhdXRoZW50aWNhdGlvbiIsImh0dHBDbGllbnQiLCJIdHRwQ2xpZW50IiwiZm9yRHJhZnQiLCJkcmFmdEZ1bGxJZCIsIkNhbmR5QXBpRHJhZnRDbGllbnQiLCJjcmVhdGVEaWdlc3RBcGlDbGllbnQiLCJEaWdlc3RBcGlDbGllbnQiLCJnZXRJbmZvQnlJbm5zIiwiaW5ucyIsInBhdGhzIiwibWFwIiwiaW5uIiwicmVzcG9uc2UiLCJwb3N0IiwiZ2V0RHJhZnRVcmwiLCJ3aXRoSnNvbkJvZHkiLCJqc29uIiwicmVzdWx0IiwiaW5uU2VydmVyVmFsdWUiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImVycm9yIiwiZXJyb3JDb2RlIiwiRm9jdXNTZXJ2ZXJFcnJvckNvZGUiLCJOb0lubkVycm9yIiwiZ2V0QWxsR2Z2cyIsImFib3J0U2lnbmFsIiwiYm9keSIsImdldCIsIk9iamVjdCIsImtleXMiLCJmb3JtcyIsImNyZWF0ZURyYWZ0RnJvbURyaXZlIiwibnMiLCJmdWZEcml2ZVVyaSIsIndpdGhRdWVyeVBhcmFtcyIsIndpdGhBYm9ydFNpZ25hbCIsImNyZWF0ZUVtcHR5RHJhZnQiLCJnZnYiLCJjcmVhdGVEcmFmdCIsImZ1ZkNvbnRlbnQiLCJ3aXRoQ29udGVudFR5cGUiLCJ3aXRoQm9keUZyb21CdWZmZXIiLCJCdWZmZXIiLCJmcm9tIiwiRXJyb3IiLCJjaGVja0FsaXZlIiwiZHJhZnRSZWxhdGVkVXJsIiwiZHJhZnRJZCIsImdldEZlYXR1cmVGbGFncyIsImdldEhyZWZUb0lubmVyRWRpdG9yIiwidXJsIiwiZ2V0SHJlZkRvd25sb2FkRnVmIiwiZ2V0SHJlZlRvQ29udmVydGF0aW9uTG9nIiwiZ2V0SHJlZlRvRG93bmxvYWRJbm5lckZ1ZiIsImdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uIiwiRHJhZnRQcmVzZW50YXRpb25UeXBlIiwiaW5uZXJGdWYiLCJnZXRIcmVmVG9Eb3dubG9hZENsaWVudEluZm8iLCJjbGllbnRJbmZvIiwiZ2V0SHJlZlRvRG93bmxvYWRGb3Jtc0NsaWVudEluZm8iLCJmb3Jtc0NsaWVudEluZm8iLCJnZXRIcmVmRG93bmxvYWRJbm5lciIsImlubmVyIiwiZ2V0RXJyb3JMb2ciLCJnZXREcmFmdFByZXNlbnRhdGlvblVybCIsImVycm9yTG9nIiwiZ2V0RXJyb3JMb2dXaXRoQ2hlY2tTY2VuYXJpb3MiLCJjaGVja1NjZW5hcmlvcyIsImdldFRhc2tCeUlkIiwidGFza0lkIiwidGFza3MiLCJnZXRBbGxUYXNrcyIsInZhbHVlcyIsIngiLCJlbnF1ZXVlVGFzayIsInRhc2tJbmZvIiwiYWRkZWQiLCJjaGFuZ2VkIiwiaWQiLCJyZW1vdmVkIiwiY2FuY2VsVGFzayIsImdldEV4cGVydEVycm9yTG9nIiwiZXJyb3Jsb2dFeHBlcnQiLCJnZXRIcmVmVG9FcnJvckxvZ1BkZiIsImVycm9yTG9nTmFtZSIsInByb3BzTmFtZSIsInByb3BzRHJpdmVOYW1lIiwiY2xlYXJEcmFmdCIsImNvbnZlcnREcmFmdEZyb21QcmV2R2Z2IiwicHJldkdmdkRyYWZ0SWQiLCJzZW5kQ2hhbmdlU2V0IiwiZGF0YSIsInNlbmRDaGFuZ2VTZXRTeW5jIiwicG9zdFN5bmMiLCJnZXRSZXF1aXNpdGVzIiwicmVxdWlzaXRlTGlzdCIsImdldElubmVyIiwiZ2V0UGFydGlhbElubmVyIiwicnVsZXMiLCJtYXhJbnN0YW5jZUNvdW50IiwidG9TdHJpbmciLCJnZXRQYXJ0aWFsSW5uZXJBc0pzb25UcmVlIiwiZm9ybWF0IiwiZ2V0RXhwbGFuYXRvcnlOb3RlIiwiZXhwbGFuYXRvcnlOb3RlIiwiZ2V0QXR0YWNobWVudEJ5SWQiLCJhdHRhY2htZW50SWQiLCJnZXRBbGxBdHRhY2htZW50cyIsInJlbW92ZUF0dGFjaG1lbnRzIiwiYXR0YWNobWVudElkcyIsImNyZWF0ZU9yVXBkYXRlQXR0YWNobWVudHMiLCJhdHRhY2htZW50cyIsImF0dGFjaG1lbnQiLCJjb250ZW50VXJpIiwibWV0YSIsInNldFByZXNlbnRhdGlvbiIsInByZXNlbnRhdGlvblR5cGUiLCJjb250ZW50IiwicmVxdWVzdCIsInB1dCIsIndpdGhSYXdCb2R5IiwicGF0Y2hQcmVzZW50YXRpb24iLCJwcmVzZW50YXRpb25Db250ZW50IiwicGF0Y2giLCJnZXRGaWxlUHJvcGVydGllcyIsImRyaXZlVXJpIiwiYWNjZXB0Q29kZSIsInN0YXR1cyIsInByZXBhcmVBbmRHZXRGaWxlUHJvcGVydGllcyIsImVycm9yRGF0YSIsIkZ1ZlNpemVUb29MYXJnZUVycm9yIiwibWVzc2FnZSIsIkh0dHBFcnJvciIsInVwbG9hZEFuZEdldEZpbGVQcm9wZXJ0aWVzIiwiZHJpdmVVcmlzIiwic2VydmVyRXJyb3IiLCJpbnZhbGlkU291cmNlRHJpdmVDb250ZW50TmFtZXMiLCJzb3VyY2VzVG90YWxDb3VudCIsImUiLCJVbmtub3duRXJyb3IiLCJzZXRGdWZCeURyaXZlVXJpIiwiY29tYmluZUZ1ZkJ5RHJpdmVVcmkiLCJjb21iaW5lTWV0aG9kIiwibXVsdGlwbGVDb21iaW5lRnVmQnlEcml2ZVVyaSIsIm5vcm1hbGl6ZUJ5UnVsZXMiLCJzZXRBbGxDaGVja2JveGVzRm9yMTEzMTAzIiwiZW5hYmxlZCIsInVyaSIsInNldEVuYWJsZWQiLCJzZWFyY2hJbnN0YW5jZXNCeVRleHQiLCJ0ZXh0IiwicGF0aHNQcmVmaXgiLCJwYXRoc1RvU2VhcmNoIiwibWF4SW5zdGFuY2VDb3VudFBhcmFtcyIsInBhcmFtcyIsInNlYXJjaFN0cmluZyIsImN1c3RvbU5vcm1hbGl6ZSIsIm5vcm1hbGl6ZXJJZCIsInBhdGhQcmVmaXhlcyIsImltcG9ydEVtcGxveWVlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFB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QUdENUksWUFIQyxDQUdZZ0osWUFIWixDQUFOO0FBSUg7O0FBRTJCLFFBQWZDLGVBQWUsQ0FBQ3pDLE9BQUQsRUFBaUQ7QUFDekUsVUFBTSxLQUFLdkgsVUFBTCxDQUFnQjRILEtBQWhCLENBQXNCLEtBQUs5RyxXQUFMLENBQWlCLE9BQWpCLENBQXRCLEVBQWlEQyxZQUFqRCxDQUE4RHdHLE9BQTlELENBQU47QUFDSDs7QUFoWDREIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgeyBGZXRjaCB9IGZyb20gXCIuLi9IdHRwQ2xpZW50L0ZldGNoSW1wbGVtZW50YXRpb24vRmV0Y2hcIjtcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvciB9IGZyb20gXCIuLi9IdHRwQ2xpZW50L0h0dHBDbGllbnRcIjtcbmltcG9ydCB7IEh0dHBTdGF0dXNDb2RlLCBJSHR0cENsaWVudCB9IGZyb20gXCIuLi9IdHRwQ2xpZW50L0lIdHRwQ2xpZW50XCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbk1vZGUsIGNyZWF0ZUF1dGhlbnRpY2F0aW9uUHJvdmlkZXIgfSBmcm9tIFwiLi4vSHR0cENsaWVudC9BdXRoZW50aWNhdGlvbk1vZGVcIjtcblxuaW1wb3J0IHsgQ2hlY2tTY2VuYXJpb1R5cGUsIElDYW5keUFwaUNsaWVudCwgSUNhbmR5QXBpRHJhZnRDbGllbnQgfSBmcm9tIFwiLi9JQ2FuZHlBcGlDbGllbnRcIjtcbmltcG9ydCB7IFNlcnZlckVycm9yTG9nIH0gZnJvbSBcIi4vVHlwZXMvRXJyb3JMb2cvU2VydmVyRXJyb3JMb2dcIjtcbmltcG9ydCB7IFNlcnZlcklubmVyUmVzcG9uc2UsIFNlcnZlckpzb25SZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0dldElubmVyL1NlcnZlcklubmVyUmVzcG9uc2VcIjtcbmltcG9ydCB7IEZpbGVQcm9wZXJ0aWVzLCBVcGxvYWRGaWxlUHJvcGVydGllc1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0ZpbGVQcm9wZXJ0aWVzXCI7XG5pbXBvcnQgeyBDcmVhdGVEcmFmdFJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvQ3JlYXRlRHJhZnQvQ3JlYXRlRHJhZnRSZXNwb25zZVwiO1xuaW1wb3J0IHsgQ3JlYXRlRXhwbGFuYXRvcnlOb3RlUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9FeHBsYW5hdG9yeU5vdGUvQ3JlYXRlRXhwbGFuYXRvcnlOb3RlUmVzcG9uc2VcIjtcbmltcG9ydCB7IERyYWZ0RnVsbElkIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRGdWxsSWRcIjtcbmltcG9ydCB7IFNlcnZlckNoYW5nZVNldCB9IGZyb20gXCIuL1R5cGVzL0NoYW5nZVNldC9TZXJ2ZXJDaGFuZ2VTZXRcIjtcbmltcG9ydCB7IFNlcnZlclRhc2ssIFZlcmlmeUFuZEZpeEZuc1JlcXVpcmVtZW50c1Rhc2tJbmZvIH0gZnJvbSBcIi4vVHlwZXMvVGFza3MvVGFza3NcIjtcbmltcG9ydCB7IEZvY3VzU2VydmVyRXJyb3JDb2RlLCBHZXRCeUlublJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRm9jdXMvRm9jdXNUeXBlc1wiO1xuaW1wb3J0IHsgQXR0YWNoSW5mbyB9IGZyb20gXCIuL1R5cGVzL0F0dGFjaG1lbnRzL0F0dGFjbWVudHNcIjtcbmltcG9ydCB7IERyYWZ0UHJlc2VudGF0aW9uVHlwZSB9IGZyb20gXCIuL1R5cGVzL1ByZXNlbnRhdGlvbnMvRHJhZnRQcmVzZW50YXRpb25UeXBlXCI7XG5pbXBvcnQgeyBQcmVzZW50YXRpb25Db250ZW50IH0gZnJvbSBcIi4vVHlwZXMvUHJlc2VudGF0aW9ucy9QcmVzZW50YXRpb25Db250ZW50XCI7XG5pbXBvcnQgeyBDb252ZXJ0RHJhZnRSZXF1ZXN0IH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0NvbnZlcnREcmFmdFJlcXVlc3RcIjtcbmltcG9ydCB7IEdldEF0dGFjaG1lbnRzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9BdHRhY2htZW50cy9HZXRBdHRhY2htZW50c1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBGb2N1c1NlcnZlclJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRm9jdXMvRm9jdXNTZXJ2ZXJSZXNwb25zZVwiO1xuaW1wb3J0IHsgR2V0VGFza3NTZXJ2ZXJSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL1Rhc2tzL0dldFRhc2tzU2VydmVyUmVzcG9uc2VcIjtcbmltcG9ydCB7IERpYWdSZXNvdXJjZXNSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0RpYWdSZXNvdXJjZXNSZXNwb25zZVwiO1xuaW1wb3J0IHsgU2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvR2V0SW5uZXIvU2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBpc0J1ZmZlciB9IGZyb20gXCIuL0lzQnVmZmVyXCI7XG5pbXBvcnQgeyBDb21iaW5lRnVmUmVzdWx0LCBGdWZDb21iaW5lTWV0aG9kIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0NvbWJpbmVGdWZSZXN1bHRcIjtcbmltcG9ydCB7IEZlYXR1cmVGbGFnc1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRmVhdHVyZUZsYWdzL0ZlYXR1cmVGbGFnc1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBEaWdlc3RBcGlDbGllbnQgfSBmcm9tIFwiLi9EaWdlc3RBcGlDbGllbnQvRGlnZXN0QXBpQ2xpZW50XCI7XG5pbXBvcnQgeyBJRGlnZXN0QXBpQ2xpZW50IH0gZnJvbSBcIi4vRGlnZXN0QXBpQ2xpZW50L0lEaWdlc3RBcGlDbGllbnRcIjtcbmltcG9ydCB7IEZ1ZlNpemVUb29MYXJnZUVycm9yIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0Z1ZlNpemVUb29MYXJnZUVycm9yXCI7XG5pbXBvcnQgeyBJbXBvcnRFbXBsb3llZXNSZXF1ZXN0IH0gZnJvbSBcIi4vVHlwZXMvU3RhZmYvSW1wb3J0RW1wbG95ZWVzUmVxdWVzdFwiO1xuXG5jb25zdCBzdHJhbmdlT3B0aW9ucyA9IHsgc3JjOiBcImNoYW5nZVNldFwiLCBkYXRhVmVyc2lvbjogXCIwXCIgfTtcblxuZXhwb3J0IGVudW0gU2VydmVyRXJyb3JzIHtcbiAgICBGdWZTaXplVG9vTGFyZ2UgPSBcIkZ1ZlNpemVUb29MYXJnZVwiLFxuICAgIEJhZFJlcXVlc3QgPSBcIkJhZFJlcXVlc3RcIixcbiAgICBVbmtub3duRXJyb3IgPSBcIlVua25vd25FcnJvclwiLFxufVxuXG5leHBvcnQgY2xhc3MgQ2FuZHlBcGlDbGllbnQgaW1wbGVtZW50cyBJQ2FuZHlBcGlDbGllbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cENsaWVudDogSUh0dHBDbGllbnQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIGZldGNoSW1wbDogRmV0Y2gsXG4gICAgICAgIGJhc2VVcmw6IHN0cmluZyxcbiAgICAgICAgcmVzb3VyY2Vab25lOiB1bmRlZmluZWQgfCBzdHJpbmcsXG4gICAgICAgIGF1dGhlbnRpY2F0aW9uOiB1bmRlZmluZWQgfCBBdXRoZW50aWNhdGlvbk1vZGVcbiAgICApIHtcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50ID0gbmV3IEh0dHBDbGllbnQoZmV0Y2hJbXBsLCBiYXNlVXJsLCBjcmVhdGVBdXRoZW50aWNhdGlvblByb3ZpZGVyKGF1dGhlbnRpY2F0aW9uKSwge1xuICAgICAgICAgICAgcmVzb3VyY2Vab25lOiByZXNvdXJjZVpvbmUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb3JEcmFmdChkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQpOiBJQ2FuZHlBcGlEcmFmdENsaWVudCB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FuZHlBcGlEcmFmdENsaWVudCh0aGlzLmh0dHBDbGllbnQsIGRyYWZ0RnVsbElkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRGlnZXN0QXBpQ2xpZW50KGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZCk6IElEaWdlc3RBcGlDbGllbnQge1xuICAgICAgICByZXR1cm4gbmV3IERpZ2VzdEFwaUNsaWVudCh0aGlzLmh0dHBDbGllbnQsIGRyYWZ0RnVsbElkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0SW5mb0J5SW5ucyhkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQsIGlubnM6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTxHZXRCeUlublJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHBhdGhzID0gaW5ucy5tYXAoaW5uID0+IGBAZm9jdXMvJHtpbm59YCk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKGRyYWZ0RnVsbElkLCBcImdldC1pbm5lclwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocGF0aHMpXG4gICAgICAgICAgICAuanNvbjxGb2N1c1NlcnZlclJlc3BvbnNlPigpO1xuICAgICAgICBjb25zdCByZXN1bHQ6IEdldEJ5SW5uUmVzcG9uc2UgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBpbm4gb2YgaW5ucykge1xuICAgICAgICAgICAgY29uc3QgaW5uU2VydmVyVmFsdWUgPSByZXNwb25zZVtgQGZvY3VzLyR7aW5ufWBdPy52YWx1ZTtcbiAgICAgICAgICAgIGlmIChpbm5TZXJ2ZXJWYWx1ZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbaW5uXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IFwiU2VydmVyIGRvZXMgbm90IHJldHVybiBpbm4gaW5mb1wiLFxuICAgICAgICAgICAgICAgICAgICBlcnJvckNvZGU6IEZvY3VzU2VydmVyRXJyb3JDb2RlLk5vSW5uRXJyb3IsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2lubl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBpbm5TZXJ2ZXJWYWx1ZS52YWx1ZSA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yQ29kZTogaW5uU2VydmVyVmFsdWUuZXJyb3JDb2RlID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGlublNlcnZlclZhbHVlLmVycm9yID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEdmdnMoYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3QgYm9keSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudC5nZXQoYHYxL2RpYWcvcmVzb3VyY2VzYCkuanNvbjxEaWFnUmVzb3VyY2VzUmVzcG9uc2U+KCk7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhib2R5LmZvcm1zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlRHJhZnRGcm9tRHJpdmUoXG4gICAgICAgIG5zOiBzdHJpbmcsXG4gICAgICAgIGZ1ZkRyaXZlVXJpOiBzdHJpbmcsXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7bnN9L2NyZWF0ZS1kcmFmdC1mcm9tLWRyaXZlYClcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoe1xuICAgICAgICAgICAgICAgIG5zOiBucyxcbiAgICAgICAgICAgICAgICBmdWZEcml2ZVVyaTogZnVmRHJpdmVVcmksXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLndpdGhBYm9ydFNpZ25hbChhYm9ydFNpZ25hbClcbiAgICAgICAgICAgIC5qc29uPENyZWF0ZURyYWZ0UmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZUVtcHR5RHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcsIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7bnN9L2NyZWF0ZS1kcmFmdGApXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZ2Z2OiBnZnYgfSlcbiAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAuanNvbjxDcmVhdGVEcmFmdFJlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVEcmFmdChuczogc3RyaW5nLCBnZnY6IHN0cmluZyk6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT47XG4gICAgcHVibGljIGNyZWF0ZURyYWZ0KG5zOiBzdHJpbmcsIGdmdjogdW5kZWZpbmVkLCBmdWZDb250ZW50OiBCdWZmZXIpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+O1xuICAgIHB1YmxpYyBhc3luYyBjcmVhdGVEcmFmdChuczogc3RyaW5nLCBnZnY6IHVuZGVmaW5lZCB8IHN0cmluZywgZnVmQ29udGVudD86IEJ1ZmZlcik6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT4ge1xuICAgICAgICBpZiAoZ2Z2ID09IHVuZGVmaW5lZCAmJiBmdWZDb250ZW50ICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgICAgIC5wb3N0KGB2MS9ucy8ke25zfS9jcmVhdGUtZHJhZnRgKVxuICAgICAgICAgICAgICAgIC53aXRoQ29udGVudFR5cGUoXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIilcbiAgICAgICAgICAgICAgICAud2l0aEJvZHlGcm9tQnVmZmVyKGZ1ZkNvbnRlbnQpXG4gICAgICAgICAgICAgICAgLmpzb248Q3JlYXRlRHJhZnRSZXNwb25zZT4oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZ2Z2ICE9IHVuZGVmaW5lZCAmJiBmdWZDb250ZW50ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgICAgIC5wb3N0KGB2MS9ucy8ke25zfS9jcmVhdGUtZHJhZnRgKVxuICAgICAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiB9KVxuICAgICAgICAgICAgICAgIC53aXRoQ29udGVudFR5cGUoXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIilcbiAgICAgICAgICAgICAgICAud2l0aEJvZHlGcm9tQnVmZmVyKEJ1ZmZlci5mcm9tKFtdKSlcbiAgICAgICAgICAgICAgICAuanNvbjxDcmVhdGVEcmFmdFJlc3BvbnNlPigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChnZnYgPT0gdW5kZWZpbmVkICYmIGZ1ZkNvbnRlbnQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY3JlYXRlIGRyYWZ0OiBubyBnZnYgYW5kIG5vIGZ1ZiBzcGVjaWZpZWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7bnN9L2NyZWF0ZS1kcmFmdGApXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZ2Z2OiBnZnYgfSlcbiAgICAgICAgICAgIC53aXRoQ29udGVudFR5cGUoXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIilcbiAgICAgICAgICAgIC53aXRoQm9keUZyb21CdWZmZXIoZnVmQ29udGVudClcbiAgICAgICAgICAgIC5qc29uPENyZWF0ZURyYWZ0UmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNoZWNrQWxpdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5nZXQoYF9zdGF0dXMvcGluZ2ApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RHJhZnRVcmwoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkLCBkcmFmdFJlbGF0ZWRVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgdjEvbnMvJHtkcmFmdEZ1bGxJZC5uc30vZHJhZnRzLyR7ZHJhZnRGdWxsSWQuZHJhZnRJZH0vJHtkcmFmdFJlbGF0ZWRVcmx9YDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RmVhdHVyZUZsYWdzKCk6IFByb21pc2U8RmVhdHVyZUZsYWdzUmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cENsaWVudC5nZXQoXCJ2MS9mZWF0dXJlcy9mbGFnc1wiKS5qc29uPEZlYXR1cmVGbGFnc1Jlc3BvbnNlPigpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhbmR5QXBpRHJhZnRDbGllbnQgaW1wbGVtZW50cyBJQ2FuZHlBcGlEcmFmdENsaWVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwQ2xpZW50OiBJSHR0cENsaWVudDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihodHRwQ2xpZW50OiBJSHR0cENsaWVudCwgZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkKSB7XG4gICAgICAgIHRoaXMuaHR0cENsaWVudCA9IGh0dHBDbGllbnQ7XG4gICAgICAgIHRoaXMuZHJhZnRGdWxsSWQgPSBkcmFmdEZ1bGxJZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvSW5uZXJFZGl0b3IoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC51cmwoYGlubmVyLWVkaXRvci9ucy8ke3RoaXMuZHJhZnRGdWxsSWQubnN9L2RyYWZ0cy8ke3RoaXMuZHJhZnRGdWxsSWQuZHJhZnRJZH1gKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZkRvd25sb2FkRnVmKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQudXJsKHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtZnVmXCIpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvQ29udmVydGF0aW9uTG9nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQudXJsKHRoaXMuZ2V0RHJhZnRVcmwoXCJjb252ZXJzaW9uXCIpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRJbm5lckZ1ZigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRIcmVmRG93bmxvYWREcmFmdFByZXNlbnRhdGlvbihEcmFmdFByZXNlbnRhdGlvblR5cGUuaW5uZXJGdWYpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Eb3dubG9hZENsaWVudEluZm8oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24oRHJhZnRQcmVzZW50YXRpb25UeXBlLmNsaWVudEluZm8pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Eb3dubG9hZEZvcm1zQ2xpZW50SW5mbygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRIcmVmRG93bmxvYWREcmFmdFByZXNlbnRhdGlvbihEcmFmdFByZXNlbnRhdGlvblR5cGUuZm9ybXNDbGllbnRJbmZvKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZkRvd25sb2FkSW5uZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24oRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RXJyb3JMb2coKTogUHJvbWlzZTxTZXJ2ZXJFcnJvckxvZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5lcnJvckxvZykpLmpzb248U2VydmVyRXJyb3JMb2c+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEVycm9yTG9nV2l0aENoZWNrU2NlbmFyaW9zKGNoZWNrU2NlbmFyaW9zOiBDaGVja1NjZW5hcmlvVHlwZVtdKTogUHJvbWlzZTxTZXJ2ZXJFcnJvckxvZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZXJyb3Jsb2dcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHsgY2hlY2tTY2VuYXJpb3M6IGNoZWNrU2NlbmFyaW9zIH0pXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJFcnJvckxvZz4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0VGFza0J5SWQodGFza0lkOiBzdHJpbmcpOiBQcm9taXNlPFNlcnZlclRhc2sgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgdGFza3MgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KFtgQHRhc2svKmBdKVxuICAgICAgICAgICAgLmpzb248R2V0VGFza3NTZXJ2ZXJSZXNwb25zZT4oKTtcbiAgICAgICAgcmV0dXJuIHRhc2tzW2BAdGFzay8ke3Rhc2tJZH1gXT8udmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFRhc2tzKCk6IFByb21pc2U8U2VydmVyVGFza1tdPiB7XG4gICAgICAgIGNvbnN0IHRhc2tzID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShbYEB0YXNrLypgXSlcbiAgICAgICAgICAgIC5qc29uPEdldFRhc2tzU2VydmVyUmVzcG9uc2U+KCk7XG4gICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRhc2tzKS5tYXAoeCA9PiB4LnZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZW5xdWV1ZVRhc2sodGFza0lkOiBzdHJpbmcsIHRhc2tJbmZvOiBWZXJpZnlBbmRGaXhGbnNSZXF1aXJlbWVudHNUYXNrSW5mbyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoc3RyYW5nZU9wdGlvbnMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHtcbiAgICAgICAgICAgICAgICBhZGRlZDogW10sXG4gICAgICAgICAgICAgICAgY2hhbmdlZDoge1xuICAgICAgICAgICAgICAgICAgICBbYEB0YXNrLyR7dGFza0lkfWBdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50YXNrSW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0YXNrSWQsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByZW1vdmVkOiBbXSxcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjYW5jZWxUYXNrKHRhc2tJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuaW5uZXIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhzdHJhbmdlT3B0aW9ucylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoe1xuICAgICAgICAgICAgICAgIGFkZGVkOiBbXSxcbiAgICAgICAgICAgICAgICBjaGFuZ2VkOiB7fSxcbiAgICAgICAgICAgICAgICByZW1vdmVkOiBbYEB0YXNrLyR7dGFza0lkfWBdLFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEV4cGVydEVycm9yTG9nKCk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLmdldCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5lcnJvcmxvZ0V4cGVydCkpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJFcnJvckxvZz4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRXJyb3JMb2dQZGYoZXJyb3JMb2dOYW1lOiBzdHJpbmcsIHByb3BzTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC51cmwodGhpcy5nZXREcmFmdFVybChcInByZXNlbnRhdGlvbnMvZXJyb3JMb2cvcHJpbnRcIiksIHtcbiAgICAgICAgICAgIGVycm9yTG9nTmFtZTogZXJyb3JMb2dOYW1lLFxuICAgICAgICAgICAgcHJvcHNEcml2ZU5hbWU6IHByb3BzTmFtZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNsZWFyRHJhZnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJjbGVhclwiKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNvbnZlcnREcmFmdEZyb21QcmV2R2Z2KHsgcHJldkdmdkRyYWZ0SWQsIGdmdiB9OiBDb252ZXJ0RHJhZnRSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJjb252ZXJ0XCIpKS53aXRoUXVlcnlQYXJhbXMoe1xuICAgICAgICAgICAgaWQ6IHByZXZHZnZEcmFmdElkLFxuICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZW5kQ2hhbmdlU2V0KGRhdGE6IFNlcnZlckNoYW5nZVNldCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoc3RyYW5nZU9wdGlvbnMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KGRhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZW5kQ2hhbmdlU2V0U3luYyhkYXRhOiBTZXJ2ZXJDaGFuZ2VTZXQpOiBIdHRwU3RhdHVzQ29kZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdFN5bmMoXG4gICAgICAgICAgICB0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lciksXG4gICAgICAgICAgICBzdHJhbmdlT3B0aW9ucyxcbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UmVxdWlzaXRlcyhyZXF1aXNpdGVMaXN0OiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8U2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHJlcXVpc2l0ZUxpc3QpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldElubmVyKHBhdGhzOiB1bmRlZmluZWQgfCByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8U2VydmVySW5uZXJSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShwYXRocylcbiAgICAgICAgICAgIC5qc29uPFNlcnZlcklubmVyUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhcnRpYWxJbm5lcihydWxlczogW1wiKlwiXSB8IHN0cmluZ1tdLCBtYXhJbnN0YW5jZUNvdW50PzogbnVtYmVyKTogUHJvbWlzZTxTZXJ2ZXJJbm5lclJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtcGFydGlhbC1pbm5lclwiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMobWF4SW5zdGFuY2VDb3VudCAhPSB1bmRlZmluZWQgJiYgeyBtYXhJbnN0YW5jZUNvdW50OiBtYXhJbnN0YW5jZUNvdW50LnRvU3RyaW5nKCkgfSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocnVsZXMpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJJbm5lclJlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQYXJ0aWFsSW5uZXJBc0pzb25UcmVlKHJ1bGVzOiBbXCIqXCJdIHwgc3RyaW5nW10sIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXIpOiBQcm9taXNlPFNlcnZlckpzb25SZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LXBhcnRpYWwtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKG1heEluc3RhbmNlQ291bnQgIT0gdW5kZWZpbmVkICYmIHsgbWF4SW5zdGFuY2VDb3VudDogbWF4SW5zdGFuY2VDb3VudC50b1N0cmluZygpIH0pXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZm9ybWF0OiBcIkpzb25UcmVlXCIgfSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocnVsZXMpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJKc29uUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEV4cGxhbmF0b3J5Tm90ZSgpOiBQcm9taXNlPENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5nZXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuZXhwbGFuYXRvcnlOb3RlKSlcbiAgICAgICAgICAgIC5qc29uPENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBdHRhY2htZW50QnlJZChhdHRhY2htZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QXR0YWNoSW5mbz4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KFtgQGF0dGFjaG1lbnQvJHthdHRhY2htZW50SWR9YF0pXG4gICAgICAgICAgICAuanNvbjxHZXRBdHRhY2htZW50c1Jlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gcmVzdWx0W2BAYXR0YWNobWVudC8ke2F0dGFjaG1lbnRJZH1gXT8udmFsdWUgPz8gcmVqZWN0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEF0dGFjaG1lbnRzKCk6IFByb21pc2U8QXR0YWNoSW5mb1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1pbm5lclwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoW2BAYXR0YWNobWVudC8qYF0pXG4gICAgICAgICAgICAuanNvbjxHZXRBdHRhY2htZW50c1Jlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhyZXN1bHQpLm1hcCh4ID0+IHgudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZW1vdmVBdHRhY2htZW50cyhhdHRhY2htZW50SWRzOiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoc3RyYW5nZU9wdGlvbnMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHtcbiAgICAgICAgICAgICAgICBhZGRlZDogW10sXG4gICAgICAgICAgICAgICAgY2hhbmdlZDoge30sXG4gICAgICAgICAgICAgICAgcmVtb3ZlZDogYXR0YWNobWVudElkcy5tYXAoaWQgPT4gYEBhdHRhY2htZW50LyR7aWR9YCksXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlT3JVcGRhdGVBdHRhY2htZW50cyhhdHRhY2htZW50czogcmVhZG9ubHkgQXR0YWNoSW5mb1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNoYW5nZWQgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBhdHRhY2htZW50IG9mIGF0dGFjaG1lbnRzKSB7XG4gICAgICAgICAgICBjaGFuZ2VkW2BAYXR0YWNobWVudC8ke2F0dGFjaG1lbnQuaWR9YF0gPSB7XG4gICAgICAgICAgICAgICAgY29udGVudFVyaTogYXR0YWNobWVudC5jb250ZW50VXJpLFxuICAgICAgICAgICAgICAgIGlkOiBhdHRhY2htZW50LmlkLFxuICAgICAgICAgICAgICAgIG1ldGE6IGF0dGFjaG1lbnQubWV0YSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHN0cmFuZ2VPcHRpb25zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7XG4gICAgICAgICAgICAgICAgYWRkZWQ6IFtdLFxuICAgICAgICAgICAgICAgIGNoYW5nZWQ6IGNoYW5nZWQsXG4gICAgICAgICAgICAgICAgcmVtb3ZlZDogW10sXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0UHJlc2VudGF0aW9uKHByZXNlbnRhdGlvblR5cGU6IERyYWZ0UHJlc2VudGF0aW9uVHlwZSwgY29udGVudDogc3RyaW5nIHwgdW5rbm93bik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgcmVxdWVzdCA9IHRoaXMuaHR0cENsaWVudC5wdXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlKSk7XG4gICAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3Qud2l0aFJhd0JvZHkoY29udGVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNCdWZmZXIoY29udGVudCkpIHtcbiAgICAgICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LndpdGhSYXdCb2R5KGNvbnRlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3Qud2l0aEpzb25Cb2R5KGNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHJlcXVlc3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHBhdGNoUHJlc2VudGF0aW9uKFxuICAgICAgICBwcmVzZW50YXRpb25UeXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUsXG4gICAgICAgIHByZXNlbnRhdGlvbkNvbnRlbnQ6IFByZXNlbnRhdGlvbkNvbnRlbnRcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBhdGNoKHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwocHJlc2VudGF0aW9uVHlwZSkpLndpdGhKc29uQm9keShwcmVzZW50YXRpb25Db250ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RmlsZVByb3BlcnRpZXMoZHJpdmVVcmk6IHN0cmluZyk6IFByb21pc2U8RmlsZVByb3BlcnRpZXMgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5nZXQoYHYxL2ZpbGVzL2dldC1wcm9wZXJ0aWVzYClcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBkcml2ZVVyaTogZHJpdmVVcmkgfSlcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQwMCk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbjxGaWxlUHJvcGVydGllcz4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcHJlcGFyZUFuZEdldEZpbGVQcm9wZXJ0aWVzKGRyaXZlVXJpOiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlUHJvcGVydGllcyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLmdldChgdjEvZmlsZXMvcHJlcGFyZS1hbmQtZ2V0LXByb3BlcnRpZXNgKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGdmdjogZ2Z2LCBkcml2ZVVyaTogZHJpdmVVcmkgfSlcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MTMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yRGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb248eyBlcnJvckNvZGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH0+KCk7XG4gICAgICAgICAgICBpZiAoZXJyb3JEYXRhLmVycm9yQ29kZSA9PT0gXCJGdWZTaXplVG9vTGFyZ2VcIikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBGdWZTaXplVG9vTGFyZ2VFcnJvcihlcnJvckRhdGEubWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKGVycm9yRGF0YS5tZXNzYWdlLCByZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPEZpbGVQcm9wZXJ0aWVzPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB1cGxvYWRBbmRHZXRGaWxlUHJvcGVydGllcyhcbiAgICAgICAgZHJpdmVVcmlzOiBzdHJpbmdbXSxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPFVwbG9hZEZpbGVQcm9wZXJ0aWVzUmVzcG9uc2U+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL2ZpbGVzL3VwbG9hZC1hbmQtZ2V0LXByb3BlcnRpZXNgKVxuICAgICAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiB9KVxuICAgICAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoZHJpdmVVcmlzKVxuICAgICAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAgICAgLmFjY2VwdENvZGUoNDAwKVxuICAgICAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbjx7IGVycm9yQ29kZTogU2VydmVyRXJyb3JzOyBtZXNzYWdlOiBzdHJpbmcgfT4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzZXJ2ZXJFcnJvcjogZGF0YS5lcnJvckNvZGUsIGludmFsaWRTb3VyY2VEcml2ZUNvbnRlbnROYW1lczogXCJcIiwgc291cmNlc1RvdGFsQ291bnQ6IDAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uPFVwbG9hZEZpbGVQcm9wZXJ0aWVzUmVzcG9uc2U+KCk7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzZXJ2ZXJFcnJvcjogU2VydmVyRXJyb3JzLlVua25vd25FcnJvcixcbiAgICAgICAgICAgICAgICBpbnZhbGlkU291cmNlRHJpdmVDb250ZW50TmFtZXM6IFwiXCIsXG4gICAgICAgICAgICAgICAgc291cmNlc1RvdGFsQ291bnQ6IDAsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldEZ1ZkJ5RHJpdmVVcmkoZHJpdmVVcmk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnQucHV0KHRoaXMuZ2V0RHJhZnRVcmwoXCJzZXQtZnVmXCIpKS53aXRoUXVlcnlQYXJhbXMoeyBkcml2ZVVyaTogZHJpdmVVcmkgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNvbWJpbmVGdWZCeURyaXZlVXJpKFxuICAgICAgICBkcml2ZVVyaTogc3RyaW5nLFxuICAgICAgICBjb21iaW5lTWV0aG9kOiBGdWZDb21iaW5lTWV0aG9kLFxuICAgICAgICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsXG4gICAgKTogUHJvbWlzZTxDb21iaW5lRnVmUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwidHJhbnNmZXIvY29tYmluZS13aXRoLWZ1ZlwiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBmdWZEcml2ZVVyaTogZHJpdmVVcmksIGNvbWJpbmVNZXRob2Q6IGNvbWJpbmVNZXRob2QgfSlcbiAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpO1xuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDApIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmpzb248Q29tYmluZUZ1ZlJlc3VsdD4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgbXVsdGlwbGVDb21iaW5lRnVmQnlEcml2ZVVyaShcbiAgICAgICAgZHJpdmVVcmlzOiBzdHJpbmdbXSxcbiAgICAgICAgY29tYmluZU1ldGhvZDogRnVmQ29tYmluZU1ldGhvZFxuICAgICk6IFByb21pc2U8Q29tYmluZUZ1ZlJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcInRyYW5zZmVyL2NvbWJpbmUtd2l0aC1mdWZzXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGNvbWJpbmVNZXRob2Q6IGNvbWJpbmVNZXRob2QgfSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoZHJpdmVVcmlzKTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPENvbWJpbmVGdWZSZXN1bHQ+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIG5vcm1hbGl6ZUJ5UnVsZXMocnVsZXM6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnQucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwibm9ybWFsaXplXCIpKS53aXRoSnNvbkJvZHkocnVsZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24ocHJlc2VudGF0aW9uVHlwZTogRHJhZnRQcmVzZW50YXRpb25UeXBlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC51cmwodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFVybChkcmFmdFJlbGF0ZWRVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgdjEvbnMvJHt0aGlzLmRyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHt0aGlzLmRyYWZ0RnVsbElkLmRyYWZ0SWR9LyR7ZHJhZnRSZWxhdGVkVXJsfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREcmFmdFVybChgcHJlc2VudGF0aW9ucy8ke3ByZXNlbnRhdGlvblR5cGUudG9TdHJpbmcoKX1gKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0QWxsQ2hlY2tib3hlc0ZvcjExMzEwMyhlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHVyaSA9IHRoaXMuZ2V0RHJhZnRVcmwoXCJpbm5lci9jaGVjay1hbGxcIik7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wYXRjaCh1cmkpLndpdGhRdWVyeVBhcmFtcyh7IHNldEVuYWJsZWQ6IGVuYWJsZWQgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNlYXJjaEluc3RhbmNlc0J5VGV4dChcbiAgICAgICAgdGV4dDogc3RyaW5nLFxuICAgICAgICBwYXRoc1ByZWZpeDogc3RyaW5nLFxuICAgICAgICBwYXRoc1RvU2VhcmNoOiBzdHJpbmdbXSxcbiAgICAgICAgbWF4SW5zdGFuY2VDb3VudD86IG51bWJlclxuICAgICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3QgbWF4SW5zdGFuY2VDb3VudFBhcmFtcyA9IG1heEluc3RhbmNlQ291bnQgIT0gdW5kZWZpbmVkID8geyBtYXhJbnN0YW5jZUNvdW50OiBtYXhJbnN0YW5jZUNvdW50IH0gOiB7fTtcbiAgICAgICAgY29uc3QgcGFyYW1zID0geyBzZWFyY2hTdHJpbmc6IHRleHQsIHBhdGhzUHJlZml4OiBwYXRoc1ByZWZpeCwgLi4ubWF4SW5zdGFuY2VDb3VudFBhcmFtcyB9O1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiaW5uZXIvc2VhcmNoLWJ5LXN0cmluZ1wiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMocGFyYW1zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShwYXRoc1RvU2VhcmNoKVxuICAgICAgICAgICAgLmpzb248c3RyaW5nW10+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGN1c3RvbU5vcm1hbGl6ZShub3JtYWxpemVySWQ6IHN0cmluZywgcGF0aFByZWZpeGVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7IG5vcm1hbGl6ZXJJZDogbm9ybWFsaXplcklkIH07XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImlubmVyL2N1c3RvbS1ub3JtYWxpemVcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHBhcmFtcylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocGF0aFByZWZpeGVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW1wb3J0RW1wbG95ZWVzKHJlcXVlc3Q6IEltcG9ydEVtcGxveWVlc1JlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBhdGNoKHRoaXMuZ2V0RHJhZnRVcmwoXCJzdGFmZlwiKSkud2l0aEpzb25Cb2R5KHJlcXVlc3QpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -9,6 +9,8 @@ var _Errors = require("../Errors");
|
|
|
9
9
|
|
|
10
10
|
var _FakeDigestApiClient = require("./DigestApiClient/Fakes/FakeDigestApiClient");
|
|
11
11
|
|
|
12
|
+
var _CandyApiClient = require("./CandyApiClient");
|
|
13
|
+
|
|
12
14
|
class FakeCandyApiClient {
|
|
13
15
|
constructor() {
|
|
14
16
|
this.digestClient = new _FakeDigestApiClient.FakeDigestApiClient();
|
|
@@ -66,6 +68,10 @@ class FakeCandyApiClient {
|
|
|
66
68
|
exports.FakeCandyApiClient = FakeCandyApiClient;
|
|
67
69
|
|
|
68
70
|
class FakeCandyApiDraftClient {
|
|
71
|
+
importEmployees(request) {
|
|
72
|
+
return Promise.resolve();
|
|
73
|
+
}
|
|
74
|
+
|
|
69
75
|
cancelTask(taskId) {
|
|
70
76
|
return Promise.resolve(undefined);
|
|
71
77
|
}
|
|
@@ -102,6 +108,10 @@ class FakeCandyApiDraftClient {
|
|
|
102
108
|
throw new _Errors.NotImplementedError();
|
|
103
109
|
}
|
|
104
110
|
|
|
111
|
+
async getErrorLogWithCheckScenarios(checkScenarios) {
|
|
112
|
+
throw new _Errors.NotImplementedError();
|
|
113
|
+
}
|
|
114
|
+
|
|
105
115
|
getExpertErrorLog() {
|
|
106
116
|
throw new _Errors.NotImplementedError();
|
|
107
117
|
}
|
|
@@ -118,6 +128,14 @@ class FakeCandyApiDraftClient {
|
|
|
118
128
|
return Promise.resolve(undefined);
|
|
119
129
|
}
|
|
120
130
|
|
|
131
|
+
uploadAndGetFileProperties(driveUris, gfv, abortSignal) {
|
|
132
|
+
return Promise.resolve({
|
|
133
|
+
serverError: _CandyApiClient.ServerErrors.UnknownError,
|
|
134
|
+
sourcesTotalCount: 0,
|
|
135
|
+
invalidSourceDriveContentNames: ""
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
|
|
121
139
|
getHrefDownloadFuf() {
|
|
122
140
|
return "";
|
|
123
141
|
}
|
|
@@ -221,4 +239,4 @@ class FakeCandyApiDraftClient {
|
|
|
221
239
|
}
|
|
222
240
|
|
|
223
241
|
exports.FakeCandyApiDraftClient = FakeCandyApiDraftClient;
|
|
224
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9GYWtlQ2FuZHlBcGlDbGllbnQudHMiXSwibmFtZXMiOlsiRmFrZUNhbmR5QXBpQ2xpZW50IiwiZGlnZXN0Q2xpZW50IiwiRmFrZURpZ2VzdEFwaUNsaWVudCIsImNyZWF0ZURpZ2VzdEFwaUNsaWVudCIsImRyYWZ0RnVsbElkIiwiY3JlYXRlUGlja2xpc3QiLCJnSWQiLCJkYXRhIiwiZ2V0QWxsR2Z2cyIsImFib3J0U2lnbmFsIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjaGVja0FsaXZlIiwidW5kZWZpbmVkIiwiY3JlYXRlRHJhZnQiLCJucyIsImdmdiIsImJvZHkiLCJOb3RJbXBsZW1lbnRlZEVycm9yIiwiZm9yRHJhZnQiLCJGYWtlQ2FuZHlBcGlEcmFmdENsaWVudCIsImNyZWF0ZURyYWZ0RnJvbURyaXZlIiwiZnVmRHJpdmVVcmkiLCJjcmVhdGVFbXB0eURyYWZ0IiwiZ2V0SW5mb0J5SW5ucyIsImlubnMiLCJnZXRGZWF0dXJlRmxhZ3NXaXRob3V0UHJvbWlzZSIsImZlYXR1cmVGbGFncyIsImdldEZlYXR1cmVGbGFncyIsInJlc3BvbnNlIiwiY2FuZHlUZXN0RmVhdHVyZSIsImNhbmNlbFRhc2siLCJ0YXNrSWQiLCJjbGVhckRyYWZ0IiwiY29udmVydERyYWZ0RnJvbVByZXZHZnYiLCJyZXF1ZXN0IiwiY3JlYXRlT3JVcGRhdGVBdHRhY2htZW50cyIsImF0dGFjaG1lbnRzIiwiZW5xdWV1ZVRhc2siLCJ0YXNrSW5mbyIsImdldEFsbEF0dGFjaG1lbnRzIiwiZ2V0QWxsVGFza3MiLCJnZXRBdHRhY2htZW50QnlJZCIsImF0dGFjaG1lbnRJZCIsImdldEVycm9yTG9nIiwiZ2V0RXhwZXJ0RXJyb3JMb2ciLCJnZXRFeHBsYW5hdG9yeU5vdGUiLCJnZXRGaWxlUHJvcGVydGllcyIsImRyaXZlVXJpIiwicHJlcGFyZUFuZEdldEZpbGVQcm9wZXJ0aWVzIiwiZ2V0SHJlZkRvd25sb2FkRnVmIiwiZ2V0SHJlZkRvd25sb2FkSW5uZXIiLCJnZXRIcmVmVG9Db252ZXJ0YXRpb25Mb2ciLCJnZXRIcmVmVG9Eb3dubG9hZENsaWVudEluZm8iLCJnZXRIcmVmVG9Eb3dubG9hZEZvcm1zQ2xpZW50SW5mbyIsImdldEhyZWZUb0Rvd25sb2FkSW5uZXJGdWYiLCJnZXRIcmVmVG9FcnJvckxvZ1BkZiIsImVycm9yTG9nTmFtZSIsInByb3BzTmFtZSIsImdldEhyZWZUb0lubmVyRWRpdG9yIiwiZ2V0UmVxdWlzaXRlcyIsInJlcXVpc2l0ZUxpc3QiLCJnZXRJbm5lciIsInBhdGhzIiwiZ2V0UGFydGlhbElubmVyIiwicnVsZXMiLCJtYXhJbnN0YW5jZUNvdW50IiwiZ2V0UGFydGlhbElubmVyQXNKc29uVHJlZSIsImdldFRhc2tCeUlkIiwibm9ybWFsaXplQnlSdWxlcyIsInBhdGNoUHJlc2VudGF0aW9uIiwidHlwZSIsImNvbnRlbnQiLCJyZW1vdmVBdHRhY2htZW50cyIsImF0dGFjaG1lbnRJZHMiLCJzZW5kQ2hhbmdlU2V0Iiwic2VuZENoYW5nZVNldFN5bmMiLCJzZXRGdWZCeURyaXZlVXJpIiwiY29tYmluZUZ1ZkJ5RHJpdmVVcmkiLCJjb21iaW5lTWV0aG9kIiwibXVsdGlwbGVDb21iaW5lRnVmQnlEcml2ZVVyaSIsImRyaXZlVXJpcyIsInNldFByZXNlbnRhdGlvbiIsInNldEFsbENoZWNrYm94ZXNGb3IxMTMxMDMiLCJlbmFibGVkIiwic2VhcmNoSW5zdGFuY2VzQnlUZXh0IiwidGV4dCIsInBhdGhQcmVmaXgiLCJwYXRoc1RvU2VhcmNoIiwiY3VzdG9tTm9ybWFsaXplIiwibm9ybWFsaXplcklkIiwicGF0aFByZWZpeGVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7O0FBcUJBOztBQUVPLE1BQU1BLGtCQUFOLENBQW9EO0FBQUE7QUFBQSxTQUN0Q0MsWUFEc0MsR0FDdkIsSUFBSUMsd0NBQUosRUFEdUI7QUFBQTs7QUFHaERDLEVBQUFBLHFCQUFxQixDQUFDQyxXQUFELEVBQTZDO0FBQ3JFLFdB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LEVBQUFBLHlCQUF5QixDQUFDQyxPQUFELEVBQWtDO0FBQzlELFdBQU8xRSxPQUFPLENBQUNDLE9BQVIsQ0FBZ0JFLFNBQWhCLENBQVA7QUFDSDs7QUFFTXdFLEVBQUFBLHFCQUFxQixDQUN4QkMsSUFEd0IsRUFFeEJDLFVBRndCLEVBR3hCQyxhQUh3QixFQUl4QnRCLGdCQUp3QixFQUtQO0FBQ2pCLFdBQU94RCxPQUFPLENBQUNDLE9BQVIsQ0FBZ0IsRUFBaEIsQ0FBUDtBQUNIOztBQUVNOEUsRUFBQUEsZUFBZSxDQUFDQyxZQUFELEVBQXVCQyxZQUF2QixFQUE4RDtBQUNoRixXQUFPakYsT0FBTyxDQUFDQyxPQUFSLENBQWdCRSxTQUFoQixDQUFQO0FBQ0g7O0FBbEtnRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGlja2xpc3REYXRhSXRlbSB9IGZyb20gXCIuLi8uLi9FbmdpbmUvc3JjL0VuZ2luZS9Db3JlL1BpY2tsaXN0cy9QaWNrbGlzdFR5cGVzXCI7XG5pbXBvcnQgeyBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSBcIi4uL0Vycm9yc1wiO1xuaW1wb3J0IHsgSHR0cFN0YXR1c0NvZGUgfSBmcm9tIFwiLi4vSHR0cENsaWVudC9JSHR0cENsaWVudFwiO1xuXG5pbXBvcnQgdHlwZSB7IElDYW5keUFwaUNsaWVudCwgSUNhbmR5QXBpRHJhZnRDbGllbnQgfSBmcm9tIFwiLi9JQ2FuZHlBcGlDbGllbnRcIjtcbmltcG9ydCB0eXBlIHsgU2VydmVyRXJyb3JMb2cgfSBmcm9tIFwiLi9UeXBlcy9FcnJvckxvZy9TZXJ2ZXJFcnJvckxvZ1wiO1xuaW1wb3J0IHR5cGUgeyBTZXJ2ZXJJbm5lclJlc3BvbnNlLCBTZXJ2ZXJKc29uUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9HZXRJbm5lci9TZXJ2ZXJJbm5lclJlc3BvbnNlXCI7XG5pbXBvcnQgeyBGaWxlUHJvcGVydGllcyB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9GaWxlUHJvcGVydGllc1wiO1xuaW1wb3J0IHsgQ3JlYXRlRHJhZnRSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0NyZWF0ZURyYWZ0L0NyZWF0ZURyYWZ0UmVzcG9uc2VcIjtcbmltcG9ydCB7IENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRXhwbGFuYXRvcnlOb3RlL0NyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlXCI7XG5pbXBvcnQgeyBEcmFmdEZ1bGxJZCB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0RnVsbElkXCI7XG5pbXBvcnQgeyBTZXJ2ZXJDaGFuZ2VTZXQgfSBmcm9tIFwiLi9UeXBlcy9DaGFuZ2VTZXQvU2VydmVyQ2hhbmdlU2V0XCI7XG5pbXBvcnQgeyBTZXJ2ZXJUYXNrLCBWZXJpZnlBbmRGaXhGbnNSZXF1aXJlbWVudHNUYXNrSW5mbyB9IGZyb20gXCIuL1R5cGVzL1Rhc2tzL1Rhc2tzXCI7XG5pbXBvcnQgeyBHZXRCeUlublJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRm9jdXMvRm9jdXNUeXBlc1wiO1xuaW1wb3J0IHsgQXR0YWNoSW5mbyB9IGZyb20gXCIuL1R5cGVzL0F0dGFjaG1lbnRzL0F0dGFjbWVudHNcIjtcbmltcG9ydCB7IERyYWZ0UHJlc2VudGF0aW9uVHlwZSB9IGZyb20gXCIuL1R5cGVzL1ByZXNlbnRhdGlvbnMvRHJhZnRQcmVzZW50YXRpb25UeXBlXCI7XG5pbXBvcnQgeyBDb252ZXJ0RHJhZnRSZXF1ZXN0IH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0NvbnZlcnREcmFmdFJlcXVlc3RcIjtcbmltcG9ydCB7IFByZXNlbnRhdGlvbkNvbnRlbnQgfSBmcm9tIFwiLi9UeXBlcy9QcmVzZW50YXRpb25zL1ByZXNlbnRhdGlvbkNvbnRlbnRcIjtcbmltcG9ydCB7IFNlcnZlclJlcXVpc2l0ZXNSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0dldElubmVyL1NlcnZlclJlcXVpc2l0ZXNSZXNwb25zZVwiO1xuaW1wb3J0IHsgQ29tYmluZUZ1ZlJlc3VsdCwgRnVmQ29tYmluZU1ldGhvZCB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9Db21iaW5lRnVmUmVzdWx0XCI7XG5pbXBvcnQgeyBGZWF0dXJlRmxhZ3NSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0ZlYXR1cmVGbGFncy9GZWF0dXJlRmxhZ3NSZXNwb25zZVwiO1xuaW1wb3J0IHsgSURpZ2VzdEFwaUNsaWVudCB9IGZyb20gXCIuL0RpZ2VzdEFwaUNsaWVudC9JRGlnZXN0QXBpQ2xpZW50XCI7XG5pbXBvcnQgeyBGYWtlRGlnZXN0QXBpQ2xpZW50IH0gZnJvbSBcIi4vRGlnZXN0QXBpQ2xpZW50L0Zha2VzL0Zha2VEaWdlc3RBcGlDbGllbnRcIjtcblxuZXhwb3J0IGNsYXNzIEZha2VDYW5keUFwaUNsaWVudCBpbXBsZW1lbnRzIElDYW5keUFwaUNsaWVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWdlc3RDbGllbnQgPSBuZXcgRmFrZURpZ2VzdEFwaUNsaWVudCgpO1xuXG4gICAgcHVibGljIGNyZWF0ZURpZ2VzdEFwaUNsaWVudChkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQpOiBJRGlnZXN0QXBpQ2xpZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlnZXN0Q2xpZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVQaWNrbGlzdChnSWQ6IHN0cmluZywgZGF0YTogUGlja2xpc3REYXRhSXRlbVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlnZXN0Q2xpZW50LmNyZWF0ZVBpY2tsaXN0KGdJZCwgZGF0YSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFsbEdmdnMoYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNoZWNrQWxpdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+O1xuICAgIHB1YmxpYyBjcmVhdGVEcmFmdChuczogc3RyaW5nLCBnZnY6IHVuZGVmaW5lZCwgYm9keTogQnVmZmVyKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPjtcbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcgfCB1bmRlZmluZWQsIGJvZHk/OiBCdWZmZXIpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9yRHJhZnQoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkKTogSUNhbmR5QXBpRHJhZnRDbGllbnQge1xuICAgICAgICByZXR1cm4gbmV3IEZha2VDYW5keUFwaURyYWZ0Q2xpZW50KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZURyYWZ0RnJvbURyaXZlKFxuICAgICAgICBuczogc3RyaW5nLFxuICAgICAgICBmdWZEcml2ZVVyaTogc3RyaW5nLFxuICAgICAgICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsXG4gICAgKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZUVtcHR5RHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcsIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SW5mb0J5SW5ucyhkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQsIGlubnM6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTxHZXRCeUlublJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZlYXR1cmVGbGFnc1dpdGhvdXRQcm9taXNlKGZlYXR1cmVGbGFnczogRmVhdHVyZUZsYWdzUmVzcG9uc2UpOiBGZWF0dXJlRmxhZ3NSZXNwb25zZSB7XG4gICAgICAgIHJldHVybiBmZWF0dXJlRmxhZ3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZlYXR1cmVGbGFncygpOiBQcm9taXNlPEZlYXR1cmVGbGFnc1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlOiBGZWF0dXJlRmxhZ3NSZXNwb25zZSA9IHsgY2FuZHlUZXN0RmVhdHVyZTogXCJ0cnVlXCIgfTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmFrZUNhbmR5QXBpRHJhZnRDbGllbnQgaW1wbGVtZW50cyBJQ2FuZHlBcGlEcmFmdENsaWVudCB7XG4gICAgcHVibGljIGNhbmNlbFRhc2sodGFza0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhckRyYWZ0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbnZlcnREcmFmdEZyb21QcmV2R2Z2KHJlcXVlc3Q6IENvbnZlcnREcmFmdFJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVPclVwZGF0ZUF0dGFjaG1lbnRzKGF0dGFjaG1lbnRzOiByZWFkb25seSBBdHRhY2hJbmZvW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbnF1ZXVlVGFzayh0YXNrSWQ6IHN0cmluZywgdGFza0luZm86IFZlcmlmeUFuZEZpeEZuc1JlcXVpcmVtZW50c1Rhc2tJbmZvKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWxsQXR0YWNobWVudHMoKTogUHJvbWlzZTxBdHRhY2hJbmZvW10+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFsbFRhc2tzKCk6IFByb21pc2U8U2VydmVyVGFza1tdPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBdHRhY2htZW50QnlJZChhdHRhY2htZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QXR0YWNoSW5mbz4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFcnJvckxvZygpOiBQcm9taXNlPFNlcnZlckVycm9yTG9nPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEV4cGVydEVycm9yTG9nKCk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXhwbGFuYXRvcnlOb3RlKCk6IFByb21pc2U8Q3JlYXRlRXhwbGFuYXRvcnlOb3RlUmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsZVByb3BlcnRpZXMoZHJpdmVVcmk6IHN0cmluZyk6IFByb21pc2U8RmlsZVByb3BlcnRpZXMgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmVwYXJlQW5kR2V0RmlsZVByb3BlcnRpZXMoZHJpdmVVcmk6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZkRvd25sb2FkRnVmKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmRG93bmxvYWRJbm5lcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvQ29udmVydGF0aW9uTG9nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Eb3dubG9hZENsaWVudEluZm8oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Rvd25sb2FkRm9ybXNDbGllbnRJbmZvKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Eb3dubG9hZElubmVyRnVmKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9FcnJvckxvZ1BkZihlcnJvckxvZ05hbWU6IHN0cmluZywgcHJvcHNOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvSW5uZXJFZGl0b3IoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFJlcXVpc2l0ZXMocmVxdWlzaXRlTGlzdDogcmVhZG9ubHkgc3RyaW5nW10pOiBQcm9taXNlPFNlcnZlclJlcXVpc2l0ZXNSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldElubmVyKHBhdGhzOiByZWFkb25seSBzdHJpbmdbXSB8IHVuZGVmaW5lZCk6IFByb21pc2U8U2VydmVySW5uZXJSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhcnRpYWxJbm5lcihydWxlczogcmVhZG9ubHkgc3RyaW5nW10sIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXIpOiBQcm9taXNlPFNlcnZlcklubmVyUmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGFydGlhbElubmVyQXNKc29uVHJlZShydWxlczogcmVhZG9ubHkgc3RyaW5nW10sIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXIpOiBQcm9taXNlPFNlcnZlckpzb25SZXNwb25zZT4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUYXNrQnlJZCh0YXNrSWQ6IHN0cmluZyk6IFByb21pc2U8U2VydmVyVGFzayB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5vcm1hbGl6ZUJ5UnVsZXMocnVsZXM6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHBhdGNoUHJlc2VudGF0aW9uKHR5cGU6IERyYWZ0UHJlc2VudGF0aW9uVHlwZSwgY29udGVudDogUHJlc2VudGF0aW9uQ29udGVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUF0dGFjaG1lbnRzKGF0dGFjaG1lbnRJZHM6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2VuZENoYW5nZVNldChkYXRhOiBTZXJ2ZXJDaGFuZ2VTZXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZW5kQ2hhbmdlU2V0U3luYyhkYXRhOiBTZXJ2ZXJDaGFuZ2VTZXQpOiBIdHRwU3RhdHVzQ29kZSB7XG4gICAgICAgIHJldHVybiAyMDA7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEZ1ZkJ5RHJpdmVVcmkoZHJpdmVVcmk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbWJpbmVGdWZCeURyaXZlVXJpKFxuICAgICAgICBkcml2ZVVyaTogc3RyaW5nLFxuICAgICAgICBjb21iaW5lTWV0aG9kOiBGdWZDb21iaW5lTWV0aG9kXG4gICAgKTogUHJvbWlzZTxDb21iaW5lRnVmUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbXVsdGlwbGVDb21iaW5lRnVmQnlEcml2ZVVyaShcbiAgICAgICAgZHJpdmVVcmlzOiBzdHJpbmdbXSxcbiAgICAgICAgY29tYmluZU1ldGhvZDogRnVmQ29tYmluZU1ldGhvZFxuICAgICk6IFByb21pc2U8Q29tYmluZUZ1ZlJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFByZXNlbnRhdGlvbih0eXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUsIGNvbnRlbnQ6IHN0cmluZyB8IHVua25vd24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBbGxDaGVja2JveGVzRm9yMTEzMTAzKGVuYWJsZWQ6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWFyY2hJbnN0YW5jZXNCeVRleHQoXG4gICAgICAgIHRleHQ6IHN0cmluZyxcbiAgICAgICAgcGF0aFByZWZpeDogc3RyaW5nLFxuICAgICAgICBwYXRoc1RvU2VhcmNoOiBzdHJpbmdbXSxcbiAgICAgICAgbWF4SW5zdGFuY2VDb3VudD86IG51bWJlclxuICAgICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGN1c3RvbU5vcm1hbGl6ZShub3JtYWxpemVySWQ6IHN0cmluZywgcGF0aFByZWZpeGVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxufVxuIl19
|
|
242
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9GYWtlQ2FuZHlBcGlDbGllbnQudHMiXSwibmFtZXMiOlsiRmFrZUNhbmR5QXBpQ2xpZW50IiwiZGlnZXN0Q2xpZW50IiwiRmFrZURpZ2VzdEFwaUNsaWVudCIsImNyZWF0ZURpZ2VzdEFwaUNsaWVudCIsImRyYWZ0RnVsbElkIiwiY3JlYXRlUGlja2xpc3QiLCJnSWQiLCJkYXRhIiwiZ2V0QWxsR2Z2cyIsImFib3J0U2lnbmFsIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjaGVja0FsaXZlIiwidW5kZWZpbmVkIiwiY3JlYXRlRHJhZnQiLCJucyIsImdmdiIsImJvZHkiLCJOb3RJbXBsZW1lbnRlZEVycm9yIiwiZm9yRHJhZnQiLCJGYWtlQ2FuZHlBcGlEcmFmdENsaWVudCIsImNyZWF0ZURyYWZ0RnJvbURyaXZlIiwiZnVmRHJpdmVVcmkiLCJjcmVhdGVFbXB0eURyYWZ0IiwiZ2V0SW5mb0J5SW5ucyIsImlubnMiLCJnZXRGZWF0dXJlRmxhZ3NXaXRob3V0UHJvbWlzZSIsImZlYXR1cmVGbGFncyIsImdldEZlYXR1cmVGbGFncyIsInJlc3BvbnNlIiwiY2FuZHlUZXN0RmVhdHVyZSIsImltcG9ydEVtcGxveWVlcyIsInJlcXVlc3QiLCJjYW5jZWxUYXNrIiwidGFza0lkIiwiY2xlYXJEcmFmdCIsImNvbnZlcnREcmFmdEZyb21QcmV2R2Z2IiwiY3JlYXRlT3JVcGRhdGVBdHRhY2htZW50cyIsImF0dGFjaG1lbnRzIiwiZW5xdWV1ZVRhc2siLCJ0YXNrSW5mbyIsImdldEFsbEF0dGFjaG1lbnRzIiwiZ2V0QWxsVGFza3MiLCJnZXRBdHRhY2htZW50QnlJZCIsImF0dGFjaG1lbnRJZCIsImdldEVycm9yTG9nIiwiZ2V0RXJyb3JMb2dXaXRoQ2hlY2tTY2VuYXJpb3MiLCJjaGVja1NjZW5hcmlvcyIsImdldEV4cGVydEVycm9yTG9nIiwiZ2V0RXhwbGFuYXRvcnlOb3RlIiwiZ2V0RmlsZVByb3BlcnRpZXMiLCJkcml2ZVVyaSIsInByZXBhcmVBbmRHZXRGaWxlUHJvcGVydGllcyIsInVwbG9hZEFuZEdldEZpbGVQcm9wZXJ0aWVzIiwiZHJpdmVVcmlzIiwic2VydmVyRXJyb3IiLCJTZXJ2ZXJFcnJvcnMiLCJVbmtub3duRXJyb3IiLCJzb3VyY2VzVG90YWxDb3VudCIsImludmFsaWRTb3VyY2VEcml2ZUNvbnRlbnROYW1lcyIsImdldEhyZWZEb3dubG9hZEZ1ZiIsImdldEhyZWZEb3dubG9hZElubmVyIiwiZ2V0SHJlZlRvQ29udmVydGF0aW9uTG9nIiwiZ2V0SHJlZlRvRG93bmxvYWRDbGllbnRJbmZvIiwiZ2V0SHJlZlRvRG93bmxvYWRGb3Jtc0NsaWVudEluZm8iLCJnZXRIcmVmVG9Eb3dubG9hZElubmVyRnVmIiwiZ2V0SHJlZlRvRXJyb3JMb2dQZGYiLCJlcnJvckxvZ05hbWUiLCJwcm9wc05hbWUiLCJnZXRIcmVmVG9Jbm5lckVkaXRvciIsImdldFJlcXVpc2l0ZXMiLCJyZXF1aXNpdGVMaXN0IiwiZ2V0SW5uZXIiLCJwYXRocyIsImdldFBhcnRpYWxJbm5lciIsInJ1bGVzIiwibWF4SW5zdGFuY2VDb3VudCIsImdldFBhcnRpYWxJbm5lckFzSnNvblRyZWUiLCJnZXRUYXNrQnlJZCIsIm5vcm1hbGl6ZUJ5UnVsZXMiLCJwYXRjaFByZXNlbnRhdGlvbiIsInR5cGUiLCJjb250ZW50IiwicmVtb3ZlQXR0YWNobWVudHMiLCJhdHRhY2htZW50SWRzIiwic2VuZENoYW5nZVNldCIsInNlbmRDaGFuZ2VTZXRTeW5jIiwic2V0RnVmQnlEcml2ZVVyaSIsImNvbWJpbmVGdWZCeURyaXZlVXJpIiwiY29tYmluZU1ldGhvZCIsIm11bHRpcGxlQ29tYmluZUZ1ZkJ5RHJpdmVVcmkiLCJzZXRQcmVzZW50YXRpb24iLCJzZXRBbGxDaGVja2JveGVzRm9yMTEzMTAzIiwiZW5hYmxlZCIsInNlYXJjaEluc3RhbmNlc0J5VGV4dCIsInRleHQiLCJwYXRoUHJlZml4IiwicGF0aHNUb1NlYXJjaCIsImN1c3RvbU5vcm1hbGl6ZSIsIm5vcm1hbGl6ZXJJZCIsInBhdGhQcmVmaXhlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOztBQXFCQTs7QUFDQTs7QUFHTyxNQUFNQSxrQkFBTixDQUFvRDtBQUFBO0FBQUEsU0FDdENDLFlBRHNDLEdBQ3ZCLElBQUlDLHdDQUFKLEVBRHVCO0FBQUE7O0FBR2hEQyxFQUFBQSxxQkFBcUIsQ0FBQ0MsV0FBRCxFQUE2QztBQUNyRSxXQUFPLEtBQUtILFlBQVo7QUFDSDs7QUFFTUksRUFBQUEsY0FBYyxDQUFDQyxHQUFELEVBQWNDLElBQWQsRUFBOEM7QUFDL0QsU0FBS04sWUFBTCxDQUFrQkksY0FBbEIsQ0FBaUNDLEdBQWpDLEVBQXNDQyxJQUF0QztBQUNIOztBQUVNQyxFQUFBQSxVQUFVLENBQUNDLFdBQUQsRUFBK0M7QUFDNUQsV0FBT0MsT0FBTyxDQUFDQyxPQUFSLENBQWdCLEVBQWhCLENBQVA7QUFDSDs7QUFFTUMsRUFBQUEsVUFBVSxHQUFrQjtBQUMvQixXQUFPRixPQUFPLENBQUNDLE9BQVIsQ0FBZ0JFLFNBQWhCLENBQVA7QUFDSDs7QUFJTUMsRUFBQUEsV0FBVyxDQUFDQyxFQUFELEVBQWFDLEdBQWIsRUFBc0NDLElBQXRDLEVBQW1GO0FBQ2pHLFVBQU0sSUFBSUMsMkJBQUosRUFBTjtBQUNIOztBQUVNQyxFQUFBQSxRQUFRLENBQUNmLFdBQUQsRUFBaUQ7QUFDNUQsV0FBTyxJQUFJZ0IsdUJBQUosRUFBUDtBQUNIOztBQUVNQyxFQUFBQSxvQkFBb0IsQ0FDdkJOLEVBRHVCLEVBRXZCTyxXQUZ1QixFQUd2QmIsV0FIdUIsRUFJSztBQUM1QixVQUFNLElBQUlTLDJCQUFKLEVBQU47QUFDSDs7QUFFTUssRUFBQUEsZ0JBQWdCLENBQUNSLEVBQUQsRUFBYUMsR0FBYixFQUEwQlAsV0FBMUIsRUFBbUY7QUFDdEcsVUFBTSxJQUFJUywyQkFBSixFQUFOO0FBQ0g7O0FBRU1NLEVBQUFBLGFBQWEsQ0FBQ3BCLFdBQUQsRUFBMkJxQixJQUEzQixFQUErRTtBQUMvRixVQUFNLElBQUlQLDJCQUFKLEVBQU47QUFDSDs7QUFFTVEsRUFBQUEsNkJBQTZCLENBQUNDLFlBQUQsRUFBMkQ7QUFDM0YsV0FBT0EsWUFBUDtBQUNIOztBQUVNQyxFQUFBQSxlQUFlLEdBQWtDO0FBQ3BELFVBQU1DLFFBQThCLEdBQUc7QUFBRUMsTUFBQUEsZ0JBQWdCLEVBQUU7QUFBcEIsS0FBdkM7QUFDQSxXQUFPcEIsT0FBTyxDQUFDQyxPQUFSLENBQWdCa0IsUUFBaEIsQ0FBUDtBQUNIOztBQXBEc0Q7Ozs7QUF1RHBELE1BQU1ULHVCQUFOLENBQThEO0FBQzFEVyxFQUFBQSxlQUFlLENBQUNDLE9BQUQsRUFBaUQ7QUFDbkUsV0FBT3RCLE9BQU8sQ0FBQ0MsT0FBUixFQUFQO0FBQ0g7O0FBRU1zQixFQUFBQSxVQUFVLENBQUNDLE1BQUQsRUFBZ0M7QUFDN0MsV0FBT3hCLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQkUsU0FBaEIsQ0FBUDtBQUNIOztBQUVNc0IsRUFBQUEsVUFBVSxHQUFrQjtBQUMvQixXQUFPekIsT0FBTyxDQUFDQyxPQUFSLENBQWdCRSxTQUFoQixDQUFQO0FBQ0g7O0FBRU11QixFQUFBQSx1QkFBdUIsQ0FBQ0osT0FBRCxFQUE4QztBQUN4RSxXQUFPdEIsT0FBTyxDQUFDQyxPQUFSLENBQWdCRSxTQUFoQixDQUFQO0FBQ0g7O0FBRU13QixFQUFBQSx5QkFBeUIsQ0FBQ0MsV0FBRCxFQUFvRDtBQUNoRixXQUFPNUIsT0FBTyxDQUFDQyxPQUFSLENBQWdCRSxTQUFoQixDQUFQO0FBQ0g7O0FBRU0wQixFQUFBQSxXQUFXLENBQUNMLE1BQUQsRUFBaUJNLFFBQWpCLEVBQStFO0FBQzdGLFdBQU85QixPQUFPLENBQUNDLE9BQVIsQ0FBZ0JFLFNBQWhCLENBQVA7QUFDSDs7QUFFTTRCLEVBQUFBLGlCQUFpQixHQUEwQjtBQUM5QyxXQUFPL0IsT0FBTyxDQUFDQyxPQUFSLENBQWdCLEVBQWhCLENBQVA7QUFDSDs7QUFFTStCLEVBQUFBLFdBQVcsR0FBMEI7QUFDeEMsV0FBT2hDLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQixFQUFoQixDQUFQO0FBQ0g7O0FBRU1nQyxFQUFBQSxpQkFBaUIsQ0FBQ0MsWUFBRCxFQUE0QztBQUNoRSxVQUFNLElBQUkxQiwyQkFBSixFQUFOO0FBQ0g7O0FBRU0yQixFQUFBQSxXQUFXLEdBQTRCO0FBQzFDLFVBQU0sSUFBSTNCLDJCQUFKLEVBQU47QUFDSDs7QUFFeUMsUUFBN0I0Qiw2QkFBNkIsQ0FBQ0MsY0FBRCxFQUErRDtBQUNyRyxVQUFNLElBQUk3QiwyQkFBSixFQUFOO0FBQ0g7O0FBRU04QixFQUFBQSxpQkFBaUIsR0FBNEI7QUFDaEQsVUFBTSxJQUFJOUIsMkJBQUosRUFBTjtBQUNIOztBQUVNK0IsRUFBQUEsa0JBQWtCLEdBQTJDO0FBQ2hFLFVBQU0sSUFBSS9CLDJCQUFKLEVBQU47QUFDSDs7QUFFTWdDLEVBQUFBLGlCQUFpQixDQUFDQyxRQUFELEVBQXdEO0FBQzVFLFdBQU96QyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0JFLFNBQWhCLENBQVA7QUFDSDs7QUFFTXVDLEVBQUFBLDJCQUEyQixDQUFDRCxRQUFELEVBQW1CbkMsR0FBbkIsRUFBcUU7QUFDbkcsV0FBT04sT0FBTyxDQUFDQyxPQUFSLENBQWdCRSxTQUFoQixDQUFQO0FBQ0g7O0FBRU13QyxFQUFBQSwwQkFBMEIsQ0FDN0JDLFNBRDZCLEVBRTdCdEMsR0FGNkIsRUFHN0JQLFdBSDZCLEVBSVE7QUFDckMsV0FBT0MsT0FBTyxDQUFDQyxPQUFSLENBQWdCO0FBQ25CNEMsTUFBQUEsV0FBVyxFQUFFQyw2QkFBYUMsWUFEUDtBQUVuQkMsTUFBQUEsaUJBQWlCLEVBQUUsQ0FGQTtBQUduQkMsTUFBQUEsOEJBQThCLEVBQUU7QUFIYixLQUFoQixDQUFQO0FBS0g7O0FBRU1DLEVBQUFBLGtCQUFrQixHQUFXO0FBQ2hDLFdBQU8sRUFBUDtBQUNIOztBQUVNQyxFQUFBQSxvQkFBb0IsR0FBVztBQUNsQyxXQUFPLEVBQVA7QUFDSDs7QUFFTUMsRUFBQUEsd0JBQXdCLEdBQVc7QUFDdEMsV0FBTyxFQUFQO0FBQ0g7O0FBRU1DLEVBQUFBLDJCQUEyQixHQUFXO0FBQ3pDLFdBQU8sRUFBUDtBQUNIOztBQUVNQyxFQUFBQSxnQ0FBZ0MsR0FBVztBQUM5QyxXQUFPLEVBQVA7QUFDSDs7QUFFTUMsRUFBQUEseUJBQXlCLEdBQVc7QUFDdkMsV0FBTyxFQUFQO0FBQ0g7O0FBRU1DLEVBQUFBLG9CQUFvQixDQUFDQyxZQUFELEVBQXVCQyxTQUF2QixFQUFrRDtBQUN6RSxXQUFPLEVBQVA7QUFDSDs7QUFFTUMsRUFBQUEsb0JBQW9CLEdBQVc7QUFDbEMsV0FBTyxFQUFQO0FBQ0g7O0FBRXlCLFFBQWJDLGFBQWEsQ0FBQ0MsYUFBRCxFQUFzRTtBQUM1RixXQUFPLEVBQVA7QUFDSDs7QUFFb0IsUUFBUkMsUUFBUSxDQUFDQyxLQUFELEVBQXFFO0FBQ3RGLFdBQU8sRUFBUDtBQUNIOztBQUVNQyxFQUFBQSxlQUFlLENBQUNDLEtBQUQsRUFBMkJDLGdCQUEzQixFQUFvRjtBQUN0RyxVQUFNLElBQUkxRCwyQkFBSixFQUFOO0FBQ0g7O0FBRU0yRCxFQUFBQSx5QkFBeUIsQ0FBQ0YsS0FBRCxFQUEyQkMsZ0JBQTNCLEVBQW1GO0FBQy9HLFVBQU0sSUFBSTFELDJCQUFKLEVBQU47QUFDSDs7QUFFTTRELEVBQUFBLFdBQVcsQ0FBQzVDLE1BQUQsRUFBa0Q7QUFDaEUsV0FBT3hCLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQkUsU0FBaEIsQ0FBUDtBQUNIOztBQUVNa0UsRUFBQUEsZ0JBQWdCLENBQUNKLEtBQUQsRUFBK0I7QUFDbEQsV0FBT2pFLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQkUsU0FBaEIsQ0FBUDtBQUNIOztBQUVNbUUsRUFBQUEsaUJBQWlCLENBQUNDLElBQUQsRUFBOEJDLE9BQTlCLEVBQTJFO0FBQy9GLFdBQU94RSxPQUFPLENBQUNDLE9BQVIsQ0FBZ0JFLFNBQWhCLENBQVA7QUFDSDs7QUFFTXNFLEVBQUFBLGlCQUFpQixDQUFDQyxhQUFELEVBQWtEO0FBQ3RFLFdBQU8xRSxPQUFPLENBQUNDLE9BQVIsQ0FBZ0JFLFNBQWhCLENBQVA7QUFDSDs7QUFFeUIsUUFBYndFLGFBQWEsQ0FBQzlFLElBQUQsRUFBdUM7QUFDN0QsV0FBT0csT0FBTyxDQUFDQyxPQUFSLENBQWdCRSxTQUFoQixDQUFQO0FBQ0g7O0FBRU15RSxFQUFBQSxpQkFBaUIsQ0FBQy9FLElBQUQsRUFBd0M7QUFDNUQsV0FBTyxHQUFQO0FBQ0g7O0FBRU1nRixFQUFBQSxnQkFBZ0IsQ0FBQ3BDLFFBQUQsRUFBa0M7QUFDckQsV0FBT3pDLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQkUsU0FBaEIsQ0FBUDtBQUNIOztBQUVNMkUsRUFBQUEsb0JBQW9CLENBQ3ZCckMsUUFEdUIsRUFFdkJzQyxhQUZ1QixFQUdjO0FBQ3JDLFdBQU8vRSxPQUFPLENBQUNDLE9BQVIsQ0FBZ0JFLFNBQWhCLENBQVA7QUFDSDs7QUFFTTZFLEVBQUFBLDRCQUE0QixDQUMvQnBDLFNBRCtCLEVBRS9CbUMsYUFGK0IsRUFHTTtBQUNyQyxXQUFPL0UsT0FBTyxDQUFDQyxPQUFSLENBQWdCRSxTQUFoQixDQUFQO0FBQ0g7O0FBRU04RSxFQUFBQSxlQUFlLENBQUNWLElBQUQsRUFBOEJDLE9BQTlCLEVBQXdFO0FBQzFGLFdBQU94RSxPQUFPLENBQUNDLE9BQVIsQ0FBZ0JFLFNBQWhCLENBQVA7QUFDSDs7QUFFTStFLEVBQUFBLHlCQUF5QixDQUFDQyxPQUFELEVBQWtDO0FBQzlELFdBQU9uRixPQUFPLENBQUNDLE9BQVIsQ0FBZ0JFLFNBQWhCLENBQVA7QUFDSDs7QUFFTWlGLEVBQUFBLHFCQUFxQixDQUN4QkMsSUFEd0IsRUFFeEJDLFVBRndCLEVBR3hCQyxhQUh3QixFQUl4QnJCLGdCQUp3QixFQUtQO0FBQ2pCLFdBQU9sRSxPQUFPLENBQUNDLE9BQVIsQ0FBZ0IsRUFBaEIsQ0FBUDtBQUNIOztBQUVNdUYsRUFBQUEsZUFBZSxDQUFDQyxZQUFELEVBQXVCQyxZQUF2QixFQUE4RDtBQUNoRixXQUFPMUYsT0FBTyxDQUFDQyxPQUFSLENBQWdCRSxTQUFoQixDQUFQO0FBQ0g7O0FBdExnRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGlja2xpc3REYXRhSXRlbSB9IGZyb20gXCIuLi8uLi9FbmdpbmUvc3JjL0VuZ2luZS9Db3JlL1BpY2tsaXN0cy9QaWNrbGlzdFR5cGVzXCI7XG5pbXBvcnQgeyBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSBcIi4uL0Vycm9yc1wiO1xuaW1wb3J0IHsgSHR0cFN0YXR1c0NvZGUgfSBmcm9tIFwiLi4vSHR0cENsaWVudC9JSHR0cENsaWVudFwiO1xuXG5pbXBvcnQgdHlwZSB7IENoZWNrU2NlbmFyaW9UeXBlLCBJQ2FuZHlBcGlDbGllbnQsIElDYW5keUFwaURyYWZ0Q2xpZW50IH0gZnJvbSBcIi4vSUNhbmR5QXBpQ2xpZW50XCI7XG5pbXBvcnQgdHlwZSB7IFNlcnZlckVycm9yTG9nIH0gZnJvbSBcIi4vVHlwZXMvRXJyb3JMb2cvU2VydmVyRXJyb3JMb2dcIjtcbmltcG9ydCB0eXBlIHsgU2VydmVySW5uZXJSZXNwb25zZSwgU2VydmVySnNvblJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvR2V0SW5uZXIvU2VydmVySW5uZXJSZXNwb25zZVwiO1xuaW1wb3J0IHsgRmlsZVByb3BlcnRpZXMsIFVwbG9hZEZpbGVQcm9wZXJ0aWVzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9EcmFmdEFjdGlvbnMvRmlsZVByb3BlcnRpZXNcIjtcbmltcG9ydCB7IENyZWF0ZURyYWZ0UmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9DcmVhdGVEcmFmdC9DcmVhdGVEcmFmdFJlc3BvbnNlXCI7XG5pbXBvcnQgeyBDcmVhdGVFeHBsYW5hdG9yeU5vdGVSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0V4cGxhbmF0b3J5Tm90ZS9DcmVhdGVFeHBsYW5hdG9yeU5vdGVSZXNwb25zZVwiO1xuaW1wb3J0IHsgRHJhZnRGdWxsSWQgfSBmcm9tIFwiLi9UeXBlcy9EcmFmdEZ1bGxJZFwiO1xuaW1wb3J0IHsgU2VydmVyQ2hhbmdlU2V0IH0gZnJvbSBcIi4vVHlwZXMvQ2hhbmdlU2V0L1NlcnZlckNoYW5nZVNldFwiO1xuaW1wb3J0IHsgU2VydmVyVGFzaywgVmVyaWZ5QW5kRml4Rm5zUmVxdWlyZW1lbnRzVGFza0luZm8gfSBmcm9tIFwiLi9UeXBlcy9UYXNrcy9UYXNrc1wiO1xuaW1wb3J0IHsgR2V0QnlJbm5SZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0ZvY3VzL0ZvY3VzVHlwZXNcIjtcbmltcG9ydCB7IEF0dGFjaEluZm8gfSBmcm9tIFwiLi9UeXBlcy9BdHRhY2htZW50cy9BdHRhY21lbnRzXCI7XG5pbXBvcnQgeyBEcmFmdFByZXNlbnRhdGlvblR5cGUgfSBmcm9tIFwiLi9UeXBlcy9QcmVzZW50YXRpb25zL0RyYWZ0UHJlc2VudGF0aW9uVHlwZVwiO1xuaW1wb3J0IHsgQ29udmVydERyYWZ0UmVxdWVzdCB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9Db252ZXJ0RHJhZnRSZXF1ZXN0XCI7XG5pbXBvcnQgeyBQcmVzZW50YXRpb25Db250ZW50IH0gZnJvbSBcIi4vVHlwZXMvUHJlc2VudGF0aW9ucy9QcmVzZW50YXRpb25Db250ZW50XCI7XG5pbXBvcnQgeyBTZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9HZXRJbm5lci9TZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2VcIjtcbmltcG9ydCB7IENvbWJpbmVGdWZSZXN1bHQsIEZ1ZkNvbWJpbmVNZXRob2QgfSBmcm9tIFwiLi9UeXBlcy9EcmFmdEFjdGlvbnMvQ29tYmluZUZ1ZlJlc3VsdFwiO1xuaW1wb3J0IHsgRmVhdHVyZUZsYWdzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9GZWF0dXJlRmxhZ3MvRmVhdHVyZUZsYWdzUmVzcG9uc2VcIjtcbmltcG9ydCB7IElEaWdlc3RBcGlDbGllbnQgfSBmcm9tIFwiLi9EaWdlc3RBcGlDbGllbnQvSURpZ2VzdEFwaUNsaWVudFwiO1xuaW1wb3J0IHsgRmFrZURpZ2VzdEFwaUNsaWVudCB9IGZyb20gXCIuL0RpZ2VzdEFwaUNsaWVudC9GYWtlcy9GYWtlRGlnZXN0QXBpQ2xpZW50XCI7XG5pbXBvcnQgeyBTZXJ2ZXJFcnJvcnMgfSBmcm9tIFwiLi9DYW5keUFwaUNsaWVudFwiO1xuaW1wb3J0IHsgSW1wb3J0RW1wbG95ZWVzUmVxdWVzdCB9IGZyb20gXCIuL1R5cGVzL1N0YWZmL0ltcG9ydEVtcGxveWVlc1JlcXVlc3RcIjtcblxuZXhwb3J0IGNsYXNzIEZha2VDYW5keUFwaUNsaWVudCBpbXBsZW1lbnRzIElDYW5keUFwaUNsaWVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWdlc3RDbGllbnQgPSBuZXcgRmFrZURpZ2VzdEFwaUNsaWVudCgpO1xuXG4gICAgcHVibGljIGNyZWF0ZURpZ2VzdEFwaUNsaWVudChkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQpOiBJRGlnZXN0QXBpQ2xpZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlnZXN0Q2xpZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVQaWNrbGlzdChnSWQ6IHN0cmluZywgZGF0YTogUGlja2xpc3REYXRhSXRlbVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlnZXN0Q2xpZW50LmNyZWF0ZVBpY2tsaXN0KGdJZCwgZGF0YSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFsbEdmdnMoYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNoZWNrQWxpdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+O1xuICAgIHB1YmxpYyBjcmVhdGVEcmFmdChuczogc3RyaW5nLCBnZnY6IHVuZGVmaW5lZCwgYm9keTogQnVmZmVyKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPjtcbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcgfCB1bmRlZmluZWQsIGJvZHk/OiBCdWZmZXIpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9yRHJhZnQoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkKTogSUNhbmR5QXBpRHJhZnRDbGllbnQge1xuICAgICAgICByZXR1cm4gbmV3IEZha2VDYW5keUFwaURyYWZ0Q2xpZW50KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZURyYWZ0RnJvbURyaXZlKFxuICAgICAgICBuczogc3RyaW5nLFxuICAgICAgICBmdWZEcml2ZVVyaTogc3RyaW5nLFxuICAgICAgICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsXG4gICAgKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZUVtcHR5RHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcsIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SW5mb0J5SW5ucyhkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQsIGlubnM6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTxHZXRCeUlublJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZlYXR1cmVGbGFnc1dpdGhvdXRQcm9taXNlKGZlYXR1cmVGbGFnczogRmVhdHVyZUZsYWdzUmVzcG9uc2UpOiBGZWF0dXJlRmxhZ3NSZXNwb25zZSB7XG4gICAgICAgIHJldHVybiBmZWF0dXJlRmxhZ3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZlYXR1cmVGbGFncygpOiBQcm9taXNlPEZlYXR1cmVGbGFnc1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlOiBGZWF0dXJlRmxhZ3NSZXNwb25zZSA9IHsgY2FuZHlUZXN0RmVhdHVyZTogXCJ0cnVlXCIgfTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmFrZUNhbmR5QXBpRHJhZnRDbGllbnQgaW1wbGVtZW50cyBJQ2FuZHlBcGlEcmFmdENsaWVudCB7XG4gICAgcHVibGljIGltcG9ydEVtcGxveWVlcyhyZXF1ZXN0OiBJbXBvcnRFbXBsb3llZXNSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FuY2VsVGFzayh0YXNrSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyRHJhZnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29udmVydERyYWZ0RnJvbVByZXZHZnYocmVxdWVzdDogQ29udmVydERyYWZ0UmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZU9yVXBkYXRlQXR0YWNobWVudHMoYXR0YWNobWVudHM6IHJlYWRvbmx5IEF0dGFjaEluZm9bXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGVucXVldWVUYXNrKHRhc2tJZDogc3RyaW5nLCB0YXNrSW5mbzogVmVyaWZ5QW5kRml4Rm5zUmVxdWlyZW1lbnRzVGFza0luZm8pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBbGxBdHRhY2htZW50cygpOiBQcm9taXNlPEF0dGFjaEluZm9bXT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWxsVGFza3MoKTogUHJvbWlzZTxTZXJ2ZXJUYXNrW10+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEF0dGFjaG1lbnRCeUlkKGF0dGFjaG1lbnRJZDogc3RyaW5nKTogUHJvbWlzZTxBdHRhY2hJbmZvPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEVycm9yTG9nKCk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RXJyb3JMb2dXaXRoQ2hlY2tTY2VuYXJpb3MoY2hlY2tTY2VuYXJpb3M6IENoZWNrU2NlbmFyaW9UeXBlW10pOiBQcm9taXNlPFNlcnZlckVycm9yTG9nPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEV4cGVydEVycm9yTG9nKCk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXhwbGFuYXRvcnlOb3RlKCk6IFByb21pc2U8Q3JlYXRlRXhwbGFuYXRvcnlOb3RlUmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsZVByb3BlcnRpZXMoZHJpdmVVcmk6IHN0cmluZyk6IFByb21pc2U8RmlsZVByb3BlcnRpZXMgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmVwYXJlQW5kR2V0RmlsZVByb3BlcnRpZXMoZHJpdmVVcmk6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBsb2FkQW5kR2V0RmlsZVByb3BlcnRpZXMoXG4gICAgICAgIGRyaXZlVXJpczogc3RyaW5nW10sXG4gICAgICAgIGdmdjogc3RyaW5nLFxuICAgICAgICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsXG4gICAgKTogUHJvbWlzZTxVcGxvYWRGaWxlUHJvcGVydGllc1Jlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICAgICAgc2VydmVyRXJyb3I6IFNlcnZlckVycm9ycy5Vbmtub3duRXJyb3IsXG4gICAgICAgICAgICBzb3VyY2VzVG90YWxDb3VudDogMCxcbiAgICAgICAgICAgIGludmFsaWRTb3VyY2VEcml2ZUNvbnRlbnROYW1lczogXCJcIixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZEb3dubG9hZEZ1ZigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZkRvd25sb2FkSW5uZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0NvbnZlcnRhdGlvbkxvZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRDbGllbnRJbmZvKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Eb3dubG9hZEZvcm1zQ2xpZW50SW5mbygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRJbm5lckZ1ZigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRXJyb3JMb2dQZGYoZXJyb3JMb2dOYW1lOiBzdHJpbmcsIHByb3BzTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0lubmVyRWRpdG9yKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRSZXF1aXNpdGVzKHJlcXVpc2l0ZUxpc3Q6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTxTZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRJbm5lcihwYXRoczogcmVhZG9ubHkgc3RyaW5nW10gfCB1bmRlZmluZWQpOiBQcm9taXNlPFNlcnZlcklubmVyUmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQYXJ0aWFsSW5uZXIocnVsZXM6IHJlYWRvbmx5IHN0cmluZ1tdLCBtYXhJbnN0YW5jZUNvdW50PzogbnVtYmVyKTogUHJvbWlzZTxTZXJ2ZXJJbm5lclJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhcnRpYWxJbm5lckFzSnNvblRyZWUocnVsZXM6IHJlYWRvbmx5IHN0cmluZ1tdLCBtYXhJbnN0YW5jZUNvdW50PzogbnVtYmVyKTogUHJvbWlzZTxTZXJ2ZXJKc29uUmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VGFza0J5SWQodGFza0lkOiBzdHJpbmcpOiBQcm9taXNlPFNlcnZlclRhc2sgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBub3JtYWxpemVCeVJ1bGVzKHJ1bGVzOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwYXRjaFByZXNlbnRhdGlvbih0eXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUsIGNvbnRlbnQ6IFByZXNlbnRhdGlvbkNvbnRlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVBdHRhY2htZW50cyhhdHRhY2htZW50SWRzOiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNlbmRDaGFuZ2VTZXQoZGF0YTogU2VydmVyQ2hhbmdlU2V0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VuZENoYW5nZVNldFN5bmMoZGF0YTogU2VydmVyQ2hhbmdlU2V0KTogSHR0cFN0YXR1c0NvZGUge1xuICAgICAgICByZXR1cm4gMjAwO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRGdWZCeURyaXZlVXJpKGRyaXZlVXJpOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21iaW5lRnVmQnlEcml2ZVVyaShcbiAgICAgICAgZHJpdmVVcmk6IHN0cmluZyxcbiAgICAgICAgY29tYmluZU1ldGhvZDogRnVmQ29tYmluZU1ldGhvZFxuICAgICk6IFByb21pc2U8Q29tYmluZUZ1ZlJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIG11bHRpcGxlQ29tYmluZUZ1ZkJ5RHJpdmVVcmkoXG4gICAgICAgIGRyaXZlVXJpczogc3RyaW5nW10sXG4gICAgICAgIGNvbWJpbmVNZXRob2Q6IEZ1ZkNvbWJpbmVNZXRob2RcbiAgICApOiBQcm9taXNlPENvbWJpbmVGdWZSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRQcmVzZW50YXRpb24odHlwZTogRHJhZnRQcmVzZW50YXRpb25UeXBlLCBjb250ZW50OiBzdHJpbmcgfCB1bmtub3duKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QWxsQ2hlY2tib3hlc0ZvcjExMzEwMyhlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VhcmNoSW5zdGFuY2VzQnlUZXh0KFxuICAgICAgICB0ZXh0OiBzdHJpbmcsXG4gICAgICAgIHBhdGhQcmVmaXg6IHN0cmluZyxcbiAgICAgICAgcGF0aHNUb1NlYXJjaDogc3RyaW5nW10sXG4gICAgICAgIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXJcbiAgICApOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjdXN0b21Ob3JtYWxpemUobm9ybWFsaXplcklkOiBzdHJpbmcsIHBhdGhQcmVmaXhlczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -8,6 +8,6 @@ let ButtonSettingsTypeEnum;
|
|
|
8
8
|
exports.ButtonSettingsTypeEnum = ButtonSettingsTypeEnum;
|
|
9
9
|
|
|
10
10
|
(function (ButtonSettingsTypeEnum) {
|
|
11
|
-
ButtonSettingsTypeEnum["
|
|
11
|
+
ButtonSettingsTypeEnum["Revise"] = "revise";
|
|
12
12
|
})(ButtonSettingsTypeEnum || (exports.ButtonSettingsTypeEnum = ButtonSettingsTypeEnum = {}));
|
|
13
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9FbnVtcy9CdXR0b25TZXR0aW5nc1R5cGVFbnVtLnRzIl0sIm5hbWVzIjpbIkJ1dHRvblNldHRpbmdzVHlwZUVudW0iXSwibWFwcGluZ3MiOiI7Ozs7OztJQUFZQSxzQjs7O1dBQUFBLHNCO0FBQUFBLEVBQUFBLHNCO0dBQUFBLHNCLHNDQUFBQSxzQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEJ1dHRvblNldHRpbmdzVHlwZUVudW0ge1xuICAgIFJldmlzZSA9IFwicmV2aXNlXCIsXG59XG4iXX0=
|