@openziti/ziti-console-lib 0.4.1 → 0.4.3

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 (68) hide show
  1. package/esm2022/lib/features/config-editor/config-editor.component.mjs +19 -4
  2. package/esm2022/lib/features/json-view/json-view.component.mjs +6 -3
  3. package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +32 -20
  4. package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +2 -1
  5. package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.mjs +68 -51
  6. package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.mjs +37 -1
  7. package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +2 -1
  8. package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +3 -1
  9. package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +2 -1
  10. package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +273 -0
  11. package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.mjs +197 -0
  12. package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +54 -66
  13. package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.service.mjs +49 -1
  14. package/esm2022/lib/models/service-edge-router-policy.mjs +10 -0
  15. package/esm2022/lib/pages/configurations/configurations-page.component.mjs +9 -15
  16. package/esm2022/lib/pages/configurations/configurations-page.service.mjs +13 -9
  17. package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.component.mjs +10 -12
  18. package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.service.mjs +19 -15
  19. package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.mjs +129 -0
  20. package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.mjs +382 -0
  21. package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +10 -12
  22. package/esm2022/lib/pages/service-policies/service-policies-page.service.mjs +21 -17
  23. package/esm2022/lib/pages/services/services-page.service.mjs +2 -2
  24. package/esm2022/lib/version.mjs +2 -2
  25. package/esm2022/lib/ziti-console-lib.module.mjs +9 -3
  26. package/esm2022/public-api.mjs +5 -1
  27. package/fesm2022/openziti-ziti-console-lib.mjs +6671 -5623
  28. package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
  29. package/lib/features/config-editor/config-editor.component.d.ts +4 -0
  30. package/lib/features/config-editor/config-editor.component.d.ts.map +1 -1
  31. package/lib/features/json-view/json-view.component.d.ts +1 -0
  32. package/lib/features/json-view/json-view.component.d.ts.map +1 -1
  33. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts +10 -2
  34. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +1 -1
  35. package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts.map +1 -1
  36. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts +9 -8
  37. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts.map +1 -1
  38. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.d.ts +8 -0
  39. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.d.ts.map +1 -1
  40. package/lib/features/projectable-forms/identity/identity-form.component.d.ts.map +1 -1
  41. package/lib/features/projectable-forms/service/service-form.component.d.ts.map +1 -1
  42. package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts.map +1 -1
  43. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts +53 -0
  44. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts.map +1 -0
  45. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.d.ts +38 -0
  46. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.d.ts.map +1 -0
  47. package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts +8 -11
  48. package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts.map +1 -1
  49. package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts +11 -0
  50. package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts.map +1 -1
  51. package/lib/models/service-edge-router-policy.d.ts +7 -0
  52. package/lib/models/service-edge-router-policy.d.ts.map +1 -0
  53. package/lib/pages/configurations/configurations-page.component.d.ts.map +1 -1
  54. package/lib/pages/configurations/configurations-page.service.d.ts +3 -1
  55. package/lib/pages/configurations/configurations-page.service.d.ts.map +1 -1
  56. package/lib/pages/edge-router-policies/edge-router-policies-page.service.d.ts +3 -1
  57. package/lib/pages/edge-router-policies/edge-router-policies-page.service.d.ts.map +1 -1
  58. package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.d.ts +35 -0
  59. package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.d.ts.map +1 -0
  60. package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.d.ts +59 -0
  61. package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.d.ts.map +1 -0
  62. package/lib/pages/service-policies/service-policies-page.service.d.ts +3 -1
  63. package/lib/pages/service-policies/service-policies-page.service.d.ts.map +1 -1
  64. package/lib/ziti-console-lib.module.d.ts +19 -17
  65. package/lib/ziti-console-lib.module.d.ts.map +1 -1
  66. package/package.json +1 -1
  67. package/public-api.d.ts +4 -0
  68. package/public-api.d.ts.map +1 -1
