projen 0.103.3 → 0.103.5

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 (236) hide show
  1. package/.jsii +11700 -6065
  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/auto-approve.js +1 -1
  47. package/lib/github/auto-merge.js +1 -1
  48. package/lib/github/auto-queue.js +1 -1
  49. package/lib/github/dependabot.js +1 -1
  50. package/lib/github/dependency-review.js +1 -1
  51. package/lib/github/github-credentials.js +1 -1
  52. package/lib/github/github-project.js +1 -1
  53. package/lib/github/github.js +1 -1
  54. package/lib/github/merge-queue.js +1 -1
  55. package/lib/github/mergify.js +1 -1
  56. package/lib/github/pr-template.js +1 -1
  57. package/lib/github/pull-request-backport.js +1 -1
  58. package/lib/github/pull-request-lint.js +1 -1
  59. package/lib/github/stale.js +1 -1
  60. package/lib/github/task-workflow-job.js +1 -1
  61. package/lib/github/task-workflow.js +1 -1
  62. package/lib/github/workflow-actions.js +1 -1
  63. package/lib/github/workflow-jobs.js +1 -1
  64. package/lib/github/workflow-steps.js +1 -1
  65. package/lib/github/workflows.js +1 -1
  66. package/lib/gitlab/configuration.js +1 -1
  67. package/lib/gitlab/gitlab-configuration.js +1 -1
  68. package/lib/gitlab/nested-configuration.js +1 -1
  69. package/lib/gitpod.js +1 -1
  70. package/lib/ignore-file.js +1 -1
  71. package/lib/index.d.ts +2 -0
  72. package/lib/index.js +4 -2
  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/index.d.ts +2 -0
  85. package/lib/javascript/index.js +3 -1
  86. package/lib/javascript/jest.js +4 -4
  87. package/lib/javascript/license-checker.js +1 -1
  88. package/lib/javascript/node-config-file.d.ts +39 -0
  89. package/lib/javascript/node-config-file.js +44 -0
  90. package/lib/javascript/node-config.d.ts +1150 -0
  91. package/lib/javascript/node-config.js +266 -0
  92. package/lib/javascript/node-package.js +1 -1
  93. package/lib/javascript/node-project.js +1 -1
  94. package/lib/javascript/npm-config.js +1 -1
  95. package/lib/javascript/pnpm-workspace-config.js +2 -2
  96. package/lib/javascript/pnpm-workspace.js +1 -1
  97. package/lib/javascript/prettier.js +1 -1
  98. package/lib/javascript/projenrc.js +1 -1
  99. package/lib/javascript/typescript-config.js +2 -2
  100. package/lib/javascript/upgrade-dependencies.js +2 -2
  101. package/lib/javascript/yarnrc.js +1 -1
  102. package/lib/json-patch.js +1 -1
  103. package/lib/json.js +1 -1
  104. package/lib/license.js +1 -1
  105. package/lib/logger.js +1 -1
  106. package/lib/makefile.js +1 -1
  107. package/lib/object-file.js +1 -1
  108. package/lib/project-build.js +1 -1
  109. package/lib/project-tree.js +1 -1
  110. package/lib/project.js +1 -1
  111. package/lib/projects.js +1 -1
  112. package/lib/projenrc-json.js +1 -1
  113. package/lib/projenrc.js +1 -1
  114. package/lib/properties-file.d.ts +50 -0
  115. package/lib/properties-file.js +77 -0
  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 +6 -2
  136. package/lib/sample-file.js +2 -2
  137. package/lib/script-runner.js +1 -1
  138. package/lib/sonarqube/index.d.ts +4 -0
  139. package/lib/sonarqube/index.js +21 -0
  140. package/lib/sonarqube/javascript.d.ts +35 -0
  141. package/lib/sonarqube/javascript.js +57 -0
  142. package/lib/sonarqube/rust.d.ts +37 -0
  143. package/lib/sonarqube/rust.js +58 -0
  144. package/lib/sonarqube/sonarqube.d.ts +439 -0
  145. package/lib/sonarqube/sonarqube.js +184 -0
  146. package/lib/sonarqube/typescript.d.ts +36 -0
  147. package/lib/sonarqube/typescript.js +61 -0
  148. package/lib/source-code.js +1 -1
  149. package/lib/task-shell.js +1 -1
  150. package/lib/task.js +1 -1
  151. package/lib/tasks.js +1 -1
  152. package/lib/testing.js +1 -1
  153. package/lib/textfile.js +1 -1
  154. package/lib/toml.js +1 -1
  155. package/lib/typescript/projenrc-ts.js +1 -1
  156. package/lib/typescript/projenrc.js +1 -1
  157. package/lib/typescript/typescript-runner.js +1 -1
  158. package/lib/typescript/typescript-typedoc.js +1 -1
  159. package/lib/typescript/typescript.js +5 -5
  160. package/lib/util.d.ts +9 -0
  161. package/lib/util.js +39 -1
  162. package/lib/version.js +2 -2
  163. package/lib/vscode/devcontainer.js +1 -1
  164. package/lib/vscode/extensions.js +1 -1
  165. package/lib/vscode/launch-config.js +1 -1
  166. package/lib/vscode/settings.js +1 -1
  167. package/lib/vscode/vscode.js +1 -1
  168. package/lib/web/next.js +3 -3
  169. package/lib/web/postcss.js +1 -1
  170. package/lib/web/react.js +3 -3
  171. package/lib/web/tailwind.js +1 -1
  172. package/lib/xmlfile.js +1 -1
  173. package/lib/yaml.js +1 -1
  174. package/node_modules/properties-file/LICENSE +21 -0
  175. package/node_modules/properties-file/README.md +253 -0
  176. package/node_modules/properties-file/dist/cjs/bundler/bun.d.ts +10 -0
  177. package/node_modules/properties-file/dist/cjs/bundler/bun.js +1 -0
  178. package/node_modules/properties-file/dist/cjs/bundler/esbuild.d.ts +11 -0
  179. package/node_modules/properties-file/dist/cjs/bundler/esbuild.js +1 -0
  180. package/node_modules/properties-file/dist/cjs/bundler/rollup.d.ts +11 -0
  181. package/node_modules/properties-file/dist/cjs/bundler/rollup.js +1 -0
  182. package/node_modules/properties-file/dist/cjs/bundler/webpack.d.ts +12 -0
  183. package/node_modules/properties-file/dist/cjs/bundler/webpack.js +1 -0
  184. package/node_modules/properties-file/dist/cjs/characters.d.ts +32 -0
  185. package/node_modules/properties-file/dist/cjs/characters.js +1 -0
  186. package/node_modules/properties-file/dist/cjs/editor/index.d.ts +181 -0
  187. package/node_modules/properties-file/dist/cjs/editor/index.js +1 -0
  188. package/node_modules/properties-file/dist/cjs/escape/index.d.ts +18 -0
  189. package/node_modules/properties-file/dist/cjs/escape/index.js +1 -0
  190. package/node_modules/properties-file/dist/cjs/index.d.ts +25 -0
  191. package/node_modules/properties-file/dist/cjs/index.js +1 -0
  192. package/node_modules/properties-file/dist/cjs/package.json +1 -0
  193. package/node_modules/properties-file/dist/cjs/parser/index.d.ts +3 -0
  194. package/node_modules/properties-file/dist/cjs/parser/index.js +1 -0
  195. package/node_modules/properties-file/dist/cjs/parser/nodes.d.ts +154 -0
  196. package/node_modules/properties-file/dist/cjs/parser/nodes.js +1 -0
  197. package/node_modules/properties-file/dist/cjs/parser/normalize.d.ts +12 -0
  198. package/node_modules/properties-file/dist/cjs/parser/normalize.js +1 -0
  199. package/node_modules/properties-file/dist/cjs/parser/parse.d.ts +23 -0
  200. package/node_modules/properties-file/dist/cjs/parser/parse.js +1 -0
  201. package/node_modules/properties-file/dist/cjs/parser/properties.d.ts +93 -0
  202. package/node_modules/properties-file/dist/cjs/parser/properties.js +1 -0
  203. package/node_modules/properties-file/dist/cjs/properties-file.d.ts +8 -0
  204. package/node_modules/properties-file/dist/cjs/unescape/index.d.ts +14 -0
  205. package/node_modules/properties-file/dist/cjs/unescape/index.js +1 -0
  206. package/node_modules/properties-file/dist/esm/bundler/bun.d.ts +10 -0
  207. package/node_modules/properties-file/dist/esm/bundler/bun.js +1 -0
  208. package/node_modules/properties-file/dist/esm/bundler/esbuild.d.ts +11 -0
  209. package/node_modules/properties-file/dist/esm/bundler/esbuild.js +1 -0
  210. package/node_modules/properties-file/dist/esm/bundler/rollup.d.ts +11 -0
  211. package/node_modules/properties-file/dist/esm/bundler/rollup.js +1 -0
  212. package/node_modules/properties-file/dist/esm/bundler/webpack.d.ts +12 -0
  213. package/node_modules/properties-file/dist/esm/bundler/webpack.js +1 -0
  214. package/node_modules/properties-file/dist/esm/characters.d.ts +32 -0
  215. package/node_modules/properties-file/dist/esm/characters.js +1 -0
  216. package/node_modules/properties-file/dist/esm/editor/index.d.ts +181 -0
  217. package/node_modules/properties-file/dist/esm/editor/index.js +1 -0
  218. package/node_modules/properties-file/dist/esm/escape/index.d.ts +18 -0
  219. package/node_modules/properties-file/dist/esm/escape/index.js +1 -0
  220. package/node_modules/properties-file/dist/esm/index.d.ts +25 -0
  221. package/node_modules/properties-file/dist/esm/index.js +1 -0
  222. package/node_modules/properties-file/dist/esm/parser/index.d.ts +3 -0
  223. package/node_modules/properties-file/dist/esm/parser/index.js +1 -0
  224. package/node_modules/properties-file/dist/esm/parser/nodes.d.ts +154 -0
  225. package/node_modules/properties-file/dist/esm/parser/nodes.js +1 -0
  226. package/node_modules/properties-file/dist/esm/parser/normalize.d.ts +12 -0
  227. package/node_modules/properties-file/dist/esm/parser/normalize.js +1 -0
  228. package/node_modules/properties-file/dist/esm/parser/parse.d.ts +23 -0
  229. package/node_modules/properties-file/dist/esm/parser/parse.js +1 -0
  230. package/node_modules/properties-file/dist/esm/parser/properties.d.ts +93 -0
  231. package/node_modules/properties-file/dist/esm/parser/properties.js +1 -0
  232. package/node_modules/properties-file/dist/esm/properties-file.d.ts +8 -0
  233. package/node_modules/properties-file/dist/esm/unescape/index.d.ts +14 -0
  234. package/node_modules/properties-file/dist/esm/unescape/index.js +1 -0
  235. package/node_modules/properties-file/package.json +190 -0
  236. package/package.json +6 -2
