projen 0.71.83 → 0.71.85

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 (137) hide show
  1. package/.jsii +26 -11
  2. package/docs/api/API.md +37 -37
  3. package/lib/awscdk/auto-discover.js +11 -11
  4. package/lib/awscdk/awscdk-app-java.js +3 -3
  5. package/lib/awscdk/awscdk-app-py.js +3 -3
  6. package/lib/awscdk/awscdk-app-ts.js +3 -3
  7. package/lib/awscdk/awscdk-construct.js +5 -5
  8. package/lib/awscdk/awscdk-deps-java.js +3 -3
  9. package/lib/awscdk/awscdk-deps-js.js +3 -3
  10. package/lib/awscdk/awscdk-deps-py.js +3 -3
  11. package/lib/awscdk/awscdk-deps.js +3 -3
  12. package/lib/awscdk/cdk-config.js +4 -4
  13. package/lib/awscdk/cdk-tasks.js +3 -3
  14. package/lib/awscdk/integration-test.js +3 -3
  15. package/lib/awscdk/lambda-extension.js +3 -3
  16. package/lib/awscdk/lambda-function.js +5 -5
  17. package/lib/build/build-workflow.js +3 -3
  18. package/lib/cdk/auto-discover-base.js +5 -5
  19. package/lib/cdk/construct-lib.js +3 -3
  20. package/lib/cdk/integration-test-base.js +3 -3
  21. package/lib/cdk/jsii-docgen.js +3 -3
  22. package/lib/cdk/jsii-project.js +4 -4
  23. package/lib/cdk8s/auto-discover.js +5 -5
  24. package/lib/cdk8s/cdk8s-app-py.js +3 -3
  25. package/lib/cdk8s/cdk8s-app-ts.js +3 -3
  26. package/lib/cdk8s/cdk8s-construct.js +3 -3
  27. package/lib/cdk8s/cdk8s-deps-py.js +3 -3
  28. package/lib/cdk8s/cdk8s-deps.js +3 -3
  29. package/lib/cdk8s/integration-test.js +3 -3
  30. package/lib/cdktf/cdktf-construct.js +3 -3
  31. package/lib/circleci/circleci.js +3 -3
  32. package/lib/circleci/model.js +5 -5
  33. package/lib/component.js +3 -3
  34. package/lib/dependencies.js +4 -4
  35. package/lib/dev-env.js +3 -3
  36. package/lib/docker-compose/docker-compose-port.js +2 -2
  37. package/lib/docker-compose/docker-compose-service.js +3 -3
  38. package/lib/docker-compose/docker-compose.js +3 -3
  39. package/lib/file.js +3 -3
  40. package/lib/gitattributes.js +3 -3
  41. package/lib/github/actions-provider.js +3 -3
  42. package/lib/github/auto-approve.js +3 -3
  43. package/lib/github/auto-merge.js +3 -3
  44. package/lib/github/dependabot.js +6 -6
  45. package/lib/github/github-credentials.js +3 -3
  46. package/lib/github/github-project.js +3 -3
  47. package/lib/github/github.js +3 -3
  48. package/lib/github/mergify.js +3 -3
  49. package/lib/github/pr-template.js +3 -3
  50. package/lib/github/pull-request-lint.js +3 -3
  51. package/lib/github/stale.js +3 -3
  52. package/lib/github/task-workflow.js +3 -3
  53. package/lib/github/workflow-actions.js +3 -3
  54. package/lib/github/workflow-jobs.js +3 -3
  55. package/lib/github/workflows-model.js +3 -3
  56. package/lib/github/workflows.js +3 -3
  57. package/lib/gitlab/configuration-model.js +11 -11
  58. package/lib/gitlab/configuration.js +3 -3
  59. package/lib/gitlab/gitlab-configuration.js +3 -3
  60. package/lib/gitlab/nested-configuration.js +3 -3
  61. package/lib/gitpod.js +7 -7
  62. package/lib/ignore-file.js +3 -3
  63. package/lib/ini.js +3 -3
  64. package/lib/java/java-project.js +3 -3
  65. package/lib/java/junit.js +3 -3
  66. package/lib/java/maven-compile.js +3 -3
  67. package/lib/java/maven-packaging.js +3 -3
  68. package/lib/java/maven-sample.js +3 -3
  69. package/lib/java/pom.js +3 -3
  70. package/lib/java/projenrc.js +3 -3
  71. package/lib/javascript/bundler.js +3 -3
  72. package/lib/javascript/eslint.js +3 -3
  73. package/lib/javascript/jest.js +10 -10
  74. package/lib/javascript/node-package.js +6 -6
  75. package/lib/javascript/node-project.d.ts +1 -1
  76. package/lib/javascript/node-project.js +4 -4
  77. package/lib/javascript/npm-config.js +3 -3
  78. package/lib/javascript/prettier.js +10 -10
  79. package/lib/javascript/projenrc.js +3 -3
  80. package/lib/javascript/typescript-config.d.ts +1 -1
  81. package/lib/javascript/typescript-config.js +8 -8
  82. package/lib/javascript/upgrade-dependencies.js +5 -5
  83. package/lib/json-patch.js +3 -3
  84. package/lib/json.js +3 -3
  85. package/lib/license.js +3 -3
  86. package/lib/logger.js +4 -4
  87. package/lib/makefile.js +3 -3
  88. package/lib/object-file.js +3 -3
  89. package/lib/option-hints.js +2 -2
  90. package/lib/project-build.js +3 -3
  91. package/lib/project.js +4 -4
  92. package/lib/projects.js +3 -3
  93. package/lib/projenrc-json.js +5 -5
  94. package/lib/projenrc.js +3 -3
  95. package/lib/python/pip.js +3 -3
  96. package/lib/python/poetry.js +5 -5
  97. package/lib/python/projenrc.js +3 -3
  98. package/lib/python/pytest-sample.js +3 -3
  99. package/lib/python/pytest.js +3 -3
  100. package/lib/python/python-project.js +3 -3
  101. package/lib/python/python-sample.js +3 -3
  102. package/lib/python/requirements-file.js +3 -3
  103. package/lib/python/setuppy.js +3 -3
  104. package/lib/python/setuptools.js +3 -3
  105. package/lib/python/venv.js +3 -3
  106. package/lib/readme.js +3 -3
  107. package/lib/release/publisher.js +4 -4
  108. package/lib/release/release-trigger.js +3 -3
  109. package/lib/release/release.js +3 -3
  110. package/lib/renovatebot.js +4 -4
  111. package/lib/sample-file.js +5 -5
  112. package/lib/semver.js +3 -3
  113. package/lib/source-code.js +3 -3
  114. package/lib/task-runtime.js +3 -3
  115. package/lib/task.js +3 -3
  116. package/lib/tasks.js +3 -3
  117. package/lib/testing.js +3 -3
  118. package/lib/textfile.js +3 -3
  119. package/lib/toml.js +3 -3
  120. package/lib/typescript/projenrc-ts.js +3 -3
  121. package/lib/typescript/projenrc.js +3 -3
  122. package/lib/typescript/typescript-typedoc.js +3 -3
  123. package/lib/typescript/typescript.js +7 -7
  124. package/lib/util/semver.js +2 -2
  125. package/lib/version.js +3 -3
  126. package/lib/vscode/devcontainer.js +3 -3
  127. package/lib/vscode/extensions.js +3 -3
  128. package/lib/vscode/launch-config.js +5 -5
  129. package/lib/vscode/settings.js +3 -3
  130. package/lib/vscode/vscode.js +3 -3
  131. package/lib/web/next.js +7 -7
  132. package/lib/web/postcss.js +3 -3
  133. package/lib/web/react.js +9 -9
  134. package/lib/web/tailwind.js +3 -3
  135. package/lib/xmlfile.js +3 -3
  136. package/lib/yaml.js +3 -3
  137. package/package.json +1 -1
@@ -16,7 +16,7 @@ var CachePolicy;
16
16
  CachePolicy["PUSH"] = "push";
17
17
  /** The job downloads the cache when the job starts, and uploads changes to the cache when the job ends. */
18
18
  CachePolicy["PULL_PUSH"] = "pull-push";
19
- })(CachePolicy = exports.CachePolicy || (exports.CachePolicy = {}));
19
+ })(CachePolicy || (exports.CachePolicy = CachePolicy = {}));
20
20
  /**
21
21
  * Configure when artifacts are uploaded depended on job status.
22
22
  * @see https://docs.gitlab.com/ee/ci/yaml/#cachewhen
@@ -29,7 +29,7 @@ var CacheWhen;
29
29
  CacheWhen["ON_FAILURE"] = "on_failure";
30
30
  /** Upload artifacts only when the job succeeds (this is the default). */
31
31
  CacheWhen["ON_SUCCESS"] = "on_success";
32
- })(CacheWhen = exports.CacheWhen || (exports.CacheWhen = {}));
32
+ })(CacheWhen || (exports.CacheWhen = CacheWhen = {}));
33
33
  /**
34
34
  * Describes the conditions for when to run the job. Defaults to 'on_success'.
35
35
  * @see https://docs.gitlab.com/ee/ci/yaml/#when
@@ -42,7 +42,7 @@ var JobWhen;
42
42
  JobWhen["NEVER"] = "never";
43
43
  JobWhen["ON_FAILURE"] = "on_failure";
44
44
  JobWhen["ON_SUCCESS"] = "on_success";
45
- })(JobWhen = exports.JobWhen || (exports.JobWhen = {}));
45
+ })(JobWhen || (exports.JobWhen = JobWhen = {}));
46
46
  /**
47
47
  * Specifies what this job will do. 'start' (default) indicates the job will start the
48
48
  * deployment. 'prepare' indicates this will not affect the deployment. 'stop' indicates
@@ -53,7 +53,7 @@ var Action;
53
53
  Action["PREPARE"] = "prepare";
54
54
  Action["START"] = "start";
55
55
  Action["STOP"] = "stop";
56
- })(Action = exports.Action || (exports.Action = {}));
56
+ })(Action || (exports.Action = Action = {}));
57
57
  /**
58
58
  * Explicitly specifies the tier of the deployment environment if non-standard environment
59
59
  * name is used.
@@ -65,14 +65,14 @@ var DeploymentTier;
65
65
  DeploymentTier["PRODUCTION"] = "production";
66
66
  DeploymentTier["STAGING"] = "staging";
67
67
  DeploymentTier["TESTING"] = "testing";
68
- })(DeploymentTier = exports.DeploymentTier || (exports.DeploymentTier = {}));
68
+ })(DeploymentTier || (exports.DeploymentTier = DeploymentTier = {}));
69
69
  /**
70
70
  * Filter job based on if Kubernetes integration is active.
71
71
  */
72
72
  var KubernetesEnum;
73
73
  (function (KubernetesEnum) {
74
74
  KubernetesEnum["ACTIVE"] = "active";
75
- })(KubernetesEnum = exports.KubernetesEnum || (exports.KubernetesEnum = {}));
75
+ })(KubernetesEnum || (exports.KubernetesEnum = KubernetesEnum = {}));
76
76
  var DefaultElement;
77
77
  (function (DefaultElement) {
78
78
  DefaultElement["AFTER_SCRIPT"] = "after_script";
@@ -85,7 +85,7 @@ var DefaultElement;
85
85
  DefaultElement["SERVICES"] = "services";
86
86
  DefaultElement["TAGS"] = "tags";
87
87
  DefaultElement["TIMEOUT"] = "timeout";
88
- })(DefaultElement = exports.DefaultElement || (exports.DefaultElement = {}));
88
+ })(DefaultElement || (exports.DefaultElement = DefaultElement = {}));
89
89
  /**
90
90
  * The content kind of what users can download via url.
91
91
  */
@@ -95,7 +95,7 @@ var LinkType;
95
95
  LinkType["OTHER"] = "other";
96
96
  LinkType["PACKAGE"] = "package";
97
97
  LinkType["RUNBOOK"] = "runbook";
