@kontur.candy/tools 2.179.0 → 2.180.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 +3 -3
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +3 -2
- package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
<a name="2.180.0"></a>
|
|
2
|
+
# [2.180.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.179.0...release/tools/v2.180.0) (2024-04-13)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* **Tools:** core-js берется из Tools для сборки формы ([a1da9ad](https://git.skbkontur.ru/ke/candy-utils/commit/a1da9ad)), see [#8250](https://yt.skbkontur.ru/issue/fs-8250)
|
|
8
|
+
|
|
1
9
|
<a name="2.179.0"></a>
|
|
2
10
|
# [2.179.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.178.2...release/tools/v2.179.0) (2024-04-09)
|
|
3
11
|
|
|
@@ -466,8 +466,8 @@ class CandyApiDraftClient {
|
|
|
466
466
|
}).withJsonBody({
|
|
467
467
|
driveUris: driveUris,
|
|
468
468
|
arguments: args
|
|
469
|
-
});
|
|
470
|
-
if (response.status === 400) {
|
|
469
|
+
}).acceptCode(400).acceptCode(500);
|
|
470
|
+
if (response.status === 400 || response.status === 500) {
|
|
471
471
|
return undefined;
|
|
472
472
|
}
|
|
473
473
|
return await response.json();
|
|
@@ -568,4 +568,4 @@ class CandyApiDraftClient {
|
|
|
568
568
|
}
|
|
569
569
|
}
|
|
570
570
|
exports.CandyApiDraftClient = CandyApiDraftClient;
|
|
571
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfVHlwaW5nVXRpbHMiLCJyZXF1aXJlIiwiX0h0dHBDbGllbnQiLCJfQXV0aGVudGljYXRpb25Nb2RlIiwiX01vZGVsUGF0aCIsIl9Gb2N1c1R5cGVzIiwiX0RyYWZ0UHJlc2VudGF0aW9uVHlwZSIsIl9Jc0J1ZmZlciIsIl9GdWZTaXplVG9vTGFyZ2VFcnJvciIsInN0cmFuZ2VPcHRpb25zIiwic3JjIiwiZGF0YVZlcnNpb24iLCJTZXJ2ZXJFcnJvcnMiLCJleHBvcnRzIiwiY29udmVydFBhdGhMb2FkU3BlY2lmaWNhdGlvblRvU3RyaW5nIiwic3BlYyIsInNraXAiLCJwYXRoT3JQYXRoUHJlZml4IiwidG9MZWdhY3lQYXRoIiwiQ2FuZHlBcGlDbGllbnQiLCJjb25zdHJ1Y3RvciIsImZldGNoSW1wbCIsImJhc2VVcmwiLCJyZXNvdXJjZVpvbmUiLCJhdXRoZW50aWNhdGlvbiIsImh0dHBDbGllbnQiLCJIdHRwQ2xpZW50IiwiY3JlYXRlQXV0aGVudGljYXRpb25Qcm92aWRlciIsImZvckRyYWZ0IiwiZHJhZnRGdWxsSWQiLCJDYW5keUFwaURyYWZ0Q2xpZW50IiwiZ2V0SW5mb0J5SW5ucyIsImlubnMiLCJwYXRocyIsIm1hcCIsImlubiIsInJlc3BvbnNlIiwicG9zdCIsImdldERyYWZ0VXJsIiwid2l0aEpzb25Cb2R5IiwianNvbiIsInJlc3VsdCIsIl9yZXNwb25zZSIsImlublNlcnZlclZhbHVlIiwidmFsdWUiLCJ1bmRlZmluZWQiLCJlcnJvciIsImVycm9yQ29kZSIsIkZvY3VzU2VydmVyRXJyb3JDb2RlIiwiTm9Jbm5FcnJvciIsIl9pbm5TZXJ2ZXJWYWx1ZSR2YWx1ZSIsIl9pbm5TZXJ2ZXJWYWx1ZSRlcnJvciIsIl9pbm5TZXJ2ZXJWYWx1ZSRlcnJvcjIiLCJnZXRBbGxHZnZzIiwiYWJvcnRTaWduYWwiLCJib2R5IiwiZ2V0IiwiY3JlYXRlRHJhZnRGcm9tRHJpdmUiLCJucyIsImZ1ZkRyaXZlVXJpIiwid2l0aFF1ZXJ5UGFyYW1zIiwid2l0aEFib3J0U2lnbmFsIiwiY3JlYXRlRW1wdHlEcmFmdCIsImdmdiIsImNyZWF0ZURyYWZ0IiwiZnVmQ29udGVudCIsIndpdGhDb250ZW50VHlwZSIsIndpdGhCb2R5RnJvbUJ1ZmZlciIsIkJ1ZmZlciIsImZyb20iLCJFcnJvciIsImNoZWNrQWxpdmUiLCJkcmFmdFJlbGF0ZWRVcmwiLCJkcmFmdElkIiwiZ2V0RmVhdHVyZUZsYWdzIiwic2V0VGVzdENsYXNzaWZpY2F0aW9uIiwidGVzdENsYXNzaWZpY2F0aW9uIiwid2l0aFJhd0JvZHkiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhdHVzIiwiZ2V0SHJlZlRvSW5uZXJFZGl0b3IiLCJ1cmwiLCJnZXRIcmVmRG93bmxvYWRGdWYiLCJnZXRIcmVmVG9Db252ZXJ0YXRpb25Mb2ciLCJnZXRIcmVmVG9Eb3dubG9hZElubmVyRnVmIiwiZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24iLCJEcmFmdFByZXNlbnRhdGlvblR5cGUiLCJpbm5lckZ1ZiIsImdldEhyZWZUb0Rvd25sb2FkQ2xpZW50SW5mbyIsImNsaWVudEluZm8iLCJnZXRIcmVmVG9Eb3dubG9hZEZvcm1zQ2xpZW50SW5mbyIsImZvcm1zQ2xpZW50SW5mbyIsImdldEhyZWZEb3dubG9hZElubmVyIiwiaW5uZXIiLCJnZXRFcnJvckxvZyIsImdldERyYWZ0UHJlc2VudGF0aW9uVXJsIiwiZXJyb3JMb2ciLCJnZXRFcnJvckxvZ1dpdGhDaGVja1NjZW5hcmlvcyIsImNoZWNrU2NlbmFyaW9zIiwiZ2V0VGFza0J5SWQiLCJ0YXNrSWQiLCJfdGFza3MiLCJ0YXNrcyIsImdldEZ1ZldpdGhBdHRhY2htZW50cyIsImdldFBhcnRpYWxGdWYiLCJydWxlcyIsImdldEFsbFRhc2tzIiwiT2JqZWN0IiwidmFsdWVzIiwieCIsImVucXVldWVUYXNrIiwidGFza0luZm8iLCJhZGRlZCIsImNoYW5nZWQiLCJpZCIsInJlbW92ZWQiLCJjYW5jZWxUYXNrIiwiZ2V0RXhwZXJ0RXJyb3JMb2ciLCJlcnJvcmxvZ0V4cGVydCIsImdldEhyZWZUb0Vycm9yTG9nUGRmIiwiZXJyb3JMb2dOYW1lIiwicHJvcHNOYW1lIiwicHJvcHNEcml2ZU5hbWUiLCJjbGVhckRyYWZ0IiwiY29udmVydERyYWZ0RnJvbVByZXZHZnYiLCJwcmV2R2Z2RHJhZnRJZCIsInNlbmRDaGFuZ2VTZXQiLCJkYXRhIiwiY3VycmVudERhdGFWZXJzaW9uIiwiYWNjZXB0Q29kZSIsImdldFN1Y2Nlc3NSZXN1bHQiLCJfZGF0YVJlc3VsdCRkYXRhVmVyc2kiLCJkYXRhUmVzdWx0IiwicmVqZWN0Iiwic2VuZENoYW5nZVdpdGhOb3JtYWxpemF0aW9uU2V0Iiwibm9ybWFsaXplcklkIiwic2VuZENoYW5nZVNldFN5bmMiLCJwb3N0U3luYyIsImdldFN1Y2Nlc3NSZXN1bHRTeW5jIiwiX2RhdGFSZXN1bHQkZGF0YVZlcnNpMiIsImdldFJlcXVpc2l0ZXMiLCJyZXF1aXNpdGVMaXN0IiwiZ2V0SW5uZXIiLCJnZXRQYXJ0aWFsSW5uZXIiLCJtYXhJbnN0YW5jZUNvdW50IiwiY29udmVydGVkUnVsZXMiLCJ0b1N0cmluZyIsImxlbmd0aCIsImdldFBhcnRpYWxJbm5lckFzSnNvblRyZWUiLCJmb3JtYXQiLCJnZXRSYXdQYXJ0aWFsSW5uZXJBc0pzb25UcmVlIiwiZ2V0RGF0YVZlcnNpb24iLCJnZXRFeHBsYW5hdG9yeU5vdGUiLCJleHBsYW5hdG9yeU5vdGUiLCJnZXRBdHRhY2htZW50QnlJZCIsImF0dGFjaG1lbnRJZCIsIl9yZXN1bHQkdmFsdWUiLCJfcmVzdWx0IiwiZ2V0QWxsQXR0YWNobWVudHMiLCJyZW1vdmVBdHRhY2htZW50cyIsImF0dGFjaG1lbnRJZHMiLCJjcmVhdGVPclVwZGF0ZUF0dGFjaG1lbnRzIiwiYXR0YWNobWVudHMiLCJhdHRhY2htZW50IiwiY29udGVudFVyaSIsIm1ldGEiLCJjcmVhdGVEcmFmdEF0dGFjaG1lbnQiLCJwYXRoIiwib3BlbkxvYWRlZEF0dGFjaG1lbnRBc0RyYWZ0IiwiZXJyb3JEYXRhIiwiRnVmU2l6ZVRvb0xhcmdlRXJyb3IiLCJtZXNzYWdlIiwiSHR0cEVycm9yIiwic2V0UHJlc2VudGF0aW9uIiwicHJlc2VudGF0aW9uVHlwZSIsImNvbnRlbnQiLCJyZXF1ZXN0IiwicHV0IiwiaXNCdWZmZXIiLCJwYXRjaFByZXNlbnRhdGlvbiIsInByZXNlbnRhdGlvbkNvbnRlbnQiLCJwYXRjaCIsImdldEZpbGVQcm9wZXJ0aWVzIiwiZHJpdmVVcmkiLCJpZ25vcmVTaXplQ2hlY2siLCJwcmVwYXJlQW5kR2V0RmlsZVByb3BlcnRpZXMiLCJ1cGxvYWRBbmRHZXRGaWxlUHJvcGVydGllcyIsImRyaXZlVXJpcyIsInNlcnZlckVycm9yIiwiaW52YWxpZFNvdXJjZURyaXZlQ29udGVudE5hbWVzIiwic291cmNlc1RvdGFsQ291bnQiLCJlIiwiVW5rbm93bkVycm9yIiwiYWNjZXB0VHJhbnNmZXJUeXBlIiwidHJhbnNmZXJUeXBlIiwidHlwZUlkIiwiYWNjZXB0TXVsdGlwbGVUcmFuc2ZlclR5cGUiLCJmaWxlcyIsInNldEZ1ZkJ5RHJpdmVVcmkiLCJjb21iaW5lRnVmQnlEcml2ZVVyaSIsImNvbWJpbmVNZXRob2QiLCJleGNlbHNUb1BhcnRpYWxGdWZzIiwicGF0aFRvVGFibGUiLCJpbXBvcnRGcm9tUGFydGlhbEZ1ZnNCeVBhdGgiLCJjb21iaW5hdG9yVHlwZSIsIm11bHRpcGxlQ29tYmluZUZ1ZkJ5RHJpdmVVcmkiLCJhcmdzIiwiYXJndW1lbnRzIiwiaW1wb3J0WG1scyIsImlzSW1wb3J0QnlGdWYiLCJpbXBvcnRCeUZ1ZiIsIkZ1ZkRyaXZlVXJpcyIsInNldERyYWZ0U2V0dGluZ3MiLCJzZXR0aW5ncyIsImdldERyYWZ0U2V0dGluZ3MiLCJub3JtYWxpemVCeVJ1bGVzIiwic2V0TXVsdGlwbGVXaXRoTm9ybWFsaXphdGlvbiIsInVyaSIsImZpbmFsUnVsZXMiLCJjb252ZXJ0VG9MZWdhY3lQYXRoIiwic2VhcmNoSW5zdGFuY2VzQnlUZXh0IiwidGV4dCIsInBhdGhzUHJlZml4IiwicGF0aHNUb1NlYXJjaCIsIm1heEluc3RhbmNlQ291bnRQYXJhbXMiLCJwYXJhbXMiLCJzZWFyY2hTdHJpbmciLCJxdWVyeUNvbGxlY3Rpb24iLCJjdXN0b21Ob3JtYWxpemUiLCJwYXRoUHJlZml4ZXMiLCJpbXBvcnRFbXBsb3llZXMiLCJkZWxldGVJbnN0YW5jZXMiLCJkZWxldGluZ1J1bGVzIiwicnVuTWFzc0FjdGlvbiIsImFjdGlvbklkIiwicGFyYW1ldGVycyIsInF1ZXJ5UGFyYW1zIiwicHJpbnQiLCJ0eXBlIiwicHJpbnRFeGNlbCIsInRhYmxlRXhjZWwiLCJjaGVja0J5UG9wZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DYW5keUFwaUNsaWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi4vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB7IEZldGNoIH0gZnJvbSBcIi4uL0h0dHBDbGllbnQvRmV0Y2hJbXBsZW1lbnRhdGlvbi9GZXRjaFwiO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yIH0gZnJvbSBcIi4uL0h0dHBDbGllbnQvSHR0cENsaWVudFwiO1xuaW1wb3J0IHsgSUh0dHBDbGllbnQgfSBmcm9tIFwiLi4vSHR0cENsaWVudC9JSHR0cENsaWVudFwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25Nb2RlLCBjcmVhdGVBdXRoZW50aWNhdGlvblByb3ZpZGVyIH0gZnJvbSBcIi4uL0h0dHBDbGllbnQvQXV0aGVudGljYXRpb25Nb2RlXCI7XG5pbXBvcnQgeyBJQ29tYmluZUJ5VHJhbnNmZXJzIH0gZnJvbSBcIi4uLy4uL0VuZ2luZS9zcmMvRW5naW5lL0NvcmUvTW9kYWxNYW5hZ2VyL01vZGFscy9VcGxvYWRTZWN0aW9uL1R5cGVzXCI7XG5pbXBvcnQgeyBjb252ZXJ0VG9MZWdhY3lQYXRoIH0gZnJvbSBcIi4uL01vZGVsUGF0aC9Nb2RlbFBhdGhcIjtcblxuaW1wb3J0IHtcbiAgICBDaGVja1NjZW5hcmlvVHlwZSxcbiAgICBGdWZXaXRoQXR0YWNobWVudHNSZXNwb25zZSxcbiAgICBJQ2FuZHlBcGlDbGllbnQsXG4gICAgSUNhbmR5QXBpRHJhZnRDbGllbnQsXG4gICAgSVNlbmRDaGFuZ2VTZXRSZXN1bHQsXG4gICAgSVNlbmRDaGFuZ2VTZXRTdWNjZXNzUmVzdWx0LFxuICAgIFBhdGhMb2FkU3BlY2lmaWNhdGlvbixcbiAgICBEcmFmdFNldHRpbmdzLFxuICAgIEJhc2VHZXRGdWZSZXNwb25zZSxcbn0gZnJvbSBcIi4vSUNhbmR5QXBpQ2xpZW50XCI7XG5pbXBvcnQgeyBTZXJ2ZXJFcnJvckxvZyB9IGZyb20gXCIuL1R5cGVzL0Vycm9yTG9nL1NlcnZlckVycm9yTG9nXCI7XG5pbXBvcnQgeyBTZXJ2ZXJJbm5lclJlc3BvbnNlLCBTZXJ2ZXJKc29uUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9HZXRJbm5lci9TZXJ2ZXJJbm5lclJlc3BvbnNlXCI7XG5pbXBvcnQge1xuICAgIEV4Y2Vsc1RvUGFydGlhbEZ1ZnNSZXNwb25zZSxcbiAgICBGaWxlUHJvcGVydGllcyxcbiAgICBJbXBvcnRGcm9tUGFydGlhbEZ1ZnNCeVBhdGhSZXNwb25zZSxcbiAgICBTZXJ2ZXJFcnJvclJlc3BvbnNlLFxuICAgIFVwbG9hZEZpbGVQcm9wZXJ0aWVzUmVzcG9uc2UsXG59IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9GaWxlUHJvcGVydGllc1wiO1xuaW1wb3J0IHsgQ3JlYXRlRHJhZnRSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0NyZWF0ZURyYWZ0L0NyZWF0ZURyYWZ0UmVzcG9uc2VcIjtcbmltcG9ydCB7IENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRXhwbGFuYXRvcnlOb3RlL0NyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlXCI7XG5pbXBvcnQgeyBEcmFmdEZ1bGxJZCB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0RnVsbElkXCI7XG5pbXBvcnQgeyBTZXJ2ZXJDaGFuZ2VTZXQgfSBmcm9tIFwiLi9UeXBlcy9DaGFuZ2VTZXQvU2VydmVyQ2hhbmdlU2V0XCI7XG5pbXBvcnQgeyBTZXJ2ZXJUYXNrLCBWZXJpZnlBbmRGaXhGbnNSZXF1aXJlbWVudHNUYXNrSW5mbyB9IGZyb20gXCIuL1R5cGVzL1Rhc2tzL1Rhc2tzXCI7XG5pbXBvcnQgeyBGb2N1c1NlcnZlckVycm9yQ29kZSwgR2V0QnlJbm5SZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0ZvY3VzL0ZvY3VzVHlwZXNcIjtcbmltcG9ydCB7IEF0dGFjaEluZm8gfSBmcm9tIFwiLi9UeXBlcy9BdHRhY2htZW50cy9BdHRhY21lbnRzXCI7XG5pbXBvcnQgeyBEcmFmdFByZXNlbnRhdGlvblR5cGUgfSBmcm9tIFwiLi9UeXBlcy9QcmVzZW50YXRpb25zL0RyYWZ0UHJlc2VudGF0aW9uVHlwZVwiO1xuaW1wb3J0IHsgUHJlc2VudGF0aW9uQ29udGVudCB9IGZyb20gXCIuL1R5cGVzL1ByZXNlbnRhdGlvbnMvUHJlc2VudGF0aW9uQ29udGVudFwiO1xuaW1wb3J0IHsgQ29udmVydERyYWZ0UmVxdWVzdCB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9Db252ZXJ0RHJhZnRSZXF1ZXN0XCI7XG5pbXBvcnQgeyBHZXRBdHRhY2htZW50c1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvQXR0YWNobWVudHMvR2V0QXR0YWNobWVudHNSZXNwb25zZVwiO1xuaW1wb3J0IHsgRm9jdXNTZXJ2ZXJSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0ZvY3VzL0ZvY3VzU2VydmVyUmVzcG9uc2VcIjtcbmltcG9ydCB7IEdldFRhc2tzU2VydmVyUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9UYXNrcy9HZXRUYXNrc1NlcnZlclJlc3BvbnNlXCI7XG5pbXBvcnQgeyBTZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9HZXRJbm5lci9TZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2VcIjtcbmltcG9ydCB7IGlzQnVmZmVyIH0gZnJvbSBcIi4vSXNCdWZmZXJcIjtcbmltcG9ydCB7IENvbWJpbmF0b3JUeXBlLCBDb21iaW5lRnVmUmVzdWx0LCBGdWZDb21iaW5lTWV0aG9kIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0NvbWJpbmVGdWZSZXN1bHRcIjtcbmltcG9ydCB7IEZlYXR1cmVGbGFnc1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRmVhdHVyZUZsYWdzL0ZlYXR1cmVGbGFnc1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBGdWZTaXplVG9vTGFyZ2VFcnJvciB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9GdWZTaXplVG9vTGFyZ2VFcnJvclwiO1xuaW1wb3J0IHsgSW1wb3J0RW1wbG95ZWVzUmVxdWVzdCB9IGZyb20gXCIuL1R5cGVzL1N0YWZmL0ltcG9ydEVtcGxveWVlc1JlcXVlc3RcIjtcbmltcG9ydCB7IE1hc3NBY3Rpb25QYXJhbWV0ZXJzIH0gZnJvbSBcIi4vVHlwZXMvTWFzc0FjdGlvbnMvTWFzc0FjdGlvblBhcmFtZXRlcnNcIjtcbmltcG9ydCB7IFByaW50VHlwZSB9IGZyb20gXCIuL1R5cGVzL1ByaW50L1ByaW50VHlwZVwiO1xuaW1wb3J0IHsgUHJpbnRSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL1ByaW50L1ByaW50UmVzcG9uc2VcIjtcbmltcG9ydCB7IFNlcnZlclJhd1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvR2V0SW5uZXIvU2VydmVyUmF3UmVzcG9uc2VcIjtcbmltcG9ydCB7IFRlc3RDbGFzc2lmaWNhdGlvbiB9IGZyb20gXCIuL1R5cGVzL1Rlc3RDbGFzc2lmaWNhdGlvblwiO1xuaW1wb3J0IHsgQ2FuZHlQb3BkUHJvdG9jb2wgfSBmcm9tIFwiLi9UeXBlcy9FcnJvckxvZy9DYW5keVBvcGRQcm90b2NvbFwiO1xuaW1wb3J0IHsgSW5zdGFuY2VzRGVsZXRpbmdSdWxlIH0gZnJvbSBcIi4vVHlwZXMvSW5zdGFuY2VzRGVsZXRpbmcvSW5zdGFuY2VzRGVsZXRpbmdSdWxlXCI7XG5pbXBvcnQgeyBWYWx1ZUZvckluc3RhbmNlc1NldHRpbmdSdWxlIH0gZnJvbSBcIi4vVHlwZXMvTWFzc0FjdGlvbnMvVmFsdWVGb3JJbnN0YW5jZXNTZXR0aW5nUnVsZVwiO1xuaW1wb3J0IHsgSW5uZXJRdWVyeVJlcXVlc3QgfSBmcm9tIFwiLi9UeXBlcy9RdWVyeUNvbGxlY3Rvbi9Jbm5lclF1ZXJ5UmVxdWVzdFwiO1xuaW1wb3J0IHsgSW5uZXJRdWVyeVJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvUXVlcnlDb2xsZWN0b24vSW5uZXJRdWVyeVJlc3BvbnNlXCI7XG5cbmNvbnN0IHN0cmFuZ2VPcHRpb25zID0geyBzcmM6IFwiY2hhbmdlU2V0XCIsIGRhdGFWZXJzaW9uOiBcIjBcIiB9O1xuXG5leHBvcnQgZW51bSBTZXJ2ZXJFcnJvcnMge1xuICAgIEZ1ZlNpemVUb29MYXJnZSA9IFwiRnVmU2l6ZVRvb0xhcmdlXCIsXG4gICAgQmFkUmVxdWVzdCA9IFwiQmFkUmVxdWVzdFwiLFxuICAgIFVua25vd25FcnJvciA9IFwiVW5rbm93bkVycm9yXCIsXG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRQYXRoTG9hZFNwZWNpZmljYXRpb25Ub1N0cmluZyhzcGVjOiBQYXRoTG9hZFNwZWNpZmljYXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiAoXG4gICAgICAgIChzcGVjLnNraXAgPyBcIi1cIiA6IFwiXCIpICtcbiAgICAgICAgKHNwZWMucGF0aE9yUGF0aFByZWZpeCA9PT0gXCIqXCIgPyBzcGVjLnBhdGhPclBhdGhQcmVmaXggOiBzcGVjLnBhdGhPclBhdGhQcmVmaXgudG9MZWdhY3lQYXRoKCkpXG4gICAgKTtcbn1cblxuZXhwb3J0IGNsYXNzIENhbmR5QXBpQ2xpZW50IGltcGxlbWVudHMgSUNhbmR5QXBpQ2xpZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHBDbGllbnQ6IElIdHRwQ2xpZW50O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBmZXRjaEltcGw6IEZldGNoLFxuICAgICAgICBiYXNlVXJsOiBzdHJpbmcsXG4gICAgICAgIHJlc291cmNlWm9uZTogdW5kZWZpbmVkIHwgc3RyaW5nLFxuICAgICAgICBhdXRoZW50aWNhdGlvbjogdW5kZWZpbmVkIHwgQXV0aGVudGljYXRpb25Nb2RlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuaHR0cENsaWVudCA9IG5ldyBIdHRwQ2xpZW50KGZldGNoSW1wbCwgYmFzZVVybCwgY3JlYXRlQXV0aGVudGljYXRpb25Qcm92aWRlcihhdXRoZW50aWNhdGlvbiksIHtcbiAgICAgICAgICAgIHJlc291cmNlWm9uZTogcmVzb3VyY2Vab25lLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9yRHJhZnQoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkKTogSUNhbmR5QXBpRHJhZnRDbGllbnQge1xuICAgICAgICByZXR1cm4gbmV3IENhbmR5QXBpRHJhZnRDbGllbnQodGhpcy5odHRwQ2xpZW50LCBkcmFmdEZ1bGxJZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEluZm9CeUlubnMoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkLCBpbm5zOiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8R2V0QnlJbm5SZXNwb25zZT4ge1xuICAgICAgICBjb25zdCBwYXRocyA9IGlubnMubWFwKGlubiA9PiBgQGZvY3VzLyR7aW5ufWApO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChkcmFmdEZ1bGxJZCwgXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHBhdGhzKVxuICAgICAgICAgICAgLmpzb248Rm9jdXNTZXJ2ZXJSZXNwb25zZT4oKTtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBHZXRCeUlublJlc3BvbnNlID0ge307XG4gICAgICAgIGZvciAoY29uc3QgaW5uIG9mIGlubnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGlublNlcnZlclZhbHVlID0gcmVzcG9uc2VbYEBmb2N1cy8ke2lubn1gXT8udmFsdWU7XG4gICAgICAgICAgICBpZiAoaW5uU2VydmVyVmFsdWUgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2lubl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBcIlNlcnZlciBkb2VzIG5vdCByZXR1cm4gaW5uIGluZm9cIixcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JDb2RlOiBGb2N1c1NlcnZlckVycm9yQ29kZS5Ob0lubkVycm9yLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtpbm5dID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaW5uU2VydmVyVmFsdWUudmFsdWUgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBlcnJvckNvZGU6IGlublNlcnZlclZhbHVlLmVycm9yQ29kZSA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBpbm5TZXJ2ZXJWYWx1ZS5lcnJvciA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxHZnZzKGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnQuZ2V0KGBidWlsZC1zZXJ2ZXIvZ2Z2c2ApLmpzb248c3RyaW5nW10+KCk7XG4gICAgICAgIHJldHVybiBib2R5O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjcmVhdGVEcmFmdEZyb21Ecml2ZShcbiAgICAgICAgbnM6IHN0cmluZyxcbiAgICAgICAgZnVmRHJpdmVVcmk6IHN0cmluZyxcbiAgICAgICAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbFxuICAgICk6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0LWZyb20tZHJpdmVgKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7XG4gICAgICAgICAgICAgICAgbnM6IG5zLFxuICAgICAgICAgICAgICAgIGZ1ZkRyaXZlVXJpOiBmdWZEcml2ZVVyaSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAud2l0aEFib3J0U2lnbmFsKGFib3J0U2lnbmFsKVxuICAgICAgICAgICAgLmpzb248Q3JlYXRlRHJhZnRSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlRW1wdHlEcmFmdChuczogc3RyaW5nLCBnZnY6IHN0cmluZywgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0YClcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiB9KVxuICAgICAgICAgICAgLndpdGhBYm9ydFNpZ25hbChhYm9ydFNpZ25hbClcbiAgICAgICAgICAgIC5qc29uPENyZWF0ZURyYWZ0UmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZURyYWZ0KG5zOiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPjtcbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiB1bmRlZmluZWQsIGZ1ZkNvbnRlbnQ6IEJ1ZmZlcik6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT47XG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZURyYWZ0KG5zOiBzdHJpbmcsIGdmdjogdW5kZWZpbmVkIHwgc3RyaW5nLCBmdWZDb250ZW50PzogQnVmZmVyKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPiB7XG4gICAgICAgIGlmIChnZnYgPT0gdW5kZWZpbmVkICYmIGZ1ZkNvbnRlbnQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7bnN9L2NyZWF0ZS1kcmFmdGApXG4gICAgICAgICAgICAgICAgLndpdGhDb250ZW50VHlwZShcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiKVxuICAgICAgICAgICAgICAgIC53aXRoQm9keUZyb21CdWZmZXIoZnVmQ29udGVudClcbiAgICAgICAgICAgICAgICAuanNvbjxDcmVhdGVEcmFmdFJlc3BvbnNlPigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChnZnYgIT0gdW5kZWZpbmVkICYmIGZ1ZkNvbnRlbnQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7bnN9L2NyZWF0ZS1kcmFmdGApXG4gICAgICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGdmdjogZ2Z2IH0pXG4gICAgICAgICAgICAgICAgLndpdGhDb250ZW50VHlwZShcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiKVxuICAgICAgICAgICAgICAgIC53aXRoQm9keUZyb21CdWZmZXIoQnVmZmVyLmZyb20oW10pKVxuICAgICAgICAgICAgICAgIC5qc29uPENyZWF0ZURyYWZ0UmVzcG9uc2U+KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGdmdiA9PSB1bmRlZmluZWQgJiYgZnVmQ29udGVudCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBjcmVhdGUgZHJhZnQ6IG5vIGdmdiBhbmQgbm8gZnVmIHNwZWNpZmllZFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0YClcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiB9KVxuICAgICAgICAgICAgLndpdGhDb250ZW50VHlwZShcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiKVxuICAgICAgICAgICAgLndpdGhCb2R5RnJvbUJ1ZmZlcihmdWZDb250ZW50KVxuICAgICAgICAgICAgLmpzb248Q3JlYXRlRHJhZnRSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2hlY2tBbGl2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LmdldChgX3N0YXR1cy9waW5nYCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFVybChkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQsIGRyYWZ0UmVsYXRlZFVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGB2MS9ucy8ke2RyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHtkcmFmdEZ1bGxJZC5kcmFmdElkfS8ke2RyYWZ0UmVsYXRlZFVybH1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRGZWF0dXJlRmxhZ3MoKTogUHJvbWlzZTxGZWF0dXJlRmxhZ3NSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50LmdldChcInYxL2ZlYXR1cmVzL2ZsYWdzXCIpLmpzb248RmVhdHVyZUZsYWdzUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldFRlc3RDbGFzc2lmaWNhdGlvbih0ZXN0Q2xhc3NpZmljYXRpb246IFRlc3RDbGFzc2lmaWNhdGlvbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QoXCIvdGVzdG9ubHkvbW9jay1jbGFzc2lmaWNhdGlvblwiKVxuICAgICAgICAgICAgLndpdGhSYXdCb2R5KEpTT04uc3RyaW5naWZ5KHRlc3RDbGFzc2lmaWNhdGlvbikpO1xuICAgICAgICBpZiAoIShyZXNwb25zZS5zdGF0dXMgPj0gMjAwICYmIHJlc3BvbnNlLnN0YXR1cyA8IDMwMCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQmFkIHJlc3BvbnNlLiBDb2RlIGlzICR7cmVzcG9uc2Uuc3RhdHVzfS5gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYW5keUFwaURyYWZ0Q2xpZW50IGltcGxlbWVudHMgSUNhbmR5QXBpRHJhZnRDbGllbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cENsaWVudDogSUh0dHBDbGllbnQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaHR0cENsaWVudDogSUh0dHBDbGllbnQsIGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZCkge1xuICAgICAgICB0aGlzLmh0dHBDbGllbnQgPSBodHRwQ2xpZW50O1xuICAgICAgICB0aGlzLmRyYWZ0RnVsbElkID0gZHJhZnRGdWxsSWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0lubmVyRWRpdG9yKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQudXJsKGBpbm5lci1lZGl0b3IvbnMvJHt0aGlzLmRyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHt0aGlzLmRyYWZ0RnVsbElkLmRyYWZ0SWR9YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZEb3dubG9hZEZ1ZigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnVybCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWZ1ZlwiKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0NvbnZlcnRhdGlvbkxvZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnVybCh0aGlzLmdldERyYWZ0VXJsKFwiY29udmVyc2lvblwiKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Rvd25sb2FkSW5uZXJGdWYoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24oRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyRnVmKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRDbGllbnRJbmZvKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5jbGllbnRJbmZvKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRGb3Jtc0NsaWVudEluZm8oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24oRHJhZnRQcmVzZW50YXRpb25UeXBlLmZvcm1zQ2xpZW50SW5mbyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZEb3dubG9hZElubmVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEVycm9yTG9nKCk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuZXJyb3JMb2cpKS5qc29uPFNlcnZlckVycm9yTG9nPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRFcnJvckxvZ1dpdGhDaGVja1NjZW5hcmlvcyhjaGVja1NjZW5hcmlvczogQ2hlY2tTY2VuYXJpb1R5cGVbXSk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImVycm9ybG9nXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7IGNoZWNrU2NlbmFyaW9zOiBjaGVja1NjZW5hcmlvcyB9KVxuICAgICAgICAgICAgLmpzb248U2VydmVyRXJyb3JMb2c+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFRhc2tCeUlkKHRhc2tJZDogc3RyaW5nKTogUHJvbWlzZTxTZXJ2ZXJUYXNrIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHRhc2tzID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShbYEB0YXNrLypgXSlcbiAgICAgICAgICAgIC5qc29uPEdldFRhc2tzU2VydmVyUmVzcG9uc2U+KCk7XG4gICAgICAgIHJldHVybiB0YXNrc1tgQHRhc2svJHt0YXNrSWR9YF0/LnZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRGdWZXaXRoQXR0YWNobWVudHMoKTogUHJvbWlzZTxGdWZXaXRoQXR0YWNobWVudHNSZXNwb25zZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLmdldCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWZ1Zi13aXRoLWF0dGFjaG1lbnRzXCIpKVxuICAgICAgICAgICAgLmpzb248RnVmV2l0aEF0dGFjaG1lbnRzUmVzcG9uc2U+KCk7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UGFydGlhbEZ1ZihydWxlczogc3RyaW5nW10pOiBQcm9taXNlPEJhc2VHZXRGdWZSZXNwb25zZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1wYXJ0aWFsLWZ1ZlwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocnVsZXMpXG4gICAgICAgICAgICAuanNvbjxCYXNlR2V0RnVmUmVzcG9uc2U+KCk7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsVGFza3MoKTogUHJvbWlzZTxTZXJ2ZXJUYXNrW10+IHtcbiAgICAgICAgY29uc3QgdGFza3MgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KFtgQHRhc2svKmBdKVxuICAgICAgICAgICAgLmpzb248R2V0VGFza3NTZXJ2ZXJSZXNwb25zZT4oKTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGFza3MpLm1hcCh4ID0+IHgudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBlbnF1ZXVlVGFzayh0YXNrSWQ6IHN0cmluZywgdGFza0luZm86IFZlcmlmeUFuZEZpeEZuc1JlcXVpcmVtZW50c1Rhc2tJbmZvKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuaW5uZXIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhzdHJhbmdlT3B0aW9ucylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoe1xuICAgICAgICAgICAgICAgIGFkZGVkOiBbXSxcbiAgICAgICAgICAgICAgICBjaGFuZ2VkOiB7XG4gICAgICAgICAgICAgICAgICAgIFtgQHRhc2svJHt0YXNrSWR9YF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRhc2tJbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRhc2tJZCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlbW92ZWQ6IFtdLFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNhbmNlbFRhc2sodGFza0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHN0cmFuZ2VPcHRpb25zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7XG4gICAgICAgICAgICAgICAgYWRkZWQ6IFtdLFxuICAgICAgICAgICAgICAgIGNoYW5nZWQ6IHt9LFxuICAgICAgICAgICAgICAgIHJlbW92ZWQ6IFtgQHRhc2svJHt0YXNrSWR9YF0sXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXhwZXJ0RXJyb3JMb2coKTogUHJvbWlzZTxTZXJ2ZXJFcnJvckxvZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAuZ2V0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmVycm9ybG9nRXhwZXJ0KSlcbiAgICAgICAgICAgIC5qc29uPFNlcnZlckVycm9yTG9nPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9FcnJvckxvZ1BkZihlcnJvckxvZ05hbWU6IHN0cmluZywgcHJvcHNOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnVybCh0aGlzLmdldERyYWZ0VXJsKFwicHJlc2VudGF0aW9ucy9lcnJvckxvZy9wcmludFwiKSwge1xuICAgICAgICAgICAgZXJyb3JMb2dOYW1lOiBlcnJvckxvZ05hbWUsXG4gICAgICAgICAgICBwcm9wc0RyaXZlTmFtZTogcHJvcHNOYW1lLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2xlYXJEcmFmdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5nZXREcmFmdFVybChcImNsZWFyXCIpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY29udmVydERyYWZ0RnJvbVByZXZHZnYoeyBwcmV2R2Z2RHJhZnRJZCwgZ2Z2IH06IENvbnZlcnREcmFmdFJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5nZXREcmFmdFVybChcImNvbnZlcnRcIikpLndpdGhRdWVyeVBhcmFtcyh7XG4gICAgICAgICAgICBpZDogcHJldkdmdkRyYWZ0SWQsXG4gICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNlbmRDaGFuZ2VTZXQoZGF0YTogU2VydmVyQ2hhbmdlU2V0LCBjdXJyZW50RGF0YVZlcnNpb246IG51bWJlcik6IFByb21pc2U8SVNlbmRDaGFuZ2VTZXRSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZGF0YVZlcnNpb246IGN1cnJlbnREYXRhVmVyc2lvbiB9KVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShkYXRhKVxuICAgICAgICAgICAgLmFjY2VwdENvZGUoNDA5KTtcblxuICAgICAgICBjb25zdCBnZXRTdWNjZXNzUmVzdWx0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YVJlc3VsdCA9IGF3YWl0IHJlc3VsdC5qc29uPHsgZGF0YVZlcnNpb24/OiBudW1iZXIgfT4oKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGF0YVZlcnNpb246IGRhdGFSZXN1bHQ/LmRhdGFWZXJzaW9uID8/IHJlamVjdChcIkludmFsaWQgZGF0YVZlcnNpb24gYWZ0ZXIgYXBwbHlpbmcgY2hhbmdlIHNldC5cIiksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiByZXN1bHQuc3RhdHVzID09IDIwMCA/IGF3YWl0IGdldFN1Y2Nlc3NSZXN1bHQoKSA6IHJlc3VsdC5zdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNlbmRDaGFuZ2VXaXRoTm9ybWFsaXphdGlvblNldChcbiAgICAgICAgZGF0YTogU2VydmVyQ2hhbmdlU2V0LFxuICAgICAgICBjdXJyZW50RGF0YVZlcnNpb246IG51bWJlcixcbiAgICAgICAgbm9ybWFsaXplcklkPzogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxJU2VuZENoYW5nZVNldFJlc3VsdD4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJpbm5lci9wYXRjaC13aXRoLW5vcm1hbGl6YXRpb25cIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZGF0YVZlcnNpb246IGN1cnJlbnREYXRhVmVyc2lvbiwgbm9ybWFsaXplcklkOiBub3JtYWxpemVySWQgfSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoZGF0YSlcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQwOSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdC5zdGF0dXMgPT0gMjAwID8gYXdhaXQgcmVzdWx0Lmpzb248SVNlbmRDaGFuZ2VTZXRTdWNjZXNzUmVzdWx0PigpIDogcmVzdWx0LnN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VuZENoYW5nZVNldFN5bmMoXG4gICAgICAgIGRhdGE6IFNlcnZlckNoYW5nZVNldCxcbiAgICAgICAgY3VycmVudERhdGFWZXJzaW9uOiBudW1iZXIsXG4gICAgICAgIG5vcm1hbGl6ZXJJZD86IHN0cmluZ1xuICAgICk6IElTZW5kQ2hhbmdlU2V0UmVzdWx0IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5odHRwQ2xpZW50LnBvc3RTeW5jKHRoaXMuZ2V0RHJhZnRVcmwoXCJpbm5lclwiKSwgeyBkYXRhVmVyc2lvbjogY3VycmVudERhdGFWZXJzaW9uIH0sIGRhdGEpO1xuXG4gICAgICAgIGNvbnN0IGdldFN1Y2Nlc3NSZXN1bHRTeW5jID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YVJlc3VsdCA9IHJlc3VsdC5qc29uPHsgZGF0YVZlcnNpb24/OiBudW1iZXIgfT4oKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGF0YVZlcnNpb246IGRhdGFSZXN1bHQ/LmRhdGFWZXJzaW9uID8/IHJlamVjdChcIkludmFsaWQgZGF0YVZlcnNpb24gYWZ0ZXIgYXBwbHlpbmcgY2hhbmdlIHNldC5cIiksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmVzdWx0LnN0YXR1cyA9PSAyMDAgPyBnZXRTdWNjZXNzUmVzdWx0U3luYygpIDogcmVzdWx0LnN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UmVxdWlzaXRlcyhyZXF1aXNpdGVMaXN0OiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8U2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHJlcXVpc2l0ZUxpc3QpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldElubmVyKHBhdGhzOiB1bmRlZmluZWQgfCByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8U2VydmVySW5uZXJSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShwYXRocylcbiAgICAgICAgICAgIC5qc29uPFNlcnZlcklubmVyUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhcnRpYWxJbm5lcihydWxlczogUGF0aExvYWRTcGVjaWZpY2F0aW9uW10sIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXIpOiBQcm9taXNlPFNlcnZlcklubmVyUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgY29udmVydGVkUnVsZXMgPSBydWxlcy5tYXAoY29udmVydFBhdGhMb2FkU3BlY2lmaWNhdGlvblRvU3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1wYXJ0aWFsLWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhtYXhJbnN0YW5jZUNvdW50ICE9IHVuZGVmaW5lZCAmJiB7IG1heEluc3RhbmNlQ291bnQ6IG1heEluc3RhbmNlQ291bnQudG9TdHJpbmcoKSB9KVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShjb252ZXJ0ZWRSdWxlcy5sZW5ndGggPiAwID8gY29udmVydGVkUnVsZXMgOiBbXCIqXCJdKVxuICAgICAgICAgICAgLmpzb248U2VydmVySW5uZXJSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UGFydGlhbElubmVyQXNKc29uVHJlZShcbiAgICAgICAgcnVsZXM6IFBhdGhMb2FkU3BlY2lmaWNhdGlvbltdLFxuICAgICAgICBtYXhJbnN0YW5jZUNvdW50PzogbnVtYmVyXG4gICAgKTogUHJvbWlzZTxTZXJ2ZXJKc29uUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgY29udmVydGVkUnVsZXMgPSBydWxlcy5tYXAoY29udmVydFBhdGhMb2FkU3BlY2lmaWNhdGlvblRvU3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1wYXJ0aWFsLWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhtYXhJbnN0YW5jZUNvdW50ICE9IHVuZGVmaW5lZCAmJiB7IG1heEluc3RhbmNlQ291bnQ6IG1heEluc3RhbmNlQ291bnQudG9TdHJpbmcoKSB9KVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGZvcm1hdDogXCJKc29uVHJlZVwiIH0pXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KGNvbnZlcnRlZFJ1bGVzLmxlbmd0aCA+IDAgPyBjb252ZXJ0ZWRSdWxlcyA6IFtcIipcIl0pXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJKc29uUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJhd1BhcnRpYWxJbm5lckFzSnNvblRyZWUoXG4gICAgICAgIHJ1bGVzOiByZWFkb25seSBQYXRoTG9hZFNwZWNpZmljYXRpb25bXSxcbiAgICAgICAgbWF4SW5zdGFuY2VDb3VudD86IG51bWJlclxuICAgICk6IFByb21pc2U8U2VydmVyUmF3UmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgY29udmVydGVkUnVsZXMgPSBydWxlcy5tYXAoY29udmVydFBhdGhMb2FkU3BlY2lmaWNhdGlvblRvU3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1wYXJ0aWFsLWlubmVyMlwiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMobWF4SW5zdGFuY2VDb3VudCAhPSB1bmRlZmluZWQgJiYgeyBtYXhJbnN0YW5jZUNvdW50OiBtYXhJbnN0YW5jZUNvdW50LnRvU3RyaW5nKCkgfSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoY29udmVydGVkUnVsZXMubGVuZ3RoID4gMCA/IGNvbnZlcnRlZFJ1bGVzIDogW1wiKlwiXSlcbiAgICAgICAgICAgIC5qc29uPFNlcnZlclJhd1Jlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREYXRhVmVyc2lvbigpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLmdldERyYWZ0VXJsKFwiaW5uZXIvZ2V0LWRhdGEtdmVyc2lvblwiKSkuanNvbjxudW1iZXI+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEV4cGxhbmF0b3J5Tm90ZSgpOiBQcm9taXNlPENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5nZXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuZXhwbGFuYXRvcnlOb3RlKSlcbiAgICAgICAgICAgIC5qc29uPENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBdHRhY2htZW50QnlJZChhdHRhY2htZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QXR0YWNoSW5mbz4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KFtgQGF0dGFjaG1lbnQvJHthdHRhY2htZW50SWR9YF0pXG4gICAgICAgICAgICAuanNvbjxHZXRBdHRhY2htZW50c1Jlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gcmVzdWx0W2BAYXR0YWNobWVudC8ke2F0dGFjaG1lbnRJZH1gXT8udmFsdWUgPz8gcmVqZWN0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEF0dGFjaG1lbnRzKCk6IFByb21pc2U8QXR0YWNoSW5mb1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1pbm5lclwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoW2BAYXR0YWNobWVudC8qYF0pXG4gICAgICAgICAgICAuanNvbjxHZXRBdHRhY2htZW50c1Jlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhyZXN1bHQpLm1hcCh4ID0+IHgudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZW1vdmVBdHRhY2htZW50cyhhdHRhY2htZW50SWRzOiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoc3RyYW5nZU9wdGlvbnMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHtcbiAgICAgICAgICAgICAgICBhZGRlZDogW10sXG4gICAgICAgICAgICAgICAgY2hhbmdlZDoge30sXG4gICAgICAgICAgICAgICAgcmVtb3ZlZDogYXR0YWNobWVudElkcy5tYXAoaWQgPT4gYEBhdHRhY2htZW50LyR7aWR9YCksXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlT3JVcGRhdGVBdHRhY2htZW50cyhhdHRhY2htZW50czogcmVhZG9ubHkgQXR0YWNoSW5mb1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNoYW5nZWQgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBhdHRhY2htZW50IG9mIGF0dGFjaG1lbnRzKSB7XG4gICAgICAgICAgICBjaGFuZ2VkW2BAYXR0YWNobWVudC8ke2F0dGFjaG1lbnQuaWR9YF0gPSB7XG4gICAgICAgICAgICAgICAgY29udGVudFVyaTogYXR0YWNobWVudC5jb250ZW50VXJpLFxuICAgICAgICAgICAgICAgIGlkOiBhdHRhY2htZW50LmlkLFxuICAgICAgICAgICAgICAgIG1ldGE6IGF0dGFjaG1lbnQubWV0YSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHN0cmFuZ2VPcHRpb25zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7XG4gICAgICAgICAgICAgICAgYWRkZWQ6IFtdLFxuICAgICAgICAgICAgICAgIGNoYW5nZWQ6IGNoYW5nZWQsXG4gICAgICAgICAgICAgICAgcmVtb3ZlZDogW10sXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlRHJhZnRBdHRhY2htZW50KGdmdjogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPEF0dGFjaEluZm8+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImV4dGVybmFsL2NyZWF0ZS1hdHRhY2htZW50LWRyYWZ0XCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGdmdjogZ2Z2LCBwYXRoOiBwYXRoIH0pXG4gICAgICAgICAgICAuanNvbjxBdHRhY2hJbmZvPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBvcGVuTG9hZGVkQXR0YWNobWVudEFzRHJhZnQoaWQ6IHN0cmluZyk6IFByb21pc2U8QXR0YWNoSW5mbz4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImV4dGVybmFsL29wZW4tbG9hZGVkLWF0dGFjaG1lbnQtYXMtZHJhZnRcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgYXR0YWNobWVudElkOiBpZCB9KVxuICAgICAgICAgICAgLmFjY2VwdENvZGUoNDEzKTtcblxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MTMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yRGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb248eyBlcnJvckNvZGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH0+KCk7XG4gICAgICAgICAgICBpZiAoZXJyb3JEYXRhLmVycm9yQ29kZSA9PT0gXCJGdWZTaXplVG9vTGFyZ2VcIikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBGdWZTaXplVG9vTGFyZ2VFcnJvcihlcnJvckRhdGEubWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKGVycm9yRGF0YS5tZXNzYWdlLCByZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPEF0dGFjaEluZm8+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldFByZXNlbnRhdGlvbihwcmVzZW50YXRpb25UeXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUsIGNvbnRlbnQ6IHN0cmluZyB8IHVua25vd24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IHJlcXVlc3QgPSB0aGlzLmh0dHBDbGllbnQucHV0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwocHJlc2VudGF0aW9uVHlwZSkpO1xuICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LndpdGhSYXdCb2R5KGNvbnRlbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQnVmZmVyKGNvbnRlbnQpKSB7XG4gICAgICAgICAgICByZXF1ZXN0ID0gcmVxdWVzdC53aXRoUmF3Qm9keShjb250ZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LndpdGhKc29uQm9keShjb250ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCByZXF1ZXN0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBwYXRjaFByZXNlbnRhdGlvbihcbiAgICAgICAgcHJlc2VudGF0aW9uVHlwZTogRHJhZnRQcmVzZW50YXRpb25UeXBlLFxuICAgICAgICBwcmVzZW50YXRpb25Db250ZW50OiBQcmVzZW50YXRpb25Db250ZW50XG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wYXRjaCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKHByZXNlbnRhdGlvblR5cGUpKS53aXRoSnNvbkJvZHkocHJlc2VudGF0aW9uQ29udGVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEZpbGVQcm9wZXJ0aWVzKFxuICAgICAgICBkcml2ZVVyaTogc3RyaW5nLFxuICAgICAgICBpZ25vcmVTaXplQ2hlY2s/OiBib29sZWFuIHwgdW5kZWZpbmVkXG4gICAgKTogUHJvbWlzZTxGaWxlUHJvcGVydGllcyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLmdldChgdjEvZmlsZXMvZ2V0LXByb3BlcnRpZXNgKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGRyaXZlVXJpOiBkcml2ZVVyaSwgaWdub3JlU2l6ZUNoZWNrOiBpZ25vcmVTaXplQ2hlY2sgPz8gZmFsc2UgfSlcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQwMClcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDQxMyB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb248RmlsZVByb3BlcnRpZXM+KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcHJlcGFyZUFuZEdldEZpbGVQcm9wZXJ0aWVzKGRyaXZlVXJpOiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlUHJvcGVydGllcyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLmdldChgdjEvZmlsZXMvcHJlcGFyZS1hbmQtZ2V0LXByb3BlcnRpZXNgKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGdmdjogZ2Z2LCBkcml2ZVVyaTogZHJpdmVVcmkgfSlcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MTMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yRGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb248eyBlcnJvckNvZGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH0+KCk7XG4gICAgICAgICAgICBpZiAoZXJyb3JEYXRhLmVycm9yQ29kZSA9PT0gXCJGdWZTaXplVG9vTGFyZ2VcIikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBGdWZTaXplVG9vTGFyZ2VFcnJvcihlcnJvckRhdGEubWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKGVycm9yRGF0YS5tZXNzYWdlLCByZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPEZpbGVQcm9wZXJ0aWVzPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB1cGxvYWRBbmRHZXRGaWxlUHJvcGVydGllcyhcbiAgICAgICAgZHJpdmVVcmlzOiBzdHJpbmdbXSxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPFVwbG9hZEZpbGVQcm9wZXJ0aWVzUmVzcG9uc2U+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL2ZpbGVzL3VwbG9hZC1hbmQtZ2V0LXByb3BlcnRpZXNgKVxuICAgICAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiB9KVxuICAgICAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoZHJpdmVVcmlzKVxuICAgICAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAgICAgLmFjY2VwdENvZGUoNDAwKVxuICAgICAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbjx7IGVycm9yQ29kZTogU2VydmVyRXJyb3JzOyBtZXNzYWdlOiBzdHJpbmcgfT4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzZXJ2ZXJFcnJvcjogZGF0YS5lcnJvckNvZGUsIGludmFsaWRTb3VyY2VEcml2ZUNvbnRlbnROYW1lczogXCJcIiwgc291cmNlc1RvdGFsQ291bnQ6IDAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uPFVwbG9hZEZpbGVQcm9wZXJ0aWVzUmVzcG9uc2U+KCk7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzZXJ2ZXJFcnJvcjogU2VydmVyRXJyb3JzLlVua25vd25FcnJvcixcbiAgICAgICAgICAgICAgICBpbnZhbGlkU291cmNlRHJpdmVDb250ZW50TmFtZXM6IFwiXCIsXG4gICAgICAgICAgICAgICAgc291cmNlc1RvdGFsQ291bnQ6IDAsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGFjY2VwdFRyYW5zZmVyVHlwZShcbiAgICAgICAgZnVmRHJpdmVVcmk6IHN0cmluZyxcbiAgICAgICAgdHJhbnNmZXJUeXBlOiBzdHJpbmcsXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPFNlcnZlckVycm9yUmVzcG9uc2UgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7dGhpcy5kcmFmdEZ1bGxJZC5uc30vZHJhZnRzLyR7dGhpcy5kcmFmdEZ1bGxJZC5kcmFmdElkfS90cmFuc2Zlci9jb21iaW5lYClcbiAgICAgICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZnVmRHJpdmVVcmk6IGZ1ZkRyaXZlVXJpLCB0eXBlSWQ6IHRyYW5zZmVyVHlwZSB9KVxuICAgICAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAgICAgLmFjY2VwdENvZGUoNDAwKVxuICAgICAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbjx7IGVycm9yQ29kZTogU2VydmVyRXJyb3JzOyBtZXNzYWdlOiBzdHJpbmcgfT4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzZXJ2ZXJFcnJvcjogZGF0YS5lcnJvckNvZGUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHNlcnZlckVycm9yOiBTZXJ2ZXJFcnJvcnMuVW5rbm93bkVycm9yIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYWNjZXB0TXVsdGlwbGVUcmFuc2ZlclR5cGUoXG4gICAgICAgIGZpbGVzOiBJQ29tYmluZUJ5VHJhbnNmZXJzW10sXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPFNlcnZlckVycm9yUmVzcG9uc2UgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7dGhpcy5kcmFmdEZ1bGxJZC5uc30vZHJhZnRzLyR7dGhpcy5kcmFmdEZ1bGxJZC5kcmFmdElkfS90cmFuc2Zlci9jb21iaW5lLW11bHRpcGxlYClcbiAgICAgICAgICAgICAgICAud2l0aEpzb25Cb2R5KGZpbGVzKVxuICAgICAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAgICAgLmFjY2VwdENvZGUoNDAwKVxuICAgICAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbjx7IGVycm9yQ29kZTogU2VydmVyRXJyb3JzOyBtZXNzYWdlOiBzdHJpbmcgfT4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzZXJ2ZXJFcnJvcjogZGF0YS5lcnJvckNvZGUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHNlcnZlckVycm9yOiBTZXJ2ZXJFcnJvcnMuVW5rbm93bkVycm9yIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0RnVmQnlEcml2ZVVyaShkcml2ZVVyaTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wdXQodGhpcy5nZXREcmFmdFVybChcInNldC1mdWZcIikpLndpdGhRdWVyeVBhcmFtcyh7IGRyaXZlVXJpOiBkcml2ZVVyaSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY29tYmluZUZ1ZkJ5RHJpdmVVcmkoXG4gICAgICAgIGRyaXZlVXJpOiBzdHJpbmcsXG4gICAgICAgIGNvbWJpbmVNZXRob2Q6IEZ1ZkNvbWJpbmVNZXRob2QsXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPENvbWJpbmVGdWZSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJ0cmFuc2Zlci9jb21iaW5lLXdpdGgtZnVmXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGZ1ZkRyaXZlVXJpOiBkcml2ZVVyaSwgY29tYmluZU1ldGhvZDogY29tYmluZU1ldGhvZCB9KVxuICAgICAgICAgICAgLndpdGhBYm9ydFNpZ25hbChhYm9ydFNpZ25hbCk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbjxDb21iaW5lRnVmUmVzdWx0PigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGNlbHNUb1BhcnRpYWxGdWZzKFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgcGF0aFRvVGFibGU6IHN0cmluZyxcbiAgICAgICAgZHJpdmVVcmlzOiBzdHJpbmdbXVxuICAgICk6IFByb21pc2U8RXhjZWxzVG9QYXJ0aWFsRnVmc1Jlc3BvbnNlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgICAgIC5wb3N0KFwidjEvZmlsZXMvZXhjZWxzLXRvLXBhcnRpYWwtZnVmc1wiKVxuICAgICAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiwgcGF0aFRvVGFibGU6IHBhdGhUb1RhYmxlIH0pXG4gICAgICAgICAgICAgICAgLndpdGhKc29uQm9keShkcml2ZVVyaXMpO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmpzb248RXhjZWxzVG9QYXJ0aWFsRnVmc1Jlc3BvbnNlPigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbXBvcnRGcm9tUGFydGlhbEZ1ZnNCeVBhdGgoXG4gICAgICAgIHBhdGhUb1RhYmxlOiBzdHJpbmcsXG4gICAgICAgIGRyaXZlVXJpOiBzdHJpbmdbXSxcbiAgICAgICAgY29tYmluZU1ldGhvZDogc3RyaW5nLFxuICAgICAgICBjb21iaW5hdG9yVHlwZTogQ29tYmluYXRvclR5cGVcbiAgICApOiBQcm9taXNlPEltcG9ydEZyb21QYXJ0aWFsRnVmc0J5UGF0aFJlc3BvbnNlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJ0cmFuc2Zlci9pbXBvcnQtZnJvbS1wYXJ0aWFsLWZ1ZnMtYnktcGF0aFwiKSlcbiAgICAgICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aFRvVGFibGU6IHBhdGhUb1RhYmxlLFxuICAgICAgICAgICAgICAgICAgICBjb21iaW5lTWV0aG9kOiBjb21iaW5lTWV0aG9kLFxuICAgICAgICAgICAgICAgICAgICBjb21iaW5hdG9yVHlwZTogY29tYmluYXRvclR5cGUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAud2l0aEpzb25Cb2R5KGRyaXZlVXJpKTtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPEltcG9ydEZyb21QYXJ0aWFsRnVmc0J5UGF0aFJlc3BvbnNlPigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBtdWx0aXBsZUNvbWJpbmVGdWZCeURyaXZlVXJpKFxuICAgICAgICBkcml2ZVVyaXM6IHN0cmluZ1tdLFxuICAgICAgICBjb21iaW5lTWV0aG9kOiBGdWZDb21iaW5lTWV0aG9kLFxuICAgICAgICBhcmdzPzogc3RyaW5nW11cbiAgICApOiBQcm9taXNlPENvbWJpbmVGdWZSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJ0cmFuc2Zlci9jb21iaW5lLXdpdGgtZnVmc1wiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBjb21iaW5lTWV0aG9kOiBjb21iaW5lTWV0aG9kIH0pXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHsgZHJpdmVVcmlzOiBkcml2ZVVyaXMsIGFyZ3VtZW50czogYXJncyB9KTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPENvbWJpbmVGdWZSZXN1bHQ+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGltcG9ydFhtbHMoXG4gICAgICAgIGRyaXZlVXJpczogc3RyaW5nW10sXG4gICAgICAgIGNvbWJpbmVNZXRob2Q6IEZ1ZkNvbWJpbmVNZXRob2QsXG4gICAgICAgIGNvbWJpbmF0b3JUeXBlOiBDb21iaW5hdG9yVHlwZSxcbiAgICAgICAgaXNJbXBvcnRCeUZ1ZjogYm9vbGVhbixcbiAgICAgICAgYXJncz86IHN0cmluZ1tdXG4gICAgKTogUHJvbWlzZTxDb21iaW5lRnVmUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwidHJhbnNmZXIvaW1wb3J0LXhtbHNcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHtcbiAgICAgICAgICAgICAgICBjb21iaW5lTWV0aG9kOiBjb21iaW5lTWV0aG9kLFxuICAgICAgICAgICAgICAgIGNvbWJpbmF0b3JUeXBlOiBjb21iaW5hdG9yVHlwZSxcbiAgICAgICAgICAgICAgICBpbXBvcnRCeUZ1ZjogaXNJbXBvcnRCeUZ1ZixcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHsgRnVmRHJpdmVVcmlzOiBkcml2ZVVyaXMsIGFyZ3VtZW50czogYXJncyB9KTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPENvbWJpbmVGdWZSZXN1bHQ+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldERyYWZ0U2V0dGluZ3Moc2V0dGluZ3M6IERyYWZ0U2V0dGluZ3MpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBhdGNoKHRoaXMuZ2V0RHJhZnRVcmwoXCJleHRlcm5hbC9zZXQtc2V0dGluZ3NcIikpLndpdGhKc29uQm9keShzZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldERyYWZ0U2V0dGluZ3MoKTogUHJvbWlzZTxEcmFmdFNldHRpbmdzPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLmdldERyYWZ0VXJsKFwiZXh0ZXJuYWwvZ2V0LXNldHRpbmdzXCIpKTtcblxuICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbjxEcmFmdFNldHRpbmdzPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBub3JtYWxpemVCeVJ1bGVzKHJ1bGVzOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5nZXREcmFmdFVybChcInRlc3Qtbm9ybWFsaXplXCIpKS53aXRoSnNvbkJvZHkocnVsZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24ocHJlc2VudGF0aW9uVHlwZTogRHJhZnRQcmVzZW50YXRpb25UeXBlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC51cmwodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFVybChkcmFmdFJlbGF0ZWRVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgdjEvbnMvJHt0aGlzLmRyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHt0aGlzLmRyYWZ0RnVsbElkLmRyYWZ0SWR9LyR7ZHJhZnRSZWxhdGVkVXJsfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREcmFmdFVybChgcHJlc2VudGF0aW9ucy8ke3ByZXNlbnRhdGlvblR5cGUudG9TdHJpbmcoKX1gKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0TXVsdGlwbGVXaXRoTm9ybWFsaXphdGlvbihydWxlczogVmFsdWVGb3JJbnN0YW5jZXNTZXR0aW5nUnVsZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHVyaSA9IHRoaXMuZ2V0RHJhZnRVcmwoXCJpbm5lci9zZXQtbXVsdGlwbGUtd2l0aC1ub3JtYWxpemF0aW9uXCIpO1xuICAgICAgICBjb25zdCBmaW5hbFJ1bGVzID0gcnVsZXMubWFwKHggPT4gKHsgLi4ueCwgcGF0aDogY29udmVydFRvTGVnYWN5UGF0aCh4LnBhdGgpIH0pKTtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBhdGNoKHVyaSkud2l0aEpzb25Cb2R5KGZpbmFsUnVsZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZWFyY2hJbnN0YW5jZXNCeVRleHQoXG4gICAgICAgIHRleHQ6IHN0cmluZyxcbiAgICAgICAgcGF0aHNQcmVmaXg6IHN0cmluZyxcbiAgICAgICAgcGF0aHNUb1NlYXJjaDogc3RyaW5nW10sXG4gICAgICAgIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXJcbiAgICApOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IG1heEluc3RhbmNlQ291bnRQYXJhbXMgPSBtYXhJbnN0YW5jZUNvdW50ICE9IHVuZGVmaW5lZCA/IHsgbWF4SW5zdGFuY2VDb3VudDogbWF4SW5zdGFuY2VDb3VudCB9IDoge307XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgc2VhcmNoU3RyaW5nOiB0ZXh0LCBwYXRoc1ByZWZpeDogcGF0aHNQcmVmaXgsIC4uLm1heEluc3RhbmNlQ291bnRQYXJhbXMgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImlubmVyL3NlYXJjaC1ieS1zdHJpbmdcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHBhcmFtcylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocGF0aHNUb1NlYXJjaClcbiAgICAgICAgICAgIC5qc29uPHN0cmluZ1tdPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBxdWVyeUNvbGxlY3Rpb24ocmVxdWVzdDogSW5uZXJRdWVyeVJlcXVlc3QsIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPElubmVyUXVlcnlSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiaW5uZXIvcXVlcnktY29sbGVjdGlvblwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocmVxdWVzdClcbiAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAuanNvbjxJbm5lclF1ZXJ5UmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGN1c3RvbU5vcm1hbGl6ZShcbiAgICAgICAgbm9ybWFsaXplcklkOiBzdHJpbmcsXG4gICAgICAgIHBhdGhQcmVmaXhlczogc3RyaW5nW10sXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0geyBub3JtYWxpemVySWQ6IG5vcm1hbGl6ZXJJZCB9O1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJpbm5lci9jdXN0b20tbm9ybWFsaXplXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhwYXJhbXMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHBhdGhQcmVmaXhlcylcbiAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbXBvcnRFbXBsb3llZXMocmVxdWVzdDogSW1wb3J0RW1wbG95ZWVzUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnQucGF0Y2godGhpcy5nZXREcmFmdFVybChcInN0YWZmXCIpKS53aXRoSnNvbkJvZHkocmVxdWVzdCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGRlbGV0ZUluc3RhbmNlcyhkZWxldGluZ1J1bGVzOiBJbnN0YW5jZXNEZWxldGluZ1J1bGVbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnQucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiaW5uZXIvZGVsZXRlLWluc3RhbmNlc1wiKSkud2l0aEpzb25Cb2R5KGRlbGV0aW5nUnVsZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBydW5NYXNzQWN0aW9uKGFjdGlvbklkOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBNYXNzQWN0aW9uUGFyYW1ldGVycyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHsgYWN0aW9uSWQ6IGFjdGlvbklkIH07XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImlubmVyL21hc3MtYWN0aW9uXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhxdWVyeVBhcmFtcylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocGFyYW1ldGVycyk7XG4gICAgfVxuXG4gICAgcHVibGljIHByaW50KHR5cGU6IFByaW50VHlwZSwgYm9keT86IHN0cmluZ1tdKTogUHJvbWlzZTxQcmludFJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoYHByZXNlbnRhdGlvbnMvaW5uZXIvcHJpbnQvJHt0eXBlfWApKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShib2R5KVxuICAgICAgICAgICAgLmpzb248UHJpbnRSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcHJpbnRFeGNlbChwYXRoVG9UYWJsZTogc3RyaW5nKTogUHJvbWlzZTxQcmludFJlc3BvbnNlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoYHByZXNlbnRhdGlvbnMvdGFibGUvcHJpbnRgKSlcbiAgICAgICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgcGF0aFRvVGFibGU6IHBhdGhUb1RhYmxlIH0pO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFibGVFeGNlbCA9IHJlc3BvbnNlLmpzb248UHJpbnRSZXNwb25zZT4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFibGVFeGNlbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2hlY2tCeVBvcGQoKTogUHJvbWlzZTxDYW5keVBvcGRQcm90b2NvbD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudC5nZXQoXG4gICAgICAgICAgICBgdjEvbnMvJHt0aGlzLmRyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHt0aGlzLmRyYWZ0RnVsbElkLmRyYWZ0SWR9L2NoZWNrQnlQb3BkYFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiByZXNwb25zZS5qc29uPENhbmR5UG9wZFByb3RvY29sPigpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsWUFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsbUJBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLFVBQUEsR0FBQUgsT0FBQTtBQTJCQSxJQUFBSSxXQUFBLEdBQUFKLE9BQUE7QUFFQSxJQUFBSyxzQkFBQSxHQUFBTCxPQUFBO0FBT0EsSUFBQU0sU0FBQSxHQUFBTixPQUFBO0FBR0EsSUFBQU8scUJBQUEsR0FBQVAsT0FBQTtBQWFBLE1BQU1RLGNBQWMsR0FBRztFQUFFQyxHQUFHLEVBQUUsV0FBVztFQUFFQyxXQUFXLEVBQUU7QUFBSSxDQUFDO0FBQUMsSUFFbERDLFlBQVksMEJBQVpBLFlBQVk7RUFBWkEsWUFBWTtFQUFaQSxZQUFZO0VBQVpBLFlBQVk7RUFBQSxPQUFaQSxZQUFZO0FBQUE7QUFBQUMsT0FBQSxDQUFBRCxZQUFBLEdBQUFBLFlBQUE7QUFNeEIsU0FBU0Usb0NBQW9DQSxDQUFDQyxJQUEyQixFQUFVO0VBQy9FLE9BQ0ksQ0FBQ0EsSUFBSSxDQUFDQyxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUUsS0FDcEJELElBQUksQ0FBQ0UsZ0JBQWdCLEtBQUssR0FBRyxHQUFHRixJ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
|
|
571
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfVHlwaW5nVXRpbHMiLCJyZXF1aXJlIiwiX0h0dHBDbGllbnQiLCJfQXV0aGVudGljYXRpb25Nb2RlIiwiX01vZGVsUGF0aCIsIl9Gb2N1c1R5cGVzIiwiX0RyYWZ0UHJlc2VudGF0aW9uVHlwZSIsIl9Jc0J1ZmZlciIsIl9GdWZTaXplVG9vTGFyZ2VFcnJvciIsInN0cmFuZ2VPcHRpb25zIiwic3JjIiwiZGF0YVZlcnNpb24iLCJTZXJ2ZXJFcnJvcnMiLCJleHBvcnRzIiwiY29udmVydFBhdGhMb2FkU3BlY2lmaWNhdGlvblRvU3RyaW5nIiwic3BlYyIsInNraXAiLCJwYXRoT3JQYXRoUHJlZml4IiwidG9MZWdhY3lQYXRoIiwiQ2FuZHlBcGlDbGllbnQiLCJjb25zdHJ1Y3RvciIsImZldGNoSW1wbCIsImJhc2VVcmwiLCJyZXNvdXJjZVpvbmUiLCJhdXRoZW50aWNhdGlvbiIsImh0dHBDbGllbnQiLCJIdHRwQ2xpZW50IiwiY3JlYXRlQXV0aGVudGljYXRpb25Qcm92aWRlciIsImZvckRyYWZ0IiwiZHJhZnRGdWxsSWQiLCJDYW5keUFwaURyYWZ0Q2xpZW50IiwiZ2V0SW5mb0J5SW5ucyIsImlubnMiLCJwYXRocyIsIm1hcCIsImlubiIsInJlc3BvbnNlIiwicG9zdCIsImdldERyYWZ0VXJsIiwid2l0aEpzb25Cb2R5IiwianNvbiIsInJlc3VsdCIsIl9yZXNwb25zZSIsImlublNlcnZlclZhbHVlIiwidmFsdWUiLCJ1bmRlZmluZWQiLCJlcnJvciIsImVycm9yQ29kZSIsIkZvY3VzU2VydmVyRXJyb3JDb2RlIiwiTm9Jbm5FcnJvciIsIl9pbm5TZXJ2ZXJWYWx1ZSR2YWx1ZSIsIl9pbm5TZXJ2ZXJWYWx1ZSRlcnJvciIsIl9pbm5TZXJ2ZXJWYWx1ZSRlcnJvcjIiLCJnZXRBbGxHZnZzIiwiYWJvcnRTaWduYWwiLCJib2R5IiwiZ2V0IiwiY3JlYXRlRHJhZnRGcm9tRHJpdmUiLCJucyIsImZ1ZkRyaXZlVXJpIiwid2l0aFF1ZXJ5UGFyYW1zIiwid2l0aEFib3J0U2lnbmFsIiwiY3JlYXRlRW1wdHlEcmFmdCIsImdmdiIsImNyZWF0ZURyYWZ0IiwiZnVmQ29udGVudCIsIndpdGhDb250ZW50VHlwZSIsIndpdGhCb2R5RnJvbUJ1ZmZlciIsIkJ1ZmZlciIsImZyb20iLCJFcnJvciIsImNoZWNrQWxpdmUiLCJkcmFmdFJlbGF0ZWRVcmwiLCJkcmFmdElkIiwiZ2V0RmVhdHVyZUZsYWdzIiwic2V0VGVzdENsYXNzaWZpY2F0aW9uIiwidGVzdENsYXNzaWZpY2F0aW9uIiwid2l0aFJhd0JvZHkiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhdHVzIiwiZ2V0SHJlZlRvSW5uZXJFZGl0b3IiLCJ1cmwiLCJnZXRIcmVmRG93bmxvYWRGdWYiLCJnZXRIcmVmVG9Db252ZXJ0YXRpb25Mb2ciLCJnZXRIcmVmVG9Eb3dubG9hZElubmVyRnVmIiwiZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24iLCJEcmFmdFByZXNlbnRhdGlvblR5cGUiLCJpbm5lckZ1ZiIsImdldEhyZWZUb0Rvd25sb2FkQ2xpZW50SW5mbyIsImNsaWVudEluZm8iLCJnZXRIcmVmVG9Eb3dubG9hZEZvcm1zQ2xpZW50SW5mbyIsImZvcm1zQ2xpZW50SW5mbyIsImdldEhyZWZEb3dubG9hZElubmVyIiwiaW5uZXIiLCJnZXRFcnJvckxvZyIsImdldERyYWZ0UHJlc2VudGF0aW9uVXJsIiwiZXJyb3JMb2ciLCJnZXRFcnJvckxvZ1dpdGhDaGVja1NjZW5hcmlvcyIsImNoZWNrU2NlbmFyaW9zIiwiZ2V0VGFza0J5SWQiLCJ0YXNrSWQiLCJfdGFza3MiLCJ0YXNrcyIsImdldEZ1ZldpdGhBdHRhY2htZW50cyIsImdldFBhcnRpYWxGdWYiLCJydWxlcyIsImdldEFsbFRhc2tzIiwiT2JqZWN0IiwidmFsdWVzIiwieCIsImVucXVldWVUYXNrIiwidGFza0luZm8iLCJhZGRlZCIsImNoYW5nZWQiLCJpZCIsInJlbW92ZWQiLCJjYW5jZWxUYXNrIiwiZ2V0RXhwZXJ0RXJyb3JMb2ciLCJlcnJvcmxvZ0V4cGVydCIsImdldEhyZWZUb0Vycm9yTG9nUGRmIiwiZXJyb3JMb2dOYW1lIiwicHJvcHNOYW1lIiwicHJvcHNEcml2ZU5hbWUiLCJjbGVhckRyYWZ0IiwiY29udmVydERyYWZ0RnJvbVByZXZHZnYiLCJwcmV2R2Z2RHJhZnRJZCIsInNlbmRDaGFuZ2VTZXQiLCJkYXRhIiwiY3VycmVudERhdGFWZXJzaW9uIiwiYWNjZXB0Q29kZSIsImdldFN1Y2Nlc3NSZXN1bHQiLCJfZGF0YVJlc3VsdCRkYXRhVmVyc2kiLCJkYXRhUmVzdWx0IiwicmVqZWN0Iiwic2VuZENoYW5nZVdpdGhOb3JtYWxpemF0aW9uU2V0Iiwibm9ybWFsaXplcklkIiwic2VuZENoYW5nZVNldFN5bmMiLCJwb3N0U3luYyIsImdldFN1Y2Nlc3NSZXN1bHRTeW5jIiwiX2RhdGFSZXN1bHQkZGF0YVZlcnNpMiIsImdldFJlcXVpc2l0ZXMiLCJyZXF1aXNpdGVMaXN0IiwiZ2V0SW5uZXIiLCJnZXRQYXJ0aWFsSW5uZXIiLCJtYXhJbnN0YW5jZUNvdW50IiwiY29udmVydGVkUnVsZXMiLCJ0b1N0cmluZyIsImxlbmd0aCIsImdldFBhcnRpYWxJbm5lckFzSnNvblRyZWUiLCJmb3JtYXQiLCJnZXRSYXdQYXJ0aWFsSW5uZXJBc0pzb25UcmVlIiwiZ2V0RGF0YVZlcnNpb24iLCJnZXRFeHBsYW5hdG9yeU5vdGUiLCJleHBsYW5hdG9yeU5vdGUiLCJnZXRBdHRhY2htZW50QnlJZCIsImF0dGFjaG1lbnRJZCIsIl9yZXN1bHQkdmFsdWUiLCJfcmVzdWx0IiwiZ2V0QWxsQXR0YWNobWVudHMiLCJyZW1vdmVBdHRhY2htZW50cyIsImF0dGFjaG1lbnRJZHMiLCJjcmVhdGVPclVwZGF0ZUF0dGFjaG1lbnRzIiwiYXR0YWNobWVudHMiLCJhdHRhY2htZW50IiwiY29udGVudFVyaSIsIm1ldGEiLCJjcmVhdGVEcmFmdEF0dGFjaG1lbnQiLCJwYXRoIiwib3BlbkxvYWRlZEF0dGFjaG1lbnRBc0RyYWZ0IiwiZXJyb3JEYXRhIiwiRnVmU2l6ZVRvb0xhcmdlRXJyb3IiLCJtZXNzYWdlIiwiSHR0cEVycm9yIiwic2V0UHJlc2VudGF0aW9uIiwicHJlc2VudGF0aW9uVHlwZSIsImNvbnRlbnQiLCJyZXF1ZXN0IiwicHV0IiwiaXNCdWZmZXIiLCJwYXRjaFByZXNlbnRhdGlvbiIsInByZXNlbnRhdGlvbkNvbnRlbnQiLCJwYXRjaCIsImdldEZpbGVQcm9wZXJ0aWVzIiwiZHJpdmVVcmkiLCJpZ25vcmVTaXplQ2hlY2siLCJwcmVwYXJlQW5kR2V0RmlsZVByb3BlcnRpZXMiLCJ1cGxvYWRBbmRHZXRGaWxlUHJvcGVydGllcyIsImRyaXZlVXJpcyIsInNlcnZlckVycm9yIiwiaW52YWxpZFNvdXJjZURyaXZlQ29udGVudE5hbWVzIiwic291cmNlc1RvdGFsQ291bnQiLCJlIiwiVW5rbm93bkVycm9yIiwiYWNjZXB0VHJhbnNmZXJUeXBlIiwidHJhbnNmZXJUeXBlIiwidHlwZUlkIiwiYWNjZXB0TXVsdGlwbGVUcmFuc2ZlclR5cGUiLCJmaWxlcyIsInNldEZ1ZkJ5RHJpdmVVcmkiLCJjb21iaW5lRnVmQnlEcml2ZVVyaSIsImNvbWJpbmVNZXRob2QiLCJleGNlbHNUb1BhcnRpYWxGdWZzIiwicGF0aFRvVGFibGUiLCJpbXBvcnRGcm9tUGFydGlhbEZ1ZnNCeVBhdGgiLCJjb21iaW5hdG9yVHlwZSIsIm11bHRpcGxlQ29tYmluZUZ1ZkJ5RHJpdmVVcmkiLCJhcmdzIiwiYXJndW1lbnRzIiwiaW1wb3J0WG1scyIsImlzSW1wb3J0QnlGdWYiLCJpbXBvcnRCeUZ1ZiIsIkZ1ZkRyaXZlVXJpcyIsInNldERyYWZ0U2V0dGluZ3MiLCJzZXR0aW5ncyIsImdldERyYWZ0U2V0dGluZ3MiLCJub3JtYWxpemVCeVJ1bGVzIiwic2V0TXVsdGlwbGVXaXRoTm9ybWFsaXphdGlvbiIsInVyaSIsImZpbmFsUnVsZXMiLCJjb252ZXJ0VG9MZWdhY3lQYXRoIiwic2VhcmNoSW5zdGFuY2VzQnlUZXh0IiwidGV4dCIsInBhdGhzUHJlZml4IiwicGF0aHNUb1NlYXJjaCIsIm1heEluc3RhbmNlQ291bnRQYXJhbXMiLCJwYXJhbXMiLCJzZWFyY2hTdHJpbmciLCJxdWVyeUNvbGxlY3Rpb24iLCJjdXN0b21Ob3JtYWxpemUiLCJwYXRoUHJlZml4ZXMiLCJpbXBvcnRFbXBsb3llZXMiLCJkZWxldGVJbnN0YW5jZXMiLCJkZWxldGluZ1J1bGVzIiwicnVuTWFzc0FjdGlvbiIsImFjdGlvbklkIiwicGFyYW1ldGVycyIsInF1ZXJ5UGFyYW1zIiwicHJpbnQiLCJ0eXBlIiwicHJpbnRFeGNlbCIsInRhYmxlRXhjZWwiLCJjaGVja0J5UG9wZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DYW5keUFwaUNsaWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi4vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB7IEZldGNoIH0gZnJvbSBcIi4uL0h0dHBDbGllbnQvRmV0Y2hJbXBsZW1lbnRhdGlvbi9GZXRjaFwiO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yIH0gZnJvbSBcIi4uL0h0dHBDbGllbnQvSHR0cENsaWVudFwiO1xuaW1wb3J0IHsgSUh0dHBDbGllbnQgfSBmcm9tIFwiLi4vSHR0cENsaWVudC9JSHR0cENsaWVudFwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25Nb2RlLCBjcmVhdGVBdXRoZW50aWNhdGlvblByb3ZpZGVyIH0gZnJvbSBcIi4uL0h0dHBDbGllbnQvQXV0aGVudGljYXRpb25Nb2RlXCI7XG5pbXBvcnQgeyBJQ29tYmluZUJ5VHJhbnNmZXJzIH0gZnJvbSBcIi4uLy4uL0VuZ2luZS9zcmMvRW5naW5lL0NvcmUvTW9kYWxNYW5hZ2VyL01vZGFscy9VcGxvYWRTZWN0aW9uL1R5cGVzXCI7XG5pbXBvcnQgeyBjb252ZXJ0VG9MZWdhY3lQYXRoIH0gZnJvbSBcIi4uL01vZGVsUGF0aC9Nb2RlbFBhdGhcIjtcblxuaW1wb3J0IHtcbiAgICBDaGVja1NjZW5hcmlvVHlwZSxcbiAgICBGdWZXaXRoQXR0YWNobWVudHNSZXNwb25zZSxcbiAgICBJQ2FuZHlBcGlDbGllbnQsXG4gICAgSUNhbmR5QXBpRHJhZnRDbGllbnQsXG4gICAgSVNlbmRDaGFuZ2VTZXRSZXN1bHQsXG4gICAgSVNlbmRDaGFuZ2VTZXRTdWNjZXNzUmVzdWx0LFxuICAgIFBhdGhMb2FkU3BlY2lmaWNhdGlvbixcbiAgICBEcmFmdFNldHRpbmdzLFxuICAgIEJhc2VHZXRGdWZSZXNwb25zZSxcbn0gZnJvbSBcIi4vSUNhbmR5QXBpQ2xpZW50XCI7XG5pbXBvcnQgeyBTZXJ2ZXJFcnJvckxvZyB9IGZyb20gXCIuL1R5cGVzL0Vycm9yTG9nL1NlcnZlckVycm9yTG9nXCI7XG5pbXBvcnQgeyBTZXJ2ZXJJbm5lclJlc3BvbnNlLCBTZXJ2ZXJKc29uUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9HZXRJbm5lci9TZXJ2ZXJJbm5lclJlc3BvbnNlXCI7XG5pbXBvcnQge1xuICAgIEV4Y2Vsc1RvUGFydGlhbEZ1ZnNSZXNwb25zZSxcbiAgICBGaWxlUHJvcGVydGllcyxcbiAgICBJbXBvcnRGcm9tUGFydGlhbEZ1ZnNCeVBhdGhSZXNwb25zZSxcbiAgICBTZXJ2ZXJFcnJvclJlc3BvbnNlLFxuICAgIFVwbG9hZEZpbGVQcm9wZXJ0aWVzUmVzcG9uc2UsXG59IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9GaWxlUHJvcGVydGllc1wiO1xuaW1wb3J0IHsgQ3JlYXRlRHJhZnRSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0NyZWF0ZURyYWZ0L0NyZWF0ZURyYWZ0UmVzcG9uc2VcIjtcbmltcG9ydCB7IENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRXhwbGFuYXRvcnlOb3RlL0NyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlXCI7XG5pbXBvcnQgeyBEcmFmdEZ1bGxJZCB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0RnVsbElkXCI7XG5pbXBvcnQgeyBTZXJ2ZXJDaGFuZ2VTZXQgfSBmcm9tIFwiLi9UeXBlcy9DaGFuZ2VTZXQvU2VydmVyQ2hhbmdlU2V0XCI7XG5pbXBvcnQgeyBTZXJ2ZXJUYXNrLCBWZXJpZnlBbmRGaXhGbnNSZXF1aXJlbWVudHNUYXNrSW5mbyB9IGZyb20gXCIuL1R5cGVzL1Rhc2tzL1Rhc2tzXCI7XG5pbXBvcnQgeyBGb2N1c1NlcnZlckVycm9yQ29kZSwgR2V0QnlJbm5SZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0ZvY3VzL0ZvY3VzVHlwZXNcIjtcbmltcG9ydCB7IEF0dGFjaEluZm8gfSBmcm9tIFwiLi9UeXBlcy9BdHRhY2htZW50cy9BdHRhY21lbnRzXCI7XG5pbXBvcnQgeyBEcmFmdFByZXNlbnRhdGlvblR5cGUgfSBmcm9tIFwiLi9UeXBlcy9QcmVzZW50YXRpb25zL0RyYWZ0UHJlc2VudGF0aW9uVHlwZVwiO1xuaW1wb3J0IHsgUHJlc2VudGF0aW9uQ29udGVudCB9IGZyb20gXCIuL1R5cGVzL1ByZXNlbnRhdGlvbnMvUHJlc2VudGF0aW9uQ29udGVudFwiO1xuaW1wb3J0IHsgQ29udmVydERyYWZ0UmVxdWVzdCB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9Db252ZXJ0RHJhZnRSZXF1ZXN0XCI7XG5pbXBvcnQgeyBHZXRBdHRhY2htZW50c1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvQXR0YWNobWVudHMvR2V0QXR0YWNobWVudHNSZXNwb25zZVwiO1xuaW1wb3J0IHsgRm9jdXNTZXJ2ZXJSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0ZvY3VzL0ZvY3VzU2VydmVyUmVzcG9uc2VcIjtcbmltcG9ydCB7IEdldFRhc2tzU2VydmVyUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9UYXNrcy9HZXRUYXNrc1NlcnZlclJlc3BvbnNlXCI7XG5pbXBvcnQgeyBTZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9HZXRJbm5lci9TZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2VcIjtcbmltcG9ydCB7IGlzQnVmZmVyIH0gZnJvbSBcIi4vSXNCdWZmZXJcIjtcbmltcG9ydCB7IENvbWJpbmF0b3JUeXBlLCBDb21iaW5lRnVmUmVzdWx0LCBGdWZDb21iaW5lTWV0aG9kIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0NvbWJpbmVGdWZSZXN1bHRcIjtcbmltcG9ydCB7IEZlYXR1cmVGbGFnc1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRmVhdHVyZUZsYWdzL0ZlYXR1cmVGbGFnc1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBGdWZTaXplVG9vTGFyZ2VFcnJvciB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9GdWZTaXplVG9vTGFyZ2VFcnJvclwiO1xuaW1wb3J0IHsgSW1wb3J0RW1wbG95ZWVzUmVxdWVzdCB9IGZyb20gXCIuL1R5cGVzL1N0YWZmL0ltcG9ydEVtcGxveWVlc1JlcXVlc3RcIjtcbmltcG9ydCB7IE1hc3NBY3Rpb25QYXJhbWV0ZXJzIH0gZnJvbSBcIi4vVHlwZXMvTWFzc0FjdGlvbnMvTWFzc0FjdGlvblBhcmFtZXRlcnNcIjtcbmltcG9ydCB7IFByaW50VHlwZSB9IGZyb20gXCIuL1R5cGVzL1ByaW50L1ByaW50VHlwZVwiO1xuaW1wb3J0IHsgUHJpbnRSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL1ByaW50L1ByaW50UmVzcG9uc2VcIjtcbmltcG9ydCB7IFNlcnZlclJhd1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvR2V0SW5uZXIvU2VydmVyUmF3UmVzcG9uc2VcIjtcbmltcG9ydCB7IFRlc3RDbGFzc2lmaWNhdGlvbiB9IGZyb20gXCIuL1R5cGVzL1Rlc3RDbGFzc2lmaWNhdGlvblwiO1xuaW1wb3J0IHsgQ2FuZHlQb3BkUHJvdG9jb2wgfSBmcm9tIFwiLi9UeXBlcy9FcnJvckxvZy9DYW5keVBvcGRQcm90b2NvbFwiO1xuaW1wb3J0IHsgSW5zdGFuY2VzRGVsZXRpbmdSdWxlIH0gZnJvbSBcIi4vVHlwZXMvSW5zdGFuY2VzRGVsZXRpbmcvSW5zdGFuY2VzRGVsZXRpbmdSdWxlXCI7XG5pbXBvcnQgeyBWYWx1ZUZvckluc3RhbmNlc1NldHRpbmdSdWxlIH0gZnJvbSBcIi4vVHlwZXMvTWFzc0FjdGlvbnMvVmFsdWVGb3JJbnN0YW5jZXNTZXR0aW5nUnVsZVwiO1xuaW1wb3J0IHsgSW5uZXJRdWVyeVJlcXVlc3QgfSBmcm9tIFwiLi9UeXBlcy9RdWVyeUNvbGxlY3Rvbi9Jbm5lclF1ZXJ5UmVxdWVzdFwiO1xuaW1wb3J0IHsgSW5uZXJRdWVyeVJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvUXVlcnlDb2xsZWN0b24vSW5uZXJRdWVyeVJlc3BvbnNlXCI7XG5cbmNvbnN0IHN0cmFuZ2VPcHRpb25zID0geyBzcmM6IFwiY2hhbmdlU2V0XCIsIGRhdGFWZXJzaW9uOiBcIjBcIiB9O1xuXG5leHBvcnQgZW51bSBTZXJ2ZXJFcnJvcnMge1xuICAgIEZ1ZlNpemVUb29MYXJnZSA9IFwiRnVmU2l6ZVRvb0xhcmdlXCIsXG4gICAgQmFkUmVxdWVzdCA9IFwiQmFkUmVxdWVzdFwiLFxuICAgIFVua25vd25FcnJvciA9IFwiVW5rbm93bkVycm9yXCIsXG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRQYXRoTG9hZFNwZWNpZmljYXRpb25Ub1N0cmluZyhzcGVjOiBQYXRoTG9hZFNwZWNpZmljYXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiAoXG4gICAgICAgIChzcGVjLnNraXAgPyBcIi1cIiA6IFwiXCIpICtcbiAgICAgICAgKHNwZWMucGF0aE9yUGF0aFByZWZpeCA9PT0gXCIqXCIgPyBzcGVjLnBhdGhPclBhdGhQcmVmaXggOiBzcGVjLnBhdGhPclBhdGhQcmVmaXgudG9MZWdhY3lQYXRoKCkpXG4gICAgKTtcbn1cblxuZXhwb3J0IGNsYXNzIENhbmR5QXBpQ2xpZW50IGltcGxlbWVudHMgSUNhbmR5QXBpQ2xpZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHBDbGllbnQ6IElIdHRwQ2xpZW50O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBmZXRjaEltcGw6IEZldGNoLFxuICAgICAgICBiYXNlVXJsOiBzdHJpbmcsXG4gICAgICAgIHJlc291cmNlWm9uZTogdW5kZWZpbmVkIHwgc3RyaW5nLFxuICAgICAgICBhdXRoZW50aWNhdGlvbjogdW5kZWZpbmVkIHwgQXV0aGVudGljYXRpb25Nb2RlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuaHR0cENsaWVudCA9IG5ldyBIdHRwQ2xpZW50KGZldGNoSW1wbCwgYmFzZVVybCwgY3JlYXRlQXV0aGVudGljYXRpb25Qcm92aWRlcihhdXRoZW50aWNhdGlvbiksIHtcbiAgICAgICAgICAgIHJlc291cmNlWm9uZTogcmVzb3VyY2Vab25lLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9yRHJhZnQoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkKTogSUNhbmR5QXBpRHJhZnRDbGllbnQge1xuICAgICAgICByZXR1cm4gbmV3IENhbmR5QXBpRHJhZnRDbGllbnQodGhpcy5odHRwQ2xpZW50LCBkcmFmdEZ1bGxJZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEluZm9CeUlubnMoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkLCBpbm5zOiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8R2V0QnlJbm5SZXNwb25zZT4ge1xuICAgICAgICBjb25zdCBwYXRocyA9IGlubnMubWFwKGlubiA9PiBgQGZvY3VzLyR7aW5ufWApO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChkcmFmdEZ1bGxJZCwgXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHBhdGhzKVxuICAgICAgICAgICAgLmpzb248Rm9jdXNTZXJ2ZXJSZXNwb25zZT4oKTtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBHZXRCeUlublJlc3BvbnNlID0ge307XG4gICAgICAgIGZvciAoY29uc3QgaW5uIG9mIGlubnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGlublNlcnZlclZhbHVlID0gcmVzcG9uc2VbYEBmb2N1cy8ke2lubn1gXT8udmFsdWU7XG4gICAgICAgICAgICBpZiAoaW5uU2VydmVyVmFsdWUgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2lubl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBcIlNlcnZlciBkb2VzIG5vdCByZXR1cm4gaW5uIGluZm9cIixcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JDb2RlOiBGb2N1c1NlcnZlckVycm9yQ29kZS5Ob0lubkVycm9yLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtpbm5dID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaW5uU2VydmVyVmFsdWUudmFsdWUgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBlcnJvckNvZGU6IGlublNlcnZlclZhbHVlLmVycm9yQ29kZSA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBpbm5TZXJ2ZXJWYWx1ZS5lcnJvciA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxHZnZzKGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnQuZ2V0KGBidWlsZC1zZXJ2ZXIvZ2Z2c2ApLmpzb248c3RyaW5nW10+KCk7XG4gICAgICAgIHJldHVybiBib2R5O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjcmVhdGVEcmFmdEZyb21Ecml2ZShcbiAgICAgICAgbnM6IHN0cmluZyxcbiAgICAgICAgZnVmRHJpdmVVcmk6IHN0cmluZyxcbiAgICAgICAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbFxuICAgICk6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0LWZyb20tZHJpdmVgKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7XG4gICAgICAgICAgICAgICAgbnM6IG5zLFxuICAgICAgICAgICAgICAgIGZ1ZkRyaXZlVXJpOiBmdWZEcml2ZVVyaSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAud2l0aEFib3J0U2lnbmFsKGFib3J0U2lnbmFsKVxuICAgICAgICAgICAgLmpzb248Q3JlYXRlRHJhZnRSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlRW1wdHlEcmFmdChuczogc3RyaW5nLCBnZnY6IHN0cmluZywgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0YClcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiB9KVxuICAgICAgICAgICAgLndpdGhBYm9ydFNpZ25hbChhYm9ydFNpZ25hbClcbiAgICAgICAgICAgIC5qc29uPENyZWF0ZURyYWZ0UmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZURyYWZ0KG5zOiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPjtcbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiB1bmRlZmluZWQsIGZ1ZkNvbnRlbnQ6IEJ1ZmZlcik6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT47XG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZURyYWZ0KG5zOiBzdHJpbmcsIGdmdjogdW5kZWZpbmVkIHwgc3RyaW5nLCBmdWZDb250ZW50PzogQnVmZmVyKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPiB7XG4gICAgICAgIGlmIChnZnYgPT0gdW5kZWZpbmVkICYmIGZ1ZkNvbnRlbnQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7bnN9L2NyZWF0ZS1kcmFmdGApXG4gICAgICAgICAgICAgICAgLndpdGhDb250ZW50VHlwZShcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiKVxuICAgICAgICAgICAgICAgIC53aXRoQm9keUZyb21CdWZmZXIoZnVmQ29udGVudClcbiAgICAgICAgICAgICAgICAuanNvbjxDcmVhdGVEcmFmdFJlc3BvbnNlPigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChnZnYgIT0gdW5kZWZpbmVkICYmIGZ1ZkNvbnRlbnQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7bnN9L2NyZWF0ZS1kcmFmdGApXG4gICAgICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGdmdjogZ2Z2IH0pXG4gICAgICAgICAgICAgICAgLndpdGhDb250ZW50VHlwZShcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiKVxuICAgICAgICAgICAgICAgIC53aXRoQm9keUZyb21CdWZmZXIoQnVmZmVyLmZyb20oW10pKVxuICAgICAgICAgICAgICAgIC5qc29uPENyZWF0ZURyYWZ0UmVzcG9uc2U+KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGdmdiA9PSB1bmRlZmluZWQgJiYgZnVmQ29udGVudCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBjcmVhdGUgZHJhZnQ6IG5vIGdmdiBhbmQgbm8gZnVmIHNwZWNpZmllZFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0YClcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiB9KVxuICAgICAgICAgICAgLndpdGhDb250ZW50VHlwZShcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiKVxuICAgICAgICAgICAgLndpdGhCb2R5RnJvbUJ1ZmZlcihmdWZDb250ZW50KVxuICAgICAgICAgICAgLmpzb248Q3JlYXRlRHJhZnRSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2hlY2tBbGl2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LmdldChgX3N0YXR1cy9waW5nYCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFVybChkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQsIGRyYWZ0UmVsYXRlZFVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGB2MS9ucy8ke2RyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHtkcmFmdEZ1bGxJZC5kcmFmdElkfS8ke2RyYWZ0UmVsYXRlZFVybH1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRGZWF0dXJlRmxhZ3MoKTogUHJvbWlzZTxGZWF0dXJlRmxhZ3NSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50LmdldChcInYxL2ZlYXR1cmVzL2ZsYWdzXCIpLmpzb248RmVhdHVyZUZsYWdzUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldFRlc3RDbGFzc2lmaWNhdGlvbih0ZXN0Q2xhc3NpZmljYXRpb246IFRlc3RDbGFzc2lmaWNhdGlvbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QoXCIvdGVzdG9ubHkvbW9jay1jbGFzc2lmaWNhdGlvblwiKVxuICAgICAgICAgICAgLndpdGhSYXdCb2R5KEpTT04uc3RyaW5naWZ5KHRlc3RDbGFzc2lmaWNhdGlvbikpO1xuICAgICAgICBpZiAoIShyZXNwb25zZS5zdGF0dXMgPj0gMjAwICYmIHJlc3BvbnNlLnN0YXR1cyA8IDMwMCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQmFkIHJlc3BvbnNlLiBDb2RlIGlzICR7cmVzcG9uc2Uuc3RhdHVzfS5gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYW5keUFwaURyYWZ0Q2xpZW50IGltcGxlbWVudHMgSUNhbmR5QXBpRHJhZnRDbGllbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cENsaWVudDogSUh0dHBDbGllbnQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaHR0cENsaWVudDogSUh0dHBDbGllbnQsIGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZCkge1xuICAgICAgICB0aGlzLmh0dHBDbGllbnQgPSBodHRwQ2xpZW50O1xuICAgICAgICB0aGlzLmRyYWZ0RnVsbElkID0gZHJhZnRGdWxsSWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0lubmVyRWRpdG9yKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQudXJsKGBpbm5lci1lZGl0b3IvbnMvJHt0aGlzLmRyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHt0aGlzLmRyYWZ0RnVsbElkLmRyYWZ0SWR9YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZEb3dubG9hZEZ1ZigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnVybCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWZ1ZlwiKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0NvbnZlcnRhdGlvbkxvZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnVybCh0aGlzLmdldERyYWZ0VXJsKFwiY29udmVyc2lvblwiKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Rvd25sb2FkSW5uZXJGdWYoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24oRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyRnVmKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRDbGllbnRJbmZvKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5jbGllbnRJbmZvKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRGb3Jtc0NsaWVudEluZm8oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24oRHJhZnRQcmVzZW50YXRpb25UeXBlLmZvcm1zQ2xpZW50SW5mbyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZEb3dubG9hZElubmVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEVycm9yTG9nKCk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuZXJyb3JMb2cpKS5qc29uPFNlcnZlckVycm9yTG9nPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRFcnJvckxvZ1dpdGhDaGVja1NjZW5hcmlvcyhjaGVja1NjZW5hcmlvczogQ2hlY2tTY2VuYXJpb1R5cGVbXSk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImVycm9ybG9nXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7IGNoZWNrU2NlbmFyaW9zOiBjaGVja1NjZW5hcmlvcyB9KVxuICAgICAgICAgICAgLmpzb248U2VydmVyRXJyb3JMb2c+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFRhc2tCeUlkKHRhc2tJZDogc3RyaW5nKTogUHJvbWlzZTxTZXJ2ZXJUYXNrIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHRhc2tzID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShbYEB0YXNrLypgXSlcbiAgICAgICAgICAgIC5qc29uPEdldFRhc2tzU2VydmVyUmVzcG9uc2U+KCk7XG4gICAgICAgIHJldHVybiB0YXNrc1tgQHRhc2svJHt0YXNrSWR9YF0/LnZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRGdWZXaXRoQXR0YWNobWVudHMoKTogUHJvbWlzZTxGdWZXaXRoQXR0YWNobWVudHNSZXNwb25zZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLmdldCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWZ1Zi13aXRoLWF0dGFjaG1lbnRzXCIpKVxuICAgICAgICAgICAgLmpzb248RnVmV2l0aEF0dGFjaG1lbnRzUmVzcG9uc2U+KCk7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UGFydGlhbEZ1ZihydWxlczogc3RyaW5nW10pOiBQcm9taXNlPEJhc2VHZXRGdWZSZXNwb25zZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1wYXJ0aWFsLWZ1ZlwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocnVsZXMpXG4gICAgICAgICAgICAuanNvbjxCYXNlR2V0RnVmUmVzcG9uc2U+KCk7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsVGFza3MoKTogUHJvbWlzZTxTZXJ2ZXJUYXNrW10+IHtcbiAgICAgICAgY29uc3QgdGFza3MgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KFtgQHRhc2svKmBdKVxuICAgICAgICAgICAgLmpzb248R2V0VGFza3NTZXJ2ZXJSZXNwb25zZT4oKTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGFza3MpLm1hcCh4ID0+IHgudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBlbnF1ZXVlVGFzayh0YXNrSWQ6IHN0cmluZywgdGFza0luZm86IFZlcmlmeUFuZEZpeEZuc1JlcXVpcmVtZW50c1Rhc2tJbmZvKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuaW5uZXIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhzdHJhbmdlT3B0aW9ucylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoe1xuICAgICAgICAgICAgICAgIGFkZGVkOiBbXSxcbiAgICAgICAgICAgICAgICBjaGFuZ2VkOiB7XG4gICAgICAgICAgICAgICAgICAgIFtgQHRhc2svJHt0YXNrSWR9YF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRhc2tJbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRhc2tJZCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlbW92ZWQ6IFtdLFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNhbmNlbFRhc2sodGFza0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHN0cmFuZ2VPcHRpb25zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7XG4gICAgICAgICAgICAgICAgYWRkZWQ6IFtdLFxuICAgICAgICAgICAgICAgIGNoYW5nZWQ6IHt9LFxuICAgICAgICAgICAgICAgIHJlbW92ZWQ6IFtgQHRhc2svJHt0YXNrSWR9YF0sXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXhwZXJ0RXJyb3JMb2coKTogUHJvbWlzZTxTZXJ2ZXJFcnJvckxvZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAuZ2V0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmVycm9ybG9nRXhwZXJ0KSlcbiAgICAgICAgICAgIC5qc29uPFNlcnZlckVycm9yTG9nPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9FcnJvckxvZ1BkZihlcnJvckxvZ05hbWU6IHN0cmluZywgcHJvcHNOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnVybCh0aGlzLmdldERyYWZ0VXJsKFwicHJlc2VudGF0aW9ucy9lcnJvckxvZy9wcmludFwiKSwge1xuICAgICAgICAgICAgZXJyb3JMb2dOYW1lOiBlcnJvckxvZ05hbWUsXG4gICAgICAgICAgICBwcm9wc0RyaXZlTmFtZTogcHJvcHNOYW1lLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2xlYXJEcmFmdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5nZXREcmFmdFVybChcImNsZWFyXCIpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY29udmVydERyYWZ0RnJvbVByZXZHZnYoeyBwcmV2R2Z2RHJhZnRJZCwgZ2Z2IH06IENvbnZlcnREcmFmdFJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5nZXREcmFmdFVybChcImNvbnZlcnRcIikpLndpdGhRdWVyeVBhcmFtcyh7XG4gICAgICAgICAgICBpZDogcHJldkdmdkRyYWZ0SWQsXG4gICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNlbmRDaGFuZ2VTZXQoZGF0YTogU2VydmVyQ2hhbmdlU2V0LCBjdXJyZW50RGF0YVZlcnNpb246IG51bWJlcik6IFByb21pc2U8SVNlbmRDaGFuZ2VTZXRSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZGF0YVZlcnNpb246IGN1cnJlbnREYXRhVmVyc2lvbiB9KVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShkYXRhKVxuICAgICAgICAgICAgLmFjY2VwdENvZGUoNDA5KTtcblxuICAgICAgICBjb25zdCBnZXRTdWNjZXNzUmVzdWx0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YVJlc3VsdCA9IGF3YWl0IHJlc3VsdC5qc29uPHsgZGF0YVZlcnNpb24/OiBudW1iZXIgfT4oKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGF0YVZlcnNpb246IGRhdGFSZXN1bHQ/LmRhdGFWZXJzaW9uID8/IHJlamVjdChcIkludmFsaWQgZGF0YVZlcnNpb24gYWZ0ZXIgYXBwbHlpbmcgY2hhbmdlIHNldC5cIiksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiByZXN1bHQuc3RhdHVzID09IDIwMCA/IGF3YWl0IGdldFN1Y2Nlc3NSZXN1bHQoKSA6IHJlc3VsdC5zdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNlbmRDaGFuZ2VXaXRoTm9ybWFsaXphdGlvblNldChcbiAgICAgICAgZGF0YTogU2VydmVyQ2hhbmdlU2V0LFxuICAgICAgICBjdXJyZW50RGF0YVZlcnNpb246IG51bWJlcixcbiAgICAgICAgbm9ybWFsaXplcklkPzogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxJU2VuZENoYW5nZVNldFJlc3VsdD4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJpbm5lci9wYXRjaC13aXRoLW5vcm1hbGl6YXRpb25cIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZGF0YVZlcnNpb246IGN1cnJlbnREYXRhVmVyc2lvbiwgbm9ybWFsaXplcklkOiBub3JtYWxpemVySWQgfSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoZGF0YSlcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQwOSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdC5zdGF0dXMgPT0gMjAwID8gYXdhaXQgcmVzdWx0Lmpzb248SVNlbmRDaGFuZ2VTZXRTdWNjZXNzUmVzdWx0PigpIDogcmVzdWx0LnN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VuZENoYW5nZVNldFN5bmMoXG4gICAgICAgIGRhdGE6IFNlcnZlckNoYW5nZVNldCxcbiAgICAgICAgY3VycmVudERhdGFWZXJzaW9uOiBudW1iZXIsXG4gICAgICAgIG5vcm1hbGl6ZXJJZD86IHN0cmluZ1xuICAgICk6IElTZW5kQ2hhbmdlU2V0UmVzdWx0IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5odHRwQ2xpZW50LnBvc3RTeW5jKHRoaXMuZ2V0RHJhZnRVcmwoXCJpbm5lclwiKSwgeyBkYXRhVmVyc2lvbjogY3VycmVudERhdGFWZXJzaW9uIH0sIGRhdGEpO1xuXG4gICAgICAgIGNvbnN0IGdldFN1Y2Nlc3NSZXN1bHRTeW5jID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YVJlc3VsdCA9IHJlc3VsdC5qc29uPHsgZGF0YVZlcnNpb24/OiBudW1iZXIgfT4oKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGF0YVZlcnNpb246IGRhdGFSZXN1bHQ/LmRhdGFWZXJzaW9uID8/IHJlamVjdChcIkludmFsaWQgZGF0YVZlcnNpb24gYWZ0ZXIgYXBwbHlpbmcgY2hhbmdlIHNldC5cIiksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmVzdWx0LnN0YXR1cyA9PSAyMDAgPyBnZXRTdWNjZXNzUmVzdWx0U3luYygpIDogcmVzdWx0LnN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UmVxdWlzaXRlcyhyZXF1aXNpdGVMaXN0OiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8U2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHJlcXVpc2l0ZUxpc3QpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldElubmVyKHBhdGhzOiB1bmRlZmluZWQgfCByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8U2VydmVySW5uZXJSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShwYXRocylcbiAgICAgICAgICAgIC5qc29uPFNlcnZlcklubmVyUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhcnRpYWxJbm5lcihydWxlczogUGF0aExvYWRTcGVjaWZpY2F0aW9uW10sIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXIpOiBQcm9taXNlPFNlcnZlcklubmVyUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgY29udmVydGVkUnVsZXMgPSBydWxlcy5tYXAoY29udmVydFBhdGhMb2FkU3BlY2lmaWNhdGlvblRvU3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1wYXJ0aWFsLWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhtYXhJbnN0YW5jZUNvdW50ICE9IHVuZGVmaW5lZCAmJiB7IG1heEluc3RhbmNlQ291bnQ6IG1heEluc3RhbmNlQ291bnQudG9TdHJpbmcoKSB9KVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShjb252ZXJ0ZWRSdWxlcy5sZW5ndGggPiAwID8gY29udmVydGVkUnVsZXMgOiBbXCIqXCJdKVxuICAgICAgICAgICAgLmpzb248U2VydmVySW5uZXJSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UGFydGlhbElubmVyQXNKc29uVHJlZShcbiAgICAgICAgcnVsZXM6IFBhdGhMb2FkU3BlY2lmaWNhdGlvbltdLFxuICAgICAgICBtYXhJbnN0YW5jZUNvdW50PzogbnVtYmVyXG4gICAgKTogUHJvbWlzZTxTZXJ2ZXJKc29uUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgY29udmVydGVkUnVsZXMgPSBydWxlcy5tYXAoY29udmVydFBhdGhMb2FkU3BlY2lmaWNhdGlvblRvU3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1wYXJ0aWFsLWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhtYXhJbnN0YW5jZUNvdW50ICE9IHVuZGVmaW5lZCAmJiB7IG1heEluc3RhbmNlQ291bnQ6IG1heEluc3RhbmNlQ291bnQudG9TdHJpbmcoKSB9KVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGZvcm1hdDogXCJKc29uVHJlZVwiIH0pXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KGNvbnZlcnRlZFJ1bGVzLmxlbmd0aCA+IDAgPyBjb252ZXJ0ZWRSdWxlcyA6IFtcIipcIl0pXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJKc29uUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJhd1BhcnRpYWxJbm5lckFzSnNvblRyZWUoXG4gICAgICAgIHJ1bGVzOiByZWFkb25seSBQYXRoTG9hZFNwZWNpZmljYXRpb25bXSxcbiAgICAgICAgbWF4SW5zdGFuY2VDb3VudD86IG51bWJlclxuICAgICk6IFByb21pc2U8U2VydmVyUmF3UmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgY29udmVydGVkUnVsZXMgPSBydWxlcy5tYXAoY29udmVydFBhdGhMb2FkU3BlY2lmaWNhdGlvblRvU3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1wYXJ0aWFsLWlubmVyMlwiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMobWF4SW5zdGFuY2VDb3VudCAhPSB1bmRlZmluZWQgJiYgeyBtYXhJbnN0YW5jZUNvdW50OiBtYXhJbnN0YW5jZUNvdW50LnRvU3RyaW5nKCkgfSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoY29udmVydGVkUnVsZXMubGVuZ3RoID4gMCA/IGNvbnZlcnRlZFJ1bGVzIDogW1wiKlwiXSlcbiAgICAgICAgICAgIC5qc29uPFNlcnZlclJhd1Jlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREYXRhVmVyc2lvbigpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLmdldERyYWZ0VXJsKFwiaW5uZXIvZ2V0LWRhdGEtdmVyc2lvblwiKSkuanNvbjxudW1iZXI+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEV4cGxhbmF0b3J5Tm90ZSgpOiBQcm9taXNlPENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5nZXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuZXhwbGFuYXRvcnlOb3RlKSlcbiAgICAgICAgICAgIC5qc29uPENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBdHRhY2htZW50QnlJZChhdHRhY2htZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QXR0YWNoSW5mbz4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KFtgQGF0dGFjaG1lbnQvJHthdHRhY2htZW50SWR9YF0pXG4gICAgICAgICAgICAuanNvbjxHZXRBdHRhY2htZW50c1Jlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gcmVzdWx0W2BAYXR0YWNobWVudC8ke2F0dGFjaG1lbnRJZH1gXT8udmFsdWUgPz8gcmVqZWN0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEF0dGFjaG1lbnRzKCk6IFByb21pc2U8QXR0YWNoSW5mb1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1pbm5lclwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoW2BAYXR0YWNobWVudC8qYF0pXG4gICAgICAgICAgICAuanNvbjxHZXRBdHRhY2htZW50c1Jlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhyZXN1bHQpLm1hcCh4ID0+IHgudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZW1vdmVBdHRhY2htZW50cyhhdHRhY2htZW50SWRzOiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoc3RyYW5nZU9wdGlvbnMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHtcbiAgICAgICAgICAgICAgICBhZGRlZDogW10sXG4gICAgICAgICAgICAgICAgY2hhbmdlZDoge30sXG4gICAgICAgICAgICAgICAgcmVtb3ZlZDogYXR0YWNobWVudElkcy5tYXAoaWQgPT4gYEBhdHRhY2htZW50LyR7aWR9YCksXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlT3JVcGRhdGVBdHRhY2htZW50cyhhdHRhY2htZW50czogcmVhZG9ubHkgQXR0YWNoSW5mb1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNoYW5nZWQgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBhdHRhY2htZW50IG9mIGF0dGFjaG1lbnRzKSB7XG4gICAgICAgICAgICBjaGFuZ2VkW2BAYXR0YWNobWVudC8ke2F0dGFjaG1lbnQuaWR9YF0gPSB7XG4gICAgICAgICAgICAgICAgY29udGVudFVyaTogYXR0YWNobWVudC5jb250ZW50VXJpLFxuICAgICAgICAgICAgICAgIGlkOiBhdHRhY2htZW50LmlkLFxuICAgICAgICAgICAgICAgIG1ldGE6IGF0dGFjaG1lbnQubWV0YSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHN0cmFuZ2VPcHRpb25zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7XG4gICAgICAgICAgICAgICAgYWRkZWQ6IFtdLFxuICAgICAgICAgICAgICAgIGNoYW5nZWQ6IGNoYW5nZWQsXG4gICAgICAgICAgICAgICAgcmVtb3ZlZDogW10sXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlRHJhZnRBdHRhY2htZW50KGdmdjogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPEF0dGFjaEluZm8+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImV4dGVybmFsL2NyZWF0ZS1hdHRhY2htZW50LWRyYWZ0XCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGdmdjogZ2Z2LCBwYXRoOiBwYXRoIH0pXG4gICAgICAgICAgICAuanNvbjxBdHRhY2hJbmZvPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBvcGVuTG9hZGVkQXR0YWNobWVudEFzRHJhZnQoaWQ6IHN0cmluZyk6IFByb21pc2U8QXR0YWNoSW5mbz4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImV4dGVybmFsL29wZW4tbG9hZGVkLWF0dGFjaG1lbnQtYXMtZHJhZnRcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgYXR0YWNobWVudElkOiBpZCB9KVxuICAgICAgICAgICAgLmFjY2VwdENvZGUoNDEzKTtcblxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MTMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yRGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb248eyBlcnJvckNvZGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH0+KCk7XG4gICAgICAgICAgICBpZiAoZXJyb3JEYXRhLmVycm9yQ29kZSA9PT0gXCJGdWZTaXplVG9vTGFyZ2VcIikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBGdWZTaXplVG9vTGFyZ2VFcnJvcihlcnJvckRhdGEubWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKGVycm9yRGF0YS5tZXNzYWdlLCByZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPEF0dGFjaEluZm8+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldFByZXNlbnRhdGlvbihwcmVzZW50YXRpb25UeXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUsIGNvbnRlbnQ6IHN0cmluZyB8IHVua25vd24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IHJlcXVlc3QgPSB0aGlzLmh0dHBDbGllbnQucHV0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwocHJlc2VudGF0aW9uVHlwZSkpO1xuICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LndpdGhSYXdCb2R5KGNvbnRlbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQnVmZmVyKGNvbnRlbnQpKSB7XG4gICAgICAgICAgICByZXF1ZXN0ID0gcmVxdWVzdC53aXRoUmF3Qm9keShjb250ZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LndpdGhKc29uQm9keShjb250ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCByZXF1ZXN0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBwYXRjaFByZXNlbnRhdGlvbihcbiAgICAgICAgcHJlc2VudGF0aW9uVHlwZTogRHJhZnRQcmVzZW50YXRpb25UeXBlLFxuICAgICAgICBwcmVzZW50YXRpb25Db250ZW50OiBQcmVzZW50YXRpb25Db250ZW50XG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wYXRjaCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKHByZXNlbnRhdGlvblR5cGUpKS53aXRoSnNvbkJvZHkocHJlc2VudGF0aW9uQ29udGVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEZpbGVQcm9wZXJ0aWVzKFxuICAgICAgICBkcml2ZVVyaTogc3RyaW5nLFxuICAgICAgICBpZ25vcmVTaXplQ2hlY2s/OiBib29sZWFuIHwgdW5kZWZpbmVkXG4gICAgKTogUHJvbWlzZTxGaWxlUHJvcGVydGllcyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLmdldChgdjEvZmlsZXMvZ2V0LXByb3BlcnRpZXNgKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGRyaXZlVXJpOiBkcml2ZVVyaSwgaWdub3JlU2l6ZUNoZWNrOiBpZ25vcmVTaXplQ2hlY2sgPz8gZmFsc2UgfSlcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQwMClcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDQxMyB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb248RmlsZVByb3BlcnRpZXM+KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcHJlcGFyZUFuZEdldEZpbGVQcm9wZXJ0aWVzKGRyaXZlVXJpOiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlUHJvcGVydGllcyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLmdldChgdjEvZmlsZXMvcHJlcGFyZS1hbmQtZ2V0LXByb3BlcnRpZXNgKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGdmdjogZ2Z2LCBkcml2ZVVyaTogZHJpdmVVcmkgfSlcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MTMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yRGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb248eyBlcnJvckNvZGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH0+KCk7XG4gICAgICAgICAgICBpZiAoZXJyb3JEYXRhLmVycm9yQ29kZSA9PT0gXCJGdWZTaXplVG9vTGFyZ2VcIikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBGdWZTaXplVG9vTGFyZ2VFcnJvcihlcnJvckRhdGEubWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKGVycm9yRGF0YS5tZXNzYWdlLCByZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPEZpbGVQcm9wZXJ0aWVzPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB1cGxvYWRBbmRHZXRGaWxlUHJvcGVydGllcyhcbiAgICAgICAgZHJpdmVVcmlzOiBzdHJpbmdbXSxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPFVwbG9hZEZpbGVQcm9wZXJ0aWVzUmVzcG9uc2U+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL2ZpbGVzL3VwbG9hZC1hbmQtZ2V0LXByb3BlcnRpZXNgKVxuICAgICAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiB9KVxuICAgICAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoZHJpdmVVcmlzKVxuICAgICAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAgICAgLmFjY2VwdENvZGUoNDAwKVxuICAgICAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbjx7IGVycm9yQ29kZTogU2VydmVyRXJyb3JzOyBtZXNzYWdlOiBzdHJpbmcgfT4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzZXJ2ZXJFcnJvcjogZGF0YS5lcnJvckNvZGUsIGludmFsaWRTb3VyY2VEcml2ZUNvbnRlbnROYW1lczogXCJcIiwgc291cmNlc1RvdGFsQ291bnQ6IDAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uPFVwbG9hZEZpbGVQcm9wZXJ0aWVzUmVzcG9uc2U+KCk7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzZXJ2ZXJFcnJvcjogU2VydmVyRXJyb3JzLlVua25vd25FcnJvcixcbiAgICAgICAgICAgICAgICBpbnZhbGlkU291cmNlRHJpdmVDb250ZW50TmFtZXM6IFwiXCIsXG4gICAgICAgICAgICAgICAgc291cmNlc1RvdGFsQ291bnQ6IDAsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGFjY2VwdFRyYW5zZmVyVHlwZShcbiAgICAgICAgZnVmRHJpdmVVcmk6IHN0cmluZyxcbiAgICAgICAgdHJhbnNmZXJUeXBlOiBzdHJpbmcsXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPFNlcnZlckVycm9yUmVzcG9uc2UgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7dGhpcy5kcmFmdEZ1bGxJZC5uc30vZHJhZnRzLyR7dGhpcy5kcmFmdEZ1bGxJZC5kcmFmdElkfS90cmFuc2Zlci9jb21iaW5lYClcbiAgICAgICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZnVmRHJpdmVVcmk6IGZ1ZkRyaXZlVXJpLCB0eXBlSWQ6IHRyYW5zZmVyVHlwZSB9KVxuICAgICAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAgICAgLmFjY2VwdENvZGUoNDAwKVxuICAgICAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbjx7IGVycm9yQ29kZTogU2VydmVyRXJyb3JzOyBtZXNzYWdlOiBzdHJpbmcgfT4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzZXJ2ZXJFcnJvcjogZGF0YS5lcnJvckNvZGUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHNlcnZlckVycm9yOiBTZXJ2ZXJFcnJvcnMuVW5rbm93bkVycm9yIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYWNjZXB0TXVsdGlwbGVUcmFuc2ZlclR5cGUoXG4gICAgICAgIGZpbGVzOiBJQ29tYmluZUJ5VHJhbnNmZXJzW10sXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPFNlcnZlckVycm9yUmVzcG9uc2UgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7dGhpcy5kcmFmdEZ1bGxJZC5uc30vZHJhZnRzLyR7dGhpcy5kcmFmdEZ1bGxJZC5kcmFmdElkfS90cmFuc2Zlci9jb21iaW5lLW11bHRpcGxlYClcbiAgICAgICAgICAgICAgICAud2l0aEpzb25Cb2R5KGZpbGVzKVxuICAgICAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAgICAgLmFjY2VwdENvZGUoNDAwKVxuICAgICAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbjx7IGVycm9yQ29kZTogU2VydmVyRXJyb3JzOyBtZXNzYWdlOiBzdHJpbmcgfT4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzZXJ2ZXJFcnJvcjogZGF0YS5lcnJvckNvZGUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHNlcnZlckVycm9yOiBTZXJ2ZXJFcnJvcnMuVW5rbm93bkVycm9yIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0RnVmQnlEcml2ZVVyaShkcml2ZVVyaTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wdXQodGhpcy5nZXREcmFmdFVybChcInNldC1mdWZcIikpLndpdGhRdWVyeVBhcmFtcyh7IGRyaXZlVXJpOiBkcml2ZVVyaSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY29tYmluZUZ1ZkJ5RHJpdmVVcmkoXG4gICAgICAgIGRyaXZlVXJpOiBzdHJpbmcsXG4gICAgICAgIGNvbWJpbmVNZXRob2Q6IEZ1ZkNvbWJpbmVNZXRob2QsXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPENvbWJpbmVGdWZSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJ0cmFuc2Zlci9jb21iaW5lLXdpdGgtZnVmXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGZ1ZkRyaXZlVXJpOiBkcml2ZVVyaSwgY29tYmluZU1ldGhvZDogY29tYmluZU1ldGhvZCB9KVxuICAgICAgICAgICAgLndpdGhBYm9ydFNpZ25hbChhYm9ydFNpZ25hbCk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbjxDb21iaW5lRnVmUmVzdWx0PigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGNlbHNUb1BhcnRpYWxGdWZzKFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgcGF0aFRvVGFibGU6IHN0cmluZyxcbiAgICAgICAgZHJpdmVVcmlzOiBzdHJpbmdbXVxuICAgICk6IFByb21pc2U8RXhjZWxzVG9QYXJ0aWFsRnVmc1Jlc3BvbnNlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgICAgIC5wb3N0KFwidjEvZmlsZXMvZXhjZWxzLXRvLXBhcnRpYWwtZnVmc1wiKVxuICAgICAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiwgcGF0aFRvVGFibGU6IHBhdGhUb1RhYmxlIH0pXG4gICAgICAgICAgICAgICAgLndpdGhKc29uQm9keShkcml2ZVVyaXMpO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmpzb248RXhjZWxzVG9QYXJ0aWFsRnVmc1Jlc3BvbnNlPigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbXBvcnRGcm9tUGFydGlhbEZ1ZnNCeVBhdGgoXG4gICAgICAgIHBhdGhUb1RhYmxlOiBzdHJpbmcsXG4gICAgICAgIGRyaXZlVXJpOiBzdHJpbmdbXSxcbiAgICAgICAgY29tYmluZU1ldGhvZDogc3RyaW5nLFxuICAgICAgICBjb21iaW5hdG9yVHlwZTogQ29tYmluYXRvclR5cGVcbiAgICApOiBQcm9taXNlPEltcG9ydEZyb21QYXJ0aWFsRnVmc0J5UGF0aFJlc3BvbnNlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJ0cmFuc2Zlci9pbXBvcnQtZnJvbS1wYXJ0aWFsLWZ1ZnMtYnktcGF0aFwiKSlcbiAgICAgICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aFRvVGFibGU6IHBhdGhUb1RhYmxlLFxuICAgICAgICAgICAgICAgICAgICBjb21iaW5lTWV0aG9kOiBjb21iaW5lTWV0aG9kLFxuICAgICAgICAgICAgICAgICAgICBjb21iaW5hdG9yVHlwZTogY29tYmluYXRvclR5cGUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAud2l0aEpzb25Cb2R5KGRyaXZlVXJpKTtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPEltcG9ydEZyb21QYXJ0aWFsRnVmc0J5UGF0aFJlc3BvbnNlPigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBtdWx0aXBsZUNvbWJpbmVGdWZCeURyaXZlVXJpKFxuICAgICAgICBkcml2ZVVyaXM6IHN0cmluZ1tdLFxuICAgICAgICBjb21iaW5lTWV0aG9kOiBGdWZDb21iaW5lTWV0aG9kLFxuICAgICAgICBhcmdzPzogc3RyaW5nW11cbiAgICApOiBQcm9taXNlPENvbWJpbmVGdWZSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJ0cmFuc2Zlci9jb21iaW5lLXdpdGgtZnVmc1wiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBjb21iaW5lTWV0aG9kOiBjb21iaW5lTWV0aG9kIH0pXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHsgZHJpdmVVcmlzOiBkcml2ZVVyaXMsIGFyZ3VtZW50czogYXJncyB9KVxuICAgICAgICAgICAgLmFjY2VwdENvZGUoNDAwKVxuICAgICAgICAgICAgLmFjY2VwdENvZGUoNTAwKTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gNTAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPENvbWJpbmVGdWZSZXN1bHQ+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGltcG9ydFhtbHMoXG4gICAgICAgIGRyaXZlVXJpczogc3RyaW5nW10sXG4gICAgICAgIGNvbWJpbmVNZXRob2Q6IEZ1ZkNvbWJpbmVNZXRob2QsXG4gICAgICAgIGNvbWJpbmF0b3JUeXBlOiBDb21iaW5hdG9yVHlwZSxcbiAgICAgICAgaXNJbXBvcnRCeUZ1ZjogYm9vbGVhbixcbiAgICAgICAgYXJncz86IHN0cmluZ1tdXG4gICAgKTogUHJvbWlzZTxDb21iaW5lRnVmUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwidHJhbnNmZXIvaW1wb3J0LXhtbHNcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHtcbiAgICAgICAgICAgICAgICBjb21iaW5lTWV0aG9kOiBjb21iaW5lTWV0aG9kLFxuICAgICAgICAgICAgICAgIGNvbWJpbmF0b3JUeXBlOiBjb21iaW5hdG9yVHlwZSxcbiAgICAgICAgICAgICAgICBpbXBvcnRCeUZ1ZjogaXNJbXBvcnRCeUZ1ZixcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHsgRnVmRHJpdmVVcmlzOiBkcml2ZVVyaXMsIGFyZ3VtZW50czogYXJncyB9KTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPENvbWJpbmVGdWZSZXN1bHQ+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldERyYWZ0U2V0dGluZ3Moc2V0dGluZ3M6IERyYWZ0U2V0dGluZ3MpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBhdGNoKHRoaXMuZ2V0RHJhZnRVcmwoXCJleHRlcm5hbC9zZXQtc2V0dGluZ3NcIikpLndpdGhKc29uQm9keShzZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldERyYWZ0U2V0dGluZ3MoKTogUHJvbWlzZTxEcmFmdFNldHRpbmdzPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLmdldERyYWZ0VXJsKFwiZXh0ZXJuYWwvZ2V0LXNldHRpbmdzXCIpKTtcblxuICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbjxEcmFmdFNldHRpbmdzPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBub3JtYWxpemVCeVJ1bGVzKHJ1bGVzOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5nZXREcmFmdFVybChcInRlc3Qtbm9ybWFsaXplXCIpKS53aXRoSnNvbkJvZHkocnVsZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24ocHJlc2VudGF0aW9uVHlwZTogRHJhZnRQcmVzZW50YXRpb25UeXBlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC51cmwodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFVybChkcmFmdFJlbGF0ZWRVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgdjEvbnMvJHt0aGlzLmRyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHt0aGlzLmRyYWZ0RnVsbElkLmRyYWZ0SWR9LyR7ZHJhZnRSZWxhdGVkVXJsfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREcmFmdFVybChgcHJlc2VudGF0aW9ucy8ke3ByZXNlbnRhdGlvblR5cGUudG9TdHJpbmcoKX1gKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0TXVsdGlwbGVXaXRoTm9ybWFsaXphdGlvbihydWxlczogVmFsdWVGb3JJbnN0YW5jZXNTZXR0aW5nUnVsZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHVyaSA9IHRoaXMuZ2V0RHJhZnRVcmwoXCJpbm5lci9zZXQtbXVsdGlwbGUtd2l0aC1ub3JtYWxpemF0aW9uXCIpO1xuICAgICAgICBjb25zdCBmaW5hbFJ1bGVzID0gcnVsZXMubWFwKHggPT4gKHsgLi4ueCwgcGF0aDogY29udmVydFRvTGVnYWN5UGF0aCh4LnBhdGgpIH0pKTtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBhdGNoKHVyaSkud2l0aEpzb25Cb2R5KGZpbmFsUnVsZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZWFyY2hJbnN0YW5jZXNCeVRleHQoXG4gICAgICAgIHRleHQ6IHN0cmluZyxcbiAgICAgICAgcGF0aHNQcmVmaXg6IHN0cmluZyxcbiAgICAgICAgcGF0aHNUb1NlYXJjaDogc3RyaW5nW10sXG4gICAgICAgIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXJcbiAgICApOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IG1heEluc3RhbmNlQ291bnRQYXJhbXMgPSBtYXhJbnN0YW5jZUNvdW50ICE9IHVuZGVmaW5lZCA/IHsgbWF4SW5zdGFuY2VDb3VudDogbWF4SW5zdGFuY2VDb3VudCB9IDoge307XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgc2VhcmNoU3RyaW5nOiB0ZXh0LCBwYXRoc1ByZWZpeDogcGF0aHNQcmVmaXgsIC4uLm1heEluc3RhbmNlQ291bnRQYXJhbXMgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImlubmVyL3NlYXJjaC1ieS1zdHJpbmdcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHBhcmFtcylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocGF0aHNUb1NlYXJjaClcbiAgICAgICAgICAgIC5qc29uPHN0cmluZ1tdPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBxdWVyeUNvbGxlY3Rpb24ocmVxdWVzdDogSW5uZXJRdWVyeVJlcXVlc3QsIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPElubmVyUXVlcnlSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiaW5uZXIvcXVlcnktY29sbGVjdGlvblwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocmVxdWVzdClcbiAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAuanNvbjxJbm5lclF1ZXJ5UmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGN1c3RvbU5vcm1hbGl6ZShcbiAgICAgICAgbm9ybWFsaXplcklkOiBzdHJpbmcsXG4gICAgICAgIHBhdGhQcmVmaXhlczogc3RyaW5nW10sXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0geyBub3JtYWxpemVySWQ6IG5vcm1hbGl6ZXJJZCB9O1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJpbm5lci9jdXN0b20tbm9ybWFsaXplXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhwYXJhbXMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHBhdGhQcmVmaXhlcylcbiAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbXBvcnRFbXBsb3llZXMocmVxdWVzdDogSW1wb3J0RW1wbG95ZWVzUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnQucGF0Y2godGhpcy5nZXREcmFmdFVybChcInN0YWZmXCIpKS53aXRoSnNvbkJvZHkocmVxdWVzdCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGRlbGV0ZUluc3RhbmNlcyhkZWxldGluZ1J1bGVzOiBJbnN0YW5jZXNEZWxldGluZ1J1bGVbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnQucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiaW5uZXIvZGVsZXRlLWluc3RhbmNlc1wiKSkud2l0aEpzb25Cb2R5KGRlbGV0aW5nUnVsZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBydW5NYXNzQWN0aW9uKGFjdGlvbklkOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBNYXNzQWN0aW9uUGFyYW1ldGVycyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHsgYWN0aW9uSWQ6IGFjdGlvbklkIH07XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImlubmVyL21hc3MtYWN0aW9uXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhxdWVyeVBhcmFtcylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocGFyYW1ldGVycyk7XG4gICAgfVxuXG4gICAgcHVibGljIHByaW50KHR5cGU6IFByaW50VHlwZSwgYm9keT86IHN0cmluZ1tdKTogUHJvbWlzZTxQcmludFJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoYHByZXNlbnRhdGlvbnMvaW5uZXIvcHJpbnQvJHt0eXBlfWApKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShib2R5KVxuICAgICAgICAgICAgLmpzb248UHJpbnRSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcHJpbnRFeGNlbChwYXRoVG9UYWJsZTogc3RyaW5nKTogUHJvbWlzZTxQcmludFJlc3BvbnNlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoYHByZXNlbnRhdGlvbnMvdGFibGUvcHJpbnRgKSlcbiAgICAgICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgcGF0aFRvVGFibGU6IHBhdGhUb1RhYmxlIH0pO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFibGVFeGNlbCA9IHJlc3BvbnNlLmpzb248UHJpbnRSZXNwb25zZT4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFibGVFeGNlbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2hlY2tCeVBvcGQoKTogUHJvbWlzZTxDYW5keVBvcGRQcm90b2NvbD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudC5nZXQoXG4gICAgICAgICAgICBgdjEvbnMvJHt0aGlzLmRyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHt0aGlzLmRyYWZ0RnVsbElkLmRyYWZ0SWR9L2NoZWNrQnlQb3BkYFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiByZXNwb25zZS5qc29uPENhbmR5UG9wZFByb3RvY29sPigpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsWUFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsbUJBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLFVBQUEsR0FBQUgsT0FBQTtBQTJCQSxJQUFBSSxXQUFBLEdBQUFKLE9BQUE7QUFFQSxJQUFBSyxzQkFBQSxHQUFBTCxPQUFBO0FBT0EsSUFBQU0sU0FBQSxHQUFBTixPQUFBO0FBR0EsSUFBQU8scUJBQUEsR0FBQVAsT0FBQTtBQWFBLE1BQU1RLGNBQWMsR0FBRztFQUFFQyxHQUFHLEVBQUUsV0FBVztFQUFFQyxXQUFXLEVBQUU7QUFBSSxDQUFDO0FBQUMsSUFFbERDLFlBQVksMEJBQVpBLFlBQVk7RUFBWkEsWUFBWTtFQUFaQSxZQUFZO0VBQVpBLFlBQVk7RUFBQSxPQUFaQSxZQUFZO0FBQUE7QUFBQUMsT0FBQSxDQUFBRCxZQUFBLEdBQUFBLFlBQUE7QUFNeEIsU0FBU0Usb0NBQW9DQSxDQUFDQyxJQUEyQixFQUFVO0VBQy9FLE9BQ0ksQ0FBQ0EsSUFBSSxDQUFDQyxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUUsS0FDcEJELElBQUksQ0FBQ0UsZ0JBQWdCLEtBQUssR0FBRyxHQUFHRixJQUFJLENBQUNFLGdCQUFnQixHQUFHRixJQUFJLENBQUNFLGdCQUFnQixDQUFDQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBRXRHO0FBRU8sTUFBTUMsY0FBYyxDQUE0QjtFQUc1Q0MsV0FBV0EsQ0FDZEMsU0FBZ0IsRUFDaEJDLE9BQWUsRUFDZkMsWUFBZ0MsRUFDaENDLGNBQThDLEVBQ2hEO0lBQUEsS0FQZUMsVUFBVTtJQVF2QixJQUFJLENBQUNBLFVBQVUsR0FBRyxJQUFJQyxzQkFBVSxDQUFDTCxTQUFTLEVBQUVDLE9BQU8sRUFBRSxJQUFBSyxnREFBNEIsRUFBQ0gsY0FBYyxDQUFDLEVBQUU7TUFDL0ZELFlBQVksRUFBRUE7SUFDbEIsQ0FBQyxDQUFDO0VBQ047RUFFT0ssUUFBUUEsQ0FBQ0MsV0FBd0IsRUFBd0I7SUFDNUQsT0FBTyxJQUFJQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUNMLFVBQVUsRUFBRUksV0FBVyxDQUFDO0VBQ2hFO0VBRUEsTUFBYUUsYUFBYUEsQ0FBQ0YsV0FBd0IsRUFBRUcsSUFBdUIsRUFBNkI7SUFDckcsTUFBTUMsS0FBSyxHQUFHRCxJQUFJLENBQUNFLEdBQUcsQ0FBQ0MsR0FBRyxJQUFLLFVBQVNBLEdBQUksRUFBQyxDQUFDO0lBQzlDLE1BQU1DLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQ1gsVUFBVSxDQUNqQ1ksSUFBSSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDVCxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FDaERVLFlBQVksQ0FBQ04sS0FBSyxDQUFDLENBQ25CTyxJQUFJLENBQXNCLENBQUM7SUFDaEMsTUFBTUMsTUFBd0IsR0FBRyxDQUFDLENBQUM7SUFDbkMsS0FBSyxNQUFNTixHQUFHLElBQUlILElBQUksRUFBRTtNQUFBLElBQUFVLFNBQUE7TUFDcEIsTUFBTUMsY0FBYyxJQUFBRCxTQUFBLEdBQUdOLFFBQVEsQ0FBRSxVQUFTRCxHQUFJLEVBQUMsQ0FBQyxjQUFBTyxTQUFBLHVCQUF6QkEsU0FBQSxDQUEyQkUsS0FBSztNQUN2RCxJQUFJRCxjQUFjLElBQUlFLFNBQVMsRUFBRTtRQUM3QkosTUFBTSxDQUFDTixHQUFHLENBQUMsR0FBRztVQUNWUyxLQUFLLEVBQUVDLFNBQVM7VUFDaEJDLEtBQUssRUFBRSxpQ0FBaUM7VUFDeENDLFNBQVMsRUFBRUMsZ0NBQW9CLENBQUNDO1FBQ3BDLENBQUM7TUFDTCxDQUFDLE1BQU07UUFBQSxJQUFBQyxxQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxzQkFBQTtRQUNIWCxNQUFNLENBQUNOLEdBQUcsQ0FBQyxHQUFHO1VBQ1ZTLEtBQUssR0FBQU0scUJBQUEsR0FBRVAsY0FBYyxDQUFDQyxLQUFLLGNBQUFNLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUlMLFNBQVM7VUFDeENFLFNBQVMsR0FBQUkscUJBQUEsR0FBRVIsY0FBYyxDQUFDSSxTQUFTLGNBQUFJLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUlOLFNBQVM7VUFDaERDLEtBQUssR0FBQU0sc0JBQUEsR0FBRVQsY0FBYyxDQUFDRyxLQUFLLGNBQUFNLHNCQUFBLGNBQUFBLHNCQUFBLEdBQUlQO1FBQ25DLENBQUM7TUFDTDtJQUNKO0lBQ0EsT0FBT0osTUFBTTtFQUNqQjtFQUVBLE1BQWFZLFVBQVVBLENBQUNDLFdBQXlCLEVBQXFCO0lBQ2xFLE1BQU1DLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQzlCLFVBQVUsQ0FBQytCLEdBQUcsQ0FBRSxtQkFBa0IsQ0FBQyxDQUFDaEIsSUFBSSxDQUFXLENBQUM7SUFDNUUsT0FBT2UsSUFBSTtFQUNmO0VBRUEsTUFBYUUsb0JBQW9CQSxDQUM3QkMsRUFBVSxFQUNWQyxXQUFtQixFQUNuQkwsV0FBeUIsRUFDRztJQUM1QixPQUFPLE1BQU0sSUFBSSxDQUFDN0IsVUFBVSxDQUN2QlksSUFBSSxDQUFFLFNBQVFxQixFQUFHLDBCQUF5QixDQUFDLENBQzNDRSxlQUFlLENBQUM7TUFDYkYsRUFBRSxFQUFFQSxFQUFFO01BQ05DLFdBQVcsRUFBRUE7SUFDakIsQ0FBQyxDQUFDLENBQ0RFLGVBQWUsQ0FBQ1AsV0FBVyxDQUFDLENBQzVCZCxJQUFJLENBQXNCLENBQUM7RUFDcEM7RUFFQSxNQUFhc0IsZ0JBQWdCQSxDQUFDSixFQUFVLEVBQUVLLEdBQVcsRUFBRVQsV0FBeUIsRUFBZ0M7SUFDNUcsT0FBTyxNQUFNLElBQUksQ0FBQzdCLFVBQVUsQ0FDdkJZLElBQUksQ0FBRSxTQUFRcUIsRUFBRyxlQUFjLENBQUMsQ0FDaENFLGVBQWUsQ0FBQztNQUFFRyxHQUFHLEVBQUVBO0lBQUksQ0FBQyxDQUFDLENBQzdCRixlQUFlLENBQUNQLFdBQVcsQ0FBQyxDQUM1QmQsSUFBSSxDQUFzQixDQUFDO0VBQ3BDO0VBSUEsTUFBYXdCLFdBQVdBLENBQUNOLEVBQVUsRUFBRUssR0FBdUIsRUFBRUUsVUFBbUIsRUFBZ0M7SUFDN0csSUFBSUYsR0FBRyxJQUFJbEIsU0FBUyxJQUFJb0IsVUFBVSxJQUFJcEIsU0FBUyxFQUFFO01BQzdDLE9BQU8sTUFBTSxJQUFJLENBQUNwQixVQUFVLENBQ3ZCWSxJQUFJLENBQUUsU0FBUXFCLEVBQUcsZUFBYyxDQUFDLENBQ2hDUSxlQUFlLENBQUMsMEJBQTBCLENBQUMsQ0FDM0NDLGtCQUFrQixDQUFDRixVQUFVLENBQUMsQ0FDOUJ6QixJQUFJLENBQXNCLENBQUM7SUFDcEM7SUFDQSxJQUFJdUIsR0FBRyxJQUFJbEIsU0FBUyxJQUFJb0IsVUFBVSxJQUFJcEIsU0FBUyxFQUFFO01BQzdDLE9BQU8sTUFBTSxJQUFJLENBQUNwQixVQUFVLENBQ3ZCWSxJQUFJLENBQUUsU0FBUXFCLEVBQUcsZUFBYyxDQUFDLENBQ2hDRSxlQUFlLENBQUM7UUFBRUcsR0FBRyxFQUFFQTtNQUFJLENBQUMsQ0FBQyxDQUM3QkcsZUFBZSxDQUFDLDBCQUEwQixDQUFDLENBQzNDQyxrQkFBa0IsQ0FBQ0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDbkM3QixJQUFJLENBQXNCLENBQUM7SUFDcEM7SUFDQSxJQUFJdUIsR0FBRyxJQUFJbEIsU0FBUyxJQUFJb0IsVUFBVSxJQUFJcEIsU0FBUyxFQUFFO01BQzdDLE1BQU0sSUFBSXlCLEtBQUssQ0FBQyxrREFBa0QsQ0FBQztJQUN2RTtJQUNBLE9BQU8sTUFBTSxJQUFJLENBQUM3QyxVQUFVLENBQ3ZCWSxJQUFJLENBQUUsU0FBUXFCLEVBQUcsZUFBYyxDQUFDLENBQ2hDRSxlQUFlLENBQUM7TUFBRUcsR0FBRyxFQUFFQTtJQUFJLENBQUMsQ0FBQyxDQUM3QkcsZUFBZSxDQUFDLDBCQUEwQixDQUFDLENBQzNDQyxrQkFBa0IsQ0FBQ0YsVUFBVSxDQUFDLENBQzlCekIsSUFBSSxDQUFzQixDQUFDO0VBQ3BDO0VBRUEsTUFBYStCLFVBQVVBLENBQUEsRUFBa0I7SUFDckMsTUFBTSxJQUFJLENBQUM5QyxVQUFVLENBQUMrQixHQUFHLENBQUUsY0FBYSxDQUFDO0VBQzdDO0VBRVFsQixXQUFXQSxDQUFDVCxXQUF3QixFQUFFMkMsZUFBdUIsRUFBVTtJQUMzRSxPQUFRLFNBQVEzQyxXQUFXLENBQUM2QixFQUFHLFdBQVU3QixXQUFXLENBQUM0QyxPQUFRLElBQUdELGVBQWdCLEVBQUM7RUFDckY7RUFFQSxNQUFhRSxlQUFlQSxDQUFBLEVBQWtDO0lBQzFELE9BQU8sTUFBTSxJQUFJLENBQUNqRCxVQUFVLENBQUMrQixHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQ2hCLElBQUksQ0FBdUIsQ0FBQztFQUN0RjtFQUVBLE1BQWFtQyxxQkFBcUJBLENBQUNDLGtCQUFzQyxFQUFvQjtJQUN6RixNQUFNeEMsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDWCxVQUFVLENBQ2pDWSxJQUFJLENBQUMsK0JBQStCLENBQUMsQ0FDckN3QyxXQUFXLENBQUNDLElBQUksQ0FBQ0MsU0FBUyxDQUFDSCxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3BELElBQUksRUFBRXhDLFFBQVEsQ0FBQzRDLE1BQU0sSUFBSSxHQUFHLElBQUk1QyxRQUFRLENBQUM0QyxNQUFNLEdBQUcsR0FBRyxDQUFDLEVBQUU7TUFDcEQsTUFBTSxJQUFJVixLQUFLLENBQUUseUJBQXdCbEMsUUFBUSxDQUFDNEMsTUFBTyxHQUFFLENBQUM7SUFDaEU7SUFDQSxPQUFPLElBQUk7RUFDZjtBQUNKO0FBQUNuRSxPQUFBLENBQUFNLGNBQUEsR0FBQUEsY0FBQTtBQUVNLE1BQU1XLG1CQUFtQixDQUFpQztFQUl0RFYsV0FBV0EsQ0FBQ0ssVUFBdUIsRUFBRUksV0FBd0IsRUFBRTtJQUFBLEtBSHJESixVQUFVO0lBQUEsS0FDVkksV0FBVztJQUd4QixJQUFJLENBQUNKLFVBQVUsR0FBR0EsVUFBVTtJQUM1QixJQUFJLENBQUNJLFdBQVcsR0FBR0EsV0FBVztFQUNsQztFQUVPb0Qsb0JBQW9CQSxDQUFBLEVBQVc7SUFDbEMsT0FBTyxJQUFJLENBQUN4RCxVQUFVLENBQUN5RCxHQUFHLENBQUUsbUJBQWtCLElBQUksQ0FBQ3JELFdBQVcsQ0FBQzZCLEVBQUcsV0FBVSxJQUFJLENBQUM3QixXQUFXLENBQUM0QyxPQUFRLEVBQUMsQ0FBQztFQUMzRztFQUVPVSxrQkFBa0JBLENBQUEsRUFBVztJQUNoQyxPQUFPLElBQUksQ0FBQzFELFVBQVUsQ0FBQ3lELEdBQUcsQ0FBQyxJQUFJLENBQUM1QyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7RUFDM0Q7RUFFTzhDLHdCQUF3QkEsQ0FBQSxFQUFXO0lBQ3RDLE9BQU8sSUFBSSxDQUFDM0QsVUFBVSxDQUFDeUQsR0FBRyxDQUFDLElBQUksQ0FBQzVDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztFQUM5RDtFQUVPK0MseUJBQXlCQSxDQUFBLEVBQVc7SUFDdkMsT0FBTyxJQUFJLENBQUNDLGdDQUFnQyxDQUFDQyw0Q0FBcUIsQ0FBQ0MsUUFBUSxDQUFDO0VBQ2hGO0VBRU9DLDJCQUEyQkEsQ0FBQSxFQUFXO0lBQ3pDLE9BQU8sSUFBSSxDQUFDSCxnQ0FBZ0MsQ0FBQ0MsNENBQXFCLENBQUNHLFVBQVUsQ0FBQztFQUNsRjtFQUVPQyxnQ0FBZ0NBLENBQUEsRUFBVztJQUM5QyxPQUFPLElBQUksQ0FBQ0wsZ0NBQWdDLENBQUNDLDRDQUFxQixDQUFDSyxlQUFlLENBQUM7RUFDdkY7RUFFT0Msb0JBQW9CQSxDQUFBLEVBQVc7SUFDbEMsT0FBTyxJQUFJLENBQUNQLGdDQUFnQyxDQUFDQyw0Q0FBcUIsQ0FBQ08sS0FBSyxDQUFDO0VBQzdFO0VBRUEsTUFBYUMsV0FBV0EsQ0FBQSxFQUE0QjtJQUNoRCxPQUFPLElBQUksQ0FBQ3RFLFVBQVUsQ0FBQytCLEdBQUcsQ0FBQyxJQUFJLENBQUN3Qyx1QkFBdUIsQ0FBQ1QsNENBQXFCLENBQUNVLFFBQVEsQ0FBQyxDQUFDLENBQUN6RCxJQUFJLENBQWlCLENBQUM7RUFDbkg7RUFFQSxNQUFhMEQsNkJBQTZCQSxDQUFDQyxjQUFtQyxFQUEyQjtJQUNyRyxPQUFPLElBQUksQ0FBQzFFLFVBQVUsQ0FDakJZLElBQUksQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUNsQ0MsWUFBWSxDQUFDO01BQUU0RCxjQUFjLEVBQUVBO0lBQWUsQ0FBQyxDQUFDLENBQ2hEM0QsSUFBSSxDQUFpQixDQUFDO0VBQy9CO0VBRUEsTUFBYTRELFdBQVdBLENBQUNDLE1BQWMsRUFBbUM7SUFBQSxJQUFBQyxNQUFBO0lBQ3RFLE1BQU1DLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQzlFLFVBQVUsQ0FDOUJZLElBQUksQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUNuQ0MsWUFBWSxDQUFDLENBQUUsU0FBUSxDQUFDLENBQUMsQ0FDekJDLElBQUksQ0FBeUIsQ0FBQztJQUNuQyxRQUFBOEQsTUFBQSxHQUFPQyxLQUFLLENBQUUsU0FBUUYsTUFBTyxFQUFDLENBQUMsY0FBQUMsTUFBQSx1QkFBeEJBLE1BQUEsQ0FBMEIxRCxLQUFLO0VBQzFDO0VBRUEsTUFBYTRELHFCQUFxQkEsQ0FBQSxFQUFvRDtJQUNsRixNQUFNcEUsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDWCxVQUFVLENBQ2pDK0IsR0FBRyxDQUFDLElBQUksQ0FBQ2xCLFdBQVcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQ2pERSxJQUFJLENBQTZCLENBQUM7SUFDdkMsT0FBT0osUUFBUTtFQUNuQjtFQUVBLE1BQWFxRSxhQUFhQSxDQUFDQyxLQUFlLEVBQTJDO0lBQ2pGLE1BQU10RSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUNYLFVBQVUsQ0FDakNZLElBQUksQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQ3pDQyxZQUFZLENBQUNtRSxLQUFLLENBQUMsQ0FDbkJsRSxJQUFJLENBQXFCLENBQUM7SUFDL0IsT0FBT0osUUFBUTtFQUNuQjtFQUVBLE1BQWF1RSxXQUFXQSxDQUFBLEVBQTBCO0lBQzlDLE1BQU1KLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQzlFLFVBQVUsQ0FDOUJZLElBQUksQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUNuQ0MsWUFBWSxDQUFDLENBQUUsU0FBUSxDQUFDLENBQUMsQ0FDekJDLElBQUksQ0FBeUIsQ0FBQztJQUNuQyxPQUFPb0UsTUFBTSxDQUFDQyxNQUFNLENBQUNOLEtBQUssQ0FBQyxDQUFDckUsR0FBRyxDQUFDNEUsQ0FBQyxJQUFJQSxDQUFDLENBQUNsRSxLQUFLLENBQUM7RUFDakQ7RUFFQSxNQUFhbUUsV0FBV0EsQ0FBQ1YsTUFBYyxFQUFFVyxRQUE2QyxFQUFpQjtJQUNuRyxNQUFNLElBQUksQ0FBQ3ZGLFVBQVUsQ0FDaEJZLElBQUksQ0FBQyxJQUFJLENBQUMyRCx1QkFBdUIsQ0FBQ1QsNENBQXFCLENBQUNPLEtBQUssQ0FBQyxDQUFDLENBQy9EbEMsZUFBZSxDQUFDbkQsY0FBYyxDQUFDLENBQy9COEIsWUFBWSxDQUFDO01BQ1YwRSxLQUFLLEVBQUUsRUFBRTtNQUNUQyxPQUFPLEVBQUU7UUFDTCxDQUFFLFNBQVFiLE1BQU8sRUFBQyxHQUFHO1VBQ2pCLEdBQUdXLFFBQVE7VUFDWEcsRUFBRSxFQUFFZDtRQUNSO01BQ0osQ0FBQztNQUNEZSxPQUFPLEVBQUU7SUFDYixDQUFDLENBQUM7RUFDVjtFQUVBLE1BQWFDLFVBQVVBLENBQUNoQixNQUFjLEVBQWlCO0lBQ25ELE1BQU0sSUFBSSxDQUFDNUUsVUFBVSxDQUNoQlksSUFBSSxDQUFDLElBQUksQ0FBQzJELHVCQUF1QixDQUFDVCw0Q0FBcUIsQ0FBQ08sS0FBSyxDQUFDLENBQUMsQ0FDL0RsQyxlQUFlLENBQUNuRCxjQUFjLENBQUMsQ0FDL0I4QixZQUFZLENBQUM7TUFDVjBFLEtBQUssRUFBRSxFQUFFO01BQ1RDLE9BQU8sRUFBRSxDQUFDLENBQUM7TUFDWEUsT0FBTyxFQUFFLENBQUUsU0FBUWYsTUFBTyxFQUFDO0lBQy9CLENBQUMsQ0FBQztFQUNWO0VBRU9pQixpQkFBaUJBLENBQUEsRUFBNEI7SUFDaEQsT0FBTyxJQUFJLENBQUM3RixVQUFVLENBQ2pCK0IsR0FBRyxDQUFDLElBQUksQ0FBQ3dDLHVCQUF1QixDQUFDVCw0Q0FBcUIsQ0FBQ2dDLGNBQWMsQ0FBQyxDQUFDLENBQ3ZFL0UsSUFBSSxDQUFpQixDQUFDO0VBQy9CO0VBRU9nRixvQkFBb0JBLENBQUNDLFlBQW9CLEVBQUVDLFNBQWlCLEVBQVU7SUFDekUsT0FBTyxJQUFJLENBQUNqRyxVQUFVLENBQUN5RCxHQUFHLENBQUMsSUFBSSxDQUFDNUMsV0FBVyxDQUFDLDhCQUE4QixDQUFDLEVBQUU7TUFDekVtRixZQUFZLEVBQUVBLFlBQVk7TUFDMUJFLGNBQWMsRUFBRUQ7SUFDcEIsQ0FBQyxDQUFDO0VBQ047RUFFQSxNQUFhRSxVQUFVQSxDQUFBLEVBQWtCO0lBQ3JDLE1BQU0sSUFBSSxDQUFDbkcsVUFBVSxDQUFDWSxJQUFJLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7RUFDekQ7RUFFQSxNQUFhdUYsdUJBQXVCQSxDQUFDO0lBQUVDLGNBQWM7SUFBRS9EO0VBQXlCLENBQUMsRUFBaUI7SUFDOUYsTUFBTSxJQUFJLENBQUN0QyxVQUFVLENBQUNZLElBQUksQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDc0IsZUFBZSxDQUFDO01BQ3BFdUQsRUFBRSxFQUFFVyxjQUFjO01BQ2xCL0QsR0FBRyxFQUFFQTtJQUNULENBQUMsQ0FBQztFQUNOO0VBRUEsTUFBYWdFLGFBQWFBLENBQUNDLElBQXFCLEVBQUVDLGtCQUEwQixFQUFpQztJQUN6RyxNQUFNeEYsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDaEIsVUFBVSxDQUMvQlksSUFBSSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQy9Cc0IsZUFBZSxDQUFDO01BQUVqRCxXQUFXLEVBQUVzSDtJQUFtQixDQUFDLENBQUMsQ0FDcEQxRixZQUFZLENBQUN5RixJQUFJLENBQUMsQ0FDbEJFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFFcEIsTUFBTUMsZ0JBQWdCLEdBQUcsTUFBQUEsQ0FBQSxLQUFZO01BQUEsSUFBQUMscUJBQUE7TUFDakMsTUFBTUMsVUFBVSxHQUFHLE1BQU01RixNQUFNLENBQUNELElBQUksQ0FBMkIsQ0FBQztNQUNoRSxPQUFPO1FBQ0g3QixXQUFXLEdBQUF5SCxxQkFBQSxHQUFFQyxVQUFVLGFBQVZBLFVBQVUsdUJBQVZBLFVBQVUsQ0FBRTFILFdBQVcsY0FBQXlILHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksSUFBQUUsbUJBQU0sRUFBQyxnREFBZ0Q7TUFDbkcsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPN0YsTUFBTSxDQUFDdUMsTUFBTSxJQUFJLEdBQUcsR0FBRyxNQUFNbUQsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHMUYsTUFBTSxDQUFDdUMsTUFBTTtFQUMxRTtFQUVBLE1BQWF1RCw4QkFBOEJBLENBQ3ZDUCxJQUFxQixFQUNyQkMsa0JBQTBCLEVBQzFCTyxZQUFxQixFQUNRO0lBQzdCLE1BQU0vRixNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUNoQixVQUFVLENBQy9CWSxJQUFJLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUN4RHNCLGVBQWUsQ0FBQztNQUFFakQsV0FBVyxFQUFFc0gsa0JBQWtCO01BQUVPLFlBQVksRUFBRUE7SUFBYSxDQUFDLENBQUMsQ0FDaEZqRyxZQUFZLENBQUN5RixJQUFJLENBQUMsQ0FDbEJFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFFcEIsT0FBT3pGLE1BQU0sQ0FBQ3VDLE1BQU0sSUFBSSxHQUFHLEdBQUcsTUFBTXZDLE1BQU0sQ0FBQ0QsSUFBSSxDQUE4QixDQUFDLEdBQUdDLE1BQU0sQ0FBQ3VDLE1BQU07RUFDbEc7RUFFT3lELGlCQUFpQkEsQ0FDcEJULElBQXFCLEVBQ3JCQyxrQkFBMEIsRUFDMUJPLFlBQXFCLEVBQ0Q7SUFDcEIsTUFBTS9GLE1BQU0sR0FBRyxJQUFJLENBQUNoQixVQUFVLENBQUNpSCxRQUFRLENBQUMsSUFBSSxDQUFDcEcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFO01BQUUzQixXQUFXLEVBQUVzSDtJQUFtQixDQUFDLEVBQUVELElBQUksQ0FBQztJQUU3RyxNQUFNVyxvQkFBb0IsR0FBR0EsQ0FBQSxLQUFNO01BQUEsSUFBQUMsc0JBQUE7TUFDL0IsTUFBTVAsVUFBVSxHQUFHNUYsTUFBTSxDQUFDRCxJQUFJLENBQTJCLENBQUM7TUFDMUQsT0FBTztRQUNIN0IsV0FBVyxHQUFBaUksc0JBQUEsR0FBRVAsVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUUxSCxXQUFXLGNBQUFpSSxzQkFBQSxjQUFBQSxzQkFBQSxHQUFJLElBQUFOLG1CQUFNLEVBQUMsZ0RBQWdEO01BQ25HLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTzdGLE1BQU0sQ0FBQ3VDLE1BQU0sSUFBSSxHQUFHLEdBQUcyRCxvQkFBb0IsQ0FBQyxDQUFDLEdBQUdsRyxNQUFNLENBQUN1QyxNQUFNO0VBQ3hFO0VBRUEsTUFBYTZELGFBQWFBLENBQUNDLGFBQWdDLEVBQXFDO0lBQzVGLE9BQU8sTUFBTSxJQUFJLENBQUNySCxVQUFVLENBQ3ZCWSxJQUFJLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FDbkNDLFlBQVksQ0FBQ3VHLGFBQWEsQ0FBQyxDQUMzQnRHLElBQUksQ0FBMkIsQ0FBQztFQUN6QztFQUVBLE1BQWF1RyxRQUFRQSxDQUFDOUcsS0FBb0MsRUFBZ0M7SUFDdEYsT0FBTyxNQUFNLElBQUksQ0FBQ1IsVUFBVSxDQUN2QlksSUFBSSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQ25DQyxZQUFZLENBQUNOLEtBQUssQ0FBQyxDQUNuQk8sSUFBSSxDQUFzQixDQUFDO0VBQ3BDO0VBRU93RyxlQUFlQSxDQUFDdEMsS0FBOEIsRUFBRXVDLGdCQUF5QixFQUFnQztJQUM1RyxNQUFNQyxjQUFjLEdBQUd4QyxLQUFLLENBQUN4RSxHQUFHLENBQUNwQixvQ0FBb0MsQ0FBQztJQUN0RSxPQUFPLElBQUksQ0FBQ1csVUFBVSxDQUNqQlksSUFBSSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FDM0NzQixlQUFlLENBQUNxRixnQkFBZ0IsSUFBSXBHLFNBQVMsSUFBSTtNQUFFb0csZ0JBQWdCLEVBQUVBLGdCQUFnQixDQUFDRSxRQUFRLENBQUM7SUFBRSxDQUFDLENBQUMsQ0FDbkc1RyxZQUFZLENBQUMyRyxjQUFjLENBQUNFLE1BQU0sR0FBRyxDQUFDLEdBQUdGLGNBQWMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ2hFMUcsSUFBSSxDQUFzQixDQUFDO0VBQ3BDO0VBRUEsTUFBYTZHLHlCQUF5QkEsQ0FDbEMzQyxLQUE4QixFQUM5QnVDLGdCQUF5QixFQUNFO0lBQzNCLE1BQU1DLGNBQWMsR0FBR3hDLEtBQUssQ0FBQ3hFLEdBQUcsQ0FBQ3BCLG9DQUFvQyxDQUFDO0lBQ3RFLE9BQU8sSUFBSSxDQUFDVyxVQUFVLENBQ2pCWSxJQUFJLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUMzQ3NCLGVBQWUsQ0FBQ3FGLGdCQUFnQixJQUFJcEcsU0FBUyxJQUFJO01BQUVvRyxnQkFBZ0IsRUFBRUEsZ0JBQWdCLENBQUNFLFFBQVEsQ0FBQztJQUFFLENBQUMsQ0FBQyxDQUNuR3ZGLGVBQWUsQ0FBQztNQUFFMEYsTUFBTSxFQUFFO0lBQVcsQ0FBQyxDQUFDLENBQ3ZDL0csWUFBWSxDQUFDMkcsY0FBYyxDQUFDRSxNQUFNLEdBQUcsQ0FBQyxHQUFHRixjQUFjLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNoRTFHLElBQUksQ0FBcUIsQ0FBQztFQUNuQztFQUVPK0csNEJBQTRCQSxDQUMvQjdDLEtBQXVDLEVBQ3ZDdUMsZ0JBQXlCLEVBQ0M7SUFDMUIsTUFBTUMsY0FBYyxHQUFHeEMsS0FBSyxDQUFDeEUsR0FBRyxDQUFDcEIsb0NBQW9DLENBQUM7SUFDdEUsT0FBTyxJQUFJLENBQUNXLFVBQVUsQ0FDakJZLElBQUksQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQzVDc0IsZUFBZSxDQUFDcUYsZ0JBQWdCLElBQUlwRyxTQUFTLElBQUk7TUFBRW9HLGdCQUFnQixFQUFFQSxnQkFBZ0IsQ0FBQ0UsUUFBUSxDQUFDO0lBQUUsQ0FBQyxDQUFDLENBQ25HNUcsWUFBWSxDQUFDMkcsY0FBYyxDQUFDRSxNQUFNLEdBQUcsQ0FBQyxHQUFHRixjQUFjLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNoRTFHLElBQUksQ0FBb0IsQ0FBQztFQUNsQztFQUVPZ0gsY0FBY0EsQ0FBQSxFQUFvQjtJQUNyQyxPQUFPLElBQUksQ0FBQy9ILFVBQVUsQ0FBQytCLEdBQUcsQ0FBQyxJQUFJLENBQUNsQixXQUFXLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDRSxJQUFJLENBQVMsQ0FBQztFQUN6RjtFQUVBLE1BQWFpSCxrQkFBa0JBLENBQUEsRUFBMkM7SUFDdEUsT0FBTyxNQUFNLElBQUksQ0FBQ2hJLFVBQVUsQ0FDdkIrQixHQUFHLENBQUMsSUFBSSxDQUFDd0MsdUJBQXVCLENBQUNULDRDQUFxQixDQUFDbUUsZUFBZSxDQUFDLENBQUMsQ0FDeEVsSCxJQUFJLENBQWdDLENBQUM7RUFDOUM7RUFFQSxNQUFhbUgsaUJBQWlCQSxDQUFDQyxZQUFvQixFQUF1QjtJQUFBLElBQUFDLGFBQUEsRUFBQUMsT0FBQTtJQUN0RSxNQUFNckgsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDaEIsVUFBVSxDQUMvQlksSUFBSSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQ25DQyxZQUFZLENBQUMsQ0FBRSxlQUFjcUgsWUFBYSxFQUFDLENBQUMsQ0FBQyxDQUM3Q3BILElBQUksQ0FBeUIsQ0FBQztJQUNuQyxRQUFBcUgsYUFBQSxJQUFBQyxPQUFBLEdBQU9ySCxNQUFNLENBQUUsZUFBY21ILFlBQWEsRUFBQyxDQUFDLGNBQUFFLE9BQUEsdUJBQXJDQSxPQUFBLENBQXVDbEgsS0FBSyxjQUFBaUgsYUFBQSxjQUFBQSxhQUFBLEdBQUksSUFBQXZCLG1CQUFNLEVBQUMsQ0FBQztFQUNuRTtFQUVBLE1BQWF5QixpQkFBaUJBLENBQUEsRUFBMEI7SUFDcEQsTUFBTXRILE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQ2hCLFVBQVUsQ0FDL0JZLElBQUksQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUNuQ0MsWUFBWSxDQUFDLENBQUUsZUFBYyxDQUFDLENBQUMsQ0FDL0JDLElBQUksQ0FBeUIsQ0FBQztJQUNuQyxPQUFPb0UsTUFBTSxDQUFDQyxNQUFNLENBQUNwRSxNQUFNLENBQUMsQ0FBQ1AsR0FBRyxDQUFDNEUsQ0FBQyxJQUFJQSxDQUFDLENBQUNsRSxLQUFLLENBQUM7RUFDbEQ7RUFFQSxNQUFhb0gsaUJBQWlCQSxDQUFDQyxhQUFnQyxFQUFpQjtJQUM1RSxNQUFNLElBQUksQ0FBQ3hJLFVBQVUsQ0FDaEJZLElBQUksQ0FBQyxJQUFJLENBQUMyRCx1QkFBdUIsQ0FBQ1QsNENBQXFCLENBQUNPLEtBQUssQ0FBQyxDQUFDLENBQy9EbEMsZUFBZSxDQUFDbkQsY0FBYyxDQUFDLENBQy9COEIsWUFBWSxDQUFDO01BQ1YwRSxLQUFLLEVBQUUsRUFBRTtNQUNUQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO01BQ1hFLE9BQU8sRUFBRTZDLGFBQWEsQ0FBQy9ILEdBQUcsQ0FBQ2lGLEVBQUUsSUFBSyxlQUFjQSxFQUFHLEVBQUM7SUFDeEQsQ0FBQyxDQUFDO0VBQ1Y7RUFFQSxNQUFhK0MseUJBQXlCQSxDQUFDQyxXQUFrQyxFQUFpQjtJQUN0RixNQUFNakQsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNsQixLQUFLLE1BQU1rRCxVQUFVLElBQUlELFdBQVcsRUFBRTtNQUNsQ2pELE9BQU8sQ0FBRSxlQUFja0QsVUFBVSxDQUFDakQsRUFBRyxFQUFDLENBQUMsR0FBRztRQUN0Q2tELFVBQVUsRUFBRUQsVUFBVSxDQUFDQyxVQUFVO1FBQ2pDbEQsRUFBRSxFQUFFaUQsVUFBVSxDQUFDakQsRUFBRTtRQUNqQm1ELElBQUksRUFBRUYsVUFBVSxDQUFDRTtNQUNyQixDQUFDO0lBQ0w7SUFDQSxNQUFNLElBQUksQ0FBQzdJLFVBQVUsQ0FDaEJZLElBQUksQ0FBQyxJQUFJLENBQUMyRCx1QkFBdUIsQ0FBQ1QsNENBQXFCLENBQUNPLEtBQUssQ0FBQyxDQUFDLENBQy9EbEMsZUFBZSxDQUFDbkQsY0FBYyxDQUFDLENBQy9COEIsWUFBWSxDQUFDO01BQ1YwRSxLQUFLLEVBQUUsRUFBRTtNQUNUQyxPQUFPLEVBQUVBLE9BQU87TUFDaEJFLE9BQU8sRUFBRTtJQUNiLENBQUMsQ0FBQztFQUNWO0VBRUEsTUFBYW1ELHFCQUFxQkEsQ0FBQ3hHLEdBQVcsRUFBRXlHLElBQVksRUFBdUI7SUFDL0UsT0FBTyxNQUFNLElBQUksQ0FBQy9JLFVBQVUsQ0FDdkJZLElBQUksQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLENBQzFEc0IsZUFBZSxDQUFDO01BQUVHLEdBQUcsRUFBRUEsR0FBRztNQUFFeUcsSUFBSSxFQUFFQTtJQUFLLENBQUMsQ0FBQyxDQUN6Q2hJLElBQUksQ0FBYSxDQUFDO0VBQzNCO0VBRUEsTUFBYWlJLDJCQUEyQkEsQ0FBQ3RELEVBQVUsRUFBdUI7SUFDdEUsTUFBTS9FLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQ1gsVUFBVSxDQUNqQ1ksSUFBSSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLDBDQUEwQyxDQUFDLENBQUMsQ0FDbEVzQixlQUFlLENBQUM7TUFBRWdHLFlBQVksRUFBRXpDO0lBQUcsQ0FBQyxDQUFDLENBQ3JDZSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBRXBCLElBQUk5RixRQUFRLENBQUM0QyxNQUFNLEtBQUssR0FBRyxFQUFFO01BQ3pCLE1BQU0wRixTQUFTLEdBQUcsTUFBTXRJLFFBQVEsQ0FBQ0ksSUFBSSxDQUF5QyxDQUFDO01BQy9FLElBQUlrSSxTQUFTLENBQUMzSCxTQUFTLEtBQUssaUJBQWlCLEVBQUU7UUFDM0MsTUFBTSxJQUFJNEgsMENBQW9CLENBQUNELFNBQVMsQ0FBQ0UsT0FBTyxDQUFDO01BQ3JEO01BQ0EsTUFBTSxJQUFJQyxxQkFBUyxDQUFDSCxTQUFTLENBQUNFLE9BQU8sRUFBRXhJLFFBQVEsQ0FBQzRDLE1BQU0sQ0FBQztJQUMzRDtJQUNBLE9BQU8sTUFBTTVDLFFBQVEsQ0FBQ0ksSUFBSSxDQUFhLENBQUM7RUFDNUM7RUFFQSxNQUFhc0ksZUFBZUEsQ0FBQ0MsZ0JBQXVDLEVBQUVDLE9BQXlCLEVBQWlCO0lBQzVHLElBQUlDLE9BQU8sR0FBRyxJQUFJLENBQUN4SixVQUFVLENBQUN5SixHQUFHLENBQUMsSUFBSSxDQUFDbEYsdUJBQXVCLENBQUMrRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2pGLElBQUksT0FBT0MsT0FBTyxLQUFLLFFBQVEsRUFBRTtNQUM3QkMsT0FBTyxHQUFHQSxPQUFPLENBQUNwRyxXQUFXLENBQUNtRyxPQUFPLENBQUM7SUFDMUMsQ0FBQyxNQUFNLElBQUksSUFBQUcsa0JBQVEsRUFBQ0gsT0FBTyxDQUFDLEVBQUU7TUFDMUJDLE9BQU8sR0FBR0EsT0FBTyxDQUFDcEcsV0FBVyxDQUFDbUcsT0FBTyxDQUFDO0lBQzFDLENBQUMsTUFBTTtNQUNIQyxPQUFPLEdBQUdBLE9BQU8sQ0FBQzFJLFlBQVksQ0FBQ3lJLE9BQU8sQ0FBQztJQUMzQztJQUNBLE1BQU1DLE9BQU87RUFDakI7RUFFQSxNQUFhRyxpQkFBaUJBLENBQzFCTCxnQkFBdUMsRUFDdkNNLG1CQUF3QyxFQUMzQjtJQUNiLE1BQU0sSUFBSSxDQUFDNUosVUFBVSxDQUFDNkosS0FBSyxDQUFDLElBQUksQ0FBQ3RGLHVCQUF1QixDQUFDK0UsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDeEksWUFBWSxDQUFDOEksbUJBQW1CLENBQUM7RUFDakg7RUFFQSxNQUFhRSxpQkFBaUJBLENBQzFCQyxRQUFnQixFQUNoQkMsZUFBcUMsRUFDRjtJQUNuQyxNQUFNckosUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDWCxVQUFVLENBQ2pDK0IsR0FBRyxDQUFFLHlCQUF3QixDQUFDLENBQzlCSSxlQUFlLENBQUM7TUFBRTRILFFBQVEsRUFBRUEsUUFBUTtNQUFFQyxlQUFlLEVBQUVBLGVBQWUsYUFBZkEsZUFBZSxjQUFmQSxlQUFlLEdBQUk7SUFBTSxDQUFDLENBQUMsQ0FDbEZ2RCxVQUFVLENBQUMsR0FBRyxDQUFDLENBQ2ZBLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDcEIsSUFBSTlGLFFBQVEsQ0FBQzRDLE1BQU0sS0FBSyxHQUFHLElBQUk1QyxRQUFRLENBQUM0QyxNQUFNLEtBQUssR0FBRyxJQUFJNUMsUUFBUSxDQUFDNEMsTUFBTSxLQUFLLEdBQUcsRUFBRTtNQUMvRSxPQUFPNUMsUUFBUSxDQUFDSSxJQUFJLENBQWlCLENBQUM7SUFDMUM7SUFDQSxPQUFPSyxTQUFTO0VBQ3BCO0VBRUEsTUFBYTZJLDJCQUEyQkEsQ0FBQ0YsUUFBZ0IsRUFBRXpILEdBQVcsRUFBdUM7SUFDekcsTUFBTTNCLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQ1gsVUFBVSxDQUNqQytCLEdBQUcsQ0FBRSxxQ0FBb0MsQ0FBQyxDQUMxQ0ksZUFBZSxDQUFDO01BQUVHLEdBQUcsRUFBRUEsR0FBRztNQUFFeUgsUUFBUSxFQUFFQTtJQUFTLENBQUMsQ0FBQyxDQUNqRHRELFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDcEIsSUFBSTlGLFFBQVEsQ0FBQzRDLE1BQU0sS0FBSyxHQUFHLEVBQUU7TUFDekIsT0FBT25DLFNBQVM7SUFDcEI7SUFDQSxJQUFJVCxRQUFRLENBQUM0QyxNQUFNLEtBQUssR0FBRyxFQUFFO01BQ3pCLE1BQU0wRixTQUFTLEdBQUcsTUFBTXRJLFFBQVEsQ0FBQ0ksSUFBSSxDQUF5QyxDQUFDO01BQy9FLElBQUlrSSxTQUFTLENBQUMzSCxTQUFTLEtBQUssaUJBQWlCLEVBQUU7UUFDM0MsTUFBTSxJQUFJNEgsMENBQW9CLENBQUNELFNBQVMsQ0FBQ0UsT0FBTyxDQUFDO01BQ3JEO01BQ0EsTUFBTSxJQUFJQyxxQkFBUyxDQUFDSCxTQUFTLENBQUNFLE9BQU8sRUFBRXhJLFFBQVEsQ0FBQzRDLE1BQU0sQ0FBQztJQUMzRDtJQUNBLE9BQU8sTUFBTTVDLFFBQVEsQ0FBQ0ksSUFBSSxDQUFpQixDQUFDO0VBQ2hEO0VBRUEsTUFBYW1KLDBCQUEwQkEsQ0FDbkNDLFNBQW1CLEVBQ25CN0gsR0FBVyxFQUNYVCxXQUF5QixFQUNZO0lBQ3JDLElBQUk7TUFDQSxNQUFNbEIsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDWCxVQUFVLENBQ2pDWSxJQUFJLENBQUUsb0NBQW1DLENBQUMsQ0FDMUN1QixlQUFlLENBQUM7UUFBRUcsR0FBRyxFQUFFQTtNQUFJLENBQUMsQ0FBQyxDQUM3QnhCLFlBQVksQ0FBQ3FKLFNBQVMsQ0FBQyxDQUN2Qi9ILGVBQWUsQ0FBQ1AsV0FBVyxDQUFDLENBQzVCNEUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUNmQSxVQUFVLENBQUMsR0FBRyxDQUFDO01BQ3BCLElBQUk5RixRQUFRLENBQUM0QyxNQUFNLEtBQUssR0FBRyxFQUFFO1FBQ3pCLE1BQU1nRCxJQUFJLEdBQUcsTUFBTTVGLFFBQVEsQ0FBQ0ksSUFBSSxDQUErQyxDQUFDO1FBQ2hGLE9BQU87VUFBRXFKLFdBQVcsRUFBRTdELElBQUksQ0FBQ2pGLFNBQVM7VUFBRStJLDhCQUE4QixFQUFFLEVBQUU7VUFBRUMsaUJBQWlCLEVBQUU7UUFBRSxDQUFDO01BQ3BHO01BQ0EsTUFBTS9ELElBQUksR0FBRyxNQUFNNUYsUUFBUSxDQUFDSSxJQUFJLENBQStCLENBQUM7TUFDaEUsT0FBT3dGLElBQUk7SUFDZixDQUFDLENBQUMsT0FBT2dFLENBQUMsRUFBRTtNQUNSLE9BQU87UUFDSEgsV0FBVyxFQUFFakwsWUFBWSxDQUFDcUwsWUFBWTtRQUN0Q0gsOEJBQThCLEVBQUUsRUFBRTtRQUNsQ0MsaUJBQWlCLEVBQUU7TUFDdkIsQ0FBQztJQUNMO0VBQ0o7RUFFQSxNQUFhRyxrQkFBa0JBLENBQzNCdkksV0FBbUIsRUFDbkJ3SSxZQUFvQixFQUNwQjdJLFdBQXlCLEVBQ2U7SUFDeEMsSUFBSTtNQUNBLE1BQU1sQixRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUNYLFVBQVUsQ0FDakNZLElBQUksQ0FBRSxTQUFRLElBQUksQ0FBQ1IsV0FBVyxDQUFDNkIsRUFBRyxXQUFVLElBQUksQ0FBQzdCLFdBQVcsQ0FBQzRDLE9BQVEsbUJBQWtCLENBQUMsQ0FDeEZiLGVBQWUsQ0FBQztRQUFFRCxXQUFXLEVBQUVBLFdBQVc7UUFBRXlJLE1BQU0sRUFBRUQ7TUFBYSxDQUFDLENBQUMsQ0FDbkV0SSxlQUFlLENBQUNQLFdBQVcsQ0FBQyxDQUM1QjRFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FDZkEsVUFBVSxDQUFDLEdBQUcsQ0FBQztNQUNwQixJQUFJOUYsUUFBUSxDQUFDNEMsTUFBTSxLQUFLLEdBQUcsRUFBRTtRQUN6QixNQUFNZ0QsSUFBSSxHQUFHLE1BQU01RixRQUFRLENBQUNJLElBQUksQ0FBK0MsQ0FBQztRQUNoRixPQUFPO1VBQUVxSixXQUFXLEVBQUU3RCxJQUFJLENBQUNqRjtRQUFVLENBQUM7TUFDMUM7TUFDQSxPQUFPRixTQUFTO0lBQ3BCLENBQUMsQ0FBQyxPQUFPbUosQ0FBQyxFQUFFO01BQ1IsT0FBTztRQUFFSCxXQUFXLEVBQUVqTCxZQUFZLENBQUNxTDtNQUFhLENBQUM7SUFDckQ7RUFDSjtFQUVBLE1BQWFJLDBCQUEwQkEsQ0FDbkNDLEtBQTRCLEVBQzVCaEosV0FBeUIsRUFDZTtJQUN4QyxJQUFJO01BQ0EsTUFBTWxCLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQ1gsVUFBVSxDQUNqQ1ksSUFBSSxDQUFFLFNBQVEsSUFBSSxDQUFDUixXQUFXLENBQUM2QixFQUFHLFdBQVUsSUFBSSxDQUFDN0IsV0FBVyxDQUFDNEMsT0FBUSw0QkFBMkIsQ0FBQyxDQUNqR2xDLFlBQVksQ0FBQytKLEtBQUssQ0FBQyxDQUNuQnpJLGVBQWUsQ0FBQ1AsV0FBVyxDQUFDLENBQzVCNEUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUNmQSxVQUFVLENBQUMsR0FBRyxDQUFDO01BQ3BCLElBQUk5RixRQUFRLENBQUM0QyxNQUFNLEtBQUssR0FBRyxFQUFFO1FBQ3pCLE1BQU1nRCxJQUFJLEdBQUcsTUFBTTVGLFFBQVEsQ0FBQ0ksSUFBSSxDQUErQyxDQUFDO1FBQ2hGLE9BQU87VUFBRXFKLFdBQVcsRUFBRTdELElBQUksQ0FBQ2pGO1FBQVUsQ0FBQztNQUMxQztNQUNBLE9BQU9GLFNBQVM7SUFDcEIsQ0FBQyxDQUFDLE9BQU9tSixDQUFDLEVBQUU7TUFDUixPQUFPO1FBQUVILFdBQVcsRUFBRWpMLFlBQVksQ0FBQ3FMO01BQWEsQ0FBQztJQUNyRDtFQUNKO0VBRUEsTUFBYU0sZ0JBQWdCQSxDQUFDZixRQUFnQixFQUFpQjtJQUMzRCxNQUFNLElBQUksQ0FBQy9KLFVBQVUsQ0FBQ3lKLEdBQUcsQ0FBQyxJQUFJLENBQUM1SSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQ3NCLGVBQWUsQ0FBQztNQUFFNEgsUUFBUSxFQUFFQTtJQUFTLENBQUMsQ0FBQztFQUNsRztFQUVBLE1BQWFnQixvQkFBb0JBLENBQzdCaEIsUUFBZ0IsRUFDaEJpQixhQUErQixFQUMvQm5KLFdBQXlCLEVBQ1k7SUFDckMsTUFBTWxCLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQ1gsVUFBVSxDQUNqQ1ksSUFBSSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FDbkRzQixlQUFlLENBQUM7TUFBRUQsV0FBVyxFQUFFNkgsUUFBUTtNQUFFaUIsYUFBYSxFQUFFQTtJQUFjLENBQUMsQ0FBQyxDQUN4RTVJLGVBQWUsQ0FBQ1AsV0FBVyxDQUFDO0lBQ2pDLElBQUlsQixRQUFRLENBQUM0QyxNQUFNLEtBQUssR0FBRyxFQUFFO01BQ3pCLE9BQU9uQyxTQUFTO0lBQ3BCO0lBQ0EsT0FBTyxNQUFNVCxRQUFRLENBQUNJLElBQUksQ0FBbUIsQ0FBQztFQUNsRDtFQUVBLE1BQWFrSyxtQkFBbUJBLENBQzVCM0ksR0FBVyxFQUNYNEksV0FBbUIsRUFDbkJmLFNBQW1CLEVBQzZCO0lBQ2hELElBQUk7TUFDQSxNQUFNeEosUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDWCxVQUFVLENBQ2pDWSxJQUFJLENBQUMsaUNBQWlDLENBQUMsQ0FDdkN1QixlQUFlLENBQUM7UUFBRUcsR0FBRyxFQUFFQSxHQUFHO1FBQUU0SSxXQUFXLEVBQUVBO01BQVksQ0FBQyxDQUFDLENBQ3ZEcEssWUFBWSxDQUFDcUosU0FBUyxDQUFDO01BQzVCLElBQUl4SixRQUFRLENBQUM0QyxNQUFNLEtBQUssR0FBRyxFQUFFO1FBQ3pCLE9BQU8sTUFBTTVDLFFBQVEsQ0FBQ0ksSUFBSSxDQUE4QixDQUFDO01BQzdEO01BQ0EsT0FBT0ssU0FBUztJQUNwQixDQUFDLENBQUMsT0FBT21KLENBQUMsRUFBRTtNQUNSLE9BQU9uSixTQUFTO0lBQ3BCO0VBQ0o7RUFFQSxNQUFhK0osMkJBQTJCQSxDQUNwQ0QsV0FBbUIsRUFDbkJuQixRQUFrQixFQUNsQmlCLGFBQXFCLEVBQ3JCSSxjQUE4QixFQUMwQjtJQUN4RCxJQUFJO01BQ0EsTUFBTXpLLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQ1gsVUFBVSxDQUNqQ1ksSUFBSSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLDJDQUEyQyxDQUFDLENBQUMsQ0FDbkVzQixlQUFlLENBQUM7UUFDYitJLFdBQVcsRUFBRUEsV0FBVztRQUN4QkYsYUFBYSxFQUFFQSxhQUFhO1FBQzVCSSxjQUFjLEVBQUVBO01BQ3BCLENBQUMsQ0FBQyxDQUNEdEssWUFBWSxDQUFDaUosUUFBUSxDQUFDO01BQzNCLElBQUlwSixRQUFRLENBQUM0QyxNQUFNLEtBQUssR0FBRyxFQUFFO1FBQ3pCLE9BQU8sTUFBTTVDLFFBQVEsQ0FBQ0ksSUFBSSxDQUFzQyxDQUFDO01BQ3JFO01BQ0EsT0FBT0ssU0FBUztJQUNwQixDQUFDLENBQUMsT0FBT21KLENBQUMsRUFBRTtNQUNSLE9BQU9uSixTQUFTO0lBQ3BCO0VBQ0o7RUFFQSxNQUFhaUssNEJBQTRCQSxDQUNyQ2xCLFNBQW1CLEVBQ25CYSxhQUErQixFQUMvQk0sSUFBZSxFQUNzQjtJQUNyQyxNQUFNM0ssUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDWCxVQUFVLENBQ2pDWSxJQUFJLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUNwRHNCLGVBQWUsQ0FBQztNQUFFNkksYUFBYSxFQUFFQTtJQUFjLENBQUMsQ0FBQyxDQUNqRGxLLFlBQVksQ0FBQztNQUFFcUosU0FBUyxFQUFFQSxTQUFTO01BQUVvQixTQUFTLEVBQUVEO0lBQUssQ0FBQyxDQUFDLENBQ3ZEN0UsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUNmQSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3BCLElBQUk5RixRQUFRLENBQUM0QyxNQUFNLEtBQUssR0FBRyxJQUFJNUMsUUFBUSxDQUFDNEMsTUFBTSxLQUFLLEdBQUcsRUFBRTtNQUNwRCxPQUFPbkMsU0FBUztJQUNwQjtJQUNBLE9BQU8sTUFBTVQsUUFBUSxDQUFDSSxJQUFJLENBQW1CLENBQUM7RUFDbEQ7RUFFQSxNQUFheUssVUFBVUEsQ0FDbkJyQixTQUFtQixFQUNuQmEsYUFBK0IsRUFDL0JJLGNBQThCLEVBQzlCSyxhQUFzQixFQUN0QkgsSUFBZSxFQUNzQjtJQUNyQyxNQUFNM0ssUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDWCxVQUFVLENBQ2pDWSxJQUFJLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUM5Q3NCLGVBQWUsQ0FBQztNQUNiNkksYUFBYSxFQUFFQSxhQUFhO01BQzVCSSxjQUFjLEVBQUVBLGNBQWM7TUFDOUJNLFdBQVcsRUFBRUQ7SUFDakIsQ0FBQyxDQUFDLENBQ0QzSyxZQUFZLENBQUM7TUFBRTZLLFlBQVksRUFBRXhCLFNBQVM7TUFBRW9CLFNBQVMsRUFBRUQ7SUFBSyxDQUFDLENBQUM7SUFDL0QsSUFBSTNLLFFBQVEsQ0FBQzRDLE1BQU0sS0FBSyxHQUFHLEVBQUU7TUFDekIsT0FBT25DLFNBQVM7SUFDcEI7SUFDQSxPQUFPLE1BQU1ULFFBQVEsQ0FBQ0ksSUFBSSxDQUFtQixDQUFDO0VBQ2xEO0VBRUEsTUFBYTZLLGdCQUFnQkEsQ0FBQ0MsUUFBdUIsRUFBaUI7SUFDbEUsTUFBTSxJQUFJLENBQUM3TCxVQUFVLENBQUM2SixLQUFLLENBQUMsSUFBSSxDQUFDaEosV0FBVyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQ0MsWUFBWSxDQUFDK0ssUUFBUSxDQUFDO0VBQ2pHO0VBRUEsTUFBYUMsZ0JBQWdCQSxDQUFBLEVBQTJCO0lBQ3BELE1BQU1uTCxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUNYLFVBQVUsQ0FBQytCLEdBQUcsQ0FBQyxJQUFJLENBQUNsQixXQUFXLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUVyRixPQUFPRixRQUFRLENBQUNJLElBQUksQ0FBZ0IsQ0FBQztFQUN6QztFQUVBLE1BQWFnTCxnQkFBZ0JBLENBQUM5RyxLQUFhLEVBQWlCO0lBQ3hELE1BQU0sSUFBSSxDQUFDakYsVUFBVSxDQUFDWSxJQUFJLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDQyxZQUFZLENBQUNtRSxLQUFLLENBQUM7RUFDdEY7RUFFUXBCLGdDQUFnQ0EsQ0FBQ3lGLGdCQUF1QyxFQUFVO0lBQ3RGLE9BQU8sSUFBSSxDQUFDdEosVUFBVSxDQUFDeUQsR0FBRyxDQUFDLElBQUksQ0FBQ2MsdUJBQXVCLENBQUMrRSxnQkFBZ0IsQ0FBQyxDQUFDO0VBQzlFO0VBRVF6SSxXQUFXQSxDQUFDa0MsZUFBdUIsRUFBVTtJQUNqRCxPQUFRLFNBQVEsSUFBSSxDQUFDM0MsV0FBVyxDQUFDNkIsRUFBRyxXQUFVLElBQUksQ0FBQzdCLFdBQVcsQ0FBQzRDLE9BQVEsSUFBR0QsZUFBZ0IsRUFBQztFQUMvRjtFQUVRd0IsdUJBQXVCQSxDQUFDK0UsZ0JBQXVDLEVBQVU7SUFDN0UsT0FBTyxJQUFJLENBQUN6SSxXQUFXLENBQUUsaUJBQWdCeUksZ0JBQWdCLENBQUM1QixRQUFRLENBQUMsQ0FBRSxFQUFDLENBQUM7RUFDM0U7RUFFQSxNQUFhc0UsNEJBQTRCQSxDQUFDL0csS0FBcUMsRUFBaUI7SUFDNUYsTUFBTWdILEdBQUcsR0FBRyxJQUFJLENBQUNwTCxXQUFXLENBQUMsdUNBQXVDLENBQUM7SUFDckUsTUFBTXFMLFVBQVUsR0FBR2pILEtBQUssQ0FBQ3hFLEdBQUcsQ0FBQzRFLENBQUMsS0FBSztNQUFFLEdBQUdBLENBQUM7TUFBRTBELElBQUksRUFBRSxJQUFBb0QsOEJBQW1CLEVBQUM5RyxDQUFDLENBQUMwRCxJQUFJO0lBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEYsTUFBTSxJQUFJLENBQUMvSSxVQUFVLENBQUM2SixLQUFLLENBQUNvQyxHQUFHLENBQUMsQ0FBQ25MLFlBQVksQ0FBQ29MLFVBQVUsQ0FBQztFQUM3RDtFQUVBLE1BQWFFLHFCQUFxQkEsQ0FDOUJDLElBQVksRUFDWkMsV0FBbUIsRUFDbkJDLGFBQXVCLEVBQ3ZCL0UsZ0JBQXlCLEVBQ1I7SUFDakIsTUFBTWdGLHNCQUFzQixHQUFHaEYsZ0JBQWdCLElBQUlwRyxTQUFTLEdBQUc7TUFBRW9HLGdCQUFnQixFQUFFQTtJQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFHLE1BQU1pRixNQUFNLEdBQUc7TUFBRUMsWUFBWSxFQUFFTCxJQUFJO01BQUVDLFdBQVcsRUFBRUEsV0FBVztNQUFFLEdBQUdFO0lBQXVCLENBQUM7SUFDMUYsT0FBTyxJQUFJLENBQUN4TSxVQUFVLENBQ2pCWSxJQUFJLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUNoRHNCLGVBQWUsQ0FBQ3NLLE1BQU0sQ0FBQyxDQUN2QjNMLFlBQVksQ0FBQ3lMLGFBQWEsQ0FBQyxDQUMzQnhMLElBQUksQ0FBVyxDQUFDO0VBQ3pCO0VBRUEsTUFBYTRMLGVBQWVBLENBQUNuRCxPQUEwQixFQUFFM0gsV0FBeUIsRUFBK0I7SUFDN0csT0FBTyxJQUFJLENBQUM3QixVQUFVLENBQ2pCWSxJQUFJLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUNoREMsWUFBWSxDQUFDMEksT0FBTyxDQUFDLENBQ3JCcEgsZUFBZSxDQUFDUCxXQUFXLENBQUMsQ0FDNUJkLElBQUksQ0FBcUIsQ0FBQztFQUNuQztFQUVBLE1BQWE2TCxlQUFlQSxDQUN4QjdGLFlBQW9CLEVBQ3BCOEYsWUFBc0IsRUFDdEJoTCxXQUF5QixFQUNaO0lBQ2IsTUFBTTRLLE1BQU0sR0FBRztNQUFFMUYsWUFBWSxFQUFFQTtJQUFhLENBQUM7SUFDN0MsTUFBTSxJQUFJLENBQUMvRyxVQUFVLENBQ2hCWSxJQUFJLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUNoRHNCLGVBQWUsQ0FBQ3NLLE1BQU0sQ0FBQyxDQUN2QjNMLFlBQVksQ0FBQytMLFlBQVksQ0FBQyxDQUMxQnpLLGVBQWUsQ0FBQ1AsV0FBVyxDQUFDO0VBQ3JDO0VBRUEsTUFBYWlMLGVBQWVBLENBQUN0RCxPQUErQixFQUFpQjtJQUN6RSxNQUFNLElBQUksQ0FBQ3hKLFVBQVUsQ0FBQzZKLEtBQUssQ0FBQyxJQUFJLENBQUNoSixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQ0MsWUFBWSxDQUFDMEksT0FBTyxDQUFDO0VBQ2hGO0VBRUEsTUFBYXVELGVBQWVBLENBQUNDLGFBQXNDLEVBQWlCO0lBQ2hGLE1BQU0sSUFBSSxDQUFDaE4sVUFBVSxDQUFDWSxJQUFJLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDQyxZQUFZLENBQUNrTSxhQUFhLENBQUM7RUFDdEc7RUFFQSxNQUFhQyxhQUFhQSxDQUFDQyxRQUFnQixFQUFFQyxVQUFpQyxFQUFpQjtJQUMzRixNQUFNQyxXQUFXLEdBQUc7TUFBRUYsUUFBUSxFQUFFQTtJQUFTLENBQUM7SUFDMUMsTUFBTSxJQUFJLENBQUNsTixVQUFVLENBQ2hCWSxJQUFJLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUMzQ3NCLGVBQWUsQ0FBQ2lMLFdBQVcsQ0FBQyxDQUM1QnRNLFlBQVksQ0FBQ3FNLFVBQVUsQ0FBQztFQUNqQztFQUVPRSxLQUFLQSxDQUFDQyxJQUFlLEVBQUV4TCxJQUFlLEVBQTBCO0lBQ25FLE9BQU8sSUFBSSxDQUFDOUIsVUFBVSxDQUNqQlksSUFBSSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFFLDZCQUE0QnlNLElBQUssRUFBQyxDQUFDLENBQUMsQ0FDM0R4TSxZQUFZLENBQUNnQixJQUFJLENBQUMsQ0FDbEJmLElBQUksQ0FBZ0IsQ0FBQztFQUM5QjtFQUVBLE1BQWF3TSxVQUFVQSxDQUFDckMsV0FBbUIsRUFBc0M7SUFDN0UsSUFBSTtNQUNBLE1BQU12SyxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUNYLFVBQVUsQ0FDakNZLElBQUksQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBRSwyQkFBMEIsQ0FBQyxDQUFDLENBQ25Ec0IsZUFBZSxDQUFDO1FBQUUrSSxXQUFXLEVBQUVBO01BQVksQ0FBQyxDQUFDO01BQ2xELElBQUl2SyxRQUFRLENBQUM0QyxNQUFNLEtBQUssR0FBRyxFQUFFO1FBQ3pCLE1BQU1pSyxVQUFVLEdBQUc3TSxRQUFRLENBQUNJLElBQUksQ0FBZ0IsQ0FBQztRQUNqRCxPQUFPeU0sVUFBVTtNQUNyQjtNQUNBLE9BQU9wTSxTQUFTO0lBQ3BCLENBQUMsQ0FBQyxPQUFPbUosQ0FBQyxFQUFFO01BQ1IsT0FBT25KLFNBQVM7SUFDcEI7RUFDSjtFQUVBLE1BQWFxTSxXQUFXQSxDQUFBLEVBQStCO0lBQ25ELE1BQU05TSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUNYLFVBQVUsQ0FBQytCLEdBQUcsQ0FDckMsU0FBUSxJQUFJLENBQUMzQixXQUFXLENBQUM2QixFQUFHLFdBQVUsSUFBSSxDQUFDN0IsV0FBVyxDQUFDNEMsT0FBUSxjQUNwRSxDQUFDO0lBRUQsT0FBT3JDLFFBQVEsQ0FBQ0ksSUFBSSxDQUFvQixDQUFDO0VBQzdDO0FBQ0o7QUFBQzNCLE9BQUEsQ0FBQWlCLG1CQUFBLEdBQUFBLG1CQUFBIn0=
|
|
@@ -32,7 +32,8 @@ async function createConfigVariant(options) {
|
|
|
32
32
|
alias: {
|
|
33
33
|
"variables.less": _path.default.resolve(_path.default.join(__dirname, "variables.less")),
|
|
34
34
|
variables: _path.default.resolve(_path.default.join(__dirname, "variables.less")),
|
|
35
|
-
Resources: _path.default.join(formPath, "form", "resources")
|
|
35
|
+
Resources: _path.default.join(formPath, "form", "resources"),
|
|
36
|
+
"core-js": _path.default.dirname(require.resolve("core-js"))
|
|
36
37
|
},
|
|
37
38
|
extensions: [".js", ".jsx"]
|
|
38
39
|
},
|
|
@@ -135,4 +136,4 @@ function createConfig(options) {
|
|
|
135
136
|
}
|
|
136
137
|
return Promise.all(result);
|
|
137
138
|
}
|
|
138
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX21pbmlDc3NFeHRyYWN0UGx1Z2luIiwiX3dlYnBhY2siLCJfQ2FjaGVBc3NldHNQbHVnaW4iLCJjcmVhdGVDb25maWdWYXJpYW50Iiwib3B0aW9ucyIsImdmdiIsImZpbGVOYW1lU3VmZml4IiwibW9kZSIsImZvcm1QYXRoIiwiYnVpbGRDYWNoZSIsImJ1aWxkQ2FjaGVPcHRpb25zIiwidW5kZWZpbmVkIiwiQnVpbGRDYWNoZSIsImZhcm1EaXJlY3RvcnkiLCJidWlsZENhY2hlV2VicGFja1BsdWdpbiIsImNyZWF0ZVdlYnBhY2tQbHVnaW4iLCJ0YXJnZXQiLCJjb250ZXh0Iiwib3V0cHV0IiwiZmlsZW5hbWUiLCJwYXRoIiwicmVzb3VyY2VzRGlyZWN0b3J5UGF0aCIsInB1YmxpY1BhdGgiLCJyZXNvbHZlIiwiYWxpYXMiLCJqb2luIiwiX19kaXJuYW1lIiwidmFyaWFibGVzIiwiUmVzb3VyY2VzIiwiZXh0ZW5zaW9ucyIsImVudHJ5IiwiZGV2dG9vbCIsIm1vZHVsZSIsInJ1bGVzIiwidGVzdCIsInVzZSIsImxvYWRlciIsIk1pbmlDc3NFeHRyYWN0UGx1Z2luIiwibW9kdWxlcyIsImxvY2FsSWRlbnROYW1lIiwicG9zdGNzc09wdGlvbnMiLCJpZGVudCIsInBsdWdpbnMiLCJvdmVycmlkZUJyb3dzZXJzbGlzdCIsImJhYmVscmMiLCJjb25maWdGaWxlIiwicHJlc2V0cyIsInRhcmdldHMiLCJicm93c2VycyIsImxvb3NlIiwibGVnYWN5IiwiZXhjbHVkZSIsIm5hbWUiLCJ3ZWJwYWNrIiwiRGVmaW5lUGx1Z2luIiwiR0ZWIiwiSlNPTiIsInN0cmluZ2lmeSIsIk5PREVfRU5WIiwiUkVTT1VSQ0VTX0hBU0giLCJyZXNvdXJjZXNIYXNoIiwiZmlsdGVyIiwiaXNOb3ROdWxsT3JVbmRlZmluZWQiLCJpbnB1dCIsImNyZWF0ZUNvbmZpZyIsInJlc3VsdCIsIm1vZGVzIiwicHVzaCIsIlByb21pc2UiLCJhbGwiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvRm9ybVdlYnBhY2tDb25maWd1cmF0aW9uL2NyZWF0ZUZvcm1XZWJwYWNrQ29uZmlndXJhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0c2xpbnQ6ZGlzYWJsZSBuby1hbnkgbm8tdW5zYWZlLWFueSBuby1pbnZhbGlkLXRoaXNcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBNaW5pQ3NzRXh0cmFjdFBsdWdpbiBmcm9tIFwibWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cIjtcbmltcG9ydCB3ZWJwYWNrLCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tIFwid2VicGFja1wiO1xuXG5pbXBvcnQgeyBCdWlsZENhY2hlLCBGb3JtQnVpbGRDYWNoZU9wdGlvbnMgfSBmcm9tIFwiLi9DYWNoZUFzc2V0c1BsdWdpblwiO1xuXG5pbnRlcmZhY2UgQ3JlYXRlV2VicGFja0NvbmZpZ3VyYXRpb25WYXJpYW50T3B0aW9ucyB7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgcmVzb3VyY2VzSGFzaDogc3RyaW5nO1xuICAgIGZvcm1QYXRoOiBzdHJpbmc7XG4gICAgbW9kZT86IFwicHJvZHVjdGlvblwiIHwgXCJkZXZlbG9wbWVudFwiO1xuICAgIHJlc291cmNlc0RpcmVjdG9yeVBhdGg6IHN0cmluZztcbiAgICBidWlsZENhY2hlT3B0aW9ucz86IEZvcm1CdWlsZENhY2hlT3B0aW9ucztcbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29uZmlnVmFyaWFudChvcHRpb25zOiBDcmVhdGVXZWJwYWNrQ29uZmlndXJhdGlvblZhcmlhbnRPcHRpb25zKTogUHJvbWlzZTxDb25maWd1cmF0aW9uPiB7XG4gICAgY29uc3QgeyBnZnYgfSA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBmaWxlTmFtZVN1ZmZpeCA9IG9wdGlvbnMubW9kZSA9PT0gXCJwcm9kdWN0aW9uXCIgPyBcIi5taW5cIiA6IFwiXCI7XG5cbiAgICBjb25zdCBmb3JtUGF0aCA9IG9wdGlvbnMuZm9ybVBhdGg7XG4gICAgY29uc3QgYnVpbGRDYWNoZSA9XG4gICAgICAgIG9wdGlvbnMuYnVpbGRDYWNoZU9wdGlvbnMgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IG5ldyBCdWlsZENhY2hlKG9wdGlvbnMuYnVpbGRDYWNoZU9wdGlvbnMuZmFybURpcmVjdG9yeSwgb3B0aW9ucy5idWlsZENhY2hlT3B0aW9ucy5tb2RlKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBidWlsZENhY2hlV2VicGFja1BsdWdpbiA9XG4gICAgICAgIGJ1aWxkQ2FjaGUgIT0gdW5kZWZpbmVkICYmIG9wdGlvbnMuYnVpbGRDYWNoZU9wdGlvbnMgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IGF3YWl0IGJ1aWxkQ2FjaGUuY3JlYXRlV2VicGFja1BsdWdpbihvcHRpb25zLmJ1aWxkQ2FjaGVPcHRpb25zKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBtb2RlOiBvcHRpb25zLm1vZGUsXG4gICAgICAgIHRhcmdldDogW1wid2ViXCIsIFwiZXM1XCJdLFxuICAgICAgICBjb250ZXh0OiBmb3JtUGF0aCxcbiAgICAgICAgb3V0cHV0OiB7XG4gICAgICAgICAgICBmaWxlbmFtZTogYHB1YmxpYy9zY3JpcHRzLyR7Z2Z2fSR7ZmlsZU5hbWVTdWZmaXh9LmpzYCxcbiAgICAgICAgICAgIHBhdGg6IG9wdGlvbnMucmVzb3VyY2VzRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgIHB1YmxpY1BhdGg6IFwiL3N0YXRpYy9cIixcbiAgICAgICAgfSxcbiAgICAgICAgcmVzb2x2ZToge1xuICAgICAgICAgICAgYWxpYXM6IHtcbiAgICAgICAgICAgICAgICBcInZhcmlhYmxlcy5sZXNzXCI6IHBhdGgucmVzb2x2ZShwYXRoLmpvaW4oX19kaXJuYW1lLCBcInZhcmlhYmxlcy5sZXNzXCIpKSxcbiAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHBhdGgucmVzb2x2ZShwYXRoLmpvaW4oX19kaXJuYW1lLCBcInZhcmlhYmxlcy5sZXNzXCIpKSxcbiAgICAgICAgICAgICAgICBSZXNvdXJjZXM6IHBhdGguam9pbihmb3JtUGF0aCwgXCJmb3JtXCIsIFwicmVzb3VyY2VzXCIpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV4dGVuc2lvbnM6IFtcIi5qc1wiLCBcIi5qc3hcIl0sXG4gICAgICAgIH0sXG4gICAgICAgIGVudHJ5OiBbcGF0aC5qb2luKGZvcm1QYXRoLCBcImZvcm1cIiwgXCIuL3dlYlwiKV0sXG4gICAgICAgIGRldnRvb2w6IG9wdGlvbnMubW9kZSA9PT0gXCJwcm9kdWN0aW9uXCIgPyB1bmRlZmluZWQgOiBcImlubGluZS1zb3VyY2UtbWFwXCIsXG4gICAgICAgIG1vZHVsZToge1xuICAgICAgICAgICAgcnVsZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRlc3Q6IC9cXC5sZXNzJC8sXG4gICAgICAgICAgICAgICAgICAgIHVzZTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyOiBNaW5pQ3NzRXh0cmFjdFBsdWdpbi5sb2FkZXIgYXMgYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsgcHVibGljUGF0aDogXCIuLi8uLi9cIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXI6IHJlcXVpcmUucmVzb2x2ZShcImNzcy1sb2FkZXJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbElkZW50TmFtZTogXCJbaGFzaDpiYXNlNjQ6NV1cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXI6IHJlcXVpcmUucmVzb2x2ZShcInBvc3Rjc3MtbG9hZGVyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGNzc09wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50OiBcInBvc3Rjc3NcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlIG5vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShcImF1dG9wcmVmaXhlclwiKSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vINCf0YDQvtGB0YLQviDQtNC10YTQvtC70YLQvdGL0LUg0LfQvdCw0YfQtdC90LjQtSDQuNC3INGC0LXQutGD0YnQtdCz0L4gKDEuNy43KSBicm93c2Vyc2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVCcm93c2Vyc2xpc3Q6IFwiPiAxJSwgbGFzdCAyIHZlcnNpb25zLCBGaXJlZm94IEVTUlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXI6IHJlcXVpcmUucmVzb2x2ZShcImxlc3MtbG9hZGVyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGVzdDogL1xcLmpzeD8kLyxcbiAgICAgICAgICAgICAgICAgICAgdXNlOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyOiByZXF1aXJlLnJlc29sdmUoXCJiYWJlbC1sb2FkZXJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWJlbHJjOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnRmlsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNldHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmUucmVzb2x2ZShcIkBiYWJlbC9wcmVzZXQtcmVhY3RcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZS5yZXNvbHZlKFwiQGJhYmVsL3ByZXNldC1lbnZcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzOiB7IGJyb3dzZXJzOiBcIj4gMCVcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29zZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmUucmVzb2x2ZShcIkBiYWJlbC9wbHVnaW4tcHJvcG9zYWwtZGVjb3JhdG9yc1wiKSwgeyBsZWdhY3k6IHRydWUgfV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZS5yZXNvbHZlKFwiQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1jbGFzcy1wcm9wZXJ0aWVzXCIpLCB7IGxvb3NlOiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZS5yZXNvbHZlKFwiQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1leHBvcnQtZGVmYXVsdC1mcm9tXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBleGNsdWRlOiBbL25vZGVfbW9kdWxlcy9dLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0ZXN0OiAvXFwuKHBuZ3xzdmcpJC8sXG4gICAgICAgICAgICAgICAgICAgIGxvYWRlcjogcmVxdWlyZS5yZXNvbHZlKFwiZmlsZS1sb2FkZXJcIiksXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsgbmFtZTogXCJwdWJsaWMvaW1hZ2VzL1toYXNoXS5bZXh0XVwiIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRlc3Q6IC9cXC4odHRmfGVvdHx3b2ZmMj8pJC8sXG4gICAgICAgICAgICAgICAgICAgIGxvYWRlcjogcmVxdWlyZS5yZXNvbHZlKFwiZmlsZS1sb2FkZXJcIiksXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsgbmFtZTogXCJwdWJsaWMvZm9udHMvW2hhc2hdLltleHRdXCIgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciDQn9C+0YfQuNC90LjRgtGB0Y8sINC60L7Qs9C00LAg0LLRgdC1INC70LjQsdGLINC+0LHQvdC+0LLRj9GC0YHRj1xuICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgICBuZXcgTWluaUNzc0V4dHJhY3RQbHVnaW4oe1xuICAgICAgICAgICAgICAgIGZpbGVuYW1lOiBgcHVibGljL3N0eWxlcy8ke2dmdn0ke2ZpbGVOYW1lU3VmZml4fS5jc3NgLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgd2VicGFjay5EZWZpbmVQbHVnaW4oe1xuICAgICAgICAgICAgICAgIFwicHJvY2Vzcy5lbnZcIjoge1xuICAgICAgICAgICAgICAgICAgICBHRlY6IEpTT04uc3RyaW5naWZ5KGdmdiksXG4gICAgICAgICAgICAgICAgICAgIE5PREVfRU5WOiBKU09OLnN0cmluZ2lmeShvcHRpb25zLm1vZGUpLFxuICAgICAgICAgICAgICAgICAgICBSRVNPVVJDRVNfSEFTSDogSlNPTi5zdHJpbmdpZnkob3B0aW9ucy5yZXNvdXJjZXNIYXNoKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBidWlsZENhY2hlV2VicGFja1BsdWdpbixcbiAgICAgICAgXS5maWx0ZXIoaXNOb3ROdWxsT3JVbmRlZmluZWQpLFxuICAgIH07XG59XG5cbmZ1bmN0aW9uIGlzTm90TnVsbE9yVW5kZWZpbmVkPFQ+KGlucHV0OiBUIHwgdW5kZWZpbmVkIHwgbnVsbCk6IGlucHV0IGlzIFQge1xuICAgIHJldHVybiBpbnB1dCAhPSB1bmRlZmluZWQ7XG59XG5cbnR5cGUgQnVpbGRNb2RlID0gXCJwcm9kdWN0aW9uXCIgfCBcImRldmVsb3BtZW50XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlV2VicGFja0NvbmZpZ3VyYXRpb25PcHRpb25zIHtcbiAgICBnZnY6IHN0cmluZztcbiAgICByZXNvdXJjZXNIYXNoOiBzdHJpbmc7XG4gICAgZm9ybVBhdGg6IHN0cmluZztcbiAgICByZXNvdXJjZXNEaXJlY3RvcnlQYXRoOiBzdHJpbmc7XG4gICAgbW9kZXM6IEJ1aWxkTW9kZVtdO1xuICAgIGJ1aWxkQ2FjaGVPcHRpb25zPzogRm9ybUJ1aWxkQ2FjaGVPcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29uZmlnKG9wdGlvbnM6IENyZWF0ZVdlYnBhY2tDb25maWd1cmF0aW9uT3B0aW9ucyk6IFByb21pc2U8Q29uZmlndXJhdGlvbltdPiB7XG4gICAgY29uc3QgcmVzdWx0OiBBcnJheTxQcm9taXNlPENvbmZpZ3VyYXRpb24+PiA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBtb2RlIG9mIG9wdGlvbnMubW9kZXMpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgICAgICBjcmVhdGVDb25maWdWYXJpYW50KHtcbiAgICAgICAgICAgICAgICBnZnY6IG9wdGlvbnMuZ2Z2LFxuICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IG9wdGlvbnMucmVzb3VyY2VzSGFzaCxcbiAgICAgICAgICAgICAgICBmb3JtUGF0aDogb3B0aW9ucy5mb3JtUGF0aCxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXNEaXJlY3RvcnlQYXRoOiBvcHRpb25zLnJlc291cmNlc0RpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICAgICAgbW9kZTogbW9kZSxcbiAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uczogb3B0aW9ucy5idWlsZENhY2hlT3B0aW9ucyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLmFsbChyZXN1bHQpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0EsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMscUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFHLGtCQUFBLEdBQUFILE9BQUE7QUFOQTs7QUFpQkEsZUFBZUksbUJBQW1CQSxDQUFDQyxPQUFpRCxFQUEwQjtFQUMxRyxNQUFNO0lBQUVDO0VBQUksQ0FBQyxHQUFHRCxPQUFPO0VBRXZCLE1BQU1FLGNBQWMsR0FBR0YsT0FBTyxDQUFDRyxJQUFJLEtBQUssWUFBWSxHQUFHLE1BQU0sR0FBRyxFQUFFO0VBRWxFLE1BQU1DLFFBQVEsR0FBR0osT0FBTyxDQUFDSSxRQUFRO0VBQ2pDLE1BQU1DLFVBQVUsR0FDWkwsT0FBTyxDQUFDTSxpQkFBaUIsSUFBSUMsU0FBUyxHQUNoQyxJQUFJQyw2QkFBVSxDQUFDUixPQUFPLENBQUNNLGlCQUFpQixDQUFDRyxh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
|
|
139
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX21pbmlDc3NFeHRyYWN0UGx1Z2luIiwiX3dlYnBhY2siLCJfQ2FjaGVBc3NldHNQbHVnaW4iLCJjcmVhdGVDb25maWdWYXJpYW50Iiwib3B0aW9ucyIsImdmdiIsImZpbGVOYW1lU3VmZml4IiwibW9kZSIsImZvcm1QYXRoIiwiYnVpbGRDYWNoZSIsImJ1aWxkQ2FjaGVPcHRpb25zIiwidW5kZWZpbmVkIiwiQnVpbGRDYWNoZSIsImZhcm1EaXJlY3RvcnkiLCJidWlsZENhY2hlV2VicGFja1BsdWdpbiIsImNyZWF0ZVdlYnBhY2tQbHVnaW4iLCJ0YXJnZXQiLCJjb250ZXh0Iiwib3V0cHV0IiwiZmlsZW5hbWUiLCJwYXRoIiwicmVzb3VyY2VzRGlyZWN0b3J5UGF0aCIsInB1YmxpY1BhdGgiLCJyZXNvbHZlIiwiYWxpYXMiLCJqb2luIiwiX19kaXJuYW1lIiwidmFyaWFibGVzIiwiUmVzb3VyY2VzIiwiZGlybmFtZSIsImV4dGVuc2lvbnMiLCJlbnRyeSIsImRldnRvb2wiLCJtb2R1bGUiLCJydWxlcyIsInRlc3QiLCJ1c2UiLCJsb2FkZXIiLCJNaW5pQ3NzRXh0cmFjdFBsdWdpbiIsIm1vZHVsZXMiLCJsb2NhbElkZW50TmFtZSIsInBvc3Rjc3NPcHRpb25zIiwiaWRlbnQiLCJwbHVnaW5zIiwib3ZlcnJpZGVCcm93c2Vyc2xpc3QiLCJiYWJlbHJjIiwiY29uZmlnRmlsZSIsInByZXNldHMiLCJ0YXJnZXRzIiwiYnJvd3NlcnMiLCJsb29zZSIsImxlZ2FjeSIsImV4Y2x1ZGUiLCJuYW1lIiwid2VicGFjayIsIkRlZmluZVBsdWdpbiIsIkdGViIsIkpTT04iLCJzdHJpbmdpZnkiLCJOT0RFX0VOViIsIlJFU09VUkNFU19IQVNIIiwicmVzb3VyY2VzSGFzaCIsImZpbHRlciIsImlzTm90TnVsbE9yVW5kZWZpbmVkIiwiaW5wdXQiLCJjcmVhdGVDb25maWciLCJyZXN1bHQiLCJtb2RlcyIsInB1c2giLCJQcm9taXNlIiwiYWxsIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL0Zvcm1XZWJwYWNrQ29uZmlndXJhdGlvbi9jcmVhdGVGb3JtV2VicGFja0NvbmZpZ3VyYXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGUgbm8tYW55IG5vLXVuc2FmZS1hbnkgbm8taW52YWxpZC10aGlzXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgTWluaUNzc0V4dHJhY3RQbHVnaW4gZnJvbSBcIm1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXCI7XG5pbXBvcnQgd2VicGFjaywgeyBDb25maWd1cmF0aW9uIH0gZnJvbSBcIndlYnBhY2tcIjtcblxuaW1wb3J0IHsgQnVpbGRDYWNoZSwgRm9ybUJ1aWxkQ2FjaGVPcHRpb25zIH0gZnJvbSBcIi4vQ2FjaGVBc3NldHNQbHVnaW5cIjtcblxuaW50ZXJmYWNlIENyZWF0ZVdlYnBhY2tDb25maWd1cmF0aW9uVmFyaWFudE9wdGlvbnMge1xuICAgIGdmdjogc3RyaW5nO1xuICAgIHJlc291cmNlc0hhc2g6IHN0cmluZztcbiAgICBmb3JtUGF0aDogc3RyaW5nO1xuICAgIG1vZGU/OiBcInByb2R1Y3Rpb25cIiB8IFwiZGV2ZWxvcG1lbnRcIjtcbiAgICByZXNvdXJjZXNEaXJlY3RvcnlQYXRoOiBzdHJpbmc7XG4gICAgYnVpbGRDYWNoZU9wdGlvbnM/OiBGb3JtQnVpbGRDYWNoZU9wdGlvbnM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ1ZhcmlhbnQob3B0aW9uczogQ3JlYXRlV2VicGFja0NvbmZpZ3VyYXRpb25WYXJpYW50T3B0aW9ucyk6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuICAgIGNvbnN0IHsgZ2Z2IH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgZmlsZU5hbWVTdWZmaXggPSBvcHRpb25zLm1vZGUgPT09IFwicHJvZHVjdGlvblwiID8gXCIubWluXCIgOiBcIlwiO1xuXG4gICAgY29uc3QgZm9ybVBhdGggPSBvcHRpb25zLmZvcm1QYXRoO1xuICAgIGNvbnN0IGJ1aWxkQ2FjaGUgPVxuICAgICAgICBvcHRpb25zLmJ1aWxkQ2FjaGVPcHRpb25zICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBuZXcgQnVpbGRDYWNoZShvcHRpb25zLmJ1aWxkQ2FjaGVPcHRpb25zLmZhcm1EaXJlY3RvcnksIG9wdGlvbnMuYnVpbGRDYWNoZU9wdGlvbnMubW9kZSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgYnVpbGRDYWNoZVdlYnBhY2tQbHVnaW4gPVxuICAgICAgICBidWlsZENhY2hlICE9IHVuZGVmaW5lZCAmJiBvcHRpb25zLmJ1aWxkQ2FjaGVPcHRpb25zICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBhd2FpdCBidWlsZENhY2hlLmNyZWF0ZVdlYnBhY2tQbHVnaW4ob3B0aW9ucy5idWlsZENhY2hlT3B0aW9ucylcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgbW9kZTogb3B0aW9ucy5tb2RlLFxuICAgICAgICB0YXJnZXQ6IFtcIndlYlwiLCBcImVzNVwiXSxcbiAgICAgICAgY29udGV4dDogZm9ybVBhdGgsXG4gICAgICAgIG91dHB1dDoge1xuICAgICAgICAgICAgZmlsZW5hbWU6IGBwdWJsaWMvc2NyaXB0cy8ke2dmdn0ke2ZpbGVOYW1lU3VmZml4fS5qc2AsXG4gICAgICAgICAgICBwYXRoOiBvcHRpb25zLnJlc291cmNlc0RpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICBwdWJsaWNQYXRoOiBcIi9zdGF0aWMvXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmU6IHtcbiAgICAgICAgICAgIGFsaWFzOiB7XG4gICAgICAgICAgICAgICAgXCJ2YXJpYWJsZXMubGVzc1wiOiBwYXRoLnJlc29sdmUocGF0aC5qb2luKF9fZGlybmFtZSwgXCJ2YXJpYWJsZXMubGVzc1wiKSksXG4gICAgICAgICAgICAgICAgdmFyaWFibGVzOiBwYXRoLnJlc29sdmUocGF0aC5qb2luKF9fZGlybmFtZSwgXCJ2YXJpYWJsZXMubGVzc1wiKSksXG4gICAgICAgICAgICAgICAgUmVzb3VyY2VzOiBwYXRoLmpvaW4oZm9ybVBhdGgsIFwiZm9ybVwiLCBcInJlc291cmNlc1wiKSxcbiAgICAgICAgICAgICAgICBcImNvcmUtanNcIjogcGF0aC5kaXJuYW1lKHJlcXVpcmUucmVzb2x2ZShcImNvcmUtanNcIikpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV4dGVuc2lvbnM6IFtcIi5qc1wiLCBcIi5qc3hcIl0sXG4gICAgICAgIH0sXG4gICAgICAgIGVudHJ5OiBbcGF0aC5qb2luKGZvcm1QYXRoLCBcImZvcm1cIiwgXCIuL3dlYlwiKV0sXG4gICAgICAgIGRldnRvb2w6IG9wdGlvbnMubW9kZSA9PT0gXCJwcm9kdWN0aW9uXCIgPyB1bmRlZmluZWQgOiBcImlubGluZS1zb3VyY2UtbWFwXCIsXG4gICAgICAgIG1vZHVsZToge1xuICAgICAgICAgICAgcnVsZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRlc3Q6IC9cXC5sZXNzJC8sXG4gICAgICAgICAgICAgICAgICAgIHVzZTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyOiBNaW5pQ3NzRXh0cmFjdFBsdWdpbi5sb2FkZXIgYXMgYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsgcHVibGljUGF0aDogXCIuLi8uLi9cIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXI6IHJlcXVpcmUucmVzb2x2ZShcImNzcy1sb2FkZXJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbElkZW50TmFtZTogXCJbaGFzaDpiYXNlNjQ6NV1cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXI6IHJlcXVpcmUucmVzb2x2ZShcInBvc3Rjc3MtbG9hZGVyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGNzc09wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50OiBcInBvc3Rjc3NcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlIG5vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShcImF1dG9wcmVmaXhlclwiKSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vINCf0YDQvtGB0YLQviDQtNC10YTQvtC70YLQvdGL0LUg0LfQvdCw0YfQtdC90LjQtSDQuNC3INGC0LXQutGD0YnQtdCz0L4gKDEuNy43KSBicm93c2Vyc2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVCcm93c2Vyc2xpc3Q6IFwiPiAxJSwgbGFzdCAyIHZlcnNpb25zLCBGaXJlZm94IEVTUlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXI6IHJlcXVpcmUucmVzb2x2ZShcImxlc3MtbG9hZGVyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGVzdDogL1xcLmpzeD8kLyxcbiAgICAgICAgICAgICAgICAgICAgdXNlOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyOiByZXF1aXJlLnJlc29sdmUoXCJiYWJlbC1sb2FkZXJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWJlbHJjOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnRmlsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNldHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmUucmVzb2x2ZShcIkBiYWJlbC9wcmVzZXQtcmVhY3RcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZS5yZXNvbHZlKFwiQGJhYmVsL3ByZXNldC1lbnZcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzOiB7IGJyb3dzZXJzOiBcIj4gMCVcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29zZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmUucmVzb2x2ZShcIkBiYWJlbC9wbHVnaW4tcHJvcG9zYWwtZGVjb3JhdG9yc1wiKSwgeyBsZWdhY3k6IHRydWUgfV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZS5yZXNvbHZlKFwiQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1jbGFzcy1wcm9wZXJ0aWVzXCIpLCB7IGxvb3NlOiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZS5yZXNvbHZlKFwiQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1leHBvcnQtZGVmYXVsdC1mcm9tXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBleGNsdWRlOiBbL25vZGVfbW9kdWxlcy9dLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0ZXN0OiAvXFwuKHBuZ3xzdmcpJC8sXG4gICAgICAgICAgICAgICAgICAgIGxvYWRlcjogcmVxdWlyZS5yZXNvbHZlKFwiZmlsZS1sb2FkZXJcIiksXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsgbmFtZTogXCJwdWJsaWMvaW1hZ2VzL1toYXNoXS5bZXh0XVwiIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRlc3Q6IC9cXC4odHRmfGVvdHx3b2ZmMj8pJC8sXG4gICAgICAgICAgICAgICAgICAgIGxvYWRlcjogcmVxdWlyZS5yZXNvbHZlKFwiZmlsZS1sb2FkZXJcIiksXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsgbmFtZTogXCJwdWJsaWMvZm9udHMvW2hhc2hdLltleHRdXCIgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciDQn9C+0YfQuNC90LjRgtGB0Y8sINC60L7Qs9C00LAg0LLRgdC1INC70LjQsdGLINC+0LHQvdC+0LLRj9GC0YHRj1xuICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgICBuZXcgTWluaUNzc0V4dHJhY3RQbHVnaW4oe1xuICAgICAgICAgICAgICAgIGZpbGVuYW1lOiBgcHVibGljL3N0eWxlcy8ke2dmdn0ke2ZpbGVOYW1lU3VmZml4fS5jc3NgLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgd2VicGFjay5EZWZpbmVQbHVnaW4oe1xuICAgICAgICAgICAgICAgIFwicHJvY2Vzcy5lbnZcIjoge1xuICAgICAgICAgICAgICAgICAgICBHRlY6IEpTT04uc3RyaW5naWZ5KGdmdiksXG4gICAgICAgICAgICAgICAgICAgIE5PREVfRU5WOiBKU09OLnN0cmluZ2lmeShvcHRpb25zLm1vZGUpLFxuICAgICAgICAgICAgICAgICAgICBSRVNPVVJDRVNfSEFTSDogSlNPTi5zdHJpbmdpZnkob3B0aW9ucy5yZXNvdXJjZXNIYXNoKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBidWlsZENhY2hlV2VicGFja1BsdWdpbixcbiAgICAgICAgXS5maWx0ZXIoaXNOb3ROdWxsT3JVbmRlZmluZWQpLFxuICAgIH07XG59XG5cbmZ1bmN0aW9uIGlzTm90TnVsbE9yVW5kZWZpbmVkPFQ+KGlucHV0OiBUIHwgdW5kZWZpbmVkIHwgbnVsbCk6IGlucHV0IGlzIFQge1xuICAgIHJldHVybiBpbnB1dCAhPSB1bmRlZmluZWQ7XG59XG5cbnR5cGUgQnVpbGRNb2RlID0gXCJwcm9kdWN0aW9uXCIgfCBcImRldmVsb3BtZW50XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlV2VicGFja0NvbmZpZ3VyYXRpb25PcHRpb25zIHtcbiAgICBnZnY6IHN0cmluZztcbiAgICByZXNvdXJjZXNIYXNoOiBzdHJpbmc7XG4gICAgZm9ybVBhdGg6IHN0cmluZztcbiAgICByZXNvdXJjZXNEaXJlY3RvcnlQYXRoOiBzdHJpbmc7XG4gICAgbW9kZXM6IEJ1aWxkTW9kZVtdO1xuICAgIGJ1aWxkQ2FjaGVPcHRpb25zPzogRm9ybUJ1aWxkQ2FjaGVPcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29uZmlnKG9wdGlvbnM6IENyZWF0ZVdlYnBhY2tDb25maWd1cmF0aW9uT3B0aW9ucyk6IFByb21pc2U8Q29uZmlndXJhdGlvbltdPiB7XG4gICAgY29uc3QgcmVzdWx0OiBBcnJheTxQcm9taXNlPENvbmZpZ3VyYXRpb24+PiA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBtb2RlIG9mIG9wdGlvbnMubW9kZXMpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgICAgICBjcmVhdGVDb25maWdWYXJpYW50KHtcbiAgICAgICAgICAgICAgICBnZnY6IG9wdGlvbnMuZ2Z2LFxuICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IG9wdGlvbnMucmVzb3VyY2VzSGFzaCxcbiAgICAgICAgICAgICAgICBmb3JtUGF0aDogb3B0aW9ucy5mb3JtUGF0aCxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXNEaXJlY3RvcnlQYXRoOiBvcHRpb25zLnJlc291cmNlc0RpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICAgICAgbW9kZTogbW9kZSxcbiAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uczogb3B0aW9ucy5idWlsZENhY2hlT3B0aW9ucyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLmFsbChyZXN1bHQpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0EsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMscUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFHLGtCQUFBLEdBQUFILE9BQUE7QUFOQTs7QUFpQkEsZUFBZUksbUJBQW1CQSxDQUFDQyxPQUFpRCxFQUEwQjtFQUMxRyxNQUFNO0lBQUVDO0VBQUksQ0FBQyxHQUFHRCxPQUFPO0VBRXZCLE1BQU1FLGNBQWMsR0FBR0YsT0FBTyxDQUFDRyxJQUFJLEtBQUssWUFBWSxHQUFHLE1BQU0sR0FBRyxFQUFFO0VBRWxFLE1BQU1DLFFBQVEsR0FBR0osT0FBTyxDQUFDSSxRQUFRO0VBQ2pDLE1BQU1DLFVBQVUs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
|