@@ -116,6 +116,7 @@ class EdgeRouterFormComponent extends ProjectableForm {
116
116
  async save(event) {
117
117
  const isValid = this.validate();
118
118
  const isExtValid = await this.extService.validateData();
119
+ this.formData.name = this.formData.name.trim();
119
120
  if (!isValid || !isExtValid) {
120
121
  return;
121
122
  }
@@ -219,4 +220,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
219
220
  }], close: [{
220
221
  type: Output
221
222
  }] } });
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZS1yb3V0ZXItZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvZWRnZS1yb3V0ZXIvZWRnZS1yb3V0ZXItZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvZWRnZS1yb3V0ZXIvZWRnZS1yb3V0ZXItZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUlOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGdCQUFnQixFQUFrQixNQUFNLG9DQUFvQyxDQUFDO0FBRXJGLE9BQU8sRUFBQyxPQUFPLEVBQVMsU0FBUyxFQUFnQixLQUFLLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDdEUsT0FBTyxFQUFDLGlCQUFpQixFQUFrQixNQUFNLHFDQUFxQyxDQUFDO0FBRXZGLE9BQU8sRUFBQyw2QkFBNkIsRUFBd0IsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFHdEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdkQsTUFXYSx1QkFBd0IsU0FBUSxlQUFlO0lBbUIxRCxZQUNxQyxlQUFnQyxFQUMxRCxHQUEwQixFQUNHLFdBQTRCLEVBQ2hFLGNBQThCLEVBQ1MsVUFBNEIsRUFDaEQsTUFBYyxFQUNkLEtBQXFCO1FB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Q3JFLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO0lBQ3pELENBQUM7SUFFRCxLQUFLO0lBQ0wsQ0FBQzsrR0E1TFUsdUJBQXVCLGtCQW9CdEIsZ0JBQWdCLGtEQUVoQixpQkFBaUIsMkNBRWpCLDZCQUE2QjttR0F4QjlCLHVCQUF1QixvS0FQdkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsWUFBWTtnQkFDckIsUUFBUSxFQUFFLEVBQUU7YUFDYjtTQUNGLHNFQ2xDSCx1aFFBb0p5Rjs7U0RoSDVFLHVCQUF1Qjs0RkFBdkIsdUJBQXVCO2tCQVhuQyxTQUFTOytCQUNFLHNCQUFzQixhQUdyQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsWUFBWTs0QkFDckIsUUFBUSxFQUFFLEVBQUU7eUJBQ2I7cUJBQ0Y7OzBCQXNCSSxNQUFNOzJCQUFDLGdCQUFnQjs7MEJBRXZCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFFeEIsTUFBTTsyQkFBQyw2QkFBNkI7OEZBdkJoQyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDSSxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgSW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQcm9qZWN0YWJsZUZvcm19IGZyb20gXCIuLi9wcm9qZWN0YWJsZS1mb3JtLmNsYXNzXCI7XG5pbXBvcnQge1NFVFRJTkdTX1NFUlZJQ0UsIFNldHRpbmdzU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3NldHRpbmdzLnNlcnZpY2VcIjtcblxuaW1wb3J0IHtpc0VtcHR5LCBkZWxheSwgY2xvbmVEZWVwLCBpc0VxdWFsLCBzZXQsIHVuc2V0fSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtaSVRJX0RBVEFfU0VSVklDRSwgWml0aURhdGFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMveml0aS1kYXRhLnNlcnZpY2VcIjtcbmltcG9ydCB7R3Jvd2xlclNlcnZpY2V9IGZyb20gXCIuLi8uLi9tZXNzYWdpbmcvZ3Jvd2xlci5zZXJ2aWNlXCI7XG5pbXBvcnQge0VER0VfUk9VVEVSX0VYVEVOU0lPTl9TRVJWSUNFLCBFZGdlUm91dGVyRm9ybVNlcnZpY2V9IGZyb20gJy4vZWRnZS1yb3V0ZXItZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7TWF0RGlhbG9nUmVmfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XG5pbXBvcnQge0V4dGVuc2lvblNlcnZpY2V9IGZyb20gXCIuLi8uLi9leHRlbmRhYmxlL2V4dGVuc2lvbnMtbm9vcC5zZXJ2aWNlXCI7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7RWRnZVJvdXRlcn0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9lZGdlLXJvdXRlclwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZWRnZS1yb3V0ZXItZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGdlLXJvdXRlci1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWRnZS1yb3V0ZXItZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNYXREaWFsb2dSZWYsXG4gICAgICB1c2VWYWx1ZToge31cbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRWRnZVJvdXRlckZvcm1Db21wb25lbnQgZXh0ZW5kcyBQcm9qZWN0YWJsZUZvcm0gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgZm9ybURhdGE6IGFueSA9IHt9O1xuICBASW5wdXQoKSBlZGdlUm91dGVyUm9sZUF0dHJpYnV0ZXM6IGFueVtdID0gW107XG4gIEBPdXRwdXQoKSBjbG9zZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBvdmVycmlkZSBlbnRpdHlUeXBlID0gJ2VkZ2Utcm91dGVycyc7XG4gIG92ZXJyaWRlIGVudGl0eUNsYXNzID0gRWRnZVJvdXRlcjtcblxuICBmb3JtVmlldyA9ICdzaW1wbGUnO1xuICBpc0VkaXRpbmcgPSBmYWxzZTtcbiAgc2VydmljZXNMb2FkaW5nID0gZmFsc2U7XG4gIGlkZW50aXRpZXNMb2FkaW5nID0gZmFsc2U7XG4gIGF1dGhQb2xpY2llczogYW55ID0gW1xuICAgIHtpZDogJ2RlZmF1bHQnLCBuYW1lOiAnRGVmYXVsdCd9XG4gIF07XG5cbiAgc2hvd01vcmUgPSBmYWxzZTtcbiAgc2V0dGluZ3M6IGFueSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBwdWJsaWMgc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgICBwdWJsaWMgc3ZjOiBFZGdlUm91dGVyRm9ybVNlcnZpY2UsXG4gICAgICBASW5qZWN0KFpJVElfREFUQV9TRVJWSUNFKSBvdmVycmlkZSB6aXRpU2VydmljZTogWml0aURhdGFTZXJ2aWNlLFxuICAgICAgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlLFxuICAgICAgQEluamVjdChFREdFX1JPVVRFUl9FWFRFTlNJT05fU0VSVklDRSkgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgIHByb3RlY3RlZCBvdmVycmlkZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgIHByb3RlY3RlZCBvdmVycmlkZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICkge1xuICAgIHN1cGVyKGdyb3dsZXJTZXJ2aWNlLCBleHRTZXJ2aWNlLCB6aXRpU2VydmljZSwgcm91dGVyLCByb3V0ZSk7XG4gICAgdGhpcy5lZGdlUm91dGVyUm9sZUF0dHJpYnV0ZXMgPSBbXTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3NDaGFuZ2Uuc3Vic2NyaWJlKChyZXN1bHRzOmFueSkgPT4ge1xuICAgICAgICB0aGlzLnNldHRpbmdzID0gcmVzdWx0cztcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLmV4dFNlcnZpY2UuZm9ybURhdGFDaGFuZ2VkLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YS5pc0VtcHR5KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybURhdGEgPSBkYXRhO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgb3ZlcnJpZGUgZW50aXR5VXBkYXRlZCgpIHtcbiAgICBpZiAodGhpcy5mb3JtRGF0YS5pZCkge1xuICAgICAgdGhpcy5mb3JtRGF0YS5iYWRnZXMgPSBbXTtcbiAgICAgIHRoaXMuZm9ybURhdGEuYmFkZ2VzID0gW107XG4gICAgICBpZiAodGhpcy5mb3JtRGF0YS5pc09ubGluZSkge1xuICAgICAgICB0aGlzLmZvcm1EYXRhLmJhZGdlcy5wdXNoKHtsYWJlbDogJ09ubGluZScsIGNsYXNzOiAnb25saW5lJywgY2lyY2xlOiAndHJ1ZSd9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9ybURhdGEuYmFkZ2VzLnB1c2goe2xhYmVsOiAnT2ZmbGluZScsIGNsYXNzOiAnb2ZmbGluZScsIGNpcmNsZTogJ2ZhbHNlJ30pO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmZvcm1EYXRhLmlzVmVyaWZpZWQpIHtcbiAgICAgICAgdGhpcy5mb3JtRGF0YS5iYWRnZXMucHVzaCh7bGFiZWw6ICdVbnZlcmlmaWVkJywgY2xhc3M6ICd1bnJlZyd9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5nZXRFZGdlUm91dGVyUm9sZUF0dHJpYnV0ZXMoKTtcbiAgICB0aGlzLnN2Yy5nZXRBc3NvY2lhdGVkU2VydmljZXModGhpcy5mb3JtRGF0YS5pZCk7XG4gICAgdGhpcy5zdmMuZ2V0QXNzb2NpYXRlZElkZW50aXRpZXModGhpcy5mb3JtRGF0YS5pZCk7XG4gICAgdGhpcy5zdmMuZ2V0QXV0aFBvbGljaWVzKCkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5hdXRoUG9saWNpZXMgPSByZXN1bHQ7XG4gICAgfSk7XG4gICAgdGhpcy5sb2FkVGFncygpO1xuICAgIHVuc2V0KHRoaXMuZm9ybURhdGEsICdfbGlua3MnKTtcbiAgICB0aGlzLmluaXREYXRhID0gY2xvbmVEZWVwKHRoaXMuZm9ybURhdGEpO1xuICAgIHRoaXMuZXh0U2VydmljZS51cGRhdGVGb3JtRGF0YSh0aGlzLmZvcm1EYXRhKTtcbiAgfVxuXG4gIGdldEVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlcygpIHtcbiAgICB0aGlzLmdldFJvbGVBdHRyaWJ1dGVzKCdlZGdlLXJvdXRlci1yb2xlLWF0dHJpYnV0ZXMnKS50aGVuKChhdHRyaWJ1dGVzKSA9PiB7XG4gICAgICB0aGlzLmVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmV4dFNlcnZpY2UuY2xvc2VkLmVtaXQoe30pO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgdGhpcy5pc0VkaXRpbmcgPSAhaXNFbXB0eSh0aGlzLmZvcm1EYXRhLmlkKTtcbiAgfVxuXG4gIGdldCBoYXNFbnJvbG1lbnRUb2tlbigpIHtcbiAgICByZXR1cm4gIWlzRW1wdHkodGhpcy5mb3JtRGF0YS5lbnJvbGxtZW50Snd0KSB8fCAhaXNFbXB0eSh0aGlzLmZvcm1EYXRhLmVucm9sbG1lbnRUb2tlbik7XG4gIH1cblxuICBoZWFkZXJBY3Rpb25SZXF1ZXN0ZWQoYWN0aW9uKSB7XG4gICAgc3dpdGNoKGFjdGlvbi5uYW1lKSB7XG4gICAgICBjYXNlICdzYXZlJzpcbiAgICAgICAgdGhpcy5zYXZlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2xvc2UnOlxuICAgICAgICB0aGlzLmNsb3NlRm9ybSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvZ2dsZS12aWV3JzpcbiAgICAgICAgdGhpcy5mb3JtVmlldyA9IGFjdGlvbi5kYXRhO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBhc3luYyBzYXZlKGV2ZW50Pykge1xuICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLnZhbGlkYXRlKCk7XG4gICAgY29uc3QgaXNFeHRWYWxpZCA9IGF3YWl0IHRoaXMuZXh0U2VydmljZS52YWxpZGF0ZURhdGEoKTtcbiAgICBpZighaXNWYWxpZCB8fCAhaXNFeHRWYWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnN2Yy5zYXZlKHRoaXMuZm9ybURhdGEpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgaWYgKHJlc3VsdD8uY2xvc2UpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2RhbCkge1xuICAgICAgICAgIHRoaXMuY2xvc2VNb2RhbCh0cnVlLCB0cnVlKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0RGF0YSA9IHRoaXMuZm9ybURhdGE7XG4gICAgICAgIHRoaXMuX2RhdGFDaGFuZ2UgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZXR1cm5Ub0xpc3RQYWdlKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGEgPSByZXN1bHQ/LmRhdGE/LmlkID8gcmVzdWx0LmRhdGEgOiByZXN1bHQ7XG4gICAgICBpZiAoIWlzRW1wdHkoZGF0YS5pZCkpIHtcbiAgICAgICAgdGhpcy5mb3JtRGF0YSA9IGRhdGEgfHwgdGhpcy5mb3JtRGF0YTtcbiAgICAgICAgdGhpcy5pbml0RGF0YSA9IHRoaXMuZm9ybURhdGE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmluaXREYXRhID0gdGhpcy5mb3JtRGF0YTtcbiAgICAgIH1cbiAgICB9KS5maW5hbGx5KCgpID0+IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aGlzLmVycm9ycyA9IHt9O1xuICAgIGlmIChpc0VtcHR5KHRoaXMuZm9ybURhdGEubmFtZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JzWyduYW1lJ10gPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gaXNFbXB0eSh0aGlzLmVycm9ycyk7XG4gIH1cblxuICBnZXQgYXBpQ2FsbFVSTCgpIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5zZWxlY3RlZEVkZ2VDb250cm9sbGVyICsgJy9lZGdlL21hbmFnZW1lbnQvdjEvZWRnZS1yb3V0ZXJzJyArICh0aGlzLmZvcm1EYXRhLmlkID8gYC8ke3RoaXMuZm9ybURhdGEuaWR9YCA6ICcnKTtcbiAgfVxuXG4gIGdldCBhcGlEYXRhKCkge1xuICAgIGNvbnN0IGRhdGE6IGFueSA9IHtcbiAgICAgICAgICBuYW1lOiB0aGlzLmZvcm1EYXRhPy5uYW1lIHx8ICcnLFxuICAgICAgICAgIGFwcERhdGE6IHRoaXMuZm9ybURhdGE/LmFwcERhdGEgfHwgJycsXG4gICAgICAgICAgcm9sZUF0dHJpYnV0ZXM6IHRoaXMuZm9ybURhdGEucm9sZUF0dHJpYnV0ZXMgfHwgJycsXG4gICAgICAgICAgaXNUdW5uZWxlckVuYWJsZWQ6IHRoaXMuZm9ybURhdGEuaXNUdW5uZWxlckVuYWJsZWQsXG4gICAgICAgICAgbm9UcmF2ZXJzYWw6IHRoaXMuZm9ybURhdGEubm9UcmF2ZXJzYWwsXG4gICAgICAgICAgY29zdDogdGhpcy5mb3JtRGF0YS5jb3N0IHx8ICcwJyxcbiAgICAgICAgICB0YWdzOiB0aGlzLmZvcm1EYXRhLnRhZ3MgfHwgJydcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzRWRpdGluZykge1xuICAgICAgZGF0YS5lbnJvbGxtZW50ID0gdGhpcy5mb3JtRGF0YS5lbnJvbGxtZW50IHx8IHtvdHQ6IHRydWV9O1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHJlZnJlc2hFZGdlUm91dGVyKCkge1xuICAgIHRoaXMuc3ZjLnJlZnJlc2hSb3V0ZXIodGhpcy5mb3JtRGF0YS5pZCkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5mb3JtRGF0YSA9IHJlc3VsdC5kYXRhO1xuICAgICAgdGhpcy5pbml0RGF0YSA9IGNsb25lRGVlcCh0aGlzLmZvcm1EYXRhKTtcbiAgICAgIHRoaXMuZXh0U2VydmljZS51cGRhdGVGb3JtRGF0YSh0aGlzLmZvcm1EYXRhKTtcbiAgICB9KVxuICB9XG5cbiAgX2FwaURhdGEgPSB7fTtcbiAgc2V0IGFwaURhdGEoZGF0YSkge1xuICAgIHRoaXMuX2FwaURhdGEgPSBkYXRhO1xuICB9XG5cbiAgdG9nZ2xlVHVubmVsZXJFbmFibGVkKCkge1xuICAgIHRoaXMuZm9ybURhdGEuaXNUdW5uZWxlckVuYWJsZWQgPSAhdGhpcy5mb3JtRGF0YS5pc1R1bm5lbGVyRW5hYmxlZDtcbiAgfVxuXG4gIHRvZ2dsZU5vVHJhdmVyc2FsKCkge1xuICAgIHRoaXMuZm9ybURhdGEubm9UcmF2ZXJzYWwgPSAhdGhpcy5mb3JtRGF0YS5ub1RyYXZlcnNhbDtcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicHJvamVjdGFibGUtZm9ybS13cmFwcGVyXCJcbiAgICAgKGtleXVwLmVudGVyKT1cInNhdmUoJGV2ZW50KVwiXG4gICAgIChrZXl1cC5lc2NhcGUpPVwiY2xvc2VNb2RhbChmYWxzZSlcIlxuPlxuICAgIDxsaWItZm9ybS1oZWFkZXJcbiAgICAgICAgW2RhdGFdPVwiZm9ybURhdGFcIlxuICAgICAgICBbdGl0bGVdPVwiZm9ybURhdGEuaWQgPyAnRWRpdCBFZGdlIFJvdXRlcjogJyA6ICdDcmVhdGUgTmV3IEVkZ2UgUm91dGVyJ1wiXG4gICAgICAgIFttb3JlQWN0aW9uc109XCJtb3JlQWN0aW9uc1wiXG4gICAgICAgIChhY3Rpb25SZXF1ZXN0ZWQpPVwiaGVhZGVyQWN0aW9uUmVxdWVzdGVkKCRldmVudClcIlxuICAgICAgICBbKGZvcm1WaWV3KV09XCJmb3JtVmlld1wiXG4gICAgPjwvbGliLWZvcm0taGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJlZGdlLXJvdXRlci1mb3JtLWNvbnRhaW5lciBwcm9qZWN0YWJsZS1mb3JtLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvamVjdGFibGUtZm9ybS1tYWluLWNvbHVtbiBmb3JtLWdyb3VwLXJvd1wiICpuZ0lmPVwiZm9ybVZpZXcgPT09ICdzaW1wbGUnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1jb2x1bW4gdGhyZWUtZmlmdGhzXCI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lciBbdGl0bGVdPVwiJ0VkZ2UgUm91dGVyIE5hbWUnXCIgW2xhYmVsXT1cIidSRVFVSVJFRCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJOYW1lIHRoaXMgZWRnZSByb3V0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2Vycm9yOiBlcnJvcnNbJ25hbWUnXX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtRGF0YS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9mb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgI25hbWVGaWVsZElucHV0XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidTZWxlY3Qgb3IgY3JlYXRlIEVkZ2UgUm91dGVyIGF0dHJpYnV0ZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInT1BUSU9OQUwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50U3R5bGVdPVwiJ3otaW5kZXg6IDk5OTk5OTk5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiJ0F0dHJpYnV0ZXMgYXJlIHRhZ3MgYXBwbGllZCB0byBhbiByZXNvdXJjZS4gQXBwbHkgdGhlIHNhbWUgdGFnIHRvIG90aGVyIEVkZ2UgUm91dGVycyB0byBmb3JtIGEgZ3JvdXAgb2YgRWRnZSBSb3V0ZXJzLidcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi10YWctc2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkUm9sZUF0dHJpYnV0ZXMpXT1cImZvcm1EYXRhLnJvbGVBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXZhaWxhYmxlUm9sZUF0dHJpYnV0ZXNdPVwiZWRnZVJvdXRlclJvbGVBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0FkZCBhdHRyaWJ1dGVzIHRvIGdyb3VwIEVkZ2UgUm91dGVycydcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItdGFnLXNlbGVjdG9yPlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzbG90PWNvbHVtbi0xLXNsb3QtMV1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLXRvZ2dsZSBbKHRvZ2dsZU9uKV09XCJzaG93TW9yZVwiIHN0eWxlPVwibWFyZ2luOiAwcHggMTBweFwiPjwvbGliLWZvcm0tZmllbGQtdG9nZ2xlPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93TW9yZVwiIGNsYXNzPVwiZm9ybS1ncm91cC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidUVU5ORUxFUidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlMl09XCInVFJBVkVSU0FMJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGF5b3V0XT1cIidyb3cnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1hZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctY29udGFpbmVyIHRvZ2dsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZy1jb250YWluZXItbGFiZWxcIj5UVU5ORUxFUiBFTkFCTEVEPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlVHVubmVsZXJFbmFibGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgb246IGZvcm1EYXRhLmlzVHVubmVsZXJFbmFibGVkIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2hpZGRlbl09XCIhZm9ybURhdGEuaXNUdW5uZWxlckVuYWJsZWRcIiBjbGFzcz1cIm9uLWxhYmVsXCI+WUVTPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2hpZGRlbl09XCJmb3JtRGF0YS5pc1R1bm5lbGVyRW5hYmxlZFwiIGNsYXNzPVwib2ZmLWxhYmVsXCI+Tk88L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3dpdGNoXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctY29udGFpbmVyIHRvZ2dsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZy1jb250YWluZXItbGFiZWxcIj5BTExPVyBUUkFWRVJTQUw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVOb1RyYXZlcnNhbCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IG9uOiAhZm9ybURhdGEubm9UcmF2ZXJzYWwgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaGlkZGVuXT1cImZvcm1EYXRhLm5vVHJhdmVyc2FsXCIgY2xhc3M9XCJvbi1sYWJlbFwiPllFUzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtoaWRkZW5dPVwiIWZvcm1EYXRhLm5vVHJhdmVyc2FsXCIgY2xhc3M9XCJvZmYtbGFiZWxcIj5OTzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzd2l0Y2hcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0N1c3RvbSBUYWdzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidPUFRJT05BTCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1hZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItY3VzdG9tLXRhZ3MgWyh0YWdzKV09XCJmb3JtRGF0YS50YWdzXCI+PC9saWItY3VzdG9tLXRhZ3M+XG4gICAgICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBcHAgRGF0YSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInT1BUSU9OQUwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtYWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWpzb24tdmlldz48L2xpYi1qc29uLXZpZXc+XG4gICAgICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1jb2x1bW4gdHdvLWZpZnRoc1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzbG90PWNvbHVtbi0yLXNsb3QtMV1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNFbnJvbG1lbnRUb2tlbiAmJiAhZXh0U2VydmljZVsnaGlkZVppdGlSZWdpc3RyYXRpb24nXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0hlYWRlcl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXFyLWNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRlbnRpdHldPVwiZm9ybURhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtqd3RdPVwiZm9ybURhdGEuZW5yb2xsbWVudEp3dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rva2VuXT1cImZvcm1EYXRhLmVucm9sbG1lbnRUb2tlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V4cGlyYXRpb25dPVwiZm9ybURhdGEuZW5yb2xsbWVudEV4cGlyZXNBdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvUmVmcmVzaCk9XCJyZWZyZXNoRWRnZVJvdXRlcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCIncm91dGVyJ1wiXG4gICAgICAgICAgICAgICAgICAgID48L2xpYi1xci1jb2RlPlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9ybURhdGEuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBc3NvY2lhdGVkIFNlcnZpY2VzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY291bnRdPVwic3ZjLmFzc29jaWF0ZWRTZXJ2aWNlcy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidoaWRlLW92ZXJmbG93J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiJ1ByZXZpZXcgbGlzdCBvZiBhbGwgc2VydmljZXMgdGhhdCB0aGlzIEVkZ2UgUm91dGVyIGlzIGFzc29jaWF0ZWQgd2l0aC4nXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItcHJldmlldy1saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xpY2thYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc0xvYWRpbmddPVwic2VydmljZXNMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthbGxOYW1lc109XCJzdmMuYXNzb2NpYXRlZFNlcnZpY2VOYW1lc1wiXG4gICAgICAgICAgICAgICAgICAgID48L2xpYi1wcmV2aWV3LWxpc3Q+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmb3JtRGF0YS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0Fzc29jaWF0ZWQgSWRlbnRpdGllcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvdW50XT1cInN2Yy5hc3NvY2lhdGVkSWRlbnRpdGllcy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIidQcmV2aWV3IGxpc3Qgb2YgYWxsIElkZW50aXRpZXMgdGhhdCB0aGlzIEVkZ2UgUm91dGVyIGlzIGFzc29jaWF0ZWQgd2l0aC4nXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItcHJldmlldy1saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xpY2thYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc0xvYWRpbmddPVwiaWRlbnRpdGllc0xvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FsbE5hbWVzXT1cInN2Yy5hc3NvY2lhdGVkSWRlbnRpdHlOYW1lc1wiXG4gICAgICAgICAgICAgICAgICAgID48L2xpYi1wcmV2aWV3LWxpc3Q+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBUEkgQ2FsbHMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInT1BUSU9OQUwnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1maWVsZC1pbnB1dFwiIFt2YWx1ZV09XCJhcGlDYWxsVVJMXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29weSBjb3B5XCIgKGNsaWNrKT1cImNvcHlUb0NsaXBib2FyZChhcGlDYWxsVVJMKVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1qc29uLXZpZXcgKm5nSWY9XCJmb3JtRGF0YVwiIFsoZGF0YSldPVwiYXBpRGF0YVwiIFtyZWFkT25seV09XCJ0cnVlXCIgW3Nob3dDb3B5XT1cInRydWVcIj48L2xpYi1qc29uLXZpZXc+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLWNvbHVtblwiICpuZ0lmPVwiZm9ybVZpZXcgPT09ICdyYXcnXCI+XG4gICAgICAgICAgICA8bGliLWpzb24tdmlldyAqbmdJZj1cImZvcm1EYXRhXCIgWyhkYXRhKV09XCJmb3JtRGF0YVwiPjwvbGliLWpzb24tdmlldz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxsaWItbG9hZGluZy1pbmRpY2F0b3IgKm5nSWY9XCJpc0xvYWRpbmdcIiBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiPjwvbGliLWxvYWRpbmctaW5kaWNhdG9yPiJdfQ==
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZS1yb3V0ZXItZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvZWRnZS1yb3V0ZXIvZWRnZS1yb3V0ZXItZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvZWRnZS1yb3V0ZXIvZWRnZS1yb3V0ZXItZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUlOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGdCQUFnQixFQUFrQixNQUFNLG9DQUFvQyxDQUFDO0FBRXJGLE9BQU8sRUFBQyxPQUFPLEVBQVMsU0FBUyxFQUFnQixLQUFLLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDdEUsT0FBTyxFQUFDLGlCQUFpQixFQUFrQixNQUFNLHFDQUFxQyxDQUFDO0FBRXZGLE9BQU8sRUFBQyw2QkFBNkIsRUFBd0IsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFHdEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdkQsTUFXYSx1QkFBd0IsU0FBUSxlQUFlO0lBbUIxRCxZQUNxQyxlQUFnQyxFQUMxRCxHQUEwQixFQUNHLFdBQTRCLEVBQ2hFLGNBQThCLEVBQ1MsVUFBNEIsRUFDaEQsTUFBYyxFQUNkLEtBQXFCO1FB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QXFCO1FBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO0lBQ3JFLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO0lBQ3pELENBQUM7SUFFRCxLQUFLO0lBQ0wsQ0FBQzsrR0E3TFUsdUJBQXVCLGtCQW9CdEIsZ0JBQWdCLGtEQUVoQixpQkFBaUIsMkNBRWpCLDZCQUE2QjttR0F4QjlCLHVCQUF1QixvS0FQdkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsWUFBWTtnQkFDckIsUUFBUSxFQUFFLEVBQUU7YUFDYjtTQUNGLHNFQ2xDSCx1aFFBb0p5Rjs7U0RoSDVFLHVCQUF1Qjs0RkFBdkIsdUJBQXVCO2tCQVhuQyxTQUFTOytCQUNFLHNCQUFzQixhQUdyQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsWUFBWTs0QkFDckIsUUFBUSxFQUFFLEVBQUU7eUJBQ2I7cUJBQ0Y7OzBCQXNCSSxNQUFNOzJCQUFDLGdCQUFnQjs7MEJBRXZCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFFeEIsTUFBTTsyQkFBQyw2QkFBNkI7OEZBdkJoQyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDSSxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgSW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQcm9qZWN0YWJsZUZvcm19IGZyb20gXCIuLi9wcm9qZWN0YWJsZS1mb3JtLmNsYXNzXCI7XG5pbXBvcnQge1NFVFRJTkdTX1NFUlZJQ0UsIFNldHRpbmdzU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3NldHRpbmdzLnNlcnZpY2VcIjtcblxuaW1wb3J0IHtpc0VtcHR5LCBkZWxheSwgY2xvbmVEZWVwLCBpc0VxdWFsLCBzZXQsIHVuc2V0fSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtaSVRJX0RBVEFfU0VSVklDRSwgWml0aURhdGFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMveml0aS1kYXRhLnNlcnZpY2VcIjtcbmltcG9ydCB7R3Jvd2xlclNlcnZpY2V9IGZyb20gXCIuLi8uLi9tZXNzYWdpbmcvZ3Jvd2xlci5zZXJ2aWNlXCI7XG5pbXBvcnQge0VER0VfUk9VVEVSX0VYVEVOU0lPTl9TRVJWSUNFLCBFZGdlUm91dGVyRm9ybVNlcnZpY2V9IGZyb20gJy4vZWRnZS1yb3V0ZXItZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7TWF0RGlhbG9nUmVmfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XG5pbXBvcnQge0V4dGVuc2lvblNlcnZpY2V9IGZyb20gXCIuLi8uLi9leHRlbmRhYmxlL2V4dGVuc2lvbnMtbm9vcC5zZXJ2aWNlXCI7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7RWRnZVJvdXRlcn0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9lZGdlLXJvdXRlclwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZWRnZS1yb3V0ZXItZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGdlLXJvdXRlci1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWRnZS1yb3V0ZXItZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNYXREaWFsb2dSZWYsXG4gICAgICB1c2VWYWx1ZToge31cbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRWRnZVJvdXRlckZvcm1Db21wb25lbnQgZXh0ZW5kcyBQcm9qZWN0YWJsZUZvcm0gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgZm9ybURhdGE6IGFueSA9IHt9O1xuICBASW5wdXQoKSBlZGdlUm91dGVyUm9sZUF0dHJpYnV0ZXM6IGFueVtdID0gW107XG4gIEBPdXRwdXQoKSBjbG9zZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBvdmVycmlkZSBlbnRpdHlUeXBlID0gJ2VkZ2Utcm91dGVycyc7XG4gIG92ZXJyaWRlIGVudGl0eUNsYXNzID0gRWRnZVJvdXRlcjtcblxuICBmb3JtVmlldyA9ICdzaW1wbGUnO1xuICBpc0VkaXRpbmcgPSBmYWxzZTtcbiAgc2VydmljZXNMb2FkaW5nID0gZmFsc2U7XG4gIGlkZW50aXRpZXNMb2FkaW5nID0gZmFsc2U7XG4gIGF1dGhQb2xpY2llczogYW55ID0gW1xuICAgIHtpZDogJ2RlZmF1bHQnLCBuYW1lOiAnRGVmYXVsdCd9XG4gIF07XG5cbiAgc2hvd01vcmUgPSBmYWxzZTtcbiAgc2V0dGluZ3M6IGFueSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBwdWJsaWMgc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgICBwdWJsaWMgc3ZjOiBFZGdlUm91dGVyRm9ybVNlcnZpY2UsXG4gICAgICBASW5qZWN0KFpJVElfREFUQV9TRVJWSUNFKSBvdmVycmlkZSB6aXRpU2VydmljZTogWml0aURhdGFTZXJ2aWNlLFxuICAgICAgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlLFxuICAgICAgQEluamVjdChFREdFX1JPVVRFUl9FWFRFTlNJT05fU0VSVklDRSkgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgIHByb3RlY3RlZCBvdmVycmlkZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgIHByb3RlY3RlZCBvdmVycmlkZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICkge1xuICAgIHN1cGVyKGdyb3dsZXJTZXJ2aWNlLCBleHRTZXJ2aWNlLCB6aXRpU2VydmljZSwgcm91dGVyLCByb3V0ZSk7XG4gICAgdGhpcy5lZGdlUm91dGVyUm9sZUF0dHJpYnV0ZXMgPSBbXTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3NDaGFuZ2Uuc3Vic2NyaWJlKChyZXN1bHRzOmFueSkgPT4ge1xuICAgICAgICB0aGlzLnNldHRpbmdzID0gcmVzdWx0cztcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLmV4dFNlcnZpY2UuZm9ybURhdGFDaGFuZ2VkLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YS5pc0VtcHR5KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybURhdGEgPSBkYXRhO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgb3ZlcnJpZGUgZW50aXR5VXBkYXRlZCgpIHtcbiAgICBpZiAodGhpcy5mb3JtRGF0YS5pZCkge1xuICAgICAgdGhpcy5mb3JtRGF0YS5iYWRnZXMgPSBbXTtcbiAgICAgIHRoaXMuZm9ybURhdGEuYmFkZ2VzID0gW107XG4gICAgICBpZiAodGhpcy5mb3JtRGF0YS5pc09ubGluZSkge1xuICAgICAgICB0aGlzLmZvcm1EYXRhLmJhZGdlcy5wdXNoKHtsYWJlbDogJ09ubGluZScsIGNsYXNzOiAnb25saW5lJywgY2lyY2xlOiAndHJ1ZSd9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9ybURhdGEuYmFkZ2VzLnB1c2goe2xhYmVsOiAnT2ZmbGluZScsIGNsYXNzOiAnb2ZmbGluZScsIGNpcmNsZTogJ2ZhbHNlJ30pO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmZvcm1EYXRhLmlzVmVyaWZpZWQpIHtcbiAgICAgICAgdGhpcy5mb3JtRGF0YS5iYWRnZXMucHVzaCh7bGFiZWw6ICdVbnZlcmlmaWVkJywgY2xhc3M6ICd1bnJlZyd9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5nZXRFZGdlUm91dGVyUm9sZUF0dHJpYnV0ZXMoKTtcbiAgICB0aGlzLnN2Yy5nZXRBc3NvY2lhdGVkU2VydmljZXModGhpcy5mb3JtRGF0YS5pZCk7XG4gICAgdGhpcy5zdmMuZ2V0QXNzb2NpYXRlZElkZW50aXRpZXModGhpcy5mb3JtRGF0YS5pZCk7XG4gICAgdGhpcy5zdmMuZ2V0QXV0aFBvbGljaWVzKCkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5hdXRoUG9saWNpZXMgPSByZXN1bHQ7XG4gICAgfSk7XG4gICAgdGhpcy5sb2FkVGFncygpO1xuICAgIHVuc2V0KHRoaXMuZm9ybURhdGEsICdfbGlua3MnKTtcbiAgICB0aGlzLmluaXREYXRhID0gY2xvbmVEZWVwKHRoaXMuZm9ybURhdGEpO1xuICAgIHRoaXMuZXh0U2VydmljZS51cGRhdGVGb3JtRGF0YSh0aGlzLmZvcm1EYXRhKTtcbiAgfVxuXG4gIGdldEVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlcygpIHtcbiAgICB0aGlzLmdldFJvbGVBdHRyaWJ1dGVzKCdlZGdlLXJvdXRlci1yb2xlLWF0dHJpYnV0ZXMnKS50aGVuKChhdHRyaWJ1dGVzKSA9PiB7XG4gICAgICB0aGlzLmVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmV4dFNlcnZpY2UuY2xvc2VkLmVtaXQoe30pO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgdGhpcy5pc0VkaXRpbmcgPSAhaXNFbXB0eSh0aGlzLmZvcm1EYXRhLmlkKTtcbiAgfVxuXG4gIGdldCBoYXNFbnJvbG1lbnRUb2tlbigpIHtcbiAgICByZXR1cm4gIWlzRW1wdHkodGhpcy5mb3JtRGF0YS5lbnJvbGxtZW50Snd0KSB8fCAhaXNFbXB0eSh0aGlzLmZvcm1EYXRhLmVucm9sbG1lbnRUb2tlbik7XG4gIH1cblxuICBoZWFkZXJBY3Rpb25SZXF1ZXN0ZWQoYWN0aW9uKSB7XG4gICAgc3dpdGNoKGFjdGlvbi5uYW1lKSB7XG4gICAgICBjYXNlICdzYXZlJzpcbiAgICAgICAgdGhpcy5zYXZlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2xvc2UnOlxuICAgICAgICB0aGlzLmNsb3NlRm9ybSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvZ2dsZS12aWV3JzpcbiAgICAgICAgdGhpcy5mb3JtVmlldyA9IGFjdGlvbi5kYXRhO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBhc3luYyBzYXZlKGV2ZW50Pykge1xuICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLnZhbGlkYXRlKCk7XG4gICAgY29uc3QgaXNFeHRWYWxpZCA9IGF3YWl0IHRoaXMuZXh0U2VydmljZS52YWxpZGF0ZURhdGEoKTtcbiAgICB0aGlzLmZvcm1EYXRhLm5hbWUgPSB0aGlzLmZvcm1EYXRhLm5hbWUudHJpbSgpXG4gICAgaWYoIWlzVmFsaWQgfHwgIWlzRXh0VmFsaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5zdmMuc2F2ZSh0aGlzLmZvcm1EYXRhKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQ/LmNsb3NlKSB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9kYWwpIHtcbiAgICAgICAgICB0aGlzLmNsb3NlTW9kYWwodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5pdERhdGEgPSB0aGlzLmZvcm1EYXRhO1xuICAgICAgICB0aGlzLl9kYXRhQ2hhbmdlID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmV0dXJuVG9MaXN0UGFnZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhID0gcmVzdWx0Py5kYXRhPy5pZCA/IHJlc3VsdC5kYXRhIDogcmVzdWx0O1xuICAgICAgaWYgKCFpc0VtcHR5KGRhdGEuaWQpKSB7XG4gICAgICAgIHRoaXMuZm9ybURhdGEgPSBkYXRhIHx8IHRoaXMuZm9ybURhdGE7XG4gICAgICAgIHRoaXMuaW5pdERhdGEgPSB0aGlzLmZvcm1EYXRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbml0RGF0YSA9IHRoaXMuZm9ybURhdGE7XG4gICAgICB9XG4gICAgfSkuZmluYWxseSgoKSA9PiB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhpcy5lcnJvcnMgPSB7fTtcbiAgICBpZiAoaXNFbXB0eSh0aGlzLmZvcm1EYXRhLm5hbWUpKSB7XG4gICAgICB0aGlzLmVycm9yc1snbmFtZSddID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGlzRW1wdHkodGhpcy5lcnJvcnMpO1xuICB9XG5cbiAgZ2V0IGFwaUNhbGxVUkwoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Muc2VsZWN0ZWRFZGdlQ29udHJvbGxlciArICcvZWRnZS9tYW5hZ2VtZW50L3YxL2VkZ2Utcm91dGVycycgKyAodGhpcy5mb3JtRGF0YS5pZCA/IGAvJHt0aGlzLmZvcm1EYXRhLmlkfWAgOiAnJyk7XG4gIH1cblxuICBnZXQgYXBpRGF0YSgpIHtcbiAgICBjb25zdCBkYXRhOiBhbnkgPSB7XG4gICAgICAgICAgbmFtZTogdGhpcy5mb3JtRGF0YT8ubmFtZSB8fCAnJyxcbiAgICAgICAgICBhcHBEYXRhOiB0aGlzLmZvcm1EYXRhPy5hcHBEYXRhIHx8ICcnLFxuICAgICAgICAgIHJvbGVBdHRyaWJ1dGVzOiB0aGlzLmZvcm1EYXRhLnJvbGVBdHRyaWJ1dGVzIHx8ICcnLFxuICAgICAgICAgIGlzVHVubmVsZXJFbmFibGVkOiB0aGlzLmZvcm1EYXRhLmlzVHVubmVsZXJFbmFibGVkLFxuICAgICAgICAgIG5vVHJhdmVyc2FsOiB0aGlzLmZvcm1EYXRhLm5vVHJhdmVyc2FsLFxuICAgICAgICAgIGNvc3Q6IHRoaXMuZm9ybURhdGEuY29zdCB8fCAnMCcsXG4gICAgICAgICAgdGFnczogdGhpcy5mb3JtRGF0YS50YWdzIHx8ICcnXG4gICAgfVxuICAgIGlmICghdGhpcy5pc0VkaXRpbmcpIHtcbiAgICAgIGRhdGEuZW5yb2xsbWVudCA9IHRoaXMuZm9ybURhdGEuZW5yb2xsbWVudCB8fCB7b3R0OiB0cnVlfTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICByZWZyZXNoRWRnZVJvdXRlcigpIHtcbiAgICB0aGlzLnN2Yy5yZWZyZXNoUm91dGVyKHRoaXMuZm9ybURhdGEuaWQpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgIHRoaXMuZm9ybURhdGEgPSByZXN1bHQuZGF0YTtcbiAgICAgIHRoaXMuaW5pdERhdGEgPSBjbG9uZURlZXAodGhpcy5mb3JtRGF0YSk7XG4gICAgICB0aGlzLmV4dFNlcnZpY2UudXBkYXRlRm9ybURhdGEodGhpcy5mb3JtRGF0YSk7XG4gICAgfSlcbiAgfVxuXG4gIF9hcGlEYXRhID0ge307XG4gIHNldCBhcGlEYXRhKGRhdGEpIHtcbiAgICB0aGlzLl9hcGlEYXRhID0gZGF0YTtcbiAgfVxuXG4gIHRvZ2dsZVR1bm5lbGVyRW5hYmxlZCgpIHtcbiAgICB0aGlzLmZvcm1EYXRhLmlzVHVubmVsZXJFbmFibGVkID0gIXRoaXMuZm9ybURhdGEuaXNUdW5uZWxlckVuYWJsZWQ7XG4gIH1cblxuICB0b2dnbGVOb1RyYXZlcnNhbCgpIHtcbiAgICB0aGlzLmZvcm1EYXRhLm5vVHJhdmVyc2FsID0gIXRoaXMuZm9ybURhdGEubm9UcmF2ZXJzYWw7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInByb2plY3RhYmxlLWZvcm0td3JhcHBlclwiXG4gICAgIChrZXl1cC5lbnRlcik9XCJzYXZlKCRldmVudClcIlxuICAgICAoa2V5dXAuZXNjYXBlKT1cImNsb3NlTW9kYWwoZmFsc2UpXCJcbj5cbiAgICA8bGliLWZvcm0taGVhZGVyXG4gICAgICAgIFtkYXRhXT1cImZvcm1EYXRhXCJcbiAgICAgICAgW3RpdGxlXT1cImZvcm1EYXRhLmlkID8gJ0VkaXQgRWRnZSBSb3V0ZXI6ICcgOiAnQ3JlYXRlIE5ldyBFZGdlIFJvdXRlcidcIlxuICAgICAgICBbbW9yZUFjdGlvbnNdPVwibW9yZUFjdGlvbnNcIlxuICAgICAgICAoYWN0aW9uUmVxdWVzdGVkKT1cImhlYWRlckFjdGlvblJlcXVlc3RlZCgkZXZlbnQpXCJcbiAgICAgICAgWyhmb3JtVmlldyldPVwiZm9ybVZpZXdcIlxuICAgID48L2xpYi1mb3JtLWhlYWRlcj5cbiAgICA8ZGl2IGNsYXNzPVwiZWRnZS1yb3V0ZXItZm9ybS1jb250YWluZXIgcHJvamVjdGFibGUtZm9ybS1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2plY3RhYmxlLWZvcm0tbWFpbi1jb2x1bW4gZm9ybS1ncm91cC1yb3dcIiAqbmdJZj1cImZvcm1WaWV3ID09PSAnc2ltcGxlJ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uIHRocmVlLWZpZnRoc1wiPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXIgW3RpdGxlXT1cIidFZGdlIFJvdXRlciBOYW1lJ1wiIFtsYWJlbF09XCInUkVRVUlSRUQnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTmFtZSB0aGlzIGVkZ2Ugcm91dGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntlcnJvcjogZXJyb3JzWyduYW1lJ119XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybURhdGEubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvZm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICNuYW1lRmllbGRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInU2VsZWN0IG9yIGNyZWF0ZSBFZGdlIFJvdXRlciBhdHRyaWJ1dGVzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09QVElPTkFMJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudFN0eWxlXT1cIid6LWluZGV4OiA5OTk5OTk5OSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIidBdHRyaWJ1dGVzIGFyZSB0YWdzIGFwcGxpZWQgdG8gYW4gcmVzb3VyY2UuIEFwcGx5IHRoZSBzYW1lIHRhZyB0byBvdGhlciBFZGdlIFJvdXRlcnMgdG8gZm9ybSBhIGdyb3VwIG9mIEVkZ2UgUm91dGVycy4nXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItdGFnLXNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZFJvbGVBdHRyaWJ1dGVzKV09XCJmb3JtRGF0YS5yb2xlQXR0cmlidXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F2YWlsYWJsZVJvbGVBdHRyaWJ1dGVzXT1cImVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidBZGQgYXR0cmlidXRlcyB0byBncm91cCBFZGdlIFJvdXRlcnMnXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbGliLXRhZy1zZWxlY3Rvcj5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1jb2x1bW4tMS1zbG90LTFdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC10b2dnbGUgWyh0b2dnbGVPbildPVwic2hvd01vcmVcIiBzdHlsZT1cIm1hcmdpbjogMHB4IDEwcHhcIj48L2xpYi1mb3JtLWZpZWxkLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd01vcmVcIiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInVFVOTkVMRVInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZTJdPVwiJ1RSQVZFUlNBTCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xheW91dF09XCIncm93J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtYWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlnLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlnLWNvbnRhaW5lciB0b2dnbGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctY29udGFpbmVyLWxhYmVsXCI+VFVOTkVMRVIgRU5BQkxFRDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVR1bm5lbGVyRW5hYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IG9uOiBmb3JtRGF0YS5pc1R1bm5lbGVyRW5hYmxlZCB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtoaWRkZW5dPVwiIWZvcm1EYXRhLmlzVHVubmVsZXJFbmFibGVkXCIgY2xhc3M9XCJvbi1sYWJlbFwiPllFUzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtoaWRkZW5dPVwiZm9ybURhdGEuaXNUdW5uZWxlckVuYWJsZWRcIiBjbGFzcz1cIm9mZi1sYWJlbFwiPk5PPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN3aXRjaFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlnLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlnLWNvbnRhaW5lciB0b2dnbGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctY29udGFpbmVyLWxhYmVsXCI+QUxMT1cgVFJBVkVSU0FMPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTm9UcmF2ZXJzYWwoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBvbjogIWZvcm1EYXRhLm5vVHJhdmVyc2FsIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2hpZGRlbl09XCJmb3JtRGF0YS5ub1RyYXZlcnNhbFwiIGNsYXNzPVwib24tbGFiZWxcIj5ZRVM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaGlkZGVuXT1cIiFmb3JtRGF0YS5ub1RyYXZlcnNhbFwiIGNsYXNzPVwib2ZmLWxhYmVsXCI+Tk88L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3dpdGNoXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidDdXN0b20gVGFncydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInT1BUSU9OQUwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtYWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWN1c3RvbS10YWdzIFsodGFncyldPVwiZm9ybURhdGEudGFnc1wiPjwvbGliLWN1c3RvbS10YWdzPlxuICAgICAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQXBwIERhdGEnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09QVElPTkFMJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWFkdmFuY2VkXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1qc29uLXZpZXc+PC9saWItanNvbi12aWV3PlxuICAgICAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uIHR3by1maWZ0aHNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1jb2x1bW4tMi1zbG90LTFdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzRW5yb2xtZW50VG9rZW4gJiYgIWV4dFNlcnZpY2VbJ2hpZGVaaXRpUmVnaXN0cmF0aW9uJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dIZWFkZXJdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1xci1jb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkZW50aXR5XT1cImZvcm1EYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBband0XT1cImZvcm1EYXRhLmVucm9sbG1lbnRKd3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b2tlbl09XCJmb3JtRGF0YS5lbnJvbGxtZW50VG9rZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtleHBpcmF0aW9uXT1cImZvcm1EYXRhLmVucm9sbG1lbnRFeHBpcmVzQXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb1JlZnJlc2gpPVwicmVmcmVzaEVkZ2VSb3V0ZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiJ3JvdXRlcidcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItcXItY29kZT5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZvcm1EYXRhLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQXNzb2NpYXRlZCBTZXJ2aWNlcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvdW50XT1cInN2Yy5hc3NvY2lhdGVkU2VydmljZXMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCInaGlkZS1vdmVyZmxvdydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIidQcmV2aWV3IGxpc3Qgb2YgYWxsIHNlcnZpY2VzIHRoYXQgdGhpcyBFZGdlIFJvdXRlciBpcyBhc3NvY2lhdGVkIHdpdGguJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXByZXZpZXctbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsaWNrYWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNMb2FkaW5nXT1cInNlcnZpY2VzTG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWxsTmFtZXNdPVwic3ZjLmFzc29jaWF0ZWRTZXJ2aWNlTmFtZXNcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItcHJldmlldy1saXN0PlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9ybURhdGEuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBc3NvY2lhdGVkIElkZW50aXRpZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb3VudF09XCJzdmMuYXNzb2NpYXRlZElkZW50aXRpZXMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCInUHJldmlldyBsaXN0IG9mIGFsbCBJZGVudGl0aWVzIHRoYXQgdGhpcyBFZGdlIFJvdXRlciBpcyBhc3NvY2lhdGVkIHdpdGguJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXByZXZpZXctbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsaWNrYWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNMb2FkaW5nXT1cImlkZW50aXRpZXNMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthbGxOYW1lc109XCJzdmMuYXNzb2NpYXRlZElkZW50aXR5TmFtZXNcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItcHJldmlldy1saXN0PlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQVBJIENhbGxzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09QVElPTkFMJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tZmllbGQtaW5wdXRcIiBbdmFsdWVdPVwiYXBpQ2FsbFVSTFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvcHkgY29weVwiIChjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQoYXBpQ2FsbFVSTClcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItanNvbi12aWV3ICpuZ0lmPVwiZm9ybURhdGFcIiBbKGRhdGEpXT1cImFwaURhdGFcIiBbcmVhZE9ubHldPVwidHJ1ZVwiIFtzaG93Q29weV09XCJ0cnVlXCI+PC9saWItanNvbi12aWV3PlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1jb2x1bW5cIiAqbmdJZj1cImZvcm1WaWV3ID09PSAncmF3J1wiPlxuICAgICAgICAgICAgPGxpYi1qc29uLXZpZXcgKm5nSWY9XCJmb3JtRGF0YVwiIFsoZGF0YSldPVwiZm9ybURhdGFcIj48L2xpYi1qc29uLXZpZXc+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48bGliLWxvYWRpbmctaW5kaWNhdG9yICpuZ0lmPVwiaXNMb2FkaW5nXCIgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIj48L2xpYi1sb2FkaW5nLWluZGljYXRvcj4iXX0=