98
- })(LinkType = exports.LinkType || (exports.LinkType = {}));
98
+ })(LinkType || (exports.LinkType = LinkType = {}));
99
99
  /**
100
100
  * You can mirror the pipeline status from the triggered pipeline to the source bridge job
101
101
  * by using strategy: depend
@@ -104,7 +104,7 @@ var LinkType;
104
104
  var Strategy;
105
105
  (function (Strategy) {
106
106
  Strategy["DEPEND"] = "depend";
107
- })(Strategy = exports.Strategy || (exports.Strategy = {}));
107
+ })(Strategy || (exports.Strategy = Strategy = {}));
108
108
  /**
109
109
  * Describes the conditions for when to run the job. Defaults to 'on_success'.
110
110
  * The value can only be 'always' or 'never' when used with workflow.
@@ -114,5 +114,5 @@ var WorkflowWhen;
114
114
  (function (WorkflowWhen) {
115
115
  WorkflowWhen["ALWAYS"] = "always";
116
116
  WorkflowWhen["NEVER"] = "never";
117
- })(WorkflowWhen = exports.WorkflowWhen || (exports.WorkflowWhen = {}));
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9naXRsYWIvY29uZmlndXJhdGlvbi1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMkNBQTJDO0FBQzNDLDhHQUE4RztBQUM5RyxpRUFBaUU7OztBQWtDakU7OztHQUdHO0FBQ0gsSUFBWSxXQU9YO0FBUEQsV0FBWSxXQUFXO0lBQ3JCLG1HQUFtRztJQUNuRyw0QkFBYSxDQUFBO0lBQ2IsbUdBQW1HO0lBQ25HLDRCQUFhLENBQUE7SUFDYiwyR0FBMkc7SUFDM0csc0NBQXVCLENBQUE7QUFDekIsQ0FBQyxFQVBXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBT3RCO0FBRUQ7OztHQUdHO0FBQ0gsSUFBWSxTQU9YO0FBUEQsV0FBWSxTQUFTO0lBQ25CLGlEQUFpRDtJQUNqRCw4QkFBaUIsQ0FBQTtJQUNqQixnREFBZ0Q7SUFDaEQsc0NBQXlCLENBQUE7SUFDekIseUVBQXlFO0lBQ3pFLHNDQUF5QixDQUFBO0FBQzNCLENBQUMsRUFQVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQU9wQjtBQXFNRDs7O0dBR0c7QUFDSCxJQUFZLE9BT1g7QUFQRCxXQUFZLE9BQU87SUFDakIsNEJBQWlCLENBQUE7SUFDakIsOEJBQW1CLENBQUE7SUFDbkIsNEJBQWlCLENBQUE7SUFDakIsMEJBQWUsQ0FBQTtJQUNmLG9DQUF5QixDQUFBO0lBQ3pCLG9DQUF5QixDQUFBO0FBQzNCLENBQUMsRUFQVyxPQUFPLEdBQVAsZUFBTyxLQUFQLGVBQU8sUUFPbEI7QUF5RkQ7Ozs7R0FJRztBQUNILElBQVksTUFJWDtBQUpELFdBQVksTUFBTTtJQUNoQiw2QkFBbUIsQ0FBQTtJQUNuQix5QkFBZSxDQUFBO0lBQ2YsdUJBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxNQUFNLEdBQU4sY0FBTSxLQUFOLGNBQU0sUUFJakI7QUFFRDs7O0dBR0c7QUFDSCxJQUFZLGNBTVg7QUFORCxXQUFZLGNBQWM7SUFDeEIsNkNBQTJCLENBQUE7SUFDM0IsaUNBQWUsQ0FBQTtJQUNmLDJDQUF5QixDQUFBO0lBQ3pCLHFDQUFtQixDQUFBO0lBQ25CLHFDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFOVyxjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQU16QjtBQXlCRDs7R0FFRztBQUNILElBQVksY0FFWDtBQUZELFdBQVksY0FBYztJQUN4QixtQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBRlcsY0FBYyxHQUFkLHNCQUFjLEtBQWQsc0JBQWMsUUFFekI7QUFlRCxJQUFZLGNBV1g7QUFYRCxXQUFZLGNBQWM7SUFDeEIsK0NBQTZCLENBQUE7SUFDN0IseUNBQXVCLENBQUE7SUFDdkIsaURBQStCLENBQUE7SUFDL0IsaUNBQWUsQ0FBQTtJQUNmLGlDQUFlLENBQUE7SUFDZixpREFBK0IsQ0FBQTtJQUMvQixpQ0FBZSxDQUFBO0lBQ2YsdUNBQXFCLENBQUE7SUFDckIsK0JBQWEsQ0FBQTtJQUNiLHFDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFYVyxjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQVd6QjtBQStERDs7R0FFRztBQUNILElBQVksUUFLWDtBQUxELFdBQVksUUFBUTtJQUNsQiwyQkFBZSxDQUFBO0lBQ2YsMkJBQWUsQ0FBQTtJQUNmLCtCQUFtQixDQUFBO0lBQ25CLCtCQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFMVyxRQUFRLEdBQVIsZ0JBQVEsS0FBUixnQkFBUSxRQUtuQjtBQXVFRDs7OztHQUlHO0FBQ0gsSUFBWSxRQUVYO0FBRkQsV0FBWSxRQUFRO0lBQ2xCLDZCQUFpQixDQUFBO0FBQ25CLENBQUMsRUFGVyxRQUFRLEdBQVIsZ0JBQVEsS0FBUixnQkFBUSxRQUVuQjtBQXVDRDs7OztHQUlHO0FBQ0gsSUFBWSxZQUdYO0FBSEQsV0FBWSxZQUFZO0lBQ3RCLGlDQUFpQixDQUFBO0lBQ2pCLCtCQUFlLENBQUE7QUFDakIsQ0FBQyxFQUhXLFlBQVksR0FBWixvQkFBWSxLQUFaLG9CQUFZLFFBR3ZCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sL1xuLy8gU2NoZW1hIGZyb206IGh0dHBzOi8vZ2l0bGFiLmNvbS9naXRsYWItb3JnL2dpdGxhYi8tL3Jhdy9tYXN0ZXIvYXBwL2Fzc2V0cy9qYXZhc2NyaXB0cy9lZGl0b3Ivc2NoZW1hL2NpLmpzb25cbi8vIEluaXRpYWwgVHlwZVNjcmlwdCBJbnRlcmZhY2VzIGZyb206IGh0dHBzOi8vYXBwLnF1aWNrdHlwZS5pby8jXG5cbi8qKlxuICogQ2FjaGUgRGVmaW5pdGlvbi5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jY2FjaGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYWNoZSB7XG4gIC8qKiBEZWZpbmVzIHdoaWNoIGZpbGVzIG9yIGRpcmVjdG9yaWVzIHRvIGNhY2hlLiAqL1xuICByZWFkb25seSBwYXRocz86IHN0cmluZ1tdO1xuXG4gIC8qKiBVc2VkIHRoZSB0byBnaXZlIGVhY2ggY2FjaGUgYSB1bmlxdWUgaWRlbnRpZnlpbmcga2V5LiBBbGwgam9icyB0aGF0IHVzZSB0aGUgc2FtZSBjYWNoZSBrZXkgdXNlIHRoZSBzYW1lIGNhY2hlLiAqL1xuICByZWFkb25seSBrZXk/OiBzdHJpbmcgfCBDYWNoZUtleUZpbGVzO1xuXG4gIC8qKiBJZiBzZXQgdG8gdHJ1ZSBhbGwgZmlsZXMgdGhhdCBhcmUgdW50cmFja2VkIGluIHlvdXIgR2l0IHJlcG9zaXRvcnkgd2lsbCBiZSBjYWNoZWQuICovXG4gIHJlYWRvbmx5IHVudHJhY2tlZD86IGJvb2xlYW47XG5cbiAgLyoqIERlZmluZXMgdGhlIHVwbG9hZCBhbmQgZG93bmxvYWQgYmVoYXZpb3VyIG9mIHRoZSBjYWNoZS4gKi9cbiAgcmVhZG9ubHkgcG9saWN5PzogQ2FjaGVQb2xpY3k7XG5cbiAgLyoqIERlZmluZXMgd2hlbiB0byBzYXZlIHRoZSBjYWNoZSwgYmFzZWQgb24gdGhlIHN0YXR1cyBvZiB0aGUgam9iIChEZWZhdWx0OiBKb2IgU3VjY2VzcykuICovXG4gIHJlYWRvbmx5IHdoZW4/OiBDYWNoZVdoZW47XG59XG5cbi8qKlxuICogVXNlIHRoaXMgY29uc3RydWN0IHRvIGdlbmVyYXRlIGEgbmV3IGtleSB3aGVuIG9uZSBvciB0d28gc3BlY2lmaWMgZmlsZXMgY2hhbmdlLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNjYWNoZWtleWZpbGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVLZXlGaWxlcyB7XG4gIC8qKiBUaGUgZmlsZXMgdGhhdCBhcmUgY2hlY2tlZCBhZ2FpbnN0LiBJZiB0aGUgU0hBIGNoZWNrc3VtIGNoYW5nZXMsIHRoZSBjYWNoZSBiZWNvbWVzIGludmFsaWQuICovXG4gIHJlYWRvbmx5IGZpbGVzOiBzdHJpbmdbXTtcbiAgLyoqIEFkZHMgYSBjdXN0b20gcHJlZml4IHRvIHRoZSBjaGVja3N1bXMgY29tcHV0ZWQuICovXG4gIHJlYWRvbmx5IHByZWZpeD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmUgdGhlIHVwbG9hZCBhbmQgZG93bmxvYWQgYmVoYXZpb3VyIG9mIGEgY2FjaGUuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI2NhY2hlcG9saWN5XG4gKi9cbmV4cG9ydCBlbnVtIENhY2hlUG9saWN5IHtcbiAgLyoqIE9ubHkgZG93bmxvYWQgdGhlIGNhY2hlIHdoZW4gdGhlIGpvYiBzdGFydHMsIGJ1dCBuZXZlciB1cGxvYWQgY2hhbmdlcyB3aGVuIHRoZSBqb2IgZmluaXNoZXMuICovXG4gIFBVTEwgPSBcInB1bGxcIixcbiAgLyoqIE9ubHkgdXBsb2FkIGEgY2FjaGUgd2hlbiB0aGUgam9iIGZpbmlzaGVzLCBidXQgbmV2ZXIgZG93bmxvYWQgdGhlIGNhY2hlIHdoZW4gdGhlIGpvYiBzdGFydHMuICovXG4gIFBVU0ggPSBcInB1c2hcIixcbiAgLyoqIFRoZSBqb2IgZG93bmxvYWRzIHRoZSBjYWNoZSB3aGVuIHRoZSBqb2Igc3RhcnRzLCBhbmQgdXBsb2FkcyBjaGFuZ2VzIHRvIHRoZSBjYWNoZSB3aGVuIHRoZSBqb2IgZW5kcy4gKi9cbiAgUFVMTF9QVVNIID0gXCJwdWxsLXB1c2hcIixcbn1cblxuLyoqXG4gKiBDb25maWd1cmUgd2hlbiBhcnRpZmFjdHMgYXJlIHVwbG9hZGVkIGRlcGVuZGVkIG9uIGpvYiBzdGF0dXMuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI2NhY2hld2hlblxuICovXG5leHBvcnQgZW51bSBDYWNoZVdoZW4ge1xuICAvKiogVXBsb2FkIGFydGlmYWN0cyByZWdhcmRsZXNzIG9mIGpvYiBzdGF0dXMuICovXG4gIEFMV0FZUyA9IFwiYWx3YXlzXCIsXG4gIC8qKiBVcGxvYWQgYXJ0aWZhY3RzIG9ubHkgd2hlbiB0aGUgam9iIGZhaWxzLiAqL1xuICBPTl9GQUlMVVJFID0gXCJvbl9mYWlsdXJlXCIsXG4gIC8qKiBVcGxvYWQgYXJ0aWZhY3RzIG9ubHkgd2hlbiB0aGUgam9iIHN1Y2NlZWRzICh0aGlzIGlzIHRoZSBkZWZhdWx0KS4gKi9cbiAgT05fU1VDQ0VTUyA9IFwib25fc3VjY2Vzc1wiLFxufVxuXG4vKipcbiAqIERlZmF1bHQgc2V0dGluZ3MgZm9yIHRoZSBDSSBDb25maWd1cmF0aW9uLiBKb2JzIHRoYXQgZG8gbm90IGRlZmluZSBvbmUgb3IgbW9yZSBvZiB0aGUgbGlzdGVkIGtleXdvcmRzIHVzZSB0aGUgdmFsdWUgZGVmaW5lZCBpbiB0aGUgZGVmYXVsdCBzZWN0aW9uLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNkZWZhdWx0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdCB7XG4gIC8qIERlZmluZXMgc2NyaXB0cyB0aGF0IHNob3VsZCBydW4gKmFmdGVyKiBhbGwgam9icy4gQ2FuIGJlIG92ZXJyaWRlbiBieSB0aGUgam9iIGxldmVsIGBhZnRlclNjcmlwdC4gKi9cbiAgcmVhZG9ubHkgYWZ0ZXJTY3JpcHQ/OiBzdHJpbmdbXTtcbiAgLyogTGlzdCBvZiBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdGhhdCBzaG91bGQgYmUgYXR0YWNoZWQgdG8gdGhlIGpvYiBpZiBpdCBzdWNjZWVkcy4gQXJ0aWZhY3RzIGFyZSBzZW50IHRvIEdpdGxhYiB3aGVyZSB0aGV5IGNhbiBiZSBkb3dubG9hZGVkLiAqL1xuICByZWFkb25seSBhcnRpZmFjdHM/OiBBcnRpZmFjdHM7XG4gIC8qIERlZmluZXMgc2NyaXB0cyB0aGF0IHNob3VsZCBydW4gKmJlZm9yZSogYWxsIGpvYnMuIENhbiBiZSBvdmVycmlkZW4gYnkgdGhlIGpvYiBsZXZlbCBgYWZ0ZXJTY3JpcHRgLiAqL1xuICByZWFkb25seSBiZWZvcmVTY3JpcHQ/OiBzdHJpbmdbXTtcbiAgLyogQSBsaXN0IG9mIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0byBjYWNoZSBiZXR3ZWVuIGpvYnMuIFlvdSBjYW4gb25seSB1c2UgcGF0aHMgdGhhdCBhcmUgaW4gdGhlIGxvY2FsIHdvcmtpbmcgY29weS4gKi9cbiAgcmVhZG9ubHkgY2FjaGU/OiBDYWNoZTtcbiAgLyogU3BlY2lmaWVzIHRoZSBkZWZhdWx0IGRvY2tlciBpbWFnZSB0byB1c2UgZ2xvYmFsbHkgZm9yIGFsbCBqb2JzLiAqL1xuICByZWFkb25seSBpbWFnZT86IEltYWdlO1xuICAvKiBJZiBhIGpvYiBzaG91bGQgYmUgY2FuY2VsZWQgd2hlbiBhIG5ld2VyIHBpcGVsaW5lIHN0YXJ0cyBiZWZvcmUgdGhlIGpvYiBjb21wbGV0ZXMgKERlZmF1bHQ6IGZhbHNlKS4qL1xuICByZWFkb25seSBpbnRlcnJ1cHRpYmxlPzogYm9vbGVhbjtcbiAgLyogSG93IG1hbnkgdGltZXMgYSBqb2IgaXMgcmV0cmllZCBpZiBpdCBmYWlscy4gSWYgbm90IGRlZmluZWQsIGRlZmF1bHRzIHRvIDAgYW5kIGpvYnMgZG8gbm90IHJldHJ5LiAqL1xuICByZWFkb25seSByZXRyeT86IFJldHJ5O1xuICAvKiBBZGRpdGlvbmFsIERvY2tlciBpbWFnZXMgdG8gcnVuIHNjcmlwdHMgaW4uIFRoZSBzZXJ2aWNlIGltYWdlIGlzIGxpbmtlZCB0byB0aGUgaW1hZ2Ugc3BlY2lmaWVkIGluIHRoZSAgaW1hZ2UgcGFyYW1ldGVyLiAqL1xuICByZWFkb25seSBzZXJ2aWNlcz86IFNlcnZpY2VbXTtcbiAgLyogVXNlZCB0byBzZWxlY3QgYSBzcGVjaWZpYyBydW5uZXIgZnJvbSB0aGUgbGlzdCBvZiBhbGwgcnVubmVycyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHRoZSBwcm9qZWN0LiAqL1xuICByZWFkb25seSB0YWdzPzogc3RyaW5nW107XG4gIC8qIEEgZGVmYXVsdCB0aW1lb3V0IGpvYiB3cml0dGVuIGluIG5hdHVyYWwgbGFuZ3VhZ2UgKEV4LiBvbmUgaG91ciwgMzYwMCBzZWNvbmRzLCA2MCBtaW51dGVzKS4gKi9cbiAgcmVhZG9ubHkgdGltZW91dD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBVc2VkIHRvIHNwZWNpZnkgYSBsaXN0IG9mIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0aGF0IHNob3VsZCBiZSBhdHRhY2hlZCB0byB0aGUgam9iIGlmIGl0XG4gKiBzdWNjZWVkcy4gQXJ0aWZhY3RzIGFyZSBzZW50IHRvIEdpdGxhYiB3aGVyZSB0aGV5IGNhbiBiZSBkb3dubG9hZGVkLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNhcnRpZmFjdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcnRpZmFjdHMge1xuICAvKiogQSBsaXN0IG9mIHBhdGhzIHRvIGZpbGVzL2ZvbGRlcnMgdGhhdCBzaG91bGQgYmUgZXhjbHVkZWQgaW4gdGhlIGFydGlmYWN0LiAqL1xuICByZWFkb25seSBleGNsdWRlPzogc3RyaW5nW107XG4gIC8qKiBIb3cgbG9uZyBhcnRpZmFjdHMgc2hvdWxkIGJlIGtlcHQuIFRoZXkgYXJlIHNhdmVkIDMwIGRheXMgYnkgZGVmYXVsdC4gQXJ0aWZhY3RzIHRoYXQgaGF2ZSBleHBpcmVkIGFyZSByZW1vdmVkIHBlcmlvZGljYWxseSB2aWEgY3JvbiBqb2IuIFN1cHBvcnRzIGEgd2lkZSB2YXJpZXR5IG9mIGZvcm1hdHMsIGUuZy4gJzEgd2VlaycsICczIG1pbnMgNCBzZWMnLCAnMiBocnMgMjAgbWluJywgJzJoMjBtaW4nLCAnNiBtb3MgMSBkYXknLCAnNDcgeXJzIDYgbW9zIGFuZCA0ZCcsICczIHdlZWtzIGFuZCAyIGRheXMnLiAqL1xuICByZWFkb25seSBleHBpcmVJbj86IHN0cmluZztcbiAgLyoqIENhbiBiZSB1c2VkIHRvIGV4cG9zZSBqb2IgYXJ0aWZhY3RzIGluIHRoZSBtZXJnZSByZXF1ZXN0IFVJLiBHaXRMYWIgd2lsbCBhZGQgYSBsaW5rIDxleHBvc2VfYXM+IHRvIHRoZSByZWxldmFudCBtZXJnZSByZXF1ZXN0IHRoYXQgcG9pbnRzIHRvIHRoZSBhcnRpZmFjdC4gKi9cbiAgcmVhZG9ubHkgZXhwb3NlQXM/OiBzdHJpbmc7XG4gIC8qKiBOYW1lIGZvciB0aGUgYXJjaGl2ZSBjcmVhdGVkIG9uIGpvYiBzdWNjZXNzLiBDYW4gdXNlIHZhcmlhYmxlcyBpbiB0aGUgbmFtZSwgZS5nLiAnJENJX0pPQl9OQU1FJyAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICAvKiogQSBsaXN0IG9mIHBhdGhzIHRvIGZpbGVzL2ZvbGRlcnMgdGhhdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIGFydGlmYWN0LiAqL1xuICByZWFkb25seSBwYXRocz86IHN0cmluZ1tdO1xuICAvKiogUmVwb3J0cyB3aWxsIGJlIHVwbG9hZGVkIGFzIGFydGlmYWN0cywgYW5kIG9mdGVuIGRpc3BsYXllZCBpbiB0aGUgR2l0bGFiIFVJLCBzdWNoIGFzIGluIE1lcmdlIFJlcXVlc3RzLiovXG4gIHJlYWRvbmx5IHJlcG9ydHM/OiBSZXBvcnRzO1xuICAvKiogV2hldGhlciB0byBhZGQgYWxsIHVudHJhY2tlZCBmaWxlcyAoYWxvbmcgd2l0aCAnYXJ0aWZhY3RzLnBhdGhzJykgdG8gdGhlIGFydGlmYWN0LiovXG4gIHJlYWRvbmx5IHVudHJhY2tlZD86IGJvb2xlYW47XG4gIC8qKiBDb25maWd1cmUgd2hlbiBhcnRpZmFjdHMgYXJlIHVwbG9hZGVkIGRlcGVuZGVkIG9uIGpvYiBzdGF0dXMuKi9cbiAgcmVhZG9ubHkgd2hlbj86IENhY2hlV2hlbjtcbn1cblxuLyoqXG4gKiBDb2RlIGNvdmVyYWdlIHJlcG9ydCBpbnRlcmZhY2VcbiAqIEBsaW5rIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvYXJ0aWZhY3RzX3JlcG9ydHMuaHRtbCNhcnRpZmFjdHNyZXBvcnRzY292ZXJhZ2VfcmVwb3J0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ292ZXJhZ2VSZXBvcnQge1xuICByZWFkb25seSBjb3ZlcmFnZUZvcm1hdDogc3RyaW5nO1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwb3J0cyB3aWxsIGJlIHVwbG9hZGVkIGFzIGFydGlmYWN0cywgYW5kIG9mdGVuIGRpc3BsYXllZCBpbiB0aGUgR2l0bGFiIFVJLCBzdWNoIGFzIGluXG4gKiBNZXJnZSBSZXF1ZXN0cy5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jYXJ0aWZhY3RzcmVwb3J0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydHMge1xuICAvKiogUGF0aCBmb3IgZmlsZShzKSB0aGF0IHNob3VsZCBiZSBwYXJzZWQgYXMgQ29iZXJ0dXJhIFhNTCBjb3ZlcmFnZSByZXBvcnRcbiAgICogQGRlcHJlY2F0ZWQgcGVyIHtAbGluayBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS91cGRhdGUvZGVwcmVjYXRpb25zLmh0bWwjYXJ0aWZhY3RzcmVwb3J0c2NvYmVydHVyYS1rZXl3b3JkfSB1c2Uge0BsaW5rIGNvdmVyYWdlUmVwb3J0fSBpbnN0ZWFkXG4gICAqL1xuICByZWFkb25seSBjb2JlcnR1cmE/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggY29kZSBxdWFsaXR5IHJlcG9ydChzKSAoc3VjaCBhcyBDb2RlIENsaW1hdGUpLiovXG4gIHJlYWRvbmx5IGNvZGVxdWFsaXR5Pzogc3RyaW5nW107XG4gIC8qKiBQYXRoIHRvIGZpbGUgb3IgbGlzdCBvZiBmaWxlcyB3aXRoIENvbnRhaW5lciBzY2FubmluZyB2dWxuZXJhYmlsaXRpZXMgcmVwb3J0KHMpLiovXG4gIHJlYWRvbmx5IGNvbnRhaW5lclNjYW5uaW5nPzogc3RyaW5nW107XG4gIC8qKiBDb2RlIGNvdmVyYWdlIHJlcG9ydCBpbmZvcm1hdGlvbiAqL1xuICByZWFkb25seSBjb3ZlcmFnZVJlcG9ydD86IENvdmVyYWdlUmVwb3J0O1xuICAvKiogUGF0aCB0byBmaWxlIG9yIGxpc3Qgb2YgZmlsZXMgd2l0aCBEQVNUIHZ1bG5lcmFiaWxpdGllcyByZXBvcnQocykuKi9cbiAgcmVhZG9ubHkgZGFzdD86IHN0cmluZ1tdO1xuICAvKiogUGF0aCB0byBmaWxlIG9yIGxpc3Qgb2YgZmlsZXMgd2l0aCBEZXBlbmRlbmN5IHNjYW5uaW5nIHZ1bG5lcmFiaWxpdGllcyByZXBvcnQocykuKi9cbiAgcmVhZG9ubHkgZGVwZW5kZW5jeVNjYW5uaW5nPzogc3RyaW5nW107XG4gIC8qKiBQYXRoIHRvIGZpbGUgb3IgbGlzdCBvZiBmaWxlcyBjb250YWluaW5nIHJ1bnRpbWUtY3JlYXRlZCB2YXJpYWJsZXMgZm9yIHRoaXMgam9iLiovXG4gIHJlYWRvbmx5IGRvdGVudj86IHN0cmluZ1tdO1xuICAvKiogUGF0aCBmb3IgZmlsZShzKSB0aGF0IHNob3VsZCBiZSBwYXJzZWQgYXMgSlVuaXQgWE1MIHJlc3VsdCovXG4gIHJlYWRvbmx5IGp1bml0Pzogc3RyaW5nW107XG4gIC8qKiBEZXByZWNhdGVkIGluIDEyLjg6IFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggbGljZW5zZSByZXBvcnQocykuKi9cbiAgcmVhZG9ubHkgbGljZW5zZU1hbmFnZW1lbnQ/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggbGljZW5zZSByZXBvcnQocykuKi9cbiAgcmVhZG9ubHkgbGljZW5zZVNjYW5uaW5nPzogc3RyaW5nW107XG4gIC8qKiBQYXRoIHRvIGZpbGUgb3IgbGlzdCBvZiBmaWxlcyBjb250YWluaW5nIGNvZGUgaW50ZWxsaWdlbmNlIChMYW5ndWFnZSBTZXJ2ZXIgSW5kZXggRm9ybWF0KS4qL1xuICByZWFkb25seSBsc2lmPzogc3RyaW5nW107XG4gIC8qKiBQYXRoIHRvIGZpbGUgb3IgbGlzdCBvZiBmaWxlcyB3aXRoIGN1c3RvbSBtZXRyaWNzIHJlcG9ydChzKS4qL1xuICByZWFkb25seSBtZXRyaWNzPzogc3RyaW5nW107XG4gIC8qKiBQYXRoIHRvIGZpbGUgb3IgbGlzdCBvZiBmaWxlcyB3aXRoIHBlcmZvcm1hbmNlIG1ldHJpY3MgcmVwb3J0KHMpLiovXG4gIHJlYWRvbmx5IHBlcmZvcm1hbmNlPzogc3RyaW5nW107XG4gIC8qKiBQYXRoIHRvIGZpbGUgb3IgbGlzdCBvZiBmaWxlcyB3aXRoIHJlcXVpcmVtZW50cyByZXBvcnQocykuKi9cbiAgcmVhZG9ubHkgcmVxdWlyZW1lbnRzPzogc3RyaW5nW107XG4gIC8qKiBQYXRoIHRvIGZpbGUgb3IgbGlzdCBvZiBmaWxlcyB3aXRoIFNBU1QgdnVsbmVyYWJpbGl0aWVzIHJlcG9ydChzKS4qL1xuICByZWFkb25seSBzYXN0Pzogc3RyaW5nW107XG4gIC8qKiBQYXRoIHRvIGZpbGUgb3IgbGlzdCBvZiBmaWxlcyB3aXRoIHNlY3JldCBkZXRlY3Rpb24gcmVwb3J0KHMpLiovXG4gIHJlYWRvbmx5IHNlY3JldERldGVjdGlvbj86IHN0cmluZ1tdO1xuICAvKiogUGF0aCB0byBmaWxlIG9yIGxpc3Qgb2YgZmlsZXMgd2l0aCB0ZXJyYWZvcm0gcGxhbihzKS4qL1xuICByZWFkb25seSB0ZXJyYWZvcm0/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGRvY2tlciBpbWFnZSB0byB1c2UgZm9yIHRoZSBqb2Igb3IgZ2xvYmFsbHkgZm9yIGFsbCBqb2JzLiBKb2IgY29uZmlndXJhdGlvblxuICogdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGdsb2JhbCBzZXR0aW5nLiBSZXF1aXJlcyBhIGNlcnRhaW4ga2luZCBvZiBHaXRsYWIgcnVubmVyIGV4ZWN1dG9yLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNpbWFnZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlIHtcbiAgLyoqIENvbW1hbmQgb3Igc2NyaXB0IHRoYXQgc2hvdWxkIGJlIGV4ZWN1dGVkIGFzIHRoZSBjb250YWluZXIncyBlbnRyeXBvaW50LiBJdCB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gRG9ja2VyJ3MgLS1lbnRyeXBvaW50IG9wdGlvbiB3aGlsZSBjcmVhdGluZyB0aGUgY29udGFpbmVyLiBUaGUgc3ludGF4IGlzIHNpbWlsYXIgdG8gRG9ja2VyZmlsZSdzIEVOVFJZUE9JTlQgZGlyZWN0aXZlLCB3aGVyZSBlYWNoIHNoZWxsIHRva2VuIGlzIGEgc2VwYXJhdGUgc3RyaW5nIGluIHRoZSBhcnJheS4qL1xuICByZWFkb25seSBlbnRyeXBvaW50PzogYW55W107XG4gIC8qKiBGdWxsIG5hbWUgb2YgdGhlIGltYWdlIHRoYXQgc2hvdWxkIGJlIHVzZWQuIEl0IHNob3VsZCBjb250YWluIHRoZSBSZWdpc3RyeSBwYXJ0IGlmIG5lZWRlZC4qL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSG93IG1hbnkgdGltZXMgYSBqb2IgaXMgcmV0cmllZCBpZiBpdCBmYWlscy4gSWYgbm90IGRlZmluZWQsIGRlZmF1bHRzIHRvIDAgYW5kIGpvYnMgZG8gbm90IHJldHJ5LlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNyZXRyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5IHtcbiAgLyoqIDAgKGRlZmF1bHQpLCAxLCBvciAyLiovXG4gIHJlYWRvbmx5IG1heD86IG51bWJlcjtcbiAgLyoqIEVpdGhlciBhIHNpbmdsZSBvciBhcnJheSBvZiBlcnJvciB0eXBlcyB0byB0cmlnZ2VyIGpvYiByZXRyeS4qL1xuICByZWFkb25seSB3aGVuPzogYW55O1xufVxuXG4vKipcbiAqIFVzZWQgdG8gc3BlY2lmeSBhbiBhZGRpdGlvbmFsIERvY2tlciBpbWFnZSB0byBydW4gc2NyaXB0cyBpbi4gVGhlIHNlcnZpY2UgaW1hZ2UgaXMgbGlua2VkIHRvIHRoZSBpbWFnZSBzcGVjaWZpZWQgaW4gdGhlIEBEZWZhdWx0IGltYWdlIGtleXdvcmQuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI3NlcnZpY2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZSB7XG4gIC8qKiBBZGRpdGlvbmFsIGFsaWFzIHRoYXQgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIHRoZSBzZXJ2aWNlIGZyb20gdGhlIGpvYidzIGNvbnRhaW5lci4gUmVhZCBBY2Nlc3NpbmcgdGhlIHNlcnZpY2VzIGZvciBtb3JlIGluZm9ybWF0aW9uLiovXG4gIHJlYWRvbmx5IGFsaWFzPzogc3RyaW5nO1xuICAvKiogQ29tbWFuZCBvciBzY3JpcHQgdGhhdCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgY29udGFpbmVyJ3MgY29tbWFuZC4gSXQgd2lsbCBiZSB0cmFuc2xhdGVkIHRvIGFyZ3VtZW50cyBwYXNzZWQgdG8gRG9ja2VyIGFmdGVyIHRoZSBpbWFnZSdzIG5hbWUuIFRoZSBzeW50YXggaXMgc2ltaWxhciB0byBEb2NrZXJmaWxlJ3MgQ01EIGRpcmVjdGl2ZSwgd2hlcmUgZWFjaCBzaGVsbCB0b2tlbiBpcyBhIHNlcGFyYXRlIHN0cmluZyBpbiB0aGUgYXJyYXkuKi9cbiAgcmVhZG9ubHkgY29tbWFuZD86IHN0cmluZ1tdO1xuICAvKiogQ29tbWFuZCBvciBzY3JpcHQgdGhhdCBzaG91bGQgYmUgZXhlY3V0ZWQgYXMgdGhlIGNvbnRhaW5lcidzIGVudHJ5cG9pbnQuIEl0IHdpbGwgYmUgdHJhbnNsYXRlZCB0byBEb2NrZXIncyAtLWVudHJ5cG9pbnQgb3B0aW9uIHdoaWxlIGNyZWF0aW5nIHRoZSBjb250YWluZXIuIFRoZSBzeW50YXggaXMgc2ltaWxhciB0byBEb2NrZXJmaWxlJ3MgRU5UUllQT0lOVCBkaXJlY3RpdmUsIHdoZXJlIGVhY2ggc2hlbGwgdG9rZW4gaXMgYSBzZXBhcmF0ZSBzdHJpbmcgaW4gdGhlIGFycmF5LiovXG4gIHJlYWRvbmx5IGVudHJ5cG9pbnQ/OiBzdHJpbmdbXTtcbiAgLyoqIEZ1bGwgbmFtZSBvZiB0aGUgaW1hZ2UgdGhhdCBzaG91bGQgYmUgdXNlZC4gSXQgc2hvdWxkIGNvbnRhaW4gdGhlIFJlZ2lzdHJ5IHBhcnQgaWYgbmVlZGVkLiovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBbiBpbmNsdWRlZCBZQU1MIGZpbGUuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI2luY2x1ZGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmNsdWRlIHtcbiAgLyoqIFJlbGF0aXZlIHBhdGggZnJvbSBsb2NhbCByZXBvc2l0b3J5IHJvb3QgKGAvYCkgdG8gdGhlIGB5YW1sYC9geW1sYCBmaWxlIHRlbXBsYXRlLiBUaGUgZmlsZSBtdXN0IGJlIG9uIHRoZSBzYW1lIGJyYW5jaCwgYW5kIGRvZXMgbm90IHdvcmsgYWNyb3NzIGdpdCBzdWJtb2R1bGVzLiovXG4gIHJlYWRvbmx5IGxvY2FsPzogc3RyaW5nO1xuICAvKipSdWxlcyBhbGxvd3MgZm9yIGFuIGFycmF5IG9mIGluZGl2aWR1YWwgcnVsZSBvYmplY3RzIHRvIGJlIGV2YWx1YXRlZCBpbiBvcmRlciwgdW50aWwgb25lIG1hdGNoZXMgYW5kIGR5bmFtaWNhbGx5IHByb3ZpZGVzIGF0dHJpYnV0ZXMgdG8gdGhlIGpvYi4gKi9cbiAgcmVhZG9ubHkgcnVsZXM/OiBJbmNsdWRlUnVsZVtdO1xuICAvKiogRmlsZXMgZnJvbSBhbm90aGVyIHByaXZhdGUgcHJvamVjdCBvbiB0aGUgc2FtZSBHaXRMYWIgaW5zdGFuY2UuIFlvdSBjYW4gdXNlIGBmaWxlYCBpbiBjb21iaW5hdGlvbiB3aXRoIGBwcm9qZWN0YCBvbmx5LiAqL1xuICByZWFkb25seSBmaWxlPzogc3RyaW5nW107XG4gIC8qKiBQYXRoIHRvIHRoZSBwcm9qZWN0LCBlLmcuIGBncm91cC9wcm9qZWN0YCwgb3IgYGdyb3VwL3N1Yi1ncm91cC9wcm9qZWN0YC4qL1xuICByZWFkb25seSBwcm9qZWN0Pzogc3RyaW5nO1xuICAvKiogQnJhbmNoL1RhZy9Db21taXQtaGFzaCBmb3IgdGhlIHRhcmdldCBwcm9qZWN0LiovXG4gIHJlYWRvbmx5IHJlZj86IHN0cmluZztcbiAgLyoqIFVzZSBhIGAuZ2l0bGFiLWNpLnltbGAgdGVtcGxhdGUgYXMgYSBiYXNlLCBlLmcuIGBOb2RlanMuZ2l0bGFiLWNpLnltbGAuKi9cbiAgcmVhZG9ubHkgdGVtcGxhdGU/OiBzdHJpbmc7XG4gIC8qKiBVUkwgdG8gYSBgeWFtbGAvYHltbGAgdGVtcGxhdGUgZmlsZSB1c2luZyBIVFRQL0hUVFBTLiovXG4gIHJlYWRvbmx5IHJlbW90ZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSdWxlcyBhbGxvd3MgZm9yIGFuIGFycmF5IG9mIGluZGl2aWR1YWwgcnVsZSBvYmplY3RzIHRvIGJlIGV2YWx1YXRlZCBpbiBvcmRlciwgdW50aWwgb25lXG4gKiBtYXRjaGVzIGFuZCBkeW5hbWljYWxseSBwcm92aWRlcyBhdHRyaWJ1dGVzIHRvIHRoZSBqb2IuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvaW5jbHVkZXMuaHRtbCN1c2UtcnVsZXMtd2l0aC1pbmNsdWRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5jbHVkZVJ1bGUge1xuICAvKiBXaGV0aGVyIGEgcGlwZWxpbmUgc2hvdWxkIGNvbnRpbnVlIHJ1bm5pbmcgd2hlbiBhIGpvYiBmYWlscy4gKi9cbiAgcmVhZG9ubHkgYWxsb3dGYWlsdXJlPzogYm9vbGVhbiB8IEFsbG93RmFpbHVyZTtcbiAgLyogU3BlY2lmeSB3aGVuIHRvIGFkZCBhIGpvYiB0byBhIHBpcGVsaW5lIGJ5IGNoZWNraW5nIGZvciBjaGFuZ2VzIHRvIHNwZWNpZmljIGZpbGVzLiAqL1xuICByZWFkb25seSBjaGFuZ2VzPzogc3RyaW5nW107XG4gIC8qIFJ1biBhIGpvYiB3aGVuIGNlcnRhaW4gZmlsZXMgZXhpc3QgaW4gdGhlIHJlcG9zaXRvcnkuICovXG4gIHJlYWRvbmx5IGV4aXN0cz86IHN0cmluZ1tdO1xuICAvKiBDbGF1c2VzIHRvIHNwZWNpZnkgd2hlbiB0byBhZGQgYSBqb2IgdG8gYSBwaXBlbGluZS4qL1xuICByZWFkb25seSBpZj86IHN0cmluZztcbiAgLyogRXhlY3V0ZSBzY3JpcHRzIGFmdGVyIGEgd2FpdGluZyBwZXJpb2Qgd3JpdHRlbiBpbiBuYXR1cmFsIGxhbmd1YWdlIChFeC4gb25lIGhvdXIsIDM2MDAgc2Vjb25kcywgNjAgbWludXRlcykuICovXG4gIHJlYWRvbmx5IHN0YXJ0SW4/OiBzdHJpbmc7XG4gIC8qIFVzZSB2YXJpYWJsZXMgaW4gcnVsZXMgdG8gZGVmaW5lIHZhcmlhYmxlcyBmb3Igc3BlY2lmaWMgY29uZGl0aW9ucy4gKi9cbiAgcmVhZG9ubHkgdmFyaWFibGVzPzogUmVjb3JkPHN0cmluZywgbnVtYmVyIHwgc3RyaW5nPjtcbiAgLyogQ29uZGl0aW9ucyBmb3Igd2hlbiB0byBydW4gdGhlIGpvYi4gRGVmYXVsdHMgdG8gJ29uX3N1Y2Nlc3MnICovXG4gIHJlYWRvbmx5IHdoZW4/OiBKb2JXaGVuO1xufVxuXG4vKipcbiAqIEV4aXQgY29kZSB0aGF0IGFyZSBub3QgY29uc2lkZXJlZCBmYWlsdXJlLiBUaGUgam9iIGZhaWxzIGZvciBhbnkgb3RoZXIgZXhpdCBjb2RlLlxuICogWW91IGNhbiBsaXN0IHdoaWNoIGV4aXQgY29kZXMgYXJlIG5vdCBjb25zaWRlcmVkIGZhaWx1cmVzLiBUaGUgam9iIGZhaWxzIGZvciBhbnkgb3RoZXJcbiAqIGV4aXQgY29kZS5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jYWxsb3dfZmFpbHVyZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFsbG93RmFpbHVyZSB7XG4gIHJlYWRvbmx5IGV4aXRDb2RlczogbnVtYmVyW10gfCBudW1iZXI7XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIHRoZSBjb25kaXRpb25zIGZvciB3aGVuIHRvIHJ1biB0aGUgam9iLiBEZWZhdWx0cyB0byAnb25fc3VjY2VzcycuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI3doZW5cbiAqL1xuZXhwb3J0IGVudW0gSm9iV2hlbiB7XG4gIEFMV0FZUyA9IFwiYWx3YXlzXCIsXG4gIERFTEFZRUQgPSBcImRlbGF5ZWRcIixcbiAgTUFOVUFMID0gXCJtYW51YWxcIixcbiAgTkVWRVIgPSBcIm5ldmVyXCIsXG4gIE9OX0ZBSUxVUkUgPSBcIm9uX2ZhaWx1cmVcIixcbiAgT05fU1VDQ0VTUyA9IFwib25fc3VjY2Vzc1wiLFxufVxuXG4vKipcbiAqIEpvYnMgYXJlIHRoZSBtb3N0IGZ1bmRhbWVudGFsIGVsZW1lbnQgb2YgYSAuZ2l0bGFiLWNpLnltbCBmaWxlLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS9qb2JzL1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEpvYiB7XG4gIC8qIERlZmluZXMgc2NyaXB0cyB0aGF0IHNob3VsZCBydW4gKmFmdGVyKiB0aGUgam9iLiAqL1xuICByZWFkb25seSBhZnRlclNjcmlwdD86IHN0cmluZ1tdO1xuICAvKiogV2hldGhlciB0byBhbGxvdyB0aGUgcGlwZWxpbmUgdG8gY29udGludWUgcnVubmluZyBvbiBqb2IgZmFpbHVyZSAoRGVmYXVsdDogZmFsc2UpLiAqL1xuICByZWFkb25seSBhbGxvd0ZhaWx1cmU/OiBib29sZWFuIHwgQWxsb3dGYWlsdXJlO1xuICAvKiBBIGxpc3Qgb2YgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRoYXQgc2hvdWxkIGJlIGF0dGFjaGVkIHRvIHRoZSBqb2IgaWYgaXQgc3VjY2VlZHMuIEFydGlmYWN0cyBhcmUgc2VudCB0byBHaXRsYWIgd2hlcmUgdGhleSBjYW4gYmUgZG93bmxvYWRlZC4gKi9cbiAgcmVhZG9ubHkgYXJ0aWZhY3RzPzogQXJ0aWZhY3RzO1xuICAvKiBEZWZpbmVzIHNjcmlwdHMgdGhhdCBzaG91bGQgcnVuICpiZWZvcmUqIHRoZSBqb2IuICovXG4gIHJlYWRvbmx5IGJlZm9yZVNjcmlwdD86IHN0cmluZ1tdO1xuICAvKiBBIGxpc3Qgb2YgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvIGNhY2hlIGJldHdlZW4gam9icy4gWW91IGNhbiBvbmx5IHVzZSBwYXRocyB0aGF0IGFyZSBpbiB0aGUgbG9jYWwgd29ya2luZyBjb3B5LiAqL1xuICByZWFkb25seSBjYWNoZT86IENhY2hlO1xuICAvKiogTXVzdCBiZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiwgb3B0aW9uYWxseSBidXQgcmVjb21tZW5kZWQgdG8gYmUgcXVvdGVkLCBhbmQgbXVzdCBiZSBzdXJyb3VuZGVkIHdpdGggJy8nLiBFeGFtcGxlOiAnL0NvZGUgY292ZXJhZ2U6IFxcZCtcXC5cXGQrLycqL1xuICByZWFkb25seSBjb3ZlcmFnZT86IHN0cmluZztcbiAgLyoqIFNwZWNpZnkgYSBsaXN0IG9mIGpvYiBuYW1lcyBmcm9tIGVhcmxpZXIgc3RhZ2VzIGZyb20gd2hpY2ggYXJ0aWZhY3RzIHNob3VsZCBiZSBsb2FkZWQuIEJ5IGRlZmF1bHQsIGFsbCBwcmV2aW91cyBhcnRpZmFjdHMgYXJlIHBhc3NlZC4gVXNlIGFuIGVtcHR5IGFycmF5IHRvIHNraXAgZG93bmxvYWRpbmcgYXJ0aWZhY3RzLiovXG4gIHJlYWRvbmx5IGRlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuICAvKiogVXNlZCB0byBhc3NvY2lhdGUgZW52aXJvbm1lbnQgbWV0YWRhdGEgd2l0aCBhIGRlcGxveS4gRW52aXJvbm1lbnQgY2FuIGhhdmUgYSBuYW1lIGFuZCBVUkwgYXR0YWNoZWQgdG8gaXQsIGFuZCB3aWxsIGJlIGRpc3BsYXllZCB1bmRlciAvZW52aXJvbm1lbnRzIHVuZGVyIHRoZSBwcm9qZWN0LiovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50PzogRW52aXJvbm1lbnQgfCBzdHJpbmc7XG4gIC8qKiBKb2Igd2lsbCBydW4gKmV4Y2VwdCogZm9yIHdoZW4gdGhlc2UgZmlsdGVyaW5nIG9wdGlvbnMgbWF0Y2guKi9cbiAgcmVhZG9ubHkgZXhjZXB0Pzogc3RyaW5nW10gfCBGaWx0ZXI7XG4gIC8qKiBUaGUgbmFtZSBvZiBvbmUgb3IgbW9yZSBqb2JzIHRvIGluaGVyaXQgY29uZmlndXJhdGlvbiBmcm9tLiovXG4gIHJlYWRvbmx5IGV4dGVuZHM/OiBzdHJpbmdbXTtcbiAgLyogU3BlY2lmaWVzIHRoZSBkZWZhdWx0IGRvY2tlciBpbWFnZSB0byB1c2VkIGZvciB0aGUgam9iLiAqL1xuICByZWFkb25seSBpbWFnZT86IEltYWdlO1xuICAvKiogQ29udHJvbHMgaW5oZXJpdGFuY2Ugb2YgZ2xvYmFsbHktZGVmaW5lZCBkZWZhdWx0cyBhbmQgdmFyaWFibGVzLiBCb29sZWFuIHZhbHVlcyBjb250cm9sIGluaGVyaXRhbmNlIG9mIGFsbCBkZWZhdWx0OiBvciB2YXJpYWJsZXM6IGtleXdvcmRzLiBUbyBpbmhlcml0IG9ubHkgYSBzdWJzZXQgb2YgZGVmYXVsdDogb3IgdmFyaWFibGVzOiBrZXl3b3Jkcywgc3BlY2lmeSB3aGF0IHlvdSB3aXNoIHRvIGluaGVyaXQuIEFueXRoaW5nIG5vdCBsaXN0ZWQgaXMgbm90IGluaGVyaXRlZC4qL1xuICByZWFkb25seSBpbmhlcml0PzogSW5oZXJpdDtcbiAgLyogSWYgYSBqb2Igc2hvdWxkIGJlIGNhbmNlbGVkIHdoZW4gYSBuZXdlciBwaXBlbGluZSBzdGFydHMgYmVmb3JlIHRoZSBqb2IgY29tcGxldGVzIChEZWZhdWx0OiBmYWxzZSkuKi9cbiAgcmVhZG9ubHkgaW50ZXJydXB0aWJsZT86IGJvb2xlYW47XG4gIC8qKiBUaGUgbGlzdCBvZiBqb2JzIGluIHByZXZpb3VzIHN0YWdlcyB3aG9zZSBzb2xlIGNvbXBsZXRpb24gaXMgbmVlZGVkIHRvIHN0YXJ0IHRoZSBjdXJyZW50IGpvYi4qL1xuICByZWFkb25seSBuZWVkcz86IEFycmF5PE5lZWQgfCBzdHJpbmc+O1xuICAvKiogSm9iIHdpbGwgcnVuICpvbmx5KiB3aGVuIHRoZXNlIGZpbHRlcmluZyBvcHRpb25zIG1hdGNoLiovXG4gIHJlYWRvbmx5IG9ubHk/OiBzdHJpbmdbXSB8IEZpbHRlcjtcbiAgLyoqIFBhcmFsbGVsIHdpbGwgc3BsaXQgdXAgYSBzaW5nbGUgam9iIGludG8gc2V2ZXJhbCwgYW5kIHByb3ZpZGUgYENJX05PREVfSU5ERVhgIGFuZCBgQ0lfTk9ERV9UT1RBTGAgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgcnVubmluZyBqb2JzLiovXG4gIHJlYWRvbmx5IHBhcmFsbGVsPzogUGFyYWxsZWwgfCBudW1iZXI7XG4gIC8qKiBJbmRpY2F0ZXMgdGhhdCB0aGUgam9iIGNyZWF0ZXMgYSBSZWxlYXNlLiovXG4gIHJlYWRvbmx5IHJlbGVhc2U/OiBSZWxlYXNlO1xuICAvKiogTGltaXQgam9iIGNvbmN1cnJlbmN5LiBDYW4gYmUgdXNlZCB0byBlbnN1cmUgdGhhdCB0aGUgUnVubmVyIHdpbGwgbm90IHJ1biBjZXJ0YWluIGpvYnMgc2ltdWx0YW5lb3VzbHkuKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VHcm91cD86IHN0cmluZztcbiAgLyogSG93IG1hbnkgdGltZXMgYSBqb2IgaXMgcmV0cmllZCBpZiBpdCBmYWlscy4gSWYgbm90IGRlZmluZWQsIGRlZmF1bHRzIHRvIDAgYW5kIGpvYnMgZG8gbm90IHJldHJ5LiAqL1xuICByZWFkb25seSByZXRyeT86IFJldHJ5O1xuICAvKipSdWxlcyBhbGxvd3MgZm9yIGFuIGFycmF5IG9mIGluZGl2aWR1YWwgcnVsZSBvYmplY3RzIHRvIGJlIGV2YWx1YXRlZCBpbiBvcmRlciwgdW50aWwgb25lIG1hdGNoZXMgYW5kIGR5bmFtaWNhbGx5IHByb3ZpZGVzIGF0dHJpYnV0ZXMgdG8gdGhlIGpvYi4gKi9cbiAgcmVhZG9ubHkgcnVsZXM/OiBJbmNsdWRlUnVsZVtdO1xuICAvKiogU2hlbGwgc2NyaXB0cyBleGVjdXRlZCBieSB0aGUgUnVubmVyLiBUaGUgb25seSByZXF1aXJlZCBwcm9wZXJ0eSBvZiBqb2JzLiBCZSBjYXJlZnVsIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuIGA6YCwgYHtgLCBgfWAsIGAmYCkgYW5kIHVzZSBzaW5nbGUgb3IgZG91YmxlIHF1b3RlcyB0byBhdm9pZCBpc3N1ZXMuKi9cbiAgcmVhZG9ubHkgc2NyaXB0Pzogc3RyaW5nW107XG4gIC8qKiBDSS9DRCBzZWNyZXRzICovXG4gIHJlYWRvbmx5IHNlY3JldHM/OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBTZWNyZXQ+PjtcbiAgLyogQWRkaXRpb25hbCBEb2NrZXIgaW1hZ2VzIHRvIHJ1biBzY3JpcHRzIGluLiBUaGUgc2VydmljZSBpbWFnZSBpcyBsaW5rZWQgdG8gdGhlIGltYWdlIHNwZWNpZmllZCBpbiB0aGUgIGltYWdlIHBhcmFtZXRlci4gKi9cbiAgcmVhZG9ubHkgc2VydmljZXM/OiBTZXJ2aWNlW107XG4gIC8qKiBEZWZpbmUgd2hhdCBzdGFnZSB0aGUgam9iIHdpbGwgcnVuIGluLiovXG4gIHJlYWRvbmx5IHN0YWdlPzogc3RyaW5nO1xuICAvKiBFeGVjdXRlIHNjcmlwdHMgYWZ0ZXIgYSB3YWl0aW5nIHBlcmlvZCB3cml0dGVuIGluIG5hdHVyYWwgbGFuZ3VhZ2UgKEV4LiBvbmUgaG91ciwgMzYwMCBzZWNvbmRzLCA2MCBtaW51dGVzKS4gKi9cbiAgcmVhZG9ubHkgc3RhcnRJbj86IHN0cmluZztcbiAgLyogVXNlZCB0byBzZWxlY3QgYSBzcGVjaWZpYyBydW5uZXIgZnJvbSB0aGUgbGlzdCBvZiBhbGwgcnVubmVycyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHRoZSBwcm9qZWN0LiAqL1xuICByZWFkb25seSB0YWdzPzogc3RyaW5nW107XG4gIC8qIEEgZGVmYXVsdCB0aW1lb3V0IGpvYiB3cml0dGVuIGluIG5hdHVyYWwgbGFuZ3VhZ2UgKEV4LiBvbmUgaG91ciwgMzYwMCBzZWNvbmRzLCA2MCBtaW51dGVzKS4gKi9cbiAgcmVhZG9ubHkgdGltZW91dD86IHN0cmluZztcbiAgLyoqIFRyaWdnZXIgYWxsb3dzIHlvdSB0byBkZWZpbmUgZG93bnN0cmVhbSBwaXBlbGluZSB0cmlnZ2VyLiBXaGVuIGEgam9iIGNyZWF0ZWQgZnJvbSB0cmlnZ2VyIGRlZmluaXRpb24gaXMgc3RhcnRlZCBieSBHaXRMYWIsIGEgZG93bnN0cmVhbSBwaXBlbGluZSBnZXRzIGNyZWF0ZWQuIFJlYWQgbW9yZTogaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC9SRUFETUUuaHRtbCN0cmlnZ2VyKi9cbiAgcmVhZG9ubHkgdHJpZ2dlcj86IFRyaWdnZXIgfCBzdHJpbmc7XG4gIC8qKiBDb25maWd1cmFibGUgdmFsdWVzIHRoYXQgYXJlIHBhc3NlZCB0byB0aGUgSm9iLiAqL1xuICByZWFkb25seSB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+O1xuICAvKiogRGVzY3JpYmVzIHRoZSBjb25kaXRpb25zIGZvciB3aGVuIHRvIHJ1biB0aGUgam9iLiBEZWZhdWx0cyB0byAnb25fc3VjY2VzcycuICovXG4gIHJlYWRvbmx5IHdoZW4/OiBKb2JXaGVuO1xufVxuXG4vKipcbiAqIFRoZSBlbnZpcm9ubWVudCB0aGF0IGEgam9iIGRlcGxveXMgdG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW52aXJvbm1lbnQge1xuICAvKiogU3BlY2lmaWVzIHdoYXQgdGhpcyBqb2Igd2lsbCBkby4gJ3N0YXJ0JyAoZGVmYXVsdCkgaW5kaWNhdGVzIHRoZSBqb2Igd2lsbCBzdGFydCB0aGUgZGVwbG95bWVudC4gJ3ByZXBhcmUnIGluZGljYXRlcyB0aGlzIHdpbGwgbm90IGFmZmVjdCB0aGUgZGVwbG95bWVudC4gJ3N0b3AnIGluZGljYXRlcyB0aGlzIHdpbGwgc3RvcCB0aGUgZGVwbG95bWVudC4qL1xuICByZWFkb25seSBhY3Rpb24/OiBBY3Rpb247XG4gIC8qKiBUaGUgYW1vdW50IG9mIHRpbWUgaXQgc2hvdWxkIHRha2UgYmVmb3JlIEdpdGxhYiB3aWxsIGF1dG9tYXRpY2FsbHkgc3RvcCB0aGUgZW52aXJvbm1lbnQuIFN1cHBvcnRzIGEgd2lkZSB2YXJpZXR5IG9mIGZvcm1hdHMsIGUuZy4gJzEgd2VlaycsICczIG1pbnMgNCBzZWMnLCAnMiBocnMgMjAgbWluJywgJzJoMjBtaW4nLCAnNiBtb3MgMSBkYXknLCAnNDcgeXJzIDYgbW9zIGFuZCA0ZCcsICczIHdlZWtzIGFuZCAyIGRheXMnLiovXG4gIHJlYWRvbmx5IGF1dG9TdG9wSW4/OiBzdHJpbmc7XG4gIC8qKiBFeHBsaWNpdGx5IHNwZWNpZmllcyB0aGUgdGllciBvZiB0aGUgZGVwbG95bWVudCBlbnZpcm9ubWVudCBpZiBub24tc3RhbmRhcmQgZW52aXJvbm1lbnQgbmFtZSBpcyB1c2VkLiovXG4gIHJlYWRvbmx5IGRlcGxveW1lbnRUaWVyPzogRGVwbG95bWVudFRpZXI7XG4gIC8qKiBVc2VkIHRvIGNvbmZpZ3VyZSB0aGUga3ViZXJuZXRlcyBkZXBsb3ltZW50IGZvciB0aGlzIGVudmlyb25tZW50LiBUaGlzIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIGZvciBrdWJlcm5ldGVzIGNsdXN0ZXJzIHRoYXQgYXJlIG1hbmFnZWQgYnkgR2l0bGFiLiovXG4gIHJlYWRvbmx5IGt1YmVybmV0ZXM/OiBLdWJlcm5ldGVzQ29uZmlnO1xuICAvKiogVGhlIG5hbWUgb2YgdGhlIGVudmlyb25tZW50LCBlLmcuICdxYScsICdzdGFnaW5nJywgJ3Byb2R1Y3Rpb24nLiovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqIFRoZSBuYW1lIG9mIGEgam9iIHRvIGV4ZWN1dGUgd2hlbiB0aGUgZW52aXJvbm1lbnQgaXMgYWJvdXQgdG8gYmUgc3RvcHBlZC4qL1xuICByZWFkb25seSBvblN0b3A/OiBzdHJpbmc7XG4gIC8qKiBXaGVuIHNldCwgdGhpcyB3aWxsIGV4cG9zZSBidXR0b25zIGluIHZhcmlvdXMgcGxhY2VzIGZvciB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBpbiBHaXRsYWIsIHRoYXQgd2lsbCB0YWtlIHlvdSB0byB0aGUgZGVmaW5lZCBVUkwuKi9cbiAgcmVhZG9ubHkgdXJsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNwZWNpZmllcyB3aGF0IHRoaXMgam9iIHdpbGwgZG8uICdzdGFydCcgKGRlZmF1bHQpIGluZGljYXRlcyB0aGUgam9iIHdpbGwgc3RhcnQgdGhlXG4gKiBkZXBsb3ltZW50LiAncHJlcGFyZScgaW5kaWNhdGVzIHRoaXMgd2lsbCBub3QgYWZmZWN0IHRoZSBkZXBsb3ltZW50LiAnc3RvcCcgaW5kaWNhdGVzXG4gKiB0aGlzIHdpbGwgc3RvcCB0aGUgZGVwbG95bWVudC5cbiAqL1xuZXhwb3J0IGVudW0gQWN0aW9uIHtcbiAgUFJFUEFSRSA9IFwicHJlcGFyZVwiLFxuICBTVEFSVCA9IFwic3RhcnRcIixcbiAgU1RPUCA9IFwic3RvcFwiLFxufVxuXG4vKipcbiAqIEV4cGxpY2l0bHkgc3BlY2lmaWVzIHRoZSB0aWVyIG9mIHRoZSBkZXBsb3ltZW50IGVudmlyb25tZW50IGlmIG5vbi1zdGFuZGFyZCBlbnZpcm9ubWVudFxuICogbmFtZSBpcyB1c2VkLlxuICovXG5leHBvcnQgZW51bSBEZXBsb3ltZW50VGllciB7XG4gIERFVkVMT1BNRU5UID0gXCJkZXZlbG9wbWVudFwiLFxuICBPVEhFUiA9IFwib3RoZXJcIixcbiAgUFJPRFVDVElPTiA9IFwicHJvZHVjdGlvblwiLFxuICBTVEFHSU5HID0gXCJzdGFnaW5nXCIsXG4gIFRFU1RJTkcgPSBcInRlc3RpbmdcIixcbn1cblxuLyoqXG4gKiBVc2VkIHRvIGNvbmZpZ3VyZSB0aGUga3ViZXJuZXRlcyBkZXBsb3ltZW50IGZvciB0aGlzIGVudmlyb25tZW50LiBUaGlzIGlzIGN1cnJlbnRseSBub3RcbiAqIHN1cHBvcnRlZCBmb3Iga3ViZXJuZXRlcyBjbHVzdGVycyB0aGF0IGFyZSBtYW5hZ2VkIGJ5IEdpdGxhYi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLdWJlcm5ldGVzQ29uZmlnIHtcbiAgLyoqIFRoZSBrdWJlcm5ldGVzIG5hbWVzcGFjZSB3aGVyZSB0aGlzIGVudmlyb25tZW50IHNob3VsZCBiZSBkZXBsb3llZCB0by4qL1xuICByZWFkb25seSBuYW1lc3BhY2U/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRmlsdGVyaW5nIG9wdGlvbnMgZm9yIHdoZW4gYSBqb2Igd2lsbCBydW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyIHtcbiAgLyoqIEZpbHRlciBqb2IgY3JlYXRpb24gYmFzZWQgb24gZmlsZXMgdGhhdCB3ZXJlIG1vZGlmaWVkIGluIGEgZ2l0IHB1c2guKi9cbiAgcmVhZG9ubHkgY2hhbmdlcz86IHN0cmluZ1tdO1xuICAvKiogRmlsdGVyIGpvYiBiYXNlZCBvbiBpZiBLdWJlcm5ldGVzIGludGVncmF0aW9uIGlzIGFjdGl2ZS4qL1xuICByZWFkb25seSBrdWJlcm5ldGVzPzogS3ViZXJuZXRlc0VudW07XG4gIC8qKiBDb250cm9sIHdoZW4gdG8gYWRkIGpvYnMgdG8gYSBwaXBlbGluZSBiYXNlZCBvbiBicmFuY2ggbmFtZXMgb3IgcGlwZWxpbmUgdHlwZXMuICovXG4gIHJlYWRvbmx5IHJlZnM/OiBzdHJpbmdbXTtcbiAgLyoqIEZpbHRlciBqb2IgYnkgY2hlY2tpbmcgY29tcGFyaW5nIHZhbHVlcyBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIFJlYWQgbW9yZSBhYm91dCB2YXJpYWJsZSBleHByZXNzaW9uczogaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kvdmFyaWFibGVzL1JFQURNRS5odG1sI3ZhcmlhYmxlcy1leHByZXNzaW9ucyovXG4gIHJlYWRvbmx5IHZhcmlhYmxlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEZpbHRlciBqb2IgYmFzZWQgb24gaWYgS3ViZXJuZXRlcyBpbnRlZ3JhdGlvbiBpcyBhY3RpdmUuXG4gKi9cbmV4cG9ydCBlbnVtIEt1YmVybmV0ZXNFbnVtIHtcbiAgQUNUSVZFID0gXCJhY3RpdmVcIixcbn1cblxuLyoqXG4gKiBDb250cm9scyBpbmhlcml0YW5jZSBvZiBnbG9iYWxseS1kZWZpbmVkIGRlZmF1bHRzIGFuZCB2YXJpYWJsZXMuIEJvb2xlYW4gdmFsdWVzIGNvbnRyb2xcbiAqIGluaGVyaXRhbmNlIG9mIGFsbCBkZWZhdWx0OiBvciB2YXJpYWJsZXM6IGtleXdvcmRzLiBUbyBpbmhlcml0IG9ubHkgYSBzdWJzZXQgb2YgZGVmYXVsdDpcbiAqIG9yIHZhcmlhYmxlczoga2V5d29yZHMsIHNwZWNpZnkgd2hhdCB5b3Ugd2lzaCB0byBpbmhlcml0LiBBbnl0aGluZyBub3QgbGlzdGVkIGlzIG5vdFxuICogaW5oZXJpdGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluaGVyaXQge1xuICAvKiogV2hldGhlciB0byBpbmhlcml0IGFsbCBnbG9iYWxseS1kZWZpbmVkIGRlZmF1bHRzIG9yIG5vdC4gT3Igc3Vic2V0IG9mIGluaGVyaXRlZCBkZWZhdWx0cyovXG4gIHJlYWRvbmx5IGRlZmF1bHQ/OiBEZWZhdWx0RWxlbWVudFtdIHwgYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdG8gaW5oZXJpdCBhbGwgZ2xvYmFsbHktZGVmaW5lZCB2YXJpYWJsZXMgb3Igbm90LiBPciBzdWJzZXQgb2YgaW5oZXJpdGVkIHZhcmlhYmxlcyovXG4gIHJlYWRvbmx5IHZhcmlhYmxlcz86IHN0cmluZ1tdIHwgYm9vbGVhbjtcbn1cblxuZXhwb3J0IGVudW0gRGVmYXVsdEVsZW1lbnQge1xuICBBRlRFUl9TQ1JJUFQgPSBcImFmdGVyX3NjcmlwdFwiLFxuICBBUlRJRkFDVFMgPSBcImFydGlmYWN0c1wiLFxuICBCRUZPUkVfU0NSSVBUID0gXCJiZWZvcmVfc2NyaXB0XCIsXG4gIENBQ0hFID0gXCJjYWNoZVwiLFxuICBJTUFHRSA9IFwiaW1hZ2VcIixcbiAgSU5URVJSVVBUSUJMRSA9IFwiaW50ZXJydXB0aWJsZVwiLFxuICBSRVRSWSA9IFwicmV0cnlcIixcbiAgU0VSVklDRVMgPSBcInNlcnZpY2VzXCIsXG4gIFRBR1MgPSBcInRhZ3NcIixcbiAgVElNRU9VVCA9IFwidGltZW91dFwiLFxufVxuXG4vKipcbiAqIEEgam9icyBpbiBhIHByZXZpb3VzIHN0YWdlIHdob3NlIHNvbGUgY29tcGxldGlvbiBpcyBuZWVkZWQgdG8gc3RhcnQgdGhlIGN1cnJlbnQgam9iLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5lZWQge1xuICByZWFkb25seSBhcnRpZmFjdHM/OiBib29sZWFuO1xuICByZWFkb25seSBqb2I6IHN0cmluZztcbiAgcmVhZG9ubHkgb3B0aW9uYWw/OiBib29sZWFuO1xuICByZWFkb25seSBwaXBlbGluZT86IHN0cmluZztcbiAgcmVhZG9ubHkgcHJvamVjdD86IHN0cmluZztcbiAgcmVhZG9ubHkgcmVmPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFVzZWQgdG8gcnVuIGEgam9iIG11bHRpcGxlIHRpbWVzIGluIHBhcmFsbGVsIGluIGEgc2luZ2xlIHBpcGVsaW5lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFsbGVsIHtcbiAgLyoqIERlZmluZXMgZGlmZmVyZW50IHZhcmlhYmxlcyBmb3Igam9icyB0aGF0IGFyZSBydW5uaW5nIGluIHBhcmFsbGVsLiovXG4gIHJlYWRvbmx5IG1hdHJpeDogUmVjb3JkPHN0cmluZywgYW55W10+W107XG59XG5cbi8qKlxuICogSW5kaWNhdGVzIHRoYXQgdGhlIGpvYiBjcmVhdGVzIGEgUmVsZWFzZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWxlYXNlIHtcbiAgcmVhZG9ubHkgYXNzZXRzPzogQXNzZXRzO1xuICAvKiogU3BlY2lmaWVzIHRoZSBsb25nZXIgZGVzY3JpcHRpb24gb2YgdGhlIFJlbGVhc2UuKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcbiAgLyoqIFRoZSB0aXRsZSBvZiBlYWNoIG1pbGVzdG9uZSB0aGUgcmVsZWFzZSBpcyBhc3NvY2lhdGVkIHdpdGguKi9cbiAgcmVhZG9ubHkgbWlsZXN0b25lcz86IHN0cmluZ1tdO1xuICAvKiogVGhlIFJlbGVhc2UgbmFtZS4gSWYgb21pdHRlZCwgaXQgaXMgcG9wdWxhdGVkIHdpdGggdGhlIHZhbHVlIG9mIHJlbGVhc2U6IHRhZ19uYW1lLiovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBJZiB0aGUgcmVsZWFzZTogdGFnX25hbWUgZG9lc27igJl0IGV4aXN0IHlldCwgdGhlIHJlbGVhc2UgaXMgY3JlYXRlZCBmcm9tIHJlZi4gcmVmIGNhbiBiZSBhIGNvbW1pdCBTSEEsIGFub3RoZXIgdGFnIG5hbWUsIG9yIGEgYnJhbmNoIG5hbWUuKi9cbiAgcmVhZG9ubHkgcmVmPzogc3RyaW5nO1xuICAvKiogVGhlIGRhdGUgYW5kIHRpbWUgd2hlbiB0aGUgcmVsZWFzZSBpcyByZWFkeS4gRGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZSBpZiBub3QgZGVmaW5lZC4gU2hvdWxkIGJlIGVuY2xvc2VkIGluIHF1b3RlcyBhbmQgZXhwcmVzc2VkIGluIElTTyA4NjAxIGZvcm1hdC4qL1xuICByZWFkb25seSByZWxlYXNlZEF0Pzogc3RyaW5nO1xuICAvKiogVGhlIHRhZ19uYW1lIG11c3QgYmUgc3BlY2lmaWVkLiBJdCBjYW4gcmVmZXIgdG8gYW4gZXhpc3RpbmcgR2l0IHRhZyBvciBjYW4gYmUgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLiovXG4gIHJlYWRvbmx5IHRhZ05hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBc3NldCBjb25maWd1cmF0aW9uIGZvciBhIHJlbGVhc2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZXRzIHtcbiAgLyoqIEluY2x1ZGUgYXNzZXQgbGlua3MgaW4gdGhlIHJlbGVhc2UuKi9cbiAgcmVhZG9ubHkgbGlua3M6IExpbmtbXTtcbn1cblxuLyoqXG4gKiBMaW5rIGNvbmZpZ3VyYXRpb24gZm9yIGFuIGFzc2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpbmsge1xuICAvKiogVGhlIHJlZGlyZWN0IGxpbmsgdG8gdGhlIHVybC4qL1xuICByZWFkb25seSBmaWxlcGF0aD86IHN0cmluZztcbiAgLyoqIFRoZSBjb250ZW50IGtpbmQgb2Ygd2hhdCB1c2VycyBjYW4gZG93bmxvYWQgdmlhIHVybC4qL1xuICByZWFkb25seSBsaW5rVHlwZT86IExpbmtUeXBlO1xuICAvKiogVGhlIG5hbWUgb2YgdGhlIGxpbmsuKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKiogVGhlIFVSTCB0byBkb3dubG9hZCBhIGZpbGUuKi9cbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGNvbnRlbnQga2luZCBvZiB3aGF0IHVzZXJzIGNhbiBkb3dubG9hZCB2aWEgdXJsLlxuICovXG5leHBvcnQgZW51bSBMaW5rVHlwZSB7XG4gIElNQUdFID0gXCJpbWFnZVwiLFxuICBPVEhFUiA9IFwib3RoZXJcIixcbiAgUEFDS0FHRSA9IFwicGFja2FnZVwiLFxuICBSVU5CT09LID0gXCJydW5ib29rXCIsXG59XG5cbi8qKlxuICogQSBDSS9DRCBzZWNyZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWNyZXQge1xuICAvKiBTcGVjaWZpY2F0aW9uIGZvciBhIHNlY3JldCBwcm92aWRlZCBieSBhIEhhc2hpQ29ycCBWYXVsdC4gKi9cbiAgcmVhZG9ubHkgdmF1bHQ6IFZhdWx0Q29uZmlnO1xufVxuXG4vKipcbiAqIFNwZWNpZmljYXRpb24gZm9yIGEgc2VjcmV0IHByb3ZpZGVkIGJ5IGEgSGFzaGlDb3JwIFZhdWx0LlxuICogQHNlZSBodHRwczovL3d3dy52YXVsdHByb2plY3QuaW8vXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmF1bHRDb25maWcge1xuICAvKiBUaGUgZW5naW5lIGNvbmZpZ3VyYXRpb24gZm9yIGEgc2VjcmV0LiAqL1xuICByZWFkb25seSBlbmdpbmU6IEVuZ2luZTtcbiAgLyogVGhlIG5hbWUgb2YgdGhlIGZpZWxkIHdoZXJlIHRoZSBwYXNzd29yZCBpcyBzdG9yZWQuICovXG4gIHJlYWRvbmx5IGZpZWxkOiBzdHJpbmc7XG4gIC8qKiBQYXRoIHRvIHRoZSBzZWNyZXQuICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgZW5naW5lIGNvbmZpZ3VyYXRpb24gZm9yIGEgc2VjcmV0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuZ2luZSB7XG4gIC8qKiBOYW1lIG9mIHRoZSBzZWNyZXRzIGVuZ2luZS4gKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKiogUGF0aCB0byB0aGUgc2VjcmV0cyBlbmdpbmUuICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUcmlnZ2VyIGEgbXVsdGktcHJvamVjdCBvciBhIGNoaWxkIHBpcGVsaW5lLiBSZWFkIG1vcmU6XG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvUkVBRE1FLmh0bWwjc2ltcGxlLXRyaWdnZXItc3ludGF4LWZvci1tdWx0aS1wcm9qZWN0LXBpcGVsaW5lc1xuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sL1JFQURNRS5odG1sI3RyaWdnZXItc3ludGF4LWZvci1jaGlsZC1waXBlbGluZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyaWdnZXIge1xuICAvKiogVGhlIGJyYW5jaCBuYW1lIHRoYXQgYSBkb3duc3RyZWFtIHBpcGVsaW5lIHdpbGwgdXNlKi9cbiAgcmVhZG9ubHkgYnJhbmNoPzogc3RyaW5nO1xuICAvKiogUGF0aCB0byB0aGUgcHJvamVjdCwgZS5nLiBgZ3JvdXAvcHJvamVjdGAsIG9yIGBncm91cC9zdWItZ3JvdXAvcHJvamVjdGAuKi9cbiAgcmVhZG9ubHkgcHJvamVjdD86IHN0cmluZztcbiAgLyoqIFlvdSBjYW4gbWlycm9yIHRoZSBwaXBlbGluZSBzdGF0dXMgZnJvbSB0aGUgdHJpZ2dlcmVkIHBpcGVsaW5lIHRvIHRoZSBzb3VyY2UgYnJpZGdlIGpvYiBieSB1c2luZyBzdHJhdGVneTogZGVwZW5kKi9cbiAgcmVhZG9ubHkgc3RyYXRlZ3k/OiBTdHJhdGVneTtcbiAgLyoqIEEgbGlzdCBvZiBsb2NhbCBmaWxlcyBvciBhcnRpZmFjdHMgZnJvbSBvdGhlciBqb2JzIHRvIGRlZmluZSB0aGUgcGlwZWxpbmUgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZT86IFRyaWdnZXJJbmNsdWRlW107XG59XG5cbi8qKlxuICogUmVmZXJlbmNlcyBhIGxvY2FsIGZpbGUgb3IgYW4gYXJ0aWZhY3QgZnJvbSBhbm90aGVyIGpvYiB0byBkZWZpbmUgdGhlIHBpcGVsaW5lXG4gKiBjb25maWd1cmF0aW9uLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyN0cmlnZ2VyaW5jbHVkZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyaWdnZXJJbmNsdWRlIHtcbiAgLyoqIFJlbGF0aXZlIHBhdGggZnJvbSBsb2NhbCByZXBvc2l0b3J5IHJvb3QgKGAvYCkgdG8gdGhlIGxvY2FsIFlBTUwgZmlsZSB0byBkZWZpbmUgdGhlIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24uKi9cbiAgcmVhZG9ubHkgbG9jYWw/OiBzdHJpbmc7XG4gIC8qKiBOYW1lIG9mIHRoZSB0ZW1wbGF0ZSBZQU1MIGZpbGUgdG8gdXNlIGluIHRoZSBwaXBlbGluZSBjb25maWd1cmF0aW9uLiovXG4gIHJlYWRvbmx5IHRlbXBsYXRlPzogc3RyaW5nO1xuICAvKiogUmVsYXRpdmUgcGF0aCB0byB0aGUgZ2VuZXJhdGVkIFlBTUwgZmlsZSB3aGljaCBpcyBleHRyYWN0ZWQgZnJvbSB0aGUgYXJ0aWZhY3RzIGFuZCB1c2VkIGFzIHRoZSBjb25maWd1cmF0aW9uIGZvciB0cmlnZ2VyaW5nIHRoZSBjaGlsZCBwaXBlbGluZS4qL1xuICByZWFkb25seSBhcnRpZmFjdD86IHN0cmluZztcbiAgLyoqIEpvYiBuYW1lIHdoaWNoIGdlbmVyYXRlcyB0aGUgYXJ0aWZhY3QqL1xuICByZWFkb25seSBqb2I/OiBzdHJpbmc7XG4gIC8qKiBSZWxhdGl2ZSBwYXRoIGZyb20gcmVwb3NpdG9yeSByb290IChgL2ApIHRvIHRoZSBwaXBlbGluZSBjb25maWd1cmF0aW9uIFlBTUwgZmlsZS4qL1xuICByZWFkb25seSBmaWxlPzogc3RyaW5nO1xuICAvKiogUGF0aCB0byBhbm90aGVyIHByaXZhdGUgcHJvamVjdCB1bmRlciB0aGUgc2FtZSBHaXRMYWIgaW5zdGFuY2UsIGxpa2UgYGdyb3VwL3Byb2plY3RgIG9yIGBncm91cC9zdWItZ3JvdXAvcHJvamVjdGAuKi9cbiAgcmVhZG9ubHkgcHJvamVjdD86IHN0cmluZztcbiAgLyoqIEJyYW5jaC9UYWcvQ29tbWl0IGhhc2ggZm9yIHRoZSB0YXJnZXQgcHJvamVjdC4qL1xuICByZWFkb25seSByZWY/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogWW91IGNhbiBtaXJyb3IgdGhlIHBpcGVsaW5lIHN0YXR1cyBmcm9tIHRoZSB0cmlnZ2VyZWQgcGlwZWxpbmUgdG8gdGhlIHNvdXJjZSBicmlkZ2Ugam9iXG4gKiBieSB1c2luZyBzdHJhdGVneTogZGVwZW5kXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI3RyaWdnZXJzdHJhdGVneVxuICovXG5leHBvcnQgZW51bSBTdHJhdGVneSB7XG4gIERFUEVORCA9IFwiZGVwZW5kXCIsXG59XG5cbi8qKlxuICogRXhwbGFpbnMgd2hhdCB0aGUgZ2xvYmFsIHZhcmlhYmxlIGlzIHVzZWQgZm9yLCB3aGF0IHRoZSBhY2NlcHRhYmxlIHZhbHVlcyBhcmUuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI3ZhcmlhYmxlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhcmlhYmxlQ29uZmlnIHtcbiAgLyoqIERlZmluZSBhIGdsb2JhbCB2YXJpYWJsZSB0aGF0IGlzIHByZWZpbGxlZCB3aGVuIHJ1bm5pbmcgYSBwaXBlbGluZSBtYW51YWxseS4gTXVzdCBiZSB1c2VkIHdpdGggdmFsdWUuICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIFRoZSB2YXJpYWJsZSB2YWx1ZS4gKi9cbiAgcmVhZG9ubHkgdmFsdWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVXNlZCB0byBjb250cm9sIHBpcGVsaW5lIGJlaGF2aW9yLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyN3b3JrZmxvd1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93IHtcbiAgLyoqIFVzZWQgdG8gY29udHJvbCB3aGV0aGVyIG9yIG5vdCBhIHdob2xlIHBpcGVsaW5lIGlzIGNyZWF0ZWQuICovXG4gIHJlYWRvbmx5IHJ1bGVzPzogV29ya2Zsb3dSdWxlW107XG59XG5cbi8qKlxuICogVXNlZCB0byBjb250cm9sIHdoZXRoZXIgb3Igbm90IGEgd2hvbGUgcGlwZWxpbmUgaXMgY3JlYXRlZC5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jd29ya2Zsb3dydWxlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93UnVsZSB7XG4gIC8qIFNwZWNpZnkgd2hlbiB0byBhZGQgYSBqb2IgdG8gYSBwaXBlbGluZSBieSBjaGVja2luZyBmb3IgY2hhbmdlcyB0byBzcGVjaWZpYyBmaWxlcy4gKi9cbiAgcmVhZG9ubHkgY2hhbmdlcz86IHN0cmluZ1tdO1xuICAvKiBSdW4gYSBqb2Igd2hlbiBjZXJ0YWluIGZpbGVzIGV4aXN0IGluIHRoZSByZXBvc2l0b3J5LiAqL1xuICByZWFkb25seSBleGlzdHM/OiBzdHJpbmdbXTtcbiAgLyogQ2xhdXNlcyB0byBzcGVjaWZ5IHdoZW4gdG8gYWRkIGEgam9iIHRvIGEgcGlwZWxpbmUuKi9cbiAgcmVhZG9ubHkgaWY/OiBzdHJpbmc7XG4gIC8qIFVzZSB2YXJpYWJsZXMgaW4gcnVsZXMgdG8gZGVmaW5lIHZhcmlhYmxlcyBmb3Igc3BlY2lmaWMgY29uZGl0aW9ucy4gKi9cbiAgcmVhZG9ubHkgdmFyaWFibGVzPzogUmVjb3JkPHN0cmluZywgbnVtYmVyIHwgc3RyaW5nPjtcbiAgLyogQ29uZGl0aW9ucyBmb3Igd2hlbiB0byBydW4gdGhlIGpvYi4gRGVmYXVsdHMgdG8gJ29uX3N1Y2Nlc3MnICovXG4gIHJlYWRvbmx5IHdoZW4/OiBKb2JXaGVuO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyB0aGUgY29uZGl0aW9ucyBmb3Igd2hlbiB0byBydW4gdGhlIGpvYi4gRGVmYXVsdHMgdG8gJ29uX3N1Y2Nlc3MnLlxuICogVGhlIHZhbHVlIGNhbiBvbmx5IGJlICdhbHdheXMnIG9yICduZXZlcicgd2hlbiB1c2VkIHdpdGggd29ya2Zsb3cuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI3dvcmtmbG93cnVsZXNcbiAqL1xuZXhwb3J0IGVudW0gV29ya2Zsb3dXaGVuIHtcbiAgQUxXQVlTID0gXCJhbHdheXNcIixcbiAgTkVWRVIgPSBcIm5ldmVyXCIsXG59XG4iXX0=
117
+ })(WorkflowWhen || (exports.WorkflowWhen = WorkflowWhen = {}));
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9naXRsYWIvY29uZmlndXJhdGlvbi1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMkNBQTJDO0FBQzNDLDhHQUE4RztBQUM5RyxpRUFBaUU7OztBQWtDakU7OztHQUdHO0FBQ0gsSUFBWSxXQU9YO0FBUEQsV0FBWSxXQUFXO0lBQ3JCLG1HQUFtRztJQUNuRyw0QkFBYSxDQUFBO0lBQ2IsbUdBQW1HO0lBQ25HLDRCQUFhLENBQUE7SUFDYiwyR0FBMkc7SUFDM0csc0NBQXVCLENBQUE7QUFDekIsQ0FBQyxFQVBXLFdBQVcsMkJBQVgsV0FBVyxRQU90QjtBQUVEOzs7R0FHRztBQUNILElBQVksU0FPWDtBQVBELFdBQVksU0FBUztJQUNuQixpREFBaUQ7SUFDakQsOEJBQWlCLENBQUE7SUFDakIsZ0RBQWdEO0lBQ2hELHNDQUF5QixDQUFBO0lBQ3pCLHlFQUF5RTtJQUN6RSxzQ0FBeUIsQ0FBQTtBQUMzQixDQUFDLEVBUFcsU0FBUyx5QkFBVCxTQUFTLFFBT3BCO0FBcU1EOzs7R0FHRztBQUNILElBQVksT0FPWDtBQVBELFdBQVksT0FBTztJQUNqQiw0QkFBaUIsQ0FBQTtJQUNqQiw4QkFBbUIsQ0FBQTtJQUNuQiw0QkFBaUIsQ0FBQTtJQUNqQiwwQkFBZSxDQUFBO0lBQ2Ysb0NBQXlCLENBQUE7SUFDekIsb0NBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQVBXLE9BQU8sdUJBQVAsT0FBTyxRQU9sQjtBQXlGRDs7OztHQUlHO0FBQ0gsSUFBWSxNQUlYO0FBSkQsV0FBWSxNQUFNO0lBQ2hCLDZCQUFtQixDQUFBO0lBQ25CLHlCQUFlLENBQUE7SUFDZix1QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUpXLE1BQU0sc0JBQU4sTUFBTSxRQUlqQjtBQUVEOzs7R0FHRztBQUNILElBQVksY0FNWDtBQU5ELFdBQVksY0FBYztJQUN4Qiw2Q0FBMkIsQ0FBQTtJQUMzQixpQ0FBZSxDQUFBO0lBQ2YsMkNBQXlCLENBQUE7SUFDekIscUNBQW1CLENBQUE7SUFDbkIscUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQU5XLGNBQWMsOEJBQWQsY0FBYyxRQU16QjtBQXlCRDs7R0FFRztBQUNILElBQVksY0FFWDtBQUZELFdBQVksY0FBYztJQUN4QixtQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBRlcsY0FBYyw4QkFBZCxjQUFjLFFBRXpCO0FBZUQsSUFBWSxjQVdYO0FBWEQsV0FBWSxjQUFjO0lBQ3hCLCtDQUE2QixDQUFBO0lBQzdCLHlDQUF1QixDQUFBO0lBQ3ZCLGlEQUErQixDQUFBO0lBQy9CLGlDQUFlLENBQUE7SUFDZixpQ0FBZSxDQUFBO0lBQ2YsaURBQStCLENBQUE7SUFDL0IsaUNBQWUsQ0FBQTtJQUNmLHVDQUFxQixDQUFBO0lBQ3JCLCtCQUFhLENBQUE7SUFDYixxQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBWFcsY0FBYyw4QkFBZCxjQUFjLFFBV3pCO0FBK0REOztHQUVHO0FBQ0gsSUFBWSxRQUtYO0FBTEQsV0FBWSxRQUFRO0lBQ2xCLDJCQUFlLENBQUE7SUFDZiwyQkFBZSxDQUFBO0lBQ2YsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUxXLFFBQVEsd0JBQVIsUUFBUSxRQUtuQjtBQXVFRDs7OztHQUlHO0FBQ0gsSUFBWSxRQUVYO0FBRkQsV0FBWSxRQUFRO0lBQ2xCLDZCQUFpQixDQUFBO0FBQ25CLENBQUMsRUFGVyxRQUFRLHdCQUFSLFFBQVEsUUFFbkI7QUF1Q0Q7Ozs7R0FJRztBQUNILElBQVksWUFHWDtBQUhELFdBQVksWUFBWTtJQUN0QixpQ0FBaUIsQ0FBQTtJQUNqQiwrQkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFIVyxZQUFZLDRCQUFaLFlBQVksUUFHdkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvXG4vLyBTY2hlbWEgZnJvbTogaHR0cHM6Ly9naXRsYWIuY29tL2dpdGxhYi1vcmcvZ2l0bGFiLy0vcmF3L21hc3Rlci9hcHAvYXNzZXRzL2phdmFzY3JpcHRzL2VkaXRvci9zY2hlbWEvY2kuanNvblxuLy8gSW5pdGlhbCBUeXBlU2NyaXB0IEludGVyZmFjZXMgZnJvbTogaHR0cHM6Ly9hcHAucXVpY2t0eXBlLmlvLyNcblxuLyoqXG4gKiBDYWNoZSBEZWZpbml0aW9uLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNjYWNoZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlIHtcbiAgLyoqIERlZmluZXMgd2hpY2ggZmlsZXMgb3IgZGlyZWN0b3JpZXMgdG8gY2FjaGUuICovXG4gIHJlYWRvbmx5IHBhdGhzPzogc3RyaW5nW107XG5cbiAgLyoqIFVzZWQgdGhlIHRvIGdpdmUgZWFjaCBjYWNoZSBhIHVuaXF1ZSBpZGVudGlmeWluZyBrZXkuIEFsbCBqb2JzIHRoYXQgdXNlIHRoZSBzYW1lIGNhY2hlIGtleSB1c2UgdGhlIHNhbWUgY2FjaGUuICovXG4gIHJlYWRvbmx5IGtleT86IHN0cmluZyB8IENhY2hlS2V5RmlsZXM7XG5cbiAgLyoqIElmIHNldCB0byB0cnVlIGFsbCBmaWxlcyB0aGF0IGFyZSB1bnRyYWNrZWQgaW4geW91ciBHaXQgcmVwb3NpdG9yeSB3aWxsIGJlIGNhY2hlZC4gKi9cbiAgcmVhZG9ubHkgdW50cmFja2VkPzogYm9vbGVhbjtcblxuICAvKiogRGVmaW5lcyB0aGUgdXBsb2FkIGFuZCBkb3dubG9hZCBiZWhhdmlvdXIgb2YgdGhlIGNhY2hlLiAqL1xuICByZWFkb25seSBwb2xpY3k/OiBDYWNoZVBvbGljeTtcblxuICAvKiogRGVmaW5lcyB3aGVuIHRvIHNhdmUgdGhlIGNhY2hlLCBiYXNlZCBvbiB0aGUgc3RhdHVzIG9mIHRoZSBqb2IgKERlZmF1bHQ6IEpvYiBTdWNjZXNzKS4gKi9cbiAgcmVhZG9ubHkgd2hlbj86IENhY2hlV2hlbjtcbn1cblxuLyoqXG4gKiBVc2UgdGhpcyBjb25zdHJ1Y3QgdG8gZ2VuZXJhdGUgYSBuZXcga2V5IHdoZW4gb25lIG9yIHR3byBzcGVjaWZpYyBmaWxlcyBjaGFuZ2UuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI2NhY2hla2V5ZmlsZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYWNoZUtleUZpbGVzIHtcbiAgLyoqIFRoZSBmaWxlcyB0aGF0IGFyZSBjaGVja2VkIGFnYWluc3QuIElmIHRoZSBTSEEgY2hlY2tzdW0gY2hhbmdlcywgdGhlIGNhY2hlIGJlY29tZXMgaW52YWxpZC4gKi9cbiAgcmVhZG9ubHkgZmlsZXM6IHN0cmluZ1tdO1xuICAvKiogQWRkcyBhIGN1c3RvbSBwcmVmaXggdG8gdGhlIGNoZWNrc3VtcyBjb21wdXRlZC4gKi9cbiAgcmVhZG9ubHkgcHJlZml4Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyZSB0aGUgdXBsb2FkIGFuZCBkb3dubG9hZCBiZWhhdmlvdXIgb2YgYSBjYWNoZS5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jY2FjaGVwb2xpY3lcbiAqL1xuZXhwb3J0IGVudW0gQ2FjaGVQb2xpY3kge1xuICAvKiogT25seSBkb3dubG9hZCB0aGUgY2FjaGUgd2hlbiB0aGUgam9iIHN0YXJ0cywgYnV0IG5ldmVyIHVwbG9hZCBjaGFuZ2VzIHdoZW4gdGhlIGpvYiBmaW5pc2hlcy4gKi9cbiAgUFVMTCA9IFwicHVsbFwiLFxuICAvKiogT25seSB1cGxvYWQgYSBjYWNoZSB3aGVuIHRoZSBqb2IgZmluaXNoZXMsIGJ1dCBuZXZlciBkb3dubG9hZCB0aGUgY2FjaGUgd2hlbiB0aGUgam9iIHN0YXJ0cy4gKi9cbiAgUFVTSCA9IFwicHVzaFwiLFxuICAvKiogVGhlIGpvYiBkb3dubG9hZHMgdGhlIGNhY2hlIHdoZW4gdGhlIGpvYiBzdGFydHMsIGFuZCB1cGxvYWRzIGNoYW5nZXMgdG8gdGhlIGNhY2hlIHdoZW4gdGhlIGpvYiBlbmRzLiAqL1xuICBQVUxMX1BVU0ggPSBcInB1bGwtcHVzaFwiLFxufVxuXG4vKipcbiAqIENvbmZpZ3VyZSB3aGVuIGFydGlmYWN0cyBhcmUgdXBsb2FkZWQgZGVwZW5kZWQgb24gam9iIHN0YXR1cy5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jY2FjaGV3aGVuXG4gKi9cbmV4cG9ydCBlbnVtIENhY2hlV2hlbiB7XG4gIC8qKiBVcGxvYWQgYXJ0aWZhY3RzIHJlZ2FyZGxlc3Mgb2Ygam9iIHN0YXR1cy4gKi9cbiAgQUxXQVlTID0gXCJhbHdheXNcIixcbiAgLyoqIFVwbG9hZCBhcnRpZmFjdHMgb25seSB3aGVuIHRoZSBqb2IgZmFpbHMuICovXG4gIE9OX0ZBSUxVUkUgPSBcIm9uX2ZhaWx1cmVcIixcbiAgLyoqIFVwbG9hZCBhcnRpZmFjdHMgb25seSB3aGVuIHRoZSBqb2Igc3VjY2VlZHMgKHRoaXMgaXMgdGhlIGRlZmF1bHQpLiAqL1xuICBPTl9TVUNDRVNTID0gXCJvbl9zdWNjZXNzXCIsXG59XG5cbi8qKlxuICogRGVmYXVsdCBzZXR0aW5ncyBmb3IgdGhlIENJIENvbmZpZ3VyYXRpb24uIEpvYnMgdGhhdCBkbyBub3QgZGVmaW5lIG9uZSBvciBtb3JlIG9mIHRoZSBsaXN0ZWQga2V5d29yZHMgdXNlIHRoZSB2YWx1ZSBkZWZpbmVkIGluIHRoZSBkZWZhdWx0IHNlY3Rpb24uXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI2RlZmF1bHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZhdWx0IHtcbiAgLyogRGVmaW5lcyBzY3JpcHRzIHRoYXQgc2hvdWxkIHJ1biAqYWZ0ZXIqIGFsbCBqb2JzLiBDYW4gYmUgb3ZlcnJpZGVuIGJ5IHRoZSBqb2IgbGV2ZWwgYGFmdGVyU2NyaXB0LiAqL1xuICByZWFkb25seSBhZnRlclNjcmlwdD86IHN0cmluZ1tdO1xuICAvKiBMaXN0IG9mIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0aGF0IHNob3VsZCBiZSBhdHRhY2hlZCB0byB0aGUgam9iIGlmIGl0IHN1Y2NlZWRzLiBBcnRpZmFjdHMgYXJlIHNlbnQgdG8gR2l0bGFiIHdoZXJlIHRoZXkgY2FuIGJlIGRvd25sb2FkZWQuICovXG4gIHJlYWRvbmx5IGFydGlmYWN0cz86IEFydGlmYWN0cztcbiAgLyogRGVmaW5lcyBzY3JpcHRzIHRoYXQgc2hvdWxkIHJ1biAqYmVmb3JlKiBhbGwgam9icy4gQ2FuIGJlIG92ZXJyaWRlbiBieSB0aGUgam9iIGxldmVsIGBhZnRlclNjcmlwdGAuICovXG4gIHJlYWRvbmx5IGJlZm9yZVNjcmlwdD86IHN0cmluZ1tdO1xuICAvKiBBIGxpc3Qgb2YgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvIGNhY2hlIGJldHdlZW4gam9icy4gWW91IGNhbiBvbmx5IHVzZSBwYXRocyB0aGF0IGFyZSBpbiB0aGUgbG9jYWwgd29ya2luZyBjb3B5LiAqL1xuICByZWFkb25seSBjYWNoZT86IENhY2hlO1xuICAvKiBTcGVjaWZpZXMgdGhlIGRlZmF1bHQgZG9ja2VyIGltYWdlIHRvIHVzZSBnbG9iYWxseSBmb3IgYWxsIGpvYnMuICovXG4gIHJlYWRvbmx5IGltYWdlPzogSW1hZ2U7XG4gIC8qIElmIGEgam9iIHNob3VsZCBiZSBjYW5jZWxlZCB3aGVuIGEgbmV3ZXIgcGlwZWxpbmUgc3RhcnRzIGJlZm9yZSB0aGUgam9iIGNvbXBsZXRlcyAoRGVmYXVsdDogZmFsc2UpLiovXG4gIHJlYWRvbmx5IGludGVycnVwdGlibGU/OiBib29sZWFuO1xuICAvKiBIb3cgbWFueSB0aW1lcyBhIGpvYiBpcyByZXRyaWVkIGlmIGl0IGZhaWxzLiBJZiBub3QgZGVmaW5lZCwgZGVmYXVsdHMgdG8gMCBhbmQgam9icyBkbyBub3QgcmV0cnkuICovXG4gIHJlYWRvbmx5IHJldHJ5PzogUmV0cnk7XG4gIC8qIEFkZGl0aW9uYWwgRG9ja2VyIGltYWdlcyB0byBydW4gc2NyaXB0cyBpbi4gVGhlIHNlcnZpY2UgaW1hZ2UgaXMgbGlua2VkIHRvIHRoZSBpbWFnZSBzcGVjaWZpZWQgaW4gdGhlICBpbWFnZSBwYXJhbWV0ZXIuICovXG4gIHJlYWRvbmx5IHNlcnZpY2VzPzogU2VydmljZVtdO1xuICAvKiBVc2VkIHRvIHNlbGVjdCBhIHNwZWNpZmljIHJ1bm5lciBmcm9tIHRoZSBsaXN0IG9mIGFsbCBydW5uZXJzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdGhlIHByb2plY3QuICovXG4gIHJlYWRvbmx5IHRhZ3M/OiBzdHJpbmdbXTtcbiAgLyogQSBkZWZhdWx0IHRpbWVvdXQgam9iIHdyaXR0ZW4gaW4gbmF0dXJhbCBsYW5ndWFnZSAoRXguIG9uZSBob3VyLCAzNjAwIHNlY29uZHMsIDYwIG1pbnV0ZXMpLiAqL1xuICByZWFkb25seSB0aW1lb3V0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFVzZWQgdG8gc3BlY2lmeSBhIGxpc3Qgb2YgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRoYXQgc2hvdWxkIGJlIGF0dGFjaGVkIHRvIHRoZSBqb2IgaWYgaXRcbiAqIHN1Y2NlZWRzLiBBcnRpZmFjdHMgYXJlIHNlbnQgdG8gR2l0bGFiIHdoZXJlIHRoZXkgY2FuIGJlIGRvd25sb2FkZWQuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI2FydGlmYWN0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFydGlmYWN0cyB7XG4gIC8qKiBBIGxpc3Qgb2YgcGF0aHMgdG8gZmlsZXMvZm9sZGVycyB0aGF0IHNob3VsZCBiZSBleGNsdWRlZCBpbiB0aGUgYXJ0aWZhY3QuICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGU/OiBzdHJpbmdbXTtcbiAgLyoqIEhvdyBsb25nIGFydGlmYWN0cyBzaG91bGQgYmUga2VwdC4gVGhleSBhcmUgc2F2ZWQgMzAgZGF5cyBieSBkZWZhdWx0LiBBcnRpZmFjdHMgdGhhdCBoYXZlIGV4cGlyZWQgYXJlIHJlbW92ZWQgcGVyaW9kaWNhbGx5IHZpYSBjcm9uIGpvYi4gU3VwcG9ydHMgYSB3aWRlIHZhcmlldHkgb2YgZm9ybWF0cywgZS5nLiAnMSB3ZWVrJywgJzMgbWlucyA0IHNlYycsICcyIGhycyAyMCBtaW4nLCAnMmgyMG1pbicsICc2IG1vcyAxIGRheScsICc0NyB5cnMgNiBtb3MgYW5kIDRkJywgJzMgd2Vla3MgYW5kIDIgZGF5cycuICovXG4gIHJlYWRvbmx5IGV4cGlyZUluPzogc3RyaW5nO1xuICAvKiogQ2FuIGJlIHVzZWQgdG8gZXhwb3NlIGpvYiBhcnRpZmFjdHMgaW4gdGhlIG1lcmdlIHJlcXVlc3QgVUkuIEdpdExhYiB3aWxsIGFkZCBhIGxpbmsgPGV4cG9zZV9hcz4gdG8gdGhlIHJlbGV2YW50IG1lcmdlIHJlcXVlc3QgdGhhdCBwb2ludHMgdG8gdGhlIGFydGlmYWN0LiAqL1xuICByZWFkb25seSBleHBvc2VBcz86IHN0cmluZztcbiAgLyoqIE5hbWUgZm9yIHRoZSBhcmNoaXZlIGNyZWF0ZWQgb24gam9iIHN1Y2Nlc3MuIENhbiB1c2UgdmFyaWFibGVzIGluIHRoZSBuYW1lLCBlLmcuICckQ0lfSk9CX05BTUUnICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBBIGxpc3Qgb2YgcGF0aHMgdG8gZmlsZXMvZm9sZGVycyB0aGF0IHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgYXJ0aWZhY3QuICovXG4gIHJlYWRvbmx5IHBhdGhzPzogc3RyaW5nW107XG4gIC8qKiBSZXBvcnRzIHdpbGwgYmUgdXBsb2FkZWQgYXMgYXJ0aWZhY3RzLCBhbmQgb2Z0ZW4gZGlzcGxheWVkIGluIHRoZSBHaXRsYWIgVUksIHN1Y2ggYXMgaW4gTWVyZ2UgUmVxdWVzdHMuKi9cbiAgcmVhZG9ubHkgcmVwb3J0cz86IFJlcG9ydHM7XG4gIC8qKiBXaGV0aGVyIHRvIGFkZCBhbGwgdW50cmFja2VkIGZpbGVzIChhbG9uZyB3aXRoICdhcnRpZmFjdHMucGF0aHMnKSB0byB0aGUgYXJ0aWZhY3QuKi9cbiAgcmVhZG9ubHkgdW50cmFja2VkPzogYm9vbGVhbjtcbiAgLyoqIENvbmZpZ3VyZSB3aGVuIGFydGlmYWN0cyBhcmUgdXBsb2FkZWQgZGVwZW5kZWQgb24gam9iIHN0YXR1cy4qL1xuICByZWFkb25seSB3aGVuPzogQ2FjaGVXaGVuO1xufVxuXG4vKipcbiAqIENvZGUgY292ZXJhZ2UgcmVwb3J0IGludGVyZmFjZVxuICogQGxpbmsgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC9hcnRpZmFjdHNfcmVwb3J0cy5odG1sI2FydGlmYWN0c3JlcG9ydHNjb3ZlcmFnZV9yZXBvcnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3ZlcmFnZVJlcG9ydCB7XG4gIHJlYWRvbmx5IGNvdmVyYWdlRm9ybWF0OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXBvcnRzIHdpbGwgYmUgdXBsb2FkZWQgYXMgYXJ0aWZhY3RzLCBhbmQgb2Z0ZW4gZGlzcGxheWVkIGluIHRoZSBHaXRsYWIgVUksIHN1Y2ggYXMgaW5cbiAqIE1lcmdlIFJlcXVlc3RzLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNhcnRpZmFjdHNyZXBvcnRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0cyB7XG4gIC8qKiBQYXRoIGZvciBmaWxlKHMpIHRoYXQgc2hvdWxkIGJlIHBhcnNlZCBhcyBDb2JlcnR1cmEgWE1MIGNvdmVyYWdlIHJlcG9ydFxuICAgKiBAZGVwcmVjYXRlZCBwZXIge0BsaW5rIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL3VwZGF0ZS9kZXByZWNhdGlvbnMuaHRtbCNhcnRpZmFjdHNyZXBvcnRzY29iZXJ0dXJhLWtleXdvcmR9IHVzZSB7QGxpbmsgY292ZXJhZ2VSZXBvcnR9IGluc3RlYWRcbiAgICovXG4gIHJlYWRvbmx5IGNvYmVydHVyYT86IHN0cmluZ1tdO1xuICAvKiogUGF0aCB0byBmaWxlIG9yIGxpc3Qgb2YgZmlsZXMgd2l0aCBjb2RlIHF1YWxpdHkgcmVwb3J0KHMpIChzdWNoIGFzIENvZGUgQ2xpbWF0ZSkuKi9cbiAgcmVhZG9ubHkgY29kZXF1YWxpdHk/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggQ29udGFpbmVyIHNjYW5uaW5nIHZ1bG5lcmFiaWxpdGllcyByZXBvcnQocykuKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyU2Nhbm5pbmc/OiBzdHJpbmdbXTtcbiAgLyoqIENvZGUgY292ZXJhZ2UgcmVwb3J0IGluZm9ybWF0aW9uICovXG4gIHJlYWRvbmx5IGNvdmVyYWdlUmVwb3J0PzogQ292ZXJhZ2VSZXBvcnQ7XG4gIC8qKiBQYXRoIHRvIGZpbGUgb3IgbGlzdCBvZiBmaWxlcyB3aXRoIERBU1QgdnVsbmVyYWJpbGl0aWVzIHJlcG9ydChzKS4qL1xuICByZWFkb25seSBkYXN0Pzogc3RyaW5nW107XG4gIC8qKiBQYXRoIHRvIGZpbGUgb3IgbGlzdCBvZiBmaWxlcyB3aXRoIERlcGVuZGVuY3kgc2Nhbm5pbmcgdnVsbmVyYWJpbGl0aWVzIHJlcG9ydChzKS4qL1xuICByZWFkb25seSBkZXBlbmRlbmN5U2Nhbm5pbmc/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIGNvbnRhaW5pbmcgcnVudGltZS1jcmVhdGVkIHZhcmlhYmxlcyBmb3IgdGhpcyBqb2IuKi9cbiAgcmVhZG9ubHkgZG90ZW52Pzogc3RyaW5nW107XG4gIC8qKiBQYXRoIGZvciBmaWxlKHMpIHRoYXQgc2hvdWxkIGJlIHBhcnNlZCBhcyBKVW5pdCBYTUwgcmVzdWx0Ki9cbiAgcmVhZG9ubHkganVuaXQ/OiBzdHJpbmdbXTtcbiAgLyoqIERlcHJlY2F0ZWQgaW4gMTIuODogUGF0aCB0byBmaWxlIG9yIGxpc3Qgb2YgZmlsZXMgd2l0aCBsaWNlbnNlIHJlcG9ydChzKS4qL1xuICByZWFkb25seSBsaWNlbnNlTWFuYWdlbWVudD86IHN0cmluZ1tdO1xuICAvKiogUGF0aCB0byBmaWxlIG9yIGxpc3Qgb2YgZmlsZXMgd2l0aCBsaWNlbnNlIHJlcG9ydChzKS4qL1xuICByZWFkb25seSBsaWNlbnNlU2Nhbm5pbmc/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIGNvbnRhaW5pbmcgY29kZSBpbnRlbGxpZ2VuY2UgKExhbmd1YWdlIFNlcnZlciBJbmRleCBGb3JtYXQpLiovXG4gIHJlYWRvbmx5IGxzaWY/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggY3VzdG9tIG1ldHJpY3MgcmVwb3J0KHMpLiovXG4gIHJlYWRvbmx5IG1ldHJpY3M/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggcGVyZm9ybWFuY2UgbWV0cmljcyByZXBvcnQocykuKi9cbiAgcmVhZG9ubHkgcGVyZm9ybWFuY2U/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggcmVxdWlyZW1lbnRzIHJlcG9ydChzKS4qL1xuICByZWFkb25seSByZXF1aXJlbWVudHM/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggU0FTVCB2dWxuZXJhYmlsaXRpZXMgcmVwb3J0KHMpLiovXG4gIHJlYWRvbmx5IHNhc3Q/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggc2VjcmV0IGRldGVjdGlvbiByZXBvcnQocykuKi9cbiAgcmVhZG9ubHkgc2VjcmV0RGV0ZWN0aW9uPzogc3RyaW5nW107XG4gIC8qKiBQYXRoIHRvIGZpbGUgb3IgbGlzdCBvZiBmaWxlcyB3aXRoIHRlcnJhZm9ybSBwbGFuKHMpLiovXG4gIHJlYWRvbmx5IHRlcnJhZm9ybT86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgZG9ja2VyIGltYWdlIHRvIHVzZSBmb3IgdGhlIGpvYiBvciBnbG9iYWxseSBmb3IgYWxsIGpvYnMuIEpvYiBjb25maWd1cmF0aW9uXG4gKiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgZ2xvYmFsIHNldHRpbmcuIFJlcXVpcmVzIGEgY2VydGFpbiBraW5kIG9mIEdpdGxhYiBydW5uZXIgZXhlY3V0b3IuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI2ltYWdlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2Uge1xuICAvKiogQ29tbWFuZCBvciBzY3JpcHQgdGhhdCBzaG91bGQgYmUgZXhlY3V0ZWQgYXMgdGhlIGNvbnRhaW5lcidzIGVudHJ5cG9pbnQuIEl0IHdpbGwgYmUgdHJhbnNsYXRlZCB0byBEb2NrZXIncyAtLWVudHJ5cG9pbnQgb3B0aW9uIHdoaWxlIGNyZWF0aW5nIHRoZSBjb250YWluZXIuIFRoZSBzeW50YXggaXMgc2ltaWxhciB0byBEb2NrZXJmaWxlJ3MgRU5UUllQT0lOVCBkaXJlY3RpdmUsIHdoZXJlIGVhY2ggc2hlbGwgdG9rZW4gaXMgYSBzZXBhcmF0ZSBzdHJpbmcgaW4gdGhlIGFycmF5LiovXG4gIHJlYWRvbmx5IGVudHJ5cG9pbnQ/OiBhbnlbXTtcbiAgLyoqIEZ1bGwgbmFtZSBvZiB0aGUgaW1hZ2UgdGhhdCBzaG91bGQgYmUgdXNlZC4gSXQgc2hvdWxkIGNvbnRhaW4gdGhlIFJlZ2lzdHJ5IHBhcnQgaWYgbmVlZGVkLiovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBIb3cgbWFueSB0aW1lcyBhIGpvYiBpcyByZXRyaWVkIGlmIGl0IGZhaWxzLiBJZiBub3QgZGVmaW5lZCwgZGVmYXVsdHMgdG8gMCBhbmQgam9icyBkbyBub3QgcmV0cnkuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI3JldHJ5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnkge1xuICAvKiogMCAoZGVmYXVsdCksIDEsIG9yIDIuKi9cbiAgcmVhZG9ubHkgbWF4PzogbnVtYmVyO1xuICAvKiogRWl0aGVyIGEgc2luZ2xlIG9yIGFycmF5IG9mIGVycm9yIHR5cGVzIHRvIHRyaWdnZXIgam9iIHJldHJ5LiovXG4gIHJlYWRvbmx5IHdoZW4/OiBhbnk7XG59XG5cbi8qKlxuICogVXNlZCB0byBzcGVjaWZ5IGFuIGFkZGl0aW9uYWwgRG9ja2VyIGltYWdlIHRvIHJ1biBzY3JpcHRzIGluLiBUaGUgc2VydmljZSBpbWFnZSBpcyBsaW5rZWQgdG8gdGhlIGltYWdlIHNwZWNpZmllZCBpbiB0aGUgQERlZmF1bHQgaW1hZ2Uga2V5d29yZC5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jc2VydmljZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlIHtcbiAgLyoqIEFkZGl0aW9uYWwgYWxpYXMgdGhhdCBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgdGhlIHNlcnZpY2UgZnJvbSB0aGUgam9iJ3MgY29udGFpbmVyLiBSZWFkIEFjY2Vzc2luZyB0aGUgc2VydmljZXMgZm9yIG1vcmUgaW5mb3JtYXRpb24uKi9cbiAgcmVhZG9ubHkgYWxpYXM/OiBzdHJpbmc7XG4gIC8qKiBDb21tYW5kIG9yIHNjcmlwdCB0aGF0IHNob3VsZCBiZSB1c2VkIGFzIHRoZSBjb250YWluZXIncyBjb21tYW5kLiBJdCB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gYXJndW1lbnRzIHBhc3NlZCB0byBEb2NrZXIgYWZ0ZXIgdGhlIGltYWdlJ3MgbmFtZS4gVGhlIHN5bnRheCBpcyBzaW1pbGFyIHRvIERvY2tlcmZpbGUncyBDTUQgZGlyZWN0aXZlLCB3aGVyZSBlYWNoIHNoZWxsIHRva2VuIGlzIGEgc2VwYXJhdGUgc3RyaW5nIGluIHRoZSBhcnJheS4qL1xuICByZWFkb25seSBjb21tYW5kPzogc3RyaW5nW107XG4gIC8qKiBDb21tYW5kIG9yIHNjcmlwdCB0aGF0IHNob3VsZCBiZSBleGVjdXRlZCBhcyB0aGUgY29udGFpbmVyJ3MgZW50cnlwb2ludC4gSXQgd2lsbCBiZSB0cmFuc2xhdGVkIHRvIERvY2tlcidzIC0tZW50cnlwb2ludCBvcHRpb24gd2hpbGUgY3JlYXRpbmcgdGhlIGNvbnRhaW5lci4gVGhlIHN5bnRheCBpcyBzaW1pbGFyIHRvIERvY2tlcmZpbGUncyBFTlRSWVBPSU5UIGRpcmVjdGl2ZSwgd2hlcmUgZWFjaCBzaGVsbCB0b2tlbiBpcyBhIHNlcGFyYXRlIHN0cmluZyBpbiB0aGUgYXJyYXkuKi9cbiAgcmVhZG9ubHkgZW50cnlwb2ludD86IHN0cmluZ1tdO1xuICAvKiogRnVsbCBuYW1lIG9mIHRoZSBpbWFnZSB0aGF0IHNob3VsZCBiZSB1c2VkLiBJdCBzaG91bGQgY29udGFpbiB0aGUgUmVnaXN0cnkgcGFydCBpZiBuZWVkZWQuKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuIGluY2x1ZGVkIFlBTUwgZmlsZS5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jaW5jbHVkZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluY2x1ZGUge1xuICAvKiogUmVsYXRpdmUgcGF0aCBmcm9tIGxvY2FsIHJlcG9zaXRvcnkgcm9vdCAoYC9gKSB0byB0aGUgYHlhbWxgL2B5bWxgIGZpbGUgdGVtcGxhdGUuIFRoZSBmaWxlIG11c3QgYmUgb24gdGhlIHNhbWUgYnJhbmNoLCBhbmQgZG9lcyBub3Qgd29yayBhY3Jvc3MgZ2l0IHN1Ym1vZHVsZXMuKi9cbiAgcmVhZG9ubHkgbG9jYWw/OiBzdHJpbmc7XG4gIC8qKlJ1bGVzIGFsbG93cyBmb3IgYW4gYXJyYXkgb2YgaW5kaXZpZHVhbCBydWxlIG9iamVjdHMgdG8gYmUgZXZhbHVhdGVkIGluIG9yZGVyLCB1bnRpbCBvbmUgbWF0Y2hlcyBhbmQgZHluYW1pY2FsbHkgcHJvdmlkZXMgYXR0cmlidXRlcyB0byB0aGUgam9iLiAqL1xuICByZWFkb25seSBydWxlcz86IEluY2x1ZGVSdWxlW107XG4gIC8qKiBGaWxlcyBmcm9tIGFub3RoZXIgcHJpdmF0ZSBwcm9qZWN0IG9uIHRoZSBzYW1lIEdpdExhYiBpbnN0YW5jZS4gWW91IGNhbiB1c2UgYGZpbGVgIGluIGNvbWJpbmF0aW9uIHdpdGggYHByb2plY3RgIG9ubHkuICovXG4gIHJlYWRvbmx5IGZpbGU/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gdGhlIHByb2plY3QsIGUuZy4gYGdyb3VwL3Byb2plY3RgLCBvciBgZ3JvdXAvc3ViLWdyb3VwL3Byb2plY3RgLiovXG4gIHJlYWRvbmx5IHByb2plY3Q/OiBzdHJpbmc7XG4gIC8qKiBCcmFuY2gvVGFnL0NvbW1pdC1oYXNoIGZvciB0aGUgdGFyZ2V0IHByb2plY3QuKi9cbiAgcmVhZG9ubHkgcmVmPzogc3RyaW5nO1xuICAvKiogVXNlIGEgYC5naXRsYWItY2kueW1sYCB0ZW1wbGF0ZSBhcyBhIGJhc2UsIGUuZy4gYE5vZGVqcy5naXRsYWItY2kueW1sYC4qL1xuICByZWFkb25seSB0ZW1wbGF0ZT86IHN0cmluZztcbiAgLyoqIFVSTCB0byBhIGB5YW1sYC9geW1sYCB0ZW1wbGF0ZSBmaWxlIHVzaW5nIEhUVFAvSFRUUFMuKi9cbiAgcmVhZG9ubHkgcmVtb3RlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJ1bGVzIGFsbG93cyBmb3IgYW4gYXJyYXkgb2YgaW5kaXZpZHVhbCBydWxlIG9iamVjdHMgdG8gYmUgZXZhbHVhdGVkIGluIG9yZGVyLCB1bnRpbCBvbmVcbiAqIG1hdGNoZXMgYW5kIGR5bmFtaWNhbGx5IHByb3ZpZGVzIGF0dHJpYnV0ZXMgdG8gdGhlIGpvYi5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC9pbmNsdWRlcy5odG1sI3VzZS1ydWxlcy13aXRoLWluY2x1ZGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmNsdWRlUnVsZSB7XG4gIC8qIFdoZXRoZXIgYSBwaXBlbGluZSBzaG91bGQgY29udGludWUgcnVubmluZyB3aGVuIGEgam9iIGZhaWxzLiAqL1xuICByZWFkb25seSBhbGxvd0ZhaWx1cmU/OiBib29sZWFuIHwgQWxsb3dGYWlsdXJlO1xuICAvKiBTcGVjaWZ5IHdoZW4gdG8gYWRkIGEgam9iIHRvIGEgcGlwZWxpbmUgYnkgY2hlY2tpbmcgZm9yIGNoYW5nZXMgdG8gc3BlY2lmaWMgZmlsZXMuICovXG4gIHJlYWRvbmx5IGNoYW5nZXM/OiBzdHJpbmdbXTtcbiAgLyogUnVuIGEgam9iIHdoZW4gY2VydGFpbiBmaWxlcyBleGlzdCBpbiB0aGUgcmVwb3NpdG9yeS4gKi9cbiAgcmVhZG9ubHkgZXhpc3RzPzogc3RyaW5nW107XG4gIC8qIENsYXVzZXMgdG8gc3BlY2lmeSB3aGVuIHRvIGFkZCBhIGpvYiB0byBhIHBpcGVsaW5lLiovXG4gIHJlYWRvbmx5IGlmPzogc3RyaW5nO1xuICAvKiBFeGVjdXRlIHNjcmlwdHMgYWZ0ZXIgYSB3YWl0aW5nIHBlcmlvZCB3cml0dGVuIGluIG5hdHVyYWwgbGFuZ3VhZ2UgKEV4LiBvbmUgaG91ciwgMzYwMCBzZWNvbmRzLCA2MCBtaW51dGVzKS4gKi9cbiAgcmVhZG9ubHkgc3RhcnRJbj86IHN0cmluZztcbiAgLyogVXNlIHZhcmlhYmxlcyBpbiBydWxlcyB0byBkZWZpbmUgdmFyaWFibGVzIGZvciBzcGVjaWZpYyBjb25kaXRpb25zLiAqL1xuICByZWFkb25seSB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+O1xuICAvKiBDb25kaXRpb25zIGZvciB3aGVuIHRvIHJ1biB0aGUgam9iLiBEZWZhdWx0cyB0byAnb25fc3VjY2VzcycgKi9cbiAgcmVhZG9ubHkgd2hlbj86IEpvYldoZW47XG59XG5cbi8qKlxuICogRXhpdCBjb2RlIHRoYXQgYXJlIG5vdCBjb25zaWRlcmVkIGZhaWx1cmUuIFRoZSBqb2IgZmFpbHMgZm9yIGFueSBvdGhlciBleGl0IGNvZGUuXG4gKiBZb3UgY2FuIGxpc3Qgd2hpY2ggZXhpdCBjb2RlcyBhcmUgbm90IGNvbnNpZGVyZWQgZmFpbHVyZXMuIFRoZSBqb2IgZmFpbHMgZm9yIGFueSBvdGhlclxuICogZXhpdCBjb2RlLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNhbGxvd19mYWlsdXJlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxsb3dGYWlsdXJlIHtcbiAgcmVhZG9ubHkgZXhpdENvZGVzOiBudW1iZXJbXSB8IG51bWJlcjtcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgdGhlIGNvbmRpdGlvbnMgZm9yIHdoZW4gdG8gcnVuIHRoZSBqb2IuIERlZmF1bHRzIHRvICdvbl9zdWNjZXNzJy5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jd2hlblxuICovXG5leHBvcnQgZW51bSBKb2JXaGVuIHtcbiAgQUxXQVlTID0gXCJhbHdheXNcIixcbiAgREVMQVlFRCA9IFwiZGVsYXllZFwiLFxuICBNQU5VQUwgPSBcIm1hbnVhbFwiLFxuICBORVZFUiA9IFwibmV2ZXJcIixcbiAgT05fRkFJTFVSRSA9IFwib25fZmFpbHVyZVwiLFxuICBPTl9TVUNDRVNTID0gXCJvbl9zdWNjZXNzXCIsXG59XG5cbi8qKlxuICogSm9icyBhcmUgdGhlIG1vc3QgZnVuZGFtZW50YWwgZWxlbWVudCBvZiBhIC5naXRsYWItY2kueW1sIGZpbGUuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL2pvYnMvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSm9iIHtcbiAgLyogRGVmaW5lcyBzY3JpcHRzIHRoYXQgc2hvdWxkIHJ1biAqYWZ0ZXIqIHRoZSBqb2IuICovXG4gIHJlYWRvbmx5IGFmdGVyU2NyaXB0Pzogc3RyaW5nW107XG4gIC8qKiBXaGV0aGVyIHRvIGFsbG93IHRoZSBwaXBlbGluZSB0byBjb250aW51ZSBydW5uaW5nIG9uIGpvYiBmYWlsdXJlIChEZWZhdWx0OiBmYWxzZSkuICovXG4gIHJlYWRvbmx5IGFsbG93RmFpbHVyZT86IGJvb2xlYW4gfCBBbGxvd0ZhaWx1cmU7XG4gIC8qIEEgbGlzdCBvZiBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdGhhdCBzaG91bGQgYmUgYXR0YWNoZWQgdG8gdGhlIGpvYiBpZiBpdCBzdWNjZWVkcy4gQXJ0aWZhY3RzIGFyZSBzZW50IHRvIEdpdGxhYiB3aGVyZSB0aGV5IGNhbiBiZSBkb3dubG9hZGVkLiAqL1xuICByZWFkb25seSBhcnRpZmFjdHM/OiBBcnRpZmFjdHM7XG4gIC8qIERlZmluZXMgc2NyaXB0cyB0aGF0IHNob3VsZCBydW4gKmJlZm9yZSogdGhlIGpvYi4gKi9cbiAgcmVhZG9ubHkgYmVmb3JlU2NyaXB0Pzogc3RyaW5nW107XG4gIC8qIEEgbGlzdCBvZiBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gY2FjaGUgYmV0d2VlbiBqb2JzLiBZb3UgY2FuIG9ubHkgdXNlIHBhdGhzIHRoYXQgYXJlIGluIHRoZSBsb2NhbCB3b3JraW5nIGNvcHkuICovXG4gIHJlYWRvbmx5IGNhY2hlPzogQ2FjaGU7XG4gIC8qKiBNdXN0IGJlIGEgcmVndWxhciBleHByZXNzaW9uLCBvcHRpb25hbGx5IGJ1dCByZWNvbW1lbmRlZCB0byBiZSBxdW90ZWQsIGFuZCBtdXN0IGJlIHN1cnJvdW5kZWQgd2l0aCAnLycuIEV4YW1wbGU6ICcvQ29kZSBjb3ZlcmFnZTogXFxkK1xcLlxcZCsvJyovXG4gIHJlYWRvbmx5IGNvdmVyYWdlPzogc3RyaW5nO1xuICAvKiogU3BlY2lmeSBhIGxpc3Qgb2Ygam9iIG5hbWVzIGZyb20gZWFybGllciBzdGFnZXMgZnJvbSB3aGljaCBhcnRpZmFjdHMgc2hvdWxkIGJlIGxvYWRlZC4gQnkgZGVmYXVsdCwgYWxsIHByZXZpb3VzIGFydGlmYWN0cyBhcmUgcGFzc2VkLiBVc2UgYW4gZW1wdHkgYXJyYXkgdG8gc2tpcCBkb3dubG9hZGluZyBhcnRpZmFjdHMuKi9cbiAgcmVhZG9ubHkgZGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG4gIC8qKiBVc2VkIHRvIGFzc29jaWF0ZSBlbnZpcm9ubWVudCBtZXRhZGF0YSB3aXRoIGEgZGVwbG95LiBFbnZpcm9ubWVudCBjYW4gaGF2ZSBhIG5hbWUgYW5kIFVSTCBhdHRhY2hlZCB0byBpdCwgYW5kIHdpbGwgYmUgZGlzcGxheWVkIHVuZGVyIC9lbnZpcm9ubWVudHMgdW5kZXIgdGhlIHByb2plY3QuKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiBFbnZpcm9ubWVudCB8IHN0cmluZztcbiAgLyoqIEpvYiB3aWxsIHJ1biAqZXhjZXB0KiBmb3Igd2hlbiB0aGVzZSBmaWx0ZXJpbmcgb3B0aW9ucyBtYXRjaC4qL1xuICByZWFkb25seSBleGNlcHQ/OiBzdHJpbmdbXSB8IEZpbHRlcjtcbiAgLyoqIFRoZSBuYW1lIG9mIG9uZSBvciBtb3JlIGpvYnMgdG8gaW5oZXJpdCBjb25maWd1cmF0aW9uIGZyb20uKi9cbiAgcmVhZG9ubHkgZXh0ZW5kcz86IHN0cmluZ1tdO1xuICAvKiBTcGVjaWZpZXMgdGhlIGRlZmF1bHQgZG9ja2VyIGltYWdlIHRvIHVzZWQgZm9yIHRoZSBqb2IuICovXG4gIHJlYWRvbmx5IGltYWdlPzogSW1hZ2U7XG4gIC8qKiBDb250cm9scyBpbmhlcml0YW5jZSBvZiBnbG9iYWxseS1kZWZpbmVkIGRlZmF1bHRzIGFuZCB2YXJpYWJsZXMuIEJvb2xlYW4gdmFsdWVzIGNvbnRyb2wgaW5oZXJpdGFuY2Ugb2YgYWxsIGRlZmF1bHQ6IG9yIHZhcmlhYmxlczoga2V5d29yZHMuIFRvIGluaGVyaXQgb25seSBhIHN1YnNldCBvZiBkZWZhdWx0OiBvciB2YXJpYWJsZXM6IGtleXdvcmRzLCBzcGVjaWZ5IHdoYXQgeW91IHdpc2ggdG8gaW5oZXJpdC4gQW55dGhpbmcgbm90IGxpc3RlZCBpcyBub3QgaW5oZXJpdGVkLiovXG4gIHJlYWRvbmx5IGluaGVyaXQ/OiBJbmhlcml0O1xuICAvKiBJZiBhIGpvYiBzaG91bGQgYmUgY2FuY2VsZWQgd2hlbiBhIG5ld2VyIHBpcGVsaW5lIHN0YXJ0cyBiZWZvcmUgdGhlIGpvYiBjb21wbGV0ZXMgKERlZmF1bHQ6IGZhbHNlKS4qL1xuICByZWFkb25seSBpbnRlcnJ1cHRpYmxlPzogYm9vbGVhbjtcbiAgLyoqIFRoZSBsaXN0IG9mIGpvYnMgaW4gcHJldmlvdXMgc3RhZ2VzIHdob3NlIHNvbGUgY29tcGxldGlvbiBpcyBuZWVkZWQgdG8gc3RhcnQgdGhlIGN1cnJlbnQgam9iLiovXG4gIHJlYWRvbmx5IG5lZWRzPzogQXJyYXk8TmVlZCB8IHN0cmluZz47XG4gIC8qKiBKb2Igd2lsbCBydW4gKm9ubHkqIHdoZW4gdGhlc2UgZmlsdGVyaW5nIG9wdGlvbnMgbWF0Y2guKi9cbiAgcmVhZG9ubHkgb25seT86IHN0cmluZ1tdIHwgRmlsdGVyO1xuICAvKiogUGFyYWxsZWwgd2lsbCBzcGxpdCB1cCBhIHNpbmdsZSBqb2IgaW50byBzZXZlcmFsLCBhbmQgcHJvdmlkZSBgQ0lfTk9ERV9JTkRFWGAgYW5kIGBDSV9OT0RFX1RPVEFMYCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZSBydW5uaW5nIGpvYnMuKi9cbiAgcmVhZG9ubHkgcGFyYWxsZWw/OiBQYXJhbGxlbCB8IG51bWJlcjtcbiAgLyoqIEluZGljYXRlcyB0aGF0IHRoZSBqb2IgY3JlYXRlcyBhIFJlbGVhc2UuKi9cbiAgcmVhZG9ubHkgcmVsZWFzZT86IFJlbGVhc2U7XG4gIC8qKiBMaW1pdCBqb2IgY29uY3VycmVuY3kuIENhbiBiZSB1c2VkIHRvIGVuc3VyZSB0aGF0IHRoZSBSdW5uZXIgd2lsbCBub3QgcnVuIGNlcnRhaW4gam9icyBzaW11bHRhbmVvdXNseS4qL1xuICByZWFkb25seSByZXNvdXJjZUdyb3VwPzogc3RyaW5nO1xuICAvKiBIb3cgbWFueSB0aW1lcyBhIGpvYiBpcyByZXRyaWVkIGlmIGl0IGZhaWxzLiBJZiBub3QgZGVmaW5lZCwgZGVmYXVsdHMgdG8gMCBhbmQgam9icyBkbyBub3QgcmV0cnkuICovXG4gIHJlYWRvbmx5IHJldHJ5PzogUmV0cnk7XG4gIC8qKlJ1bGVzIGFsbG93cyBmb3IgYW4gYXJyYXkgb2YgaW5kaXZpZHVhbCBydWxlIG9iamVjdHMgdG8gYmUgZXZhbHVhdGVkIGluIG9yZGVyLCB1bnRpbCBvbmUgbWF0Y2hlcyBhbmQgZHluYW1pY2FsbHkgcHJvdmlkZXMgYXR0cmlidXRlcyB0byB0aGUgam9iLiAqL1xuICByZWFkb25seSBydWxlcz86IEluY2x1ZGVSdWxlW107XG4gIC8qKiBTaGVsbCBzY3JpcHRzIGV4ZWN1dGVkIGJ5IHRoZSBSdW5uZXIuIFRoZSBvbmx5IHJlcXVpcmVkIHByb3BlcnR5IG9mIGpvYnMuIEJlIGNhcmVmdWwgd2l0aCBzcGVjaWFsIGNoYXJhY3RlcnMgKGUuZy4gYDpgLCBge2AsIGB9YCwgYCZgKSBhbmQgdXNlIHNpbmdsZSBvciBkb3VibGUgcXVvdGVzIHRvIGF2b2lkIGlzc3Vlcy4qL1xuICByZWFkb25seSBzY3JpcHQ/OiBzdHJpbmdbXTtcbiAgLyoqIENJL0NEIHNlY3JldHMgKi9cbiAgcmVhZG9ubHkgc2VjcmV0cz86IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIFNlY3JldD4+O1xuICAvKiBBZGRpdGlvbmFsIERvY2tlciBpbWFnZXMgdG8gcnVuIHNjcmlwdHMgaW4uIFRoZSBzZXJ2aWNlIGltYWdlIGlzIGxpbmtlZCB0byB0aGUgaW1hZ2Ugc3BlY2lmaWVkIGluIHRoZSAgaW1hZ2UgcGFyYW1ldGVyLiAqL1xuICByZWFkb25seSBzZXJ2aWNlcz86IFNlcnZpY2VbXTtcbiAgLyoqIERlZmluZSB3aGF0IHN0YWdlIHRoZSBqb2Igd2lsbCBydW4gaW4uKi9cbiAgcmVhZG9ubHkgc3RhZ2U/OiBzdHJpbmc7XG4gIC8qIEV4ZWN1dGUgc2NyaXB0cyBhZnRlciBhIHdhaXRpbmcgcGVyaW9kIHdyaXR0ZW4gaW4gbmF0dXJhbCBsYW5ndWFnZSAoRXguIG9uZSBob3VyLCAzNjAwIHNlY29uZHMsIDYwIG1pbnV0ZXMpLiAqL1xuICByZWFkb25seSBzdGFydEluPzogc3RyaW5nO1xuICAvKiBVc2VkIHRvIHNlbGVjdCBhIHNwZWNpZmljIHJ1bm5lciBmcm9tIHRoZSBsaXN0IG9mIGFsbCBydW5uZXJzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdGhlIHByb2plY3QuICovXG4gIHJlYWRvbmx5IHRhZ3M/OiBzdHJpbmdbXTtcbiAgLyogQSBkZWZhdWx0IHRpbWVvdXQgam9iIHdyaXR0ZW4gaW4gbmF0dXJhbCBsYW5ndWFnZSAoRXguIG9uZSBob3VyLCAzNjAwIHNlY29uZHMsIDYwIG1pbnV0ZXMpLiAqL1xuICByZWFkb25seSB0aW1lb3V0Pzogc3RyaW5nO1xuICAvKiogVHJpZ2dlciBhbGxvd3MgeW91IHRvIGRlZmluZSBkb3duc3RyZWFtIHBpcGVsaW5lIHRyaWdnZXIuIFdoZW4gYSBqb2IgY3JlYXRlZCBmcm9tIHRyaWdnZXIgZGVmaW5pdGlvbiBpcyBzdGFydGVkIGJ5IEdpdExhYiwgYSBkb3duc3RyZWFtIHBpcGVsaW5lIGdldHMgY3JlYXRlZC4gUmVhZCBtb3JlOiBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sL1JFQURNRS5odG1sI3RyaWdnZXIqL1xuICByZWFkb25seSB0cmlnZ2VyPzogVHJpZ2dlciB8IHN0cmluZztcbiAgLyoqIENvbmZpZ3VyYWJsZSB2YWx1ZXMgdGhhdCBhcmUgcGFzc2VkIHRvIHRoZSBKb2IuICovXG4gIHJlYWRvbmx5IHZhcmlhYmxlcz86IFJlY29yZDxzdHJpbmcsIG51bWJlciB8IHN0cmluZz47XG4gIC8qKiBEZXNjcmliZXMgdGhlIGNvbmRpdGlvbnMgZm9yIHdoZW4gdG8gcnVuIHRoZSBqb2IuIERlZmF1bHRzIHRvICdvbl9zdWNjZXNzJy4gKi9cbiAgcmVhZG9ubHkgd2hlbj86IEpvYldoZW47XG59XG5cbi8qKlxuICogVGhlIGVudmlyb25tZW50IHRoYXQgYSBqb2IgZGVwbG95cyB0by5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudCB7XG4gIC8qKiBTcGVjaWZpZXMgd2hhdCB0aGlzIGpvYiB3aWxsIGRvLiAnc3RhcnQnIChkZWZhdWx0KSBpbmRpY2F0ZXMgdGhlIGpvYiB3aWxsIHN0YXJ0IHRoZSBkZXBsb3ltZW50LiAncHJlcGFyZScgaW5kaWNhdGVzIHRoaXMgd2lsbCBub3QgYWZmZWN0IHRoZSBkZXBsb3ltZW50LiAnc3RvcCcgaW5kaWNhdGVzIHRoaXMgd2lsbCBzdG9wIHRoZSBkZXBsb3ltZW50LiovXG4gIHJlYWRvbmx5IGFjdGlvbj86IEFjdGlvbjtcbiAgLyoqIFRoZSBhbW91bnQgb2YgdGltZSBpdCBzaG91bGQgdGFrZSBiZWZvcmUgR2l0bGFiIHdpbGwgYXV0b21hdGljYWxseSBzdG9wIHRoZSBlbnZpcm9ubWVudC4gU3VwcG9ydHMgYSB3aWRlIHZhcmlldHkgb2YgZm9ybWF0cywgZS5nLiAnMSB3ZWVrJywgJzMgbWlucyA0IHNlYycsICcyIGhycyAyMCBtaW4nLCAnMmgyMG1pbicsICc2IG1vcyAxIGRheScsICc0NyB5cnMgNiBtb3MgYW5kIDRkJywgJzMgd2Vla3MgYW5kIDIgZGF5cycuKi9cbiAgcmVhZG9ubHkgYXV0b1N0b3BJbj86IHN0cmluZztcbiAgLyoqIEV4cGxpY2l0bHkgc3BlY2lmaWVzIHRoZSB0aWVyIG9mIHRoZSBkZXBsb3ltZW50IGVudmlyb25tZW50IGlmIG5vbi1zdGFuZGFyZCBlbnZpcm9ubWVudCBuYW1lIGlzIHVzZWQuKi9cbiAgcmVhZG9ubHkgZGVwbG95bWVudFRpZXI/OiBEZXBsb3ltZW50VGllcjtcbiAgLyoqIFVzZWQgdG8gY29uZmlndXJlIHRoZSBrdWJlcm5ldGVzIGRlcGxveW1lbnQgZm9yIHRoaXMgZW52aXJvbm1lbnQuIFRoaXMgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgZm9yIGt1YmVybmV0ZXMgY2x1c3RlcnMgdGhhdCBhcmUgbWFuYWdlZCBieSBHaXRsYWIuKi9cbiAgcmVhZG9ubHkga3ViZXJuZXRlcz86IEt1YmVybmV0ZXNDb25maWc7XG4gIC8qKiBUaGUgbmFtZSBvZiB0aGUgZW52aXJvbm1lbnQsIGUuZy4gJ3FhJywgJ3N0YWdpbmcnLCAncHJvZHVjdGlvbicuKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKiogVGhlIG5hbWUgb2YgYSBqb2IgdG8gZXhlY3V0ZSB3aGVuIHRoZSBlbnZpcm9ubWVudCBpcyBhYm91dCB0byBiZSBzdG9wcGVkLiovXG4gIHJlYWRvbmx5IG9uU3RvcD86IHN0cmluZztcbiAgLyoqIFdoZW4gc2V0LCB0aGlzIHdpbGwgZXhwb3NlIGJ1dHRvbnMgaW4gdmFyaW91cyBwbGFjZXMgZm9yIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGluIEdpdGxhYiwgdGhhdCB3aWxsIHRha2UgeW91IHRvIHRoZSBkZWZpbmVkIFVSTC4qL1xuICByZWFkb25seSB1cmw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU3BlY2lmaWVzIHdoYXQgdGhpcyBqb2Igd2lsbCBkby4gJ3N0YXJ0JyAoZGVmYXVsdCkgaW5kaWNhdGVzIHRoZSBqb2Igd2lsbCBzdGFydCB0aGVcbiAqIGRlcGxveW1lbnQuICdwcmVwYXJlJyBpbmRpY2F0ZXMgdGhpcyB3aWxsIG5vdCBhZmZlY3QgdGhlIGRlcGxveW1lbnQuICdzdG9wJyBpbmRpY2F0ZXNcbiAqIHRoaXMgd2lsbCBzdG9wIHRoZSBkZXBsb3ltZW50LlxuICovXG5leHBvcnQgZW51bSBBY3Rpb24ge1xuICBQUkVQQVJFID0gXCJwcmVwYXJlXCIsXG4gIFNUQVJUID0gXCJzdGFydFwiLFxuICBTVE9QID0gXCJzdG9wXCIsXG59XG5cbi8qKlxuICogRXhwbGljaXRseSBzcGVjaWZpZXMgdGhlIHRpZXIgb2YgdGhlIGRlcGxveW1lbnQgZW52aXJvbm1lbnQgaWYgbm9uLXN0YW5kYXJkIGVudmlyb25tZW50XG4gKiBuYW1lIGlzIHVzZWQuXG4gKi9cbmV4cG9ydCBlbnVtIERlcGxveW1lbnRUaWVyIHtcbiAgREVWRUxPUE1FTlQgPSBcImRldmVsb3BtZW50XCIsXG4gIE9USEVSID0gXCJvdGhlclwiLFxuICBQUk9EVUNUSU9OID0gXCJwcm9kdWN0aW9uXCIsXG4gIFNUQUdJTkcgPSBcInN0YWdpbmdcIixcbiAgVEVTVElORyA9IFwidGVzdGluZ1wiLFxufVxuXG4vKipcbiAqIFVzZWQgdG8gY29uZmlndXJlIHRoZSBrdWJlcm5ldGVzIGRlcGxveW1lbnQgZm9yIHRoaXMgZW52aXJvbm1lbnQuIFRoaXMgaXMgY3VycmVudGx5IG5vdFxuICogc3VwcG9ydGVkIGZvciBrdWJlcm5ldGVzIGNsdXN0ZXJzIHRoYXQgYXJlIG1hbmFnZWQgYnkgR2l0bGFiLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEt1YmVybmV0ZXNDb25maWcge1xuICAvKiogVGhlIGt1YmVybmV0ZXMgbmFtZXNwYWNlIHdoZXJlIHRoaXMgZW52aXJvbm1lbnQgc2hvdWxkIGJlIGRlcGxveWVkIHRvLiovXG4gIHJlYWRvbmx5IG5hbWVzcGFjZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBGaWx0ZXJpbmcgb3B0aW9ucyBmb3Igd2hlbiBhIGpvYiB3aWxsIHJ1bi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXIge1xuICAvKiogRmlsdGVyIGpvYiBjcmVhdGlvbiBiYXNlZCBvbiBmaWxlcyB0aGF0IHdlcmUgbW9kaWZpZWQgaW4gYSBnaXQgcHVzaC4qL1xuICByZWFkb25seSBjaGFuZ2VzPzogc3RyaW5nW107XG4gIC8qKiBGaWx0ZXIgam9iIGJhc2VkIG9uIGlmIEt1YmVybmV0ZXMgaW50ZWdyYXRpb24gaXMgYWN0aXZlLiovXG4gIHJlYWRvbmx5IGt1YmVybmV0ZXM/OiBLdWJlcm5ldGVzRW51bTtcbiAgLyoqIENvbnRyb2wgd2hlbiB0byBhZGQgam9icyB0byBhIHBpcGVsaW5lIGJhc2VkIG9uIGJyYW5jaCBuYW1lcyBvciBwaXBlbGluZSB0eXBlcy4gKi9cbiAgcmVhZG9ubHkgcmVmcz86IHN0cmluZ1tdO1xuICAvKiogRmlsdGVyIGpvYiBieSBjaGVja2luZyBjb21wYXJpbmcgdmFsdWVzIG9mIGVudmlyb25tZW50IHZhcmlhYmxlcy4gUmVhZCBtb3JlIGFib3V0IHZhcmlhYmxlIGV4cHJlc3Npb25zOiBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS92YXJpYWJsZXMvUkVBRE1FLmh0bWwjdmFyaWFibGVzLWV4cHJlc3Npb25zKi9cbiAgcmVhZG9ubHkgdmFyaWFibGVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogRmlsdGVyIGpvYiBiYXNlZCBvbiBpZiBLdWJlcm5ldGVzIGludGVncmF0aW9uIGlzIGFjdGl2ZS5cbiAqL1xuZXhwb3J0IGVudW0gS3ViZXJuZXRlc0VudW0ge1xuICBBQ1RJVkUgPSBcImFjdGl2ZVwiLFxufVxuXG4vKipcbiAqIENvbnRyb2xzIGluaGVyaXRhbmNlIG9mIGdsb2JhbGx5LWRlZmluZWQgZGVmYXVsdHMgYW5kIHZhcmlhYmxlcy4gQm9vbGVhbiB2YWx1ZXMgY29udHJvbFxuICogaW5oZXJpdGFuY2Ugb2YgYWxsIGRlZmF1bHQ6IG9yIHZhcmlhYmxlczoga2V5d29yZHMuIFRvIGluaGVyaXQgb25seSBhIHN1YnNldCBvZiBkZWZhdWx0OlxuICogb3IgdmFyaWFibGVzOiBrZXl3b3Jkcywgc3BlY2lmeSB3aGF0IHlvdSB3aXNoIHRvIGluaGVyaXQuIEFueXRoaW5nIG5vdCBsaXN0ZWQgaXMgbm90XG4gKiBpbmhlcml0ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5oZXJpdCB7XG4gIC8qKiBXaGV0aGVyIHRvIGluaGVyaXQgYWxsIGdsb2JhbGx5LWRlZmluZWQgZGVmYXVsdHMgb3Igbm90LiBPciBzdWJzZXQgb2YgaW5oZXJpdGVkIGRlZmF1bHRzKi9cbiAgcmVhZG9ubHkgZGVmYXVsdD86IERlZmF1bHRFbGVtZW50W10gfCBib29sZWFuO1xuICAvKiogV2hldGhlciB0byBpbmhlcml0IGFsbCBnbG9iYWxseS1kZWZpbmVkIHZhcmlhYmxlcyBvciBub3QuIE9yIHN1YnNldCBvZiBpbmhlcml0ZWQgdmFyaWFibGVzKi9cbiAgcmVhZG9ubHkgdmFyaWFibGVzPzogc3RyaW5nW10gfCBib29sZWFuO1xufVxuXG5leHBvcnQgZW51bSBEZWZhdWx0RWxlbWVudCB7XG4gIEFGVEVSX1NDUklQVCA9IFwiYWZ0ZXJfc2NyaXB0XCIsXG4gIEFSVElGQUNUUyA9IFwiYXJ0aWZhY3RzXCIsXG4gIEJFRk9SRV9TQ1JJUFQgPSBcImJlZm9yZV9zY3JpcHRcIixcbiAgQ0FDSEUgPSBcImNhY2hlXCIsXG4gIElNQUdFID0gXCJpbWFnZVwiLFxuICBJTlRFUlJVUFRJQkxFID0gXCJpbnRlcnJ1cHRpYmxlXCIsXG4gIFJFVFJZID0gXCJyZXRyeVwiLFxuICBTRVJWSUNFUyA9IFwic2VydmljZXNcIixcbiAgVEFHUyA9IFwidGFnc1wiLFxuICBUSU1FT1VUID0gXCJ0aW1lb3V0XCIsXG59XG5cbi8qKlxuICogQSBqb2JzIGluIGEgcHJldmlvdXMgc3RhZ2Ugd2hvc2Ugc29sZSBjb21wbGV0aW9uIGlzIG5lZWRlZCB0byBzdGFydCB0aGUgY3VycmVudCBqb2IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmVlZCB7XG4gIHJlYWRvbmx5IGFydGlmYWN0cz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGpvYjogc3RyaW5nO1xuICByZWFkb25seSBvcHRpb25hbD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHBpcGVsaW5lPzogc3RyaW5nO1xuICByZWFkb25seSBwcm9qZWN0Pzogc3RyaW5nO1xuICByZWFkb25seSByZWY/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVXNlZCB0byBydW4gYSBqb2IgbXVsdGlwbGUgdGltZXMgaW4gcGFyYWxsZWwgaW4gYSBzaW5nbGUgcGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYWxsZWwge1xuICAvKiogRGVmaW5lcyBkaWZmZXJlbnQgdmFyaWFibGVzIGZvciBqb2JzIHRoYXQgYXJlIHJ1bm5pbmcgaW4gcGFyYWxsZWwuKi9cbiAgcmVhZG9ubHkgbWF0cml4OiBSZWNvcmQ8c3RyaW5nLCBhbnlbXT5bXTtcbn1cblxuLyoqXG4gKiBJbmRpY2F0ZXMgdGhhdCB0aGUgam9iIGNyZWF0ZXMgYSBSZWxlYXNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbGVhc2Uge1xuICByZWFkb25seSBhc3NldHM/OiBBc3NldHM7XG4gIC8qKiBTcGVjaWZpZXMgdGhlIGxvbmdlciBkZXNjcmlwdGlvbiBvZiB0aGUgUmVsZWFzZS4qL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKiogVGhlIHRpdGxlIG9mIGVhY2ggbWlsZXN0b25lIHRoZSByZWxlYXNlIGlzIGFzc29jaWF0ZWQgd2l0aC4qL1xuICByZWFkb25seSBtaWxlc3RvbmVzPzogc3RyaW5nW107XG4gIC8qKiBUaGUgUmVsZWFzZSBuYW1lLiBJZiBvbWl0dGVkLCBpdCBpcyBwb3B1bGF0ZWQgd2l0aCB0aGUgdmFsdWUgb2YgcmVsZWFzZTogdGFnX25hbWUuKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgLyoqIElmIHRoZSByZWxlYXNlOiB0YWdfbmFtZSBkb2VzbuKAmXQgZXhpc3QgeWV0LCB0aGUgcmVsZWFzZSBpcyBjcmVhdGVkIGZyb20gcmVmLiByZWYgY2FuIGJlIGEgY29tbWl0IFNIQSwgYW5vdGhlciB0YWcgbmFtZSwgb3IgYSBicmFuY2ggbmFtZS4qL1xuICByZWFkb25seSByZWY/OiBzdHJpbmc7XG4gIC8qKiBUaGUgZGF0ZSBhbmQgdGltZSB3aGVuIHRoZSByZWxlYXNlIGlzIHJlYWR5LiBEZWZhdWx0cyB0byB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lIGlmIG5vdCBkZWZpbmVkLiBTaG91bGQgYmUgZW5jbG9zZWQgaW4gcXVvdGVzIGFuZCBleHByZXNzZWQgaW4gSVNPIDg2MDEgZm9ybWF0LiovXG4gIHJlYWRvbmx5IHJlbGVhc2VkQXQ/OiBzdHJpbmc7XG4gIC8qKiBUaGUgdGFnX25hbWUgbXVzdCBiZSBzcGVjaWZpZWQuIEl0IGNhbiByZWZlciB0byBhbiBleGlzdGluZyBHaXQgdGFnIG9yIGNhbiBiZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIuKi9cbiAgcmVhZG9ubHkgdGFnTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFzc2V0IGNvbmZpZ3VyYXRpb24gZm9yIGEgcmVsZWFzZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldHMge1xuICAvKiogSW5jbHVkZSBhc3NldCBsaW5rcyBpbiB0aGUgcmVsZWFzZS4qL1xuICByZWFkb25seSBsaW5rczogTGlua1tdO1xufVxuXG4vKipcbiAqIExpbmsgY29uZmlndXJhdGlvbiBmb3IgYW4gYXNzZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGluayB7XG4gIC8qKiBUaGUgcmVkaXJlY3QgbGluayB0byB0aGUgdXJsLiovXG4gIHJlYWRvbmx5IGZpbGVwYXRoPzogc3RyaW5nO1xuICAvKiogVGhlIGNvbnRlbnQga2luZCBvZiB3aGF0IHVzZXJzIGNhbiBkb3dubG9hZCB2aWEgdXJsLiovXG4gIHJlYWRvbmx5IGxpbmtUeXBlPzogTGlua1R5cGU7XG4gIC8qKiBUaGUgbmFtZSBvZiB0aGUgbGluay4qL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKiBUaGUgVVJMIHRvIGRvd25sb2FkIGEgZmlsZS4qL1xuICByZWFkb25seSB1cmw6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgY29udGVudCBraW5kIG9mIHdoYXQgdXNlcnMgY2FuIGRvd25sb2FkIHZpYSB1cmwuXG4gKi9cbmV4cG9ydCBlbnVtIExpbmtUeXBlIHtcbiAgSU1BR0UgPSBcImltYWdlXCIsXG4gIE9USEVSID0gXCJvdGhlclwiLFxuICBQQUNLQUdFID0gXCJwYWNrYWdlXCIsXG4gIFJVTkJPT0sgPSBcInJ1bmJvb2tcIixcbn1cblxuLyoqXG4gKiBBIENJL0NEIHNlY3JldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3JldCB7XG4gIC8qIFNwZWNpZmljYXRpb24gZm9yIGEgc2VjcmV0IHByb3ZpZGVkIGJ5IGEgSGFzaGlDb3JwIFZhdWx0LiAqL1xuICByZWFkb25seSB2YXVsdDogVmF1bHRDb25maWc7XG59XG5cbi8qKlxuICogU3BlY2lmaWNhdGlvbiBmb3IgYSBzZWNyZXQgcHJvdmlkZWQgYnkgYSBIYXNoaUNvcnAgVmF1bHQuXG4gKiBAc2VlIGh0dHBzOi8vd3d3LnZhdWx0cHJvamVjdC5pby9cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYXVsdENvbmZpZyB7XG4gIC8qIFRoZSBlbmdpbmUgY29uZmlndXJhdGlvbiBmb3IgYSBzZWNyZXQuICovXG4gIHJlYWRvbmx5IGVuZ2luZTogRW5naW5lO1xuICAvKiBUaGUgbmFtZSBvZiB0aGUgZmllbGQgd2hlcmUgdGhlIHBhc3N3b3JkIGlzIHN0b3JlZC4gKi9cbiAgcmVhZG9ubHkgZmllbGQ6IHN0cmluZztcbiAgLyoqIFBhdGggdG8gdGhlIHNlY3JldC4gKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBlbmdpbmUgY29uZmlndXJhdGlvbiBmb3IgYSBzZWNyZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5naW5lIHtcbiAgLyoqIE5hbWUgb2YgdGhlIHNlY3JldHMgZW5naW5lLiAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKiBQYXRoIHRvIHRoZSBzZWNyZXRzIGVuZ2luZS4gKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRyaWdnZXIgYSBtdWx0aS1wcm9qZWN0IG9yIGEgY2hpbGQgcGlwZWxpbmUuIFJlYWQgbW9yZTpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC9SRUFETUUuaHRtbCNzaW1wbGUtdHJpZ2dlci1zeW50YXgtZm9yLW11bHRpLXByb2plY3QtcGlwZWxpbmVzXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvUkVBRE1FLmh0bWwjdHJpZ2dlci1zeW50YXgtZm9yLWNoaWxkLXBpcGVsaW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJpZ2dlciB7XG4gIC8qKiBUaGUgYnJhbmNoIG5hbWUgdGhhdCBhIGRvd25zdHJlYW0gcGlwZWxpbmUgd2lsbCB1c2UqL1xuICByZWFkb25seSBicmFuY2g/OiBzdHJpbmc7XG4gIC8qKiBQYXRoIHRvIHRoZSBwcm9qZWN0LCBlLmcuIGBncm91cC9wcm9qZWN0YCwgb3IgYGdyb3VwL3N1Yi1ncm91cC9wcm9qZWN0YC4qL1xuICByZWFkb25seSBwcm9qZWN0Pzogc3RyaW5nO1xuICAvKiogWW91IGNhbiBtaXJyb3IgdGhlIHBpcGVsaW5lIHN0YXR1cyBmcm9tIHRoZSB0cmlnZ2VyZWQgcGlwZWxpbmUgdG8gdGhlIHNvdXJjZSBicmlkZ2Ugam9iIGJ5IHVzaW5nIHN0cmF0ZWd5OiBkZXBlbmQqL1xuICByZWFkb25seSBzdHJhdGVneT86IFN0cmF0ZWd5O1xuICAvKiogQSBsaXN0IG9mIGxvY2FsIGZpbGVzIG9yIGFydGlmYWN0cyBmcm9tIG90aGVyIGpvYnMgdG8gZGVmaW5lIHRoZSBwaXBlbGluZSAqL1xuICByZWFkb25seSBpbmNsdWRlPzogVHJpZ2dlckluY2x1ZGVbXTtcbn1cblxuLyoqXG4gKiBSZWZlcmVuY2VzIGEgbG9jYWwgZmlsZSBvciBhbiBhcnRpZmFjdCBmcm9tIGFub3RoZXIgam9iIHRvIGRlZmluZSB0aGUgcGlwZWxpbmVcbiAqIGNvbmZpZ3VyYXRpb24uXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI3RyaWdnZXJpbmNsdWRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJpZ2dlckluY2x1ZGUge1xuICAvKiogUmVsYXRpdmUgcGF0aCBmcm9tIGxvY2FsIHJlcG9zaXRvcnkgcm9vdCAoYC9gKSB0byB0aGUgbG9jYWwgWUFNTCBmaWxlIHRvIGRlZmluZSB0aGUgcGlwZWxpbmUgY29uZmlndXJhdGlvbi4qL1xuICByZWFkb25seSBsb2NhbD86IHN0cmluZztcbiAgLyoqIE5hbWUgb2YgdGhlIHRlbXBsYXRlIFlBTUwgZmlsZSB0byB1c2UgaW4gdGhlIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24uKi9cbiAgcmVhZG9ubHkgdGVtcGxhdGU/OiBzdHJpbmc7XG4gIC8qKiBSZWxhdGl2ZSBwYXRoIHRvIHRoZSBnZW5lcmF0ZWQgWUFNTCBmaWxlIHdoaWNoIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSBhcnRpZmFjdHMgYW5kIHVzZWQgYXMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRyaWdnZXJpbmcgdGhlIGNoaWxkIHBpcGVsaW5lLiovXG4gIHJlYWRvbmx5IGFydGlmYWN0Pzogc3RyaW5nO1xuICAvKiogSm9iIG5hbWUgd2hpY2ggZ2VuZXJhdGVzIHRoZSBhcnRpZmFjdCovXG4gIHJlYWRvbmx5IGpvYj86IHN0cmluZztcbiAgLyoqIFJlbGF0aXZlIHBhdGggZnJvbSByZXBvc2l0b3J5IHJvb3QgKGAvYCkgdG8gdGhlIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24gWUFNTCBmaWxlLiovXG4gIHJlYWRvbmx5IGZpbGU/OiBzdHJpbmc7XG4gIC8qKiBQYXRoIHRvIGFub3RoZXIgcHJpdmF0ZSBwcm9qZWN0IHVuZGVyIHRoZSBzYW1lIEdpdExhYiBpbnN0YW5jZSwgbGlrZSBgZ3JvdXAvcHJvamVjdGAgb3IgYGdyb3VwL3N1Yi1ncm91cC9wcm9qZWN0YC4qL1xuICByZWFkb25seSBwcm9qZWN0Pzogc3RyaW5nO1xuICAvKiogQnJhbmNoL1RhZy9Db21taXQgaGFzaCBmb3IgdGhlIHRhcmdldCBwcm9qZWN0LiovXG4gIHJlYWRvbmx5IHJlZj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBZb3UgY2FuIG1pcnJvciB0aGUgcGlwZWxpbmUgc3RhdHVzIGZyb20gdGhlIHRyaWdnZXJlZCBwaXBlbGluZSB0byB0aGUgc291cmNlIGJyaWRnZSBqb2JcbiAqIGJ5IHVzaW5nIHN0cmF0ZWd5OiBkZXBlbmRcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jdHJpZ2dlcnN0cmF0ZWd5XG4gKi9cbmV4cG9ydCBlbnVtIFN0cmF0ZWd5IHtcbiAgREVQRU5EID0gXCJkZXBlbmRcIixcbn1cblxuLyoqXG4gKiBFeHBsYWlucyB3aGF0IHRoZSBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCBmb3IsIHdoYXQgdGhlIGFjY2VwdGFibGUgdmFsdWVzIGFyZS5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jdmFyaWFibGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFyaWFibGVDb25maWcge1xuICAvKiogRGVmaW5lIGEgZ2xvYmFsIHZhcmlhYmxlIHRoYXQgaXMgcHJlZmlsbGVkIHdoZW4gcnVubmluZyBhIHBpcGVsaW5lIG1hbnVhbGx5LiBNdXN0IGJlIHVzZWQgd2l0aCB2YWx1ZS4gICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogVGhlIHZhcmlhYmxlIHZhbHVlLiAqL1xuICByZWFkb25seSB2YWx1ZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBVc2VkIHRvIGNvbnRyb2wgcGlwZWxpbmUgYmVoYXZpb3IuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI3dvcmtmbG93XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3cge1xuICAvKiogVXNlZCB0byBjb250cm9sIHdoZXRoZXIgb3Igbm90IGEgd2hvbGUgcGlwZWxpbmUgaXMgY3JlYXRlZC4gKi9cbiAgcmVhZG9ubHkgcnVsZXM/OiBXb3JrZmxvd1J1bGVbXTtcbn1cblxuLyoqXG4gKiBVc2VkIHRvIGNvbnRyb2wgd2hldGhlciBvciBub3QgYSB3aG9sZSBwaXBlbGluZSBpcyBjcmVhdGVkLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyN3b3JrZmxvd3J1bGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dSdWxlIHtcbiAgLyogU3BlY2lmeSB3aGVuIHRvIGFkZCBhIGpvYiB0byBhIHBpcGVsaW5lIGJ5IGNoZWNraW5nIGZvciBjaGFuZ2VzIHRvIHNwZWNpZmljIGZpbGVzLiAqL1xuICByZWFkb25seSBjaGFuZ2VzPzogc3RyaW5nW107XG4gIC8qIFJ1biBhIGpvYiB3aGVuIGNlcnRhaW4gZmlsZXMgZXhpc3QgaW4gdGhlIHJlcG9zaXRvcnkuICovXG4gIHJlYWRvbmx5IGV4aXN0cz86IHN0cmluZ1tdO1xuICAvKiBDbGF1c2VzIHRvIHNwZWNpZnkgd2hlbiB0byBhZGQgYSBqb2IgdG8gYSBwaXBlbGluZS4qL1xuICByZWFkb25seSBpZj86IHN0cmluZztcbiAgLyogVXNlIHZhcmlhYmxlcyBpbiBydWxlcyB0byBkZWZpbmUgdmFyaWFibGVzIGZvciBzcGVjaWZpYyBjb25kaXRpb25zLiAqL1xuICByZWFkb25seSB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+O1xuICAvKiBDb25kaXRpb25zIGZvciB3aGVuIHRvIHJ1biB0aGUgam9iLiBEZWZhdWx0cyB0byAnb25fc3VjY2VzcycgKi9cbiAgcmVhZG9ubHkgd2hlbj86IEpvYldoZW47XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIHRoZSBjb25kaXRpb25zIGZvciB3aGVuIHRvIHJ1biB0aGUgam9iLiBEZWZhdWx0cyB0byAnb25fc3VjY2VzcycuXG4gKiBUaGUgdmFsdWUgY2FuIG9ubHkgYmUgJ2Fsd2F5cycgb3IgJ25ldmVyJyB3aGVuIHVzZWQgd2l0aCB3b3JrZmxvdy5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jd29ya2Zsb3dydWxlc1xuICovXG5leHBvcnQgZW51bSBXb3JrZmxvd1doZW4ge1xuICBBTFdBWVMgPSBcImFsd2F5c1wiLFxuICBORVZFUiA9IFwibmV2ZXJcIixcbn1cbiJdfQ==
@@ -243,9 +243,9 @@ class CiConfiguration extends component_1.Component {
243
243
  : undefined;
244
244
  }
245
245
  }
246
- _a = JSII_RTTI_SYMBOL_1;
247
- CiConfiguration[_a] = { fqn: "projen.gitlab.CiConfiguration", version: "0.71.83" };
248
246
  exports.CiConfiguration = CiConfiguration;
247
+ _a = JSII_RTTI_SYMBOL_1;
248
+ CiConfiguration[_a] = { fqn: "projen.gitlab.CiConfiguration", version: "0.71.85" };
249
249
  function snakeCaseKeys(obj, skipTopLevel = false) {
250
250
  if (typeof obj !== "object" || obj == null) {
251
251
  return obj;
@@ -262,4 +262,4 @@ function snakeCaseKeys(obj, skipTopLevel = false) {
262
262
  }
263
263
  return result;
264
264
  }
265
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9naXRsYWIvY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUE2QjtBQUM3QiwrQkFBNkI7QUFhN0IsNENBQXlDO0FBRXpDLGtDQUFtQztBQW1DbkM7Ozs7R0FJRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxxQkFBUztJQXdGNUMsWUFDRSxPQUFnQixFQUNoQixJQUFZLEVBQ1osT0FBZ0M7UUFFaEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBNUVqQjs7V0FFRztRQUNhLHVCQUFrQixHQUFhLEVBQUUsQ0FBQztRQUtsRDs7V0FFRztRQUNhLHdCQUFtQixHQUFhLEVBQUUsQ0FBQztRQWlCbkQ7O1dBRUc7UUFDSyxvQkFBZSxHQUFjLEVBQUUsQ0FBQztRQUN4Qzs7V0FFRztRQUNNLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBS3BDOzs7O1dBSUc7UUFDSyxZQUFPLEdBQWMsRUFBRSxDQUFDO1FBTWhDOzs7V0FHRztRQUNhLFdBQU0sR0FBYSxFQUFFLENBQUM7UUFDdEM7OztXQUdHO1FBQ2EsY0FBUyxHQUN2QixFQUFFLENBQUM7UUFLTDs7V0FFRztRQUNhLFNBQUksR0FBd0IsRUFBRSxDQUFDO1FBUTdDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLElBQUk7WUFDUCxJQUFJLENBQUMsSUFBSSxLQUFLLFdBQVc7Z0JBQ3ZCLENBQUMsQ0FBQyxnQkFBZ0I7Z0JBQ2xCLENBQUMsQ0FBQyx3QkFBd0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztRQUM3RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksZUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVB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bSBcInBhdGhcIjtcbmltcG9ydCB7IHNuYWtlIH0gZnJvbSBcImNhc2VcIjtcbmltcG9ydCB7XG4gIEFydGlmYWN0cyxcbiAgQ2FjaGUsXG4gIERlZmF1bHQsXG4gIEltYWdlLFxuICBJbmNsdWRlLFxuICBKb2IsXG4gIFJldHJ5LFxuICBTZXJ2aWNlLFxuICBWYXJpYWJsZUNvbmZpZyxcbiAgV29ya2Zsb3csXG59IGZyb20gXCIuL2NvbmZpZ3VyYXRpb24tbW9kZWxcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuaW1wb3J0IHsgWWFtbEZpbGUgfSBmcm9tIFwiLi4veWFtbFwiO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBDaUNvbmZpZ3VyYXRpb25gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENpQ29uZmlndXJhdGlvbk9wdGlvbnMge1xuICAvKipcbiAgICogRGVmYXVsdCBzZXR0aW5ncyBmb3IgdGhlIENJIENvbmZpZ3VyYXRpb24uIEpvYnMgdGhhdCBkbyBub3QgZGVmaW5lIG9uZSBvciBtb3JlIG9mIHRoZSBsaXN0ZWQga2V5d29yZHMgdXNlIHRoZSB2YWx1ZSBkZWZpbmVkIGluIHRoZSBkZWZhdWx0IHNlY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0PzogRGVmYXVsdDtcbiAgLyoqXG4gICAqIEEgc3BlY2lhbCBqb2IgdXNlZCB0byB1cGxvYWQgc3RhdGljIHNpdGVzIHRvIEdpdGxhYiBwYWdlcy4gUmVxdWlyZXMgYSBgcHVibGljL2AgZGlyZWN0b3J5XG4gICAqIHdpdGggYGFydGlmYWN0cy5wYXRoYCBwb2ludGluZyB0byBpdC5cbiAgICovXG4gIHJlYWRvbmx5IHBhZ2VzPzogSm9iO1xuICAvKipcbiAgICogVXNlZCB0byBjb250cm9sIHBpcGVsaW5lIGJlaGF2aW9yLlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3c/OiBXb3JrZmxvdztcbiAgLyoqXG4gICAqIEdyb3VwcyBqb2JzIGludG8gc3RhZ2VzLiBBbGwgam9icyBpbiBvbmUgc3RhZ2UgbXVzdCBjb21wbGV0ZSBiZWZvcmUgbmV4dCBzdGFnZSBpc1xuICAgKiBleGVjdXRlZC4gSWYgbm8gc3RhZ2VzIGFyZSBzcGVjaWZpZWQuIERlZmF1bHRzIHRvIFsnYnVpbGQnLCAndGVzdCcsICdkZXBsb3knXS5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWdlcz86IHN0cmluZ1tdO1xuICAvKipcbiAgICogR2xvYmFsIHZhcmlhYmxlcyB0aGF0IGFyZSBwYXNzZWQgdG8gam9icy5cbiAgICogSWYgdGhlIGpvYiBhbHJlYWR5IGhhcyB0aGF0IHZhcmlhYmxlIGRlZmluZWQsIHRoZSBqb2ItbGV2ZWwgdmFyaWFibGUgdGFrZXMgcHJlY2VkZW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhcmlhYmxlcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8qKlxuICAgKiBBbiBpbml0aWFsIHNldCBvZiBqb2JzIHRvIGFkZCB0byB0aGUgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGpvYnM/OiBSZWNvcmQ8c3RyaW5nLCBKb2I+O1xufVxuXG4vKipcbiAqIENJIGZvciBHaXRMYWIuXG4gKiBBIENJIGlzIGEgY29uZmlndXJhYmxlIGF1dG9tYXRlZCBwcm9jZXNzIG1hZGUgdXAgb2Ygb25lIG9yIG1vcmUgc3RhZ2VzL2pvYnMuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvXG4gKi9cbmV4cG9ydCBjbGFzcyBDaUNvbmZpZ3VyYXRpb24gZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogVGhlIHByb2plY3QgdGhlIGNvbmZpZ3VyYXRpb24gYmVsb25ncyB0by5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBQcm9qZWN0O1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogUGF0aCB0byBDSSBmaWxlIGdlbmVyYXRlZCBieSB0aGUgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwYXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgd29ya2Zsb3cgWUFNTCBmaWxlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZpbGU6IFlhbWxGaWxlO1xuICAvKipcbiAgICogRGVmaW5lcyBkZWZhdWx0IHNjcmlwdHMgdGhhdCBzaG91bGQgcnVuICphZnRlciogYWxsIGpvYnMuIENhbiBiZSBvdmVycmlkZW4gYnkgdGhlIGpvYiBsZXZlbCBgYWZ0ZXJTY3JpcHRgLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHRBZnRlclNjcmlwdDogc3RyaW5nW10gPSBbXTtcbiAgLyoqXG4gICAqIERlZmF1bHQgbGlzdCBvZiBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdGhhdCBzaG91bGQgYmUgYXR0YWNoZWQgdG8gdGhlIGpvYiBpZiBpdCBzdWNjZWVkcy4gQXJ0aWZhY3RzIGFyZSBzZW50IHRvIEdpdGxhYiB3aGVyZSB0aGV5IGNhbiBiZSBkb3dubG9hZGVkLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHRBcnRpZmFjdHM/OiBBcnRpZmFjdHM7XG4gIC8qKlxuICAgKiBEZWZpbmVzIGRlZmF1bHQgc2NyaXB0cyB0aGF0IHNob3VsZCBydW4gKmJlZm9yZSogYWxsIGpvYnMuIENhbiBiZSBvdmVycmlkZW4gYnkgdGhlIGpvYiBsZXZlbCBgYWZ0ZXJTY3JpcHRgLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHRCZWZvcmVTY3JpcHQ6IHN0cmluZ1tdID0gW107XG4gIC8qKlxuICAgKiBBIGRlZmF1bHQgbGlzdCBvZiBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gY2FjaGUgYmV0d2VlbiBqb2JzLiBZb3UgY2FuIG9ubHkgdXNlIHBhdGhzIHRoYXQgYXJlIGluIHRoZSBsb2NhbCB3b3JraW5nIGNvcHkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdENhY2hlPzogQ2FjaGU7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGRlZmF1bHQgZG9ja2VyIGltYWdlIHRvIHVzZSBnbG9iYWxseSBmb3IgYWxsIGpvYnMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdEltYWdlPzogSW1hZ2U7XG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3Igd2hldGhlciBhIGpvYiBzaG91bGQgYmUgY2FuY2VsZWQgd2hlbiBhIG5ld2VyIHBpcGVsaW5lIHN0YXJ0cyBiZWZvcmUgdGhlIGpvYiBjb21wbGV0ZXMgKERlZmF1bHQ6IGZhbHNlKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZWZhdWx0SW50ZXJydXB0aWJsZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBIb3cgbWFueSB0aW1lcyBhIGpvYiBpcyByZXRyaWVkIGlmIGl0IGZhaWxzLiBJZiBub3QgZGVmaW5lZCwgZGVmYXVsdHMgdG8gMCBhbmQgam9icyBkbyBub3QgcmV0cnkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdFJldHJ5PzogUmV0cnk7XG4gIC8qKlxuICAgKiBBIGRlZmF1bHQgbGlzdCBvZiBhZGRpdGlvbmFsIERvY2tlciBpbWFnZXMgdG8gcnVuIHNjcmlwdHMgaW4uIFRoZSBzZXJ2aWNlIGltYWdlIGlzIGxpbmtlZCB0byB0aGUgaW1hZ2Ugc3BlY2lmaWVkIGluIHRoZSAgaW1hZ2UgcGFyYW1ldGVyLlxuICAgKi9cbiAgcHJpdmF0ZSBkZWZhdWx0U2VydmljZXM6IFNlcnZpY2VbXSA9IFtdO1xuICAvKipcbiAgICogVXNlZCB0byBzZWxlY3QgYSBzcGVjaWZpYyBydW5uZXIgZnJvbSB0aGUgbGlzdCBvZiBhbGwgcnVubmVycyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHRoZSBwcm9qZWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdFRhZ3M6IHN0cmluZ1tdID0gW107XG4gIC8qKlxuICAgKiBBIGRlZmF1bHQgdGltZW91dCBqb2Igd3JpdHRlbiBpbiBuYXR1cmFsIGxhbmd1YWdlIChFeC4gb25lIGhvdXIsIDM2MDAgc2Vjb25kcywgNjAgbWludXRlcykuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0VGltZW91dD86IHN0cmluZztcbiAgLyoqXG4gICAqIENhbiBiZSBgSW5jbHVkZWAgb3IgYEluY2x1ZGVbXWAuIEVhY2ggYEluY2x1ZGVgIHdpbGwgYmUgYSBzdHJpbmcsIG9yIGFuXG4gICAqIG9iamVjdCB3aXRoIHByb3BlcnRpZXMgZm9yIHRoZSBtZXRob2QgaWYgaW5jbHVkaW5nIGV4dGVybmFsIFlBTUwgZmlsZS4gVGhlIGV4dGVybmFsXG4gICAqIGNvbnRlbnQgd2lsbCBiZSBmZXRjaGVkLCBpbmNsdWRlZCBhbmQgZXZhbHVhdGVkIGFsb25nIHRoZSBgLmdpdGxhYi1jaS55bWxgLlxuICAgKi9cbiAgcHJpdmF0ZSBpbmNsdWRlOiBJbmNsdWRlW10gPSBbXTtcbiAgLyoqXG4gICAqIEEgc3BlY2lhbCBqb2IgdXNlZCB0byB1cGxvYWQgc3RhdGljIHNpdGVzIHRvIEdpdGxhYiBwYWdlcy4gUmVxdWlyZXMgYSBgcHVibGljL2AgZGlyZWN0b3J5XG4gICAqIHdpdGggYGFydGlmYWN0cy5wYXRoYCBwb2ludGluZyB0byBpdC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwYWdlcz86IEpvYjtcbiAgLyoqXG4gICAqIEdyb3VwcyBqb2JzIGludG8gc3RhZ2VzLiBBbGwgam9icyBpbiBvbmUgc3RhZ2UgbXVzdCBjb21wbGV0ZSBiZWZvcmUgbmV4dCBzdGFnZSBpc1xuICAgKiBleGVjdXRlZC4gRGVmYXVsdHMgdG8gWydidWlsZCcsICd0ZXN0JywgJ2RlcGxveSddLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YWdlczogc3RyaW5nW10gPSBbXTtcbiAgLyoqXG4gICAqIEdsb2JhbCB2YXJpYWJsZXMgdGhhdCBhcmUgcGFzc2VkIHRvIGpvYnMuXG4gICAqIElmIHRoZSBqb2IgYWxyZWFkeSBoYXMgdGhhdCB2YXJpYWJsZSBkZWZpbmVkLCB0aGUgam9iLWxldmVsIHZhcmlhYmxlIHRha2VzIHByZWNlZGVuY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFyaWFibGVzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBWYXJpYWJsZUNvbmZpZyB8IHN0cmluZz4gPVxuICAgIHt9O1xuICAvKipcbiAgICogVXNlZCB0byBjb250cm9sIHBpcGVsaW5lIGJlaGF2aW9yLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHdvcmtmbG93PzogV29ya2Zsb3c7XG4gIC8qKlxuICAgKiBUaGUgam9icyBpbiB0aGUgQ0kgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBqb2JzOiBSZWNvcmQ8c3RyaW5nLCBKb2I+ID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvamVjdDogUHJvamVjdCxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IENpQ29uZmlndXJhdGlvbk9wdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gICAgdGhpcy5wcm9qZWN0ID0gcHJvamVjdDtcbiAgICB0aGlzLm5hbWUgPSBwYXRoLnBhcnNlKG5hbWUpLm5hbWU7XG4gICAgdGhpcy5wYXRoID1cbiAgICAgIHRoaXMubmFtZSA9PT0gXCJnaXRsYWItY2lcIlxuICAgICAgICA/IFwiLmdpdGxhYi1jaS55bWxcIlxuICAgICAgICA6IGAuZ2l0bGFiL2NpLXRlbXBsYXRlcy8ke25hbWUudG9Mb2NhbGVMb3dlckNhc2UoKX0ueW1sYDtcbiAgICB0aGlzLmZpbGUgPSBuZXcgWWFtbEZpbGUodGhpcy5wcm9qZWN0LCB0aGlzLnBhdGgsIHtcbiAgICAgIG9iajogKCkgPT4gdGhpcy5yZW5kZXJDSSgpLFxuICAgICAgLy8gR2l0TGFiIG5lZWRzIHRvIHJlYWQgdGhlIGZpbGUgZnJvbSB0aGUgcmVwb3NpdG9yeSBpbiBvcmRlciB0byB3b3JrLlxuICAgICAgY29tbWl0dGVkOiB0cnVlLFxuICAgIH0pO1xuICAgIGNvbnN0IGRlZmF1bHRzID0gb3B0aW9ucz8uZGVmYXVsdDtcbiAgICBpZiAoZGVmYXVsdHMpIHtcbiAgICAgIHRoaXMuZGVmYXVsdEFmdGVyU2NyaXB0LnB1c2goLi4uKGRlZmF1bHRzLmFmdGVyU2NyaXB0ID8/IFtdKSk7XG4gICAgICB0aGlzLmRlZmF1bHRBcnRpZmFjdHMgPSBkZWZhdWx0cy5hcnRpZmFjdHM7XG4gICAgICBkZWZhdWx0cy5iZWZvcmVTY3JpcHQgJiZcbiAgICAgICAgdGhpcy5kZWZhdWx0QmVmb3JlU2NyaXB0LnB1c2goLi4uZGVmYXVsdHMuYmVmb3JlU2NyaXB0KTtcbiAgICAgIHRoaXMuZGVmYXVsdENhY2hlID0gZGVmYXVsdHMuY2FjaGU7XG4gICAgICB0aGlzLmRlZmF1bHRJbWFnZSA9IGRlZmF1bHRzLmltYWdlO1xuICAgICAgdGhpcy5kZWZhdWx0SW50ZXJydXB0aWJsZSA9IGRlZmF1bHRzLmludGVycnVwdGlibGU7XG4gICAgICB0aGlzLmRlZmF1bHRSZXRyeSA9IGRlZmF1bHRzLnJldHJ5O1xuICAgICAgZGVmYXVsdHMuc2VydmljZXMgJiYgdGhpcy5hZGRTZXJ2aWNlcyguLi5kZWZhdWx0cy5zZXJ2aWNlcyk7XG4gICAgICBkZWZhdWx0cy50YWdzICYmIHRoaXMuZGVmYXVsdFRhZ3MucHVzaCguLi5kZWZhdWx0cy50YWdzKTtcbiAgICAgIHRoaXMuZGVmYXVsdFRpbWVvdXQgPSBkZWZhdWx0cy50aW1lb3V0O1xuICAgIH1cbiAgICB0aGlzLnBhZ2VzID0gb3B0aW9ucz8ucGFnZXM7XG4gICAgdGhpcy53b3JrZmxvdyA9IG9wdGlvbnM/LndvcmtmbG93O1xuICAgIGlmIChvcHRpb25zPy5zdGFnZXMpIHtcbiAgICAgIHRoaXMuYWRkU3RhZ2VzKC4uLm9wdGlvbnMuc3RhZ2VzKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/LnZhcmlhYmxlcykge1xuICAgICAgdGhpcy5hZGRHbG9iYWxWYXJpYWJsZXMob3B0aW9ucy52YXJpYWJsZXMpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucz8uam9icykge1xuICAgICAgdGhpcy5hZGRKb2JzKG9wdGlvbnMuam9icyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhZGRpdGlvbmFsIHltbC95YW1sIGZpbGVzIHRvIHRoZSBDSSBpbmNsdWRlc1xuICAgKiBAcGFyYW0gaW5jbHVkZXMgVGhlIGluY2x1ZGVzIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGRJbmNsdWRlcyguLi5pbmNsdWRlczogSW5jbHVkZVtdKSB7XG4gICAgZm9yIChjb25zdCBhZGRpdGlvbmFsIG9mIGluY2x1ZGVzKSB7XG4gICAgICB0aGlzLmFzc2VydElzVmFsaWRJbmNsdWRlKGFkZGl0aW9uYWwpO1xuICAgICAgZm9yIChjb25zdCBleGlzdGluZyBvZiB0aGlzLmluY2x1ZGUpIHtcbiAgICAgICAgaWYgKHRoaXMuYXJlRXF1YWxJbmNsdWRlcyhleGlzdGluZywgYWRkaXRpb25hbCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgJHt0aGlzLm5hbWV9OiBHaXRMYWIgQ0kgJHtleGlzdGluZ30gYWxyZWFkeSBjb250YWlucyBvbmUgb3IgbW9yZSB0ZW1wbGF0ZXMgc3BlY2lmaWVkIGluICR7YWRkaXRpb25hbH0uYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuaW5jbHVkZS5wdXNoKGFkZGl0aW9uYWwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaHJvdyBhbiBlcnJvciBpZiB0aGUgcHJvdmlkZWQgSW5jbHVkZSBpcyBpbnZhbGlkLlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0bGFiLmNvbS9naXRsYWItb3JnL2dpdGxhYi8tL2Jsb2IvbWFzdGVyL2xpYi9naXRsYWIvY2kvY29uZmlnL2V4dGVybmFsL21hcHBlci5yYlxuICAgKiBAcGFyYW0gaW5jbHVkZSB0aGUgSW5jbHVkZSB0byB2YWxpZGF0ZS5cbiAgICovXG4gIHByaXZhdGUgYXNzZXJ0SXNWYWxpZEluY2x1ZGUoaW5jbHVkZTogSW5jbHVkZSkge1xuICAgIGNvbnN0IGNvbWJvcyA9IFtcbiAgICAgIGluY2x1ZGUubG9jYWwsXG4gICAgICBpbmNsdWRlLmZpbGUgJiYgaW5jbHVkZS5wcm9qZWN0LFxuICAgICAgaW5jbHVkZS5yZW1vdGUsXG4gICAgICBpbmNsdWRlLnRlbXBsYXRlLFxuICAgIF07XG4gICAgY29uc3QgbGVuID0gY29tYm9zLmZpbHRlcigoeCkgPT4gQm9vbGVhbih4KSkubGVuZ3RoO1xuICAgIGlmIChsZW4gIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYCR7dGhpcy5uYW1lfTogR2l0TGFiIENJIGluY2x1ZGUgJHtpbmNsdWRlfSBjb250YWlucyAke2xlbn0gcHJvcGVydHkgY29tYmluYXRpb24ocykuXG4gICAgICAgIEEgdmFsaWQgaW5jbHVkZSBjb25maWd1cmF0aW9uIHNwZWNpZmllcyAqb25lKiBvZiB0aGUgZm9sbG93aW5nIHByb3BlcnR5IGNvbWJpbmF0aW9ucy5cbiAgICAgICAgKiBsb2NhbFxuICAgICAgICAqIGZpbGUsIHByb2plY3RcbiAgICAgICAgKiByZW1vdGVcbiAgICAgICAgKiB0ZW1wbGF0ZSAgXG4gICAgICAgIGBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZSBlcXVhbGl0eSBvZiBJbmNsdWRlcy5cbiAgICogQHNlZSBodHRwczovL2dpdGxhYi5jb20vZ2l0bGFiLW9yZy9naXRsYWIvLS9ibG9iL21hc3Rlci9saWIvZ2l0bGFiL2NpL2NvbmZpZy9leHRlcm5hbC9tYXBwZXIucmJcbiAgICogQHBhcmFtIHggRmlyc3QgaW5jbHVkZSB0byBjb21wYXJlLlxuICAgKiBAcGFyYW0geSBTZWNvbmQgaW5jbHVkZSB0byBjb21wYXJlLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBpbmNsdWRlcyBhcmUgZXF1YWwuXG4gICAqL1xuICBwcml2YXRlIGFyZUVxdWFsSW5jbHVkZXMoeDogSW5jbHVkZSwgeTogSW5jbHVkZSk6IGJvb2xlYW4ge1xuICAgIGlmICh4LmxvY2FsID09PSB5LmxvY2FsICYmIHgubG9jYWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICh4LnRlbXBsYXRlID09PSB5LnRlbXBsYXRlICYmIHgudGVtcGxhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICh4LnJlbW90ZSA9PT0geS5yZW1vdGUgJiYgeC5yZW1vdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICh4LnByb2plY3QgPT09IHkucHJvamVjdCAmJiB4LnJlZiA9PT0geS5yZWYpIHtcbiAgICAgIGNvbnN0IHhGaWxlcyA9IHguZmlsZSA/IHguZmlsZSA6IFtdO1xuICAgICAgY29uc3QgeUZpbGVzID0geS5maWxlID8geS5maWxlIDogW107XG4gICAgICBjb25zdCBhbGxGaWxlcyA9IHhGaWxlcy5jb25jYXQoeUZpbGVzKTtcbiAgICAgIHJldHVybiBuZXcgU2V0KGFsbEZpbGVzKS5zaXplICE9PSBhbGxGaWxlcy5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYWRkaXRpb25hbCBzZXJ2aWNlcy5cbiAgICogQHBhcmFtIHNlcnZpY2VzIFRoZSBzZXJ2aWNlcyB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWRkU2VydmljZXMoLi4uc2VydmljZXM6IFNlcnZpY2VbXSkge1xuICAgIGZvciAoY29uc3QgYWRkaXRpb25hbCBvZiBzZXJ2aWNlcykge1xuICAgICAgZm9yIChjb25zdCBleGlzdGluZyBvZiB0aGlzLmRlZmF1bHRTZXJ2aWNlcykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgYWRkaXRpb25hbC5uYW1lID09PSBleGlzdGluZy5uYW1lICYmXG4gICAgICAgICAgYWRkaXRpb25hbC5hbGlhcyA9PT0gZXhpc3RpbmcuYWxpYXNcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYCR7dGhpcy5uYW1lfTogR2l0TGFiIENJIGFscmVhZHkgY29udGFpbnMgc2VydmljZSAke2FkZGl0aW9uYWx9LmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmRlZmF1bHRTZXJ2aWNlcy5wdXNoKGFkZGl0aW9uYWwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBnbG9iYWxseSBkZWZpbmVkIHZhcmlhYmxlIHRvIHRoZSBDSSBjb25maWd1cmF0aW9uLlxuICAgKiBAcGFyYW0gdmFyaWFibGVzIFRoZSB2YXJpYWJsZXMgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFkZEdsb2JhbFZhcmlhYmxlcyh2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpKSB7XG4gICAgICBpZiAodGhpcy52YXJpYWJsZXNba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgJHt0aGlzLm5hbWV9OiBHaXRMYWIgQ0kgYWxyZWFkeSBjb250YWlucyB2YXJpYWJsZSAke2tleX0uYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy52YXJpYWJsZXNba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgc3RhZ2VzIHRvIHRoZSBDSSBjb25maWd1cmF0aW9uIGlmIG5vdCBhbHJlYWR5IHByZXNlbnQuXG4gICAqIEBwYXJhbSBzdGFnZXMgc3RhZ2VzIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGRTdGFnZXMoLi4uc3RhZ2VzOiBzdHJpbmdbXSkge1xuICAgIGZvciAoY29uc3Qgc3RhZ2Ugb2Ygc3RhZ2VzKSB7XG4gICAgICBpZiAoIXRoaXMuc3RhZ2VzLmluY2x1ZGVzKHN0YWdlKSkge1xuICAgICAgICB0aGlzLnN0YWdlcy5wdXNoKHN0YWdlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIGpvYnMgYW5kIHRoZWlyIHN0YWdlcyB0byB0aGUgQ0kgY29uZmlndXJhdGlvbi5cbiAgICogQHBhcmFtIGpvYnMgSm9icyB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWRkSm9icyhqb2JzOiBSZWNvcmQ8c3RyaW5nLCBKb2I+KSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoam9icykpIHtcbiAgICAgIGlmICh0aGlzLmpvYnNba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLm5hbWV9OiBHaXRMYWIgQ0kgYWxyZWFkeSBjb250YWlucyBqb2IgJHtrZXl9LmApO1xuICAgICAgfVxuICAgICAgdGhpcy5qb2JzW2tleV0gPSB2YWx1ZTtcbiAgICAgIGlmICh2YWx1ZS5zdGFnZSkge1xuICAgICAgICB0aGlzLmFkZFN0YWdlcyh2YWx1ZS5zdGFnZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJDSSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGVmYXVsdDogdGhpcy5yZW5kZXJEZWZhdWx0KCksXG4gICAgICBpbmNsdWRlOlxuICAgICAgICB0aGlzLmluY2x1ZGUubGVuZ3RoID4gMCA/IHNuYWtlQ2FzZUtleXModGhpcy5pbmNsdWRlKSA6IHVuZGVmaW5lZCxcbiAgICAgIHBhZ2VzOiBzbmFrZUNhc2VLZXlzKHRoaXMucGFnZXMpLFxuICAgICAgc2VydmljZXM6XG4gICAgICAgIHRoaXMuZGVmYXVsdFNlcnZpY2VzLmxlbmd0aCA+IDBcbiAgICAgICAgICA/IHNuYWtlQ2FzZUtleXModGhpcy5kZWZhdWx0U2VydmljZXMpXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICB2YXJpYWJsZXM6XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMudmFyaWFibGVzKS5sZW5ndGggPiAwID8gdGhpcy52YXJpYWJsZXMgOiB1bmRlZmluZWQsXG4gICAgICB3b3JrZmxvdzogc25ha2VDYXNlS2V5cyh0aGlzLndvcmtmbG93KSxcbiAgICAgIHN0YWdlczogdGhpcy5zdGFnZXMubGVuZ3RoID4gMCA/IHRoaXMuc3RhZ2VzIDogdW5kZWZpbmVkLFxuICAgICAgLy8gd2UgZG8gbm90IHdhbnQgdG8gY2hhbmdlIGpvYiBuYW1lc1xuICAgICAgLy8gYXMgdGhleSBjYW4gYmUgaGlkZGVuIChodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS9qb2JzL2luZGV4Lmh0bWwjaGlkZS1qb2JzKVxuICAgICAgLy8gb3IgcmVmZXJlbmNlZCBpbiBleHRlbmRzXG4gICAgICAuLi5zbmFrZUNhc2VLZXlzKHRoaXMuam9icywgdHJ1ZSksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyRGVmYXVsdCgpIHtcbiAgICBjb25zdCBkZWZhdWx0czogRGVmYXVsdCA9IHtcbiAgICAgIGFmdGVyU2NyaXB0OlxuICAgICAgICB0aGlzLmRlZmF1bHRBZnRlclNjcmlwdC5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0aGlzLmRlZmF1bHRBZnRlclNjcmlwdFxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgYXJ0aWZhY3RzOiB0aGlzLmRlZmF1bHRBcnRpZmFjdHMsXG4gICAgICBiZWZvcmVTY3JpcHQ6XG4gICAgICAgIHRoaXMuZGVmYXVsdEJlZm9yZVNjcmlwdC5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0aGlzLmRlZmF1bHRCZWZvcmVTY3JpcHRcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGNhY2hlOiB0aGlzLmRlZmF1bHRDYWNoZSxcbiAgICAgIGltYWdlOiB0aGlzLmRlZmF1bHRJbWFnZSxcbiAgICAgIGludGVycnVwdGlibGU6IHRoaXMuZGVmYXVsdEludGVycnVwdGlibGUsXG4gICAgICByZXRyeTogdGhpcy5kZWZhdWx0UmV0cnksXG4gICAgICBzZXJ2aWNlczpcbiAgICAgICAgdGhpcy5kZWZhdWx0U2VydmljZXMubGVuZ3RoID4gMCA/IHRoaXMuZGVmYXVsdFNlcnZpY2VzIDogdW5kZWZpbmVkLFxuICAgICAgdGFnczogdGhpcy5kZWZhdWx0VGFncy5sZW5ndGggPiAwID8gdGhpcy5kZWZhdWx0VGFncyA6IHVuZGVmaW5lZCxcbiAgICAgIHRpbWVvdXQ6IHRoaXMuZGVmYXVsdFRpbWVvdXQsXG4gICAgfTtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhkZWZhdWx0cykuZmlsdGVyKCh4KSA9PiB4KS5sZW5ndGhcbiAgICAgID8gc25ha2VDYXNlS2V5cyhkZWZhdWx0cylcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNuYWtlQ2FzZUtleXM8VCA9IHVua25vd24+KG9iajogVCwgc2tpcFRvcExldmVsOiBib29sZWFuID0gZmFsc2UpOiBUIHtcbiAgaWYgKHR5cGVvZiBvYmogIT09IFwib2JqZWN0XCIgfHwgb2JqID09IG51bGwpIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgIHJldHVybiBvYmoubWFwKChvKSA9PiBzbmFrZUNhc2VLZXlzKG8pKSBhcyBhbnk7XG4gIH1cblxuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAobGV0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhvYmopKSB7XG4gICAgaWYgKHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmIHYgIT0gbnVsbCAmJiBrICE9PSBcInZhcmlhYmxlc1wiKSB7XG4gICAgICB2ID0gc25ha2VDYXNlS2V5cyh2KTtcbiAgICB9XG4gICAgcmVzdWx0W3NraXBUb3BMZXZlbCA/IGsgOiBzbmFrZShrKV0gPSB2O1xuICB9XG4gIHJldHVybiByZXN1bHQgYXMgYW55O1xufVxuIl19
265
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9naXRsYWIvY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUE2QjtBQUM3QiwrQkFBNkI7QUFhN0IsNENBQXlDO0FBRXpDLGtDQUFtQztBQW1DbkM7Ozs7R0FJRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxxQkFBUztJQXdGNUMsWUFDRSxPQUFnQixFQUNoQixJQUFZLEVBQ1osT0FBZ0M7UUFFaEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBNUVqQjs7V0FFRztRQUNhLHVCQUFrQixHQUFhLEVBQUUsQ0FBQztRQUtsRDs7V0FFRztRQUNhLHdCQUFtQixHQUFhLEVBQUUsQ0FBQztRQWlCbkQ7O1dBRUc7UUFDSyxvQkFBZSxHQUFjLEVBQUUsQ0FBQztRQUN4Qzs7V0FFRztRQUNNLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBS3BDOzs7O1dBSUc7UUFDSyxZQUFPLEdBQWMsRUFBRSxDQUFDO1FBTWhDOzs7V0FHRztRQUNhLFdBQU0sR0FBYSxFQUFFLENBQUM7UUFDdEM7OztXQUdHO1FBQ2EsY0FBUyxHQUN2QixFQUFFLENBQUM7UUFLTDs7V0FFRztRQUNhLFNBQUksR0FBd0IsRUFBRSxDQUFDO1FBUTdDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLElBQUk7WUFDUCxJQUFJLENBQUMsSUFBSSxLQUFLLFdBQVc7Z0JBQ3ZCLENBQUMsQ0FBQyxnQkFBZ0I7Z0JBQ2xCLENBQUMsQ0FBQyx3QkFBd0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztRQUM3RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksZUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVB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IFwicGF0aFwiO1xuaW1wb3J0IHsgc25ha2UgfSBmcm9tIFwiY2FzZVwiO1xuaW1wb3J0IHtcbiAgQXJ0aWZhY3RzLFxuICBDYWNoZSxcbiAgRGVmYXVsdCxcbiAgSW1hZ2UsXG4gIEluY2x1ZGUsXG4gIEpvYixcbiAgUmV0cnksXG4gIFNlcnZpY2UsXG4gIFZhcmlhYmxlQ29uZmlnLFxuICBXb3JrZmxvdyxcbn0gZnJvbSBcIi4vY29uZmlndXJhdGlvbi1tb2RlbFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuLi9wcm9qZWN0XCI7XG5pbXBvcnQgeyBZYW1sRmlsZSB9IGZyb20gXCIuLi95YW1sXCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYENpQ29uZmlndXJhdGlvbmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2lDb25maWd1cmF0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBEZWZhdWx0IHNldHRpbmdzIGZvciB0aGUgQ0kgQ29uZmlndXJhdGlvbi4gSm9icyB0aGF0IGRvIG5vdCBkZWZpbmUgb25lIG9yIG1vcmUgb2YgdGhlIGxpc3RlZCBrZXl3b3JkcyB1c2UgdGhlIHZhbHVlIGRlZmluZWQgaW4gdGhlIGRlZmF1bHQgc2VjdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHQ/OiBEZWZhdWx0O1xuICAvKipcbiAgICogQSBzcGVjaWFsIGpvYiB1c2VkIHRvIHVwbG9hZCBzdGF0aWMgc2l0ZXMgdG8gR2l0bGFiIHBhZ2VzLiBSZXF1aXJlcyBhIGBwdWJsaWMvYCBkaXJlY3RvcnlcbiAgICogd2l0aCBgYXJ0aWZhY3RzLnBhdGhgIHBvaW50aW5nIHRvIGl0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGFnZXM/OiBKb2I7XG4gIC8qKlxuICAgKiBVc2VkIHRvIGNvbnRyb2wgcGlwZWxpbmUgYmVoYXZpb3IuXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvdz86IFdvcmtmbG93O1xuICAvKipcbiAgICogR3JvdXBzIGpvYnMgaW50byBzdGFnZXMuIEFsbCBqb2JzIGluIG9uZSBzdGFnZSBtdXN0IGNvbXBsZXRlIGJlZm9yZSBuZXh0IHN0YWdlIGlzXG4gICAqIGV4ZWN1dGVkLiBJZiBubyBzdGFnZXMgYXJlIHNwZWNpZmllZC4gRGVmYXVsdHMgdG8gWydidWlsZCcsICd0ZXN0JywgJ2RlcGxveSddLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2VzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBHbG9iYWwgdmFyaWFibGVzIHRoYXQgYXJlIHBhc3NlZCB0byBqb2JzLlxuICAgKiBJZiB0aGUgam9iIGFscmVhZHkgaGFzIHRoYXQgdmFyaWFibGUgZGVmaW5lZCwgdGhlIGpvYi1sZXZlbCB2YXJpYWJsZSB0YWtlcyBwcmVjZWRlbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFyaWFibGVzPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqXG4gICAqIEFuIGluaXRpYWwgc2V0IG9mIGpvYnMgdG8gYWRkIHRvIHRoZSBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgam9icz86IFJlY29yZDxzdHJpbmcsIEpvYj47XG59XG5cbi8qKlxuICogQ0kgZm9yIEdpdExhYi5cbiAqIEEgQ0kgaXMgYSBjb25maWd1cmFibGUgYXV0b21hdGVkIHByb2Nlc3MgbWFkZSB1cCBvZiBvbmUgb3IgbW9yZSBzdGFnZXMvam9icy5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC9cbiAqL1xuZXhwb3J0IGNsYXNzIENpQ29uZmlndXJhdGlvbiBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgcHJvamVjdCB0aGUgY29uZmlndXJhdGlvbiBiZWxvbmdzIHRvLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IFByb2plY3Q7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQYXRoIHRvIENJIGZpbGUgZ2VuZXJhdGVkIGJ5IHRoZSBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB3b3JrZmxvdyBZQU1MIGZpbGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZTogWWFtbEZpbGU7XG4gIC8qKlxuICAgKiBEZWZpbmVzIGRlZmF1bHQgc2NyaXB0cyB0aGF0IHNob3VsZCBydW4gKmFmdGVyKiBhbGwgam9icy4gQ2FuIGJlIG92ZXJyaWRlbiBieSB0aGUgam9iIGxldmVsIGBhZnRlclNjcmlwdGAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdEFmdGVyU2NyaXB0OiBzdHJpbmdbXSA9IFtdO1xuICAvKipcbiAgICogRGVmYXVsdCBsaXN0IG9mIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0aGF0IHNob3VsZCBiZSBhdHRhY2hlZCB0byB0aGUgam9iIGlmIGl0IHN1Y2NlZWRzLiBBcnRpZmFjdHMgYXJlIHNlbnQgdG8gR2l0bGFiIHdoZXJlIHRoZXkgY2FuIGJlIGRvd25sb2FkZWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdEFydGlmYWN0cz86IEFydGlmYWN0cztcbiAgLyoqXG4gICAqIERlZmluZXMgZGVmYXVsdCBzY3JpcHRzIHRoYXQgc2hvdWxkIHJ1biAqYmVmb3JlKiBhbGwgam9icy4gQ2FuIGJlIG92ZXJyaWRlbiBieSB0aGUgam9iIGxldmVsIGBhZnRlclNjcmlwdGAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdEJlZm9yZVNjcmlwdDogc3RyaW5nW10gPSBbXTtcbiAgLyoqXG4gICAqIEEgZGVmYXVsdCBsaXN0IG9mIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0byBjYWNoZSBiZXR3ZWVuIGpvYnMuIFlvdSBjYW4gb25seSB1c2UgcGF0aHMgdGhhdCBhcmUgaW4gdGhlIGxvY2FsIHdvcmtpbmcgY29weS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZWZhdWx0Q2FjaGU/OiBDYWNoZTtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgZGVmYXVsdCBkb2NrZXIgaW1hZ2UgdG8gdXNlIGdsb2JhbGx5IGZvciBhbGwgam9icy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZWZhdWx0SW1hZ2U/OiBJbWFnZTtcbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciB3aGV0aGVyIGEgam9iIHNob3VsZCBiZSBjYW5jZWxlZCB3aGVuIGEgbmV3ZXIgcGlwZWxpbmUgc3RhcnRzIGJlZm9yZSB0aGUgam9iIGNvbXBsZXRlcyAoRGVmYXVsdDogZmFsc2UpLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHRJbnRlcnJ1cHRpYmxlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEhvdyBtYW55IHRpbWVzIGEgam9iIGlzIHJldHJpZWQgaWYgaXQgZmFpbHMuIElmIG5vdCBkZWZpbmVkLCBkZWZhdWx0cyB0byAwIGFuZCBqb2JzIGRvIG5vdCByZXRyeS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZWZhdWx0UmV0cnk/OiBSZXRyeTtcbiAgLyoqXG4gICAqIEEgZGVmYXVsdCBsaXN0IG9mIGFkZGl0aW9uYWwgRG9ja2VyIGltYWdlcyB0byBydW4gc2NyaXB0cyBpbi4gVGhlIHNlcnZpY2UgaW1hZ2UgaXMgbGlua2VkIHRvIHRoZSBpbWFnZSBzcGVjaWZpZWQgaW4gdGhlICBpbWFnZSBwYXJhbWV0ZXIuXG4gICAqL1xuICBwcml2YXRlIGRlZmF1bHRTZXJ2aWNlczogU2VydmljZVtdID0gW107XG4gIC8qKlxuICAgKiBVc2VkIHRvIHNlbGVjdCBhIHNwZWNpZmljIHJ1bm5lciBmcm9tIHRoZSBsaXN0IG9mIGFsbCBydW5uZXJzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdGhlIHByb2plY3QuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0VGFnczogc3RyaW5nW10gPSBbXTtcbiAgLyoqXG4gICAqIEEgZGVmYXVsdCB0aW1lb3V0IGpvYiB3cml0dGVuIGluIG5hdHVyYWwgbGFuZ3VhZ2UgKEV4LiBvbmUgaG91ciwgMzYwMCBzZWNvbmRzLCA2MCBtaW51dGVzKS5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRUaW1lb3V0Pzogc3RyaW5nO1xuICAvKipcbiAgICogQ2FuIGJlIGBJbmNsdWRlYCBvciBgSW5jbHVkZVtdYC4gRWFjaCBgSW5jbHVkZWAgd2lsbCBiZSBhIHN0cmluZywgb3IgYW5cbiAgICogb2JqZWN0IHdpdGggcHJvcGVydGllcyBmb3IgdGhlIG1ldGhvZCBpZiBpbmNsdWRpbmcgZXh0ZXJuYWwgWUFNTCBmaWxlLiBUaGUgZXh0ZXJuYWxcbiAgICogY29udGVudCB3aWxsIGJlIGZldGNoZWQsIGluY2x1ZGVkIGFuZCBldmFsdWF0ZWQgYWxvbmcgdGhlIGAuZ2l0bGFiLWNpLnltbGAuXG4gICAqL1xuICBwcml2YXRlIGluY2x1ZGU6IEluY2x1ZGVbXSA9IFtdO1xuICAvKipcbiAgICogQSBzcGVjaWFsIGpvYiB1c2VkIHRvIHVwbG9hZCBzdGF0aWMgc2l0ZXMgdG8gR2l0bGFiIHBhZ2VzLiBSZXF1aXJlcyBhIGBwdWJsaWMvYCBkaXJlY3RvcnlcbiAgICogd2l0aCBgYXJ0aWZhY3RzLnBhdGhgIHBvaW50aW5nIHRvIGl0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBhZ2VzPzogSm9iO1xuICAvKipcbiAgICogR3JvdXBzIGpvYnMgaW50byBzdGFnZXMuIEFsbCBqb2JzIGluIG9uZSBzdGFnZSBtdXN0IGNvbXBsZXRlIGJlZm9yZSBuZXh0IHN0YWdlIGlzXG4gICAqIGV4ZWN1dGVkLiBEZWZhdWx0cyB0byBbJ2J1aWxkJywgJ3Rlc3QnLCAnZGVwbG95J10uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhZ2VzOiBzdHJpbmdbXSA9IFtdO1xuICAvKipcbiAgICogR2xvYmFsIHZhcmlhYmxlcyB0aGF0IGFyZSBwYXNzZWQgdG8gam9icy5cbiAgICogSWYgdGhlIGpvYiBhbHJlYWR5IGhhcyB0aGF0IHZhcmlhYmxlIGRlZmluZWQsIHRoZSBqb2ItbGV2ZWwgdmFyaWFibGUgdGFrZXMgcHJlY2VkZW5jZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIG51bWJlciB8IFZhcmlhYmxlQ29uZmlnIHwgc3RyaW5nPiA9XG4gICAge307XG4gIC8qKlxuICAgKiBVc2VkIHRvIGNvbnRyb2wgcGlwZWxpbmUgYmVoYXZpb3IuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgd29ya2Zsb3c/OiBXb3JrZmxvdztcbiAgLyoqXG4gICAqIFRoZSBqb2JzIGluIHRoZSBDSSBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGpvYnM6IFJlY29yZDxzdHJpbmcsIEpvYj4gPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm9qZWN0OiBQcm9qZWN0LFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzogQ2lDb25maWd1cmF0aW9uT3B0aW9uc1xuICApIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcbiAgICB0aGlzLnByb2plY3QgPSBwcm9qZWN0O1xuICAgIHRoaXMubmFtZSA9IHBhdGgucGFyc2UobmFtZSkubmFtZTtcbiAgICB0aGlzLnBhdGggPVxuICAgICAgdGhpcy5uYW1lID09PSBcImdpdGxhYi1jaVwiXG4gICAgICAgID8gXCIuZ2l0bGFiLWNpLnltbFwiXG4gICAgICAgIDogYC5naXRsYWIvY2ktdGVtcGxhdGVzLyR7bmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpfS55bWxgO1xuICAgIHRoaXMuZmlsZSA9IG5ldyBZYW1sRmlsZSh0aGlzLnByb2plY3QsIHRoaXMucGF0aCwge1xuICAgICAgb2JqOiAoKSA9PiB0aGlzLnJlbmRlckNJKCksXG4gICAgICAvLyBHaXRMYWIgbmVlZHMgdG8gcmVhZCB0aGUgZmlsZSBmcm9tIHRoZSByZXBvc2l0b3J5IGluIG9yZGVyIHRvIHdvcmsuXG4gICAgICBjb21taXR0ZWQ6IHRydWUsXG4gICAgfSk7XG4gICAgY29uc3QgZGVmYXVsdHMgPSBvcHRpb25zPy5kZWZhdWx0O1xuICAgIGlmIChkZWZhdWx0cykge1xuICAgICAgdGhpcy5kZWZhdWx0QWZ0ZXJTY3JpcHQucHVzaCguLi4oZGVmYXVsdHMuYWZ0ZXJTY3JpcHQgPz8gW10pKTtcbiAgICAgIHRoaXMuZGVmYXVsdEFydGlmYWN0cyA9IGRlZmF1bHRzLmFydGlmYWN0cztcbiAgICAgIGRlZmF1bHRzLmJlZm9yZVNjcmlwdCAmJlxuICAgICAgICB0aGlzLmRlZmF1bHRCZWZvcmVTY3JpcHQucHVzaCguLi5kZWZhdWx0cy5iZWZvcmVTY3JpcHQpO1xuICAgICAgdGhpcy5kZWZhdWx0Q2FjaGUgPSBkZWZhdWx0cy5jYWNoZTtcbiAgICAgIHRoaXMuZGVmYXVsdEltYWdlID0gZGVmYXVsdHMuaW1hZ2U7XG4gICAgICB0aGlzLmRlZmF1bHRJbnRlcnJ1cHRpYmxlID0gZGVmYXVsdHMuaW50ZXJydXB0aWJsZTtcbiAgICAgIHRoaXMuZGVmYXVsdFJldHJ5ID0gZGVmYXVsdHMucmV0cnk7XG4gICAgICBkZWZhdWx0cy5zZXJ2aWNlcyAmJiB0aGlzLmFkZFNlcnZpY2VzKC4uLmRlZmF1bHRzLnNlcnZpY2VzKTtcbiAgICAgIGRlZmF1bHRzLnRhZ3MgJiYgdGhpcy5kZWZhdWx0VGFncy5wdXNoKC4uLmRlZmF1bHRzLnRhZ3MpO1xuICAgICAgdGhpcy5kZWZhdWx0VGltZW91dCA9IGRlZmF1bHRzLnRpbWVvdXQ7XG4gICAgfVxuICAgIHRoaXMucGFnZXMgPSBvcHRpb25zPy5wYWdlcztcbiAgICB0aGlzLndvcmtmbG93ID0gb3B0aW9ucz8ud29ya2Zsb3c7XG4gICAgaWYgKG9wdGlvbnM/LnN0YWdlcykge1xuICAgICAgdGhpcy5hZGRTdGFnZXMoLi4ub3B0aW9ucy5zdGFnZXMpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucz8udmFyaWFibGVzKSB7XG4gICAgICB0aGlzLmFkZEdsb2JhbFZhcmlhYmxlcyhvcHRpb25zLnZhcmlhYmxlcyk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zPy5qb2JzKSB7XG4gICAgICB0aGlzLmFkZEpvYnMob3B0aW9ucy5qb2JzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFkZGl0aW9uYWwgeW1sL3lhbWwgZmlsZXMgdG8gdGhlIENJIGluY2x1ZGVzXG4gICAqIEBwYXJhbSBpbmNsdWRlcyBUaGUgaW5jbHVkZXMgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFkZEluY2x1ZGVzKC4uLmluY2x1ZGVzOiBJbmNsdWRlW10pIHtcbiAgICBmb3IgKGNvbnN0IGFkZGl0aW9uYWwgb2YgaW5jbHVkZXMpIHtcbiAgICAgIHRoaXMuYXNzZXJ0SXNWYWxpZEluY2x1ZGUoYWRkaXRpb25hbCk7XG4gICAgICBmb3IgKGNvbnN0IGV4aXN0aW5nIG9mIHRoaXMuaW5jbHVkZSkge1xuICAgICAgICBpZiAodGhpcy5hcmVFcXVhbEluY2x1ZGVzKGV4aXN0aW5nLCBhZGRpdGlvbmFsKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke3RoaXMubmFtZX06IEdpdExhYiBDSSAke2V4aXN0aW5nfSBhbHJlYWR5IGNvbnRhaW5zIG9uZSBvciBtb3JlIHRlbXBsYXRlcyBzcGVjaWZpZWQgaW4gJHthZGRpdGlvbmFsfS5gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5pbmNsdWRlLnB1c2goYWRkaXRpb25hbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRocm93IGFuIGVycm9yIGlmIHRoZSBwcm92aWRlZCBJbmNsdWRlIGlzIGludmFsaWQuXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRsYWIuY29tL2dpdGxhYi1vcmcvZ2l0bGFiLy0vYmxvYi9tYXN0ZXIvbGliL2dpdGxhYi9jaS9jb25maWcvZXh0ZXJuYWwvbWFwcGVyLnJiXG4gICAqIEBwYXJhbSBpbmNsdWRlIHRoZSBJbmNsdWRlIHRvIHZhbGlkYXRlLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3NlcnRJc1ZhbGlkSW5jbHVkZShpbmNsdWRlOiBJbmNsdWRlKSB7XG4gICAgY29uc3QgY29tYm9zID0gW1xuICAgICAgaW5jbHVkZS5sb2NhbCxcbiAgICAgIGluY2x1ZGUuZmlsZSAmJiBpbmNsdWRlLnByb2plY3QsXG4gICAgICBpbmNsdWRlLnJlbW90ZSxcbiAgICAgIGluY2x1ZGUudGVtcGxhdGUsXG4gICAgXTtcbiAgICBjb25zdCBsZW4gPSBjb21ib3MuZmlsdGVyKCh4KSA9PiBCb29sZWFuKHgpKS5sZW5ndGg7XG4gICAgaWYgKGxlbiAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgJHt0aGlzLm5hbWV9OiBHaXRMYWIgQ0kgaW5jbHVkZSAke2luY2x1ZGV9IGNvbnRhaW5zICR7bGVufSBwcm9wZXJ0eSBjb21iaW5hdGlvbihzKS5cbiAgICAgICAgQSB2YWxpZCBpbmNsdWRlIGNvbmZpZ3VyYXRpb24gc3BlY2lmaWVzICpvbmUqIG9mIHRoZSBmb2xsb3dpbmcgcHJvcGVydHkgY29tYmluYXRpb25zLlxuICAgICAgICAqIGxvY2FsXG4gICAgICAgICogZmlsZSwgcHJvamVjdFxuICAgICAgICAqIHJlbW90ZVxuICAgICAgICAqIHRlbXBsYXRlICBcbiAgICAgICAgYFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIGVxdWFsaXR5IG9mIEluY2x1ZGVzLlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0bGFiLmNvbS9naXRsYWItb3JnL2dpdGxhYi8tL2Jsb2IvbWFzdGVyL2xpYi9naXRsYWIvY2kvY29uZmlnL2V4dGVybmFsL21hcHBlci5yYlxuICAgKiBAcGFyYW0geCBGaXJzdCBpbmNsdWRlIHRvIGNvbXBhcmUuXG4gICAqIEBwYXJhbSB5IFNlY29uZCBpbmNsdWRlIHRvIGNvbXBhcmUuXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGluY2x1ZGVzIGFyZSBlcXVhbC5cbiAgICovXG4gIHByaXZhdGUgYXJlRXF1YWxJbmNsdWRlcyh4OiBJbmNsdWRlLCB5OiBJbmNsdWRlKTogYm9vbGVhbiB7XG4gICAgaWYgKHgubG9jYWwgPT09IHkubG9jYWwgJiYgeC5sb2NhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHgudGVtcGxhdGUgPT09IHkudGVtcGxhdGUgJiYgeC50ZW1wbGF0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHgucmVtb3RlID09PSB5LnJlbW90ZSAmJiB4LnJlbW90ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHgucHJvamVjdCA9PT0geS5wcm9qZWN0ICYmIHgucmVmID09PSB5LnJlZikge1xuICAgICAgY29uc3QgeEZpbGVzID0geC5maWxlID8geC5maWxlIDogW107XG4gICAgICBjb25zdCB5RmlsZXMgPSB5LmZpbGUgPyB5LmZpbGUgOiBbXTtcbiAgICAgIGNvbnN0IGFsbEZpbGVzID0geEZpbGVzLmNvbmNhdCh5RmlsZXMpO1xuICAgICAgcmV0dXJuIG5ldyBTZXQoYWxsRmlsZXMpLnNpemUgIT09IGFsbEZpbGVzLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhZGRpdGlvbmFsIHNlcnZpY2VzLlxuICAgKiBAcGFyYW0gc2VydmljZXMgVGhlIHNlcnZpY2VzIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGRTZXJ2aWNlcyguLi5zZXJ2aWNlczogU2VydmljZVtdKSB7XG4gICAgZm9yIChjb25zdCBhZGRpdGlvbmFsIG9mIHNlcnZpY2VzKSB7XG4gICAgICBmb3IgKGNvbnN0IGV4aXN0aW5nIG9mIHRoaXMuZGVmYXVsdFNlcnZpY2VzKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBhZGRpdGlvbmFsLm5hbWUgPT09IGV4aXN0aW5nLm5hbWUgJiZcbiAgICAgICAgICBhZGRpdGlvbmFsLmFsaWFzID09PSBleGlzdGluZy5hbGlhc1xuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgJHt0aGlzLm5hbWV9OiBHaXRMYWIgQ0kgYWxyZWFkeSBjb250YWlucyBzZXJ2aWNlICR7YWRkaXRpb25hbH0uYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZGVmYXVsdFNlcnZpY2VzLnB1c2goYWRkaXRpb25hbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGdsb2JhbGx5IGRlZmluZWQgdmFyaWFibGUgdG8gdGhlIENJIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBwYXJhbSB2YXJpYWJsZXMgVGhlIHZhcmlhYmxlcyB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWRkR2xvYmFsVmFyaWFibGVzKHZhcmlhYmxlczogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykpIHtcbiAgICAgIGlmICh0aGlzLnZhcmlhYmxlc1trZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGAke3RoaXMubmFtZX06IEdpdExhYiBDSSBhbHJlYWR5IGNvbnRhaW5zIHZhcmlhYmxlICR7a2V5fS5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLnZhcmlhYmxlc1trZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBzdGFnZXMgdG8gdGhlIENJIGNvbmZpZ3VyYXRpb24gaWYgbm90IGFscmVhZHkgcHJlc2VudC5cbiAgICogQHBhcmFtIHN0YWdlcyBzdGFnZXMgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFkZFN0YWdlcyguLi5zdGFnZXM6IHN0cmluZ1tdKSB7XG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiBzdGFnZXMpIHtcbiAgICAgIGlmICghdGhpcy5zdGFnZXMuaW5jbHVkZXMoc3RhZ2UpKSB7XG4gICAgICAgIHRoaXMuc3RhZ2VzLnB1c2goc3RhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgam9icyBhbmQgdGhlaXIgc3RhZ2VzIHRvIHRoZSBDSSBjb25maWd1cmF0aW9uLlxuICAgKiBAcGFyYW0gam9icyBKb2JzIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGRKb2JzKGpvYnM6IFJlY29yZDxzdHJpbmcsIEpvYj4pIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhqb2JzKSkge1xuICAgICAgaWYgKHRoaXMuam9ic1trZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMubmFtZX06IEdpdExhYiBDSSBhbHJlYWR5IGNvbnRhaW5zIGpvYiAke2tleX0uYCk7XG4gICAgICB9XG4gICAgICB0aGlzLmpvYnNba2V5XSA9IHZhbHVlO1xuICAgICAgaWYgKHZhbHVlLnN0YWdlKSB7XG4gICAgICAgIHRoaXMuYWRkU3RhZ2VzKHZhbHVlLnN0YWdlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbmRlckNJKCkge1xuICAgIHJldHVybiB7XG4gICAgICBkZWZhdWx0OiB0aGlzLnJlbmRlckRlZmF1bHQoKSxcbiAgICAgIGluY2x1ZGU6XG4gICAgICAgIHRoaXMuaW5jbHVkZS5sZW5ndGggPiAwID8gc25ha2VDYXNlS2V5cyh0aGlzLmluY2x1ZGUpIDogdW5kZWZpbmVkLFxuICAgICAgcGFnZXM6IHNuYWtlQ2FzZUtleXModGhpcy5wYWdlcyksXG4gICAgICBzZXJ2aWNlczpcbiAgICAgICAgdGhpcy5kZWZhdWx0U2VydmljZXMubGVuZ3RoID4gMFxuICAgICAgICAgID8gc25ha2VDYXNlS2V5cyh0aGlzLmRlZmF1bHRTZXJ2aWNlcylcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHZhcmlhYmxlczpcbiAgICAgICAgT2JqZWN0LmVudHJpZXModGhpcy52YXJpYWJsZXMpLmxlbmd0aCA+IDAgPyB0aGlzLnZhcmlhYmxlcyA6IHVuZGVmaW5lZCxcbiAgICAgIHdvcmtmbG93OiBzbmFrZUNhc2VLZXlzKHRoaXMud29ya2Zsb3cpLFxuICAgICAgc3RhZ2VzOiB0aGlzLnN0YWdlcy5sZW5ndGggPiAwID8gdGhpcy5zdGFnZXMgOiB1bmRlZmluZWQsXG4gICAgICAvLyB3ZSBkbyBub3Qgd2FudCB0byBjaGFuZ2Ugam9iIG5hbWVzXG4gICAgICAvLyBhcyB0aGV5IGNhbiBiZSBoaWRkZW4gKGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL2pvYnMvaW5kZXguaHRtbCNoaWRlLWpvYnMpXG4gICAgICAvLyBvciByZWZlcmVuY2VkIGluIGV4dGVuZHNcbiAgICAgIC4uLnNuYWtlQ2FzZUtleXModGhpcy5qb2JzLCB0cnVlKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJEZWZhdWx0KCkge1xuICAgIGNvbnN0IGRlZmF1bHRzOiBEZWZhdWx0ID0ge1xuICAgICAgYWZ0ZXJTY3JpcHQ6XG4gICAgICAgIHRoaXMuZGVmYXVsdEFmdGVyU2NyaXB0Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IHRoaXMuZGVmYXVsdEFmdGVyU2NyaXB0XG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBhcnRpZmFjdHM6IHRoaXMuZGVmYXVsdEFydGlmYWN0cyxcbiAgICAgIGJlZm9yZVNjcmlwdDpcbiAgICAgICAgdGhpcy5kZWZhdWx0QmVmb3JlU2NyaXB0Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IHRoaXMuZGVmYXVsdEJlZm9yZVNjcmlwdFxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgY2FjaGU6IHRoaXMuZGVmYXVsdENhY2hlLFxuICAgICAgaW1hZ2U6IHRoaXMuZGVmYXVsdEltYWdlLFxuICAgICAgaW50ZXJydXB0aWJsZTogdGhpcy5kZWZhdWx0SW50ZXJydXB0aWJsZSxcbiAgICAgIHJldHJ5OiB0aGlzLmRlZmF1bHRSZXRyeSxcbiAgICAgIHNlcnZpY2VzOlxuICAgICAgICB0aGlzLmRlZmF1bHRTZXJ2aWNlcy5sZW5ndGggPiAwID8gdGhpcy5kZWZhdWx0U2VydmljZXMgOiB1bmRlZmluZWQsXG4gICAgICB0YWdzOiB0aGlzLmRlZmF1bHRUYWdzLmxlbmd0aCA+IDAgPyB0aGlzLmRlZmF1bHRUYWdzIDogdW5kZWZpbmVkLFxuICAgICAgdGltZW91dDogdGhpcy5kZWZhdWx0VGltZW91dCxcbiAgICB9O1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKGRlZmF1bHRzKS5maWx0ZXIoKHgpID0+IHgpLmxlbmd0aFxuICAgICAgPyBzbmFrZUNhc2VLZXlzKGRlZmF1bHRzKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gc25ha2VDYXNlS2V5czxUID0gdW5rbm93bj4ob2JqOiBULCBza2lwVG9wTGV2ZWw6IGJvb2xlYW4gPSBmYWxzZSk6IFQge1xuICBpZiAodHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIiB8fCBvYmogPT0gbnVsbCkge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgcmV0dXJuIG9iai5tYXAoKG8pID0+IHNuYWtlQ2FzZUtleXMobykpIGFzIGFueTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChsZXQgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICBpZiAodHlwZW9mIHYgPT09IFwib2JqZWN0XCIgJiYgdiAhPSBudWxsICYmIGsgIT09IFwidmFyaWFibGVzXCIpIHtcbiAgICAgIHYgPSBzbmFrZUNhc2VLZXlzKHYpO1xuICAgIH1cbiAgICByZXN1bHRbc2tpcFRvcExldmVsID8gayA6IHNuYWtlKGspXSA9IHY7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdCBhcyBhbnk7XG59XG4iXX0=
@@ -32,7 +32,7 @@ class GitlabConfiguration extends configuration_1.CiConfiguration {
32
32
  }
33
33
  }
34
34
  }
35
- _a = JSII_RTTI_SYMBOL_1;
36
- GitlabConfiguration[_a] = { fqn: "projen.gitlab.GitlabConfiguration", version: "0.71.83" };
37
35
  exports.GitlabConfiguration = GitlabConfiguration;
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0bGFiLWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2l0bGFiL2dpdGxhYi1jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsbURBQWtEO0FBQ2xELGlFQUE2RDtBQUc3RDs7R0FFRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsK0JBQWU7SUFFdEQsWUFBWSxPQUFnQixFQUFFLE9BQWdDO1FBQzVELEtBQUssQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRnZCLG9CQUFlLEdBQXdDLEVBQUUsQ0FBQztJQUcxRSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0kscUJBQXFCLENBQUMsTUFBOEM7UUFDekUsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDcEQsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRTtnQkFDNUMsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLElBQUksQ0FBQyxJQUFJLDBDQUEwQyxJQUFJLElBQUksQ0FDL0QsQ0FBQzthQUNIO1lBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSwwQ0FBbUIsQ0FDdEMsSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLEVBQ0osSUFBSSxFQUNKLE9BQU8sQ0FDUixDQUFDO1lBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDO1lBQy9DLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNwQztJQUNILENBQUM7Ozs7QUE5QlUsa0RBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2lDb25maWd1cmF0aW9uT3B0aW9ucyB9IGZyb20gXCIuXCI7XG5pbXBvcnQgeyBDaUNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9jb25maWd1cmF0aW9uXCI7XG5pbXBvcnQgeyBOZXN0ZWRDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4vbmVzdGVkLWNvbmZpZ3VyYXRpb25cIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuXG4vKipcbiAqIEEgR2l0TGFiIENJIGZvciB0aGUgbWFpbiBgLmdpdGxhYi1jaS55bWxgIGZpbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBHaXRsYWJDb25maWd1cmF0aW9uIGV4dGVuZHMgQ2lDb25maWd1cmF0aW9uIHtcbiAgcHVibGljIHJlYWRvbmx5IG5lc3RlZFRlbXBsYXRlczogUmVjb3JkPHN0cmluZywgTmVzdGVkQ29uZmlndXJhdGlvbj4gPSB7fTtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9ucz86IENpQ29uZmlndXJhdGlvbk9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCBcImdpdGxhYi1jaVwiLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuZCBhZGRzIG5lc3RlZCB0ZW1wbGF0ZXMgdG8gdGhlIGluY2x1ZGVzIG9mIHRoZSBtYWluIENJLlxuICAgKiBBZGRpdGlvbmFsbHkgYWRkcyB0aGVpciBzdGFnZXMgdG8gdGhlIG1haW4gQ0kgaWYgdGhleSBhcmUgbm90IGFscmVhZHkgcHJlc2VudC5cbiAgICogWW91IGNhbiBmdXRoZXIgY3VzdG9taXplIG5lc3RlZCB0ZW1wbGF0ZXMgdGhyb3VnaCB0aGUgYG5lc3RlZFRlbXBsYXRlc2AgcHJvcGVydHkuXG4gICAqIEUuZy4gZ2l0bGFiQ29uZmlnLm5lc3RlZFRlbXBsYXRlc1sndGVtcGxhdGVOYW1lJ10/LmFkZFN0YWdlcygnc3RhZ2VOYW1lJylcbiAgICogQHBhcmFtIGNvbmZpZyBhIHJlY29yZCB0aGUgbmFtZXMgYW5kIGNvbmZpZ3VyYWl0b25zIG9mIHRoZSB0ZW1wbGF0ZXMuXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlTmVzdGVkVGVtcGxhdGVzKGNvbmZpZzogUmVjb3JkPHN0cmluZywgQ2lDb25maWd1cmF0aW9uT3B0aW9ucz4pIHtcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBvcHRpb25zXSBvZiBPYmplY3QuZW50cmllcyhjb25maWcpKSB7XG4gICAgICBpZiAodGhpcy5uZXN0ZWRUZW1wbGF0ZXNbbmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYCR7dGhpcy5uYW1lfTogR2l0TGFiIENJIGFscmVhZHkgY29udGFpbnMgdGVtcGxhdGUgXCIke25hbWV9XCIuYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgdGVtcGxhdGUgPSBuZXcgTmVzdGVkQ29uZmlndXJhdGlvbihcbiAgICAgICAgdGhpcy5wcm9qZWN0LFxuICAgICAgICB0aGlzLFxuICAgICAgICBuYW1lLFxuICAgICAgICBvcHRpb25zXG4gICAgICApO1xuICAgICAgdGhpcy5uZXN0ZWRUZW1wbGF0ZXNbdGVtcGxhdGUubmFtZV0gPSB0ZW1wbGF0ZTtcbiAgICAgIHRoaXMuYWRkSW5jbHVkZXMoeyBsb2NhbDogdGVtcGxhdGUucGF0aCB9KTtcbiAgICAgIHRoaXMuYWRkU3RhZ2VzKC4uLnRlbXBsYXRlLnN0YWdlcyk7XG4gICAgfVxuICB9XG59XG4iXX0=
36
+ _a = JSII_RTTI_SYMBOL_1;
37
+ GitlabConfiguration[_a] = { fqn: "projen.gitlab.GitlabConfiguration", version: "0.71.85" };
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0bGFiLWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2l0bGFiL2dpdGxhYi1jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsbURBQWtEO0FBQ2xELGlFQUE2RDtBQUc3RDs7R0FFRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsK0JBQWU7SUFFdEQsWUFBWSxPQUFnQixFQUFFLE9BQWdDO1FBQzVELEtBQUssQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRnZCLG9CQUFlLEdBQXdDLEVBQUUsQ0FBQztJQUcxRSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0kscUJBQXFCLENBQUMsTUFBOEM7UUFDekUsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDcEQsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRTtnQkFDNUMsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLElBQUksQ0FBQyxJQUFJLDBDQUEwQyxJQUFJLElBQUksQ0FDL0QsQ0FBQzthQUNIO1lBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSwwQ0FBbUIsQ0FDdEMsSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLEVBQ0osSUFBSSxFQUNKLE9BQU8sQ0FDUixDQUFDO1lBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDO1lBQy9DLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNwQztJQUNILENBQUM7O0FBOUJILGtEQStCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENpQ29uZmlndXJhdGlvbk9wdGlvbnMgfSBmcm9tIFwiLlwiO1xuaW1wb3J0IHsgQ2lDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4vY29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHsgTmVzdGVkQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuL25lc3RlZC1jb25maWd1cmF0aW9uXCI7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RcIjtcblxuLyoqXG4gKiBBIEdpdExhYiBDSSBmb3IgdGhlIG1haW4gYC5naXRsYWItY2kueW1sYCBmaWxlLlxuICovXG5leHBvcnQgY2xhc3MgR2l0bGFiQ29uZmlndXJhdGlvbiBleHRlbmRzIENpQ29uZmlndXJhdGlvbiB7XG4gIHB1YmxpYyByZWFkb25seSBuZXN0ZWRUZW1wbGF0ZXM6IFJlY29yZDxzdHJpbmcsIE5lc3RlZENvbmZpZ3VyYXRpb24+ID0ge307XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM/OiBDaUNvbmZpZ3VyYXRpb25PcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCwgXCJnaXRsYWItY2lcIiwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbmQgYWRkcyBuZXN0ZWQgdGVtcGxhdGVzIHRvIHRoZSBpbmNsdWRlcyBvZiB0aGUgbWFpbiBDSS5cbiAgICogQWRkaXRpb25hbGx5IGFkZHMgdGhlaXIgc3RhZ2VzIHRvIHRoZSBtYWluIENJIGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5IHByZXNlbnQuXG4gICAqIFlvdSBjYW4gZnV0aGVyIGN1c3RvbWl6ZSBuZXN0ZWQgdGVtcGxhdGVzIHRocm91Z2ggdGhlIGBuZXN0ZWRUZW1wbGF0ZXNgIHByb3BlcnR5LlxuICAgKiBFLmcuIGdpdGxhYkNvbmZpZy5uZXN0ZWRUZW1wbGF0ZXNbJ3RlbXBsYXRlTmFtZSddPy5hZGRTdGFnZXMoJ3N0YWdlTmFtZScpXG4gICAqIEBwYXJhbSBjb25maWcgYSByZWNvcmQgdGhlIG5hbWVzIGFuZCBjb25maWd1cmFpdG9ucyBvZiB0aGUgdGVtcGxhdGVzLlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZU5lc3RlZFRlbXBsYXRlcyhjb25maWc6IFJlY29yZDxzdHJpbmcsIENpQ29uZmlndXJhdGlvbk9wdGlvbnM+KSB7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgb3B0aW9uc10gb2YgT2JqZWN0LmVudHJpZXMoY29uZmlnKSkge1xuICAgICAgaWYgKHRoaXMubmVzdGVkVGVtcGxhdGVzW25hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGAke3RoaXMubmFtZX06IEdpdExhYiBDSSBhbHJlYWR5IGNvbnRhaW5zIHRlbXBsYXRlIFwiJHtuYW1lfVwiLmBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gbmV3IE5lc3RlZENvbmZpZ3VyYXRpb24oXG4gICAgICAgIHRoaXMucHJvamVjdCxcbiAgICAgICAgdGhpcyxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgb3B0aW9uc1xuICAgICAgKTtcbiAgICAgIHRoaXMubmVzdGVkVGVtcGxhdGVzW3RlbXBsYXRlLm5hbWVdID0gdGVtcGxhdGU7XG4gICAgICB0aGlzLmFkZEluY2x1ZGVzKHsgbG9jYWw6IHRlbXBsYXRlLnBhdGggfSk7XG4gICAgICB0aGlzLmFkZFN0YWdlcyguLi50ZW1wbGF0ZS5zdGFnZXMpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -13,7 +13,7 @@ class NestedConfiguration extends configuration_1.CiConfiguration {
13
13
  this.parent = parent;
14
14
  }
15
15
  }
16
- _a = JSII_RTTI_SYMBOL_1;
17
- NestedConfiguration[_a] = { fqn: "projen.gitlab.NestedConfiguration", version: "0.71.83" };
18
16
  exports.NestedConfiguration = NestedConfiguration;
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkLWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2l0bGFiL25lc3RlZC1jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsbURBQWtEO0FBSWxEOztHQUVHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSwrQkFBZTtJQUV0RCxZQUNFLE9BQWdCLEVBQ2hCLE1BQTJCLEVBQzNCLElBQVksRUFDWixPQUFnQztRQUVoQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDOzs7O0FBVlUsa0RBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2lDb25maWd1cmF0aW9uT3B0aW9ucyB9IGZyb20gXCIuXCI7XG5pbXBvcnQgeyBDaUNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9jb25maWd1cmF0aW9uXCI7XG5pbXBvcnQgeyBHaXRsYWJDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4vZ2l0bGFiLWNvbmZpZ3VyYXRpb25cIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuXG4vKipcbiAqIEEgR2l0TGFiIENJIGZvciB0ZW1wbGF0ZXMgdGhhdCBhcmUgY3JlYXRlZCBhbmQgaW5jbHVkZWQgaW4gdGhlIGAuZ2l0bGFiLWNpLnltbGAgZmlsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5lc3RlZENvbmZpZ3VyYXRpb24gZXh0ZW5kcyBDaUNvbmZpZ3VyYXRpb24ge1xuICBwdWJsaWMgcmVhZG9ubHkgcGFyZW50OiBHaXRsYWJDb25maWd1cmF0aW9uO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm9qZWN0OiBQcm9qZWN0LFxuICAgIHBhcmVudDogR2l0bGFiQ29uZmlndXJhdGlvbixcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IENpQ29uZmlndXJhdGlvbk9wdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIocHJvamVjdCwgbmFtZSwgb3B0aW9ucyk7XG4gICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gIH1cbn1cbiJdfQ==
17
+ _a = JSII_RTTI_SYMBOL_1;
18
+ NestedConfiguration[_a] = { fqn: "projen.gitlab.NestedConfiguration", version: "0.71.85" };
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkLWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2l0bGFiL25lc3RlZC1jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsbURBQWtEO0FBSWxEOztHQUVHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSwrQkFBZTtJQUV0RCxZQUNFLE9BQWdCLEVBQ2hCLE1BQTJCLEVBQzNCLElBQVksRUFDWixPQUFnQztRQUVoQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDOztBQVZILGtEQVdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2lDb25maWd1cmF0aW9uT3B0aW9ucyB9IGZyb20gXCIuXCI7XG5pbXBvcnQgeyBDaUNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9jb25maWd1cmF0aW9uXCI7XG5pbXBvcnQgeyBHaXRsYWJDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4vZ2l0bGFiLWNvbmZpZ3VyYXRpb25cIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuXG4vKipcbiAqIEEgR2l0TGFiIENJIGZvciB0ZW1wbGF0ZXMgdGhhdCBhcmUgY3JlYXRlZCBhbmQgaW5jbHVkZWQgaW4gdGhlIGAuZ2l0bGFiLWNpLnltbGAgZmlsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5lc3RlZENvbmZpZ3VyYXRpb24gZXh0ZW5kcyBDaUNvbmZpZ3VyYXRpb24ge1xuICBwdWJsaWMgcmVhZG9ubHkgcGFyZW50OiBHaXRsYWJDb25maWd1cmF0aW9uO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm9qZWN0OiBQcm9qZWN0LFxuICAgIHBhcmVudDogR2l0bGFiQ29uZmlndXJhdGlvbixcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IENpQ29uZmlndXJhdGlvbk9wdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIocHJvamVjdCwgbmFtZSwgb3B0aW9ucyk7XG4gICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gIH1cbn1cbiJdfQ==
package/lib/gitpod.js CHANGED
@@ -44,7 +44,7 @@ var GitpodOpenMode;
44
44
  * Splits and adds the terminal to the bottom
45
45
  */