@@ -0,0 +1,266 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toJson_NodeConfigSchema = toJson_NodeConfigSchema;
4
+ exports.toJson_NodeConfigSchemaNodeOptions = toJson_NodeConfigSchemaNodeOptions;
5
+ exports.toJson_NodeConfigSchemaPermission = toJson_NodeConfigSchemaPermission;
6
+ exports.toJson_NodeConfigSchemaTest = toJson_NodeConfigSchemaTest;
7
+ exports.toJson_NodeConfigSchemaWatch = toJson_NodeConfigSchemaWatch;
8
+ /**
9
+ * Converts an object of type 'NodeConfigSchema' to JSON representation.
10
+ * @internal
11
+ */
12
+ /* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
13
+ function toJson_NodeConfigSchema(obj) {
14
+ if (obj === undefined) {
15
+ return undefined;
16
+ }
17
+ const result = {
18
+ '$schema': obj.schema,
19
+ 'nodeOptions': toJson_NodeConfigSchemaNodeOptions(obj.nodeOptions),
20
+ 'permission': toJson_NodeConfigSchemaPermission(obj.permission),
21
+ 'test': toJson_NodeConfigSchemaTest(obj.test),
22
+ 'watch': toJson_NodeConfigSchemaWatch(obj.watch),
23
+ };
24
+ // filter undefined values
25
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
26
+ }
27
+ /**
28
+ * Converts an object of type 'NodeConfigSchemaNodeOptions' to JSON representation.
29
+ * @internal
30
+ */
31
+ /* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
32
+ function toJson_NodeConfigSchemaNodeOptions(obj) {
33
+ if (obj === undefined) {
34
+ return undefined;
35
+ }
36
+ const result = {
37
+ 'addons': obj.addons,
38
+ 'allow-addons': obj.allowAddons,
39
+ 'allow-child-process': obj.allowChildProcess,
40
+ 'allow-fs-read': obj.allowFsRead?.map(y => y),
41
+ 'allow-fs-write': obj.allowFsWrite?.map(y => y),
42
+ 'allow-inspector': obj.allowInspector,
43
+ 'allow-wasi': obj.allowWasi,
44
+ 'allow-worker': obj.allowWorker,
45
+ 'async-context-frame': obj.asyncContextFrame,
46
+ 'conditions': obj.conditions?.map(y => y),
47
+ 'cpu-prof': obj.cpuProf,
48
+ 'cpu-prof-dir': obj.cpuProfDir,
49
+ 'cpu-prof-interval': obj.cpuProfInterval,
50
+ 'cpu-prof-name': obj.cpuProfName,
51
+ 'debug-arraybuffer-allocations': obj.debugArraybufferAllocations,
52
+ 'deprecation': obj.deprecation,
53
+ 'diagnostic-dir': obj.diagnosticDir,
54
+ 'disable-proto': obj.disableProto,
55
+ 'disable-sigusr1': obj.disableSigusr1,
56
+ 'disable-warning': obj.disableWarning?.map(y => y),
57
+ 'disable-wasm-trap-handler': obj.disableWasmTrapHandler,
58
+ 'dns-result-order': obj.dnsResultOrder,
59
+ 'enable-fips': obj.enableFips,
60
+ 'enable-source-maps': obj.enableSourceMaps,
61
+ 'entry-url': obj.entryUrl,
62
+ 'experimental-addon-modules': obj.experimentalAddonModules,
63
+ 'experimental-detect-module': obj.experimentalDetectModule,
64
+ 'experimental-eventsource': obj.experimentalEventsource,
65
+ 'experimental-global-navigator': obj.experimentalGlobalNavigator,
66
+ 'experimental-import-meta-resolve': obj.experimentalImportMetaResolve,
67
+ 'experimental-loader': obj.experimentalLoader?.map(y => y),
68
+ 'experimental-print-required-tla': obj.experimentalPrintRequiredTla,
69
+ 'experimental-repl-await': obj.experimentalReplAwait,
70
+ 'experimental-require-module': obj.experimentalRequireModule,
71
+ 'experimental-shadow-realm': obj.experimentalShadowRealm,
72
+ 'experimental-sqlite': obj.experimentalSqlite,
73
+ 'experimental-transform-types': obj.experimentalTransformTypes,
74
+ 'experimental-vm-modules': obj.experimentalVmModules,
75
+ 'experimental-websocket': obj.experimentalWebsocket,
76
+ 'experimental-webstorage': obj.experimentalWebstorage,
77
+ 'extra-info-on-fatal-exception': obj.extraInfoOnFatalException,
78
+ 'force-async-hooks-checks': obj.forceAsyncHooksChecks,
79
+ 'force-context-aware': obj.forceContextAware,
80
+ 'force-fips': obj.forceFips,
81
+ 'force-node-api-uncaught-exceptions-policy': obj.forceNodeApiUncaughtExceptionsPolicy,
82
+ 'frozen-intrinsics': obj.frozenIntrinsics,
83
+ 'global-search-paths': obj.globalSearchPaths,
84
+ 'heap-prof': obj.heapProf,
85
+ 'heap-prof-dir': obj.heapProfDir,
86
+ 'heap-prof-interval': obj.heapProfInterval,
87
+ 'heap-prof-name': obj.heapProfName,
88
+ 'heapsnapshot-near-heap-limit': obj.heapsnapshotNearHeapLimit,
89
+ 'heapsnapshot-signal': obj.heapsnapshotSignal,
90
+ 'icu-data-dir': obj.icuDataDir,
91
+ 'import': obj.import?.map(y => y),
92
+ 'input-type': obj.inputType,
93
+ 'insecure-http-parser': obj.insecureHttpParser,
94
+ 'inspect': obj.inspect,
95
+ 'inspect-brk': obj.inspectBrk,
96
+ 'inspect-port': obj.inspectPort,
97
+ 'inspect-publish-uid': obj.inspectPublishUid,
98
+ 'inspect-wait': obj.inspectWait,
99
+ 'localstorage-file': obj.localstorageFile,
100
+ 'max-http-header-size': obj.maxHttpHeaderSize,
101
+ 'max-old-space-size-percentage': obj.maxOldSpaceSizePercentage,
102
+ 'network-family-autoselection': obj.networkFamilyAutoselection,
103
+ 'network-family-autoselection-attempt-timeout': obj.networkFamilyAutoselectionAttemptTimeout,
104
+ 'node-snapshot': obj.nodeSnapshot,
105
+ 'openssl-config': obj.opensslConfig,
106
+ 'openssl-legacy-provider': obj.opensslLegacyProvider,
107
+ 'openssl-shared-config': obj.opensslSharedConfig,
108
+ 'pending-deprecation': obj.pendingDeprecation,
109
+ 'permission': obj.permission,
110
+ 'preserve-symlinks': obj.preserveSymlinks,
111
+ 'preserve-symlinks-main': obj.preserveSymlinksMain,
112
+ 'redirect-warnings': obj.redirectWarnings,
113
+ 'report-compact': obj.reportCompact,
114
+ 'report-dir': obj.reportDir,
115
+ 'report-exclude-env': obj.reportExcludeEnv,
116
+ 'report-exclude-network': obj.reportExcludeNetwork,
117
+ 'report-filename': obj.reportFilename,
118
+ 'report-on-fatalerror': obj.reportOnFatalerror,
119
+ 'report-on-signal': obj.reportOnSignal,
120
+ 'report-signal': obj.reportSignal,
121
+ 'report-uncaught-exception': obj.reportUncaughtException,
122
+ 'require': obj.require?.map(y => y),
123
+ 'require-module': obj.requireModule,
124
+ 'secure-heap': obj.secureHeap,
125
+ 'secure-heap-min': obj.secureHeapMin,
126
+ 'snapshot-blob': obj.snapshotBlob,
127
+ 'stack-trace-limit': obj.stackTraceLimit,
128
+ 'strip-types': obj.stripTypes,
129
+ 'test-coverage-branches': obj.testCoverageBranches,
130
+ 'test-coverage-exclude': obj.testCoverageExclude?.map(y => y),
131
+ 'test-coverage-functions': obj.testCoverageFunctions,
132
+ 'test-coverage-include': obj.testCoverageInclude?.map(y => y),
133
+ 'test-coverage-lines': obj.testCoverageLines,
134
+ 'test-global-setup': obj.testGlobalSetup,
135
+ 'test-isolation': obj.testIsolation,
136
+ 'test-name-pattern': obj.testNamePattern?.map(y => y),
137
+ 'test-only': obj.testOnly,
138
+ 'test-random-seed': obj.testRandomSeed,
139
+ 'test-randomize': obj.testRandomize,
140
+ 'test-reporter': obj.testReporter?.map(y => y),
141
+ 'test-reporter-destination': obj.testReporterDestination?.map(y => y),
142
+ 'test-rerun-failures': obj.testRerunFailures,
143
+ 'test-shard': obj.testShard,
144
+ 'test-skip-pattern': obj.testSkipPattern?.map(y => y),
145
+ 'throw-deprecation': obj.throwDeprecation,
146
+ 'title': obj.title,
147
+ 'tls-cipher-list': obj.tlsCipherList,
148
+ 'tls-keylog': obj.tlsKeylog,
149
+ 'tls-max-v1.2': obj.tlsMaxV12,
150
+ 'tls-max-v1.3': obj.tlsMaxV13,
151
+ 'tls-min-v1.0': obj.tlsMinV10,
152
+ 'tls-min-v1.1': obj.tlsMinV11,
153
+ 'tls-min-v1.2': obj.tlsMinV12,
154
+ 'tls-min-v1.3': obj.tlsMinV13,
155
+ 'trace-deprecation': obj.traceDeprecation,
156
+ 'trace-env': obj.traceEnv,
157
+ 'trace-env-js-stack': obj.traceEnvJsStack,
158
+ 'trace-env-native-stack': obj.traceEnvNativeStack,
159
+ 'trace-event-categories': obj.traceEventCategories,
160
+ 'trace-event-file-pattern': obj.traceEventFilePattern,
161
+ 'trace-exit': obj.traceExit,
162
+ 'trace-promises': obj.tracePromises,
163
+ 'trace-require-module': obj.traceRequireModule,
164
+ 'trace-sigint': obj.traceSigint,
165
+ 'trace-sync-io': obj.traceSyncIo,
166
+ 'trace-tls': obj.traceTls,
167
+ 'trace-uncaught': obj.traceUncaught,
168
+ 'trace-warnings': obj.traceWarnings,
169
+ 'track-heap-objects': obj.trackHeapObjects,
170
+ 'unhandled-rejections': obj.unhandledRejections,
171
+ 'use-bundled-ca': obj.useBundledCa,
172
+ 'use-env-proxy': obj.useEnvProxy,
173
+ 'use-largepages': obj.useLargepages,
174
+ 'use-openssl-ca': obj.useOpensslCa,
175
+ 'use-system-ca': obj.useSystemCa,
176
+ 'v8-pool-size': obj.v8PoolSize,
177
+ 'verify-base-objects': obj.verifyBaseObjects,
178
+ 'warnings': obj.warnings,
179
+ 'watch': obj.watch,
180
+ 'watch-kill-signal': obj.watchKillSignal,
181
+ 'watch-path': obj.watchPath?.map(y => y),
182
+ 'watch-preserve-output': obj.watchPreserveOutput,
183
+ 'zero-fill-buffers': obj.zeroFillBuffers,
184
+ };
185
+ // filter undefined values
186
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
187
+ }
188
+ /**
189
+ * Converts an object of type 'NodeConfigSchemaPermission' to JSON representation.
190
+ * @internal
191
+ */
192
+ /* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
193
+ function toJson_NodeConfigSchemaPermission(obj) {
194
+ if (obj === undefined) {
195
+ return undefined;
196
+ }
197
+ const result = {
198
+ 'allow-addons': obj.allowAddons,
199
+ 'allow-child-process': obj.allowChildProcess,
200
+ 'allow-fs-read': obj.allowFsRead?.map(y => y),
201
+ 'allow-fs-write': obj.allowFsWrite?.map(y => y),
202
+ 'allow-inspector': obj.allowInspector,
203
+ 'allow-wasi': obj.allowWasi,
204
+ 'allow-worker': obj.allowWorker,
205
+ 'permission': obj.permission,
206
+ };
207
+ // filter undefined values
208
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
209
+ }
210
+ /**
211
+ * Converts an object of type 'NodeConfigSchemaTest' to JSON representation.
212
+ * @internal
213
+ */
214
+ /* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
215
+ function toJson_NodeConfigSchemaTest(obj) {
216
+ if (obj === undefined) {
217
+ return undefined;
218
+ }
219
+ const result = {
220
+ 'experimental-test-coverage': obj.experimentalTestCoverage,
221
+ 'experimental-test-module-mocks': obj.experimentalTestModuleMocks,
222
+ 'test': obj.test,
223
+ 'test-concurrency': obj.testConcurrency,
224
+ 'test-coverage-branches': obj.testCoverageBranches,
225
+ 'test-coverage-exclude': obj.testCoverageExclude?.map(y => y),
226
+ 'test-coverage-functions': obj.testCoverageFunctions,
227
+ 'test-coverage-include': obj.testCoverageInclude?.map(y => y),
228
+ 'test-coverage-lines': obj.testCoverageLines,
229
+ 'test-force-exit': obj.testForceExit,
230
+ 'test-global-setup': obj.testGlobalSetup,
231
+ 'test-isolation': obj.testIsolation,
232
+ 'test-name-pattern': obj.testNamePattern?.map(y => y),
233
+ 'test-only': obj.testOnly,
234
+ 'test-random-seed': obj.testRandomSeed,
235
+ 'test-randomize': obj.testRandomize,
236
+ 'test-reporter': obj.testReporter?.map(y => y),
237
+ 'test-reporter-destination': obj.testReporterDestination?.map(y => y),
238
+ 'test-rerun-failures': obj.testRerunFailures,
239
+ 'test-shard': obj.testShard,
240
+ 'test-skip-pattern': obj.testSkipPattern?.map(y => y),
241
+ 'test-timeout': obj.testTimeout,
242
+ 'test-update-snapshots': obj.testUpdateSnapshots,
243
+ };
244
+ // filter undefined values
245
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
246
+ }
247
+ /**
248
+ * Converts an object of type 'NodeConfigSchemaWatch' to JSON representation.
249
+ * @internal
250
+ */
251
+ /* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
252
+ function toJson_NodeConfigSchemaWatch(obj) {
253
+ if (obj === undefined) {
254
+ return undefined;
255
+ }
256
+ const result = {
257
+ 'watch': obj.watch,
258
+ 'watch-kill-signal': obj.watchKillSignal,
259
+ 'watch-path': obj.watchPath?.map(y => y),
260
+ 'watch-preserve-output': obj.watchPreserveOutput,
261
+ };
262
+ // filter undefined values
263
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
264
+ }
265
+ /* eslint-enable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
266
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YXNjcmlwdC9ub2RlLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQW9DQSwwREFXQztBQXdnQ0QsZ0ZBeUpDO0FBcUVELDhFQWNDO0FBNEtELGtFQTZCQztBQXlDRCxvRUFVQztBQWhnREQ7OztHQUdHO0FBQ0gscUZBQXFGO0FBQ3JGLFNBQWdCLHVCQUF1QixDQUFDLEdBQWlDO0lBQ3ZFLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsT0FBTyxTQUFTLENBQUM7SUFBQyxDQUFDO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsU0FBUyxFQUFFLEdBQUcsQ0FBQyxNQUFNO1FBQ3JCLGFBQWEsRUFBRSxrQ0FBa0MsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO1FBQ2xFLFlBQVksRUFBRSxpQ0FBaUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQy9ELE1BQU0sRUFBRSwyQkFBMkIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQzdDLE9BQU8sRUFBRSw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0tBQ2pELENBQUM7SUFDRiwwQkFBMEI7SUFDMUIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDMUcsQ0FBQztBQW1nQ0Q7OztHQUdHO0FBQ0gscUZBQXFGO0FBQ3JGLFNB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Q0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxRyxDQUFDO0FBb0NEOzs7R0FHRztBQUNILHFGQUFxRjtBQUNyRixTQUFnQiw0QkFBNEIsQ0FBQyxHQUFzQztJQUNqRixJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUFDLE9BQU8sU0FBUyxDQUFDO0lBQUMsQ0FBQztJQUM1QyxNQUFNLE1BQU0sR0FBRztRQUNiLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSztRQUNsQixtQkFBbUIsRUFBRSxHQUFHLENBQUMsZUFBZTtRQUN4QyxZQUFZLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLG1CQUFtQjtLQUNqRCxDQUFDO0lBQ0YsMEJBQTBCO0lBQzFCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFHLENBQUM7QUFDRCxvRkFBb0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJub2RlIC4vcHJvamVuLmpzXCIuXG4vKipcbiAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVDb25maWdTY2hlbWEge1xuICAvKipcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hIyRzY2hlbWFcbiAgICovXG4gIHJlYWRvbmx5IHNjaGVtYT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hI25vZGVPcHRpb25zXG4gICAqL1xuICByZWFkb25seSBub2RlT3B0aW9ucz86IE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucztcblxuICAvKipcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hI3Blcm1pc3Npb25cbiAgICovXG4gIHJlYWRvbmx5IHBlcm1pc3Npb24/OiBOb2RlQ29uZmlnU2NoZW1hUGVybWlzc2lvbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hI3Rlc3RcbiAgICovXG4gIHJlYWRvbmx5IHRlc3Q/OiBOb2RlQ29uZmlnU2NoZW1hVGVzdDtcblxuICAvKipcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hI3dhdGNoXG4gICAqL1xuICByZWFkb25seSB3YXRjaD86IE5vZGVDb25maWdTY2hlbWFXYXRjaDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnTm9kZUNvbmZpZ1NjaGVtYScgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX05vZGVDb25maWdTY2hlbWEob2JqOiBOb2RlQ29uZmlnU2NoZW1hIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnJHNjaGVtYSc6IG9iai5zY2hlbWEsXG4gICAgJ25vZGVPcHRpb25zJzogdG9Kc29uX05vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyhvYmoubm9kZU9wdGlvbnMpLFxuICAgICdwZXJtaXNzaW9uJzogdG9Kc29uX05vZGVDb25maWdTY2hlbWFQZXJtaXNzaW9uKG9iai5wZXJtaXNzaW9uKSxcbiAgICAndGVzdCc6IHRvSnNvbl9Ob2RlQ29uZmlnU2NoZW1hVGVzdChvYmoudGVzdCksXG4gICAgJ3dhdGNoJzogdG9Kc29uX05vZGVDb25maWdTY2hlbWFXYXRjaChvYmoud2F0Y2gpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMge1xuICAvKipcbiAgICogZGlzYWJsZSBsb2FkaW5nIG5hdGl2ZSBhZGRvbnNcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjYWRkb25zXG4gICAqL1xuICByZWFkb25seSBhZGRvbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBhbGxvdyB1c2Ugb2YgYWRkb25zIHdoZW4gYW55IHBlcm1pc3Npb25zIGFyZSBzZXRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjYWxsb3ctYWRkb25zXG4gICAqL1xuICByZWFkb25seSBhbGxvd0FkZG9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGFsbG93IHVzZSBvZiBjaGlsZCBwcm9jZXNzIHdoZW4gYW55IHBlcm1pc3Npb25zIGFyZSBzZXRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjYWxsb3ctY2hpbGQtcHJvY2Vzc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dDaGlsZFByb2Nlc3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBhbGxvdyBwZXJtaXNzaW9ucyB0byByZWFkIHRoZSBmaWxlc3lzdGVtXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2FsbG93LWZzLXJlYWRcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93RnNSZWFkPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIGFsbG93IHBlcm1pc3Npb25zIHRvIHdyaXRlIGluIHRoZSBmaWxlc3lzdGVtXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2FsbG93LWZzLXdyaXRlXG4gICAqL1xuICByZWFkb25seSBhbGxvd0ZzV3JpdGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogYWxsb3cgdXNlIG9mIGluc3BlY3RvciB3aGVuIGFueSBwZXJtaXNzaW9ucyBhcmUgc2V0XG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2FsbG93LWluc3BlY3RvclxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dJbnNwZWN0b3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBhbGxvdyB3YXNpIHdoZW4gYW55IHBlcm1pc3Npb25zIGFyZSBzZXRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjYWxsb3ctd2FzaVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dXYXNpPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogYWxsb3cgd29ya2VyIHRocmVhZHMgd2hlbiBhbnkgcGVybWlzc2lvbnMgYXJlIHNldFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNhbGxvdy13b3JrZXJcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93V29ya2VyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW1wcm92ZSBBc3luY0xvY2FsU3RvcmFnZSBwZXJmb3JtYW5jZSB3aXRoIEFzeW5jQ29udGV4dEZyYW1lXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2FzeW5jLWNvbnRleHQtZnJhbWVcbiAgICovXG4gIHJlYWRvbmx5IGFzeW5jQ29udGV4dEZyYW1lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogYWRkaXRpb25hbCB1c2VyIGNvbmRpdGlvbnMgZm9yIGNvbmRpdGlvbmFsIGV4cG9ydHMgYW5kIGltcG9ydHNcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjY29uZGl0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgY29uZGl0aW9ucz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTdGFydCB0aGUgVjggQ1BVIHByb2ZpbGVyIG9uIHN0YXJ0IHVwLCBhbmQgd3JpdGUgdGhlIENQVSBwcm9maWxlIHRvIGRpc2sgYmVmb3JlIGV4aXQuIElmIC0tY3B1LXByb2YtZGlyIGlzIG5vdCBzcGVjaWZpZWQsIHdyaXRlIHRoZSBwcm9maWxlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNjcHUtcHJvZlxuICAgKi9cbiAgcmVhZG9ubHkgY3B1UHJvZj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpcmVjdG9yeSB3aGVyZSB0aGUgVjggcHJvZmlsZXMgZ2VuZXJhdGVkIGJ5IC0tY3B1LXByb2Ygd2lsbCBiZSBwbGFjZWQuIERvZXMgbm90IGFmZmVjdCAtLXByb2YuXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2NwdS1wcm9mLWRpclxuICAgKi9cbiAgcmVhZG9ubHkgY3B1UHJvZkRpcj86IHN0cmluZztcblxuICAvKipcbiAgICogc3BlY2lmaWVkIHNhbXBsaW5nIGludGVydmFsIGluIG1pY3Jvc2Vjb25kcyBmb3IgdGhlIFY4IENQVSBwcm9maWxlIGdlbmVyYXRlZCB3aXRoIC0tY3B1LXByb2YuIChkZWZhdWx0OiAxMDAwKVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNjcHUtcHJvZi1pbnRlcnZhbFxuICAgKi9cbiAgcmVhZG9ubHkgY3B1UHJvZkludGVydmFsPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBzcGVjaWZpZWQgZmlsZSBuYW1lIG9mIHRoZSBWOCBDUFUgcHJvZmlsZSBnZW5lcmF0ZWQgd2l0aCAtLWNwdS1wcm9mXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2NwdS1wcm9mLW5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGNwdVByb2ZOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNkZWJ1Zy1hcnJheWJ1ZmZlci1hbGxvY2F0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVidWdBcnJheWJ1ZmZlckFsbG9jYXRpb25zPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogc2lsZW5jZSBkZXByZWNhdGlvbiB3YXJuaW5nc1xuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNkZXByZWNhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVwcmVjYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBzZXQgZGlyIGZvciBhbGwgb3V0cHV0IGZpbGVzIChkZWZhdWx0OiBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5KVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNkaWFnbm9zdGljLWRpclxuICAgKi9cbiAgcmVhZG9ubHkgZGlhZ25vc3RpY0Rpcj86IHN0cmluZztcblxuICAvKipcbiAgICogZGlzYWJsZSBPYmplY3QucHJvdG90eXBlLl9fcHJvdG9fX1xuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNkaXNhYmxlLXByb3RvXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlUHJvdG8/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERpc2FibGUgaW5zcGVjdG9yIHRocmVhZCB0byBiZSBsaXN0ZW5pbmcgZm9yIFNJR1VTUjEgc2lnbmFsXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2Rpc2FibGUtc2lndXNyMVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZVNpZ3VzcjE/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBzaWxlbmNlIHNwZWNpZmljIHByb2Nlc3Mgd2FybmluZ3NcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZGlzYWJsZS13YXJuaW5nXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlV2FybmluZz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBEaXNhYmxlIHRyYXAtaGFuZGxlci1iYXNlZCBXZWJBc3NlbWJseSBib3VuZCBjaGVja3MuIFY4IHdpbGwgaW5zZXJ0IGlubGluZSBib3VuZCBjaGVja3Mgd2hlbiBjb21waWxpbmcgV2ViQXNzZW1ibHkgd2hpY2ggbWF5IHNsb3cgZG93biBwZXJmb3JtYW5jZS5cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZGlzYWJsZS13YXNtLXRyYXAtaGFuZGxlclxuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZVdhc21UcmFwSGFuZGxlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHNldCBkZWZhdWx0IHZhbHVlIG9mIHZlcmJhdGltIGluIGRucy5sb29rdXAuIE9wdGlvbnMgYXJlICdpcHY0Zmlyc3QnIChJUHY0IGFkZHJlc3NlcyBhcmUgcGxhY2VkIGJlZm9yZSBJUHY2IGFkZHJlc3NlcykgJ2lwdjZmaXJzdCcgKElQdjYgYWRkcmVzc2VzIGFyZSBwbGFjZWQgYmVmb3JlIElQdjQgYWRkcmVzc2VzKSAndmVyYmF0aW0nIChhZGRyZXNzZXMgYXJlIGluIHRoZSBvcmRlciB0aGUgRE5TIHJlc29sdmVyIHJldHVybmVkKVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNkbnMtcmVzdWx0LW9yZGVyXG4gICAqL1xuICByZWFkb25seSBkbnNSZXN1bHRPcmRlcj86IHN0cmluZztcblxuICAvKipcbiAgICogZW5hYmxlIEZJUFMgY3J5cHRvIGF0IHN0YXJ0dXBcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZW5hYmxlLWZpcHNcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUZpcHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTb3VyY2UgTWFwIFYzIHN1cHBvcnQgZm9yIHN0YWNrIHRyYWNlc1xuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNlbmFibGUtc291cmNlLW1hcHNcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZVNvdXJjZU1hcHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUcmVhdCB0aGUgZW50cnlwb2ludCBhcyBhIFVSTFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNlbnRyeS11cmxcbiAgICovXG4gIHJlYWRvbmx5IGVudHJ5VXJsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZXhwZXJpbWVudGFsIGltcG9ydCBzdXBwb3J0IGZvciBhZGRvbnNcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZXhwZXJpbWVudGFsLWFkZG9uLW1vZHVsZXNcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbEFkZG9uTW9kdWxlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHdoZW4gYW1iaWd1b3VzIG1vZHVsZXMgZmFpbCB0byBldmFsdWF0ZSBiZWNhdXNlIHRoZXkgY29udGFpbiBFUyBtb2R1bGUgc3ludGF4LCB0cnkgYWdhaW4gdG8gZXZhbHVhdGUgdGhlbSBhcyBFUyBtb2R1bGVzXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2V4cGVyaW1lbnRhbC1kZXRlY3QtbW9kdWxlXG4gICAqL1xuICByZWFkb25seSBleHBlcmltZW50YWxEZXRlY3RNb2R1bGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBleHBlcmltZW50YWwgRXZlbnRTb3VyY2UgQVBJXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2V4cGVyaW1lbnRhbC1ldmVudHNvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhwZXJpbWVudGFsRXZlbnRzb3VyY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBleHBvc2UgZXhwZXJpbWVudGFsIE5hdmlnYXRvciBBUEkgb24gdGhlIGdsb2JhbCBzY29wZVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNleHBlcmltZW50YWwtZ2xvYmFsLW5hdmlnYXRvclxuICAgKi9cbiAgcmVhZG9ubHkgZXhwZXJpbWVudGFsR2xvYmFsTmF2aWdhdG9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZXhwZXJpbWVudGFsIEVTIE1vZHVsZSBpbXBvcnQubWV0YS5yZXNvbHZlKCkgcGFyZW50VVJMIHN1cHBvcnRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZXhwZXJpbWVudGFsLWltcG9ydC1tZXRhLXJlc29sdmVcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbEltcG9ydE1ldGFSZXNvbHZlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogdXNlIHRoZSBzcGVjaWZpZWQgbW9kdWxlIGFzIGEgY3VzdG9tIGxvYWRlclxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNleHBlcmltZW50YWwtbG9hZGVyXG4gICAqL1xuICByZWFkb25seSBleHBlcmltZW50YWxMb2FkZXI/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUHJpbnQgcGVuZGluZyB0b3AtbGV2ZWwgYXdhaXQuIElmIC0tcmVxdWlyZS1tb2R1bGUgaXMgdHJ1ZSwgZXZhbHVhdGUgYXN5bmNocm9ub3VzIGdyYXBocyBsb2FkZWQgYnkgYHJlcXVpcmUoKWAgYnV0IGRvIG5vdCBydW4gdGhlIG1pY3JvdGFza3MsIGluIG9yZGVyIHRvIHRvIGZpbmQgYW5kIHByaW50IHRvcC1sZXZlbCBhd2FpdCBpbiB0aGUgZ3JhcGhcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZXhwZXJpbWVudGFsLXByaW50LXJlcXVpcmVkLXRsYVxuICAgKi9cbiAgcmVhZG9ubHkgZXhwZXJpbWVudGFsUHJpbnRSZXF1aXJlZFRsYT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGV4cGVyaW1lbnRhbCBhd2FpdCBrZXl3b3JkIHN1cHBvcnQgaW4gUkVQTFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNleHBlcmltZW50YWwtcmVwbC1hd2FpdFxuICAgKi9cbiAgcmVhZG9ubHkgZXhwZXJpbWVudGFsUmVwbEF3YWl0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTGVnYWN5IGFsaWFzIGZvciAtLXJlcXVpcmUtbW9kdWxlXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2V4cGVyaW1lbnRhbC1yZXF1aXJlLW1vZHVsZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhwZXJpbWVudGFsUmVxdWlyZU1vZHVsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2V4cGVyaW1lbnRhbC1zaGFkb3ctcmVhbG1cbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbFNoYWRvd1JlYWxtPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZXhwZXJpbWVudGFsIG5vZGU6c3FsaXRlIG1vZHVsZVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNleHBlcmltZW50YWwtc3FsaXRlXG4gICAqL1xuICByZWFkb25seSBleHBlcmltZW50YWxTcWxpdGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBlbmFibGUgdHJhbnNmb3JtYXRpb24gb2YgVHlwZVNjcmlwdC1vbmx5c3ludGF4IGludG8gSmF2YVNjcmlwdCBjb2RlXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2V4cGVyaW1lbnRhbC10cmFuc2Zvcm0tdHlwZXNcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbFRyYW5zZm9ybVR5cGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZXhwZXJpbWVudGFsIEVTIE1vZHVsZSBzdXBwb3J0IGluIHZtIG1vZHVsZVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNleHBlcmltZW50YWwtdm0tbW9kdWxlc1xuICAgKi9cbiAgcmVhZG9ubHkgZXhwZXJpbWVudGFsVm1Nb2R1bGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZXhwZXJpbWVudGFsIFdlYlNvY2tldCBBUElcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZXhwZXJpbWVudGFsLXdlYnNvY2tldFxuICAgKi9cbiAgcmVhZG9ubHkgZXhwZXJpbWVudGFsV2Vic29ja2V0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZXhwZXJpbWVudGFsIFdlYiBTdG9yYWdlIEFQSVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNleHBlcmltZW50YWwtd2Vic3RvcmFnZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhwZXJpbWVudGFsV2Vic3RvcmFnZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGhpZGUgZXh0cmEgaW5mb3JtYXRpb24gb24gZmF0YWwgZXhjZXB0aW9uIHRoYXQgY2F1c2VzIGV4aXRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZXh0cmEtaW5mby1vbi1mYXRhbC1leGNlcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGV4dHJhSW5mb09uRmF0YWxFeGNlcHRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBkaXNhYmxlIGNoZWNrcyBmb3IgYXN5bmNfaG9va3NcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZm9yY2UtYXN5bmMtaG9va3MtY2hlY2tzXG4gICAqL1xuICByZWFkb25seSBmb3JjZUFzeW5jSG9va3NDaGVja3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBkaXNhYmxlIGxvYWRpbmcgbm9uLWNvbnRleHQtYXdhcmUgYWRkb25zXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2ZvcmNlLWNvbnRleHQtYXdhcmVcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlQ29udGV4dEF3YXJlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZm9yY2UgRklQUyBjcnlwdG8gKGNhbm5vdCBiZSBkaXNhYmxlZClcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZm9yY2UtZmlwc1xuICAgKi9cbiAgcmVhZG9ubHkgZm9yY2VGaXBzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZW5mb3JjZXMgJ3VuY2F1Z2h0RXhjZXB0aW9uJyBldmVudCBvbiBOb2RlIEFQSSBhc3luY2hyb25vdXMgY2FsbGJhY2tzXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2ZvcmNlLW5vZGUtYXBpLXVuY2F1Z2h0LWV4Y2VwdGlvbnMtcG9saWN5XG4gICAqL1xuICByZWFkb25seSBmb3JjZU5vZGVBcGlVbmNhdWdodEV4Y2VwdGlvbnNQb2xpY3k/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBleHBlcmltZW50YWwgZnJvemVuIGludHJpbnNpY3Mgc3VwcG9ydFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNmcm96ZW4taW50cmluc2ljc1xuICAgKi9cbiAgcmVhZG9ubHkgZnJvemVuSW50cmluc2ljcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGRpc2FibGUgZ2xvYmFsIG1vZHVsZSBzZWFyY2ggcGF0aHNcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZ2xvYmFsLXNlYXJjaC1wYXRoc1xuICAgKi9cbiAgcmVhZG9ubHkgZ2xvYmFsU2VhcmNoUGF0aHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTdGFydCB0aGUgVjggaGVhcCBwcm9maWxlciBvbiBzdGFydCB1cCwgYW5kIHdyaXRlIHRoZSBoZWFwIHByb2ZpbGUgdG8gZGlzayBiZWZvcmUgZXhpdC4gSWYgLS1oZWFwLXByb2YtZGlyIGlzIG5vdCBzcGVjaWZpZWQsIHdyaXRlIHRoZSBwcm9maWxlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNoZWFwLXByb2ZcbiAgICovXG4gIHJlYWRvbmx5IGhlYXBQcm9mPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGlyZWN0b3J5IHdoZXJlIHRoZSBWOCBoZWFwIHByb2ZpbGVzIGdlbmVyYXRlZCBieSAtLWhlYXAtcHJvZiB3aWxsIGJlIHBsYWNlZC5cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjaGVhcC1wcm9mLWRpclxuICAgKi9cbiAgcmVhZG9ubHkgaGVhcFByb2ZEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHNwZWNpZmllZCBzYW1wbGluZyBpbnRlcnZhbCBpbiBieXRlcyBmb3IgdGhlIFY4IGhlYXAgcHJvZmlsZSBnZW5lcmF0ZWQgd2l0aCAtLWhlYXAtcHJvZi4gKGRlZmF1bHQ6IDUxMiAqIDEwMjQpXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2hlYXAtcHJvZi1pbnRlcnZhbFxuICAgKi9cbiAgcmVhZG9ubHkgaGVhcFByb2ZJbnRlcnZhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogc3BlY2lmaWVkIGZpbGUgbmFtZSBvZiB0aGUgVjggaGVhcCBwcm9maWxlIGdlbmVyYXRlZCB3aXRoIC0taGVhcC1wcm9mXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2hlYXAtcHJvZi1uYW1lXG4gICAqL1xuICByZWFkb25seSBoZWFwUHJvZk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIGhlYXAgc25hcHNob3RzIHdoZW5ldmVyIFY4IGlzIGFwcHJvYWNoaW5nIHRoZSBoZWFwIGxpbWl0LiBObyBtb3JlIHRoYW4gdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgaGVhcCBzbmFwc2hvdHMgd2lsbCBiZSBnZW5lcmF0ZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2hlYXBzbmFwc2hvdC1uZWFyLWhlYXAtbGltaXRcbiAgICovXG4gIHJlYWRvbmx5IGhlYXBzbmFwc2hvdE5lYXJIZWFwTGltaXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIGhlYXAgc25hcHNob3Qgb24gc3BlY2lmaWVkIHNpZ25hbFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNoZWFwc25hcHNob3Qtc2lnbmFsXG4gICAqL1xuICByZWFkb25seSBoZWFwc25hcHNob3RTaWduYWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHNldCBJQ1UgZGF0YSBsb2FkIHBhdGggdG8gZGlyIChvdmVycmlkZXMgTk9ERV9JQ1VfREFUQSkgKG5vdGU6IGxpbmtlZC1pbiBJQ1UgZGF0YSBpcyBwcmVzZW50KVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNpY3UtZGF0YS1kaXJcbiAgICovXG4gIHJlYWRvbmx5IGljdURhdGFEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVTIG1vZHVsZSB0byBwcmVsb2FkIChvcHRpb24gY2FuIGJlIHJlcGVhdGVkKVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNpbXBvcnRcbiAgICovXG4gIHJlYWRvbmx5IGltcG9ydD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBzZXQgbW9kdWxlIHR5cGUgZm9yIHN0cmluZyBpbnB1dFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNpbnB1dC10eXBlXG4gICAqL1xuICByZWFkb25seSBpbnB1dFR5cGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHVzZSBhbiBpbnNlY3VyZSBIVFRQIHBhcnNlciB0aGF0IGFjY2VwdHMgaW52YWxpZCBIVFRQIGhlYWRlcnNcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjaW5zZWN1cmUtaHR0cC1wYXJzZXJcbiAgICovXG4gIHJlYWRvbmx5IGluc2VjdXJlSHR0cFBhcnNlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGFjdGl2YXRlIGluc3BlY3RvciBvbiBob3N0OnBvcnQgKGRlZmF1bHQ6IDEyNy4wLjAuMTo5MjI5KVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNpbnNwZWN0XG4gICAqL1xuICByZWFkb25seSBpbnNwZWN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogYWN0aXZhdGUgaW5zcGVjdG9yIG9uIGhvc3Q6cG9ydCBhbmQgYnJlYWsgYXQgc3RhcnQgb2YgdXNlciBzY3JpcHRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjaW5zcGVjdC1icmtcbiAgICovXG4gIHJlYWRvbmx5IGluc3BlY3RCcms/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBzZXQgaG9zdDpwb3J0IGZvciBpbnNwZWN0b3JcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjaW5zcGVjdC1wb3J0XG4gICAqL1xuICByZWFkb25seSBpbnNwZWN0UG9ydD86IG51bWJlcjtcblxuICAvKipcbiAgICogY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgZGVzdGluYXRpb25zIGZvciBpbnNwZWN0b3IgdWlkKGRlZmF1bHQ6IHN0ZGVycixodHRwKVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNpbnNwZWN0LXB1Ymxpc2gtdWlkXG4gICAqL1xuICByZWFkb25seSBpbnNwZWN0UHVibGlzaFVpZD86IHN0cmluZztcblxuICAvKipcbiAgICogYWN0aXZhdGUgaW5zcGVjdG9yIG9uIGhvc3Q6cG9ydCBhbmQgd2FpdCBmb3IgZGVidWdnZXIgdG8gYmUgYXR0YWNoZWRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjaW5zcGVjdC13YWl0XG4gICAqL1xuICByZWFkb25seSBpbnNwZWN0V2FpdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGZpbGUgdXNlZCB0byBwZXJzaXN0IGxvY2FsU3RvcmFnZSBkYXRhXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2xvY2Fsc3RvcmFnZS1maWxlXG4gICAqL1xuICByZWFkb25seSBsb2NhbHN0b3JhZ2VGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBzZXQgdGhlIG1heGltdW0gc2l6ZSBvZiBIVFRQIGhlYWRlcnMgKGRlZmF1bHQ6IDE2Mzg0ICgxNktCKSlcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjbWF4LWh0dHAtaGVhZGVyLXNpemVcbiAgICovXG4gIHJlYWRvbmx5IG1heEh0dHBIZWFkZXJTaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBzZXQgVjgncyBtYXggb2xkIHNwYWNlIHNpemUgYXMgYSBwZXJjZW50YWdlIG9mIGF2YWlsYWJsZSBtZW1vcnkgKGUuZy4sICc1MCUnKS4gVGFrZXMgcHJlY2VkZW5jZSBvdmVyIC0tbWF4LW9sZC1zcGFjZS1zaXplLlxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNtYXgtb2xkLXNwYWNlLXNpemUtcGVyY2VudGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4T2xkU3BhY2VTaXplUGVyY2VudGFnZT86IHN0cmluZztcblxuICAvKipcbiAgICogRGlzYWJsZSBuZXR3b3JrIGFkZHJlc3MgZmFtaWx5IGF1dG9kZXRlY3Rpb24gYWxnb3JpdGhtXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI25ldHdvcmstZmFtaWx5LWF1dG9zZWxlY3Rpb25cbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcmtGYW1pbHlBdXRvc2VsZWN0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0cyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIG5ldHdvcmsgZmFtaWx5IGF1dG9zZWxlY3Rpb24gYXR0ZW1wdCB0aW1lb3V0LlxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNuZXR3b3JrLWZhbWlseS1hdXRvc2VsZWN0aW9uLWF0dGVtcHQtdGltZW91dFxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya0ZhbWlseUF1dG9zZWxlY3Rpb25BdHRlbXB0VGltZW91dD86IG51bWJlcjtcblxuICAvKipcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjbm9kZS1zbmFwc2hvdFxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZVNuYXBzaG90PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogbG9hZCBPcGVuU1NMIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgc3BlY2lmaWVkIGZpbGUgKG92ZXJyaWRlcyBPUEVOU1NMX0NPTkYpXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI29wZW5zc2wtY29uZmlnXG4gICAqL1xuICByZWFkb25seSBvcGVuc3NsQ29uZmlnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBlbmFibGUgT3BlblNTTCAzLjAgbGVnYWN5IHByb3ZpZGVyXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI29wZW5zc2wtbGVnYWN5LXByb3ZpZGVyXG4gICAqL1xuICByZWFkb25seSBvcGVuc3NsTGVnYWN5UHJvdmlkZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBlbmFibGUgT3BlblNTTCBzaGFyZWQgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNvcGVuc3NsLXNoYXJlZC1jb25maWdcbiAgICovXG4gIHJlYWRvbmx5IG9wZW5zc2xTaGFyZWRDb25maWc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBlbWl0IHBlbmRpbmcgZGVwcmVjYXRpb24gd2FybmluZ3NcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjcGVuZGluZy1kZXByZWNhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcGVuZGluZ0RlcHJlY2F0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZW5hYmxlIHRoZSBwZXJtaXNzaW9uIHN5c3RlbVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNwZXJtaXNzaW9uXG4gICAqL1xuICByZWFkb25seSBwZXJtaXNzaW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogcHJlc2VydmUgc3ltYm9saWMgbGlua3Mgd2hlbiByZXNvbHZpbmdcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjcHJlc2VydmUtc3ltbGlua3NcbiAgICovXG4gIHJlYWRvbmx5IHByZXNlcnZlU3ltbGlua3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBwcmVzZXJ2ZSBzeW1ib2xpYyBsaW5rcyB3aGVuIHJlc29sdmluZyB0aGUgbWFpbiBtb2R1bGVcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjcHJlc2VydmUtc3ltbGlua3MtbWFpblxuICAgKi9cbiAgcmVhZG9ubHkgcHJlc2VydmVTeW1saW5rc01haW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiB3cml0ZSB3YXJuaW5ncyB0byBmaWxlIGluc3RlYWQgb2Ygc3RkZXJyXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3JlZGlyZWN0LXdhcm5pbmdzXG4gICAqL1xuICByZWFkb25seSByZWRpcmVjdFdhcm5pbmdzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBvdXRwdXQgY29tcGFjdCBzaW5nbGUtbGluZSBKU09OXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3JlcG9ydC1jb21wYWN0XG4gICAqL1xuICByZWFkb25seSByZXBvcnRDb21wYWN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZGVmaW5lIGN1c3RvbSByZXBvcnQgcGF0aG5hbWUuIChkZWZhdWx0OiBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5KVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNyZXBvcnQtZGlyXG4gICAqL1xuICByZWFkb25seSByZXBvcnREaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4Y2x1ZGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdoZW4gZ2VuZXJhdGluZyByZXBvcnQgKGRlZmF1bHQ6IGZhbHNlKVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNyZXBvcnQtZXhjbHVkZS1lbnZcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9ydEV4Y2x1ZGVFbnY/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBleGNsdWRlIG5ldHdvcmsgaW50ZXJmYWNlIGRpYWdub3N0aWNzLiAoZGVmYXVsdDogZmFsc2UpXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3JlcG9ydC1leGNsdWRlLW5ldHdvcmtcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9ydEV4Y2x1ZGVOZXR3b3JrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZGVmaW5lIGN1c3RvbSByZXBvcnQgZmlsZSBuYW1lLiAoZGVmYXVsdDogWVlZWU1NREQuSEhNTVNTLlBJRC5TRVFVRU5DRSMudHh0KVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNyZXBvcnQtZmlsZW5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9ydEZpbGVuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBnZW5lcmF0ZSBkaWFnbm9zdGljIHJlcG9ydCBvbiBmYXRhbCAoaW50ZXJuYWwpIGVycm9yc1xuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNyZXBvcnQtb24tZmF0YWxlcnJvclxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3J0T25GYXRhbGVycm9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZ2VuZXJhdGUgZGlhZ25vc3RpYyByZXBvcnQgdXBvbiByZWNlaXZpbmcgc2lnbmFsc1xuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNyZXBvcnQtb24tc2lnbmFsXG4gICAqL1xuICByZWFkb25seSByZXBvcnRPblNpZ25hbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGNhdXNlcyBkaWFnbm9zdGljIHJlcG9ydCB0byBiZSBwcm9kdWNlZCBvbiBwcm92aWRlZCBzaWduYWwsIHVuc3VwcG9ydGVkIGluIFdpbmRvd3MuIChkZWZhdWx0OiBTSUdVU1IyKVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNyZXBvcnQtc2lnbmFsXG4gICAqL1xuICByZWFkb25seSByZXBvcnRTaWduYWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGdlbmVyYXRlIGRpYWdub3N0aWMgcmVwb3J0IG9uIHVuY2F1Z2h0IGV4Y2VwdGlvbnNcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjcmVwb3J0LXVuY2F1Z2h0LWV4Y2VwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb21tb25KUyBtb2R1bGUgdG8gcHJlbG9hZCAob3B0aW9uIGNhbiBiZSByZXBlYXRlZClcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjcmVxdWlyZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBbGxvdyBsb2FkaW5nIHN5bmNocm9ub3VzIEVTIE1vZHVsZXMgaW4gcmVxdWlyZSgpLlxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNyZXF1aXJlLW1vZHVsZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZU1vZHVsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHRvdGFsIHNpemUgb2YgdGhlIE9wZW5TU0wgc2VjdXJlIGhlYXBcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjc2VjdXJlLWhlYXBcbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyZUhlYXA/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIG1pbmltdW0gYWxsb2NhdGlvbiBzaXplIGZyb20gdGhlIE9wZW5TU0wgc2VjdXJlIGhlYXBcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjc2VjdXJlLWhlYXAtbWluXG4gICAqL1xuICByZWFkb25seSBzZWN1cmVIZWFwTWluPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBzbmFwc2hvdCBibG9iIHRoYXQncyBlaXRoZXIgdGhlIHJlc3VsdCBvZiBzbmFwc2hvdGJ1aWxkaW5nLCBvciB0aGUgYmxvYiB0aGF0IGlzIHVzZWQgdG8gcmVzdG9yZSB0aGUgYXBwbGljYXRpb24gc3RhdGVcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjc25hcHNob3QtYmxvYlxuICAgKi9cbiAgcmVhZG9ubHkgc25hcHNob3RCbG9iPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNzdGFjay10cmFjZS1saW1pdFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tUcmFjZUxpbWl0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUeXBlLXN0cmlwcGluZyBmb3IgVHlwZVNjcmlwdCBmaWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjc3RyaXAtdHlwZXNcbiAgICovXG4gIHJlYWRvbmx5IHN0cmlwVHlwZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiB0aGUgYnJhbmNoIGNvdmVyYWdlIG1pbmltdW0gdGhyZXNob2xkXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3Rlc3QtY292ZXJhZ2UtYnJhbmNoZXNcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RDb3ZlcmFnZUJyYW5jaGVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBleGNsdWRlIGZpbGVzIGZyb20gY292ZXJhZ2UgcmVwb3J0IHRoYXQgbWF0Y2ggdGhpcyBnbG9iIHBhdHRlcm5cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdGVzdC1jb3ZlcmFnZS1leGNsdWRlXG4gICAqL1xuICByZWFkb25seSB0ZXN0Q292ZXJhZ2VFeGNsdWRlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIHRoZSBmdW5jdGlvbiBjb3ZlcmFnZSBtaW5pbXVtIHRocmVzaG9sZFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0ZXN0LWNvdmVyYWdlLWZ1bmN0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgdGVzdENvdmVyYWdlRnVuY3Rpb25zPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBpbmNsdWRlIGZpbGVzIGluIGNvdmVyYWdlIHJlcG9ydCB0aGF0IG1hdGNoIHRoaXMgZ2xvYiBwYXR0ZXJuXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3Rlc3QtY292ZXJhZ2UtaW5jbHVkZVxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdENvdmVyYWdlSW5jbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiB0aGUgbGluZSBjb3ZlcmFnZSBtaW5pbXVtIHRocmVzaG9sZFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0ZXN0LWNvdmVyYWdlLWxpbmVzXG4gICAqL1xuICByZWFkb25seSB0ZXN0Q292ZXJhZ2VMaW5lcz86IG51bWJlcjtcblxuICAvKipcbiAgICogc3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBnbG9iYWwgc2V0dXAgZmlsZVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0ZXN0LWdsb2JhbC1zZXR1cFxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdEdsb2JhbFNldHVwPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBjb25maWd1cmVzIHRoZSB0eXBlIG9mIHRlc3QgaXNvbGF0aW9uIHVzZWQgaW4gdGhlIHRlc3QgcnVubmVyXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3Rlc3QtaXNvbGF0aW9uXG4gICAqL1xuICByZWFkb25seSB0ZXN0SXNvbGF0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBydW4gdGVzdHMgd2hvc2UgbmFtZSBtYXRjaGVzIHRoaXMgcmVndWxhciBleHByZXNzaW9uXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3Rlc3QtbmFtZS1wYXR0ZXJuXG4gICAqL1xuICByZWFkb25seSB0ZXN0TmFtZVBhdHRlcm4/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogcnVuIHRlc3RzIHdpdGggJ29ubHknIG9wdGlvbiBzZXRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdGVzdC1vbmx5XG4gICAqL1xuICByZWFkb25seSB0ZXN0T25seT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHNlZWQgdXNlZCB0byByYW5kb21pemUgdGVzdCBleGVjdXRpb24gb3JkZXJcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdGVzdC1yYW5kb20tc2VlZFxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdFJhbmRvbVNlZWQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIHJ1biB0ZXN0cyBpbiBhIHJhbmRvbSBvcmRlclxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0ZXN0LXJhbmRvbWl6ZVxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdFJhbmRvbWl6ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHJlcG9ydCB0ZXN0IG91dHB1dCB1c2luZyB0aGUgZ2l2ZW4gcmVwb3J0ZXJcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdGVzdC1yZXBvcnRlclxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdFJlcG9ydGVyPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIHJlcG9ydCBnaXZlbiByZXBvcnRlciB0byB0aGUgZ2l2ZW4gZGVzdGluYXRpb25cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdGVzdC1yZXBvcnRlci1kZXN0aW5hdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdFJlcG9ydGVyRGVzdGluYXRpb24/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogc3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSByZXJ1biBzdGF0ZSBmaWxlXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3Rlc3QtcmVydW4tZmFpbHVyZXNcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RSZXJ1bkZhaWx1cmVzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBydW4gdGVzdCBhdCBzcGVjaWZpYyBzaGFyZFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0ZXN0LXNoYXJkXG4gICAqL1xuICByZWFkb25seSB0ZXN0U2hhcmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHJ1biB0ZXN0cyB3aG9zZSBuYW1lIGRvIG5vdCBtYXRjaCB0aGlzIHJlZ3VsYXIgZXhwcmVzc2lvblxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0ZXN0LXNraXAtcGF0dGVyblxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdFNraXBQYXR0ZXJuPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIHRocm93IGFuIGV4Y2VwdGlvbiBvbiBkZXByZWNhdGlvbnNcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdGhyb3ctZGVwcmVjYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHRocm93RGVwcmVjYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiB0aGUgcHJvY2VzcyB0aXRsZSB0byB1c2Ugb24gc3RhcnR1cFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0aXRsZVxuICAgKi9cbiAgcmVhZG9ubHkgdGl0bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHVzZSBhbiBhbHRlcm5hdGl2ZSBkZWZhdWx0IFRMUyBjaXBoZXIgbGlzdFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0bHMtY2lwaGVyLWxpc3RcbiAgICovXG4gIHJlYWRvbmx5IHRsc0NpcGhlckxpc3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGxvZyBUTFMgZGVjcnlwdGlvbiBrZXlzIHRvIG5hbWVkIGZpbGUgZm9yIHRyYWZmaWMgYW5hbHlzaXNcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdGxzLWtleWxvZ1xuICAgKi9cbiAgcmVhZG9ubHkgdGxzS2V5bG9nPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBzZXQgZGVmYXVsdCBUTFMgbWF4aW11bSB0byBUTFN2MS4yIChkZWZhdWx0OiBUTFN2MS4zKVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0bHMtbWF4LXYxLjJcbiAgICovXG4gIHJlYWRvbmx5IHRsc01heFYxMj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHNldCBkZWZhdWx0IFRMUyBtYXhpbXVtIHRvIFRMU3YxLjMgKGRlZmF1bHQ6IFRMU3YxLjMpXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3Rscy1tYXgtdjEuM1xuICAgKi9cbiAgcmVhZG9ubHkgdGxzTWF4VjEzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogc2V0IGRlZmF1bHQgVExTIG1pbmltdW0gdG8gVExTdjEuMCAoZGVmYXVsdDogVExTdjEuMilcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdGxzLW1pbi12MS4wXG4gICAqL1xuICByZWFkb25seSB0bHNNaW5WMTA/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBzZXQgZGVmYXVsdCBUTFMgbWluaW11bSB0byBUTFN2MS4xIChkZWZhdWx0OiBUTFN2MS4yKVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0bHMtbWluLXYxLjFcbiAgICovXG4gIHJlYWRvbmx5IHRsc01pblYxMT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHNldCBkZWZhdWx0IFRMUyBtaW5pbXVtIHRvIFRMU3YxLjIgKGRlZmF1bHQ6IFRMU3YxLjIpXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3Rscy1taW4tdjEuMlxuICAgKi9cbiAgcmVhZG9ubHkgdGxzTWluVjEyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogc2V0IGRlZmF1bHQgVExTIG1pbmltdW0gdG8gVExTdjEuMyAoZGVmYXVsdDogVExTdjEuMilcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdGxzLW1pbi12MS4zXG4gICAqL1xuICByZWFkb25seSB0bHNNaW5WMTM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBzaG93IHN0YWNrIHRyYWNlcyBvbiBkZXByZWNhdGlvbnNcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdHJhY2UtZGVwcmVjYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHRyYWNlRGVwcmVjYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQcmludCBhY2Nlc3NlcyB0byB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3RyYWNlLWVudlxuICAgKi9cbiAgcmVhZG9ubHkgdHJhY2VFbnY/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQcmludCBhY2Nlc3NlcyB0byB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFuZCB0aGUgSmF2YVNjcmlwdCBzdGFjayB0cmFjZVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0cmFjZS1lbnYtanMtc3RhY2tcbiAgICovXG4gIHJlYWRvbmx5IHRyYWNlRW52SnNTdGFjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFByaW50IGFjY2Vzc2VzIHRvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIHRoZSBuYXRpdmUgc3RhY2sgdHJhY2VcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdHJhY2UtZW52LW5hdGl2ZS1zdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgdHJhY2VFbnZOYXRpdmVTdGFjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIHRyYWNlIGV2ZW50IGNhdGVnb3JpZXMgdG8gcmVjb3JkXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3RyYWNlLWV2ZW50LWNhdGVnb3JpZXNcbiAgICovXG4gIHJlYWRvbmx5IHRyYWNlRXZlbnRDYXRlZ29yaWVzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUZW1wbGF0ZSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgZmlsZXBhdGggZm9yIHRoZSB0cmFjZS1ldmVudHMgZGF0YSwgaXQgc3VwcG9ydHMgJHtyb3RhdGlvbn0gYW5kICR7cGlkfS5cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdHJhY2UtZXZlbnQtZmlsZS1wYXR0ZXJuXG4gICAqL1xuICByZWFkb25seSB0cmFjZUV2ZW50RmlsZVBhdHRlcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHNob3cgc3RhY2sgdHJhY2Ugd2hlbiBhbiBlbnZpcm9ubWVudCBleGl0c1xuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0cmFjZS1leGl0XG4gICAqL1xuICByZWFkb25seSB0cmFjZUV4aXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBzaG93IHN0YWNrIHRyYWNlcyBvbiBwcm9taXNlIGluaXRpYWxpemF0aW9uIGFuZCByZXNvbHV0aW9uXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3RyYWNlLXByb21pc2VzXG4gICAqL1xuICByZWFkb25seSB0cmFjZVByb21pc2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUHJpbnQgYWNjZXNzIHRvIHJlcXVpcmUoZXNtKS4gT3B0aW9ucyBhcmUgJ2FsbCcgKHByaW50IGFsbCB1c2FnZSkgYW5kICduby1ub2RlLW1vZHVsZXMnIChleGNsdWRpbmcgdXNhZ2UgZnJvbSB0aGUgbm9kZV9tb2R1bGVzIGZvbGRlcilcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdHJhY2UtcmVxdWlyZS1tb2R1bGVcbiAgICovXG4gIHJlYWRvbmx5IHRyYWNlUmVxdWlyZU1vZHVsZT86IHN0cmluZztcblxuICAvKipcbiAgICogZW5hYmxlIHByaW50aW5nIEphdmFTY3JpcHQgc3RhY2t0cmFjZSBvbiBTSUdJTlRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdHJhY2Utc2lnaW50XG4gICAqL1xuICByZWFkb25seSB0cmFjZVNpZ2ludD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHNob3cgc3RhY2sgdHJhY2Ugd2hlbiB1c2Ugb2Ygc3luYyBJTyBpcyBkZXRlY3RlZCBhZnRlciB0aGUgZmlyc3QgdGlja1xuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0cmFjZS1zeW5jLWlvXG4gICAqL1xuICByZWFkb25seSB0cmFjZVN5bmNJbz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHByaW50cyBUTFMgcGFja2V0IHRyYWNlIGluZm9ybWF0aW9uIHRvIHN0ZGVyclxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0cmFjZS10bHNcbiAgICovXG4gIHJlYWRvbmx5IHRyYWNlVGxzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogc2hvdyBzdGFjayB0cmFjZXMgZm9yIHRoZSBgdGhyb3dgIGJlaGluZCB1bmNhdWdodCBleGNlcHRpb25zXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3RyYWNlLXVuY2F1Z2h0XG4gICAqL1xuICByZWFkb25seSB0cmFjZVVuY2F1Z2h0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogc2hvdyBzdGFjayB0cmFjZXMgb24gcHJvY2VzcyB3YXJuaW5nc1xuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0cmFjZS13YXJuaW5nc1xuICAgKi9cbiAgcmVhZG9ubHkgdHJhY2VXYXJuaW5ncz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHRyYWNrIGhlYXAgb2JqZWN0IGFsbG9jYXRpb25zIGZvciBoZWFwIHNuYXBzaG90c1xuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0cmFjay1oZWFwLW9iamVjdHNcbiAgICovXG4gIHJlYWRvbmx5IHRyYWNrSGVhcE9iamVjdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBkZWZpbmUgdW5oYW5kbGVkIHJlamVjdGlvbnMgYmVoYXZpb3IuIE9wdGlvbnMgYXJlICdzdHJpY3QnIChhbHdheXMgcmFpc2UgYW4gZXJyb3IpLCAndGhyb3cnIChyYWlzZSBhbiBlcnJvciB1bmxlc3MgJ3VuaGFuZGxlZFJlamVjdGlvbicgaG9vayBpcyBzZXQpLCAnd2FybicgKGxvZyBhIHdhcm5pbmcpLCAnbm9uZScgKHNpbGVuY2Ugd2FybmluZ3MpLCAnd2Fybi13aXRoLWVycm9yLWNvZGUnIChsb2cgYSB3YXJuaW5nIGFuZCBzZXQgZXhpdCBjb2RlIDEgdW5sZXNzICd1bmhhbmRsZWRSZWplY3Rpb24nIGhvb2sgaXMgc2V0KS4gKGRlZmF1bHQ6IHRocm93KVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN1bmhhbmRsZWQtcmVqZWN0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgdW5oYW5kbGVkUmVqZWN0aW9ucz86IHN0cmluZztcblxuICAvKipcbiAgICogdXNlIGJ1bmRsZWQgQ0Egc3RvcmUgKGRlZmF1bHQpXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3VzZS1idW5kbGVkLWNhXG4gICAqL1xuICByZWFkb25seSB1c2VCdW5kbGVkQ2E/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBwYXJzZSBwcm94eSBzZXR0aW5ncyBmcm9tIEhUVFBfUFJPWFkvSFRUUFNfUFJPWFkvTk9fUFJPWFllbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIGFwcGx5IHRoZSBzZXR0aW5nIGluIGdsb2JhbCBIVFRQL0hUVFBTIGNsaWVudHNcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdXNlLWVudi1wcm94eVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlRW52UHJveHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNYXAgdGhlIE5vZGUuanMgc3RhdGljIGNvZGUgdG8gbGFyZ2UgcGFnZXMuIE9wdGlvbnMgYXJlICdvZmYnICh0aGUgZGVmYXVsdCB2YWx1ZSwgbWVhbmluZyBkbyBub3QgbWFwKSwgJ29uJyAobWFwIGFuZCBpZ25vcmUgZmFpbHVyZSwgcmVwb3J0aW5nIGl0IHRvIHN0ZGVyciksIG9yICdzaWxlbnQnIChtYXAgYW5kIHNpbGVudGx5IGlnbm9yZSBmYWlsdXJlKVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN1c2UtbGFyZ2VwYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgdXNlTGFyZ2VwYWdlcz86IHN0cmluZztcblxuICAvKipcbiAgICogdXNlIE9wZW5TU0wncyBkZWZhdWx0IENBIHN0b3JlXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3VzZS1vcGVuc3NsLWNhXG4gICAqL1xuICByZWFkb25seSB1c2VPcGVuc3NsQ2E/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiB1c2Ugc3lzdGVtJ3MgQ0Egc3RvcmVcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdXNlLXN5c3RlbS1jYVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlU3lzdGVtQ2E/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBzZXQgVjgncyB0aHJlYWQgcG9vbCBzaXplXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3Y4LXBvb2wtc2l6ZVxuICAgKi9cbiAgcmVhZG9ubHkgdjhQb29sU2l6ZT86IG51bWJlcjtcblxuICAvKipcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdmVyaWZ5LWJhc2Utb2JqZWN0c1xuICAgKi9cbiAgcmVhZG9ubHkgdmVyaWZ5QmFzZU9iamVjdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBzaWxlbmNlIGFsbCBwcm9jZXNzIHdhcm5pbmdzXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3dhcm5pbmdzXG4gICAqL1xuICByZWFkb25seSB3YXJuaW5ncz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHJ1biBpbiB3YXRjaCBtb2RlXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3dhdGNoXG4gICAqL1xuICByZWFkb25seSB3YXRjaD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGtpbGwgc2lnbmFsIHRvIHNlbmQgdG8gdGhlIHByb2Nlc3Mgb24gd2F0Y2ggbW9kZSByZXN0YXJ0cyhkZWZhdWx0OiBTSUdURVJNKVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN3YXRjaC1raWxsLXNpZ25hbFxuICAgKi9cbiAgcmVhZG9ubHkgd2F0Y2hLaWxsU2lnbmFsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBwYXRoIHRvIHdhdGNoXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3dhdGNoLXBhdGhcbiAgICovXG4gIHJlYWRvbmx5IHdhdGNoUGF0aD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBwcmVzZXJ2ZSBvdXRwdXRzIG9uIHdhdGNoIG1vZGUgcmVzdGFydFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN3YXRjaC1wcmVzZXJ2ZS1vdXRwdXRcbiAgICovXG4gIHJlYWRvbmx5IHdhdGNoUHJlc2VydmVPdXRwdXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBhdXRvbWF0aWNhbGx5IHplcm8tZmlsbCBhbGwgbmV3bHkgYWxsb2NhdGVkIEJ1ZmZlciBpbnN0YW5jZXNcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjemVyby1maWxsLWJ1ZmZlcnNcbiAgICovXG4gIHJlYWRvbmx5IHplcm9GaWxsQnVmZmVycz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ05vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX05vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyhvYmo6IE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2FkZG9ucyc6IG9iai5hZGRvbnMsXG4gICAgJ2FsbG93LWFkZG9ucyc6IG9iai5hbGxvd0FkZG9ucyxcbiAgICAnYWxsb3ctY2hpbGQtcHJvY2Vzcyc6IG9iai5hbGxvd0NoaWxkUHJvY2VzcyxcbiAgICAnYWxsb3ctZnMtcmVhZCc6IG9iai5hbGxvd0ZzUmVhZD8ubWFwKHkgPT4geSksXG4gICAgJ2FsbG93LWZzLXdyaXRlJzogb2JqLmFsbG93RnNXcml0ZT8ubWFwKHkgPT4geSksXG4gICAgJ2FsbG93LWluc3BlY3Rvcic6IG9iai5hbGxvd0luc3BlY3RvcixcbiAgICAnYWxsb3ctd2FzaSc6IG9iai5hbGxvd1dhc2ksXG4gICAgJ2FsbG93LXdvcmtlcic6IG9iai5hbGxvd1dvcmtlcixcbiAgICAnYXN5bmMtY29udGV4dC1mcmFtZSc6IG9iai5hc3luY0NvbnRleHRGcmFtZSxcbiAgICAnY29uZGl0aW9ucyc6IG9iai5jb25kaXRpb25zPy5tYXAoeSA9PiB5KSxcbiAgICAnY3B1LXByb2YnOiBvYmouY3B1UHJvZixcbiAgICAnY3B1LXByb2YtZGlyJzogb2JqLmNwdVByb2ZEaXIsXG4gICAgJ2NwdS1wcm9mLWludGVydmFsJzogb2JqLmNwdVByb2ZJbnRlcnZhbCxcbiAgICAnY3B1LXByb2YtbmFtZSc6IG9iai5jcHVQcm9mTmFtZSxcbiAgICAnZGVidWctYXJyYXlidWZmZXItYWxsb2NhdGlvbnMnOiBvYmouZGVidWdBcnJheWJ1ZmZlckFsbG9jYXRpb25zLFxuICAgICdkZXByZWNhdGlvbic6IG9iai5kZXByZWNhdGlvbixcbiAgICAnZGlhZ25vc3RpYy1kaXInOiBvYmouZGlhZ25vc3RpY0RpcixcbiAgICAnZGlzYWJsZS1wcm90byc6IG9iai5kaXNhYmxlUHJvdG8sXG4gICAgJ2Rpc2FibGUtc2lndXNyMSc6IG9iai5kaXNhYmxlU2lndXNyMSxcbiAgICAnZGlzYWJsZS13YXJuaW5nJzogb2JqLmRpc2FibGVXYXJuaW5nPy5tYXAoeSA9PiB5KSxcbiAgICAnZGlzYWJsZS13YXNtLXRyYXAtaGFuZGxlcic6IG9iai5kaXNhYmxlV2FzbVRyYXBIYW5kbGVyLFxuICAgICdkbnMtcmVzdWx0LW9yZGVyJzogb2JqLmRuc1Jlc3VsdE9yZGVyLFxuICAgICdlbmFibGUtZmlwcyc6IG9iai5lbmFibGVGaXBzLFxuICAgICdlbmFibGUtc291cmNlLW1hcHMnOiBvYmouZW5hYmxlU291cmNlTWFwcyxcbiAgICAnZW50cnktdXJsJzogb2JqLmVudHJ5VXJsLFxuICAgICdleHBlcmltZW50YWwtYWRkb24tbW9kdWxlcyc6IG9iai5leHBlcmltZW50YWxBZGRvbk1vZHVsZXMsXG4gICAgJ2V4cGVyaW1lbnRhbC1kZXRlY3QtbW9kdWxlJzogb2JqLmV4cGVyaW1lbnRhbERldGVjdE1vZHVsZSxcbiAgICAnZXhwZXJpbWVudGFsLWV2ZW50c291cmNlJzogb2JqLmV4cGVyaW1lbnRhbEV2ZW50c291cmNlLFxuICAgICdleHBlcmltZW50YWwtZ2xvYmFsLW5hdmlnYXRvcic6IG9iai5leHBlcmltZW50YWxHbG9iYWxOYXZpZ2F0b3IsXG4gICAgJ2V4cGVyaW1lbnRhbC1pbXBvcnQtbWV0YS1yZXNvbHZlJzogb2JqLmV4cGVyaW1lbnRhbEltcG9ydE1ldGFSZXNvbHZlLFxuICAgICdleHBlcmltZW50YWwtbG9hZGVyJzogb2JqLmV4cGVyaW1lbnRhbExvYWRlcj8ubWFwKHkgPT4geSksXG4gICAgJ2V4cGVyaW1lbnRhbC1wcmludC1yZXF1aXJlZC10bGEnOiBvYmouZXhwZXJpbWVudGFsUHJpbnRSZXF1aXJlZFRsYSxcbiAgICAnZXhwZXJpbWVudGFsLXJlcGwtYXdhaXQnOiBvYmouZXhwZXJpbWVudGFsUmVwbEF3YWl0LFxuICAgICdleHBlcmltZW50YWwtcmVxdWlyZS1tb2R1bGUnOiBvYmouZXhwZXJpbWVudGFsUmVxdWlyZU1vZHVsZSxcbiAgICAnZXhwZXJpbWVudGFsLXNoYWRvdy1yZWFsbSc6IG9iai5leHBlcmltZW50YWxTaGFkb3dSZWFsbSxcbiAgICAnZXhwZXJpbWVudGFsLXNxbGl0ZSc6IG9iai5leHBlcmltZW50YWxTcWxpdGUsXG4gICAgJ2V4cGVyaW1lbnRhbC10cmFuc2Zvcm0tdHlwZXMnOiBvYmouZXhwZXJpbWVudGFsVHJhbnNmb3JtVHlwZXMsXG4gICAgJ2V4cGVyaW1lbnRhbC12bS1tb2R1bGVzJzogb2JqLmV4cGVyaW1lbnRhbFZtTW9kdWxlcyxcbiAgICAnZXhwZXJpbWVudGFsLXdlYnNvY2tldCc6IG9iai5leHBlcmltZW50YWxXZWJzb2NrZXQsXG4gICAgJ2V4cGVyaW1lbnRhbC13ZWJzdG9yYWdlJzogb2JqLmV4cGVyaW1lbnRhbFdlYnN0b3JhZ2UsXG4gICAgJ2V4dHJhLWluZm8tb24tZmF0YWwtZXhjZXB0aW9uJzogb2JqLmV4dHJhSW5mb09uRmF0YWxFeGNlcHRpb24sXG4gICAgJ2ZvcmNlLWFzeW5jLWhvb2tzLWNoZWNrcyc6IG9iai5mb3JjZUFzeW5jSG9va3NDaGVja3MsXG4gICAgJ2ZvcmNlLWNvbnRleHQtYXdhcmUnOiBvYmouZm9yY2VDb250ZXh0QXdhcmUsXG4gICAgJ2ZvcmNlLWZpcHMnOiBvYmouZm9yY2VGaXBzLFxuICAgICdmb3JjZS1ub2RlLWFwaS11bmNhdWdodC1leGNlcHRpb25zLXBvbGljeSc6IG9iai5mb3JjZU5vZGVBcGlVbmNhdWdodEV4Y2VwdGlvbnNQb2xpY3ksXG4gICAgJ2Zyb3plbi1pbnRyaW5zaWNzJzogb2JqLmZyb3plbkludHJpbnNpY3MsXG4gICAgJ2dsb2JhbC1zZWFyY2gtcGF0aHMnOiBvYmouZ2xvYmFsU2VhcmNoUGF0aHMsXG4gICAgJ2hlYXAtcHJvZic6IG9iai5oZWFwUHJvZixcbiAgICAnaGVhcC1wcm9mLWRpcic6IG9iai5oZWFwUHJvZkRpcixcbiAgICAnaGVhcC1wcm9mLWludGVydmFsJzogb2JqLmhlYXBQcm9mSW50ZXJ2YWwsXG4gICAgJ2hlYXAtcHJvZi1uYW1lJzogb2JqLmhlYXBQcm9mTmFtZSxcbiAgICAnaGVhcHNuYXBzaG90LW5lYXItaGVhcC1saW1pdCc6IG9iai5oZWFwc25hcHNob3ROZWFySGVhcExpbWl0LFxuICAgICdoZWFwc25hcHNob3Qtc2lnbmFsJzogb2JqLmhlYXBzbmFwc2hvdFNpZ25hbCxcbiAgICAnaWN1LWRhdGEtZGlyJzogb2JqLmljdURhdGFEaXIsXG4gICAgJ2ltcG9ydCc6IG9iai5pbXBvcnQ/Lm1hcCh5ID0+IHkpLFxuICAgICdpbnB1dC10eXBlJzogb2JqLmlucHV0VHlwZSxcbiAgICAnaW5zZWN1cmUtaHR0cC1wYXJzZXInOiBvYmouaW5zZWN1cmVIdHRwUGFyc2VyLFxuICAgICdpbnNwZWN0Jzogb2JqLmluc3BlY3QsXG4gICAgJ2luc3BlY3QtYnJrJzogb2JqLmluc3BlY3RCcmssXG4gICAgJ2luc3BlY3QtcG9ydCc6IG9iai5pbnNwZWN0UG9ydCxcbiAgICAnaW5zcGVjdC1wdWJsaXNoLXVpZCc6IG9iai5pbnNwZWN0UHVibGlzaFVpZCxcbiAgICAnaW5zcGVjdC13YWl0Jzogb2JqLmluc3BlY3RXYWl0LFxuICAgICdsb2NhbHN0b3JhZ2UtZmlsZSc6IG9iai5sb2NhbHN0b3JhZ2VGaWxlLFxuICAgICdtYXgtaHR0cC1oZWFkZXItc2l6ZSc6IG9iai5tYXhIdHRwSGVhZGVyU2l6ZSxcbiAgICAnbWF4LW9sZC1zcGFjZS1zaXplLXBlcmNlbnRhZ2UnOiBvYmoubWF4T2xkU3BhY2VTaXplUGVyY2VudGFnZSxcbiAgICAnbmV0d29yay1mYW1pbHktYXV0b3NlbGVjdGlvbic6IG9iai5uZXR3b3JrRmFtaWx5QXV0b3NlbGVjdGlvbixcbiAgICAnbmV0d29yay1mYW1pbHktYXV0b3NlbGVjdGlvbi1hdHRlbXB0LXRpbWVvdXQnOiBvYmoubmV0d29ya0ZhbWlseUF1dG9zZWxlY3Rpb25BdHRlbXB0VGltZW91dCxcbiAgICAnbm9kZS1zbmFwc2hvdCc6IG9iai5ub2RlU25hcHNob3QsXG4gICAgJ29wZW5zc2wtY29uZmlnJzogb2JqLm9wZW5zc2xDb25maWcsXG4gICAgJ29wZW5zc2wtbGVnYWN5LXByb3ZpZGVyJzogb2JqLm9wZW5zc2xMZWdhY3lQcm92aWRlcixcbiAgICAnb3BlbnNzbC1zaGFyZWQtY29uZmlnJzogb2JqLm9wZW5zc2xTaGFyZWRDb25maWcsXG4gICAgJ3BlbmRpbmctZGVwcmVjYXRpb24nOiBvYmoucGVuZGluZ0RlcHJlY2F0aW9uLFxuICAgICdwZXJtaXNzaW9uJzogb2JqLnBlcm1pc3Npb24sXG4gICAgJ3ByZXNlcnZlLXN5bWxpbmtzJzogb2JqLnByZXNlcnZlU3ltbGlua3MsXG4gICAgJ3ByZXNlcnZlLXN5bWxpbmtzLW1haW4nOiBvYmoucHJlc2VydmVTeW1saW5rc01haW4sXG4gICAgJ3JlZGlyZWN0LXdhcm5pbmdzJzogb2JqLnJlZGlyZWN0V2FybmluZ3MsXG4gICAgJ3JlcG9ydC1jb21wYWN0Jzogb2JqLnJlcG9ydENvbXBhY3QsXG4gICAgJ3JlcG9ydC1kaXInOiBvYmoucmVwb3J0RGlyLFxuICAgICdyZXBvcnQtZXhjbHVkZS1lbnYnOiBvYmoucmVwb3J0RXhjbHVkZUVudixcbiAgICAncmVwb3J0LWV4Y2x1ZGUtbmV0d29yayc6IG9iai5yZXBvcnRFeGNsdWRlTmV0d29yayxcbiAgICAncmVwb3J0LWZpbGVuYW1lJzogb2JqLnJlcG9ydEZpbGVuYW1lLFxuICAgICdyZXBvcnQtb24tZmF0YWxlcnJvcic6IG9iai5yZXBvcnRPbkZhdGFsZXJyb3IsXG4gICAgJ3JlcG9ydC1vbi1zaWduYWwnOiBvYmoucmVwb3J0T25TaWduYWwsXG4gICAgJ3JlcG9ydC1zaWduYWwnOiBvYmoucmVwb3J0U2lnbmFsLFxuICAgICdyZXBvcnQtdW5jYXVnaHQtZXhjZXB0aW9uJzogb2JqLnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uLFxuICAgICdyZXF1aXJlJzogb2JqLnJlcXVpcmU/Lm1hcCh5ID0+IHkpLFxuICAgICdyZXF1aXJlLW1vZHVsZSc6IG9iai5yZXF1aXJlTW9kdWxlLFxuICAgICdzZWN1cmUtaGVhcCc6IG9iai5zZWN1cmVIZWFwLFxuICAgICdzZWN1cmUtaGVhcC1taW4nOiBvYmouc2VjdXJlSGVhcE1pbixcbiAgICAnc25hcHNob3QtYmxvYic6IG9iai5zbmFwc2hvdEJsb2IsXG4gICAgJ3N0YWNrLXRyYWNlLWxpbWl0Jzogb2JqLnN0YWNrVHJhY2VMaW1pdCxcbiAgICAnc3RyaXAtdHlwZXMnOiBvYmouc3RyaXBUeXBlcyxcbiAgICAndGVzdC1jb3ZlcmFnZS1icmFuY2hlcyc6IG9iai50ZXN0Q292ZXJhZ2VCcmFuY2hlcyxcbiAgICAndGVzdC1jb3ZlcmFnZS1leGNsdWRlJzogb2JqLnRlc3RDb3ZlcmFnZUV4Y2x1ZGU/Lm1hcCh5ID0+IHkpLFxuICAgICd0ZXN0LWNvdmVyYWdlLWZ1bmN0aW9ucyc6IG9iai50ZXN0Q292ZXJhZ2VGdW5jdGlvbnMsXG4gICAgJ3Rlc3QtY292ZXJhZ2UtaW5jbHVkZSc6IG9iai50ZXN0Q292ZXJhZ2VJbmNsdWRlPy5tYXAoeSA9PiB5KSxcbiAgICAndGVzdC1jb3ZlcmFnZS1saW5lcyc6IG9iai50ZXN0Q292ZXJhZ2VMaW5lcyxcbiAgICAndGVzdC1nbG9iYWwtc2V0dXAnOiBvYmoudGVzdEdsb2JhbFNldHVwLFxuICAgICd0ZXN0LWlzb2xhdGlvbic6IG9iai50ZXN0SXNvbGF0aW9uLFxuICAgICd0ZXN0LW5hbWUtcGF0dGVybic6IG9iai50ZXN0TmFtZVBhdHRlcm4/Lm1hcCh5ID0+IHkpLFxuICAgICd0ZXN0LW9ubHknOiBvYmoudGVzdE9ubHksXG4gICAgJ3Rlc3QtcmFuZG9tLXNlZWQnOiBvYmoudGVzdFJhbmRvbVNlZWQsXG4gICAgJ3Rlc3QtcmFuZG9taXplJzogb2JqLnRlc3RSYW5kb21pemUsXG4gICAgJ3Rlc3QtcmVwb3J0ZXInOiBvYmoudGVzdFJlcG9ydGVyPy5tYXAoeSA9PiB5KSxcbiAgICAndGVzdC1yZXBvcnRlci1kZXN0aW5hdGlvbic6IG9iai50ZXN0UmVwb3J0ZXJEZXN0aW5hdGlvbj8ubWFwKHkgPT4geSksXG4gICAgJ3Rlc3QtcmVydW4tZmFpbHVyZXMnOiBvYmoudGVzdFJlcnVuRmFpbHVyZXMsXG4gICAgJ3Rlc3Qtc2hhcmQnOiBvYmoudGVzdFNoYXJkLFxuICAgICd0ZXN0LXNraXAtcGF0dGVybic6IG9iai50ZXN0U2tpcFBhdHRlcm4/Lm1hcCh5ID0+IHkpLFxuICAgICd0aHJvdy1kZXByZWNhdGlvbic6IG9iai50aHJvd0RlcHJlY2F0aW9uLFxuICAgICd0aXRsZSc6IG9iai50aXRsZSxcbiAgICAndGxzLWNpcGhlci1saXN0Jzogb2JqLnRsc0NpcGhlckxpc3QsXG4gICAgJ3Rscy1rZXlsb2cnOiBvYmoudGxzS2V5bG9nLFxuICAgICd0bHMtbWF4LXYxLjInOiBvYmoudGxzTWF4VjEyLFxuICAgICd0bHMtbWF4LXYxLjMnOiBvYmoudGxzTWF4VjEzLFxuICAgICd0bHMtbWluLXYxLjAnOiBvYmoudGxzTWluVjEwLFxuICAgICd0bHMtbWluLXYxLjEnOiBvYmoudGxzTWluVjExLFxuICAgICd0bHMtbWluLXYxLjInOiBvYmoudGxzTWluVjEyLFxuICAgICd0bHMtbWluLXYxLjMnOiBvYmoudGxzTWluVjEzLFxuICAgICd0cmFjZS1kZXByZWNhdGlvbic6IG9iai50cmFjZURlcHJlY2F0aW9uLFxuICAgICd0cmFjZS1lbnYnOiBvYmoudHJhY2VFbnYsXG4gICAgJ3RyYWNlLWVudi1qcy1zdGFjayc6IG9iai50cmFjZUVudkpzU3RhY2ssXG4gICAgJ3RyYWNlLWVudi1uYXRpdmUtc3RhY2snOiBvYmoudHJhY2VFbnZOYXRpdmVTdGFjayxcbiAgICAndHJhY2UtZXZlbnQtY2F0ZWdvcmllcyc6IG9iai50cmFjZUV2ZW50Q2F0ZWdvcmllcyxcbiAgICAndHJhY2UtZXZlbnQtZmlsZS1wYXR0ZXJuJzogb2JqLnRyYWNlRXZlbnRGaWxlUGF0dGVybixcbiAgICAndHJhY2UtZXhpdCc6IG9iai50cmFjZUV4aXQsXG4gICAgJ3RyYWNlLXByb21pc2VzJzogb2JqLnRyYWNlUHJvbWlzZXMsXG4gICAgJ3RyYWNlLXJlcXVpcmUtbW9kdWxlJzogb2JqLnRyYWNlUmVxdWlyZU1vZHVsZSxcbiAgICAndHJhY2Utc2lnaW50Jzogb2JqLnRyYWNlU2lnaW50LFxuICAgICd0cmFjZS1zeW5jLWlvJzogb2JqLnRyYWNlU3luY0lvLFxuICAgICd0cmFjZS10bHMnOiBvYmoudHJhY2VUbHMsXG4gICAgJ3RyYWNlLXVuY2F1Z2h0Jzogb2JqLnRyYWNlVW5jYXVnaHQsXG4gICAgJ3RyYWNlLXdhcm5pbmdzJzogb2JqLnRyYWNlV2FybmluZ3MsXG4gICAgJ3RyYWNrLWhlYXAtb2JqZWN0cyc6IG9iai50cmFja0hlYXBPYmplY3RzLFxuICAgICd1bmhhbmRsZWQtcmVqZWN0aW9ucyc6IG9iai51bmhhbmRsZWRSZWplY3Rpb25zLFxuICAgICd1c2UtYnVuZGxlZC1jYSc6IG9iai51c2VCdW5kbGVkQ2EsXG4gICAgJ3VzZS1lbnYtcHJveHknOiBvYmoudXNlRW52UHJveHksXG4gICAgJ3VzZS1sYXJnZXBhZ2VzJzogb2JqLnVzZUxhcmdlcGFnZXMsXG4gICAgJ3VzZS1vcGVuc3NsLWNhJzogb2JqLnVzZU9wZW5zc2xDYSxcbiAgICAndXNlLXN5c3RlbS1jYSc6IG9iai51c2VTeXN0ZW1DYSxcbiAgICAndjgtcG9vbC1zaXplJzogb2JqLnY4UG9vbFNpemUsXG4gICAgJ3ZlcmlmeS1iYXNlLW9iamVjdHMnOiBvYmoudmVyaWZ5QmFzZU9iamVjdHMsXG4gICAgJ3dhcm5pbmdzJzogb2JqLndhcm5pbmdzLFxuICAgICd3YXRjaCc6IG9iai53YXRjaCxcbiAgICAnd2F0Y2gta2lsbC1zaWduYWwnOiBvYmoud2F0Y2hLaWxsU2lnbmFsLFxuICAgICd3YXRjaC1wYXRoJzogb2JqLndhdGNoUGF0aD8ubWFwKHkgPT4geSksXG4gICAgJ3dhdGNoLXByZXNlcnZlLW91dHB1dCc6IG9iai53YXRjaFByZXNlcnZlT3V0cHV0LFxuICAgICd6ZXJvLWZpbGwtYnVmZmVycyc6IG9iai56ZXJvRmlsbEJ1ZmZlcnMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFQZXJtaXNzaW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZUNvbmZpZ1NjaGVtYVBlcm1pc3Npb24ge1xuICAvKipcbiAgICogYWxsb3cgdXNlIG9mIGFkZG9ucyB3aGVuIGFueSBwZXJtaXNzaW9ucyBhcmUgc2V0XG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVBlcm1pc3Npb24jYWxsb3ctYWRkb25zXG4gICAqL1xuICByZWFkb25seSBhbGxvd0FkZG9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGFsbG93IHVzZSBvZiBjaGlsZCBwcm9jZXNzIHdoZW4gYW55IHBlcm1pc3Npb25zIGFyZSBzZXRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hUGVybWlzc2lvbiNhbGxvdy1jaGlsZC1wcm9jZXNzXG4gICAqL1xuICByZWFkb25seSBhbGxvd0NoaWxkUHJvY2Vzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGFsbG93IHBlcm1pc3Npb25zIHRvIHJlYWQgdGhlIGZpbGVzeXN0ZW1cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hUGVybWlzc2lvbiNhbGxvdy1mcy1yZWFkXG4gICAqL1xuICByZWFkb25seSBhbGxvd0ZzUmVhZD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBhbGxvdyBwZXJtaXNzaW9ucyB0byB3cml0ZSBpbiB0aGUgZmlsZXN5c3RlbVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFQZXJtaXNzaW9uI2FsbG93LWZzLXdyaXRlXG4gICAqL1xuICByZWFkb25seSBhbGxvd0ZzV3JpdGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogYWxsb3cgdXNlIG9mIGluc3BlY3RvciB3aGVuIGFueSBwZXJtaXNzaW9ucyBhcmUgc2V0XG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVBlcm1pc3Npb24jYWxsb3ctaW5zcGVjdG9yXG4gICAqL1xuICByZWFkb25seSBhbGxvd0luc3BlY3Rvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGFsbG93IHdhc2kgd2hlbiBhbnkgcGVybWlzc2lvbnMgYXJlIHNldFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFQZXJtaXNzaW9uI2FsbG93LXdhc2lcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93V2FzaT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGFsbG93IHdvcmtlciB0aHJlYWRzIHdoZW4gYW55IHBlcm1pc3Npb25zIGFyZSBzZXRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hUGVybWlzc2lvbiNhbGxvdy13b3JrZXJcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93V29ya2VyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZW5hYmxlIHRoZSBwZXJtaXNzaW9uIHN5c3RlbVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFQZXJtaXNzaW9uI3Blcm1pc3Npb25cbiAgICovXG4gIHJlYWRvbmx5IHBlcm1pc3Npb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdOb2RlQ29uZmlnU2NoZW1hUGVybWlzc2lvbicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX05vZGVDb25maWdTY2hlbWFQZXJtaXNzaW9uKG9iajogTm9kZUNvbmZpZ1NjaGVtYVBlcm1pc3Npb24gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdhbGxvdy1hZGRvbnMnOiBvYmouYWxsb3dBZGRvbnMsXG4gICAgJ2FsbG93LWNoaWxkLXByb2Nlc3MnOiBvYmouYWxsb3dDaGlsZFByb2Nlc3MsXG4gICAgJ2FsbG93LWZzLXJlYWQnOiBvYmouYWxsb3dGc1JlYWQ/Lm1hcCh5ID0+IHkpLFxuICAgICdhbGxvdy1mcy13cml0ZSc6IG9iai5hbGxvd0ZzV3JpdGU/Lm1hcCh5ID0+IHkpLFxuICAgICdhbGxvdy1pbnNwZWN0b3InOiBvYmouYWxsb3dJbnNwZWN0b3IsXG4gICAgJ2FsbG93LXdhc2knOiBvYmouYWxsb3dXYXNpLFxuICAgICdhbGxvdy13b3JrZXInOiBvYmouYWxsb3dXb3JrZXIsXG4gICAgJ3Blcm1pc3Npb24nOiBvYmoucGVybWlzc2lvbixcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVRlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb2RlQ29uZmlnU2NoZW1hVGVzdCB7XG4gIC8qKlxuICAgKiBlbmFibGUgY29kZSBjb3ZlcmFnZSBpbiB0aGUgdGVzdCBydW5uZXJcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hVGVzdCNleHBlcmltZW50YWwtdGVzdC1jb3ZlcmFnZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhwZXJpbWVudGFsVGVzdENvdmVyYWdlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZW5hYmxlIG1vZHVsZSBtb2NraW5nIGluIHRoZSB0ZXN0IHJ1bm5lclxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFUZXN0I2V4cGVyaW1lbnRhbC10ZXN0LW1vZHVsZS1tb2Nrc1xuICAgKi9cbiAgcmVhZG9ubHkgZXhwZXJpbWVudGFsVGVzdE1vZHVsZU1vY2tzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hVGVzdCN0ZXN0XG4gICAqL1xuICByZWFkb25seSB0ZXN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogc3BlY2lmeSB0ZXN0IHJ1bm5lciBjb25jdXJyZW5jeVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFUZXN0I3Rlc3QtY29uY3VycmVuY3lcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RDb25jdXJyZW5jeT86IG51bWJlcjtcblxuICAvKipcbiAgICogdGhlIGJyYW5jaCBjb3ZlcmFnZSBtaW5pbXVtIHRocmVzaG9sZFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFUZXN0I3Rlc3QtY292ZXJhZ2UtYnJhbmNoZXNcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RDb3ZlcmFnZUJyYW5jaGVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBleGNsdWRlIGZpbGVzIGZyb20gY292ZXJhZ2UgcmVwb3J0IHRoYXQgbWF0Y2ggdGhpcyBnbG9iIHBhdHRlcm5cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hVGVzdCN0ZXN0LWNvdmVyYWdlLWV4Y2x1ZGVcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RDb3ZlcmFnZUV4Y2x1ZGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogdGhlIGZ1bmN0aW9uIGNvdmVyYWdlIG1pbmltdW0gdGhyZXNob2xkXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVRlc3QjdGVzdC1jb3ZlcmFnZS1mdW5jdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RDb3ZlcmFnZUZ1bmN0aW9ucz86IG51bWJlcjtcblxuICAvKipcbiAgICogaW5jbHVkZSBmaWxlcyBpbiBjb3ZlcmFnZSByZXBvcnQgdGhhdCBtYXRjaCB0aGlzIGdsb2IgcGF0dGVyblxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFUZXN0I3Rlc3QtY292ZXJhZ2UtaW5jbHVkZVxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdENvdmVyYWdlSW5jbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiB0aGUgbGluZSBjb3ZlcmFnZSBtaW5pbXVtIHRocmVzaG9sZFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFUZXN0I3Rlc3QtY292ZXJhZ2UtbGluZXNcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RDb3ZlcmFnZUxpbmVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBmb3JjZSB0ZXN0IHJ1bm5lciB0byBleGl0IHVwb24gY29tcGxldGlvblxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFUZXN0I3Rlc3QtZm9yY2UtZXhpdFxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdEZvcmNlRXhpdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgZ2xvYmFsIHNldHVwIGZpbGVcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hVGVzdCN0ZXN0LWdsb2JhbC1zZXR1cFxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdEdsb2JhbFNldHVwPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBjb25maWd1cmVzIHRoZSB0eXBlIG9mIHRlc3QgaXNvbGF0aW9uIHVzZWQgaW4gdGhlIHRlc3QgcnVubmVyXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVRlc3QjdGVzdC1pc29sYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHRlc3RJc29sYXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHJ1biB0ZXN0cyB3aG9zZSBuYW1lIG1hdGNoZXMgdGhpcyByZWd1bGFyIGV4cHJlc3Npb25cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hVGVzdCN0ZXN0LW5hbWUtcGF0dGVyblxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdE5hbWVQYXR0ZXJuPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIHJ1biB0ZXN0cyB3aXRoICdvbmx5JyBvcHRpb24gc2V0XG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVRlc3QjdGVzdC1vbmx5XG4gICAqL1xuICByZWFkb25seSB0ZXN0T25seT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHNlZWQgdXNlZCB0byByYW5kb21pemUgdGVzdCBleGVjdXRpb24gb3JkZXJcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hVGVzdCN0ZXN0LXJhbmRvbS1zZWVkXG4gICAqL1xuICByZWFkb25seSB0ZXN0UmFuZG9tU2VlZD86IG51bWJlcjtcblxuICAvKipcbiAgICogcnVuIHRlc3RzIGluIGEgcmFuZG9tIG9yZGVyXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVRlc3QjdGVzdC1yYW5kb21pemVcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RSYW5kb21pemU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiByZXBvcnQgdGVzdCBvdXRwdXQgdXNpbmcgdGhlIGdpdmVuIHJlcG9ydGVyXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVRlc3QjdGVzdC1yZXBvcnRlclxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdFJlcG9ydGVyPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIHJlcG9ydCBnaXZlbiByZXBvcnRlciB0byB0aGUgZ2l2ZW4gZGVzdGluYXRpb25cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hVGVzdCN0ZXN0LXJlcG9ydGVyLWRlc3RpbmF0aW9uXG4gICAqL1xuICByZWFkb25seSB0ZXN0UmVwb3J0ZXJEZXN0aW5hdGlvbj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBzcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIHJlcnVuIHN0YXRlIGZpbGVcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hVGVzdCN0ZXN0LXJlcnVuLWZhaWx1cmVzXG4gICAqL1xuICByZWFkb25seSB0ZXN0UmVydW5GYWlsdXJlcz86IHN0cmluZztcblxuICAvKipcbiAgICogcnVuIHRlc3QgYXQgc3BlY2lmaWMgc2hhcmRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hVGVzdCN0ZXN0LXNoYXJkXG4gICAqL1xuICByZWFkb25seSB0ZXN0U2hhcmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHJ1biB0ZXN0cyB3aG9zZSBuYW1lIGRvIG5vdCBtYXRjaCB0aGlzIHJlZ3VsYXIgZXhwcmVzc2lvblxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFUZXN0I3Rlc3Qtc2tpcC1wYXR0ZXJuXG4gICAqL1xuICByZWFkb25seSB0ZXN0U2tpcFBhdHRlcm4/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogc3BlY2lmeSB0ZXN0IHJ1bm5lciB0aW1lb3V0XG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVRlc3QjdGVzdC10aW1lb3V0XG4gICAqL1xuICByZWFkb25seSB0ZXN0VGltZW91dD86IG51bWJlcjtcblxuICAvKipcbiAgICogcmVnZW5lcmF0ZSB0ZXN0IHNuYXBzaG90c1xuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFUZXN0I3Rlc3QtdXBkYXRlLXNuYXBzaG90c1xuICAgKi9cbiAgcmVhZG9ubHkgdGVzdFVwZGF0ZVNuYXBzaG90cz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ05vZGVDb25maWdTY2hlbWFUZXN0JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fTm9kZUNvbmZpZ1NjaGVtYVRlc3Qob2JqOiBOb2RlQ29uZmlnU2NoZW1hVGVzdCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2V4cGVyaW1lbnRhbC10ZXN0LWNvdmVyYWdlJzogb2JqLmV4cGVyaW1lbnRhbFRlc3RDb3ZlcmFnZSxcbiAgICAnZXhwZXJpbWVudGFsLXRlc3QtbW9kdWxlLW1vY2tzJzogb2JqLmV4cGVyaW1lbnRhbFRlc3RNb2R1bGVNb2NrcyxcbiAgICAndGVzdCc6IG9iai50ZXN0LFxuICAgICd0ZXN0LWNvbmN1cnJlbmN5Jzogb2JqLnRlc3RDb25jdXJyZW5jeSxcbiAgICAndGVzdC1jb3ZlcmFnZS1icmFuY2hlcyc6IG9iai50ZXN0Q292ZXJhZ2VCcmFuY2hlcyxcbiAgICAndGVzdC1jb3ZlcmFnZS1leGNsdWRlJzogb2JqLnRlc3RDb3ZlcmFnZUV4Y2x1ZGU/Lm1hcCh5ID0+IHkpLFxuICAgICd0ZXN0LWNvdmVyYWdlLWZ1bmN0aW9ucyc6IG9iai50ZXN0Q292ZXJhZ2VGdW5jdGlvbnMsXG4gICAgJ3Rlc3QtY292ZXJhZ2UtaW5jbHVkZSc6IG9iai50ZXN0Q292ZXJhZ2VJbmNsdWRlPy5tYXAoeSA9PiB5KSxcbiAgICAndGVzdC1jb3ZlcmFnZS1saW5lcyc6IG9iai50ZXN0Q292ZXJhZ2VMaW5lcyxcbiAgICAndGVzdC1mb3JjZS1leGl0Jzogb2JqLnRlc3RGb3JjZUV4aXQsXG4gICAgJ3Rlc3QtZ2xvYmFsLXNldHVwJzogb2JqLnRlc3RHbG9iYWxTZXR1cCxcbiAgICAndGVzdC1pc29sYXRpb24nOiBvYmoudGVzdElzb2xhdGlvbixcbiAgICAndGVzdC1uYW1lLXBhdHRlcm4nOiBvYmoudGVzdE5hbWVQYXR0ZXJuPy5tYXAoeSA9PiB5KSxcbiAgICAndGVzdC1vbmx5Jzogb2JqLnRlc3RPbmx5LFxuICAgICd0ZXN0LXJhbmRvbS1zZWVkJzogb2JqLnRlc3RSYW5kb21TZWVkLFxuICAgICd0ZXN0LXJhbmRvbWl6ZSc6IG9iai50ZXN0UmFuZG9taXplLFxuICAgICd0ZXN0LXJlcG9ydGVyJzogb2JqLnRlc3RSZXBvcnRlcj8ubWFwKHkgPT4geSksXG4gICAgJ3Rlc3QtcmVwb3J0ZXItZGVzdGluYXRpb24nOiBvYmoudGVzdFJlcG9ydGVyRGVzdGluYXRpb24/Lm1hcCh5ID0+IHkpLFxuICAgICd0ZXN0LXJlcnVuLWZhaWx1cmVzJzogb2JqLnRlc3RSZXJ1bkZhaWx1cmVzLFxuICAgICd0ZXN0LXNoYXJkJzogb2JqLnRlc3RTaGFyZCxcbiAgICAndGVzdC1za2lwLXBhdHRlcm4nOiBvYmoudGVzdFNraXBQYXR0ZXJuPy5tYXAoeSA9PiB5KSxcbiAgICAndGVzdC10aW1lb3V0Jzogb2JqLnRlc3RUaW1lb3V0LFxuICAgICd0ZXN0LXVwZGF0ZS1zbmFwc2hvdHMnOiBvYmoudGVzdFVwZGF0ZVNuYXBzaG90cyxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVdhdGNoXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZUNvbmZpZ1NjaGVtYVdhdGNoIHtcbiAgLyoqXG4gICAqIHJ1biBpbiB3YXRjaCBtb2RlXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVdhdGNoI3dhdGNoXG4gICAqL1xuICByZWFkb25seSB3YXRjaD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGtpbGwgc2lnbmFsIHRvIHNlbmQgdG8gdGhlIHByb2Nlc3Mgb24gd2F0Y2ggbW9kZSByZXN0YXJ0cyhkZWZhdWx0OiBTSUdURVJNKVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFXYXRjaCN3YXRjaC1raWxsLXNpZ25hbFxuICAgKi9cbiAgcmVhZG9ubHkgd2F0Y2hLaWxsU2lnbmFsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBwYXRoIHRvIHdhdGNoXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVdhdGNoI3dhdGNoLXBhdGhcbiAgICovXG4gIHJlYWRvbmx5IHdhdGNoUGF0aD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBwcmVzZXJ2ZSBvdXRwdXRzIG9uIHdhdGNoIG1vZGUgcmVzdGFydFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFXYXRjaCN3YXRjaC1wcmVzZXJ2ZS1vdXRwdXRcbiAgICovXG4gIHJlYWRvbmx5IHdhdGNoUHJlc2VydmVPdXRwdXQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdOb2RlQ29uZmlnU2NoZW1hV2F0Y2gnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9Ob2RlQ29uZmlnU2NoZW1hV2F0Y2gob2JqOiBOb2RlQ29uZmlnU2NoZW1hV2F0Y2ggfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICd3YXRjaCc6IG9iai53YXRjaCxcbiAgICAnd2F0Y2gta2lsbC1zaWduYWwnOiBvYmoud2F0Y2hLaWxsU2lnbmFsLFxuICAgICd3YXRjaC1wYXRoJzogb2JqLndhdGNoUGF0aD8ubWFwKHkgPT4geSksXG4gICAgJ3dhdGNoLXByZXNlcnZlLW91dHB1dCc6IG9iai53YXRjaFByZXNlcnZlT3V0cHV0LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG4iXX0=
@@ -77,7 +77,7 @@ var CodeArtifactAuthProvider;
77
77
  * Represents the npm `package.json` file.
78
78
  */
