projen 0.104.6 → 0.104.8

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 (166) hide show
  1. package/.jsii +91 -71
  2. package/lib/ai-instructions.js +2 -2
  3. package/lib/awscdk/auto-discover.js +6 -6
  4. package/lib/awscdk/awscdk-app-java.js +1 -1
  5. package/lib/awscdk/awscdk-app-py.js +1 -1
  6. package/lib/awscdk/awscdk-app-ts.js +1 -1
  7. package/lib/awscdk/awscdk-construct.js +1 -1
  8. package/lib/awscdk/awscdk-deps-java.js +1 -1
  9. package/lib/awscdk/awscdk-deps-js.js +1 -1
  10. package/lib/awscdk/awscdk-deps-py.js +1 -1
  11. package/lib/awscdk/awscdk-deps.js +1 -1
  12. package/lib/awscdk/cdk-config.js +3 -3
  13. package/lib/awscdk/cdk-tasks.js +1 -1
  14. package/lib/awscdk/integration-test.js +1 -1
  15. package/lib/awscdk/lambda-extension.js +1 -1
  16. package/lib/awscdk/lambda-function.js +2 -2
  17. package/lib/build/build-workflow.js +1 -1
  18. package/lib/cdk/auto-discover-base.js +2 -2
  19. package/lib/cdk/construct-lib.js +1 -1
  20. package/lib/cdk/integration-test-base.js +1 -1
  21. package/lib/cdk/jsii-build.js +1 -1
  22. package/lib/cdk/jsii-docgen.js +1 -1
  23. package/lib/cdk/jsii-project.js +1 -1
  24. package/lib/cdk8s/auto-discover.js +2 -2
  25. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  26. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  27. package/lib/cdk8s/cdk8s-construct.js +1 -1
  28. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  29. package/lib/cdk8s/cdk8s-deps.js +1 -1
  30. package/lib/cdk8s/integration-test.js +1 -1
  31. package/lib/cdktf/cdktf-construct.js +1 -1
  32. package/lib/cdktn/cdktn-app-ts.js +1 -1
  33. package/lib/cdktn/cdktn-config.js +1 -1
  34. package/lib/cdktn/cdktn-construct.js +1 -1
  35. package/lib/cdktn/cdktn-deps.js +1 -1
  36. package/lib/cdktn/cdktn-tasks.js +1 -1
  37. package/lib/circleci/circleci.js +1 -1
  38. package/lib/component.js +2 -2
  39. package/lib/dependencies.js +1 -1
  40. package/lib/dev-env.js +1 -1
  41. package/lib/docker-compose/docker-compose-service.js +1 -1
  42. package/lib/docker-compose/docker-compose.js +1 -1
  43. package/lib/file.js +1 -1
  44. package/lib/gitattributes.js +1 -1
  45. package/lib/github/actions-provider.js +1 -1
  46. package/lib/github/actions.const.js +1 -1
  47. package/lib/github/auto-approve.js +1 -1
  48. package/lib/github/auto-merge.js +1 -1
  49. package/lib/github/auto-queue.js +1 -1
  50. package/lib/github/dependabot.js +1 -1
  51. package/lib/github/dependency-review.js +1 -1
  52. package/lib/github/github-credentials.js +1 -1
  53. package/lib/github/github-project.js +1 -1
  54. package/lib/github/github.js +1 -1
  55. package/lib/github/merge-queue.js +1 -1
  56. package/lib/github/mergify.js +1 -1
  57. package/lib/github/pr-template.js +1 -1
  58. package/lib/github/pull-request-backport.js +1 -1
  59. package/lib/github/pull-request-lint.js +1 -1
  60. package/lib/github/pull-request-source.js +1 -1
  61. package/lib/github/stale.js +1 -1
  62. package/lib/github/task-workflow-job.js +1 -1
  63. package/lib/github/task-workflow.js +1 -1
  64. package/lib/github/workflow-actions.js +1 -1
  65. package/lib/github/workflow-jobs.js +1 -1
  66. package/lib/github/workflow-steps.js +1 -1
  67. package/lib/github/workflows.js +1 -1
  68. package/lib/gitlab/configuration.js +1 -1
  69. package/lib/gitlab/gitlab-configuration.js +1 -1
  70. package/lib/gitlab/nested-configuration.js +1 -1
  71. package/lib/gitpod.js +1 -1
  72. package/lib/ignore-file.js +1 -1
  73. package/lib/ini.js +1 -1
  74. package/lib/java/java-project.js +1 -1
  75. package/lib/java/junit.js +1 -1
  76. package/lib/java/maven-compile.js +1 -1
  77. package/lib/java/maven-packaging.js +1 -1
  78. package/lib/java/maven-sample.js +1 -1
  79. package/lib/java/pom.js +2 -2
  80. package/lib/java/projenrc.js +1 -1
  81. package/lib/javascript/biome/biome.js +1 -1
  82. package/lib/javascript/bundler.js +1 -1
  83. package/lib/javascript/eslint.js +1 -1
  84. package/lib/javascript/jest.js +4 -4
  85. package/lib/javascript/license-checker.js +1 -1
  86. package/lib/javascript/node-config-file.js +1 -1
  87. package/lib/javascript/node-native-test-runner.js +2 -2
  88. package/lib/javascript/node-package.js +1 -1
  89. package/lib/javascript/node-project.js +1 -1
  90. package/lib/javascript/npm-config.js +1 -1
  91. package/lib/javascript/pnpm-workspace-config.js +2 -2
  92. package/lib/javascript/pnpm-workspace.js +1 -1
  93. package/lib/javascript/prettier.js +1 -1
  94. package/lib/javascript/projenrc.js +1 -1
  95. package/lib/javascript/typescript-config.d.ts +9 -0
  96. package/lib/javascript/typescript-config.js +3 -3
  97. package/lib/javascript/upgrade-dependencies.js +2 -2
  98. package/lib/javascript/yarnrc.js +1 -1
  99. package/lib/json-patch.js +1 -1
  100. package/lib/json.js +1 -1
  101. package/lib/license.js +1 -1
  102. package/lib/logger.js +1 -1
  103. package/lib/makefile.js +1 -1
  104. package/lib/object-file.js +1 -1
  105. package/lib/polaris/coverity-go.js +1 -1
  106. package/lib/polaris/coverity-java.js +1 -1
  107. package/lib/polaris/coverity-javascript.js +1 -1
  108. package/lib/polaris/coverity.js +1 -1
  109. package/lib/project-build.js +1 -1
  110. package/lib/project-tree.js +1 -1
  111. package/lib/project.js +1 -1
  112. package/lib/projects.js +1 -1
  113. package/lib/projenrc-json.js +1 -1
  114. package/lib/projenrc.js +1 -1
  115. package/lib/properties-file.js +1 -1
  116. package/lib/python/pip.js +1 -1
  117. package/lib/python/poetry.js +2 -2
  118. package/lib/python/projenrc.js +1 -1
  119. package/lib/python/pyproject-toml-file.js +1 -1
  120. package/lib/python/pytest-sample.js +1 -1
  121. package/lib/python/pytest.js +1 -1
  122. package/lib/python/python-project.js +1 -1
  123. package/lib/python/python-sample.js +1 -1
  124. package/lib/python/requirements-file.js +1 -1
  125. package/lib/python/setuppy.js +1 -1
  126. package/lib/python/setuptools.js +1 -1
  127. package/lib/python/uv-config.js +1 -1
  128. package/lib/python/uv.js +1 -1
  129. package/lib/python/venv.js +1 -1
  130. package/lib/readme.js +1 -1
  131. package/lib/release/publisher.js +1 -1
  132. package/lib/release/release-trigger.js +1 -1
  133. package/lib/release/release.js +1 -1
  134. package/lib/renovatebot.js +1 -1
  135. package/lib/run-task.cjs +1 -1
  136. package/lib/sample-file.js +2 -2
  137. package/lib/script-runner.js +1 -1
  138. package/lib/sonarqube/javascript.js +1 -1
  139. package/lib/sonarqube/rust.js +1 -1
  140. package/lib/sonarqube/sonarqube.js +1 -1
  141. package/lib/sonarqube/typescript.js +1 -1
  142. package/lib/source-code.js +1 -1
  143. package/lib/task-shell.js +1 -1
  144. package/lib/task.js +1 -1
  145. package/lib/tasks.js +5 -2
  146. package/lib/testing.js +1 -1
  147. package/lib/textfile.js +1 -1
  148. package/lib/toml.js +1 -1
  149. package/lib/typescript/projenrc-ts.js +1 -1
  150. package/lib/typescript/projenrc.js +1 -1
  151. package/lib/typescript/typescript-runner.js +1 -1
  152. package/lib/typescript/typescript-typedoc.js +1 -1
  153. package/lib/typescript/typescript.js +5 -5
  154. package/lib/version.js +2 -2
  155. package/lib/vscode/devcontainer.js +1 -1
  156. package/lib/vscode/extensions.js +1 -1
  157. package/lib/vscode/launch-config.js +1 -1
  158. package/lib/vscode/settings.js +1 -1
  159. package/lib/vscode/vscode.js +1 -1
  160. package/lib/web/next.js +3 -3
  161. package/lib/web/postcss.js +1 -1
  162. package/lib/web/react.js +3 -3
  163. package/lib/web/tailwind.js +1 -1
  164. package/lib/xmlfile.js +1 -1
  165. package/lib/yaml.js +1 -1
  166. package/package.json +1 -1
@@ -170,7 +170,7 @@ var TypeScriptJsxMode;
170
170
  * Extending from more than one base config file requires TypeScript 5.0+.
171
171
  */