46
46
  GitpodOpenMode["SPLIT_BOTTOM"] = "split-bottom";
47
- })(GitpodOpenMode = exports.GitpodOpenMode || (exports.GitpodOpenMode = {}));
47
+ })(GitpodOpenMode || (exports.GitpodOpenMode = GitpodOpenMode = {}));
48
48
  /**
49
49
  * Configure where in the IDE the terminal should be opened.
50
50
  */
@@ -66,7 +66,7 @@ var GitpodOpenIn;
66
66
  * the main editor area
67
67
  */
68
68
  GitpodOpenIn["MAIN"] = "main";
69
- })(GitpodOpenIn = exports.GitpodOpenIn || (exports.GitpodOpenIn = {}));
69
+ })(GitpodOpenIn || (exports.GitpodOpenIn = GitpodOpenIn = {}));
70
70
  /**
71
71
  * What to do when a service on a port is detected.
72
72
  */
@@ -88,7 +88,7 @@ var GitpodOnOpen;
88
88
  * Do nothing.
89
89
  */
90
90
  GitpodOnOpen["IGNORE"] = "ignore";
91
- })(GitpodOnOpen = exports.GitpodOnOpen || (exports.GitpodOnOpen = {}));
91
+ })(GitpodOnOpen || (exports.GitpodOnOpen = GitpodOnOpen = {}));
92
92
  /**
93
93
  * Whether the port visibility should be private or public
94
94
  */