79
79
  class NodePackage extends component_1.Component {
80
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.NodePackage", version: "0.103.3" };
80
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.NodePackage", version: "0.103.5" };
81
81
  /**
82
82
  * Returns the `NodePackage` instance associated with a project or `undefined` if
83
83
  * there is no NodePackage.
@@ -81,7 +81,7 @@ var AutoRelease;
81
81
  * @pjid node
82
82
  */
83
83
  class NodeProject extends github_1.GitHubProject {
84
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.NodeProject", version: "0.103.3" };
84
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.NodeProject", version: "0.103.5" };
85
85
  /**
86
86
  * API for managing the node package.
87
87
  */
@@ -8,7 +8,7 @@ const ini_1 = require("../ini");
8
8
  * File representing the local NPM config in .npmrc
9
9
  */
10
10
  class NpmConfig extends component_1.Component {
11
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.NpmConfig", version: "0.103.3" };
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.NpmConfig", version: "0.103.5" };
12
12
  /**
13
13
  * The config object. This object can be mutated until the project is
14
14
  * synthesized.
@@ -421,7 +421,7 @@ var PnpmWorkspaceYamlSchemaReporter;
421
421
  */
422
422
  class PnpmWorkspaceYamlSchemaLinkWorkspacePackages {
423
423
  value;
424
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYamlSchemaLinkWorkspacePackages", version: "0.103.3" };
424
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYamlSchemaLinkWorkspacePackages", version: "0.103.5" };
425
425
  static fromBoolean(value) {
426
426
  return new PnpmWorkspaceYamlSchemaLinkWorkspacePackages(value);
427
427
  }
@@ -440,7 +440,7 @@ exports.PnpmWorkspaceYamlSchemaLinkWorkspacePackages = PnpmWorkspaceYamlSchemaLi
440
440
  */
441
441
  class PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol {
442
442
  value;
443
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol", version: "0.103.3" };
443
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol", version: "0.103.5" };
444
444
  static fromBoolean(value) {
445
445
  return new PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol(value);
446
446
  }
@@ -11,7 +11,7 @@ const pnpm_workspace_config_1 = require("./pnpm-workspace-config");
11
11
  * @see https://pnpm.io/pnpm-workspace_yaml
12
12
  */
13
13
  class PnpmWorkspaceYaml extends component_1.Component {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYaml", version: "0.103.3" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYaml", version: "0.103.5" };
15
15
  /**
16
16
  * Returns the `PnpmWorkspaceYaml` instance associated with a project or
17
17
  * `undefined` if there is none.
@@ -113,7 +113,7 @@ var TrailingComma;
113
113
  * Represents prettier configuration.
114
114
  */
115
115
  class Prettier extends component_1.Component {
116
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Prettier", version: "0.103.3" };
116
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Prettier", version: "0.103.5" };
117
117
  static of(project) {
118
118
  const isPrettier = (c) => c instanceof Prettier;
119
119
  return project.components.find(isPrettier);
@@ -16,7 +16,7 @@ const biome_1 = require("./biome/biome");
16
16
  * and has no expectations around the project's main language.
17
17
  */
18
18
  class Projenrc extends projenrc_1.ProjenrcFile {
19
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Projenrc", version: "0.103.3" };
19
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Projenrc", version: "0.103.5" };
20
20
  filePath;
21
21
  constructor(project, options = {}) {
22
22
  super(project);
@@ -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.103.3" };
173
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.TypescriptConfigExtends", version: "0.103.5" };
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.103.3" };
207
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.TypescriptConfig", version: "0.103.5" };
208
208
  _extends;
209
209
  compilerOptions;
210
210
  includeSet;
@@ -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.103.3" };
22
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.UpgradeDependencies", version: "0.103.5" };
23
23
  /**
24
24
  * The workflows that execute the upgrades. One workflow per branch.
25
25
  */
@@ -406,7 +406,7 @@ exports.UpgradeDependencies = UpgradeDependencies;
406
406
  */
407
407
  class UpgradeDependenciesSchedule {
408
408
  cron;
409
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.UpgradeDependenciesSchedule", version: "0.103.3" };
409
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.UpgradeDependenciesSchedule", version: "0.103.5" };
410
410
  /**
411
411
  * Disables automatic upgrades.
412
412
  */
@@ -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.103.3" };
116
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Yarnrc", version: "0.103.5" };
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.103.3" };
37
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.JsonPatch", version: "0.103.5" };
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.103.3" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.JsonFile", version: "0.103.5" };
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.103.3" };
41
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.License", version: "0.103.5" };
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.103.3" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Logger", version: "0.103.5" };
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.103.3" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Makefile", version: "0.103.5" };
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.103.3" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ObjectFile", version: "0.103.5" };
13
13
  /**
14
14
  * The output object. This object can be mutated until the project is
15
15
  * synthesized.
@@ -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.103.3" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjectBuild", version: "0.103.5" };
19
19
  /**
20
20
  * The task responsible for a full release build.
21
21
  */