@openziti/ziti-console-lib 0.8.0 → 0.8.1

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.
Files changed (104) hide show
  1. package/esm2022/lib/features/card-list/card-list.component.mjs +12 -11
  2. package/esm2022/lib/features/dynamic-widgets/password/password-input.component.mjs +13 -3
  3. package/esm2022/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.mjs +1 -1
  4. package/esm2022/lib/features/dynamic-widgets/string/string-input.component.mjs +13 -3
  5. package/esm2022/lib/features/login/login-dialog.component.mjs +123 -0
  6. package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.component.mjs +2 -2
  7. package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.service.mjs +3 -15
  8. package/esm2022/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.mjs +4 -3
  9. package/esm2022/lib/features/projectable-forms/certificate-authority/certificate-authority-form.service.mjs +3 -15
  10. package/esm2022/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.mjs +2 -2
  11. package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +2 -2
  12. package/esm2022/lib/features/projectable-forms/configuration/configuration.service.mjs +3 -15
  13. package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +2 -2
  14. package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.service.mjs +3 -15
  15. package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.mjs +2 -2
  16. package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.mjs +3 -15
  17. package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +2 -2
  18. package/esm2022/lib/features/projectable-forms/identity/identity-form.service.mjs +3 -15
  19. package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.mjs +24 -4
  20. package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.mjs +3 -15
  21. package/esm2022/lib/features/projectable-forms/projectable-form.class.mjs +24 -4
  22. package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +2 -2
  23. package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +3 -15
  24. package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +5 -5
  25. package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +2 -2
  26. package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.mjs +3 -15
  27. package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +2 -2
  28. package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.service.mjs +3 -15
  29. package/esm2022/lib/features/projectable-forms/terminator/terminator-form.component.mjs +2 -2
  30. package/esm2022/lib/features/wrappers/zac-wrapper.service.mjs +1 -4
  31. package/esm2022/lib/models/jwt-signer.mjs +2 -1
  32. package/esm2022/lib/pages/certificate-authorities/certificate-authorities-page.service.mjs +6 -3
  33. package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +2 -1
  34. package/esm2022/lib/services/login-service.class.mjs +5 -1
  35. package/esm2022/lib/services/node-data.service.mjs +8 -13
  36. package/esm2022/lib/services/validation.service.mjs +2 -2
  37. package/esm2022/lib/services/ziti-data.service.mjs +8 -2
  38. package/esm2022/lib/shared/list-page-service.class.mjs +4 -4
  39. package/esm2022/lib/ziti-console-lib.module.mjs +10 -5
  40. package/esm2022/public-api.mjs +2 -1
  41. package/fesm2022/openziti-ziti-console-lib.mjs +252 -196
  42. package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
  43. package/lib/features/card-list/card-list.component.d.ts +3 -2
  44. package/lib/features/card-list/card-list.component.d.ts.map +1 -1
  45. package/lib/features/dynamic-widgets/password/password-input.component.d.ts +3 -1
  46. package/lib/features/dynamic-widgets/password/password-input.component.d.ts.map +1 -1
  47. package/lib/features/dynamic-widgets/string/string-input.component.d.ts +3 -1
  48. package/lib/features/dynamic-widgets/string/string-input.component.d.ts.map +1 -1
  49. package/lib/features/login/login-dialog.component.d.ts +29 -0
  50. package/lib/features/login/login-dialog.component.d.ts.map +1 -0
  51. package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts +1 -1
  52. package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts.map +1 -1
  53. package/lib/features/projectable-forms/auth-policy/auth-policy-form.service.d.ts.map +1 -1
  54. package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.d.ts +1 -1
  55. package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.d.ts.map +1 -1
  56. package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.service.d.ts.map +1 -1
  57. package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.d.ts +1 -1
  58. package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.d.ts.map +1 -1
  59. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts +1 -1
  60. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +1 -1
  61. package/lib/features/projectable-forms/configuration/configuration.service.d.ts.map +1 -1
  62. package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts +1 -1
  63. package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts.map +1 -1
  64. package/lib/features/projectable-forms/edge-router/edge-router-form.service.d.ts.map +1 -1
  65. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts +1 -1
  66. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts.map +1 -1
  67. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.d.ts.map +1 -1
  68. package/lib/features/projectable-forms/identity/identity-form.component.d.ts +1 -1
  69. package/lib/features/projectable-forms/identity/identity-form.component.d.ts.map +1 -1
  70. package/lib/features/projectable-forms/identity/identity-form.service.d.ts.map +1 -1
  71. package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts +4 -1
  72. package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts.map +1 -1
  73. package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.d.ts.map +1 -1
  74. package/lib/features/projectable-forms/projectable-form.class.d.ts +5 -1
  75. package/lib/features/projectable-forms/projectable-form.class.d.ts.map +1 -1
  76. package/lib/features/projectable-forms/service/service-form.component.d.ts +1 -1
  77. package/lib/features/projectable-forms/service/service-form.component.d.ts.map +1 -1
  78. package/lib/features/projectable-forms/service/service-form.service.d.ts.map +1 -1
  79. package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts +3 -2
  80. package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts.map +1 -1
  81. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts +1 -1
  82. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts.map +1 -1
  83. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.d.ts.map +1 -1
  84. package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts +1 -1
  85. package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts.map +1 -1
  86. package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts.map +1 -1
  87. package/lib/features/projectable-forms/terminator/terminator-form.component.d.ts +1 -1
  88. package/lib/features/projectable-forms/terminator/terminator-form.component.d.ts.map +1 -1
  89. package/lib/features/wrappers/zac-wrapper.service.d.ts.map +1 -1
  90. package/lib/models/jwt-signer.d.ts +1 -0
  91. package/lib/models/jwt-signer.d.ts.map +1 -1
  92. package/lib/pages/certificate-authorities/certificate-authorities-page.service.d.ts.map +1 -1
  93. package/lib/pages/service-policies/service-policies-page.component.d.ts.map +1 -1
  94. package/lib/services/login-service.class.d.ts +6 -2
  95. package/lib/services/login-service.class.d.ts.map +1 -1
  96. package/lib/services/node-data.service.d.ts +1 -0
  97. package/lib/services/node-data.service.d.ts.map +1 -1
  98. package/lib/services/ziti-data.service.d.ts +3 -0
  99. package/lib/services/ziti-data.service.d.ts.map +1 -1
  100. package/lib/ziti-console-lib.module.d.ts +19 -18
  101. package/lib/ziti-console-lib.module.d.ts.map +1 -1
  102. package/package.json +1 -1
  103. package/public-api.d.ts +1 -0
  104. package/public-api.d.ts.map +1 -1