@@ -102,7 +102,7 @@ var GitpodPortVisibility;
102
102
  * Only allows users with workspace access to access the port
103
103
  */
104
104
  GitpodPortVisibility["PRIVATE"] = "private";
105
- })(GitpodPortVisibility = exports.GitpodPortVisibility || (exports.GitpodPortVisibility = {}));
105
+ })(GitpodPortVisibility || (exports.GitpodPortVisibility = GitpodPortVisibility = {}));
106
106
  /**
107
107
  * The Gitpod component which emits .gitpod.yml
108
108
  */
@@ -239,7 +239,7 @@ class Gitpod extends component_1.Component {
239
239
  }
240
240
  }
241
241
  }
242
- _a = JSII_RTTI_SYMBOL_1;
243
- Gitpod[_a] = { fqn: "projen.Gitpod", version: "0.71.83" };
244
242
  exports.Gitpod = Gitpod;
245
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0cG9kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2dpdHBvZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDJDQUF3QztBQVF4QyxpQ0FBa0M7QUFFbEM7O0dBRUc7QUFDSCxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUM7QUFFbEM7Ozs7O0dBS0c7QUFFSDs7R0FFRztBQUNILElBQVksY0F5Qlg7QUF6QkQsV0FBWSxjQUFjO0lBQ3hCOztPQUVHO0lBQ0gseUNBQXVCLENBQUE7SUFDdkI7O09BRUc7SUFDSCwyQ0FBeUIsQ0FBQTtJQUN6Qjs7T0FFRztJQUNILDZDQUEyQixDQUFBO0lBQzNCOztPQUVHO0lBQ0gsMkNBQXlCLENBQUE7SUFDekI7O09BRUc7SUFDSCx5Q0FBdUIsQ0FBQTtJQUN2Qjs7T0FFRztJQUNILCtDQUE2QixDQUFBO0FBQy9CLENBQUMsRUF6QlcsY0FBYyxHQUFkLHNCQUFjLEtBQWQsc0JBQWMsUUF5QnpCO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLFlBaUJYO0FBakJELFdBQVksWUFBWTtJQUN0Qjs7T0FFRztJQUNILGlDQUFpQixDQUFBO0lBQ2pCOztPQUVHO0lBQ0gsNkJBQWEsQ0FBQTtJQUNiOztPQUVHO0lBQ0gsK0JBQWUsQ0FBQTtJQUNmOztPQUVHO0lBQ0gsNkJBQWEsQ0FBQTtBQUNmLENBQUMsRUFqQlcsWUFBWSxHQUFaLG9CQUFZLEtBQVosb0JBQVksUUFpQnZCO0FBMkREOztHQUVHO0FBQ0gsSUFBWSxZQW9CWDtBQXBCRCxXQUFZLFlBQVk7SUFDdEI7O09BRUc7SUFDSCw2Q0FBNkIsQ0FBQTtJQUU3Qjs7T0FFRztJQUNILDZDQUE2QixDQUFBO0lBRTdCOztPQUVHO0lBQ0gsaUNBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCxpQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBcEJXLFlBQVksR0FBWixvQkFBWSxLQUFaLG9CQUFZLFFBb0J2QjtBQUVEOztHQUVHO0FBQ0gsSUFBWSxvQkFVWDtB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LHdCQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50XCI7XG5pbXBvcnQge1xuICBJRGV2RW52aXJvbm1lbnQsXG4gIERldkVudmlyb25tZW50T3B0aW9ucyxcbiAgRGV2RW52aXJvbm1lbnREb2NrZXJJbWFnZSxcbn0gZnJvbSBcIi4vZGV2LWVudlwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuL3Byb2plY3RcIjtcbmltcG9ydCB7IFRhc2sgfSBmcm9tIFwiLi90YXNrXCI7XG5pbXBvcnQgeyBZYW1sRmlsZSB9IGZyb20gXCIuL3lhbWxcIjtcblxuLyoqXG4gKiBSZWxhdGl2ZSBwYXRoIG9mIEdpdHBvZCBmaWxlIHRvIGdlbmVyYXRlXG4gKi9cbmNvbnN0IEdJVFBPRF9GSUxFID0gXCIuZ2l0cG9kLnltbFwiO1xuXG4vKipcbiAqIGh0dHBzOi8vd3d3LmdpdHBvZC5pby9kb2NzL2NvbmZpZ3VyYXRpb24vXG4gKiBodHRwczovL3d3dy5naXRwb2QuaW8vZG9jcy9jb25maWctc3RhcnQtdGFza3MvXG4gKiBodHRwczovL3d3dy5naXRwb2QuaW8vZG9jcy9wcmVidWlsZHMvI2NvbmZpZ3VyZS10aGUtZ2l0aHViLWFwcFxuICogaHR0cHM6Ly93d3cuZ2l0cG9kLmlvL2RvY3MvdnNjb2RlLWV4dGVuc2lvbnMvXG4gKi9cblxuLyoqXG4gKiBDb25maWd1cmUgaG93IHRoZSB0ZXJtaW5hbCBzaG91bGQgYmUgb3BlbmVkIHJlbGF0aXZlIHRvIHRoZSBwcmV2aW91cyB0YXNrLlxuICovXG5leHBvcnQgZW51bSBHaXRwb2RPcGVuTW9kZSB7XG4gIC8qKlxuICAgKiBPcGVucyBpbiB0aGUgc2FtZSB0YWIgZ3JvdXAgcmlnaHQgYWZ0ZXIgdGhlIHByZXZpb3VzIHRhYlxuICAgKi9cbiAgVEFCX0FGVEVSID0gXCJ0YWItYWZ0ZXJcIixcbiAgLyoqXG4gICAqIE9wZW5zIGluIHRoZSBzYW1lIHRhYiBncm91cCBsZWZ0IGJlZm9yZSB0aGUgcHJldmlvdXMgdGFiXG4gICAqL1xuICBUQUJfQkVGT1JFID0gXCJ0YWItYmVmb3JlXCIsXG4gIC8qKlxuICAgKiBTcGxpdHMgYW5kIGFkZHMgdGhlIHRlcm1pbmFsIHRvIHRoZSByaWdodFxuICAgKi9cbiAgU1BMSVRfUklHSFQgPSBcInNwbGl0LXJpZ2h0XCIsXG4gIC8qKlxuICAgKiBTcGxpdHMgYW5kIGFkZHMgdGhlIHRlcm1pbmFsIHRvIHRoZSBsZWZ0XG4gICAqL1xuICBTUExJVF9MRUZUID0gXCJzcGxpdC1sZWZ0XCIsXG4gIC8qKlxuICAgKiBTcGxpdHMgYW5kIGFkZHMgdGhlIHRlcm1pbmFsIHRvIHRoZSB0b3BcbiAgICovXG4gIFNQTElUX1RPUCA9IFwic3BsaXQtdG9wXCIsXG4gIC8qKlxuICAgKiBTcGxpdHMgYW5kIGFkZHMgdGhlIHRlcm1pbmFsIHRvIHRoZSBib3R0b21cbiAgICovXG4gIFNQTElUX0JPVFRPTSA9IFwic3BsaXQtYm90dG9tXCIsXG59XG5cbi8qKlxuICogQ29uZmlndXJlIHdoZXJlIGluIHRoZSBJREUgdGhlIHRlcm1pbmFsIHNob3VsZCBiZSBvcGVuZWQuXG4gKi9cbmV4cG9ydCBlbnVtIEdpdHBvZE9wZW5JbiB7XG4gIC8qKlxuICAgKiB0aGUgYm90dG9tIHBhbmVsIChkZWZhdWx0KVxuICAgKi9cbiAgQk9UVE9NID0gXCJib3R0b21cIixcbiAgLyoqXG4gICAqIHRoZSBsZWZ0IHBhbmVsXG4gICAqL1xuICBMRUZUID0gXCJsZWZ0XCIsXG4gIC8qKlxuICAgKiB0aGUgcmlnaHQgcGFuZWxcbiAgICovXG4gIFJJR0hUID0gXCJyaWdodFwiLFxuICAvKipcbiAgICogdGhlIG1haW4gZWRpdG9yIGFyZWFcbiAgICovXG4gIE1BSU4gPSBcIm1haW5cIixcbn1cblxuLyoqXG4gKiBDb25maWd1cmUgb3B0aW9ucyBmb3IgYSB0YXNrIHRvIGJlIHJ1biB3aGVuIG9wZW5pbmcgYSBHaXRwb2RcbiAqIHdvcmtzcGFjZSAoZS5nLiBydW5uaW5nIHRlc3RzLCBvciBzdGFydGluZyBhIGRldiBzZXJ2ZXIpLlxuICpcbiAqIFN0YXJ0IE1vZGUgICAgICAgICB8IEV4ZWN1dGlvblxuICogRnJlc2ggV29ya3NwYWNlICAgIHwgYmVmb3JlICYmIGluaXQgJiYgY29tbWFuZFxuICogUmVzdGFydCBXb3Jrc3BhY2UgIHwgYmVmb3JlICYmIGNvbW1hbmRcbiAqIFNuYXBzaG90ICAgICAgICAgICB8IGJlZm9yZSAmJiBjb21tYW5kXG4gKiBQcmVidWlsZCAgICAgICAgICAgfCBiZWZvcmUgJiYgaW5pdCAmJiBwcmVidWlsZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdpdHBvZFRhc2sge1xuICAvKipcbiAgICogUmVxdWlyZWQuIFRoZSBzaGVsbCBjb21tYW5kIHRvIHJ1blxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIG5hbWUgZm9yIHRoaXMgdGFzay5cbiAgICogQGRlZmF1bHQgLSB0YXNrIG5hbWVzIGFyZSBvbWl0dGVkIHdoZW4gYmxhbmtcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gY29uZmlndXJlIGhvdyB0aGUgdGVybWluYWwgc2hvdWxkIGJlIG9wZW5lZCByZWxhdGl2ZSB0byB0aGUgcHJldmlvdXMgdGFzay5cbiAgICogQGRlZmF1bHQgR2l0cG9kT3Blbk1vZGUuVEFCX0FGVEVSXG4gICAqL1xuICByZWFkb25seSBvcGVuTW9kZT86IEdpdHBvZE9wZW5Nb2RlO1xuXG4gIC8qKlxuICAgKiBZb3UgY2FuIGNvbmZpZ3VyZSB3aGVyZSBpbiB0aGUgSURFIHRoZSB0ZXJtaW5hbCBzaG91bGQgYmUgb3BlbmVkXG4gICAqIEBkZWZhdWx0IEdpdHBvZE9wZW5Jbi5CT1RUT01cbiAgICovXG4gIHJlYWRvbmx5IG9wZW5Jbj86IEdpdHBvZE9wZW5JbjtcblxuICAvKipcbiAgICogSW4gY2FzZSB5b3UgbmVlZCB0byBydW4gc29tZXRoaW5nIGV2ZW4gYmVmb3JlIGluaXQsIHRoYXQgaXMgYSByZXF1aXJlbWVudCBmb3IgYm90aCBpbml0IGFuZCBjb21tYW5kLFxuICAgKiB5b3UgY2FuIHVzZSB0aGUgYmVmb3JlIHByb3BlcnR5LlxuICAgKiBAZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgYmVmb3JlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5pdCBwcm9wZXJ0eSBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHNoZWxsIGNvbW1hbmRzIHRoYXQgc2hvdWxkIG9ubHkgYmUgZXhlY3V0ZWQgYWZ0ZXIgYSB3b3Jrc3BhY2VcbiAgICogd2FzIGZyZXNobHkgY2xvbmVkIGFuZCBuZWVkcyB0byBiZSBpbml0aWFsaXplZCBzb21laG93LiBTdWNoIHRhc2tzIGFyZSB1c3VhbGx5IGJ1aWxkcyBvciBkb3dubG9hZGluZ1xuICAgKiBkZXBlbmRlbmNpZXMuIEFueXRoaW5nIHlvdSBvbmx5IHdhbnQgdG8gZG8gb25jZSBidXQgbm90IHdoZW4geW91IHJlc3RhcnQgYSB3b3Jrc3BhY2Ugb3Igc3RhcnQgYSBzbmFwc2hvdC5cbiAgICogQGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGluaXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25hbCBwcmVidWlsZCBjb21tYW5kIHdpbGwgYmUgZXhlY3V0ZWQgZHVyaW5nIHByZWJ1aWxkcy4gSXQgaXMgbWVhbnQgdG8gcnVuIGFkZGl0aW9uYWwgbG9uZyBydW5uaW5nXG4gICAqIHByb2Nlc3NlcyB0aGF0IGNvdWxkIGJlIHVzZWZ1bCwgZS5nLiBydW5uaW5nIHRlc3Qgc3VpdGVzLlxuICAgKiBAZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgcHJlYnVpbGQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogV2hhdCB0byBkbyB3aGVuIGEgc2VydmljZSBvbiBhIHBvcnQgaXMgZGV0ZWN0ZWQuXG4gKi9cbmV4cG9ydCBlbnVtIEdpdHBvZE9uT3BlbiB7XG4gIC8qKlxuICAgKiBPcGVuIGEgbmV3IGJyb3dzZXIgdGFiXG4gICAqL1xuICBPUEVOX0JST1dTRVIgPSBcIm9wZW4tYnJvd3NlclwiLFxuXG4gIC8qKlxuICAgKiBPcGVuIGEgcHJldmlldyBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgSURFXG4gICAqL1xuICBPUEVOX1BSRVZJRVcgPSBcIm9wZW4tcHJldmlld1wiLFxuXG4gIC8qKlxuICAgKiBTaG93IGEgbm90aWZpY2F0aW9uIGFza2luZyB0aGUgdXNlciB3aGF0IHRvIGRvIChkZWZhdWx0KVxuICAgKi9cbiAgTk9USUZZID0gXCJub3RpZnlcIixcblxuICAvKipcbiAgICogRG8gbm90aGluZy5cbiAgICovXG4gIElHTk9SRSA9IFwiaWdub3JlXCIsXG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgcG9ydCB2aXNpYmlsaXR5IHNob3VsZCBiZSBwcml2YXRlIG9yIHB1YmxpY1xuICovXG5leHBvcnQgZW51bSBHaXRwb2RQb3J0VmlzaWJpbGl0eSB7XG4gIC8qKlxuICAgKiBBbGxvd3MgZXZlcnlvbmUgd2l0aCB0aGUgcG9ydCBVUkwgdG8gYWNjZXNzIHRoZSBwb3J0IChkZWZhdWx0KVxuICAgKi9cbiAgUFVCTElDID0gXCJwdWJsaWNcIixcblxuICAvKipcbiAgICogT25seSBhbGxvd3MgdXNlcnMgd2l0aCB3b3Jrc3BhY2UgYWNjZXNzIHRvIGFjY2VzcyB0aGUgcG9ydFxuICAgKi9cbiAgUFJJVkFURSA9IFwicHJpdmF0ZVwiLFxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGFuIGV4cG9zZWQgcG9ydCBvbiBHaXRwb2RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHaXRwb2RQb3J0IHtcbiAgLyoqXG4gICAqIEEgcG9ydCB0aGF0IHNob3VsZCBiZSBleHBvc2VkIChmb3J3YXJkZWQpIGZyb20gdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQGV4YW1wbGUgXCI4MDgwXCJcbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoYXQgdG8gZG8gd2hlbiBhIHNlcnZpY2Ugb24gYSBwb3J0IGlzIGRldGVjdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBHaXRwb2RPbk9wZW4uTk9USUZZXG4gICAqL1xuICByZWFkb25seSBvbk9wZW4/OiBHaXRwb2RPbk9wZW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHBvcnQgdmlzaWJpbGl0eSBzaG91bGQgYmUgcHJpdmF0ZSBvciBwdWJsaWMuXG4gICAqXG4gICAqIEBkZWZhdWx0IEdpdHBvZFBvcnRWaXNpYmlsaXR5LlBVQkxJQ1xuICAgKi9cbiAgcmVhZG9ubHkgdmlzaWJpbGl0eT86IEdpdHBvZFBvcnRWaXNpYmlsaXR5O1xufVxuXG4vKipcbiAqIENvbmZpZ3VyZSB0aGUgR2l0cG9kIEFwcCBmb3IgcHJlYnVpbGRzLlxuICogQ3VycmVudGx5IG9ubHkgR2l0SHViIGlzIHN1cHBvcnRlZC5cbiAqIEBzZWUgaHR0cHM6Ly93d3cuZ2l0cG9kLmlvL2RvY3MvcHJlYnVpbGRzL1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEdpdHBvZFByZWJ1aWxkcyB7XG4gIC8qKlxuICAgKiBFbmFibGUgZm9yIHRoZSBtYXN0ZXIvZGVmYXVsdCBicmFuY2hcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbWFzdGVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlIGZvciBhbGwgYnJhbmNoZXMgaW4gdGhpcyByZXBvXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBicmFuY2hlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBmb3IgcHVsbCByZXF1ZXN0cyBjb21pbmcgZnJvbSB0aGlzIHJlcG9cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVsbFJlcXVlc3RzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlIGZvciBwdWxsIHJlcXVlc3RzIGNvbWluZyBmcm9tIGZvcmtzXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwdWxsUmVxdWVzdHNGcm9tRm9ya3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBZGQgYSBjaGVjayB0byBwdWxsIHJlcXVlc3RzXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFkZENoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIGEgXCJSZXZpZXcgaW4gR2l0cG9kXCIgYnV0dG9uIGFzIGEgY29tbWVudCB0byBwdWxsIHJlcXVlc3RzXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhZGRDb21tZW50PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIGEgXCJSZXZpZXcgaW4gR2l0cG9kXCIgYnV0dG9uIHRvIHRoZSBwdWxsIHJlcXVlc3QncyBkZXNjcmlwdGlvblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYWRkQmFkZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBZGQgYSBsYWJlbCBvbmNlIHRoZSBwcmVidWlsZCBpcyByZWFkeSB0byBwdWxsIHJlcXVlc3RzXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhZGRMYWJlbD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29uc3RydWN0b3Igb3B0aW9ucyBmb3IgdGhlIEdpdHBvZCBjb21wb25lbnQuXG4gKlxuICogQnkgZGVmYXVsdCwgR2l0cG9kIHVzZXMgdGhlICdnaXRwb2Qvd29ya3NwYWNlLWZ1bGwnIGRvY2tlciBpbWFnZS5cbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2dpdHBvZC1pby93b3Jrc3BhY2UtaW1hZ2VzL2Jsb2IvbWFzdGVyL2Z1bGwvRG9ja2VyZmlsZVxuICpcbiAqIEJ5IGRlZmF1bHQsIGFsbCB0YXNrcyB3aWxsIGJlIHJ1biBpbiBwYXJhbGxlbC4gVG8gcnVuIHRoZSB0YXNrcyBpbiBzZXF1ZW5jZSxcbiAqIGNyZWF0ZSBhIG5ldyB0YXNrIGFuZCBzcGVjaWZ5IHRoZSBvdGhlciB0YXNrcyBhcyBzdWJ0YXNrcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHaXRwb2RPcHRpb25zIGV4dGVuZHMgRGV2RW52aXJvbm1lbnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIEdpdHBvZCdzIEdpdGh1YiBBcHAgaW50ZWdyYXRpb24gZm9yIHByZWJ1aWxkc1xuICAgKiBJZiB0aGlzIGlzIG5vdCBzZXQgYW5kIEdpdHBvZCdzIEdpdGh1YiBBcHAgaXMgaW5zdGFsbGVkLCB0aGVuIEdpdHBvZCB3aWxsIGFwcGx5XG4gICAqIHRoZXNlIGRlZmF1bHRzOiBodHRwczovL3d3dy5naXRwb2QuaW8vZG9jcy9wcmVidWlsZHMvI2NvbmZpZ3VyZS10aGUtZ2l0aHViLWFwcFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHByZWJ1aWxkcz86IEdpdHBvZFByZWJ1aWxkcztcbn1cblxuLyoqXG4gKiBUaGUgR2l0cG9kIGNvbXBvbmVudCB3aGljaCBlbWl0cyAuZ2l0cG9kLnltbFxuICovXG5leHBvcnQgY2xhc3MgR2l0cG9kIGV4dGVuZHMgQ29tcG9uZW50IGltcGxlbWVudHMgSURldkVudmlyb25tZW50IHtcbiAgcHJpdmF0ZSBkb2NrZXJJbWFnZTogRGV2RW52aXJvbm1lbnREb2NrZXJJbWFnZSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBwcmVidWlsZHM6IEdpdHBvZFByZWJ1aWxkcyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSB0YXNrcyA9IG5ldyBBcnJheTxHaXRwb2RUYXNrPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBvcnRzID0gbmV3IEFycmF5PEdpdHBvZFBvcnQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdnNjb2RlRXh0ZW5zaW9ucyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIERpcmVjdCBhY2Nlc3MgdG8gdGhlIGdpdHBvZCBjb25maWd1cmF0aW9uIChlc2NhcGUgaGF0Y2gpXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29uZmlnOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogR2l0cG9kT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICB0aGlzLmRvY2tlckltYWdlID0gb3B0aW9ucz8uZG9ja2VySW1hZ2U7XG5cbiAgICBpZiAob3B0aW9ucz8udGFza3MpIHtcbiAgICAgIGZvciAoY29uc3QgdGFzayBvZiBvcHRpb25zLnRhc2tzKSB7XG4gICAgICAgIHRoaXMuYWRkVGFza3ModGFzayk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnM/LnByZWJ1aWxkcykge1xuICAgICAgdGhpcy5hZGRQcmVidWlsZHMob3B0aW9ucy5wcmVidWlsZHMpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zPy5wb3J0cykge1xuICAgICAgdGhpcy5hZGRQb3J0cyguLi5vcHRpb25zLnBvcnRzKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucz8udnNjb2RlRXh0ZW5zaW9ucykge1xuICAgICAgdGhpcy5hZGRWc2NvZGVFeHRlbnNpb25zKC4uLm9wdGlvbnMudnNjb2RlRXh0ZW5zaW9ucyk7XG4gICAgfVxuXG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICBpbWFnZTogKCkgPT4gdGhpcy5yZW5kZXJEb2NrZXJJbWFnZSgpLFxuICAgICAgdGFza3M6IHRoaXMudGFza3MsXG4gICAgICBnaXRodWI6ICgpID0+IHRoaXMucmVuZGVyUHJlYnVpbGRzKCksXG4gICAgICBwb3J0czogdGhpcy5wb3J0cyxcbiAgICAgIHZzY29kZToge1xuICAgICAgICBleHRlbnNpb25zOiB0aGlzLnZzY29kZUV4dGVuc2lvbnMsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBuZXcgWWFtbEZpbGUodGhpcy5wcm9qZWN0LCBHSVRQT0RfRklMRSwge1xuICAgICAgb2JqOiB0aGlzLmNvbmZpZyxcbiAgICAgIG9taXRFbXB0eTogdHJ1ZSxcbiAgICAgIC8vIEdpdFBvZCBuZWVkcyB0byByZWFkIHRoZSBmaWxlIGZyb20gdGhlIHJlcG9zaXRvcnkgaW4gb3JkZXIgdG8gd29yay5cbiAgICAgIGNvbW1pdHRlZDogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBjdXN0b20gRG9ja2VyIGltYWdlIG9yIERvY2tlcmZpbGUgZm9yIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBwYXJhbSBpbWFnZSBUaGUgRG9ja2VyIGltYWdlXG4gICAqL1xuICBwdWJsaWMgYWRkRG9ja2VySW1hZ2UoaW1hZ2U6IERldkVudmlyb25tZW50RG9ja2VySW1hZ2UpIHtcbiAgICBpZiAodGhpcy5kb2NrZXJJbWFnZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZG9ja2VySW1hZ2UgY2Fubm90IGJlIHJlZGVmaW5lZC5cIik7XG4gICAgfVxuICAgIHRoaXMuZG9ja2VySW1hZ2UgPSBpbWFnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgdGFza3MgdG8gcnVuIHdoZW4gZ2l0cG9kIHN0YXJ0cy5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgYWxsIHRhc2tzIHdpbGwgYmUgcnVuIGluIHBhcmFsbGVsLiBUbyBydW4gdGFza3MgaW4gc2VxdWVuY2UsXG4gICAqIGNyZWF0ZSBhIG5ldyBgVGFza2AgYW5kIHNwZWNpZnkgdGhlIG90aGVyIHRhc2tzIGFzIHN1YnRhc2tzLlxuICAgKlxuICAgKiBAcGFyYW0gdGFza3MgVGhlIG5ldyB0YXNrc1xuICAgKi9cbiAgcHVibGljIGFkZFRhc2tzKC4uLnRhc2tzOiBUYXNrW10pIHtcbiAgICB0aGlzLnRhc2tzLnB1c2goXG4gICAgICAuLi50YXNrcy5tYXAoKHRhc2spID0+ICh7XG4gICAgICAgIG5hbWU6IHRhc2submFtZSxcbiAgICAgICAgY29tbWFuZDogYG5weCBwcm9qZW4gJHt0YXNrLm5hbWV9YCxcbiAgICAgIH0pKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgcHJlYnVpbGRzIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBHaXRwb2QgQXBwXG4gICAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHB1YmxpYyBhZGRQcmVidWlsZHMoY29uZmlnOiBHaXRwb2RQcmVidWlsZHMpIHtcbiAgICB0aGlzLnByZWJ1aWxkcyA9IGNvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSB0YXNrIHdpdGggbW9yZSBncmFudWxhciBvcHRpb25zLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBhbGwgdGFza3Mgd2lsbCBiZSBydW4gaW4gcGFyYWxsZWwuIFRvIHJ1biB0YXNrcyBpbiBzZXF1ZW5jZSxcbiAgICogY3JlYXRlIGEgbmV3IGBUYXNrYCBhbmQgc2V0IHRoZSBvdGhlciB0YXNrcyBhcyBzdWJ0YXNrcy5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIHRhc2sgcGFyYW1ldGVyc1xuICAgKi9cbiAgcHVibGljIGFkZEN1c3RvbVRhc2sob3B0aW9uczogR2l0cG9kVGFzaykge1xuICAgIHRoaXMudGFza3MucHVzaCh7XG4gICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICBjb21tYW5kOiBvcHRpb25zLmNvbW1hbmQsXG4gICAgICBvcGVuTW9kZTogb3B0aW9ucy5vcGVuTW9kZSxcbiAgICAgIG9wZW5Jbjogb3B0aW9ucy5vcGVuSW4sXG4gICAgICBiZWZvcmU6IG9wdGlvbnMuYmVmb3JlLFxuICAgICAgaW5pdDogb3B0aW9ucy5pbml0LFxuICAgICAgcHJlYnVpbGQ6IG9wdGlvbnMucHJlYnVpbGQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIHBvcnRzIHRoYXQgc2hvdWxkIGJlIGV4cG9zZWQgKGZvcndhcmRlZCkgZnJvbSB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBAcGFyYW0gcG9ydHMgVGhlIG5ldyBwb3J0c1xuICAgKi9cbiAgcHVibGljIGFkZFBvcnRzKC4uLnBvcnRzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMucG9ydHMucHVzaCguLi5wb3J0cy5tYXAoKHBvcnQpID0+ICh7IHBvcnQ6IHBvcnQgfSkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBsaXN0IG9mIFZTQ29kZSBleHRlbnNpb25zIHRoYXQgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgaW5zdGFsbGVkXG4gICAqIGluIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIFRoZXNlIG11c3QgYmUgaW4gdGhlIGZvcm1hdCBkZWZpbmVkIGluIHRoZSBPcGVuIFZTWCByZWdpc3RyeS5cbiAgICogQGV4YW1wbGUgJ3NjYWxhLWxhbmcuc2NhbGFAMC4zLjk6TzVYbWp3WTVHeiswb0RaQW1xbmVKdz09J1xuICAgKiBAc2VlIGh0dHBzOi8vd3d3LmdpdHBvZC5pby9kb2NzL3ZzY29kZS1leHRlbnNpb25zL1xuICAgKlxuICAgKiBAcGFyYW0gZXh0ZW5zaW9ucyBUaGUgZXh0ZW5zaW9uIElEc1xuICAgKi9cbiAgcHVibGljIGFkZFZzY29kZUV4dGVuc2lvbnMoLi4uZXh0ZW5zaW9uczogR2l0cG9kQ29kZUV4dGVuc2lvbklkW10pIHtcbiAgICB0aGlzLnZzY29kZUV4dGVuc2lvbnMucHVzaCguLi5leHRlbnNpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyRG9ja2VySW1hZ2UoKSB7XG4gICAgaWYgKHRoaXMuZG9ja2VySW1hZ2U/LmltYWdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5kb2NrZXJJbWFnZS5pbWFnZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZG9ja2VySW1hZ2U/LmRvY2tlckZpbGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGU6IHRoaXMuZG9ja2VySW1hZ2UuZG9ja2VyRmlsZSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJQcmVidWlsZHMoKSB7XG4gICAgaWYgKHRoaXMucHJlYnVpbGRzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcmVidWlsZHM6IHRoaXMucHJlYnVpbGRzLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBWUyBDb2RlIGV4dGVuc2lvbnMgYXMgZGVmaW5lZCBpbiB0aGUgT3BlbiBWU1ggcmVnaXN0cnlcbiAqIEV4YW1wbGU6IGBzY2FsYS1sYW5nLnNjYWxhQDAuMy45Ok81WG1qd1k1R3orMG9EWkFtcW5lSnc9PWBcbiAqL1xudHlwZSBHaXRwb2RDb2RlRXh0ZW5zaW9uSWQgPSBzdHJpbmc7XG4iXX0=
243
+ _a = JSII_RTTI_SYMBOL_1;
244
+ Gitpod[_a] = { fqn: "projen.Gitpod", version: "0.71.85" };
245
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0cG9kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2dpdHBvZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDJDQUF3QztBQVF4QyxpQ0FBa0M7QUFFbEM7O0dBRUc7QUFDSCxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUM7QUFFbEM7Ozs7O0dBS0c7QUFFSDs7R0FFRztBQUNILElBQVksY0F5Qlg7QUF6QkQsV0FBWSxjQUFjO0lBQ3hCOztPQUVHO0lBQ0gseUNBQXVCLENBQUE7SUFDdkI7O09BRUc7SUFDSCwyQ0FBeUIsQ0FBQTtJQUN6Qjs7T0FFRztJQUNILDZDQUEyQixDQUFBO0lBQzNCOztPQUVHO0lBQ0gsMkNBQXlCLENBQUE7SUFDekI7O09BRUc7SUFDSCx5Q0FBdUIsQ0FBQTtJQUN2Qjs7T0FFRztJQUNILCtDQUE2QixDQUFBO0FBQy9CLENBQUMsRUF6QlcsY0FBYyw4QkFBZCxjQUFjLFFBeUJ6QjtBQUVEOztHQUVHO0FBQ0gsSUFBWSxZQWlCWDtBQWpCRCxXQUFZLFlBQVk7SUFDdEI7O09BRUc7SUFDSCxpQ0FBaUIsQ0FBQTtJQUNqQjs7T0FFRztJQUNILDZCQUFhLENBQUE7SUFDYjs7T0FFRztJQUNILCtCQUFlLENBQUE7SUFDZjs7T0FFRztJQUNILDZCQUFhLENBQUE7QUFDZixDQUFDLEVBakJXLFlBQVksNEJBQVosWUFBWSxRQWlCdkI7QUEyREQ7O0dBRUc7QUFDSCxJQUFZLFlBb0JYO0FBcEJELFdBQVksWUFBWTtJQUN0Qjs7T0FFRztJQUNILDZDQUE2QixDQUFBO0lBRTdCOztPQUVHO0lBQ0gsNkNBQTZCLENBQUE7SUFFN0I7O09BRUc7SUFDSCxpQ0FBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILGlDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFwQlcsWUFBWSw0QkFBWixZQUFZLFFBb0J2QjtBQUVEOztHQUVHO0FBQ0gsSUFBWSxvQkFVWDtBQVZELFdBQVksb0JBQW9CO0lBQzlCOztPQUVHO0lBQ0gs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fSBmcm9tIFwiLi9jb21wb25lbnRcIjtcbmltcG9ydCB7XG4gIElEZXZFbnZpcm9ubWVudCxcbiAgRGV2RW52aXJvbm1lbnRPcHRpb25zLFxuICBEZXZFbnZpcm9ubWVudERvY2tlckltYWdlLFxufSBmcm9tIFwiLi9kZXYtZW52XCI7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcIi4vcHJvamVjdFwiO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gXCIuL3Rhc2tcIjtcbmltcG9ydCB7IFlhbWxGaWxlIH0gZnJvbSBcIi4veWFtbFwiO1xuXG4vKipcbiAqIFJlbGF0aXZlIHBhdGggb2YgR2l0cG9kIGZpbGUgdG8gZ2VuZXJhdGVcbiAqL1xuY29uc3QgR0lUUE9EX0ZJTEUgPSBcIi5naXRwb2QueW1sXCI7XG5cbi8qKlxuICogaHR0cHM6Ly93d3cuZ2l0cG9kLmlvL2RvY3MvY29uZmlndXJhdGlvbi9cbiAqIGh0dHBzOi8vd3d3LmdpdHBvZC5pby9kb2NzL2NvbmZpZy1zdGFydC10YXNrcy9cbiAqIGh0dHBzOi8vd3d3LmdpdHBvZC5pby9kb2NzL3ByZWJ1aWxkcy8jY29uZmlndXJlLXRoZS1naXRodWItYXBwXG4gKiBodHRwczovL3d3dy5naXRwb2QuaW8vZG9jcy92c2NvZGUtZXh0ZW5zaW9ucy9cbiAqL1xuXG4vKipcbiAqIENvbmZpZ3VyZSBob3cgdGhlIHRlcm1pbmFsIHNob3VsZCBiZSBvcGVuZWQgcmVsYXRpdmUgdG8gdGhlIHByZXZpb3VzIHRhc2suXG4gKi9cbmV4cG9ydCBlbnVtIEdpdHBvZE9wZW5Nb2RlIHtcbiAgLyoqXG4gICAqIE9wZW5zIGluIHRoZSBzYW1lIHRhYiBncm91cCByaWdodCBhZnRlciB0aGUgcHJldmlvdXMgdGFiXG4gICAqL1xuICBUQUJfQUZURVIgPSBcInRhYi1hZnRlclwiLFxuICAvKipcbiAgICogT3BlbnMgaW4gdGhlIHNhbWUgdGFiIGdyb3VwIGxlZnQgYmVmb3JlIHRoZSBwcmV2aW91cyB0YWJcbiAgICovXG4gIFRBQl9CRUZPUkUgPSBcInRhYi1iZWZvcmVcIixcbiAgLyoqXG4gICAqIFNwbGl0cyBhbmQgYWRkcyB0aGUgdGVybWluYWwgdG8gdGhlIHJpZ2h0XG4gICAqL1xuICBTUExJVF9SSUdIVCA9IFwic3BsaXQtcmlnaHRcIixcbiAgLyoqXG4gICAqIFNwbGl0cyBhbmQgYWRkcyB0aGUgdGVybWluYWwgdG8gdGhlIGxlZnRcbiAgICovXG4gIFNQTElUX0xFRlQgPSBcInNwbGl0LWxlZnRcIixcbiAgLyoqXG4gICAqIFNwbGl0cyBhbmQgYWRkcyB0aGUgdGVybWluYWwgdG8gdGhlIHRvcFxuICAgKi9cbiAgU1BMSVRfVE9QID0gXCJzcGxpdC10b3BcIixcbiAgLyoqXG4gICAqIFNwbGl0cyBhbmQgYWRkcyB0aGUgdGVybWluYWwgdG8gdGhlIGJvdHRvbVxuICAgKi9cbiAgU1BMSVRfQk9UVE9NID0gXCJzcGxpdC1ib3R0b21cIixcbn1cblxuLyoqXG4gKiBDb25maWd1cmUgd2hlcmUgaW4gdGhlIElERSB0aGUgdGVybWluYWwgc2hvdWxkIGJlIG9wZW5lZC5cbiAqL1xuZXhwb3J0IGVudW0gR2l0cG9kT3BlbkluIHtcbiAgLyoqXG4gICAqIHRoZSBib3R0b20gcGFuZWwgKGRlZmF1bHQpXG4gICAqL1xuICBCT1RUT00gPSBcImJvdHRvbVwiLFxuICAvKipcbiAgICogdGhlIGxlZnQgcGFuZWxcbiAgICovXG4gIExFRlQgPSBcImxlZnRcIixcbiAgLyoqXG4gICAqIHRoZSByaWdodCBwYW5lbFxuICAgKi9cbiAgUklHSFQgPSBcInJpZ2h0XCIsXG4gIC8qKlxuICAgKiB0aGUgbWFpbiBlZGl0b3IgYXJlYVxuICAgKi9cbiAgTUFJTiA9IFwibWFpblwiLFxufVxuXG4vKipcbiAqIENvbmZpZ3VyZSBvcHRpb25zIGZvciBhIHRhc2sgdG8gYmUgcnVuIHdoZW4gb3BlbmluZyBhIEdpdHBvZFxuICogd29ya3NwYWNlIChlLmcuIHJ1bm5pbmcgdGVzdHMsIG9yIHN0YXJ0aW5nIGEgZGV2IHNlcnZlcikuXG4gKlxuICogU3RhcnQgTW9kZSAgICAgICAgIHwgRXhlY3V0aW9uXG4gKiBGcmVzaCBXb3Jrc3BhY2UgICAgfCBiZWZvcmUgJiYgaW5pdCAmJiBjb21tYW5kXG4gKiBSZXN0YXJ0IFdvcmtzcGFjZSAgfCBiZWZvcmUgJiYgY29tbWFuZFxuICogU25hcHNob3QgICAgICAgICAgIHwgYmVmb3JlICYmIGNvbW1hbmRcbiAqIFByZWJ1aWxkICAgICAgICAgICB8IGJlZm9yZSAmJiBpbml0ICYmIHByZWJ1aWxkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2l0cG9kVGFzayB7XG4gIC8qKlxuICAgKiBSZXF1aXJlZC4gVGhlIHNoZWxsIGNvbW1hbmQgdG8gcnVuXG4gICAqL1xuICByZWFkb25seSBjb21tYW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgbmFtZSBmb3IgdGhpcyB0YXNrLlxuICAgKiBAZGVmYXVsdCAtIHRhc2sgbmFtZXMgYXJlIG9taXR0ZWQgd2hlbiBibGFua1xuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogWW91IGNhbiBjb25maWd1cmUgaG93IHRoZSB0ZXJtaW5hbCBzaG91bGQgYmUgb3BlbmVkIHJlbGF0aXZlIHRvIHRoZSBwcmV2aW91cyB0YXNrLlxuICAgKiBAZGVmYXVsdCBHaXRwb2RPcGVuTW9kZS5UQUJfQUZURVJcbiAgICovXG4gIHJlYWRvbmx5IG9wZW5Nb2RlPzogR2l0cG9kT3Blbk1vZGU7XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gY29uZmlndXJlIHdoZXJlIGluIHRoZSBJREUgdGhlIHRlcm1pbmFsIHNob3VsZCBiZSBvcGVuZWRcbiAgICogQGRlZmF1bHQgR2l0cG9kT3BlbkluLkJPVFRPTVxuICAgKi9cbiAgcmVhZG9ubHkgb3BlbkluPzogR2l0cG9kT3BlbkluO1xuXG4gIC8qKlxuICAgKiBJbiBjYXNlIHlvdSBuZWVkIHRvIHJ1biBzb21ldGhpbmcgZXZlbiBiZWZvcmUgaW5pdCwgdGhhdCBpcyBhIHJlcXVpcmVtZW50IGZvciBib3RoIGluaXQgYW5kIGNvbW1hbmQsXG4gICAqIHlvdSBjYW4gdXNlIHRoZSBiZWZvcmUgcHJvcGVydHkuXG4gICAqIEBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBiZWZvcmU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbml0IHByb3BlcnR5IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgc2hlbGwgY29tbWFuZHMgdGhhdCBzaG91bGQgb25seSBiZSBleGVjdXRlZCBhZnRlciBhIHdvcmtzcGFjZVxuICAgKiB3YXMgZnJlc2hseSBjbG9uZWQgYW5kIG5lZWRzIHRvIGJlIGluaXRpYWxpemVkIHNvbWVob3cuIFN1Y2ggdGFza3MgYXJlIHVzdWFsbHkgYnVpbGRzIG9yIGRvd25sb2FkaW5nXG4gICAqIGRlcGVuZGVuY2llcy4gQW55dGhpbmcgeW91IG9ubHkgd2FudCB0byBkbyBvbmNlIGJ1dCBub3Qgd2hlbiB5b3UgcmVzdGFydCBhIHdvcmtzcGFjZSBvciBzdGFydCBhIHNuYXBzaG90LlxuICAgKiBAZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgaW5pdD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG9wdGlvbmFsIHByZWJ1aWxkIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBkdXJpbmcgcHJlYnVpbGRzLiBJdCBpcyBtZWFudCB0byBydW4gYWRkaXRpb25hbCBsb25nIHJ1bm5pbmdcbiAgICogcHJvY2Vzc2VzIHRoYXQgY291bGQgYmUgdXNlZnVsLCBlLmcuIHJ1bm5pbmcgdGVzdCBzdWl0ZXMuXG4gICAqIEBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBwcmVidWlsZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBXaGF0IHRvIGRvIHdoZW4gYSBzZXJ2aWNlIG9uIGEgcG9ydCBpcyBkZXRlY3RlZC5cbiAqL1xuZXhwb3J0IGVudW0gR2l0cG9kT25PcGVuIHtcbiAgLyoqXG4gICAqIE9wZW4gYSBuZXcgYnJvd3NlciB0YWJcbiAgICovXG4gIE9QRU5fQlJPV1NFUiA9IFwib3Blbi1icm93c2VyXCIsXG5cbiAgLyoqXG4gICAqIE9wZW4gYSBwcmV2aWV3IG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBJREVcbiAgICovXG4gIE9QRU5fUFJFVklFVyA9IFwib3Blbi1wcmV2aWV3XCIsXG5cbiAgLyoqXG4gICAqIFNob3cgYSBub3RpZmljYXRpb24gYXNraW5nIHRoZSB1c2VyIHdoYXQgdG8gZG8gKGRlZmF1bHQpXG4gICAqL1xuICBOT1RJRlkgPSBcIm5vdGlmeVwiLFxuXG4gIC8qKlxuICAgKiBEbyBub3RoaW5nLlxuICAgKi9cbiAgSUdOT1JFID0gXCJpZ25vcmVcIixcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBwb3J0IHZpc2liaWxpdHkgc2hvdWxkIGJlIHByaXZhdGUgb3IgcHVibGljXG4gKi9cbmV4cG9ydCBlbnVtIEdpdHBvZFBvcnRWaXNpYmlsaXR5IHtcbiAgLyoqXG4gICAqIEFsbG93cyBldmVyeW9uZSB3aXRoIHRoZSBwb3J0IFVSTCB0byBhY2Nlc3MgdGhlIHBvcnQgKGRlZmF1bHQpXG4gICAqL1xuICBQVUJMSUMgPSBcInB1YmxpY1wiLFxuXG4gIC8qKlxuICAgKiBPbmx5IGFsbG93cyB1c2VycyB3aXRoIHdvcmtzcGFjZSBhY2Nlc3MgdG8gYWNjZXNzIHRoZSBwb3J0XG4gICAqL1xuICBQUklWQVRFID0gXCJwcml2YXRlXCIsXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYW4gZXhwb3NlZCBwb3J0IG9uIEdpdHBvZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdpdHBvZFBvcnQge1xuICAvKipcbiAgICogQSBwb3J0IHRoYXQgc2hvdWxkIGJlIGV4cG9zZWQgKGZvcndhcmRlZCkgZnJvbSB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBAZXhhbXBsZSBcIjgwODBcIlxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydD86IHN0cmluZztcblxuICAvKipcbiAgICogV2hhdCB0byBkbyB3aGVuIGEgc2VydmljZSBvbiBhIHBvcnQgaXMgZGV0ZWN0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IEdpdHBvZE9uT3Blbi5OT1RJRllcbiAgICovXG4gIHJlYWRvbmx5IG9uT3Blbj86IEdpdHBvZE9uT3BlbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcG9ydCB2aXNpYmlsaXR5IHNob3VsZCBiZSBwcml2YXRlIG9yIHB1YmxpYy5cbiAgICpcbiAgICogQGRlZmF1bHQgR2l0cG9kUG9ydFZpc2liaWxpdHkuUFVCTElDXG4gICAqL1xuICByZWFkb25seSB2aXNpYmlsaXR5PzogR2l0cG9kUG9ydFZpc2liaWxpdHk7XG59XG5cbi8qKlxuICogQ29uZmlndXJlIHRoZSBHaXRwb2QgQXBwIGZvciBwcmVidWlsZHMuXG4gKiBDdXJyZW50bHkgb25seSBHaXRIdWIgaXMgc3VwcG9ydGVkLlxuICogQHNlZSBodHRwczovL3d3dy5naXRwb2QuaW8vZG9jcy9wcmVidWlsZHMvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2l0cG9kUHJlYnVpbGRzIHtcbiAgLyoqXG4gICAqIEVuYWJsZSBmb3IgdGhlIG1hc3Rlci9kZWZhdWx0IGJyYW5jaFxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBtYXN0ZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgZm9yIGFsbCBicmFuY2hlcyBpbiB0aGlzIHJlcG9cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGJyYW5jaGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlIGZvciBwdWxsIHJlcXVlc3RzIGNvbWluZyBmcm9tIHRoaXMgcmVwb1xuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBwdWxsUmVxdWVzdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgZm9yIHB1bGwgcmVxdWVzdHMgY29taW5nIGZyb20gZm9ya3NcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHB1bGxSZXF1ZXN0c0Zyb21Gb3Jrcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZCBhIGNoZWNrIHRvIHB1bGwgcmVxdWVzdHNcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYWRkQ2hlY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBZGQgYSBcIlJldmlldyBpbiBHaXRwb2RcIiBidXR0b24gYXMgYSBjb21tZW50IHRvIHB1bGwgcmVxdWVzdHNcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGFkZENvbW1lbnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBZGQgYSBcIlJldmlldyBpbiBHaXRwb2RcIiBidXR0b24gdG8gdGhlIHB1bGwgcmVxdWVzdCdzIGRlc2NyaXB0aW9uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhZGRCYWRnZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZCBhIGxhYmVsIG9uY2UgdGhlIHByZWJ1aWxkIGlzIHJlYWR5IHRvIHB1bGwgcmVxdWVzdHNcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGFkZExhYmVsPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3RvciBvcHRpb25zIGZvciB0aGUgR2l0cG9kIGNvbXBvbmVudC5cbiAqXG4gKiBCeSBkZWZhdWx0LCBHaXRwb2QgdXNlcyB0aGUgJ2dpdHBvZC93b3Jrc3BhY2UtZnVsbCcgZG9ja2VyIGltYWdlLlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vZ2l0cG9kLWlvL3dvcmtzcGFjZS1pbWFnZXMvYmxvYi9tYXN0ZXIvZnVsbC9Eb2NrZXJmaWxlXG4gKlxuICogQnkgZGVmYXVsdCwgYWxsIHRhc2tzIHdpbGwgYmUgcnVuIGluIHBhcmFsbGVsLiBUbyBydW4gdGhlIHRhc2tzIGluIHNlcXVlbmNlLFxuICogY3JlYXRlIGEgbmV3IHRhc2sgYW5kIHNwZWNpZnkgdGhlIG90aGVyIHRhc2tzIGFzIHN1YnRhc2tzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdpdHBvZE9wdGlvbnMgZXh0ZW5kcyBEZXZFbnZpcm9ubWVudE9wdGlvbnMge1xuICAvKipcbiAgICogT3B0aW9uYWwgR2l0cG9kJ3MgR2l0aHViIEFwcCBpbnRlZ3JhdGlvbiBmb3IgcHJlYnVpbGRzXG4gICAqIElmIHRoaXMgaXMgbm90IHNldCBhbmQgR2l0cG9kJ3MgR2l0aHViIEFwcCBpcyBpbnN0YWxsZWQsIHRoZW4gR2l0cG9kIHdpbGwgYXBwbHlcbiAgICogdGhlc2UgZGVmYXVsdHM6IGh0dHBzOi8vd3d3LmdpdHBvZC5pby9kb2NzL3ByZWJ1aWxkcy8jY29uZmlndXJlLXRoZS1naXRodWItYXBwXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgcHJlYnVpbGRzPzogR2l0cG9kUHJlYnVpbGRzO1xufVxuXG4vKipcbiAqIFRoZSBHaXRwb2QgY29tcG9uZW50IHdoaWNoIGVtaXRzIC5naXRwb2QueW1sXG4gKi9cbmV4cG9ydCBjbGFzcyBHaXRwb2QgZXh0ZW5kcyBDb21wb25lbnQgaW1wbGVtZW50cyBJRGV2RW52aXJvbm1lbnQge1xuICBwcml2YXRlIGRvY2tlckltYWdlOiBEZXZFbnZpcm9ubWVudERvY2tlckltYWdlIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHByZWJ1aWxkczogR2l0cG9kUHJlYnVpbGRzIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IHRhc2tzID0gbmV3IEFycmF5PEdpdHBvZFRhc2s+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcG9ydHMgPSBuZXcgQXJyYXk8R2l0cG9kUG9ydD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSB2c2NvZGVFeHRlbnNpb25zID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICAvKipcbiAgICogRGlyZWN0IGFjY2VzcyB0byB0aGUgZ2l0cG9kIGNvbmZpZ3VyYXRpb24gKGVzY2FwZSBoYXRjaClcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb25maWc6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBHaXRwb2RPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMuZG9ja2VySW1hZ2UgPSBvcHRpb25zPy5kb2NrZXJJbWFnZTtcblxuICAgIGlmIChvcHRpb25zPy50YXNrcykge1xuICAgICAgZm9yIChjb25zdCB0YXNrIG9mIG9wdGlvbnMudGFza3MpIHtcbiAgICAgICAgdGhpcy5hZGRUYXNrcyh0YXNrKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucz8ucHJlYnVpbGRzKSB7XG4gICAgICB0aGlzLmFkZFByZWJ1aWxkcyhvcHRpb25zLnByZWJ1aWxkcyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnM/LnBvcnRzKSB7XG4gICAgICB0aGlzLmFkZFBvcnRzKC4uLm9wdGlvbnMucG9ydHMpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zPy52c2NvZGVFeHRlbnNpb25zKSB7XG4gICAgICB0aGlzLmFkZFZzY29kZUV4dGVuc2lvbnMoLi4ub3B0aW9ucy52c2NvZGVFeHRlbnNpb25zKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIGltYWdlOiAoKSA9PiB0aGlzLnJlbmRlckRvY2tlckltYWdlKCksXG4gICAgICB0YXNrczogdGhpcy50YXNrcyxcbiAgICAgIGdpdGh1YjogKCkgPT4gdGhpcy5yZW5kZXJQcmVidWlsZHMoKSxcbiAgICAgIHBvcnRzOiB0aGlzLnBvcnRzLFxuICAgICAgdnNjb2RlOiB7XG4gICAgICAgIGV4dGVuc2lvbnM6IHRoaXMudnNjb2RlRXh0ZW5zaW9ucyxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIG5ldyBZYW1sRmlsZSh0aGlzLnByb2plY3QsIEdJVFBPRF9GSUxFLCB7XG4gICAgICBvYmo6IHRoaXMuY29uZmlnLFxuICAgICAgb21pdEVtcHR5OiB0cnVlLFxuICAgICAgLy8gR2l0UG9kIG5lZWRzIHRvIHJlYWQgdGhlIGZpbGUgZnJvbSB0aGUgcmVwb3NpdG9yeSBpbiBvcmRlciB0byB3b3JrLlxuICAgICAgY29tbWl0dGVkOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGN1c3RvbSBEb2NrZXIgaW1hZ2Ugb3IgRG9ja2VyZmlsZSBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQHBhcmFtIGltYWdlIFRoZSBEb2NrZXIgaW1hZ2VcbiAgICovXG4gIHB1YmxpYyBhZGREb2NrZXJJbWFnZShpbWFnZTogRGV2RW52aXJvbm1lbnREb2NrZXJJbWFnZSkge1xuICAgIGlmICh0aGlzLmRvY2tlckltYWdlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJkb2NrZXJJbWFnZSBjYW5ub3QgYmUgcmVkZWZpbmVkLlwiKTtcbiAgICB9XG4gICAgdGhpcy5kb2NrZXJJbWFnZSA9IGltYWdlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCB0YXNrcyB0byBydW4gd2hlbiBnaXRwb2Qgc3RhcnRzLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBhbGwgdGFza3Mgd2lsbCBiZSBydW4gaW4gcGFyYWxsZWwuIFRvIHJ1biB0YXNrcyBpbiBzZXF1ZW5jZSxcbiAgICogY3JlYXRlIGEgbmV3IGBUYXNrYCBhbmQgc3BlY2lmeSB0aGUgb3RoZXIgdGFza3MgYXMgc3VidGFza3MuXG4gICAqXG4gICAqIEBwYXJhbSB0YXNrcyBUaGUgbmV3IHRhc2tzXG4gICAqL1xuICBwdWJsaWMgYWRkVGFza3MoLi4udGFza3M6IFRhc2tbXSkge1xuICAgIHRoaXMudGFza3MucHVzaChcbiAgICAgIC4uLnRhc2tzLm1hcCgodGFzaykgPT4gKHtcbiAgICAgICAgbmFtZTogdGFzay5uYW1lLFxuICAgICAgICBjb21tYW5kOiBgbnB4IHByb2plbiAke3Rhc2submFtZX1gLFxuICAgICAgfSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBwcmVidWlsZHMgY29uZmlndXJhdGlvbiBmb3IgdGhlIEdpdHBvZCBBcHBcbiAgICogQHBhcmFtIGNvbmZpZyBUaGUgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHVibGljIGFkZFByZWJ1aWxkcyhjb25maWc6IEdpdHBvZFByZWJ1aWxkcykge1xuICAgIHRoaXMucHJlYnVpbGRzID0gY29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHRhc2sgd2l0aCBtb3JlIGdyYW51bGFyIG9wdGlvbnMuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGFsbCB0YXNrcyB3aWxsIGJlIHJ1biBpbiBwYXJhbGxlbC4gVG8gcnVuIHRhc2tzIGluIHNlcXVlbmNlLFxuICAgKiBjcmVhdGUgYSBuZXcgYFRhc2tgIGFuZCBzZXQgdGhlIG90aGVyIHRhc2tzIGFzIHN1YnRhc2tzLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgdGFzayBwYXJhbWV0ZXJzXG4gICAqL1xuICBwdWJsaWMgYWRkQ3VzdG9tVGFzayhvcHRpb25zOiBHaXRwb2RUYXNrKSB7XG4gICAgdGhpcy50YXNrcy5wdXNoKHtcbiAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgIGNvbW1hbmQ6IG9wdGlvbnMuY29tbWFuZCxcbiAgICAgIG9wZW5Nb2RlOiBvcHRpb25zLm9wZW5Nb2RlLFxuICAgICAgb3BlbkluOiBvcHRpb25zLm9wZW5JbixcbiAgICAgIGJlZm9yZTogb3B0aW9ucy5iZWZvcmUsXG4gICAgICBpbml0OiBvcHRpb25zLmluaXQsXG4gICAgICBwcmVidWlsZDogb3B0aW9ucy5wcmVidWlsZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgcG9ydHMgdGhhdCBzaG91bGQgYmUgZXhwb3NlZCAoZm9yd2FyZGVkKSBmcm9tIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBwYXJhbSBwb3J0cyBUaGUgbmV3IHBvcnRzXG4gICAqL1xuICBwdWJsaWMgYWRkUG9ydHMoLi4ucG9ydHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5wb3J0cy5wdXNoKC4uLnBvcnRzLm1hcCgocG9ydCkgPT4gKHsgcG9ydDogcG9ydCB9KSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGxpc3Qgb2YgVlNDb2RlIGV4dGVuc2lvbnMgdGhhdCBzaG91bGQgYmUgYXV0b21hdGljYWxseSBpbnN0YWxsZWRcbiAgICogaW4gdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogVGhlc2UgbXVzdCBiZSBpbiB0aGUgZm9ybWF0IGRlZmluZWQgaW4gdGhlIE9wZW4gVlNYIHJlZ2lzdHJ5LlxuICAgKiBAZXhhbXBsZSAnc2NhbGEtbGFuZy5zY2FsYUAwLjMuOTpPNVhtandZNUd6KzBvRFpBbXFuZUp3PT0nXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cuZ2l0cG9kLmlvL2RvY3MvdnNjb2RlLWV4dGVuc2lvbnMvXG4gICAqXG4gICAqIEBwYXJhbSBleHRlbnNpb25zIFRoZSBleHRlbnNpb24gSURzXG4gICAqL1xuICBwdWJsaWMgYWRkVnNjb2RlRXh0ZW5zaW9ucyguLi5leHRlbnNpb25zOiBHaXRwb2RDb2RlRXh0ZW5zaW9uSWRbXSkge1xuICAgIHRoaXMudnNjb2RlRXh0ZW5zaW9ucy5wdXNoKC4uLmV4dGVuc2lvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJEb2NrZXJJbWFnZSgpIHtcbiAgICBpZiAodGhpcy5kb2NrZXJJbWFnZT8uaW1hZ2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmRvY2tlckltYWdlLmltYWdlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5kb2NrZXJJbWFnZT8uZG9ja2VyRmlsZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZmlsZTogdGhpcy5kb2NrZXJJbWFnZS5kb2NrZXJGaWxlLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclByZWJ1aWxkcygpIHtcbiAgICBpZiAodGhpcy5wcmVidWlsZHMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByZWJ1aWxkczogdGhpcy5wcmVidWlsZHMsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFZTIENvZGUgZXh0ZW5zaW9ucyBhcyBkZWZpbmVkIGluIHRoZSBPcGVuIFZTWCByZWdpc3RyeVxuICogRXhhbXBsZTogYHNjYWxhLWxhbmcuc2NhbGFAMC4zLjk6TzVYbWp3WTVHeiswb0RaQW1xbmVKdz09YFxuICovXG50eXBlIEdpdHBvZENvZGVFeHRlbnNpb25JZCA9IHN0cmluZztcbiJdfQ==