172
172
  class TypescriptConfigExtends {
173
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.TypescriptConfigExtends", version: "0.104.6" };
173
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.TypescriptConfigExtends", version: "0.104.8" };
174
174
  /**
175
175
  * Factory for creation from array of file paths.
176
176
  *
@@ -204,7 +204,7 @@ class TypescriptConfigExtends {
204
204
  }
205
205
  exports.TypescriptConfigExtends = TypescriptConfigExtends;
206
206
  class TypescriptConfig extends component_1.Component {
207
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.TypescriptConfig", version: "0.104.6" };
207
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.TypescriptConfig", version: "0.104.8" };
208
208
  _extends;
209
209
  compilerOptions;
210
210
  includeSet;
@@ -371,4 +371,4 @@ class TypescriptConfig extends component_1.Component {
371
371
  }
372
372
  }
373
373
  exports.TypescriptConfig = TypescriptConfig;
374
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YXNjcmlwdC90eXBlc2NyaXB0LWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTZCO0FBQzdCLCtDQUFpQztBQUNqQyx3QkFBZ0M7QUFDaEMsNENBQXlDO0FBQ3pDLGtDQUFtQztBQUVuQyxrQ0FBaUQ7QUF1Q2pEOzs7O0dBSUc7QUFDSCxJQUFZLDBCQTZDWDtBQTdDRCxXQUFZLDBCQUEwQjtJQUNwQzs7OztPQUlHO0lBQ0gsaURBQW1CLENBQUE7SUFFbkI7Ozs7T0FJRztJQUNILDJDQUFhLENBQUE7SUFFYjs7Ozs7OztPQU9HO0lBQ0gsK0NBQWlCLENBQUE7SUFFakI7Ozs7T0FJRztJQUNILCtDQUFpQixDQUFBO0lBRWpCOzs7O09BSUc7SUFDSCxvREFBc0IsQ0FBQTtJQUV0Qjs7OztPQUlHO0lBQ0gsaURBQW1CLENBQUE7QUFDckIsQ0FBQyxFQTdDVywwQkFBMEIsMENBQTFCLDBCQUEwQixRQTZDckM7QUFFRDs7OztHQUlHO0FBQ0gsSUFBWSx5QkFxQlg7QUFyQkQsV0FBWSx5QkFBeUI7SUFDbkM7Ozs7T0FJRztJQUNILDBDQUFhLENBQUE7SUFFYjs7OztPQUlHO0lBQ0gsOENBQWlCLENBQUE7SUFFakI7Ozs7T0FJRztJQUNILDRDQUFlLENBQUE7QUFDakIsQ0FBQyxFQXJCVyx5QkFBeUIseUNBQXpCLHlCQUF5QixRQXFCcEM7QUFFRDs7OztHQUlHO0FBQ0gsSUFBWSxnQ0FnQlg7QUFoQkQsV0FBWSxnQ0FBZ0M7SUFDMUM7O09BRUc7SUFDSCxxREFBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILHlEQUFxQixDQUFBO0lBRXJCOzs7T0FHRztJQUNILG1EQUFlLENBQUE7QUFDakIsQ0FBQyxFQWhCVyxnQ0FBZ0MsZ0RBQWhDLGdDQUFnQyxRQWdCM0M7QUFF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SSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7O0FBcE1ILDRDQXFNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tIFwic2VtdmVyXCI7XG5pbXBvcnQgeyBOb2RlUHJvamVjdCB9IGZyb20gXCIuXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBKc29uRmlsZSB9IGZyb20gXCIuLi9qc29uXCI7XG5pbXBvcnQgdHlwZSB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplUGVyc2lzdGVkUGF0aCB9IGZyb20gXCIuLi91dGlsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZXNjcmlwdENvbmZpZ09wdGlvbnMge1xuICAvKipcbiAgICogQGRlZmF1bHQgXCJ0c2NvbmZpZy5qc29uXCJcbiAgICovXG4gIHJlYWRvbmx5IGZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCYXNlIGB0c2NvbmZpZy5qc29uYCBjb25maWd1cmF0aW9uKHMpIHRvIGluaGVyaXQgZnJvbS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogTXVzdCBwcm92aWRlIGVpdGhlciBgZXh0ZW5kc2Agb3IgYGNvbXBpbGVyT3B0aW9uc2AgKG9yIGJvdGgpLlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZW5kcz86IFR5cGVzY3JpcHRDb25maWdFeHRlbmRzO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBsaXN0IG9mIGdsb2IgcGF0dGVybnMgdGhhdCBtYXRjaCBUeXBlU2NyaXB0IGZpbGVzIHRvIGJlIGluY2x1ZGVkIGluIGNvbXBpbGF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFsbCAudHMgZmlsZXMgcmVjdXJzaXZlbHlcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRmlsdGVycyByZXN1bHRzIGZyb20gdGhlIFwiaW5jbHVkZVwiIG9wdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub2RlX21vZHVsZXMgaXMgZXhjbHVkZWQgYnkgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDb21waWxlciBvcHRpb25zIHRvIHVzZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogTXVzdCBwcm92aWRlIGVpdGhlciBgZXh0ZW5kc2Agb3IgYGNvbXBpbGVyT3B0aW9uc2AgKG9yIGJvdGgpLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGlsZXJPcHRpb25zPzogVHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIGhvdyBtb2R1bGVzIGdldCByZXNvbHZlZC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL21vZHVsZS1yZXNvbHV0aW9uLmh0bWxcbiAqL1xuZXhwb3J0IGVudW0gVHlwZVNjcmlwdE1vZHVsZVJlc29sdXRpb24ge1xuICAvKipcbiAgICogVHlwZVNjcmlwdCdzIGZvcm1lciBkZWZhdWx0IHJlc29sdXRpb24gc3RyYXRlZ3kuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svbW9kdWxlLXJlc29sdXRpb24uaHRtbCNjbGFzc2ljXG4gICAqL1xuICBDTEFTU0lDID0gXCJjbGFzc2ljXCIsXG5cbiAgLyoqXG4gICAqIFJlc29sdXRpb24gc3RyYXRlZ3kgd2hpY2ggYXR0ZW1wdHMgdG8gbWltaWMgdGhlIE5vZGUuanMgbW9kdWxlIHJlc29sdXRpb24gc3RyYXRlZ3kgYXQgcnVudGltZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9tb2R1bGUtcmVzb2x1dGlvbi5odG1sI25vZGVcbiAgICovXG4gIE5PREUgPSBcIm5vZGVcIixcblxuICAvKipcbiAgICogYC0tbW9kdWxlUmVzb2x1dGlvbiBub2RlYCB3YXMgcmVuYW1lZCB0byBgbm9kZTEwYFxuICAgKiAoa2VlcGluZyBgbm9kZWAgYXMgYW4gYWxpYXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpIGluIFR5cGVTY3JpcHQgNS4wLlxuICAgKiBJdCByZWZsZWN0cyB0aGUgQ29tbW9uSlMgbW9kdWxlIHJlc29sdXRpb24gYWxnb3JpdGhtIGFzIGl0IGV4aXN0ZWQgaW4gTm9kZS5qcyB2ZXJzaW9uc1xuICAgKiBlYXJsaWVyIHRoYW4gdjEyLiBJdCBzaG91bGQgbm8gbG9uZ2VyIGJlIHVzZWQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svbW9kdWxlcy9yZWZlcmVuY2UuaHRtbCNub2RlMTAtZm9ybWVybHkta25vd24tYXMtbm9kZVxuICAgKi9cbiAgTk9ERTEwID0gXCJub2RlMTBcIixcblxuICAvKipcbiAgICogTm9kZS5qc+KAmSBFQ01BU2NyaXB0IE1vZHVsZSBTdXBwb3J0IGZyb20gVHlwZVNjcmlwdCA0Ljcgb253YXJkc1xuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNtb2R1bGVSZXNvbHV0aW9uXG4gICAqL1xuICBOT0RFMTYgPSBcIm5vZGUxNlwiLFxuXG4gIC8qKlxuICAgKiBOb2RlLmpz4oCZIEVDTUFTY3JpcHQgTW9kdWxlIFN1cHBvcnQgZnJvbSBUeXBlU2NyaXB0IDQuNyBvbndhcmRzXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI21vZHVsZVJlc29sdXRpb25cbiAgICovXG4gIE5PREVfTkVYVCA9IFwibm9kZW5leHRcIixcblxuICAvKipcbiAgICogUmVzb2x1dGlvbiBzdHJhdGVneSB3aGljaCBhdHRlbXB0cyB0byBtaW1pYyByZXNvbHV0aW9uIHBhdHRlcm5zIG9mIG1vZGVybiBidW5kbGVyczsgZnJvbSBUeXBlU2NyaXB0IDUuMCBvbndhcmRzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNtb2R1bGVSZXNvbHV0aW9uXG4gICAqL1xuICBCVU5ETEVSID0gXCJidW5kbGVyXCIsXG59XG5cbi8qKlxuICogVGhpcyBzZXR0aW5nIGNvbnRyb2xzIGhvdyBUeXBlU2NyaXB0IGRldGVybWluZXMgd2hldGhlciBhIGZpbGUgaXMgYSBzY3JpcHQgb3IgYSBtb2R1bGUuXG4gKlxuICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9tb2R1bGVzL3RoZW9yeS5odG1sI3NjcmlwdHMtYW5kLW1vZHVsZXMtaW4tamF2YXNjcmlwdFxuICovXG5leHBvcnQgZW51bSBUeXBlU2NyaXB0TW9kdWxlRGV0ZWN0aW9uIHtcbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgd2lsbCBub3Qgb25seSBsb29rIGZvciBpbXBvcnQgYW5kIGV4cG9ydCBzdGF0ZW1lbnRzLCBidXQgaXQgd2lsbCBhbHNvIGNoZWNrIHdoZXRoZXIgdGhlIFwidHlwZVwiIGZpZWxkIGluIGEgcGFja2FnZS5qc29uIGlzIHNldCB0byBcIm1vZHVsZVwiIHdoZW4gcnVubmluZyB3aXRoIG1vZHVsZTogbm9kZW5leHQgb3Igbm9kZTE2LCBhbmQgY2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBmaWxlIGlzIGEgSlNYIGZpbGUgd2hlbiBydW5uaW5nIHVuZGVyIGpzeDogcmVhY3QtanN4LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZy8jbW9kdWxlRGV0ZWN0aW9uXG4gICAqL1xuICBBVVRPID0gXCJhdXRvXCIsXG5cbiAgLyoqXG4gICAqIFRoZSBzYW1lIGJlaGF2aW9yIGFzIDQuNiBhbmQgcHJpb3IsIHVzaW5ncyBpbXBvcnQgYW5kIGV4cG9ydCBzdGF0ZW1lbnRzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZmlsZSBpcyBhIG1vZHVsZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcvI21vZHVsZURldGVjdGlvblxuICAgKi9cbiAgTEVHQUNZID0gXCJsZWdhY3lcIixcblxuICAvKipcbiAgICogRW5zdXJlcyB0aGF0IGV2ZXJ5IG5vbi1kZWNsYXJhdGlvbiBmaWxlIGlzIHRyZWF0ZWQgYXMgYSBtb2R1bGUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnLyNtb2R1bGVEZXRlY3Rpb25cbiAgICovXG4gIEZPUkNFID0gXCJmb3JjZVwiLFxufVxuXG4vKipcbiAqIFRoaXMgZmxhZyBjb250cm9scyBob3cgYGltcG9ydGAgd29ya3MsIHRoZXJlIGFyZSAzIGRpZmZlcmVudCBvcHRpb25zLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2ltcG9ydHNOb3RVc2VkQXNWYWx1ZXNcbiAqL1xuZXhwb3J0IGVudW0gVHlwZVNjcmlwdEltcG9ydHNOb3RVc2VkQXNWYWx1ZXMge1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgZHJvcHBpbmcgYGltcG9ydGAgc3RhdGVtZW50cyB3aGljaCBvbmx5IHJlZmVyZW5jZSB0eXBlcy5cbiAgICovXG4gIFJFTU9WRSA9IFwicmVtb3ZlXCIsXG5cbiAgLyoqXG4gICAqIFByZXNlcnZlcyBhbGwgYGltcG9ydGAgc3RhdGVtZW50cyB3aG9zZSB2YWx1ZXMgb3IgdHlwZXMgYXJlIG5ldmVyIHVzZWQuIFRoaXMgY2FuIGNhdXNlIGltcG9ydHMvc2lkZS1lZmZlY3RzIHRvIGJlIHByZXNlcnZlZC5cbiAgICovXG4gIFBSRVNFUlZFID0gXCJwcmVzZXJ2ZVwiLFxuXG4gIC8qKlxuICAgKiBUaGlzIHByZXNlcnZlcyBhbGwgaW1wb3J0cyAodGhlIHNhbWUgYXMgdGhlIHByZXNlcnZlIG9wdGlvbiksIGJ1dCB3aWxsIGVycm9yIHdoZW4gYSB2YWx1ZSBpbXBvcnQgaXMgb25seSB1c2VkIGFzIGEgdHlwZS5cbiAgICogVGhpcyBtaWdodCBiZSB1c2VmdWwgaWYgeW91IHdhbnQgdG8gZW5zdXJlIG5vIHZhbHVlcyBhcmUgYmVpbmcgYWNjaWRlbnRhbGx5IGltcG9ydGVkLCBidXQgc3RpbGwgbWFrZSBzaWRlLWVmZmVjdCBpbXBvcnRzIGV4cGxpY2l0LlxuICAgKi9cbiAgRVJST1IgPSBcImVycm9yXCIsXG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBob3cgSlNYIHNob3VsZCBnZXQgdHJhbnNmb3JtZWQgaW50byB2YWxpZCBKYXZhU2NyaXB0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svanN4Lmh0bWxcbiAqL1xuZXhwb3J0IGVudW0gVHlwZVNjcmlwdEpzeE1vZGUge1xuICAvKipcbiAgICogS2VlcHMgdGhlIEpTWCBhcyBwYXJ0IG9mIHRoZSBvdXRwdXQgdG8gYmUgZnVydGhlciBjb25zdW1lZCBieSBhbm90aGVyIHRyYW5zZm9ybSBzdGVwIChlLmcuIEJhYmVsKS5cbiAgICovXG4gIFBSRVNFUlZFID0gXCJwcmVzZXJ2ZVwiLFxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBKU1ggc3ludGF4IGludG8gUmVhY3QuY3JlYXRlRWxlbWVudCwgZG9lcyBub3QgbmVlZCB0byBnbyB0aHJvdWdoIGEgSlNYIHRyYW5zZm9ybWF0aW9uIGJlZm9yZSB1c2UsIGFuZCB0aGUgb3V0cHV0IHdpbGwgaGF2ZSBhIC5qcyBmaWxlIGV4dGVuc2lvbi5cbiAgICovXG4gIFJFQUNUID0gXCJyZWFjdFwiLFxuXG4gIC8qKlxuICAgKiBLZWVwcyBhbGwgSlNYIGxpa2UgJ3ByZXNlcnZlJyBtb2RlLCBidXQgb3V0cHV0IHdpbGwgaGF2ZSBhIC5qcyBleHRlbnNpb24uXG4gICAqL1xuICBSRUFDVF9OQVRJVkUgPSBcInJlYWN0LW5hdGl2ZVwiLFxuXG4gIC8qKlxuICAgKiBQYXNzZXMgYGtleWAgc2VwYXJhdGVseSBmcm9tIHByb3BzIGFuZCBhbHdheXMgcGFzc2VzIGBjaGlsZHJlbmAgYXMgcHJvcHMgKHNpbmNlIFJlYWN0IDE3KS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9yZWxlYXNlLW5vdGVzL3R5cGVzY3JpcHQtNC0xLmh0bWwjcmVhY3QtMTctanN4LWZhY3Rvcmllc1xuICAgKi9cbiAgUkVBQ1RfSlNYID0gXCJyZWFjdC1qc3hcIixcblxuICAvKipcbiAgICogU2FtZSBhcyBgUkVBQ1RfSlNYYCB3aXRoIGFkZGl0aW9uYWwgZGVidWcgZGF0YS5cbiAgICovXG4gIFJFQUNUX0pTWERFViA9IFwicmVhY3QtanN4ZGV2XCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbGxvdyBKYXZhU2NyaXB0IGZpbGVzIHRvIGJlIGNvbXBpbGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dKcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFsbG93cyBUeXBlU2NyaXB0IGZpbGVzIHRvIGltcG9ydCBlYWNoIG90aGVyIHdpdGggVHlwZVNjcmlwdC1zcGVjaWZpYyBleHRlbnNpb25zIChgLnRzYCwgYC5tdHNgLCBgLnRzeGApLlxuICAgKiBSZXF1aXJlcyBgbm9FbWl0YCBvciBgZW1pdERlY2xhcmF0aW9uT25seWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTdXBwcmVzcyBhcmJpdHJhcnkgZXh0ZW5zaW9uIGltcG9ydCBlcnJvcnMgd2l0aCB0aGUgYXNzdW1wdGlvbiB0aGF0IGEgYnVuZGxlciB3aWxsIGJlIGhhbmRsaW5nIGl0LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNhbGxvd0FyYml0cmFyeUV4dGVuc2lvbnNcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBhbGxvd0FyYml0cmFyeUV4dGVuc2lvbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaWxlbmNlIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGZvciBvcHRpb25zIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBhIGZ1dHVyZVxuICAgKiBUeXBlU2NyaXB0IHJlbGVhc2UgKGZvciBleGFtcGxlIGBtb2R1bGVSZXNvbHV0aW9uOiBcIm5vZGUxMFwiYCwgd2hpY2ggYmVjYW1lXG4gICAqIGFuIGVycm9yIGluIFR5cGVTY3JpcHQgNi4wKS5cbiAgICpcbiAgICogU2V0IHRvIHRoZSBUeXBlU2NyaXB0IHZlcnNpb24gdGhhdCBpbnRyb2R1Y2VkIHRoZSBkZXByZWNhdGlvbiwgZS5nLiBgXCI2LjBcImAuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnLyNpZ25vcmVEZXByZWNhdGlvbnNcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVEZXByZWNhdGlvbnM/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFbnN1cmVzIHRoYXQgeW91ciBmaWxlcyBhcmUgcGFyc2VkIGluIHRoZSBFQ01BU2NyaXB0IHN0cmljdCBtb2RlLCBhbmQgZW1pdCDigJx1c2Ugc3RyaWN04oCdXG4gICAqIGZvciBlYWNoIHNvdXJjZSBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhbHdheXNTdHJpY3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPZmZlcnMgYSB3YXkgdG8gY29uZmlndXJlIHRoZSByb290IGRpcmVjdG9yeSBmb3Igd2hlcmUgZGVjbGFyYXRpb24gZmlsZXMgYXJlIGVtaXR0ZWQuXG4gICAqXG4gICAqL1xuICByZWFkb25seSBkZWNsYXJhdGlvbkRpcj86IHN0cmluZztcblxuICAvKipcbiAgICogVG8gYmUgc3BlY2lmaWVkIGFsb25nIHdpdGggdGhlIGFib3ZlXG4gICAqXG4gICAqL1xuICByZWFkb25seSBkZWNsYXJhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIHNvdXJjZSBtYXAgZm9yIC5kLnRzIGZpbGVzIHdoaWNoIG1hcCBiYWNrIHRvIHRoZSBvcmlnaW5hbCAudHMgc291cmNlIGZpbGUuXG4gICAqIFRoaXMgd2lsbCBhbGxvdyBlZGl0b3JzIHN1Y2ggYXMgVlMgQ29kZSB0byBnbyB0byB0aGUgb3JpZ2luYWwgLnRzIGZpbGUgd2hlbiB1c2luZyBmZWF0dXJlcyBsaWtlIEdvIHRvIERlZmluaXRpb24uXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNkZWNsYXJhdGlvbk1hcH1cbiAgICovXG4gIHJlYWRvbmx5IGRlY2xhcmF0aW9uTWFwPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG93bmxldmVsaW5nIGlzIFR5cGVTY3JpcHTigJlzIHRlcm0gZm9yIHRyYW5zcGlsaW5nIHRvIGFuIG9sZGVyIHZlcnNpb24gb2YgSmF2YVNjcmlwdC5cbiAgICogVGhpcyBmbGFnIGlzIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBhIG1vcmUgYWNjdXJhdGUgaW1wbGVtZW50YXRpb24gb2YgaG93IG1vZGVybiBKYXZhU2NyaXB0IGl0ZXJhdGVzIHRocm91Z2ggbmV3IGNvbmNlcHRzIGluIG9sZGVyIEphdmFTY3JpcHQgcnVudGltZXMuXG4gICAqXG4gICAqIEVDTUFTY3JpcHQgNiBhZGRlZCBzZXZlcmFsIG5ldyBpdGVyYXRpb24gcHJpbWl0aXZlczogdGhlIGZvciAvIG9mIGxvb3AgKGZvciAoZWwgb2YgYXJyKSksIEFycmF5IHNwcmVhZCAoW2EsIC4uLmJdKSwgYXJndW1lbnQgc3ByZWFkIChmbiguLi5hcmdzKSksIGFuZCBTeW1ib2wuaXRlcmF0b3IuXG4gICAqIGRvd25sZXZlbEl0ZXJhdGlvbiBhbGxvd3MgZm9yIHRoZXNlIGl0ZXJhdGlvbiBwcmltaXRpdmVzIHRvIGJlIHVzZWQgbW9yZSBhY2N1cmF0ZWx5IGluIEVTNSBlbnZpcm9ubWVudHMgaWYgYSBTeW1ib2wuaXRlcmF0b3IgaW1wbGVtZW50YXRpb24gaXMgcHJlc2VudC5cbiAgICovXG4gIHJlYWRvbmx5IGRvd25sZXZlbEl0ZXJhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgYWRkaXRpb25hbCBjb25kaXRpb25zIHRoYXQgc2hvdWxkIHN1Y2NlZWQgd2hlbiBUeXBlU2NyaXB0IHJlc29sdmVzIGZyb20gYW4gYGV4cG9ydHNgIG9yIGBpbXBvcnRzYCBmaWVsZCBvZiBhIGBwYWNrYWdlLmpzb25gLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNjdXN0b21Db25kaXRpb25zXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tQ29uZGl0aW9ucz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBFbWl0IF9faW1wb3J0U3RhciBhbmQgX19pbXBvcnREZWZhdWx0IGhlbHBlcnMgZm9yIHJ1bnRpbWUgYmFiZWxcbiAgICogZWNvc3lzdGVtIGNvbXBhdGliaWxpdHkgYW5kIGVuYWJsZSAtLWFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHMgZm9yXG4gICAqIHR5cGVzeXN0ZW0gY29tcGF0aWJpbGl0eS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVzTW9kdWxlSW50ZXJvcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIGRlY29yYXRvcnMsIHdoaWNoIGlzIGluIHN0YWdlIDIgb2YgdGhlIFRDMzkgc3RhbmRhcmRpemF0aW9uIHByb2Nlc3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbERlY29yYXRvcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBkZWNvcmF0b3JzLCB3aGljaCBpcyBpbiBzdGFnZSAyIG9mIHRoZSBUQzM5IHN0YW5kYXJkaXphdGlvbiBwcm9jZXNzLlxuICAgKiBEZWNvcmF0b3JzIGFyZSBhIGxhbmd1YWdlIGZlYXR1cmUgd2hpY2ggaGFzbuKAmXQgeWV0IGJlZW4gZnVsbHkgcmF0aWZpZWQgaW50byB0aGUgSmF2YVNjcmlwdCBzcGVjaWZpY2F0aW9uLlxuICAgKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIHZlcnNpb24gaW4gVHlwZVNjcmlwdCBtYXkgZGlmZmVyIGZyb20gdGhlIGltcGxlbWVudGF0aW9uIGluIEphdmFTY3JpcHQgd2hlbiBpdCBpdCBkZWNpZGVkIGJ5IFRDMzkuXG4gICAqIFlvdSBjYW4gZmluZCBvdXQgbW9yZSBhYm91dCBkZWNvcmF0b3Igc3VwcG9ydCBpbiBUeXBlU2NyaXB0IGluIHRoZSBoYW5kYm9vay5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9kZWNvcmF0b3JzLmh0bWxcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBlbWl0RGVjb3JhdG9yTWV0YWRhdGE/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXBvcnQgZXJyb3JzIGZvciBtb3N0IFR5cGVTY3JpcHQtc3BlY2lmaWMgc3ludGF4IHRoYXQgaGFzIHJ1bnRpbWUgYmVoYXZpb3IuXG4gICAqIFJlcXVpcmVzIFR5cGVTY3JpcHQgNS44IG9yIGxhdGVyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZy9lcmFzYWJsZVN5bnRheE9ubHkuaHRtbFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGVyYXNhYmxlU3ludGF4T25seT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpc2FsbG93IGluY29uc2lzdGVudGx5LWNhc2VkIHJlZmVyZW5jZXMgdG8gdGhlIHNhbWUgZmlsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlQ29uc2lzdGVudENhc2luZ0luRmlsZU5hbWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2ltcGxpZmllcyBUeXBlU2NyaXB0J3MgaGFuZGxpbmcgb2YgaW1wb3J0L2V4cG9ydCBgdHlwZWAgbW9kaWZpZXJzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyN2ZXJiYXRpbU1vZHVsZVN5bnRheFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHZlcmJhdGltTW9kdWxlU3ludGF4PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhpcyBmbGFnIHdvcmtzIGJlY2F1c2UgeW91IGNhbiB1c2UgYGltcG9ydCB0eXBlYCB0byBleHBsaWNpdGx5IGNyZWF0ZSBhbiBgaW1wb3J0YCBzdGF0ZW1lbnQgd2hpY2ggc2hvdWxkIG5ldmVyIGJlIGVtaXR0ZWQgaW50byBKYXZhU2NyaXB0LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGb3IgVHlwZVNjcmlwdCA1LjArIHVzZSBgdmVyYmF0aW1Nb2R1bGVTeW50YXhgIGluc3RlYWQuXG4gICAqIFBvc2VkIGZvciBkZXByZWNhdGlvbiB1cG9uIFR5cGVTY3JpcHQgNS41LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNpbXBvcnRzTm90VXNlZEFzVmFsdWVzXG4gICAqIEBkZWZhdWx0IFwicmVtb3ZlXCJcbiAgICovXG4gIHJlYWRvbmx5IGltcG9ydHNOb3RVc2VkQXNWYWx1ZXM/OiBUeXBlU2NyaXB0SW1wb3J0c05vdFVzZWRBc1ZhbHVlcztcblxuICAvKipcbiAgICogV2hlbiBzZXQsIGluc3RlYWQgb2Ygd3JpdGluZyBvdXQgYSAuanMubWFwIGZpbGUgdG8gcHJvdmlkZSBzb3VyY2UgbWFwcyxcbiAgICogVHlwZVNjcmlwdCB3aWxsIGVtYmVkIHRoZSBzb3VyY2UgbWFwIGNvbnRlbnQgaW4gdGhlIC5qcyBmaWxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5saW5lU291cmNlTWFwPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQsIFR5cGVTY3JpcHQgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW5hbCBjb250ZW50IG9mIHRoZSAudHMgZmlsZSBhcyBhbiBlbWJlZGRlZFxuICAgKiBzdHJpbmcgaW4gdGhlIHNvdXJjZSBtYXAuIFRoaXMgaXMgb2Z0ZW4gdXNlZnVsIGluIHRoZSBzYW1lIGNhc2VzIGFzIGlubGluZVNvdXJjZU1hcC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5saW5lU291cmNlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgdGhlIGdlbmVyYXRpb24gb2Ygc291cmNlbWFwIGZpbGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZU1hcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGxvY2F0aW9uIHdoZXJlIGEgZGVidWdnZXIgc2hvdWxkIGxvY2F0ZSBUeXBlU2NyaXB0IGZpbGVzXG4gICAqIGluc3RlYWQgb2YgcmVsYXRpdmUgc291cmNlIGxvY2F0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VSb290Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIHRvIGVuc3VyZSB0aGF0IHNlcGFyYXRlIGNvbXBpbGF0aW9uIChzdWNoIGFzXG4gICAqIHdpdGggdHJhbnNwaWxlTW9kdWxlIG9yIEBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXR5cGVzY3JpcHQpIHdvdWxkIGJlIHNhZmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpc29sYXRlZE1vZHVsZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTdXBwb3J0IEpTWCBpbiAudHN4IGZpbGVzOiBcInJlYWN0XCIsIFwicHJlc2VydmVcIiwgXCJyZWFjdC1uYXRpdmVcIiBldGMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkganN4PzogVHlwZVNjcmlwdEpzeE1vZGU7XG5cbiAgLyoqXG4gICAqIERlY2xhcmVzIHRoZSBtb2R1bGUgc3BlY2lmaWVyIHRvIGJlIHVzZWQgZm9yIGltcG9ydGluZyB0aGUganN4IGFuZCBqc3hzIGZhY3RvcnkgZnVuY3Rpb25zIHdoZW4gdXNpbmcganN4LlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGpzeEltcG9ydFNvdXJjZT86IHN0cmluZztcblxuICAvKipcbiAgICogUmVmZXJlbmNlIGZvciB0eXBlIGRlZmluaXRpb25zIC8gbGlicmFyaWVzIHRvIHVzZSAoZWcuIEVTMjAxNiwgRVM1LCBFUzIwMTgpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbIFwiZXMyMDE4XCIgXVxuICAgKi9cbiAgcmVhZG9ubHkgbGliPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoaXMgc2V0dGluZyBjb250cm9scyBob3cgVHlwZVNjcmlwdCBkZXRlcm1pbmVzIHdoZXRoZXIgYSBmaWxlIGlzIGEgW3NjcmlwdCBvciBhIG1vZHVsZV0oaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svbW9kdWxlcy90aGVvcnkuaHRtbCNzY3JpcHRzLWFuZC1tb2R1bGVzLWluLWphdmFzY3JpcHQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImF1dG9cIlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlRGV0ZWN0aW9uPzogVHlwZVNjcmlwdE1vZHVsZURldGVjdGlvbjtcblxuICAvKipcbiAgICogU2V0cyB0aGUgbW9kdWxlIHN5c3RlbSBmb3IgdGhlIHByb2dyYW0uXG4gICAqIFNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9tb2R1bGVzLmh0bWwjYW1iaWVudC1tb2R1bGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIkNvbW1vbkpTXCJcbiAgICovXG4gIHJlYWRvbmx5IG1vZHVsZT86IHN0cmluZztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lIGhvdyBtb2R1bGVzIGdldCByZXNvbHZlZC4gRWl0aGVyIFwiTm9kZVwiIGZvciBOb2RlLmpzL2lvLmpzIHN0eWxlIHJlc29sdXRpb24sIG9yIFwiQ2xhc3NpY1wiLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIm5vZGVcIlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlUmVzb2x1dGlvbj86IFR5cGVTY3JpcHRNb2R1bGVSZXNvbHV0aW9uO1xuXG4gIC8qKlxuICAgKiBEbyBub3QgZW1pdCBvdXRwdXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9FbWl0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT25seSBlbWl0IC5kLnRzIGZpbGVzOyBkbyBub3QgZW1pdCAuanMgZmlsZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbWl0RGVjbGFyYXRpb25Pbmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG8gbm90IGVtaXQgY29tcGlsZXIgb3V0cHV0IGZpbGVzIGxpa2UgSmF2YVNjcmlwdCBzb3VyY2UgY29kZSwgc291cmNlLW1hcHMgb3JcbiAgICogZGVjbGFyYXRpb25zIGlmIGFueSBlcnJvcnMgd2VyZSByZXBvcnRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9FbWl0T25FcnJvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlcG9ydCBlcnJvcnMgZm9yIGZhbGx0aHJvdWdoIGNhc2VzIGluIHN3aXRjaCBzdGF0ZW1lbnRzLiBFbnN1cmVzIHRoYXQgYW55IG5vbi1lbXB0eVxuICAgKiBjYXNlIGluc2lkZSBhIHN3aXRjaCBzdGF0ZW1lbnQgaW5jbHVkZXMgZWl0aGVyIGJyZWFrIG9yIHJldHVybi4gVGhpcyBtZWFucyB5b3Ugd29u4oCZdFxuICAgKiBhY2NpZGVudGFsbHkgc2hpcCBhIGNhc2UgZmFsbHRocm91Z2ggYnVnLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBub0ZhbGx0aHJvdWdoQ2FzZXNJblN3aXRjaD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluIHNvbWUgY2FzZXMgd2hlcmUgbm8gdHlwZSBhbm5vdGF0aW9ucyBhcmUgcHJlc2VudCwgVHlwZVNjcmlwdCB3aWxsIGZhbGwgYmFjayB0byBhXG4gICAqIHR5cGUgb2YgYW55IGZvciBhIHZhcmlhYmxlIHdoZW4gaXQgY2Fubm90IGluZmVyIHRoZSB0eXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBub0ltcGxpY2l0QW55PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVXNpbmcgYG5vSW1wbGljaXRPdmVycmlkZWAsIHlvdSBjYW4gZW5zdXJlIHRoYXQgc3ViLWNsYXNzZXMgbmV2ZXIgZ28gb3V0IG9mIHN5bmMgYXNcbiAgICogdGhleSBhcmUgcmVxdWlyZWQgdG8gZXhwbGljaXRseSBkZWNsYXJlIHRoYXQgdGhleSBhcmUgb3ZlcnJpZGluZyBhIG1lbWJlciB1c2luZyB0aGVcbiAgICogYG92ZXJyaWRlYCBrZXl3b3JkLiBUaGlzIGFsc28gaW1wcm92ZXMgcmVhZGFiaWxpdHkgb2YgdGhlIHByb2dyYW1tZXIncyBpbnRlbnQuXG4gICAqXG4gICAqIEF2YWlsYWJsZSB3aXRoIFR5cGVTY3JpcHQgNC4zIGFuZCBuZXdlci5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG5vSW1wbGljaXRPdmVycmlkZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgVHlwZVNjcmlwdCB3aWxsIGNoZWNrIGFsbCBjb2RlIHBhdGhzIGluIGEgZnVuY3Rpb24gdG8gZW5zdXJlIHRoZXlcbiAgICogcmV0dXJuIGEgdmFsdWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG5vSW1wbGljaXRSZXR1cm5zPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFJhaXNlIGVycm9yIG9uIOKAmHRoaXPigJkgZXhwcmVzc2lvbnMgd2l0aCBhbiBpbXBsaWVkIOKAmGFueeKAmSB0eXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBub0ltcGxpY2l0VGhpcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJhaXNlIGVycm9yIG9uIHVzZSBvZiB0aGUgZG90IHN5bnRheCB0byBhY2Nlc3MgZmllbGRzIHdoaWNoIGFyZSBub3QgZGVmaW5lZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9Qcm9wZXJ0eUFjY2Vzc0Zyb21JbmRleFNpZ25hdHVyZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJhaXNlIGVycm9yIHdoZW4gYWNjZXNzaW5nIGluZGV4ZXMgb24gb2JqZWN0cyB3aXRoIHVua25vd24ga2V5cyBkZWZpbmVkIGluIGluZGV4IHNpZ25hdHVyZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG5vVW5jaGVja2VkSW5kZXhlZEFjY2Vzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlcG9ydCBlcnJvcnMgb24gdW51c2VkIGxvY2FsIHZhcmlhYmxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9VbnVzZWRMb2NhbHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXBvcnQgZXJyb3JzIG9uIHVudXNlZCBwYXJhbWV0ZXJzIGluIGZ1bmN0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9VbnVzZWRQYXJhbWV0ZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUHJlc2VydmUgYGNvbnN0IGVudW1gIGRlY2xhcmF0aW9ucyBpbiBnZW5lcmF0ZWQgY29kZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcvcHJlc2VydmVDb25zdEVudW1zLmh0bWxcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBwcmVzZXJ2ZUNvbnN0RW51bXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgaW1wb3J0aW5nIG1vZHVsZXMgd2l0aCBhIOKAmC5qc29u4oCZIGV4dGVuc2lvbiwgd2hpY2ggaXMgYSBjb21tb24gcHJhY3RpY2VcbiAgICogaW4gbm9kZSBwcm9qZWN0cy4gVGhpcyBpbmNsdWRlcyBnZW5lcmF0aW5nIGEgdHlwZSBmb3IgdGhlIGltcG9ydCBiYXNlZCBvbiB0aGUgc3RhdGljIEpTT04gc2hhcGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdmVKc29uTW9kdWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2tpcCB0eXBlIGNoZWNraW5nIG9mIGFsbCBkZWNsYXJhdGlvbiBmaWxlcyAoKi5kLnRzKS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNraXBMaWJDaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzdHJpY3QgZmxhZyBlbmFibGVzIGEgd2lkZSByYW5nZSBvZiB0eXBlIGNoZWNraW5nIGJlaGF2aW9yIHRoYXQgcmVzdWx0cyBpbiBzdHJvbmdlciBndWFyYW50ZWVzXG4gICAqIG9mIHByb2dyYW0gY29ycmVjdG5lc3MuIFR1cm5pbmcgdGhpcyBvbiBpcyBlcXVpdmFsZW50IHRvIGVuYWJsaW5nIGFsbCBvZiB0aGUgc3RyaWN0IG1vZGUgZmFtaWx5XG4gICAqIG9wdGlvbnMsIHdoaWNoIGFyZSBvdXRsaW5lZCBiZWxvdy4gWW91IGNhbiB0aGVuIHR1cm4gb2ZmIGluZGl2aWR1YWwgc3RyaWN0IG1vZGUgZmFtaWx5IGNoZWNrcyBhc1xuICAgKiBuZWVkZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc3RyaWN0TnVsbENoZWNrcyBpcyBmYWxzZSwgbnVsbCBhbmQgdW5kZWZpbmVkIGFyZSBlZmZlY3RpdmVseSBpZ25vcmVkIGJ5IHRoZSBsYW5ndWFnZS5cbiAgICogVGhpcyBjYW4gbGVhZCB0byB1bmV4cGVjdGVkIGVycm9ycyBhdCBydW50aW1lLlxuICAgKiBXaGVuIHN0cmljdE51bGxDaGVja3MgaXMgdHJ1ZSwgbnVsbCBhbmQgdW5kZWZpbmVkIGhhdmUgdGhlaXIgb3duIGRpc3RpbmN0IHR5cGVzIGFuZCB5b3XigJlsbFxuICAgKiBnZXQgYSB0eXBlIGVycm9yIGlmIHlvdSB0cnkgdG8gdXNlIHRoZW0gd2hlcmUgYSBjb25jcmV0ZSB2YWx1ZSBpcyBleHBlY3RlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RyaWN0TnVsbENoZWNrcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIFR5cGVTY3JpcHQgd2lsbCByYWlzZSBhbiBlcnJvciB3aGVuIGEgY2xhc3MgcHJvcGVydHkgd2FzIGRlY2xhcmVkIGJ1dFxuICAgKiBub3Qgc2V0IGluIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RyaWN0UHJvcGVydHlJbml0aWFsaXphdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERvIG5vdCBlbWl0IGRlY2xhcmF0aW9ucyBmb3IgY29kZSB0aGF0IGhhcyBhbiBgQGludGVybmFsYCBhbm5vdGF0aW9uIGluIGl04oCZcyBKU0RvYyBjb21tZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzdHJpcEludGVybmFsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRm9yY2VzIFR5cGVTY3JpcHQgdG8gY29uc3VsdCB0aGUgYGV4cG9ydHNgIGZpZWxkIG9mIGBwYWNrYWdlLmpzb25gIGZpbGVzIGlmIGl0IGV2ZXIgcmVhZHMgZnJvbSBhIHBhY2thZ2UgaW4gYG5vZGVfbW9kdWxlc2AuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdmVQYWNrYWdlSnNvbkV4cG9ydHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBGb3JjZXMgVHlwZVNjcmlwdCB0byBjb25zdWx0IHRoZSBgaW1wb3J0c2AgZmllbGQgb2YgYHBhY2thZ2UuanNvbmAgd2hlbiBwZXJmb3JtaW5nIGEgbG9va3VwIHRoYXQgYmVnaW5zIHdpdGggYCNgIGZyb20gYSBmaWxlIHRoYXQgaGFzIGEgYHBhY2thZ2UuanNvbmAgYXMgYW4gYW5jZXN0b3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb2x2ZVBhY2thZ2VKc29uSW1wb3J0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE1vZGVybiBicm93c2VycyBzdXBwb3J0IGFsbCBFUzYgZmVhdHVyZXMsIHNvIEVTNiBpcyBhIGdvb2QgY2hvaWNlLiBZb3UgbWlnaHQgY2hvb3NlIHRvIHNldFxuICAgKiBhIGxvd2VyIHRhcmdldCBpZiB5b3VyIGNvZGUgaXMgZGVwbG95ZWQgdG8gb2xkZXIgZW52aXJvbm1lbnRzLCBvciBhIGhpZ2hlciB0YXJnZXQgaWYgeW91clxuICAgKiBjb2RlIGlzIGd1YXJhbnRlZWQgdG8gcnVuIGluIG5ld2VyIGVudmlyb25tZW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJFUzIwMThcIlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPdXRwdXQgZGlyZWN0b3J5IGZvciB0aGUgY29tcGlsZWQgZmlsZXMuXG4gICAqL1xuICByZWFkb25seSBvdXREaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgaW5wdXQgZmlsZXMuXG4gICAqXG4gICAqIE9ubHkgdXNlIHRvIGNvbnRyb2wgdGhlIG91dHB1dCBkaXJlY3Rvcnkgc3RydWN0dXJlIHdpdGggYG91dERpcmAuXG4gICAqL1xuICByZWFkb25seSByb290RGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbGxvdyBkZWZhdWx0IGltcG9ydHMgZnJvbSBtb2R1bGVzIHdpdGggbm8gZGVmYXVsdCBleHBvcnQuIFRoaXMgZG9lcyBub3QgYWZmZWN0IGNvZGUgZW1pdCwganVzdCB0eXBlY2hlY2tpbmcuXG4gICAqL1xuICByZWFkb25seSBhbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoYXQgb3B0aW9uYWwgcHJvcGVydHkgdHlwZXMgc2hvdWxkIGJlIGludGVycHJldGVkIGV4YWN0bHkgYXMgd3JpdHRlbiwgbWVhbmluZyB0aGF0IGB8IHVuZGVmaW5lZGAgaXMgbm90IGFkZGVkIHRvIHRoZSB0eXBlXG4gICAqIEF2YWlsYWJsZSB3aXRoIFR5cGVTY3JpcHQgNC40IGFuZCBuZXdlci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGV4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSB0eXBlIG9mIHRoZSB2YXJpYWJsZSBpbiBhIGNhdGNoIGNsYXVzZSBmcm9tIGFueSB0byB1bmtub3duXG4gICAqIEF2YWlsYWJsZSB3aXRoIFR5cGVTY3JpcHQgNC40IGFuZCBuZXdlci5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlVW5rbm93bkluQ2F0Y2hWYXJpYWJsZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBMZXRzIHlvdSBzZXQgYSBiYXNlIGRpcmVjdG9yeSB0byByZXNvbHZlIG5vbi1hYnNvbHV0ZSBtb2R1bGUgbmFtZXMuXG4gICAqXG4gICAqIFlvdSBjYW4gZGVmaW5lIGEgcm9vdCBmb2xkZXIgd2hlcmUgeW91IGNhbiBkbyBhYnNvbHV0ZSBmaWxlIHJlc29sdXRpb24uXG4gICAqL1xuICByZWFkb25seSBiYXNlVXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHNlcmllcyBvZiBlbnRyaWVzIHdoaWNoIHJlLW1hcCBpbXBvcnRzIHRvIGxvb2t1cCBsb2NhdGlvbnMgcmVsYXRpdmUgdG8gdGhlIGJhc2VVcmwsIHRoZXJlIGlzIGEgbGFyZ2VyIGNvdmVyYWdlIG9mIHBhdGhzIGluIHRoZSBoYW5kYm9vay5cbiAgICpcbiAgICogcGF0aHMgbGV0cyB5b3UgZGVjbGFyZSBob3cgVHlwZVNjcmlwdCBzaG91bGQgcmVzb2x2ZSBhbiBpbXBvcnQgaW4geW91ciByZXF1aXJlL2ltcG9ydHMuXG4gICAqL1xuICByZWFkb25seSBwYXRocz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfTtcblxuICAvKipcbiAgICogSWYgdHlwZVJvb3RzIGlzIHNwZWNpZmllZCwgb25seSBwYWNrYWdlcyB1bmRlciB0eXBlUm9vdHMgd2lsbCBiZSBpbmNsdWRlZFxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZy8jdHlwZVJvb3RzXG4gICAqL1xuICByZWFkb25seSB0eXBlUm9vdHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgdHlwZXMgaXMgc3BlY2lmaWVkLCBvbmx5IHBhY2thZ2VzIGxpc3RlZCB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBnbG9iYWwgc2NvcGVcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjdHlwZXNcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRlbGxzIFR5cGVTY3JpcHQgdG8gc2F2ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJvamVjdCBncmFwaCBmcm9tIHRoZSBsYXN0IGNvbXBpbGF0aW9uIHRvIGZpbGVzIHN0b3JlZCBvbiBkaXNrLlxuICAgKiBUaGlzIGNyZWF0ZXMgYSBzZXJpZXMgb2YgLnRzYnVpbGRpbmZvIGZpbGVzIGluIHRoZSBzYW1lIGZvbGRlciBhcyB5b3VyIGNvbXBpbGF0aW9uIG91dHB1dC5cbiAgICogVGhleSBhcmUgbm90IHVzZWQgYnkgeW91ciBKYXZhU2NyaXB0IGF0IHJ1bnRpbWUgYW5kIGNhbiBiZSBzYWZlbHkgZGVsZXRlZC5cbiAgICogWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgdGhlIGZsYWcgaW4gdGhlIDMuNCByZWxlYXNlIG5vdGVzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL3JlbGVhc2Utbm90ZXMvdHlwZXNjcmlwdC0zLTQuaHRtbCNmYXN0ZXItc3Vic2VxdWVudC1idWlsZHMtd2l0aC10aGUtLS1pbmNyZW1lbnRhbC1mbGFnXG4gICAqXG4gICAqIFRvIGNvbnRyb2wgd2hpY2ggZm9sZGVycyB5b3Ugd2FudCB0byB0aGUgZmlsZXMgdG8gYmUgYnVpbHQgdG8sIHVzZSB0aGUgY29uZmlnIG9wdGlvbiB0c0J1aWxkSW5mb0ZpbGUuXG4gICAqL1xuICByZWFkb25seSBpbmNyZW1lbnRhbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoaXMgc2V0dGluZyBsZXRzIHlvdSBzcGVjaWZ5IGEgZmlsZSBmb3Igc3RvcmluZyBpbmNyZW1lbnRhbCBjb21waWxhdGlvbiBpbmZvcm1hdGlvbiBhcyBhIHBhcnQgb2YgY29tcG9zaXRlIHByb2plY3RzIHdoaWNoIGVuYWJsZXMgZmFzdGVyIGJ1aWxkaW5nIG9mIGxhcmdlciBUeXBlU2NyaXB0IGNvZGViYXNlcy5cbiAgICogWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgY29tcG9zaXRlIHByb2plY3RzIGluIHRoZSBoYW5kYm9vay5cbiAgICovXG4gIHJlYWRvbmx5IHRzQnVpbGRJbmZvRmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWxsb3cgVW51c2VkIExhYmVsc1xuICAgKlxuICAgKiBXaGVuOlxuICAgKlxuICAgKiAtIGB1bmRlZmluZWRgIChkZWZhdWx0KSBwcm92aWRlIHN1Z2dlc3Rpb25zIGFzIHdhcm5pbmdzIHRvIGVkaXRvcnNcbiAgICogLSBgdHJ1ZWAgdW51c2VkIGxhYmVscyBhcmUgaWdub3JlZFxuICAgKiAtIGBmYWxzZWAgcmFpc2VzIGNvbXBpbGVyIGVycm9ycyBhYm91dCB1bnVzZWQgbGFiZWxzXG4gICAqXG4gICAqIExhYmVscyBhcmUgdmVyeSByYXJlIGluIEphdmFTY3JpcHQgYW5kIHR5cGljYWxseSBpbmRpY2F0ZSBhbiBhdHRlbXB0IHRvIHdyaXRlIGFuIG9iamVjdCBsaXRlcmFsOlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBmdW5jdGlvbiB2ZXJpZnlBZ2UoYWdlOiBudW1iZXIpIHtcbiAgICogICAvLyBGb3Jnb3QgJ3JldHVybicgc3RhdGVtZW50XG4gICAqICAgaWYgKGFnZSA+IDE4KSB7XG4gICAqICAgICB2ZXJpZmllZDogdHJ1ZTtcbiAgICogLy8gIF5eXl5eXl5eIFVudXNlZCBsYWJlbC5cbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2FsbG93VW51c2VkTGFiZWxzXG4gICAqL1xuICByZWFkb25seSBhbGxvd1VudXNlZExhYmVscz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFsbG93IFVucmVhY2hhYmxlIENvZGVcbiAgICpcbiAgICogV2hlbjpcbiAgICpcbiAgICogLSBgdW5kZWZpbmVkYCAoZGVmYXVsdCkgcHJvdmlkZSBzdWdnZXN0aW9ucyBhcyB3YXJuaW5ncyB0byBlZGl0b3JzXG4gICAqIC0gYHRydWVgIHVucmVhY2hhYmxlIGNvZGUgaXMgaWdub3JlZFxuICAgKiAtIGBmYWxzZWAgcmFpc2VzIGNvbXBpbGVyIGVycm9ycyBhYm91dCB1bnJlYWNoYWJsZSBjb2RlXG4gICAqXG4gICAqIFRoZXNlIHdhcm5pbmdzIGFyZSBvbmx5IGFib3V0IGNvZGUgd2hpY2ggaXMgcHJvdmFibHkgdW5yZWFjaGFibGUgZHVlIHRvIHRoZSB1c2Ugb2YgSmF2YVNjcmlwdCBzeW50YXguXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2FsbG93VW5yZWFjaGFibGVDb2RlXG4gICAqL1xuICByZWFkb25seSBhbGxvd1VucmVhY2hhYmxlQ29kZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENoZWNrIEpTXG4gICAqXG4gICAqIFdvcmtzIGluIHRhbmRlbSB3aXRoIFthbGxvd0pzXShodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjYWxsb3dKcykuIFdoZW4gY2hlY2tKcyBpcyBlbmFibGVkIHRoZW5cbiAgICogZXJyb3JzIGFyZSByZXBvcnRlZCBpbiBKYXZhU2NyaXB0IGZpbGVzLiBUaGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIGluY2x1ZGluZyAvLyBAdHMtY2hlY2sgYXQgdGhlIHRvcCBvZiBhbGxcbiAgICogSmF2YVNjcmlwdCBmaWxlcyB3aGljaCBhcmUgaW5jbHVkZWQgaW4geW91ciBwcm9qZWN0LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNjaGVja0pzXG4gICAqL1xuICByZWFkb25seSBjaGVja0pzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb250YWluZXIgZm9yIGBUeXBlc2NyaXB0Q29uZmlnYCBgdHNjb25maWcuanNvbmAgYmFzZSBjb25maWd1cmF0aW9uKHMpLlxuICogRXh0ZW5kaW5nIGZyb20gbW9yZSB0aGFuIG9uZSBiYXNlIGNvbmZpZyBmaWxlIHJlcXVpcmVzIFR5cGVTY3JpcHQgNS4wKy5cbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVzY3JpcHRDb25maWdFeHRlbmRzIHtcbiAgLyoqXG4gICAqIEZhY3RvcnkgZm9yIGNyZWF0aW9uIGZyb20gYXJyYXkgb2YgZmlsZSBwYXRocy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVHlwZVNjcmlwdCA1LjArIGlzIHJlcXVpcmVkIHRvIHNwZWNpZnkgbW9yZSB0aGFuIG9uZSB2YWx1ZSBpbiBgcGF0aHNgLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aHMgQWJzb2x1dGUgb3IgcmVsYXRpdmUgcGF0aHMgdG8gYmFzZSBgdHNjb25maWcuanNvbmAgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21QYXRocyhwYXRoczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gbmV3IFR5cGVzY3JpcHRDb25maWdFeHRlbmRzKHBhdGhzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWN0b3J5IGZvciBjcmVhdGlvbiBmcm9tIGFycmF5IG9mIG90aGVyIGBUeXBlc2NyaXB0Q29uZmlnYCBpbnN0YW5jZXMuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFR5cGVTY3JpcHQgNS4wKyBpcyByZXF1aXJlZCB0byBzcGVjaWZ5IG1vcmUgdGhhbiBvbiB2YWx1ZSBpbiBgY29uZmlnc2AuXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWdzIEJhc2UgYFR5cGVzY3JpcHRDb25maWdgIGluc3RhbmNlcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVR5cGVzY3JpcHRDb25maWdzKGNvbmZpZ3M6IFR5cGVzY3JpcHRDb25maWdbXSkge1xuICAgIGNvbnN0IHBhdGhzID0gY29uZmlncy5tYXAoKGNvbmZpZykgPT4gY29uZmlnLmZpbGUuYWJzb2x1dGVQYXRoKTtcbiAgICByZXR1cm4gVHlwZXNjcmlwdENvbmZpZ0V4dGVuZHMuZnJvbVBhdGhzKHBhdGhzKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgYmFzZXM6IHN0cmluZ1tdO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoYmFzZXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5iYXNlcyA9IGJhc2VzO1xuICB9XG5cbiAgcHVibGljIHRvSlNPTigpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFR5cGVzY3JpcHRDb25maWcgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwcml2YXRlIF9leHRlbmRzOiBUeXBlc2NyaXB0Q29uZmlnRXh0ZW5kcztcbiAgcHVibGljIHJlYWRvbmx5IGNvbXBpbGVyT3B0aW9ucz86IFR5cGVTY3JpcHRDb21waWxlck9wdGlvbnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5jbHVkZVNldDogU2V0PHN0cmluZz47XG4gIHByaXZhdGUgcmVhZG9ubHkgZXhjbHVkZVNldDogU2V0PHN0cmluZz47XG4gIHB1YmxpYyByZWFkb25seSBmaWxlTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZTogSnNvbkZpbGU7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogVHlwZXNjcmlwdENvbmZpZ09wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcbiAgICBjb25zdCBmaWxlTmFtZSA9IG9wdGlvbnMuZmlsZU5hbWUgPz8gXCJ0c2NvbmZpZy5qc29uXCI7XG5cbiAgICBpZiAoIW9wdGlvbnMuZXh0ZW5kcyAmJiAhb3B0aW9ucy5jb21waWxlck9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJUeXBlc2NyaXB0Q29uZmlnOiBNdXN0IHByb3ZpZGUgZWl0aGVyIGBleHRlbmRzYCBvciBgY29tcGlsZXJPcHRpb25zYCAob3IgYm90aCkuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuX2V4dGVuZHMgPSBvcHRpb25zLmV4dGVuZHMgPz8gVHlwZXNjcmlwdENvbmZpZ0V4dGVuZHMuZnJvbVBhdGhzKFtdKTtcbiAgICB0aGlzLmluY2x1ZGVTZXQgPSBvcHRpb25zLmluY2x1ZGVcbiAgICAgID8gbmV3IFNldChvcHRpb25zLmluY2x1ZGUpXG4gICAgICA6IG5ldyBTZXQoW1wiKiovKi50c1wiXSk7XG4gICAgdGhpcy5leGNsdWRlU2V0ID0gb3B0aW9ucy5leGNsdWRlXG4gICAgICA/IG5ldyBTZXQob3B0aW9ucy5leGNsdWRlKVxuICAgICAgOiBuZXcgU2V0KFtcIm5vZGVfbW9kdWxlc1wiXSk7XG4gICAgdGhpcy5maWxlTmFtZSA9IGZpbGVOYW1lO1xuXG4gICAgdGhpcy5jb21waWxlck9wdGlvbnMgPSBvcHRpb25zLmNvbXBpbGVyT3B0aW9ucztcblxuICAgIHRoaXMuZmlsZSA9IG5ldyBKc29uRmlsZShwcm9qZWN0LCBmaWxlTmFtZSwge1xuICAgICAgYWxsb3dDb21tZW50czogdHJ1ZSxcbiAgICAgIG9iajoge1xuICAgICAgICBleHRlbmRzOiAoKSA9PiB0aGlzLnJlbmRlckV4dGVuZHMoKSxcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB0aGlzLmNvbXBpbGVyT3B0aW9ucyxcbiAgICAgICAgaW5jbHVkZTogKCkgPT4gdGhpcy5pbmNsdWRlLFxuICAgICAgICBleGNsdWRlOiAoKSA9PiB0aGlzLmV4Y2x1ZGUsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKHByb2plY3QgaW5zdGFuY2VvZiBOb2RlUHJvamVjdCkge1xuICAgICAgcHJvamVjdC5ucG1pZ25vcmU/LmV4Y2x1ZGUoYC8ke2ZpbGVOYW1lfWApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5jbHVkZSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmluY2x1ZGVTZXRdO1xuICB9XG5cbiAgcHVibGljIGdldCBleGNsdWRlKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuZXhjbHVkZVNldF07XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIGFwcHJvcHJpYXRlIHZhbHVlIGZvciBgZXh0ZW5kc2AgZmllbGQuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHJlbmRlckV4dGVuZHMoKTogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLmV4dGVuZHMubGVuZ3RoIDw9IDEpIHtcbiAgICAgIC8vIHJlbmRlciBzdHJpbmcgdmFsdWUgd2hlbiBvbmx5IG9uZSBleHRlbnNpb24gKFRTPDUuMCk7XG4gICAgICAvLyBvbWl0IGlmIG5vIGV4dGVuc2lvbnMuXG4gICAgICByZXR1cm4gdGhpcy5leHRlbmRzWzBdO1xuICAgIH1cbiAgICAvLyByZW5kZXIgbWFueSBleHRlbnNpb25zIGFzIGFycmF5IChUUz49NS4wKVxuICAgIHJldHVybiB0aGlzLmV4dGVuZHM7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSB2YWxpZCBUeXBlU2NyaXB0IGV4dGVuZHMgcGF0aHMgcmVsYXRpdmUgdG8gdGhpcyBjb25maWcuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoaXMgd2lsbCBvbmx5IHJlc29sdmUgdGhlIHJlbGF0aXZlIHBhdGggZnJvbSB0aGlzIGNvbmZpZyB0byBhbm90aGVyIGdpdmVuXG4gICAqIGFuIGFic29sdXRlIHBhdGggYXMgaW5wdXQuIEFueSBub24tYWJzb2x1dGUgcGF0aCBvciBvdGhlciBzdHJpbmcgd2lsbCBiZSByZXR1cm5lZCBhcyBpcy5cbiAgICogVGhpcyBpcyB0byBwcmVzZXJ2ZSBtYW51YWxseSBzcGVjaWZpZWQgcmVsYXRpdmUgcGF0aHMgYXMgd2VsbCBhcyBucG0gaW1wb3J0IHBhdGhzLlxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnUGF0aCBQYXRoIHRvIHJlc29sdmUgYWdhaW5zdC5cbiAgICovXG4gIHB1YmxpYyByZXNvbHZlRXh0ZW5kc1BhdGgoY29uZmlnUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBpZiBub3QgYWJzb2x1dGUgYXNzdW1lIHVzZXItZGVmaW5lZCBwYXRoIChvciBucG0gcGFja2FnZSkuXG4gICAgaWYgKCFwYXRoLmlzQWJzb2x1dGUoY29uZmlnUGF0aCkpIHJldHVybiBjb25maWdQYXRoO1xuICAgIGNvbnN0IHJlbGF0aXZlQ29uZmlnID0gcGF0aC5yZWxhdGl2ZShcbiAgICAgIHBhdGguZGlybmFtZSh0aGlzLmZpbGUuYWJzb2x1dGVQYXRoKSxcbiAgICAgIGNvbmZpZ1BhdGgsXG4gICAgKTtcbiAgICAvLyBlbnN1cmUgaW1tZWRpYXRlIHNpYmxpbmcgZmlsZXMgYXJlIHByZWZpeGVkIHdpdGggJy4vJ1xuICAgIC8vIHR5cGVzY3JpcHQgZmlndXJlcyB0aGlzIG91dCwgYnV0IHNvbWUgdG9vbHMgc2VlbWluZ2x5IGJyZWFrIHdpdGhvdXQgaXQgKGkuZSwgZXNsaW50KS5cbiAgICBjb25zdCB7IGRpciwgLi4ucGF0aFBhcnRzIH0gPSBwYXRoLnBhcnNlKHJlbGF0aXZlQ29uZmlnKTtcbiAgICBjb25zdCBjb25maWdEaXIgPSBkaXJcbiAgICAgID8gcGF0aC5mb3JtYXQoeyBkaXI6IGRpci5zdGFydHNXaXRoKFwiLi5cIikgPyBcIlwiIDogXCIuXCIsIGJhc2U6IGRpciB9KVxuICAgICAgOiBcIi5cIjtcblxuICAgIGNvbnN0IGV4dGVuZHNQYXRoID0gcGF0aC5mb3JtYXQoeyAuLi5wYXRoUGFydHMsIGRpcjogY29uZmlnRGlyIH0pO1xuXG4gICAgcmV0dXJuIG5vcm1hbGl6ZVBlcnNpc3RlZFBhdGgoZXh0ZW5kc1BhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHVzYWdlIG9mIGBleHRlbmRzYCBhZ2FpbnN0IGN1cnJlbnQgVHlwZVNjcmlwdCB2ZXJzaW9uLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUV4dGVuZHMoKSB7XG4gICAgY29uc3QgcHJvamVjdCA9IHRoaXMucHJvamVjdDtcbiAgICBjb25zdCBoYXNPbmVPck5vbmVFeHRlbmRzID0gdGhpcy5leHRlbmRzLmxlbmd0aCA8PSAxO1xuICAgIGNvbnN0IGlzTm9kZVByb2plY3QgPSBwcm9qZWN0IGluc3RhbmNlb2YgTm9kZVByb2plY3Q7XG4gICAgaWYgKGhhc09uZU9yTm9uZUV4dGVuZHMgfHwgIWlzTm9kZVByb2plY3QpIHtcbiAgICAgIC8vIGFsd2F5cyBhY2NlcHQgbm8gZXh0ZW5kcyBvciBzaW5ndWxhciBleHRlbmRzLlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0c1ZlcnNpb24gPSBzZW12ZXIuY29lcmNlKFxuICAgICAgcHJvamVjdC5wYWNrYWdlLnRyeVJlc29sdmVEZXBlbmRlbmN5VmVyc2lvbihcInR5cGVzY3JpcHRcIiksXG4gICAgICB7IGxvb3NlOiB0cnVlIH0sXG4gICAgKTtcbiAgICBpZiAodHNWZXJzaW9uICYmIHRzVmVyc2lvbi5tYWpvciA8IDUpIHtcbiAgICAgIHRoaXMucHJvamVjdC5sb2dnZXIud2FybihcbiAgICAgICAgXCJUeXBlU2NyaXB0IDwgNS4wLjAgY2FuIG9ubHkgZXh0ZW5kIGZyb20gYSBzaW5nbGUgYmFzZSBjb25maWcuXCIsXG4gICAgICAgIGBUeXBlU2NyaXB0IFZlcnNpb246ICR7dHNWZXJzaW9uLmZvcm1hdCgpfWAsXG4gICAgICAgIGBGaWxlOiAke3RoaXMuZmlsZS5hYnNvbHV0ZVBhdGh9YCxcbiAgICAgICAgYEV4dGVuZHM6ICR7dGhpcy5leHRlbmRzfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBcnJheSBvZiBiYXNlIGB0c2NvbmZpZy5qc29uYCBwYXRocy5cbiAgICogQW55IGFic29sdXRlIHBhdGhzIGFyZSByZXNvbHZlZCByZWxhdGl2ZSB0byB0aGlzIGluc3RhbmNlLFxuICAgKiB3aGlsZSBhbnkgcmVsYXRpdmUgcGF0aHMgYXJlIHVzZWQgYXMgaXMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGV4dGVuZHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9leHRlbmRzXG4gICAgICAudG9KU09OKClcbiAgICAgIC5tYXAoKHZhbHVlKSA9PiB0aGlzLnJlc29sdmVFeHRlbmRzUGF0aCh2YWx1ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dGVuZCBmcm9tIGJhc2UgYFR5cGVzY3JpcHRDb25maWdgIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUeXBlU2NyaXB0IDUuMCsgaXMgcmVxdWlyZWQgdG8gZXh0ZW5kIGZyb20gbW9yZSB0aGFuIG9uZSBiYXNlIGBUeXBlc2NyaXB0Q29uZmlnYC5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIEJhc2UgYFR5cGVzY3JpcHRDb25maWdgIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGFkZEV4dGVuZHModmFsdWU6IFR5cGVzY3JpcHRDb25maWcpIHtcbiAgICB0aGlzLl9leHRlbmRzID0gVHlwZXNjcmlwdENvbmZpZ0V4dGVuZHMuZnJvbVBhdGhzKFtcbiAgICAgIC4uLnRoaXMuX2V4dGVuZHMudG9KU09OKCksXG4gICAgICB2YWx1ZS5maWxlLmFic29sdXRlUGF0aCxcbiAgICBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gaW5jbHVkZSBwYXR0ZXJuIHRvIHRoZSBgaW5jbHVkZWAgYXJyYXkgb2YgdGhlIFRTQ29uZmlnLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNpbmNsdWRlXG4gICAqXG4gICAqIEBwYXJhbSBwYXR0ZXJuIFRoZSBwYXR0ZXJuIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGRJbmNsdWRlKHBhdHRlcm46IHN0cmluZykge1xuICAgIHRoaXMuaW5jbHVkZS5wdXNoKHBhdHRlcm4pO1xuICAgIHRoaXMuaW5jbHVkZVNldC5hZGQocGF0dGVybik7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGV4Y2x1ZGUgcGF0dGVybiB0byB0aGUgYGV4Y2x1ZGVgIGFycmF5IG9mIHRoZSBUU0NvbmZpZy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjZXhjbHVkZVxuICAgKlxuICAgKiBAcGFyYW0gcGF0dGVybiBUaGUgcGF0dGVybiB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWRkRXhjbHVkZShwYXR0ZXJuOiBzdHJpbmcpIHtcbiAgICB0aGlzLmV4Y2x1ZGUucHVzaChwYXR0ZXJuKTtcbiAgICB0aGlzLmV4Y2x1ZGVTZXQuYWRkKHBhdHRlcm4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbiBpbmNsdWRlIHBhdHRlcm4gZnJvbSB0aGUgYGluY2x1ZGVgIGFycmF5IG9mIHRoZSBUU0NvbmZpZy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjaW5jbHVkZVxuICAgKlxuICAgKiBAcGFyYW0gcGF0dGVybiBUaGUgcGF0dGVybiB0byByZW1vdmUuXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlSW5jbHVkZShwYXR0ZXJuOiBzdHJpbmcpIHtcbiAgICB0aGlzLmluY2x1ZGVTZXQuZGVsZXRlKHBhdHRlcm4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbiBleGNsdWRlIHBhdHRlcm4gZnJvbSB0aGUgYGV4Y2x1ZGVgIGFycmF5IG9mIHRoZSBUU0NvbmZpZy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjZXhjbHVkZVxuICAgKlxuICAgKiBAcGFyYW0gcGF0dGVybiBUaGUgcGF0dGVybiB0byByZW1vdmUuXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlRXhjbHVkZShwYXR0ZXJuOiBzdHJpbmcpIHtcbiAgICB0aGlzLmV4Y2x1ZGVTZXQuZGVsZXRlKHBhdHRlcm4pO1xuICB9XG5cbiAgcHJlU3ludGhlc2l6ZSgpIHtcbiAgICBzdXBlci5wcmVTeW50aGVzaXplKCk7XG4gICAgdGhpcy52YWxpZGF0ZUV4dGVuZHMoKTtcbiAgfVxufVxuIl19
374
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YXNjcmlwdC90eXBlc2NyaXB0LWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTZCO0FBQzdCLCtDQUFpQztBQUNqQyx3QkFBZ0M7QUFDaEMsNENBQXlDO0FBQ3pDLGtDQUFtQztBQUVuQyxrQ0FBaUQ7QUF1Q2pEOzs7O0dBSUc7QUFDSCxJQUFZLDBCQTZDWDtBQTdDRCxXQUFZLDBCQUEwQjtJQUNwQzs7OztPQUlHO0lBQ0gsaURBQW1CLENBQUE7SUFFbkI7Ozs7T0FJRztJQUNILDJDQUFhLENBQUE7SUFFYjs7Ozs7OztPQU9HO0lBQ0gsK0NBQWlCLENBQUE7SUFFakI7Ozs7T0FJRztJQUNILCtDQUFpQixDQUFBO0lBRWpCOzs7O09BSUc7SUFDSCxvREFBc0IsQ0FBQTtJQUV0Qjs7OztPQUlHO0lBQ0gsaURBQW1CLENBQUE7QUFDckIsQ0FBQyxFQTdDVywwQkFBMEIsMENBQTFCLDBCQUEwQixRQTZDckM7QUFFRDs7OztHQUlHO0FBQ0gsSUFBWSx5QkFxQlg7QUFyQkQsV0FBWSx5QkFBeUI7SUFDbkM7Ozs7T0FJRztJQUNILDBDQUFhLENBQUE7SUFFYjs7OztPQUlHO0lBQ0gsOENBQWlCLENBQUE7SUFFakI7Ozs7T0FJRztJQUNILDRDQUFlLENBQUE7QUFDakIsQ0FBQyxFQXJCVyx5QkFBeUIseUNBQXpCLHlCQUF5QixRQXFCcEM7QUFFRDs7OztHQUlHO0FBQ0gsSUFBWSxnQ0FnQlg7QUFoQkQsV0FBWSxnQ0FBZ0M7SUFDMUM7O09BRUc7SUFDSCxxREFBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILHlEQUFxQixDQUFBO0lBRXJCOzs7T0FHRztJQUNILG1EQUFlLENBQUE7QUFDakIsQ0FBQyxFQWhCVyxnQ0FBZ0MsZ0RBQWhDLGdDQUFnQyxRQWdCM0M7QUFF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SSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7O0FBcE1ILDRDQXFNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tIFwic2VtdmVyXCI7XG5pbXBvcnQgeyBOb2RlUHJvamVjdCB9IGZyb20gXCIuXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBKc29uRmlsZSB9IGZyb20gXCIuLi9qc29uXCI7XG5pbXBvcnQgdHlwZSB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplUGVyc2lzdGVkUGF0aCB9IGZyb20gXCIuLi91dGlsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZXNjcmlwdENvbmZpZ09wdGlvbnMge1xuICAvKipcbiAgICogQGRlZmF1bHQgXCJ0c2NvbmZpZy5qc29uXCJcbiAgICovXG4gIHJlYWRvbmx5IGZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCYXNlIGB0c2NvbmZpZy5qc29uYCBjb25maWd1cmF0aW9uKHMpIHRvIGluaGVyaXQgZnJvbS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogTXVzdCBwcm92aWRlIGVpdGhlciBgZXh0ZW5kc2Agb3IgYGNvbXBpbGVyT3B0aW9uc2AgKG9yIGJvdGgpLlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZW5kcz86IFR5cGVzY3JpcHRDb25maWdFeHRlbmRzO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBsaXN0IG9mIGdsb2IgcGF0dGVybnMgdGhhdCBtYXRjaCBUeXBlU2NyaXB0IGZpbGVzIHRvIGJlIGluY2x1ZGVkIGluIGNvbXBpbGF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFsbCAudHMgZmlsZXMgcmVjdXJzaXZlbHlcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRmlsdGVycyByZXN1bHRzIGZyb20gdGhlIFwiaW5jbHVkZVwiIG9wdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub2RlX21vZHVsZXMgaXMgZXhjbHVkZWQgYnkgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDb21waWxlciBvcHRpb25zIHRvIHVzZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogTXVzdCBwcm92aWRlIGVpdGhlciBgZXh0ZW5kc2Agb3IgYGNvbXBpbGVyT3B0aW9uc2AgKG9yIGJvdGgpLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGlsZXJPcHRpb25zPzogVHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIGhvdyBtb2R1bGVzIGdldCByZXNvbHZlZC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL21vZHVsZS1yZXNvbHV0aW9uLmh0bWxcbiAqL1xuZXhwb3J0IGVudW0gVHlwZVNjcmlwdE1vZHVsZVJlc29sdXRpb24ge1xuICAvKipcbiAgICogVHlwZVNjcmlwdCdzIGZvcm1lciBkZWZhdWx0IHJlc29sdXRpb24gc3RyYXRlZ3kuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svbW9kdWxlLXJlc29sdXRpb24uaHRtbCNjbGFzc2ljXG4gICAqL1xuICBDTEFTU0lDID0gXCJjbGFzc2ljXCIsXG5cbiAgLyoqXG4gICAqIFJlc29sdXRpb24gc3RyYXRlZ3kgd2hpY2ggYXR0ZW1wdHMgdG8gbWltaWMgdGhlIE5vZGUuanMgbW9kdWxlIHJlc29sdXRpb24gc3RyYXRlZ3kgYXQgcnVudGltZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9tb2R1bGUtcmVzb2x1dGlvbi5odG1sI25vZGVcbiAgICovXG4gIE5PREUgPSBcIm5vZGVcIixcblxuICAvKipcbiAgICogYC0tbW9kdWxlUmVzb2x1dGlvbiBub2RlYCB3YXMgcmVuYW1lZCB0byBgbm9kZTEwYFxuICAgKiAoa2VlcGluZyBgbm9kZWAgYXMgYW4gYWxpYXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpIGluIFR5cGVTY3JpcHQgNS4wLlxuICAgKiBJdCByZWZsZWN0cyB0aGUgQ29tbW9uSlMgbW9kdWxlIHJlc29sdXRpb24gYWxnb3JpdGhtIGFzIGl0IGV4aXN0ZWQgaW4gTm9kZS5qcyB2ZXJzaW9uc1xuICAgKiBlYXJsaWVyIHRoYW4gdjEyLiBJdCBzaG91bGQgbm8gbG9uZ2VyIGJlIHVzZWQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svbW9kdWxlcy9yZWZlcmVuY2UuaHRtbCNub2RlMTAtZm9ybWVybHkta25vd24tYXMtbm9kZVxuICAgKi9cbiAgTk9ERTEwID0gXCJub2RlMTBcIixcblxuICAvKipcbiAgICogTm9kZS5qc+KAmSBFQ01BU2NyaXB0IE1vZHVsZSBTdXBwb3J0IGZyb20gVHlwZVNjcmlwdCA0Ljcgb253YXJkc1xuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNtb2R1bGVSZXNvbHV0aW9uXG4gICAqL1xuICBOT0RFMTYgPSBcIm5vZGUxNlwiLFxuXG4gIC8qKlxuICAgKiBOb2RlLmpz4oCZIEVDTUFTY3JpcHQgTW9kdWxlIFN1cHBvcnQgZnJvbSBUeXBlU2NyaXB0IDQuNyBvbndhcmRzXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI21vZHVsZVJlc29sdXRpb25cbiAgICovXG4gIE5PREVfTkVYVCA9IFwibm9kZW5leHRcIixcblxuICAvKipcbiAgICogUmVzb2x1dGlvbiBzdHJhdGVneSB3aGljaCBhdHRlbXB0cyB0byBtaW1pYyByZXNvbHV0aW9uIHBhdHRlcm5zIG9mIG1vZGVybiBidW5kbGVyczsgZnJvbSBUeXBlU2NyaXB0IDUuMCBvbndhcmRzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNtb2R1bGVSZXNvbHV0aW9uXG4gICAqL1xuICBCVU5ETEVSID0gXCJidW5kbGVyXCIsXG59XG5cbi8qKlxuICogVGhpcyBzZXR0aW5nIGNvbnRyb2xzIGhvdyBUeXBlU2NyaXB0IGRldGVybWluZXMgd2hldGhlciBhIGZpbGUgaXMgYSBzY3JpcHQgb3IgYSBtb2R1bGUuXG4gKlxuICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9tb2R1bGVzL3RoZW9yeS5odG1sI3NjcmlwdHMtYW5kLW1vZHVsZXMtaW4tamF2YXNjcmlwdFxuICovXG5leHBvcnQgZW51bSBUeXBlU2NyaXB0TW9kdWxlRGV0ZWN0aW9uIHtcbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgd2lsbCBub3Qgb25seSBsb29rIGZvciBpbXBvcnQgYW5kIGV4cG9ydCBzdGF0ZW1lbnRzLCBidXQgaXQgd2lsbCBhbHNvIGNoZWNrIHdoZXRoZXIgdGhlIFwidHlwZVwiIGZpZWxkIGluIGEgcGFja2FnZS5qc29uIGlzIHNldCB0byBcIm1vZHVsZVwiIHdoZW4gcnVubmluZyB3aXRoIG1vZHVsZTogbm9kZW5leHQgb3Igbm9kZTE2LCBhbmQgY2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBmaWxlIGlzIGEgSlNYIGZpbGUgd2hlbiBydW5uaW5nIHVuZGVyIGpzeDogcmVhY3QtanN4LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZy8jbW9kdWxlRGV0ZWN0aW9uXG4gICAqL1xuICBBVVRPID0gXCJhdXRvXCIsXG5cbiAgLyoqXG4gICAqIFRoZSBzYW1lIGJlaGF2aW9yIGFzIDQuNiBhbmQgcHJpb3IsIHVzaW5ncyBpbXBvcnQgYW5kIGV4cG9ydCBzdGF0ZW1lbnRzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZmlsZSBpcyBhIG1vZHVsZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcvI21vZHVsZURldGVjdGlvblxuICAgKi9cbiAgTEVHQUNZID0gXCJsZWdhY3lcIixcblxuICAvKipcbiAgICogRW5zdXJlcyB0aGF0IGV2ZXJ5IG5vbi1kZWNsYXJhdGlvbiBmaWxlIGlzIHRyZWF0ZWQgYXMgYSBtb2R1bGUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnLyNtb2R1bGVEZXRlY3Rpb25cbiAgICovXG4gIEZPUkNFID0gXCJmb3JjZVwiLFxufVxuXG4vKipcbiAqIFRoaXMgZmxhZyBjb250cm9scyBob3cgYGltcG9ydGAgd29ya3MsIHRoZXJlIGFyZSAzIGRpZmZlcmVudCBvcHRpb25zLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2ltcG9ydHNOb3RVc2VkQXNWYWx1ZXNcbiAqL1xuZXhwb3J0IGVudW0gVHlwZVNjcmlwdEltcG9ydHNOb3RVc2VkQXNWYWx1ZXMge1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgZHJvcHBpbmcgYGltcG9ydGAgc3RhdGVtZW50cyB3aGljaCBvbmx5IHJlZmVyZW5jZSB0eXBlcy5cbiAgICovXG4gIFJFTU9WRSA9IFwicmVtb3ZlXCIsXG5cbiAgLyoqXG4gICAqIFByZXNlcnZlcyBhbGwgYGltcG9ydGAgc3RhdGVtZW50cyB3aG9zZSB2YWx1ZXMgb3IgdHlwZXMgYXJlIG5ldmVyIHVzZWQuIFRoaXMgY2FuIGNhdXNlIGltcG9ydHMvc2lkZS1lZmZlY3RzIHRvIGJlIHByZXNlcnZlZC5cbiAgICovXG4gIFBSRVNFUlZFID0gXCJwcmVzZXJ2ZVwiLFxuXG4gIC8qKlxuICAgKiBUaGlzIHByZXNlcnZlcyBhbGwgaW1wb3J0cyAodGhlIHNhbWUgYXMgdGhlIHByZXNlcnZlIG9wdGlvbiksIGJ1dCB3aWxsIGVycm9yIHdoZW4gYSB2YWx1ZSBpbXBvcnQgaXMgb25seSB1c2VkIGFzIGEgdHlwZS5cbiAgICogVGhpcyBtaWdodCBiZSB1c2VmdWwgaWYgeW91IHdhbnQgdG8gZW5zdXJlIG5vIHZhbHVlcyBhcmUgYmVpbmcgYWNjaWRlbnRhbGx5IGltcG9ydGVkLCBidXQgc3RpbGwgbWFrZSBzaWRlLWVmZmVjdCBpbXBvcnRzIGV4cGxpY2l0LlxuICAgKi9cbiAgRVJST1IgPSBcImVycm9yXCIsXG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBob3cgSlNYIHNob3VsZCBnZXQgdHJhbnNmb3JtZWQgaW50byB2YWxpZCBKYXZhU2NyaXB0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svanN4Lmh0bWxcbiAqL1xuZXhwb3J0IGVudW0gVHlwZVNjcmlwdEpzeE1vZGUge1xuICAvKipcbiAgICogS2VlcHMgdGhlIEpTWCBhcyBwYXJ0IG9mIHRoZSBvdXRwdXQgdG8gYmUgZnVydGhlciBjb25zdW1lZCBieSBhbm90aGVyIHRyYW5zZm9ybSBzdGVwIChlLmcuIEJhYmVsKS5cbiAgICovXG4gIFBSRVNFUlZFID0gXCJwcmVzZXJ2ZVwiLFxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBKU1ggc3ludGF4IGludG8gUmVhY3QuY3JlYXRlRWxlbWVudCwgZG9lcyBub3QgbmVlZCB0byBnbyB0aHJvdWdoIGEgSlNYIHRyYW5zZm9ybWF0aW9uIGJlZm9yZSB1c2UsIGFuZCB0aGUgb3V0cHV0IHdpbGwgaGF2ZSBhIC5qcyBmaWxlIGV4dGVuc2lvbi5cbiAgICovXG4gIFJFQUNUID0gXCJyZWFjdFwiLFxuXG4gIC8qKlxuICAgKiBLZWVwcyBhbGwgSlNYIGxpa2UgJ3ByZXNlcnZlJyBtb2RlLCBidXQgb3V0cHV0IHdpbGwgaGF2ZSBhIC5qcyBleHRlbnNpb24uXG4gICAqL1xuICBSRUFDVF9OQVRJVkUgPSBcInJlYWN0LW5hdGl2ZVwiLFxuXG4gIC8qKlxuICAgKiBQYXNzZXMgYGtleWAgc2VwYXJhdGVseSBmcm9tIHByb3BzIGFuZCBhbHdheXMgcGFzc2VzIGBjaGlsZHJlbmAgYXMgcHJvcHMgKHNpbmNlIFJlYWN0IDE3KS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9yZWxlYXNlLW5vdGVzL3R5cGVzY3JpcHQtNC0xLmh0bWwjcmVhY3QtMTctanN4LWZhY3Rvcmllc1xuICAgKi9cbiAgUkVBQ1RfSlNYID0gXCJyZWFjdC1qc3hcIixcblxuICAvKipcbiAgICogU2FtZSBhcyBgUkVBQ1RfSlNYYCB3aXRoIGFkZGl0aW9uYWwgZGVidWcgZGF0YS5cbiAgICovXG4gIFJFQUNUX0pTWERFViA9IFwicmVhY3QtanN4ZGV2XCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbGxvdyBKYXZhU2NyaXB0IGZpbGVzIHRvIGJlIGNvbXBpbGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dKcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFsbG93cyBUeXBlU2NyaXB0IGZpbGVzIHRvIGltcG9ydCBlYWNoIG90aGVyIHdpdGggVHlwZVNjcmlwdC1zcGVjaWZpYyBleHRlbnNpb25zIChgLnRzYCwgYC5tdHNgLCBgLnRzeGApLlxuICAgKiBSZXF1aXJlcyBgbm9FbWl0YCBvciBgZW1pdERlY2xhcmF0aW9uT25seWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTdXBwcmVzcyBhcmJpdHJhcnkgZXh0ZW5zaW9uIGltcG9ydCBlcnJvcnMgd2l0aCB0aGUgYXNzdW1wdGlvbiB0aGF0IGEgYnVuZGxlciB3aWxsIGJlIGhhbmRsaW5nIGl0LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNhbGxvd0FyYml0cmFyeUV4dGVuc2lvbnNcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBhbGxvd0FyYml0cmFyeUV4dGVuc2lvbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaWxlbmNlIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGZvciBvcHRpb25zIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBhIGZ1dHVyZVxuICAgKiBUeXBlU2NyaXB0IHJlbGVhc2UgKGZvciBleGFtcGxlIGBtb2R1bGVSZXNvbHV0aW9uOiBcIm5vZGUxMFwiYCwgd2hpY2ggYmVjYW1lXG4gICAqIGFuIGVycm9yIGluIFR5cGVTY3JpcHQgNi4wKS5cbiAgICpcbiAgICogU2V0IHRvIHRoZSBUeXBlU2NyaXB0IHZlcnNpb24gdGhhdCBpbnRyb2R1Y2VkIHRoZSBkZXByZWNhdGlvbiwgZS5nLiBgXCI2LjBcImAuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnLyNpZ25vcmVEZXByZWNhdGlvbnNcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVEZXByZWNhdGlvbnM/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFbnN1cmVzIHRoYXQgeW91ciBmaWxlcyBhcmUgcGFyc2VkIGluIHRoZSBFQ01BU2NyaXB0IHN0cmljdCBtb2RlLCBhbmQgZW1pdCDigJx1c2Ugc3RyaWN04oCdXG4gICAqIGZvciBlYWNoIHNvdXJjZSBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhbHdheXNTdHJpY3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPZmZlcnMgYSB3YXkgdG8gY29uZmlndXJlIHRoZSByb290IGRpcmVjdG9yeSBmb3Igd2hlcmUgZGVjbGFyYXRpb24gZmlsZXMgYXJlIGVtaXR0ZWQuXG4gICAqXG4gICAqL1xuICByZWFkb25seSBkZWNsYXJhdGlvbkRpcj86IHN0cmluZztcblxuICAvKipcbiAgICogVG8gYmUgc3BlY2lmaWVkIGFsb25nIHdpdGggdGhlIGFib3ZlXG4gICAqXG4gICAqL1xuICByZWFkb25seSBkZWNsYXJhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIHNvdXJjZSBtYXAgZm9yIC5kLnRzIGZpbGVzIHdoaWNoIG1hcCBiYWNrIHRvIHRoZSBvcmlnaW5hbCAudHMgc291cmNlIGZpbGUuXG4gICAqIFRoaXMgd2lsbCBhbGxvdyBlZGl0b3JzIHN1Y2ggYXMgVlMgQ29kZSB0byBnbyB0byB0aGUgb3JpZ2luYWwgLnRzIGZpbGUgd2hlbiB1c2luZyBmZWF0dXJlcyBsaWtlIEdvIHRvIERlZmluaXRpb24uXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNkZWNsYXJhdGlvbk1hcH1cbiAgICovXG4gIHJlYWRvbmx5IGRlY2xhcmF0aW9uTWFwPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG93bmxldmVsaW5nIGlzIFR5cGVTY3JpcHTigJlzIHRlcm0gZm9yIHRyYW5zcGlsaW5nIHRvIGFuIG9sZGVyIHZlcnNpb24gb2YgSmF2YVNjcmlwdC5cbiAgICogVGhpcyBmbGFnIGlzIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBhIG1vcmUgYWNjdXJhdGUgaW1wbGVtZW50YXRpb24gb2YgaG93IG1vZGVybiBKYXZhU2NyaXB0IGl0ZXJhdGVzIHRocm91Z2ggbmV3IGNvbmNlcHRzIGluIG9sZGVyIEphdmFTY3JpcHQgcnVudGltZXMuXG4gICAqXG4gICAqIEVDTUFTY3JpcHQgNiBhZGRlZCBzZXZlcmFsIG5ldyBpdGVyYXRpb24gcHJpbWl0aXZlczogdGhlIGZvciAvIG9mIGxvb3AgKGZvciAoZWwgb2YgYXJyKSksIEFycmF5IHNwcmVhZCAoW2EsIC4uLmJdKSwgYXJndW1lbnQgc3ByZWFkIChmbiguLi5hcmdzKSksIGFuZCBTeW1ib2wuaXRlcmF0b3IuXG4gICAqIGRvd25sZXZlbEl0ZXJhdGlvbiBhbGxvd3MgZm9yIHRoZXNlIGl0ZXJhdGlvbiBwcmltaXRpdmVzIHRvIGJlIHVzZWQgbW9yZSBhY2N1cmF0ZWx5IGluIEVTNSBlbnZpcm9ubWVudHMgaWYgYSBTeW1ib2wuaXRlcmF0b3IgaW1wbGVtZW50YXRpb24gaXMgcHJlc2VudC5cbiAgICovXG4gIHJlYWRvbmx5IGRvd25sZXZlbEl0ZXJhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgYWRkaXRpb25hbCBjb25kaXRpb25zIHRoYXQgc2hvdWxkIHN1Y2NlZWQgd2hlbiBUeXBlU2NyaXB0IHJlc29sdmVzIGZyb20gYW4gYGV4cG9ydHNgIG9yIGBpbXBvcnRzYCBmaWVsZCBvZiBhIGBwYWNrYWdlLmpzb25gLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNjdXN0b21Db25kaXRpb25zXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tQ29uZGl0aW9ucz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBFbWl0IF9faW1wb3J0U3RhciBhbmQgX19pbXBvcnREZWZhdWx0IGhlbHBlcnMgZm9yIHJ1bnRpbWUgYmFiZWxcbiAgICogZWNvc3lzdGVtIGNvbXBhdGliaWxpdHkgYW5kIGVuYWJsZSAtLWFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHMgZm9yXG4gICAqIHR5cGVzeXN0ZW0gY29tcGF0aWJpbGl0eS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVzTW9kdWxlSW50ZXJvcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIGRlY29yYXRvcnMsIHdoaWNoIGlzIGluIHN0YWdlIDIgb2YgdGhlIFRDMzkgc3RhbmRhcmRpemF0aW9uIHByb2Nlc3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbERlY29yYXRvcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBkZWNvcmF0b3JzLCB3aGljaCBpcyBpbiBzdGFnZSAyIG9mIHRoZSBUQzM5IHN0YW5kYXJkaXphdGlvbiBwcm9jZXNzLlxuICAgKiBEZWNvcmF0b3JzIGFyZSBhIGxhbmd1YWdlIGZlYXR1cmUgd2hpY2ggaGFzbuKAmXQgeWV0IGJlZW4gZnVsbHkgcmF0aWZpZWQgaW50byB0aGUgSmF2YVNjcmlwdCBzcGVjaWZpY2F0aW9uLlxuICAgKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIHZlcnNpb24gaW4gVHlwZVNjcmlwdCBtYXkgZGlmZmVyIGZyb20gdGhlIGltcGxlbWVudGF0aW9uIGluIEphdmFTY3JpcHQgd2hlbiBpdCBpdCBkZWNpZGVkIGJ5IFRDMzkuXG4gICAqIFlvdSBjYW4gZmluZCBvdXQgbW9yZSBhYm91dCBkZWNvcmF0b3Igc3VwcG9ydCBpbiBUeXBlU2NyaXB0IGluIHRoZSBoYW5kYm9vay5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9kZWNvcmF0b3JzLmh0bWxcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBlbWl0RGVjb3JhdG9yTWV0YWRhdGE/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXBvcnQgZXJyb3JzIGZvciBtb3N0IFR5cGVTY3JpcHQtc3BlY2lmaWMgc3ludGF4IHRoYXQgaGFzIHJ1bnRpbWUgYmVoYXZpb3IuXG4gICAqIFJlcXVpcmVzIFR5cGVTY3JpcHQgNS44IG9yIGxhdGVyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZy9lcmFzYWJsZVN5bnRheE9ubHkuaHRtbFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGVyYXNhYmxlU3ludGF4T25seT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpc2FsbG93IGluY29uc2lzdGVudGx5LWNhc2VkIHJlZmVyZW5jZXMgdG8gdGhlIHNhbWUgZmlsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlQ29uc2lzdGVudENhc2luZ0luRmlsZU5hbWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2ltcGxpZmllcyBUeXBlU2NyaXB0J3MgaGFuZGxpbmcgb2YgaW1wb3J0L2V4cG9ydCBgdHlwZWAgbW9kaWZpZXJzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyN2ZXJiYXRpbU1vZHVsZVN5bnRheFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHZlcmJhdGltTW9kdWxlU3ludGF4PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhpcyBmbGFnIHdvcmtzIGJlY2F1c2UgeW91IGNhbiB1c2UgYGltcG9ydCB0eXBlYCB0byBleHBsaWNpdGx5IGNyZWF0ZSBhbiBgaW1wb3J0YCBzdGF0ZW1lbnQgd2hpY2ggc2hvdWxkIG5ldmVyIGJlIGVtaXR0ZWQgaW50byBKYXZhU2NyaXB0LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGb3IgVHlwZVNjcmlwdCA1LjArIHVzZSBgdmVyYmF0aW1Nb2R1bGVTeW50YXhgIGluc3RlYWQuXG4gICAqIFBvc2VkIGZvciBkZXByZWNhdGlvbiB1cG9uIFR5cGVTY3JpcHQgNS41LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNpbXBvcnRzTm90VXNlZEFzVmFsdWVzXG4gICAqIEBkZWZhdWx0IFwicmVtb3ZlXCJcbiAgICovXG4gIHJlYWRvbmx5IGltcG9ydHNOb3RVc2VkQXNWYWx1ZXM/OiBUeXBlU2NyaXB0SW1wb3J0c05vdFVzZWRBc1ZhbHVlcztcblxuICAvKipcbiAgICogV2hlbiBzZXQsIGluc3RlYWQgb2Ygd3JpdGluZyBvdXQgYSAuanMubWFwIGZpbGUgdG8gcHJvdmlkZSBzb3VyY2UgbWFwcyxcbiAgICogVHlwZVNjcmlwdCB3aWxsIGVtYmVkIHRoZSBzb3VyY2UgbWFwIGNvbnRlbnQgaW4gdGhlIC5qcyBmaWxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5saW5lU291cmNlTWFwPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQsIFR5cGVTY3JpcHQgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW5hbCBjb250ZW50IG9mIHRoZSAudHMgZmlsZSBhcyBhbiBlbWJlZGRlZFxuICAgKiBzdHJpbmcgaW4gdGhlIHNvdXJjZSBtYXAuIFRoaXMgaXMgb2Z0ZW4gdXNlZnVsIGluIHRoZSBzYW1lIGNhc2VzIGFzIGlubGluZVNvdXJjZU1hcC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5saW5lU291cmNlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgdGhlIGdlbmVyYXRpb24gb2Ygc291cmNlbWFwIGZpbGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZU1hcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGxvY2F0aW9uIHdoZXJlIGEgZGVidWdnZXIgc2hvdWxkIGxvY2F0ZSBUeXBlU2NyaXB0IGZpbGVzXG4gICAqIGluc3RlYWQgb2YgcmVsYXRpdmUgc291cmNlIGxvY2F0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VSb290Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIHRvIGVuc3VyZSB0aGF0IHNlcGFyYXRlIGNvbXBpbGF0aW9uIChzdWNoIGFzXG4gICAqIHdpdGggdHJhbnNwaWxlTW9kdWxlIG9yIEBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXR5cGVzY3JpcHQpIHdvdWxkIGJlIHNhZmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpc29sYXRlZE1vZHVsZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXF1aXJlIHN1ZmZpY2llbnQgYW5ub3RhdGlvbiBvbiBleHBvcnRzIHNvIG90aGVyIHRvb2xzIGNhbiB0cml2aWFsbHlcbiAgICogZ2VuZXJhdGUgZGVjbGFyYXRpb24gZmlsZXMuXG4gICAqIFJlcXVpcmVzIFR5cGVTY3JpcHQgNS41IG9yIGxhdGVyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZy8jaXNvbGF0ZWREZWNsYXJhdGlvbnNcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBpc29sYXRlZERlY2xhcmF0aW9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFN1cHBvcnQgSlNYIGluIC50c3ggZmlsZXM6IFwicmVhY3RcIiwgXCJwcmVzZXJ2ZVwiLCBcInJlYWN0LW5hdGl2ZVwiIGV0Yy5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBqc3g/OiBUeXBlU2NyaXB0SnN4TW9kZTtcblxuICAvKipcbiAgICogRGVjbGFyZXMgdGhlIG1vZHVsZSBzcGVjaWZpZXIgdG8gYmUgdXNlZCBmb3IgaW1wb3J0aW5nIHRoZSBqc3ggYW5kIGpzeHMgZmFjdG9yeSBmdW5jdGlvbnMgd2hlbiB1c2luZyBqc3guXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkganN4SW1wb3J0U291cmNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgZm9yIHR5cGUgZGVmaW5pdGlvbnMgLyBsaWJyYXJpZXMgdG8gdXNlIChlZy4gRVMyMDE2LCBFUzUsIEVTMjAxOCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IFsgXCJlczIwMThcIiBdXG4gICAqL1xuICByZWFkb25seSBsaWI/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhpcyBzZXR0aW5nIGNvbnRyb2xzIGhvdyBUeXBlU2NyaXB0IGRldGVybWluZXMgd2hldGhlciBhIGZpbGUgaXMgYSBbc2NyaXB0IG9yIGEgbW9kdWxlXShodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9tb2R1bGVzL3RoZW9yeS5odG1sI3NjcmlwdHMtYW5kLW1vZHVsZXMtaW4tamF2YXNjcmlwdCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiYXV0b1wiXG4gICAqL1xuICByZWFkb25seSBtb2R1bGVEZXRlY3Rpb24/OiBUeXBlU2NyaXB0TW9kdWxlRGV0ZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBtb2R1bGUgc3lzdGVtIGZvciB0aGUgcHJvZ3JhbS5cbiAgICogU2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL21vZHVsZXMuaHRtbCNhbWJpZW50LW1vZHVsZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiQ29tbW9uSlNcIlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgaG93IG1vZHVsZXMgZ2V0IHJlc29sdmVkLiBFaXRoZXIgXCJOb2RlXCIgZm9yIE5vZGUuanMvaW8uanMgc3R5bGUgcmVzb2x1dGlvbiwgb3IgXCJDbGFzc2ljXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwibm9kZVwiXG4gICAqL1xuICByZWFkb25seSBtb2R1bGVSZXNvbHV0aW9uPzogVHlwZVNjcmlwdE1vZHVsZVJlc29sdXRpb247XG5cbiAgLyoqXG4gICAqIERvIG5vdCBlbWl0IG91dHB1dHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBub0VtaXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPbmx5IGVtaXQgLmQudHMgZmlsZXM7IGRvIG5vdCBlbWl0IC5qcyBmaWxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVtaXREZWNsYXJhdGlvbk9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEbyBub3QgZW1pdCBjb21waWxlciBvdXRwdXQgZmlsZXMgbGlrZSBKYXZhU2NyaXB0IHNvdXJjZSBjb2RlLCBzb3VyY2UtbWFwcyBvclxuICAgKiBkZWNsYXJhdGlvbnMgaWYgYW55IGVycm9ycyB3ZXJlIHJlcG9ydGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBub0VtaXRPbkVycm9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUmVwb3J0IGVycm9ycyBmb3IgZmFsbHRocm91Z2ggY2FzZXMgaW4gc3dpdGNoIHN0YXRlbWVudHMuIEVuc3VyZXMgdGhhdCBhbnkgbm9uLWVtcHR5XG4gICAqIGNhc2UgaW5zaWRlIGEgc3dpdGNoIHN0YXRlbWVudCBpbmNsdWRlcyBlaXRoZXIgYnJlYWsgb3IgcmV0dXJuLiBUaGlzIG1lYW5zIHlvdSB3b27igJl0XG4gICAqIGFjY2lkZW50YWxseSBzaGlwIGEgY2FzZSBmYWxsdGhyb3VnaCBidWcuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG5vRmFsbHRocm91Z2hDYXNlc0luU3dpdGNoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW4gc29tZSBjYXNlcyB3aGVyZSBubyB0eXBlIGFubm90YXRpb25zIGFyZSBwcmVzZW50LCBUeXBlU2NyaXB0IHdpbGwgZmFsbCBiYWNrIHRvIGFcbiAgICogdHlwZSBvZiBhbnkgZm9yIGEgdmFyaWFibGUgd2hlbiBpdCBjYW5ub3QgaW5mZXIgdGhlIHR5cGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG5vSW1wbGljaXRBbnk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBVc2luZyBgbm9JbXBsaWNpdE92ZXJyaWRlYCwgeW91IGNhbiBlbnN1cmUgdGhhdCBzdWItY2xhc3NlcyBuZXZlciBnbyBvdXQgb2Ygc3luYyBhc1xuICAgKiB0aGV5IGFyZSByZXF1aXJlZCB0byBleHBsaWNpdGx5IGRlY2xhcmUgdGhhdCB0aGV5IGFyZSBvdmVycmlkaW5nIGEgbWVtYmVyIHVzaW5nIHRoZVxuICAgKiBgb3ZlcnJpZGVgIGtleXdvcmQuIFRoaXMgYWxzbyBpbXByb3ZlcyByZWFkYWJpbGl0eSBvZiB0aGUgcHJvZ3JhbW1lcidzIGludGVudC5cbiAgICpcbiAgICogQXZhaWxhYmxlIHdpdGggVHlwZVNjcmlwdCA0LjMgYW5kIG5ld2VyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9JbXBsaWNpdE92ZXJyaWRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBUeXBlU2NyaXB0IHdpbGwgY2hlY2sgYWxsIGNvZGUgcGF0aHMgaW4gYSBmdW5jdGlvbiB0byBlbnN1cmUgdGhleVxuICAgKiByZXR1cm4gYSB2YWx1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9JbXBsaWNpdFJldHVybnM/OiBib29sZWFuO1xuICAvKipcbiAgICogUmFpc2UgZXJyb3Igb24g4oCYdGhpc+KAmSBleHByZXNzaW9ucyB3aXRoIGFuIGltcGxpZWQg4oCYYW554oCZIHR5cGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG5vSW1wbGljaXRUaGlzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUmFpc2UgZXJyb3Igb24gdXNlIG9mIHRoZSBkb3Qgc3ludGF4IHRvIGFjY2VzcyBmaWVsZHMgd2hpY2ggYXJlIG5vdCBkZWZpbmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBub1Byb3BlcnR5QWNjZXNzRnJvbUluZGV4U2lnbmF0dXJlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUmFpc2UgZXJyb3Igd2hlbiBhY2Nlc3NpbmcgaW5kZXhlcyBvbiBvYmplY3RzIHdpdGggdW5rbm93biBrZXlzIGRlZmluZWQgaW4gaW5kZXggc2lnbmF0dXJlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9VbmNoZWNrZWRJbmRleGVkQWNjZXNzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUmVwb3J0IGVycm9ycyBvbiB1bnVzZWQgbG9jYWwgdmFyaWFibGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBub1VudXNlZExvY2Fscz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlcG9ydCBlcnJvcnMgb24gdW51c2VkIHBhcmFtZXRlcnMgaW4gZnVuY3Rpb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBub1VudXNlZFBhcmFtZXRlcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQcmVzZXJ2ZSBgY29uc3QgZW51bWAgZGVjbGFyYXRpb25zIGluIGdlbmVyYXRlZCBjb2RlLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZy9wcmVzZXJ2ZUNvbnN0RW51bXMuaHRtbFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHByZXNlcnZlQ29uc3RFbnVtcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFsbG93cyBpbXBvcnRpbmcgbW9kdWxlcyB3aXRoIGEg4oCYLmpzb27igJkgZXh0ZW5zaW9uLCB3aGljaCBpcyBhIGNvbW1vbiBwcmFjdGljZVxuICAgKiBpbiBub2RlIHByb2plY3RzLiBUaGlzIGluY2x1ZGVzIGdlbmVyYXRpbmcgYSB0eXBlIGZvciB0aGUgaW1wb3J0IGJhc2VkIG9uIHRoZSBzdGF0aWMgSlNPTiBzaGFwZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb2x2ZUpzb25Nb2R1bGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTa2lwIHR5cGUgY2hlY2tpbmcgb2YgYWxsIGRlY2xhcmF0aW9uIGZpbGVzICgqLmQudHMpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcExpYkNoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHN0cmljdCBmbGFnIGVuYWJsZXMgYSB3aWRlIHJhbmdlIG9mIHR5cGUgY2hlY2tpbmcgYmVoYXZpb3IgdGhhdCByZXN1bHRzIGluIHN0cm9uZ2VyIGd1YXJhbnRlZXNcbiAgICogb2YgcHJvZ3JhbSBjb3JyZWN0bmVzcy4gVHVybmluZyB0aGlzIG9uIGlzIGVxdWl2YWxlbnQgdG8gZW5hYmxpbmcgYWxsIG9mIHRoZSBzdHJpY3QgbW9kZSBmYW1pbHlcbiAgICogb3B0aW9ucywgd2hpY2ggYXJlIG91dGxpbmVkIGJlbG93LiBZb3UgY2FuIHRoZW4gdHVybiBvZmYgaW5kaXZpZHVhbCBzdHJpY3QgbW9kZSBmYW1pbHkgY2hlY2tzIGFzXG4gICAqIG5lZWRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RyaWN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzdHJpY3ROdWxsQ2hlY2tzIGlzIGZhbHNlLCBudWxsIGFuZCB1bmRlZmluZWQgYXJlIGVmZmVjdGl2ZWx5IGlnbm9yZWQgYnkgdGhlIGxhbmd1YWdlLlxuICAgKiBUaGlzIGNhbiBsZWFkIHRvIHVuZXhwZWN0ZWQgZXJyb3JzIGF0IHJ1bnRpbWUuXG4gICAqIFdoZW4gc3RyaWN0TnVsbENoZWNrcyBpcyB0cnVlLCBudWxsIGFuZCB1bmRlZmluZWQgaGF2ZSB0aGVpciBvd24gZGlzdGluY3QgdHlwZXMgYW5kIHlvdeKAmWxsXG4gICAqIGdldCBhIHR5cGUgZXJyb3IgaWYgeW91IHRyeSB0byB1c2UgdGhlbSB3aGVyZSBhIGNvbmNyZXRlIHZhbHVlIGlzIGV4cGVjdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzdHJpY3ROdWxsQ2hlY2tzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgVHlwZVNjcmlwdCB3aWxsIHJhaXNlIGFuIGVycm9yIHdoZW4gYSBjbGFzcyBwcm9wZXJ0eSB3YXMgZGVjbGFyZWQgYnV0XG4gICAqIG5vdCBzZXQgaW4gdGhlIGNvbnN0cnVjdG9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzdHJpY3RQcm9wZXJ0eUluaXRpYWxpemF0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG8gbm90IGVtaXQgZGVjbGFyYXRpb25zIGZvciBjb2RlIHRoYXQgaGFzIGFuIGBAaW50ZXJuYWxgIGFubm90YXRpb24gaW4gaXTigJlzIEpTRG9jIGNvbW1lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHN0cmlwSW50ZXJuYWw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBGb3JjZXMgVHlwZVNjcmlwdCB0byBjb25zdWx0IHRoZSBgZXhwb3J0c2AgZmllbGQgb2YgYHBhY2thZ2UuanNvbmAgZmlsZXMgaWYgaXQgZXZlciByZWFkcyBmcm9tIGEgcGFja2FnZSBpbiBgbm9kZV9tb2R1bGVzYC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb2x2ZVBhY2thZ2VKc29uRXhwb3J0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEZvcmNlcyBUeXBlU2NyaXB0IHRvIGNvbnN1bHQgdGhlIGBpbXBvcnRzYCBmaWVsZCBvZiBgcGFja2FnZS5qc29uYCB3aGVuIHBlcmZvcm1pbmcgYSBsb29rdXAgdGhhdCBiZWdpbnMgd2l0aCBgI2AgZnJvbSBhIGZpbGUgdGhhdCBoYXMgYSBgcGFja2FnZS5qc29uYCBhcyBhbiBhbmNlc3Rvci5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSByZXNvbHZlUGFja2FnZUpzb25JbXBvcnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTW9kZXJuIGJyb3dzZXJzIHN1cHBvcnQgYWxsIEVTNiBmZWF0dXJlcywgc28gRVM2IGlzIGEgZ29vZCBjaG9pY2UuIFlvdSBtaWdodCBjaG9vc2UgdG8gc2V0XG4gICAqIGEgbG93ZXIgdGFyZ2V0IGlmIHlvdXIgY29kZSBpcyBkZXBsb3llZCB0byBvbGRlciBlbnZpcm9ubWVudHMsIG9yIGEgaGlnaGVyIHRhcmdldCBpZiB5b3VyXG4gICAqIGNvZGUgaXMgZ3VhcmFudGVlZCB0byBydW4gaW4gbmV3ZXIgZW52aXJvbm1lbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIkVTMjAxOFwiXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE91dHB1dCBkaXJlY3RvcnkgZm9yIHRoZSBjb21waWxlZCBmaWxlcy5cbiAgICovXG4gIHJlYWRvbmx5IG91dERpcj86IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSByb290IGRpcmVjdG9yeSBvZiBpbnB1dCBmaWxlcy5cbiAgICpcbiAgICogT25seSB1c2UgdG8gY29udHJvbCB0aGUgb3V0cHV0IGRpcmVjdG9yeSBzdHJ1Y3R1cmUgd2l0aCBgb3V0RGlyYC5cbiAgICovXG4gIHJlYWRvbmx5IHJvb3REaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFsbG93IGRlZmF1bHQgaW1wb3J0cyBmcm9tIG1vZHVsZXMgd2l0aCBubyBkZWZhdWx0IGV4cG9ydC4gVGhpcyBkb2VzIG5vdCBhZmZlY3QgY29kZSBlbWl0LCBqdXN0IHR5cGVjaGVja2luZy5cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhhdCBvcHRpb25hbCBwcm9wZXJ0eSB0eXBlcyBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgZXhhY3RseSBhcyB3cml0dGVuLCBtZWFuaW5nIHRoYXQgYHwgdW5kZWZpbmVkYCBpcyBub3QgYWRkZWQgdG8gdGhlIHR5cGVcbiAgICogQXZhaWxhYmxlIHdpdGggVHlwZVNjcmlwdCA0LjQgYW5kIG5ld2VyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDaGFuZ2UgdGhlIHR5cGUgb2YgdGhlIHZhcmlhYmxlIGluIGEgY2F0Y2ggY2xhdXNlIGZyb20gYW55IHRvIHVua25vd25cbiAgICogQXZhaWxhYmxlIHdpdGggVHlwZVNjcmlwdCA0LjQgYW5kIG5ld2VyLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB1c2VVbmtub3duSW5DYXRjaFZhcmlhYmxlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIExldHMgeW91IHNldCBhIGJhc2UgZGlyZWN0b3J5IHRvIHJlc29sdmUgbm9uLWFic29sdXRlIG1vZHVsZSBuYW1lcy5cbiAgICpcbiAgICogWW91IGNhbiBkZWZpbmUgYSByb290IGZvbGRlciB3aGVyZSB5b3UgY2FuIGRvIGFic29sdXRlIGZpbGUgcmVzb2x1dGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGJhc2VVcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc2VyaWVzIG9mIGVudHJpZXMgd2hpY2ggcmUtbWFwIGltcG9ydHMgdG8gbG9va3VwIGxvY2F0aW9ucyByZWxhdGl2ZSB0byB0aGUgYmFzZVVybCwgdGhlcmUgaXMgYSBsYXJnZXIgY292ZXJhZ2Ugb2YgcGF0aHMgaW4gdGhlIGhhbmRib29rLlxuICAgKlxuICAgKiBwYXRocyBsZXRzIHlvdSBkZWNsYXJlIGhvdyBUeXBlU2NyaXB0IHNob3VsZCByZXNvbHZlIGFuIGltcG9ydCBpbiB5b3VyIHJlcXVpcmUvaW1wb3J0cy5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9O1xuXG4gIC8qKlxuICAgKiBJZiB0eXBlUm9vdHMgaXMgc3BlY2lmaWVkLCBvbmx5IHBhY2thZ2VzIHVuZGVyIHR5cGVSb290cyB3aWxsIGJlIGluY2x1ZGVkXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnLyN0eXBlUm9vdHNcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVSb290cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJZiB0eXBlcyBpcyBzcGVjaWZpZWQsIG9ubHkgcGFja2FnZXMgbGlzdGVkIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGdsb2JhbCBzY29wZVxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyN0eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGVsbHMgVHlwZVNjcmlwdCB0byBzYXZlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9qZWN0IGdyYXBoIGZyb20gdGhlIGxhc3QgY29tcGlsYXRpb24gdG8gZmlsZXMgc3RvcmVkIG9uIGRpc2suXG4gICAqIFRoaXMgY3JlYXRlcyBhIHNlcmllcyBvZiAudHNidWlsZGluZm8gZmlsZXMgaW4gdGhlIHNhbWUgZm9sZGVyIGFzIHlvdXIgY29tcGlsYXRpb24gb3V0cHV0LlxuICAgKiBUaGV5IGFyZSBub3QgdXNlZCBieSB5b3VyIEphdmFTY3JpcHQgYXQgcnVudGltZSBhbmQgY2FuIGJlIHNhZmVseSBkZWxldGVkLlxuICAgKiBZb3UgY2FuIHJlYWQgbW9yZSBhYm91dCB0aGUgZmxhZyBpbiB0aGUgMy40IHJlbGVhc2Ugbm90ZXMuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svcmVsZWFzZS1ub3Rlcy90eXBlc2NyaXB0LTMtNC5odG1sI2Zhc3Rlci1zdWJzZXF1ZW50LWJ1aWxkcy13aXRoLXRoZS0tLWluY3JlbWVudGFsLWZsYWdcbiAgICpcbiAgICogVG8gY29udHJvbCB3aGljaCBmb2xkZXJzIHlvdSB3YW50IHRvIHRoZSBmaWxlcyB0byBiZSBidWlsdCB0bywgdXNlIHRoZSBjb25maWcgb3B0aW9uIHRzQnVpbGRJbmZvRmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IGluY3JlbWVudGFsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhpcyBzZXR0aW5nIGxldHMgeW91IHNwZWNpZnkgYSBmaWxlIGZvciBzdG9yaW5nIGluY3JlbWVudGFsIGNvbXBpbGF0aW9uIGluZm9ybWF0aW9uIGFzIGEgcGFydCBvZiBjb21wb3NpdGUgcHJvamVjdHMgd2hpY2ggZW5hYmxlcyBmYXN0ZXIgYnVpbGRpbmcgb2YgbGFyZ2VyIFR5cGVTY3JpcHQgY29kZWJhc2VzLlxuICAgKiBZb3UgY2FuIHJlYWQgbW9yZSBhYm91dCBjb21wb3NpdGUgcHJvamVjdHMgaW4gdGhlIGhhbmRib29rLlxuICAgKi9cbiAgcmVhZG9ubHkgdHNCdWlsZEluZm9GaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbGxvdyBVbnVzZWQgTGFiZWxzXG4gICAqXG4gICAqIFdoZW46XG4gICAqXG4gICAqIC0gYHVuZGVmaW5lZGAgKGRlZmF1bHQpIHByb3ZpZGUgc3VnZ2VzdGlvbnMgYXMgd2FybmluZ3MgdG8gZWRpdG9yc1xuICAgKiAtIGB0cnVlYCB1bnVzZWQgbGFiZWxzIGFyZSBpZ25vcmVkXG4gICAqIC0gYGZhbHNlYCByYWlzZXMgY29tcGlsZXIgZXJyb3JzIGFib3V0IHVudXNlZCBsYWJlbHNcbiAgICpcbiAgICogTGFiZWxzIGFyZSB2ZXJ5IHJhcmUgaW4gSmF2YVNjcmlwdCBhbmQgdHlwaWNhbGx5IGluZGljYXRlIGFuIGF0dGVtcHQgdG8gd3JpdGUgYW4gb2JqZWN0IGxpdGVyYWw6XG4gICAqXG4gICAqIGBgYHRzXG4gICAqIGZ1bmN0aW9uIHZlcmlmeUFnZShhZ2U6IG51bWJlcikge1xuICAgKiAgIC8vIEZvcmdvdCAncmV0dXJuJyBzdGF0ZW1lbnRcbiAgICogICBpZiAoYWdlID4gMTgpIHtcbiAgICogICAgIHZlcmlmaWVkOiB0cnVlO1xuICAgKiAvLyAgXl5eXl5eXl4gVW51c2VkIGxhYmVsLlxuICAgKiAgIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjYWxsb3dVbnVzZWRMYWJlbHNcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93VW51c2VkTGFiZWxzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWxsb3cgVW5yZWFjaGFibGUgQ29kZVxuICAgKlxuICAgKiBXaGVuOlxuICAgKlxuICAgKiAtIGB1bmRlZmluZWRgIChkZWZhdWx0KSBwcm92aWRlIHN1Z2dlc3Rpb25zIGFzIHdhcm5pbmdzIHRvIGVkaXRvcnNcbiAgICogLSBgdHJ1ZWAgdW5yZWFjaGFibGUgY29kZSBpcyBpZ25vcmVkXG4gICAqIC0gYGZhbHNlYCByYWlzZXMgY29tcGlsZXIgZXJyb3JzIGFib3V0IHVucmVhY2hhYmxlIGNvZGVcbiAgICpcbiAgICogVGhlc2Ugd2FybmluZ3MgYXJlIG9ubHkgYWJvdXQgY29kZSB3aGljaCBpcyBwcm92YWJseSB1bnJlYWNoYWJsZSBkdWUgdG8gdGhlIHVzZSBvZiBKYXZhU2NyaXB0IHN5bnRheC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvdHNjb25maWcjYWxsb3dVbnJlYWNoYWJsZUNvZGVcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93VW5yZWFjaGFibGVDb2RlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2hlY2sgSlNcbiAgICpcbiAgICogV29ya3MgaW4gdGFuZGVtIHdpdGggW2FsbG93SnNdKGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNhbGxvd0pzKS4gV2hlbiBjaGVja0pzIGlzIGVuYWJsZWQgdGhlblxuICAgKiBlcnJvcnMgYXJlIHJlcG9ydGVkIGluIEphdmFTY3JpcHQgZmlsZXMuIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgaW5jbHVkaW5nIC8vIEB0cy1jaGVjayBhdCB0aGUgdG9wIG9mIGFsbFxuICAgKiBKYXZhU2NyaXB0IGZpbGVzIHdoaWNoIGFyZSBpbmNsdWRlZCBpbiB5b3VyIHByb2plY3QuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2NoZWNrSnNcbiAgICovXG4gIHJlYWRvbmx5IGNoZWNrSnM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbnRhaW5lciBmb3IgYFR5cGVzY3JpcHRDb25maWdgIGB0c2NvbmZpZy5qc29uYCBiYXNlIGNvbmZpZ3VyYXRpb24ocykuXG4gKiBFeHRlbmRpbmcgZnJvbSBtb3JlIHRoYW4gb25lIGJhc2UgY29uZmlnIGZpbGUgcmVxdWlyZXMgVHlwZVNjcmlwdCA1LjArLlxuICovXG5leHBvcnQgY2xhc3MgVHlwZXNjcmlwdENvbmZpZ0V4dGVuZHMge1xuICAvKipcbiAgICogRmFjdG9yeSBmb3IgY3JlYXRpb24gZnJvbSBhcnJheSBvZiBmaWxlIHBhdGhzLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUeXBlU2NyaXB0IDUuMCsgaXMgcmVxdWlyZWQgdG8gc3BlY2lmeSBtb3JlIHRoYW4gb25lIHZhbHVlIGluIGBwYXRoc2AuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRocyBBYnNvbHV0ZSBvciByZWxhdGl2ZSBwYXRocyB0byBiYXNlIGB0c2NvbmZpZy5qc29uYCBmaWxlcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVBhdGhzKHBhdGhzOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiBuZXcgVHlwZXNjcmlwdENvbmZpZ0V4dGVuZHMocGF0aHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZhY3RvcnkgZm9yIGNyZWF0aW9uIGZyb20gYXJyYXkgb2Ygb3RoZXIgYFR5cGVzY3JpcHRDb25maWdgIGluc3RhbmNlcy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVHlwZVNjcmlwdCA1LjArIGlzIHJlcXVpcmVkIHRvIHNwZWNpZnkgbW9yZSB0aGFuIG9uIHZhbHVlIGluIGBjb25maWdzYC5cbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZ3MgQmFzZSBgVHlwZXNjcmlwdENvbmZpZ2AgaW5zdGFuY2VzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVHlwZXNjcmlwdENvbmZpZ3MoY29uZmlnczogVHlwZXNjcmlwdENvbmZpZ1tdKSB7XG4gICAgY29uc3QgcGF0aHMgPSBjb25maWdzLm1hcCgoY29uZmlnKSA9PiBjb25maWcuZmlsZS5hYnNvbHV0ZVBhdGgpO1xuICAgIHJldHVybiBUeXBlc2NyaXB0Q29uZmlnRXh0ZW5kcy5mcm9tUGF0aHMocGF0aHMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBiYXNlczogc3RyaW5nW107XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihiYXNlczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmJhc2VzID0gYmFzZXM7XG4gIH1cblxuICBwdWJsaWMgdG9KU09OKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHlwZXNjcmlwdENvbmZpZyBleHRlbmRzIENvbXBvbmVudCB7XG4gIHByaXZhdGUgX2V4dGVuZHM6IFR5cGVzY3JpcHRDb25maWdFeHRlbmRzO1xuICBwdWJsaWMgcmVhZG9ubHkgY29tcGlsZXJPcHRpb25zPzogVHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucztcbiAgcHJpdmF0ZSByZWFkb25seSBpbmNsdWRlU2V0OiBTZXQ8c3RyaW5nPjtcbiAgcHJpdmF0ZSByZWFkb25seSBleGNsdWRlU2V0OiBTZXQ8c3RyaW5nPjtcbiAgcHVibGljIHJlYWRvbmx5IGZpbGVOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBmaWxlOiBKc29uRmlsZTtcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBUeXBlc2NyaXB0Q29uZmlnT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuICAgIGNvbnN0IGZpbGVOYW1lID0gb3B0aW9ucy5maWxlTmFtZSA/PyBcInRzY29uZmlnLmpzb25cIjtcblxuICAgIGlmICghb3B0aW9ucy5leHRlbmRzICYmICFvcHRpb25zLmNvbXBpbGVyT3B0aW9ucykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIlR5cGVzY3JpcHRDb25maWc6IE11c3QgcHJvdmlkZSBlaXRoZXIgYGV4dGVuZHNgIG9yIGBjb21waWxlck9wdGlvbnNgIChvciBib3RoKS5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fZXh0ZW5kcyA9IG9wdGlvbnMuZXh0ZW5kcyA/PyBUeXBlc2NyaXB0Q29uZmlnRXh0ZW5kcy5mcm9tUGF0aHMoW10pO1xuICAgIHRoaXMuaW5jbHVkZVNldCA9IG9wdGlvbnMuaW5jbHVkZVxuICAgICAgPyBuZXcgU2V0KG9wdGlvbnMuaW5jbHVkZSlcbiAgICAgIDogbmV3IFNldChbXCIqKi8qLnRzXCJdKTtcbiAgICB0aGlzLmV4Y2x1ZGVTZXQgPSBvcHRpb25zLmV4Y2x1ZGVcbiAgICAgID8gbmV3IFNldChvcHRpb25zLmV4Y2x1ZGUpXG4gICAgICA6IG5ldyBTZXQoW1wibm9kZV9tb2R1bGVzXCJdKTtcbiAgICB0aGlzLmZpbGVOYW1lID0gZmlsZU5hbWU7XG5cbiAgICB0aGlzLmNvbXBpbGVyT3B0aW9ucyA9IG9wdGlvbnMuY29tcGlsZXJPcHRpb25zO1xuXG4gICAgdGhpcy5maWxlID0gbmV3IEpzb25GaWxlKHByb2plY3QsIGZpbGVOYW1lLCB7XG4gICAgICBhbGxvd0NvbW1lbnRzOiB0cnVlLFxuICAgICAgb2JqOiB7XG4gICAgICAgIGV4dGVuZHM6ICgpID0+IHRoaXMucmVuZGVyRXh0ZW5kcygpLFxuICAgICAgICBjb21waWxlck9wdGlvbnM6IHRoaXMuY29tcGlsZXJPcHRpb25zLFxuICAgICAgICBpbmNsdWRlOiAoKSA9PiB0aGlzLmluY2x1ZGUsXG4gICAgICAgIGV4Y2x1ZGU6ICgpID0+IHRoaXMuZXhjbHVkZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAocHJvamVjdCBpbnN0YW5jZW9mIE5vZGVQcm9qZWN0KSB7XG4gICAgICBwcm9qZWN0Lm5wbWlnbm9yZT8uZXhjbHVkZShgLyR7ZmlsZU5hbWV9YCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBpbmNsdWRlKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuaW5jbHVkZVNldF07XG4gIH1cblxuICBwdWJsaWMgZ2V0IGV4Y2x1ZGUoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5leGNsdWRlU2V0XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgYXBwcm9wcmlhdGUgdmFsdWUgZm9yIGBleHRlbmRzYCBmaWVsZC5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgcmVuZGVyRXh0ZW5kcygpOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuZXh0ZW5kcy5sZW5ndGggPD0gMSkge1xuICAgICAgLy8gcmVuZGVyIHN0cmluZyB2YWx1ZSB3aGVuIG9ubHkgb25lIGV4dGVuc2lvbiAoVFM8NS4wKTtcbiAgICAgIC8vIG9taXQgaWYgbm8gZXh0ZW5zaW9ucy5cbiAgICAgIHJldHVybiB0aGlzLmV4dGVuZHNbMF07XG4gICAgfVxuICAgIC8vIHJlbmRlciBtYW55IGV4dGVuc2lvbnMgYXMgYXJyYXkgKFRTPj01LjApXG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIHZhbGlkIFR5cGVTY3JpcHQgZXh0ZW5kcyBwYXRocyByZWxhdGl2ZSB0byB0aGlzIGNvbmZpZy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhpcyB3aWxsIG9ubHkgcmVzb2x2ZSB0aGUgcmVsYXRpdmUgcGF0aCBmcm9tIHRoaXMgY29uZmlnIHRvIGFub3RoZXIgZ2l2ZW5cbiAgICogYW4gYWJzb2x1dGUgcGF0aCBhcyBpbnB1dC4gQW55IG5vbi1hYnNvbHV0ZSBwYXRoIG9yIG90aGVyIHN0cmluZyB3aWxsIGJlIHJldHVybmVkIGFzIGlzLlxuICAgKiBUaGlzIGlzIHRvIHByZXNlcnZlIG1hbnVhbGx5IHNwZWNpZmllZCByZWxhdGl2ZSBwYXRocyBhcyB3ZWxsIGFzIG5wbSBpbXBvcnQgcGF0aHMuXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWdQYXRoIFBhdGggdG8gcmVzb2x2ZSBhZ2FpbnN0LlxuICAgKi9cbiAgcHVibGljIHJlc29sdmVFeHRlbmRzUGF0aChjb25maWdQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIGlmIG5vdCBhYnNvbHV0ZSBhc3N1bWUgdXNlci1kZWZpbmVkIHBhdGggKG9yIG5wbSBwYWNrYWdlKS5cbiAgICBpZiAoIXBhdGguaXNBYnNvbHV0ZShjb25maWdQYXRoKSkgcmV0dXJuIGNvbmZpZ1BhdGg7XG4gICAgY29uc3QgcmVsYXRpdmVDb25maWcgPSBwYXRoLnJlbGF0aXZlKFxuICAgICAgcGF0aC5kaXJuYW1lKHRoaXMuZmlsZS5hYnNvbHV0ZVBhdGgpLFxuICAgICAgY29uZmlnUGF0aCxcbiAgICApO1xuICAgIC8vIGVuc3VyZSBpbW1lZGlhdGUgc2libGluZyBmaWxlcyBhcmUgcHJlZml4ZWQgd2l0aCAnLi8nXG4gICAgLy8gdHlwZXNjcmlwdCBmaWd1cmVzIHRoaXMgb3V0LCBidXQgc29tZSB0b29scyBzZWVtaW5nbHkgYnJlYWsgd2l0aG91dCBpdCAoaS5lLCBlc2xpbnQpLlxuICAgIGNvbnN0IHsgZGlyLCAuLi5wYXRoUGFydHMgfSA9IHBhdGgucGFyc2UocmVsYXRpdmVDb25maWcpO1xuICAgIGNvbnN0IGNvbmZpZ0RpciA9IGRpclxuICAgICAgPyBwYXRoLmZvcm1hdCh7IGRpcjogZGlyLnN0YXJ0c1dpdGgoXCIuLlwiKSA/IFwiXCIgOiBcIi5cIiwgYmFzZTogZGlyIH0pXG4gICAgICA6IFwiLlwiO1xuXG4gICAgY29uc3QgZXh0ZW5kc1BhdGggPSBwYXRoLmZvcm1hdCh7IC4uLnBhdGhQYXJ0cywgZGlyOiBjb25maWdEaXIgfSk7XG5cbiAgICByZXR1cm4gbm9ybWFsaXplUGVyc2lzdGVkUGF0aChleHRlbmRzUGF0aCk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdXNhZ2Ugb2YgYGV4dGVuZHNgIGFnYWluc3QgY3VycmVudCBUeXBlU2NyaXB0IHZlcnNpb24uXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlRXh0ZW5kcygpIHtcbiAgICBjb25zdCBwcm9qZWN0ID0gdGhpcy5wcm9qZWN0O1xuICAgIGNvbnN0IGhhc09uZU9yTm9uZUV4dGVuZHMgPSB0aGlzLmV4dGVuZHMubGVuZ3RoIDw9IDE7XG4gICAgY29uc3QgaXNOb2RlUHJvamVjdCA9IHByb2plY3QgaW5zdGFuY2VvZiBOb2RlUHJvamVjdDtcbiAgICBpZiAoaGFzT25lT3JOb25lRXh0ZW5kcyB8fCAhaXNOb2RlUHJvamVjdCkge1xuICAgICAgLy8gYWx3YXlzIGFjY2VwdCBubyBleHRlbmRzIG9yIHNpbmd1bGFyIGV4dGVuZHMuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRzVmVyc2lvbiA9IHNlbXZlci5jb2VyY2UoXG4gICAgICBwcm9qZWN0LnBhY2thZ2UudHJ5UmVzb2x2ZURlcGVuZGVuY3lWZXJzaW9uKFwidHlwZXNjcmlwdFwiKSxcbiAgICAgIHsgbG9vc2U6IHRydWUgfSxcbiAgICApO1xuICAgIGlmICh0c1ZlcnNpb24gJiYgdHNWZXJzaW9uLm1ham9yIDwgNSkge1xuICAgICAgdGhpcy5wcm9qZWN0LmxvZ2dlci53YXJuKFxuICAgICAgICBcIlR5cGVTY3JpcHQgPCA1LjAuMCBjYW4gb25seSBleHRlbmQgZnJvbSBhIHNpbmdsZSBiYXNlIGNvbmZpZy5cIixcbiAgICAgICAgYFR5cGVTY3JpcHQgVmVyc2lvbjogJHt0c1ZlcnNpb24uZm9ybWF0KCl9YCxcbiAgICAgICAgYEZpbGU6ICR7dGhpcy5maWxlLmFic29sdXRlUGF0aH1gLFxuICAgICAgICBgRXh0ZW5kczogJHt0aGlzLmV4dGVuZHN9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFycmF5IG9mIGJhc2UgYHRzY29uZmlnLmpzb25gIHBhdGhzLlxuICAgKiBBbnkgYWJzb2x1dGUgcGF0aHMgYXJlIHJlc29sdmVkIHJlbGF0aXZlIHRvIHRoaXMgaW5zdGFuY2UsXG4gICAqIHdoaWxlIGFueSByZWxhdGl2ZSBwYXRocyBhcmUgdXNlZCBhcyBpcy5cbiAgICovXG4gIHB1YmxpYyBnZXQgZXh0ZW5kcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2V4dGVuZHNcbiAgICAgIC50b0pTT04oKVxuICAgICAgLm1hcCgodmFsdWUpID0+IHRoaXMucmVzb2x2ZUV4dGVuZHNQYXRoKHZhbHVlKSk7XG4gIH1cblxuICAvKipcbiAgICogRXh0ZW5kIGZyb20gYmFzZSBgVHlwZXNjcmlwdENvbmZpZ2AgaW5zdGFuY2UuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFR5cGVTY3JpcHQgNS4wKyBpcyByZXF1aXJlZCB0byBleHRlbmQgZnJvbSBtb3JlIHRoYW4gb25lIGJhc2UgYFR5cGVzY3JpcHRDb25maWdgLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgQmFzZSBgVHlwZXNjcmlwdENvbmZpZ2AgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkRXh0ZW5kcyh2YWx1ZTogVHlwZXNjcmlwdENvbmZpZykge1xuICAgIHRoaXMuX2V4dGVuZHMgPSBUeXBlc2NyaXB0Q29uZmlnRXh0ZW5kcy5mcm9tUGF0aHMoW1xuICAgICAgLi4udGhpcy5fZXh0ZW5kcy50b0pTT04oKSxcbiAgICAgIHZhbHVlLmZpbGUuYWJzb2x1dGVQYXRoLFxuICAgIF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBpbmNsdWRlIHBhdHRlcm4gdG8gdGhlIGBpbmNsdWRlYCBhcnJheSBvZiB0aGUgVFNDb25maWcuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL3RzY29uZmlnI2luY2x1ZGVcbiAgICpcbiAgICogQHBhcmFtIHBhdHRlcm4gVGhlIHBhdHRlcm4gdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFkZEluY2x1ZGUocGF0dGVybjogc3RyaW5nKSB7XG4gICAgdGhpcy5pbmNsdWRlLnB1c2gocGF0dGVybik7XG4gICAgdGhpcy5pbmNsdWRlU2V0LmFkZChwYXR0ZXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gZXhjbHVkZSBwYXR0ZXJuIHRvIHRoZSBgZXhjbHVkZWAgYXJyYXkgb2YgdGhlIFRTQ29uZmlnLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNleGNsdWRlXG4gICAqXG4gICAqIEBwYXJhbSBwYXR0ZXJuIFRoZSBwYXR0ZXJuIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGRFeGNsdWRlKHBhdHRlcm46IHN0cmluZykge1xuICAgIHRoaXMuZXhjbHVkZS5wdXNoKHBhdHRlcm4pO1xuICAgIHRoaXMuZXhjbHVkZVNldC5hZGQocGF0dGVybik7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFuIGluY2x1ZGUgcGF0dGVybiBmcm9tIHRoZSBgaW5jbHVkZWAgYXJyYXkgb2YgdGhlIFRTQ29uZmlnLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNpbmNsdWRlXG4gICAqXG4gICAqIEBwYXJhbSBwYXR0ZXJuIFRoZSBwYXR0ZXJuIHRvIHJlbW92ZS5cbiAgICovXG4gIHB1YmxpYyByZW1vdmVJbmNsdWRlKHBhdHRlcm46IHN0cmluZykge1xuICAgIHRoaXMuaW5jbHVkZVNldC5kZWxldGUocGF0dGVybik7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFuIGV4Y2x1ZGUgcGF0dGVybiBmcm9tIHRoZSBgZXhjbHVkZWAgYXJyYXkgb2YgdGhlIFRTQ29uZmlnLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy90c2NvbmZpZyNleGNsdWRlXG4gICAqXG4gICAqIEBwYXJhbSBwYXR0ZXJuIFRoZSBwYXR0ZXJuIHRvIHJlbW92ZS5cbiAgICovXG4gIHB1YmxpYyByZW1vdmVFeGNsdWRlKHBhdHRlcm46IHN0cmluZykge1xuICAgIHRoaXMuZXhjbHVkZVNldC5kZWxldGUocGF0dGVybik7XG4gIH1cblxuICBwcmVTeW50aGVzaXplKCkge1xuICAgIHN1cGVyLnByZVN5bnRoZXNpemUoKTtcbiAgICB0aGlzLnZhbGlkYXRlRXh0ZW5kcygpO1xuICB9XG59XG4iXX0=
@@ -19,7 +19,7 @@ const PATCH_CREATED_OUTPUT = "patch_created";
19
19
  * Upgrade node project dependencies.
20
20
  */
21
21
  class UpgradeDependencies extends component_1.Component {
22
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.UpgradeDependencies", version: "0.104.6" };
22
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.UpgradeDependencies", version: "0.104.8" };
23
23
  /**
24
24
  * The workflows that execute the upgrades. One workflow per branch.
25
25
  */
@@ -407,7 +407,7 @@ exports.UpgradeDependencies = UpgradeDependencies;
407
407
  */
408
408
  class UpgradeDependenciesSchedule {
409
409
  cron;
410
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.UpgradeDependenciesSchedule", version: "0.104.6" };
410
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.UpgradeDependenciesSchedule", version: "0.104.8" };
411
411
  /**
412
412
  * Disables automatic upgrades.
413
413
  */
@@ -113,7 +113,7 @@ var YarnTaskPoolMode;
113
113
  YarnTaskPoolMode["WORKERS"] = "workers";
114
114
  })(YarnTaskPoolMode || (exports.YarnTaskPoolMode = YarnTaskPoolMode = {}));
115
115
  class Yarnrc extends component_1.Component {
116
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Yarnrc", version: "0.104.6" };
116
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Yarnrc", version: "0.104.8" };
117
117
  constructor(project, options = {}) {
118
118
  super(project);
119
119
  this.updateGitAttributes();
package/lib/json-patch.js CHANGED
@@ -34,7 +34,7 @@ const TEST_FAILURE_BEHAVIOR_SYMBOL = Symbol.for("testFailureBehavior");
34
34
  */
35
35
  class JsonPatch {
36
36
  operation;
37
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.JsonPatch", version: "0.104.6" };
37
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.JsonPatch", version: "0.104.8" };
38
38
  /**
39
39
  * Applies a set of JSON-Patch (RFC-6902) operations to `document` and returns the result.
40
40
  * @param document The document to patch
package/lib/json.js CHANGED
@@ -7,7 +7,7 @@ const object_file_1 = require("./object-file");
7
7
  * Represents a JSON file.
8
8
  */
9
9
  class JsonFile extends object_file_1.ObjectFile {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.JsonFile", version: "0.104.6" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.JsonFile", version: "0.104.8" };
11
11
  newline;
12
12
  allowComments = true;
13
13
  /**
package/lib/license.js CHANGED
@@ -38,7 +38,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
38
38
  const fs = __importStar(require("fs"));
39
39
  const file_1 = require("./file");
40
40
  class License extends file_1.FileBase {
41
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.License", version: "0.104.6" };
41
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.License", version: "0.104.8" };
42
42
  text;
43
43
  constructor(project, options) {
44
44
  super(project, "LICENSE", {
package/lib/logger.js CHANGED
@@ -15,7 +15,7 @@ const constructs_1 = require("./util/constructs");
15
15
  * Project-level logging utilities.
16
16
  */
17
17
  class Logger extends component_1.Component {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Logger", version: "0.104.6" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Logger", version: "0.104.8" };
19
19
  level;
20
20
  usePrefix;
21
21
  constructor(scope, options = {}) {
package/lib/makefile.js CHANGED
@@ -7,7 +7,7 @@ const file_1 = require("./file");
7
7
  * Minimal Makefile.
8
8
  */
9
9
  class Makefile extends file_1.FileBase {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Makefile", version: "0.104.6" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Makefile", version: "0.104.8" };
11
11
  /**
12
12
  * List of rule definitions.
13
13
  */
@@ -9,7 +9,7 @@ const util_1 = require("./util");
9
9
  * Represents an Object file.
10
10
  */
11
11
  class ObjectFile extends file_1.FileBase {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ObjectFile", version: "0.104.6" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ObjectFile", version: "0.104.8" };
13
13
  /**
14
14
  * The output object. This object can be mutated until the project is
15
15
  * synthesized.
@@ -25,7 +25,7 @@ const util_1 = require("../util");
25
25
  * });
26
26
  */
27
27
  class PolarisGoCoverity extends coverity_1.PolarisCoverity {
28
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisGoCoverity", version: "0.104.6" };
28
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisGoCoverity", version: "0.104.8" };
29
29
  constructor(project, options) {
30
30
  super(project, (0, util_1.deepMerge)([
31
31
  {
@@ -26,7 +26,7 @@ const util_1 = require("../util");
26
26
  * });
27
27
  */
28
28
  class PolarisJavaCoverity extends coverity_1.PolarisCoverity {
29
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisJavaCoverity", version: "0.104.6" };
29
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisJavaCoverity", version: "0.104.8" };
30
30
  constructor(project, options) {
31
31
  super(project, (0, util_1.deepMerge)([
32
32
  {
@@ -25,7 +25,7 @@ const util_1 = require("../util");
25
25
  * });
26
26
  */
27
27
  class PolarisJavascriptCoverity extends coverity_1.PolarisCoverity {
28
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisJavascriptCoverity", version: "0.104.6" };
28
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisJavascriptCoverity", version: "0.104.8" };
29
29
  constructor(project, options) {
30
30
  super(project, (0, util_1.deepMerge)([
31
31
  {
@@ -13,7 +13,7 @@ const coverity_config_1 = require("./coverity-config");
13
13
  * @see https://docs.blackduck.com/r/cov_polaris/latest/coverity-on-polaris/configuration-file-schema.html
14
14
  */
15
15
  class PolarisCoverity extends component_1.Component {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisCoverity", version: "0.104.6" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisCoverity", version: "0.104.8" };
17
17
  /**
18
18
  * The YAML file for the Coverity on Polaris configuration.
19
19
  */
@@ -15,7 +15,7 @@ const component_1 = require("./component");
15
15
  * 6. package
16
16
  */
17
17
  class ProjectBuild extends component_1.Component {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjectBuild", version: "0.104.6" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjectBuild", version: "0.104.8" };
19
19
  /**
20
20
  * The task responsible for a full release build.
21
21
  */
@@ -17,7 +17,7 @@ const json_1 = require("./json");
17
17
  * @stability experimental
18
18
  */
19
19
  class ProjectTree extends component_1.Component {
20
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjectTree", version: "0.104.6" };
20
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjectTree", version: "0.104.8" };
21
21
  file;
22
22
  constructor(project) {
23
23
  super(project, new.target.name);
package/lib/project.js CHANGED
@@ -65,7 +65,7 @@ const DEFAULT_OUTDIR = ".";
65
65
  * Base project
66
66
  */
67
67
  class Project extends constructs_1.Construct {
68
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Project", version: "0.104.6" };
68
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Project", version: "0.104.8" };
69
69
  /**
70
70
  * The name of the default task (the task executed when `projen` is run without arguments). Normally
71
71
  * this task should synthesize the project files.
package/lib/projects.js CHANGED
@@ -44,7 +44,7 @@ const option_hints_1 = require("./option-hints");
44
44
  * Programmatic API for projen.
45
45
  */
46
46
  class Projects {
47
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Projects", version: "0.104.6" };
47
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Projects", version: "0.104.8" };
48
48
  /**
49
49
  * Creates a new project with defaults.
50
50
  *
@@ -9,7 +9,7 @@ const projenrc_1 = require("./projenrc");
9
9
  * Sets up a project to use JSON for projenrc.
10
10
  */
11
11
  class ProjenrcJson extends projenrc_1.ProjenrcFile {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjenrcJson", version: "0.104.6" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjenrcJson", version: "0.104.8" };
13
13
  filePath;
14
14
  constructor(project, options = {}) {
15
15
  super(project);
package/lib/projenrc.js CHANGED
@@ -7,7 +7,7 @@ const component_1 = require("./component");
7
7
  * A component representing the projen runtime configuration
8
8
  */
9
9
  class ProjenrcFile extends component_1.Component {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjenrcFile", version: "0.104.6" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjenrcFile", version: "0.104.8" };
11
11
  /**
12
12
  * Returns the `Projenrc` instance associated with a project or `undefined` if
13
13
  * there is no Projenrc.
@@ -35,7 +35,7 @@ const util_1 = require("./util");
35
35
  * // sonar.sources=src
36
36
  */
37
37
  class PropertiesFile extends object_file_1.ObjectFile {
38
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.PropertiesFile", version: "0.104.6" };
38
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.PropertiesFile", version: "0.104.8" };
39
39
  comment;
40
40
  constructor(scope, filePath, options) {
41
41
  super(scope, filePath, options);
package/lib/python/pip.js CHANGED
@@ -9,7 +9,7 @@ const dependencies_1 = require("../dependencies");
9
9
  * Manages dependencies using a requirements.txt file and the pip CLI tool.
10
10
  */
11
11
  class Pip extends component_1.Component {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Pip", version: "0.104.6" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Pip", version: "0.104.8" };
13
13
  installCiTask;
14
14
  constructor(project, _options = {}) {
15
15
  super(project);
@@ -47,7 +47,7 @@ const exec_1 = require("../util/exec");
47
47
  * poetry CLI tool.
48
48
  */
49
49
  class Poetry extends component_1.Component {
50
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Poetry", version: "0.104.6" };
50
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Poetry", version: "0.104.8" };
51
51
  /**
52
52
  * Task for updating the lockfile and installing project dependencies.
53
53
  */
@@ -253,7 +253,7 @@ exports.Poetry = Poetry;
253
253
  * @see https://python-poetry.org/docs/pyproject/
254
254
  */
255
255
  class PoetryPyproject extends component_1.Component {
256
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PoetryPyproject", version: "0.104.6" };
256
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PoetryPyproject", version: "0.104.8" };
257
257
  file;
258
258
  constructor(scope, options) {
259
259
  super(scope);
@@ -17,7 +17,7 @@ const projenrc_1 = require("../projenrc");
17
17
  * `synth` task which will run `.projenrc.py`.
18
18
  */
19
19
  class Projenrc extends projenrc_1.ProjenrcFile {
20
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Projenrc", version: "0.104.6" };
20
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Projenrc", version: "0.104.8" };
21
21
  /**
22
22
  * The name of the projenrc file.
23
23
  */
@@ -10,7 +10,7 @@ const pyproject_toml_1 = require("./pyproject-toml");
10
10
  * @see https://packaging.python.org/en/latest/guides/writing-pyproject-toml/
11
11
  */
12
12
  class PyprojectTomlFile extends toml_1.TomlFile {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PyprojectTomlFile", version: "0.104.6" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PyprojectTomlFile", version: "0.104.8" };
14
14
  constructor(scope, config) {
15
15
  super(scope, "pyproject.toml", {
16
16
  omitEmpty: false,
@@ -7,7 +7,7 @@ const __1 = require("..");
7
7
  * Python test code sample.
8
8
  */
9
9
  class PytestSample extends __1.Component {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PytestSample", version: "0.104.6" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PytestSample", version: "0.104.8" };
11
11
  constructor(project, options) {
12
12
  super(project);
13
13
  new __1.SampleDir(project, options.testdir, {
@@ -5,7 +5,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
5
  const component_1 = require("../component");
6
6
  const dependencies_1 = require("../dependencies");
7
7
  class Pytest extends component_1.Component {
8
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Pytest", version: "0.104.6" };
8
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Pytest", version: "0.104.8" };
9
9
  testMatch;
10
10
  constructor(project, options = {}) {
11
11
  super(project);
@@ -23,7 +23,7 @@ const PYTHON_PROJECT_NAME_REGEX = /^[A-Za-z0-9-_\.]+$/;
23
23
  * @pjid python
24
24
  */
25
25
  class PythonProject extends github_1.GitHubProject {
26
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PythonProject", version: "0.104.6" };
26
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PythonProject", version: "0.104.8" };
27
27
  /**
28
28
  * Python module name (the project name, with any hyphens or periods replaced
29
29
  * with underscores).
@@ -8,7 +8,7 @@ const sample_file_1 = require("../sample-file");
8
8
  * Python code sample.
9
9
  */
10
10
  class PythonSample extends component_1.Component {
11
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PythonSample", version: "0.104.6" };
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PythonSample", version: "0.104.8" };
12
12
  constructor(project, options) {
13
13
  super(project);
14
14
  new sample_file_1.SampleDir(project, options.dir, {
@@ -11,7 +11,7 @@ const semver_1 = require("../util/semver");
11
11
  * @see https://pip.pypa.io/en/stable/reference/pip_install/#requirements-file-format
12
12
  */
13
13
  class RequirementsFile extends file_1.FileBase {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.RequirementsFile", version: "0.104.6" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.RequirementsFile", version: "0.104.8" };
15
15
  packages = new Array();
16
16
  packageProvider;
17
17
  constructor(project, filePath, options) {
@@ -7,7 +7,7 @@ const file_1 = require("../file");
7
7
  * Python packaging script where package metadata can be placed.
8
8
  */
9
9
  class SetupPy extends file_1.FileBase {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.SetupPy", version: "0.104.6" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.SetupPy", version: "0.104.8" };
11
11
  setupConfig;
12
12
  constructor(project, options) {
13
13
  super(project, "setup.py");
@@ -9,7 +9,7 @@ const dependencies_1 = require("../dependencies");
9
9
  * Manages packaging through setuptools with a setup.py script.
10
10
  */
11
11
  class Setuptools extends component_1.Component {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Setuptools", version: "0.104.6" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Setuptools", version: "0.104.8" };
13
13
  publishTask;
14
14
  /**
15
15
  * A task that uploads the package to the Test PyPI repository.
@@ -220,7 +220,7 @@ function toJson_StaticMetadata(obj) {
220
220
  */
221
221
  class ExcludeNewerOverride {
222
222
  value;
223
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.uvConfig.ExcludeNewerOverride", version: "0.104.6" };
223
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.uvConfig.ExcludeNewerOverride", version: "0.104.8" };
224
224
  static fromBoolean(value) {
225
225
  return new ExcludeNewerOverride(value);
226
226
  }
package/lib/python/uv.js CHANGED
@@ -11,7 +11,7 @@ const exec_1 = require("../util/exec");
11
11
  * Manage project dependencies, virtual environments, and packaging through uv.
12
12
  */
13
13
  class Uv extends component_1.Component {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Uv", version: "0.104.6" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Uv", version: "0.104.8" };
15
15
  /**
16
16
  * The `pyproject.toml` file
17
17
  */
@@ -43,7 +43,7 @@ const exec_1 = require("../util/exec");
43
43
  * Manages a virtual environment through the Python venv module.
44
44
  */
45
45
  class Venv extends component_1.Component {
46
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Venv", version: "0.104.6" };
46
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Venv", version: "0.104.8" };
47
47
  /**
48
48
  * Name of directory to store the environment in
49
49
  */
package/lib/readme.js CHANGED
@@ -10,7 +10,7 @@ const sample_file_1 = require("./sample-file");
10
10
  * @param text - The initial contents of the README.md file. Defaults to '# replace this'
11
11
  */
12
12
  class SampleReadme extends sample_file_1.SampleFile {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.SampleReadme", version: "0.104.6" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.SampleReadme", version: "0.104.8" };
14
14
  constructor(project, props) {
15
15
  super(project, props?.filename ?? "README.md", {
16
16
  contents: props?.contents ?? "# replace this",