@@ -38,20 +38,8 @@ class IdentityFormService {
38
38
  const growlerData = new GrowlerModel('success', 'Success', `Identity ${isUpdate ? 'Updated' : 'Created'}`, `Successfully ${isUpdate ? 'updated' : 'created'} Identity: ${formData.name}`);
39
39
  this.growlerService.show(growlerData);
40
40
  }).catch((resp) => {
41
- let errorMessage;
42
- if (resp?.error?.error?.cause?.message) {
43
- errorMessage = resp?.error?.error?.cause?.message;
44
- }
45
- else if (resp?.error?.error?.cause?.reason) {
46
- errorMessage = resp?.error?.error?.cause?.reason;
47
- }
48
- else if (resp?.error?.message) {
49
- errorMessage = resp?.error?.message;
50
- }
51
- else {
52
- errorMessage = 'An unknown error occurred';
53
- }
54
- const growlerData = new GrowlerModel('error', 'Error', `Error Creating Identity`, errorMessage);
41
+ const errorMessage = this.zitiService.getErrorMessage(resp);
42
+ const growlerData = new GrowlerModel('error', 'Error', `Error ${isUpdate ? 'Updating' : 'Creating'} Identity`, errorMessage);
55
43
  this.growlerService.show(growlerData);
56
44
  throw resp;
57
45
  });
@@ -141,4 +129,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
141
129
  type: Inject,
142
130
  args: [ZITI_DATA_SERVICE]
143
131
  }] }, { type: i1.GrowlerService }]; } });
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL3Byb2plY3RhYmxlLWZvcm1zL2lkZW50aXR5L2lkZW50aXR5LWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUdqRSxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUMsT0FBTyxFQUFDLGlCQUFpQixFQUFrQixNQUFNLHFDQUFxQyxDQUFDO0FBRXZGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDbEQsT0FBTyxFQUFDLGdCQUFnQixFQUFrQixNQUFNLG9DQUFvQyxDQUFDOzs7OztBQUdyRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLGNBQWMsQ0FBTSw0QkFBNEIsQ0FBQyxDQUFDO0FBR2hHLE1BR2EsbUJBQW1CO0lBRTVCLFlBQ3FDLGVBQWdDLEVBQzlCLFdBQTRCLEVBQ3ZELGNBQThCO1FBRkwsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzlCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUN2RCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFDdkMsQ0FBQztJQUVKLElBQUksQ0FBQyxRQUFRO1FBQ1QsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxHQUFRLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxD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TSxHQUFHLGFBQWEsQ0FBQzs7b0JBQzNDLE1BQU0sR0FBRyxRQUFRLENBQUM7YUFDMUI7aUJBQU07Z0JBQ0gsSUFBSSxJQUFJLEVBQUUsYUFBYTtvQkFBRSxNQUFNLEdBQUcsUUFBUSxDQUFDO2FBQzlDO1lBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFDLENBQUMsRUFBRTtnQkFDakIsS0FBSyxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ2hDLE1BQU0sSUFBSSxPQUFPLEdBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMvQjthQUNKOztnQkFBTSxNQUFNLElBQUksd0NBQXdDLENBQUM7WUFDMUQsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZUFBZSxDQUFDLEVBQUU7UUFDZCxNQUFNLEdBQUcsR0FBUSxlQUFlLEVBQUUsRUFBRSxDQUFBO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQzsrR0FuR1EsbUJBQW1CLGtCQUdoQixnQkFBZ0IsYUFDaEIsaUJBQWlCO21IQUpwQixtQkFBbUIsY0FGaEIsTUFBTTs7U0FFVCxtQkFBbUI7NEZBQW5CLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUlRLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDdkIsTUFBTTsyQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0luamVjdGFibGUsIEluamVjdCwgSW5qZWN0aW9uVG9rZW59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmltcG9ydCB7aXNFbXB0eSwgdW5zZXQsIGtleXN9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1pJVElfREFUQV9TRVJWSUNFLCBaaXRpRGF0YVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy96aXRpLWRhdGEuc2VydmljZVwiO1xuaW1wb3J0IHtHcm93bGVyU2VydmljZX0gZnJvbSBcIi4uLy4uL21lc3NhZ2luZy9ncm93bGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7R3Jvd2xlck1vZGVsfSBmcm9tIFwiLi4vLi4vbWVzc2FnaW5nL2dyb3dsZXIubW9kZWxcIjtcbmltcG9ydCB7SWRlbnRpdHl9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvaWRlbnRpdHlcIjtcbmltcG9ydCB7U0VUVElOR1NfU0VSVklDRSwgU2V0dGluZ3NTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvc2V0dGluZ3Muc2VydmljZVwiO1xuXG5cbmV4cG9ydCBjb25zdCBJREVOVElUWV9FWFRFTlNJT05fU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KCdJREVOVElUWV9FWFRFTlNJT05fU0VSVklDRScpO1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSWRlbnRpdHlGb3JtU2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBwdWJsaWMgc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoWklUSV9EQVRBX1NFUlZJQ0UpIHByaXZhdGUgeml0aVNlcnZpY2U6IFppdGlEYXRhU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBncm93bGVyU2VydmljZTogR3Jvd2xlclNlcnZpY2VcbiAgICApIHt9XG4gXG4gICAgc2F2ZShmb3JtRGF0YSkge1xuICAgICAgICBjb25zdCBpc1VwZGF0ZSA9ICFpc0VtcHR5KGZvcm1EYXRhLmlkKTtcbiAgICAgICAgY29uc3QgZGF0YTogYW55ID0gdGhpcy5nZXRJZGVudGl0eURhdGFNb2RlbChmb3JtRGF0YSwgaXNVcGRhdGUpO1xuICAgICAgICBjb25zdCBzdmMgPSBpc1VwZGF0ZSA/IHRoaXMueml0aVNlcnZpY2UucGF0Y2guYmluZCh0aGlzLnppdGlTZXJ2aWNlKSA6IHRoaXMueml0aVNlcnZpY2UucG9zdC5iaW5kKHRoaXMueml0aVNlcnZpY2UpO1xuICAgICAgICByZXR1cm4gc3ZjKCdpZGVudGl0aWVzJywgZGF0YSwgZm9ybURhdGEuaWQpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAnU3VjY2VzcycsXG4gICAgICAgICAgICAgICAgYElkZW50aXR5ICR7aXNVcGRhdGUgPyAnVXBkYXRlZCcgOiAnQ3JlYXRlZCd9YCxcbiAgICAgICAgICAgICAgICBgU3VjY2Vzc2Z1bGx5ICR7aXNVcGRhdGUgPyAndXBkYXRlZCcgOiAnY3JlYXRlZCd9IElkZW50aXR5OiAke2Zvcm1EYXRhLm5hbWV9YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgICAgICB9KS5jYXRjaCgocmVzcCkgPT4ge1xuICAgICAgICAgICAgbGV0IGVycm9yTWVzc2FnZTtcbiAgICAgICAgICAgIGlmIChyZXNwPy5lcnJvcj8uZXJyb3I/LmNhdXNlPy5tZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gcmVzcD8uZXJyb3I/LmVycm9yPy5jYXVzZT8ubWVzc2FnZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzcD8uZXJyb3I/LmVycm9yPy5jYXVzZT8ucmVhc29uKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gcmVzcD8uZXJyb3I/LmVycm9yPy5jYXVzZT8ucmVhc29uO1xuICAgICAgICAgICAgfWVsc2UgaWYgKHJlc3A/LmVycm9yPy5tZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gcmVzcD8uZXJyb3I/Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9ICdBbiB1bmtub3duIGVycm9yIG9jY3VycmVkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICAgICAgICdFcnJvcicsXG4gICAgICAgICAgICAgICAgYEVycm9yIENyZWF0aW5nIElkZW50aXR5YCxcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICAgICAgICAgIHRocm93IHJlc3A7XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZ2V0SWRlbnRpdHlEYXRhTW9kZWwoZm9ybURhdGEsIGlzVXBkYXRlKSB7XG4gICAgICAgIGNvbnN0IHNhdmVNb2RlbCA9IG5ldyBJZGVudGl0eSgpO1xuICAgICAgICBjb25zdCBtb2RlbFByb3BlcnRpZXMgPSBrZXlzKHNhdmVNb2RlbCk7XG4gICAgICAgIG1vZGVsUHJvcGVydGllcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2gocHJvcCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3R5cGUnOlxuICAgICAgICAgICAgICAgICAgICBpZihpc1VwZGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZU1vZGVsW3Byb3BdID0gZm9ybURhdGFbcHJvcF0uaWQ7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlTW9kZWxbcHJvcF0gPSBmb3JtRGF0YVtwcm9wXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdlbnJvbGxtZW50JzpcbiAgICAgICAgICAgICAgICAgICAgaWYoaXNVcGRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0KHNhdmVNb2RlbCwgJ2Vucm9sbG1lbnQnKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVNb2RlbFtwcm9wXSA9IGZvcm1EYXRhW3Byb3BdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHNhdmVNb2RlbFtwcm9wXSA9IGZvcm1EYXRhW3Byb3BdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHNhdmVNb2RlbDtcbiAgICB9XG5cbiAgICB0ZXN0U2VydmljZShpZGVudGl0eUlkLCBzZXJ2aWNlSWQpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYC9pZGVudGl0aWVzLyR7aWRlbnRpdHlJZH0vcG9saWN5LWFkdmljZS8ke3NlcnZpY2VJZH1gO1xuICAgICAgICByZXR1cm4gdGhpcy56aXRpU2VydmljZS5jYWxsKHVybCkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICB2YXIgZXJyb3JzID0gW107XG4gICAgICAgICAgICB2YXIgaW5mbyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgaWYgKCFpbmZvPy5pc0RpYWxBbGxvd2VkJiYhaW5mbz8uaXNCaW5kQWxsb3dlZCkgZXJyb3JzLnB1c2goXCJObyBhY2Nlc3MgdG8gc2VydmljZS4gQWRqdXN0IHNlcnZpY2UgcG9saWNpZXMuXCIpO1xuICAgICAgICAgICAgaWYgKGluZm8/LmlkZW50aXR5Um91dGVyQ291bnQ8MSkgZXJyb3JzLnB1c2goXCJJZGVudGl0eSBoYXMgbm8gZWRnZSByb3V0ZXJzIGFzc2lnbmVkLiBBZGp1c3QgZWRnZSByb3V0ZXIgcG9saWNpZXMuXCIpO1xuICAgICAgICAgICAgaWYgKGluZm8/LnNlcnZpY2VSb3V0ZXJDb3VudDwxKSBlcnJvcnMucHVzaChcIlNlcnZpY2UgaGFzIG5vIGVkZ2Ugcm91dGVycyBhc3NpZ25lZC4gQWRqdXN0IGVkZ2Ugcm91dGVyIHBvbGljaWVzLlwiKTtcbiAgICAgICAgICAgIGlmIChpbmZvPy5pZGVudGl0eVJvdXRlckNvdW50PjAmJmluZm8/LnNlcnZpY2VSb3V0ZXJDb3VudD4wKSB7XG4gICAgICAgICAgICAgICAgaWYgKGluZm8/LmNvbW1vbkNvdW50PDEpIGVycm9ycy5wdXNoKFwiSWRlbnRpdHkgYW5kIHNlcnZpY2VzIGhhdmUgbm8gZWRnZSByb3V0ZXJzIGluIGNvbW1vbi4gQWRqdXN0IGVkZ2Ugcm91dGVyIHBvbGljaWVzIGFuZC9vciBzZXJ2aWNlIGVkZ2Ugcm91dGVyIHBvbGljaWVzLlwiKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpbmZvPy5vbmxpbmVDb3VudDwxKSBlcnJvcnMucHVzaChcIkNvbW1vbiBlZGdlIHJvdXRlcnMgYXJlIGFsbCBvZmYtbGluZS4gQnJpbmcgcm91dGVycyBiYWNrIG9uLWxpbmUgb3IgYWRqdXN0IGVkZ2Ugcm91dGVyIHBvbGljaWVzIGFuZC9vciBzZXJ2aWNlIGVkZ2Ugcm91dGVyIHBvbGljaWVzLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBzdGF0dXMgPSBcIlwiO1xuICAgICAgICAgICAgaWYgKGluZm8/LmlzRGlhbEFsbG93ZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5mbz8uaXNCaW5kQWxsb3dlZCkgc3RhdHVzID0gXCIoRGlhbCxCaW5kKVwiO1xuICAgICAgICAgICAgICAgIGVsc2Ugc3RhdHVzID0gXCIoRGlhbClcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGluZm8/LmlzQmluZEFsbG93ZWQpIHN0YXR1cyA9IFwiKEJpbmQpXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aD4wKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPGVycm9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMgKz0gXCI8YnIvPlwiK2Vycm9yc1tpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Ugc3RhdHVzICs9IFwiPGJyLz5FdmVyeXRoaW5nIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHlcIjtcbiAgICAgICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlZnJlc2hJZGVudGl0eShpZCkge1xuICAgICAgICBjb25zdCB1cmw6IGFueSA9IGAvaWRlbnRpdGllcy8ke2lkfWBcbiAgICAgICAgcmV0dXJuIHRoaXMueml0aVNlcnZpY2UuY2FsbCh1cmwpO1xuICAgIH1cbn1cbiJdfQ==
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL3Byb2plY3RhYmxlLWZvcm1zL2lkZW50aXR5L2lkZW50aXR5LWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUdqRSxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUMsT0FBTyxFQUFDLGlCQUFpQixFQUFrQixNQUFNLHFDQUFxQyxDQUFDO0FBRXZGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDbEQsT0FBTyxFQUFDLGdCQUFnQixFQUFrQixNQUFNLG9DQUFvQyxDQUFDOzs7OztBQUdyRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLGNBQWMsQ0FBTSw0QkFBNEIsQ0FBQyxDQUFDO0FBR2hHLE1BR2EsbUJBQW1CO0lBRTVCLFlBQ3FDLGVBQWdDLEVBQzlCLFdBQTRCLEVBQ3ZELGNBQThCO1FBRkwsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzlCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUN2RCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFDdkMsQ0FBQztJQUVKLElBQUksQ0FBQyxRQUFRO1FBQ1QsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxHQUFRLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxD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TUFBTSxJQUFJLHdDQUF3QyxDQUFDO1lBQzFELE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGVBQWUsQ0FBQyxFQUFFO1FBQ2QsTUFBTSxHQUFHLEdBQVEsZUFBZSxFQUFFLEVBQUUsQ0FBQTtRQUNwQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7K0dBMUZRLG1CQUFtQixrQkFHaEIsZ0JBQWdCLGFBQ2hCLGlCQUFpQjttSEFKcEIsbUJBQW1CLGNBRmhCLE1BQU07O1NBRVQsbUJBQW1COzRGQUFuQixtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFJUSxNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQ3ZCLE1BQU07MkJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgICBDb3B5cmlnaHQgTmV0Rm91bmRyeSBJbmMuXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlLCBJbmplY3QsIEluamVjdGlvblRva2VufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5pbXBvcnQge2lzRW1wdHksIHVuc2V0LCBrZXlzfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtaSVRJX0RBVEFfU0VSVklDRSwgWml0aURhdGFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMveml0aS1kYXRhLnNlcnZpY2VcIjtcbmltcG9ydCB7R3Jvd2xlclNlcnZpY2V9IGZyb20gXCIuLi8uLi9tZXNzYWdpbmcvZ3Jvd2xlci5zZXJ2aWNlXCI7XG5pbXBvcnQge0dyb3dsZXJNb2RlbH0gZnJvbSBcIi4uLy4uL21lc3NhZ2luZy9ncm93bGVyLm1vZGVsXCI7XG5pbXBvcnQge0lkZW50aXR5fSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2lkZW50aXR5XCI7XG5pbXBvcnQge1NFVFRJTkdTX1NFUlZJQ0UsIFNldHRpbmdzU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3NldHRpbmdzLnNlcnZpY2VcIjtcblxuXG5leHBvcnQgY29uc3QgSURFTlRJVFlfRVhURU5TSU9OX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PignSURFTlRJVFlfRVhURU5TSU9OX1NFUlZJQ0UnKTtcblxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIElkZW50aXR5Rm9ybVNlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoU0VUVElOR1NfU0VSVklDRSkgcHVibGljIHNldHRpbmdzU2VydmljZTogU2V0dGluZ3NTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFpJVElfREFUQV9TRVJWSUNFKSBwcml2YXRlIHppdGlTZXJ2aWNlOiBaaXRpRGF0YVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlXG4gICAgKSB7fVxuIFxuICAgIHNhdmUoZm9ybURhdGEpIHtcbiAgICAgICAgY29uc3QgaXNVcGRhdGUgPSAhaXNFbXB0eShmb3JtRGF0YS5pZCk7XG4gICAgICAgIGNvbnN0IGRhdGE6IGFueSA9IHRoaXMuZ2V0SWRlbnRpdHlEYXRhTW9kZWwoZm9ybURhdGEsIGlzVXBkYXRlKTtcbiAgICAgICAgY29uc3Qgc3ZjID0gaXNVcGRhdGUgPyB0aGlzLnppdGlTZXJ2aWNlLnBhdGNoLmJpbmQodGhpcy56aXRpU2VydmljZSkgOiB0aGlzLnppdGlTZXJ2aWNlLnBvc3QuYmluZCh0aGlzLnppdGlTZXJ2aWNlKTtcbiAgICAgICAgcmV0dXJuIHN2YygnaWRlbnRpdGllcycsIGRhdGEsIGZvcm1EYXRhLmlkKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICAgICAnc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgJ1N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgIGBJZGVudGl0eSAke2lzVXBkYXRlID8gJ1VwZGF0ZWQnIDogJ0NyZWF0ZWQnfWAsXG4gICAgICAgICAgICAgICAgYFN1Y2Nlc3NmdWxseSAke2lzVXBkYXRlID8gJ3VwZGF0ZWQnIDogJ2NyZWF0ZWQnfSBJZGVudGl0eTogJHtmb3JtRGF0YS5uYW1lfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICAgICAgfSkuY2F0Y2goKHJlc3ApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMueml0aVNlcnZpY2UuZ2V0RXJyb3JNZXNzYWdlKHJlc3ApO1xuICAgICAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ0Vycm9yJyxcbiAgICAgICAgICAgICAgICBgRXJyb3IgJHtpc1VwZGF0ZSA/ICdVcGRhdGluZycgOiAnQ3JlYXRpbmcnfSBJZGVudGl0eWAsXG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gICAgICAgICAgICB0aHJvdyByZXNwO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIGdldElkZW50aXR5RGF0YU1vZGVsKGZvcm1EYXRhLCBpc1VwZGF0ZSkge1xuICAgICAgICBjb25zdCBzYXZlTW9kZWwgPSBuZXcgSWRlbnRpdHkoKTtcbiAgICAgICAgY29uc3QgbW9kZWxQcm9wZXJ0aWVzID0ga2V5cyhzYXZlTW9kZWwpO1xuICAgICAgICBtb2RlbFByb3BlcnRpZXMuZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoKHByb3ApIHtcbiAgICAgICAgICAgICAgICBjYXNlICd0eXBlJzpcbiAgICAgICAgICAgICAgICAgICAgaWYoaXNVcGRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVNb2RlbFtwcm9wXSA9IGZvcm1EYXRhW3Byb3BdLmlkO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZU1vZGVsW3Byb3BdID0gZm9ybURhdGFbcHJvcF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZW5yb2xsbWVudCc6XG4gICAgICAgICAgICAgICAgICAgIGlmKGlzVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1bnNldChzYXZlTW9kZWwsICdlbnJvbGxtZW50Jyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlTW9kZWxbcHJvcF0gPSBmb3JtRGF0YVtwcm9wXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBzYXZlTW9kZWxbcHJvcF0gPSBmb3JtRGF0YVtwcm9wXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzYXZlTW9kZWw7XG4gICAgfVxuXG4gICAgdGVzdFNlcnZpY2UoaWRlbnRpdHlJZCwgc2VydmljZUlkKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAvaWRlbnRpdGllcy8ke2lkZW50aXR5SWR9L3BvbGljeS1hZHZpY2UvJHtzZXJ2aWNlSWR9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMueml0aVNlcnZpY2UuY2FsbCh1cmwpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgdmFyIGVycm9ycyA9IFtdO1xuICAgICAgICAgICAgdmFyIGluZm8gPSByZXN1bHQuZGF0YTtcbiAgICAgICAgICAgIGlmICghaW5mbz8uaXNEaWFsQWxsb3dlZCYmIWluZm8/LmlzQmluZEFsbG93ZWQpIGVycm9ycy5wdXNoKFwiTm8gYWNjZXNzIHRvIHNlcnZpY2UuIEFkanVzdCBzZXJ2aWNlIHBvbGljaWVzLlwiKTtcbiAgICAgICAgICAgIGlmIChpbmZvPy5pZGVudGl0eVJvdXRlckNvdW50PDEpIGVycm9ycy5wdXNoKFwiSWRlbnRpdHkgaGFzIG5vIGVkZ2Ugcm91dGVycyBhc3NpZ25lZC4gQWRqdXN0IGVkZ2Ugcm91dGVyIHBvbGljaWVzLlwiKTtcbiAgICAgICAgICAgIGlmIChpbmZvPy5zZXJ2aWNlUm91dGVyQ291bnQ8MSkgZXJyb3JzLnB1c2goXCJTZXJ2aWNlIGhhcyBubyBlZGdlIHJvdXRlcnMgYXNzaWduZWQuIEFkanVzdCBlZGdlIHJvdXRlciBwb2xpY2llcy5cIik7XG4gICAgICAgICAgICBpZiAoaW5mbz8uaWRlbnRpdHlSb3V0ZXJDb3VudD4wJiZpbmZvPy5zZXJ2aWNlUm91dGVyQ291bnQ+MCkge1xuICAgICAgICAgICAgICAgIGlmIChpbmZvPy5jb21tb25Db3VudDwxKSBlcnJvcnMucHVzaChcIklkZW50aXR5IGFuZCBzZXJ2aWNlcyBoYXZlIG5vIGVkZ2Ugcm91dGVycyBpbiBjb21tb24uIEFkanVzdCBlZGdlIHJvdXRlciBwb2xpY2llcyBhbmQvb3Igc2VydmljZSBlZGdlIHJvdXRlciBwb2xpY2llcy5cIik7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5mbz8ub25saW5lQ291bnQ8MSkgZXJyb3JzLnB1c2goXCJDb21tb24gZWRnZSByb3V0ZXJzIGFyZSBhbGwgb2ZmLWxpbmUuIEJyaW5nIHJvdXRlcnMgYmFjayBvbi1saW5lIG9yIGFkanVzdCBlZGdlIHJvdXRlciBwb2xpY2llcyBhbmQvb3Igc2VydmljZSBlZGdlIHJvdXRlciBwb2xpY2llcy5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgc3RhdHVzID0gXCJcIjtcbiAgICAgICAgICAgIGlmIChpbmZvPy5pc0RpYWxBbGxvd2VkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGluZm8/LmlzQmluZEFsbG93ZWQpIHN0YXR1cyA9IFwiKERpYWwsQmluZClcIjtcbiAgICAgICAgICAgICAgICBlbHNlIHN0YXR1cyA9IFwiKERpYWwpXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChpbmZvPy5pc0JpbmRBbGxvd2VkKSBzdGF0dXMgPSBcIihCaW5kKVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGg+MCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxlcnJvcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzICs9IFwiPGJyLz5cIitlcnJvcnNbaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHN0YXR1cyArPSBcIjxici8+RXZlcnl0aGluZyBpcyBjb25maWd1cmVkIHByb3Blcmx5XCI7XG4gICAgICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWZyZXNoSWRlbnRpdHkoaWQpIHtcbiAgICAgICAgY29uc3QgdXJsOiBhbnkgPSBgL2lkZW50aXRpZXMvJHtpZH1gXG4gICAgICAgIHJldHVybiB0aGlzLnppdGlTZXJ2aWNlLmNhbGwodXJsKTtcbiAgICB9XG59XG4iXX0=