projen 0.101.13 → 0.101.15

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 (328) hide show
  1. package/.jsii +106 -35
  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/circleci/circleci.js +1 -1
  33. package/lib/cli/task-runtime.d.ts +34 -1
  34. package/lib/cli/task-runtime.js +99 -10
  35. package/lib/component.js +2 -2
  36. package/lib/dependencies.js +1 -1
  37. package/lib/dev-env.js +1 -1
  38. package/lib/docker-compose/docker-compose-service.js +1 -1
  39. package/lib/docker-compose/docker-compose.js +1 -1
  40. package/lib/file.js +1 -1
  41. package/lib/gitattributes.js +1 -1
  42. package/lib/github/actions-provider.js +1 -1
  43. package/lib/github/auto-approve.js +1 -1
  44. package/lib/github/auto-merge.js +1 -1
  45. package/lib/github/auto-queue.js +1 -1
  46. package/lib/github/dependabot.js +1 -1
  47. package/lib/github/dependency-review.js +1 -1
  48. package/lib/github/github-credentials.js +1 -1
  49. package/lib/github/github-project.js +1 -1
  50. package/lib/github/github.js +1 -1
  51. package/lib/github/merge-queue.js +1 -1
  52. package/lib/github/mergify.js +1 -1
  53. package/lib/github/pr-template.js +1 -1
  54. package/lib/github/pull-request-backport.js +1 -1
  55. package/lib/github/pull-request-lint.js +1 -1
  56. package/lib/github/stale.js +1 -1
  57. package/lib/github/task-workflow-job.js +1 -1
  58. package/lib/github/task-workflow.js +1 -1
  59. package/lib/github/workflow-actions.js +1 -1
  60. package/lib/github/workflow-jobs.js +1 -1
  61. package/lib/github/workflow-steps.js +1 -1
  62. package/lib/github/workflows.js +1 -1
  63. package/lib/gitlab/configuration.js +1 -1
  64. package/lib/gitlab/gitlab-configuration.js +1 -1
  65. package/lib/gitlab/nested-configuration.js +1 -1
  66. package/lib/gitpod.js +1 -1
  67. package/lib/ignore-file.js +1 -1
  68. package/lib/ini.js +1 -1
  69. package/lib/java/java-project.js +1 -1
  70. package/lib/java/junit.js +1 -1
  71. package/lib/java/maven-compile.js +1 -1
  72. package/lib/java/maven-packaging.js +1 -1
  73. package/lib/java/maven-sample.js +1 -1
  74. package/lib/java/pom.js +2 -2
  75. package/lib/java/projenrc.js +1 -1
  76. package/lib/javascript/biome/biome.js +1 -1
  77. package/lib/javascript/bundler.js +1 -1
  78. package/lib/javascript/eslint.js +1 -1
  79. package/lib/javascript/jest.js +4 -4
  80. package/lib/javascript/license-checker.js +1 -1
  81. package/lib/javascript/node-package.js +1 -1
  82. package/lib/javascript/node-project.js +1 -1
  83. package/lib/javascript/npm-config.js +1 -1
  84. package/lib/javascript/pnpm-workspace-config.js +2 -2
  85. package/lib/javascript/pnpm-workspace.js +1 -1
  86. package/lib/javascript/prettier.js +1 -1
  87. package/lib/javascript/projenrc.js +1 -1
  88. package/lib/javascript/typescript-config.js +2 -2
  89. package/lib/javascript/upgrade-dependencies.js +2 -2
  90. package/lib/javascript/yarnrc.js +1 -1
  91. package/lib/json-patch.js +1 -1
  92. package/lib/json.js +1 -1
  93. package/lib/license.js +1 -1
  94. package/lib/logger.js +1 -1
  95. package/lib/makefile.js +1 -1
  96. package/lib/object-file.js +1 -1
  97. package/lib/project-build.js +1 -1
  98. package/lib/project-tree.js +1 -1
  99. package/lib/project.js +1 -1
  100. package/lib/projects.js +1 -1
  101. package/lib/projenrc-json.js +1 -1
  102. package/lib/projenrc.js +1 -1
  103. package/lib/python/pip.js +1 -1
  104. package/lib/python/poetry.js +2 -2
  105. package/lib/python/projenrc.js +1 -1
  106. package/lib/python/pyproject-toml-file.js +1 -1
  107. package/lib/python/pytest-sample.js +1 -1
  108. package/lib/python/pytest.js +1 -1
  109. package/lib/python/python-project.js +1 -1
  110. package/lib/python/python-sample.js +1 -1
  111. package/lib/python/requirements-file.js +1 -1
  112. package/lib/python/setuppy.js +1 -1
  113. package/lib/python/setuptools.js +1 -1
  114. package/lib/python/uv-config.js +1 -1
  115. package/lib/python/uv.js +1 -1
  116. package/lib/python/venv.js +1 -1
  117. package/lib/readme.js +1 -1
  118. package/lib/release/apply-version-bump.task.js +48 -0
  119. package/lib/release/bump-version.d.ts +52 -8
  120. package/lib/release/bump-version.js +86 -116
  121. package/lib/release/publisher.js +1 -1
  122. package/lib/release/release-trigger.js +1 -1
  123. package/lib/release/release.js +1 -1
  124. package/lib/release/resolve-latest-tag.task.d.ts +1 -0
  125. package/lib/release/resolve-latest-tag.task.js +23 -0
  126. package/lib/release/suggest-version-bump.task.d.ts +1 -0
  127. package/lib/release/suggest-version-bump.task.js +25 -0
  128. package/lib/renovatebot.js +1 -1
  129. package/lib/run-task.cjs +118 -32
  130. package/lib/sample-file.js +2 -2
  131. package/lib/script-runner.js +1 -1
  132. package/lib/source-code.js +1 -1
  133. package/lib/task-model.d.ts +19 -0
  134. package/lib/task-model.js +1 -1
  135. package/lib/task-shell.js +1 -1
  136. package/lib/task.js +1 -1
  137. package/lib/tasks.js +1 -1
  138. package/lib/testing.js +1 -1
  139. package/lib/textfile.js +1 -1
  140. package/lib/toml.js +1 -1
  141. package/lib/typescript/projenrc-ts.js +1 -1
  142. package/lib/typescript/projenrc.js +1 -1
  143. package/lib/typescript/typescript-runner.js +1 -1
  144. package/lib/typescript/typescript-typedoc.js +1 -1
  145. package/lib/typescript/typescript.js +5 -5
  146. package/lib/util/exec.d.ts +1 -43
  147. package/lib/util/exec.js +4 -73
  148. package/lib/util/task-env.d.ts +11 -0
  149. package/lib/util/task-env.js +41 -0
  150. package/lib/version.d.ts +10 -0
  151. package/lib/version.js +47 -9
  152. package/lib/vscode/devcontainer.js +1 -1
  153. package/lib/vscode/extensions.js +1 -1
  154. package/lib/vscode/launch-config.js +1 -1
  155. package/lib/vscode/settings.js +1 -1
  156. package/lib/vscode/vscode.js +1 -1
  157. package/lib/web/next.js +3 -3
  158. package/lib/web/postcss.js +1 -1
  159. package/lib/web/react.js +3 -3
  160. package/lib/web/tailwind.js +1 -1
  161. package/lib/xmlfile.js +1 -1
  162. package/lib/yaml.js +1 -1
  163. package/node_modules/dax/{script/deps/jsr.io/@david/shell/0.5.4 → esm/deps/jsr.io/@david/shell/0.6.0}/internal.d.ts.map +1 -1
  164. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/mod.d.ts.map +1 -1
  165. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/byteRingBuffer.d.ts.map +1 -1
  166. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/command.d.ts.map +1 -1
  167. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commandHandler.d.ts.map +1 -1
  168. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/args.d.ts.map +1 -1
  169. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cat.d.ts.map +1 -1
  170. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cd.d.ts.map +1 -1
  171. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cpMv.d.ts.map +1 -1
  172. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/echo.d.ts.map +1 -1
  173. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/executable.d.ts.map +1 -1
  174. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/exit.d.ts.map +1 -1
  175. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/export.d.ts.map +1 -1
  176. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/mkdir.d.ts.map +1 -1
  177. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/printenv.d.ts.map +1 -1
  178. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/pwd.d.ts.map +1 -1
  179. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/rm.d.ts.map +1 -1
  180. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/set.d.ts.map +1 -1
  181. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/shopt.d.ts.map +1 -1
  182. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/sleep.d.ts.map +1 -1
  183. package/node_modules/dax/{script/deps/jsr.io/@david/shell/0.5.4 → esm/deps/jsr.io/@david/shell/0.6.0}/src/commands/test.d.ts.map +1 -1
  184. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/touch.d.ts.map +1 -1
  185. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/unset.d.ts.map +1 -1
  186. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/which.d.ts.map +1 -1
  187. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/common.d.ts.map +1 -1
  188. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/dollar.d.ts.map +1 -1
  189. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/fsFile.d.ts.map +1 -1
  190. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/glob.d.ts.map +1 -1
  191. package/node_modules/dax/esm/deps/jsr.io/@david/shell/0.6.0/src/lib/rs_lib.d.ts.map +1 -0
  192. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/lib/rs_lib.internal.d.ts.map +1 -1
  193. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/lineRingBuffer.d.ts.map +1 -1
  194. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/pipes.d.ts.map +1 -1
  195. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/result.d.ts.map +1 -1
  196. package/node_modules/dax/{script/deps/jsr.io/@david/shell/0.5.4 → esm/deps/jsr.io/@david/shell/0.6.0}/src/shell.d.ts +5 -1
  197. package/node_modules/dax/esm/deps/jsr.io/@david/shell/0.6.0/src/shell.d.ts.map +1 -0
  198. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/signal.d.ts.map +1 -1
  199. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/spawn.d.ts.map +1 -1
  200. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/streams.d.ts.map +1 -1
  201. package/node_modules/dax/esm/mod.d.ts +3 -3
  202. package/node_modules/dax/esm/mod.js +73 -41
  203. package/node_modules/dax/esm/src/common.d.ts +1 -1
  204. package/node_modules/dax/esm/src/console/utils.d.ts +1 -1
  205. package/node_modules/dax/esm/src/request.d.ts +2 -2
  206. package/node_modules/dax/package.json +1 -1
  207. package/node_modules/dax/{esm/deps/jsr.io/@david/shell/0.5.4 → script/deps/jsr.io/@david/shell/0.6.0}/internal.d.ts.map +1 -1
  208. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/mod.d.ts.map +1 -1
  209. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/byteRingBuffer.d.ts.map +1 -1
  210. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/command.d.ts.map +1 -1
  211. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commandHandler.d.ts.map +1 -1
  212. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/args.d.ts.map +1 -1
  213. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cat.d.ts.map +1 -1
  214. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cd.d.ts.map +1 -1
  215. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cpMv.d.ts.map +1 -1
  216. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/echo.d.ts.map +1 -1
  217. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/executable.d.ts.map +1 -1
  218. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/exit.d.ts.map +1 -1
  219. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/export.d.ts.map +1 -1
  220. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/mkdir.d.ts.map +1 -1
  221. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/printenv.d.ts.map +1 -1
  222. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/pwd.d.ts.map +1 -1
  223. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/rm.d.ts.map +1 -1
  224. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/set.d.ts.map +1 -1
  225. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/shopt.d.ts.map +1 -1
  226. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/sleep.d.ts.map +1 -1
  227. package/node_modules/dax/{esm/deps/jsr.io/@david/shell/0.5.4 → script/deps/jsr.io/@david/shell/0.6.0}/src/commands/test.d.ts.map +1 -1
  228. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/touch.d.ts.map +1 -1
  229. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/unset.d.ts.map +1 -1
  230. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/which.d.ts.map +1 -1
  231. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/common.d.ts.map +1 -1
  232. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/dollar.d.ts.map +1 -1
  233. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/fsFile.d.ts.map +1 -1
  234. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/glob.d.ts.map +1 -1
  235. package/node_modules/dax/script/deps/jsr.io/@david/shell/0.6.0/src/lib/rs_lib.d.ts.map +1 -0
  236. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/lib/rs_lib.internal.d.ts.map +1 -1
  237. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/lineRingBuffer.d.ts.map +1 -1
  238. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/pipes.d.ts.map +1 -1
  239. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/result.d.ts.map +1 -1
  240. package/node_modules/dax/{esm/deps/jsr.io/@david/shell/0.5.4 → script/deps/jsr.io/@david/shell/0.6.0}/src/shell.d.ts +5 -1
  241. package/node_modules/dax/script/deps/jsr.io/@david/shell/0.6.0/src/shell.d.ts.map +1 -0
  242. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/signal.d.ts.map +1 -1
  243. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/spawn.d.ts.map +1 -1
  244. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/streams.d.ts.map +1 -1
  245. package/node_modules/dax/script/mod.d.ts +3 -3
  246. package/node_modules/dax/script/mod.js +105 -73
  247. package/node_modules/dax/script/src/common.d.ts +1 -1
  248. package/node_modules/dax/script/src/console/utils.d.ts +1 -1
  249. package/node_modules/dax/script/src/request.d.ts +2 -2
  250. package/package.json +3 -2
  251. package/lib/release/bump-version.task.js +0 -90
  252. package/node_modules/dax/esm/deps/jsr.io/@david/shell/0.5.4/src/lib/rs_lib.d.ts.map +0 -1
  253. package/node_modules/dax/esm/deps/jsr.io/@david/shell/0.5.4/src/shell.d.ts.map +0 -1
  254. package/node_modules/dax/script/deps/jsr.io/@david/shell/0.5.4/src/lib/rs_lib.d.ts.map +0 -1
  255. package/node_modules/dax/script/deps/jsr.io/@david/shell/0.5.4/src/shell.d.ts.map +0 -1
  256. /package/lib/release/{bump-version.task.d.ts → apply-version-bump.task.d.ts} +0 -0
  257. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/internal.d.ts +0 -0
  258. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/mod.d.ts +0 -0
  259. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/byteRingBuffer.d.ts +0 -0
  260. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/command.d.ts +0 -0
  261. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commandHandler.d.ts +0 -0
  262. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/args.d.ts +0 -0
  263. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cat.d.ts +0 -0
  264. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cd.d.ts +0 -0
  265. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cpMv.d.ts +0 -0
  266. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/echo.d.ts +0 -0
  267. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/executable.d.ts +0 -0
  268. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/exit.d.ts +0 -0
  269. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/export.d.ts +0 -0
  270. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/mkdir.d.ts +0 -0
  271. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/printenv.d.ts +0 -0
  272. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/pwd.d.ts +0 -0
  273. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/rm.d.ts +0 -0
  274. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/set.d.ts +0 -0
  275. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/shopt.d.ts +0 -0
  276. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/sleep.d.ts +0 -0
  277. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/test.d.ts +0 -0
  278. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/touch.d.ts +0 -0
  279. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/unset.d.ts +0 -0
  280. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/which.d.ts +0 -0
  281. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/common.d.ts +0 -0
  282. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/dollar.d.ts +0 -0
  283. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/fsFile.d.ts +0 -0
  284. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/glob.d.ts +0 -0
  285. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/lib/rs_lib.d.ts +0 -0
  286. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/lib/rs_lib.internal.d.ts +0 -0
  287. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/lineRingBuffer.d.ts +0 -0
  288. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/pipes.d.ts +0 -0
  289. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/result.d.ts +0 -0
  290. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/signal.d.ts +0 -0
  291. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/spawn.d.ts +0 -0
  292. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/streams.d.ts +0 -0
  293. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/internal.d.ts +0 -0
  294. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/mod.d.ts +0 -0
  295. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/byteRingBuffer.d.ts +0 -0
  296. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/command.d.ts +0 -0
  297. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commandHandler.d.ts +0 -0
  298. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/args.d.ts +0 -0
  299. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cat.d.ts +0 -0
  300. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cd.d.ts +0 -0
  301. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cpMv.d.ts +0 -0
  302. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/echo.d.ts +0 -0
  303. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/executable.d.ts +0 -0
  304. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/exit.d.ts +0 -0
  305. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/export.d.ts +0 -0
  306. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/mkdir.d.ts +0 -0
  307. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/printenv.d.ts +0 -0
  308. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/pwd.d.ts +0 -0
  309. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/rm.d.ts +0 -0
  310. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/set.d.ts +0 -0
  311. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/shopt.d.ts +0 -0
  312. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/sleep.d.ts +0 -0
  313. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/test.d.ts +0 -0
  314. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/touch.d.ts +0 -0
  315. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/unset.d.ts +0 -0
  316. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/which.d.ts +0 -0
  317. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/common.d.ts +0 -0
  318. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/dollar.d.ts +0 -0
  319. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/fsFile.d.ts +0 -0
  320. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/glob.d.ts +0 -0
  321. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/lib/rs_lib.d.ts +0 -0
  322. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/lib/rs_lib.internal.d.ts +0 -0
  323. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/lineRingBuffer.d.ts +0 -0
  324. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/pipes.d.ts +0 -0
  325. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/result.d.ts +0 -0
  326. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/signal.d.ts +0 -0
  327. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/spawn.d.ts +0 -0
  328. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/streams.d.ts +0 -0
@@ -33,169 +33,139 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.bump = bump;
36
+ exports.resolveLatestTag = resolveLatestTag;
37
+ exports.suggestVersionBump = suggestVersionBump;
38
+ exports.applyVersionBump = applyVersionBump;
37
39
  const fs_1 = require("fs");
38
40
  const path_1 = require("path");
39
41
  const semver_1 = require("semver");
40
42
  const logging = __importStar(require("../logging"));
41
43
  const bump_type_1 = require("./bump-type");
42
- const exec_1 = require("../util/exec");
43
- const version_1 = require("../version");
44
44
  const commit_tag_version_1 = require("./commit-tag-version");
45
+ const exec_1 = require("../util/exec");
45
46
  /**
46
- * Resolves the latest version from git tags and uses `commit-and-tag-version` to bump
47
- * to the next version based on commits.
48
- *
49
- * This expects `commit-and-tag-version` to be installed in the path.
50
- *
51
- * @param cwd working directory (git repository)
52
- * @param options options
47
+ * Phase 1: resolve the latest tag/version and seed the version file (so the
48
+ * later phases can read the current version back from it).
53
49
  */
54
- async function bump(cwd, options) {
55
- const versionFile = (0, path_1.join)(cwd, options.versionFile);
56
- const prerelease = options.prerelease;
50
+ async function resolveLatestTag(cwd, options) {
57
51
  const major = options.majorVersion;
58
52
  const minor = options.minorVersion;
59
- const minMajorVersion = options.minMajorVersion;
60
- const tagPrefix = options.tagPrefix ?? "";
61
- const bumpFile = (0, path_1.join)(cwd, options.bumpFile);
62
- const changelogFile = (0, path_1.join)(cwd, options.changelog);
63
- const releaseTagFile = (0, path_1.join)(cwd, options.releaseTagFile);
64
- if (major && minMajorVersion) {
53
+ if (major && options.minMajorVersion) {
65
54
  throw new Error(`minMajorVersion and majorVersion cannot be used together.`);
66
55
  }
67
- if (options.nextVersionCommand && minMajorVersion) {
68
- throw new Error(`minMajorVersion and nextVersionCommand cannot be used together.`);
69
- }
70
56
  if (minor && !major) {
71
57
  throw new Error(`minorVersion and majorVersion must be used together.`);
72
58
  }
73
- await fs_1.promises.mkdir((0, path_1.dirname)(bumpFile), { recursive: true });
74
- await fs_1.promises.mkdir((0, path_1.dirname)(changelogFile), { recursive: true });
75
- await fs_1.promises.mkdir((0, path_1.dirname)(releaseTagFile), { recursive: true });
76
- const { latestVersion, latestTag, isFirstRelease } = determineLatestTag({
59
+ const versionFile = (0, path_1.join)(cwd, options.versionFile);
60
+ const context = determineLatestTag({
77
61
  cwd,
78
62
  major,
79
63
  minor,
80
- prerelease,
81
- prefix: tagPrefix,
64
+ prerelease: options.prerelease,
65
+ prefix: options.tagPrefix ?? "",
82
66
  });
83
- // Write the current version into the version file so that CATV will know the current version
67
+ // Write the current version into the version file so that CATV knows it and
68
+ // the later phases can read it back.
84
69
  const { contents, newline } = await tryReadVersionFile(versionFile);
85
- contents.version = latestVersion;
86
- logging.info(`Update ${versionFile} to latest resolved version: ${latestVersion}`);
70
+ contents.version = context.latestVersion;
71
+ logging.info(`Update ${versionFile} to resolved version: ${context.latestVersion}`);
87
72
  await fs_1.promises.writeFile(versionFile, JSON.stringify(contents, undefined, 2) + (newline ? "\n" : ""));
88
- // Determine the initial bump status. CATV will always do a patch even if
89
- // there are no commits, so look at commits ourselves first to decide
90
- // if we even should do nothing at all.
91
- const shouldRelease = isFirstRelease
92
- ? true
93
- : await hasNewInterestingCommits({
94
- cwd,
95
- latestTag,
96
- releasableCommits: options.releasableCommits,
97
- });
73
+ return context;
74
+ }
75
+ /**
76
+ * Phase 2: decide the bump from the commit history. Returns `none` when there
77
+ * is nothing releasable (or on a first release, which is handled by CATV).
78
+ */
79
+ async function suggestVersionBump(cwd, options) {
80
+ const isFirstRelease = !options.latestTag;
81
+ const latestVersion = await readCurrentVersion((0, path_1.join)(cwd, options.versionFile));
82
+ const numCommits = (options.releasableCommits ?? "")
83
+ .split("\n")
84
+ .filter((l) => l.trim()).length;
85
+ logging.info(`Number of commits since ${options.latestTag || "(first release)"}: ${numCommits}`);
86
+ if (isFirstRelease || numCommits === 0) {
87
+ if (!isFirstRelease) {
88
+ logging.info("No new interesting commits.");
89
+ }
90
+ return { bump: "none" };
91
+ }
98
92
  const catv = new commit_tag_version_1.CommitAndTagVersion(options.bumpPackage, cwd, {
99
- versionFile,
100
- changelogFile,
101
- prerelease,
93
+ versionFile: (0, path_1.join)(cwd, options.versionFile),
94
+ changelogFile: (0, path_1.join)(cwd, options.changelog),
95
+ prerelease: options.prerelease,
102
96
  configOptions: options.versionrcOptions,
103
- tagPrefix,
97
+ tagPrefix: options.tagPrefix ?? "",
104
98
  });
105
- // We used to translate `isFirstRelease` to the `--first-release` flag of CATV.
106
- // What that does is skip a bump, only generate the changelog.
107
- //
108
- // Our `{ bump: none }` does the same, so we don't need to carry over this
109
- // flag anymore.
110
- let bumpType = shouldRelease && !isFirstRelease
111
- ? (0, bump_type_1.relativeBumpType)(latestVersion, await catv.dryRun())
112
- : { bump: "none" };
113
- logging.info(`Bump from commits: ${(0, bump_type_1.renderBumpType)(bumpType)}`);
114
- if (options.nextVersionCommand) {
115
- const nextVersion = await exec_1.rawShell.capture(options.nextVersionCommand, {
116
- cwd,
117
- env: {
118
- VERSION: latestVersion,
119
- SUGGESTED_BUMP: (0, bump_type_1.renderBumpType)(bumpType),
120
- ...(latestTag ? { LATEST_TAG: latestTag } : {}),
121
- },
122
- });
123
- if (nextVersion) {
124
- try {
125
- bumpType = (0, bump_type_1.parseBumpType)(nextVersion);
126
- logging.info(`Bump from nextVersionCommand: ${(0, bump_type_1.renderBumpType)(bumpType)}`);
127
- }
128
- catch (e) {
129
- throw new Error(`nextVersionCommand "${options.nextVersionCommand}" returned invalid output: ${e}`);
130
- }
131
- }
132
- }
133
- // Respect minMajorVersion to correct the result of the nextVersionCommand
134
- if (minMajorVersion) {
99
+ return (0, bump_type_1.relativeBumpType)(latestVersion, await catv.dryRun());
100
+ }
101
+ /**
102
+ * Phase 3: apply the chosen bump - invoke CATV (or regenerate the changelog),
103
+ * enforce version constraints, and record the resulting version and tag.
104
+ */
105
+ async function applyVersionBump(cwd, options) {
106
+ const isFirstRelease = !options.latestTag;
107
+ const versionFile = (0, path_1.join)(cwd, options.versionFile);
108
+ const bumpFile = (0, path_1.join)(cwd, options.bumpFile);
109
+ const changelogFile = (0, path_1.join)(cwd, options.changelog);
110
+ const releaseTagFile = (0, path_1.join)(cwd, options.releaseTagFile);
111
+ const tagPrefix = options.tagPrefix ?? "";
112
+ const latestVersion = await readCurrentVersion(versionFile);
113
+ await fs_1.promises.mkdir((0, path_1.dirname)(bumpFile), { recursive: true });
114
+ await fs_1.promises.mkdir((0, path_1.dirname)(changelogFile), { recursive: true });
115
+ await fs_1.promises.mkdir((0, path_1.dirname)(releaseTagFile), { recursive: true });
116
+ let bumpType = options.bumpType;
117
+ // Respect minMajorVersion to correct the result of the nextVersionCommand.
118
+ if (options.minMajorVersion) {
135
119
  const bumpedVersion = (0, bump_type_1.performBump)(latestVersion, bumpType);
136
120
  const [majorVersion] = bumpedVersion.split(".");
137
- const majorVersionNumber = parseInt(majorVersion, 10);
138
- if (majorVersionNumber < minMajorVersion) {
139
- bumpType = { bump: "absolute", absolute: `${minMajorVersion}.0.0` };
121
+ if (parseInt(majorVersion, 10) < options.minMajorVersion) {
122
+ bumpType = {
123
+ bump: "absolute",
124
+ absolute: `${options.minMajorVersion}.0.0`,
125
+ };
140
126
  }
141
127
  }
142
- // Invoke CATV with the options we landed on. If we decided not to do a bump,
143
- // we will use this to regenerate the changelog of the most recent version.
128
+ const catv = new commit_tag_version_1.CommitAndTagVersion(options.bumpPackage, cwd, {
129
+ versionFile,
130
+ changelogFile,
131
+ prerelease: options.prerelease,
132
+ configOptions: options.versionrcOptions,
133
+ tagPrefix,
134
+ });
144
135
  const newRelease = bumpType.bump !== "none";
145
- // If we're not doing a new release and this is not the
146
- // first release, we're just regenerating the previous changelog again.
147
136
  if (!newRelease && !isFirstRelease) {
148
- await catv.regeneratePreviousChangeLog(latestVersion, latestTag);
137
+ // Regenerate the changelog of the most recent version.
138
+ await catv.regeneratePreviousChangeLog(latestVersion, options.latestTag);
149
139
  }
150
140
  else {
151
- // Otherwise we're either doing a bump + release, or we're releasing the
152
- // first version as 0.0.0 (which is already the number in the file so we
153
- // skip bumping).
141
+ // Bump + release, or release the first version (already in the file).
154
142
  await catv.invoke({
155
143
  releaseAs: newRelease ? (0, bump_type_1.renderBumpType)(bumpType) : undefined,
156
144
  skipBump: !newRelease,
157
145
  });
158
146
  }
159
- // Validate the version that we ended up with
160
147
  const newVersion = (await tryReadVersionFile(versionFile)).version;
161
148
  if (!newVersion) {
162
149
  throw new Error(`bump failed: ${versionFile} does not have a version set`);
163
150
  }
164
- if (major) {
165
- if (!newVersion.startsWith(`${major}.`)) {
166
- throw new Error(`bump failed: this branch is configured to only publish v${major} releases - bump resulted in ${newVersion}`);
167
- }
151
+ const major = options.majorVersion;
152
+ const minor = options.minorVersion;
153
+ if (major !== undefined && !newVersion.startsWith(`${major}.`)) {
154
+ throw new Error(`bump failed: this branch is configured to only publish v${major} releases - bump resulted in ${newVersion}`);
168
155
  }
169
- if (minor) {
170
- if (!newVersion.startsWith(`${major}.${minor}`)) {
171
- throw new Error(`bump failed: this branch is configured to only publish v${major}.${minor} releases - bump resulted in ${newVersion}`);
172
- }
156
+ if (minor !== undefined && !newVersion.startsWith(`${major}.${minor}`)) {
157
+ throw new Error(`bump failed: this branch is configured to only publish v${major}.${minor} releases - bump resulted in ${newVersion}`);
173
158
  }
174
- // Report curent status into the dist/ directory
175
159
  const newTag = `${tagPrefix}v${newVersion}`;
176
160
  await fs_1.promises.writeFile(bumpFile, newVersion);
177
161
  await fs_1.promises.writeFile(releaseTagFile, newTag);
178
162
  }
179
- /**
180
- * Determine based on releaseable commits whether we should release or not
181
- */
182
- async function hasNewInterestingCommits(options) {
183
- // `$LATEST_TAG` is provided to the command as an environment variable
184
- // (rather than interpolated into the command string), consistent with how
185
- // `nextVersionCommand` receives it.
186
- const findCommits = options.releasableCommits ?? version_1.ReleasableCommits.everyCommit().cmd;
187
- const commitsSinceLastTag = (await exec_1.rawShell.tryCapture(findCommits, {
188
- cwd: options.cwd,
189
- env: { LATEST_TAG: options.latestTag },
190
- }))?.split("\n");
191
- const numCommitsSinceLastTag = commitsSinceLastTag?.length ?? 0;
192
- logging.info(`Number of commits since ${options.latestTag}: ${numCommitsSinceLastTag}`);
193
- // Nothing to release right now
194
- if (numCommitsSinceLastTag === 0) {
195
- logging.info("No new interesting commits.");
196
- return false;
163
+ async function readCurrentVersion(versionFile) {
164
+ const { version } = await tryReadVersionFile(versionFile);
165
+ if (!version) {
166
+ throw new Error(`${versionFile} does not have a version set`);
197
167
  }
198
- return true;
168
+ return version;
199
169
  }
200
170
  async function tryReadVersionFile(versionFile) {
201
171
  if (!(0, fs_1.existsSync)(versionFile)) {
@@ -289,4 +259,4 @@ function determineLatestTag(options) {
289
259
  }
290
260
  return { latestVersion, latestTag, isFirstRelease };
291
261
  }
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVtcC12ZXJzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlbGVhc2UvYnVtcC12ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0pBLG9CQTBKQztBQTlTRCwyQkFBZ0Q7QUFDaEQsK0JBQXFDO0FBRXJDLG1DQUFpQztBQUNqQyxvREFBc0M7QUFFdEMsMkNBS3FCO0FBQ3JCLHVDQUE2QztBQUM3Qyx3Q0FBK0M7QUFDL0MsNkRBQTJEO0FBNkgzRDs7Ozs7Ozs7R0FRRztBQUNJLEtBQUssVUFBVSxJQUFJLENBQUMsR0FBVyxFQUFFLE9BQW9CO0lBQzFELE1BQU0sV0FBVyxHQUFHLElBQUEsV0FBSSxFQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUN0QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO0lBQ25DLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7SUFDbkMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQztJQUNoRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztJQUMxQyxNQUFNLFFBQVEsR0FBRyxJQUFBLFdBQUksRUFBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sYUFBYSxHQUFHLElBQUEsV0FBSSxFQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsTUFBTSxjQUFjLEdBQUcsSUFBQSxXQUFJLEVBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUV6RCxJQUFJLEtBQUssSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUM3QixNQUFNLElBQUksS0FBSyxDQUNiLDJE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XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB0eXBlIHsgQ29uZmlnIH0gZnJvbSBcImNvbnZlbnRpb25hbC1jaGFuZ2Vsb2ctY29uZmlnLXNwZWNcIjtcbmltcG9ydCB7IGNvbXBhcmUgfSBmcm9tIFwic2VtdmVyXCI7XG5pbXBvcnQgKiBhcyBsb2dnaW5nIGZyb20gXCIuLi9sb2dnaW5nXCI7XG5pbXBvcnQgdHlwZSB7IEJ1bXBUeXBlIH0gZnJvbSBcIi4vYnVtcC10eXBlXCI7XG5pbXBvcnQge1xuICBwYXJzZUJ1bXBUeXBlLFxuICBwZXJmb3JtQnVtcCxcbiAgcmVsYXRpdmVCdW1wVHlwZSxcbiAgcmVuZGVyQnVtcFR5cGUsXG59IGZyb20gXCIuL2J1bXAtdHlwZVwiO1xuaW1wb3J0IHsgZ2l0LCByYXdTaGVsbCB9IGZyb20gXCIuLi91dGlsL2V4ZWNcIjtcbmltcG9ydCB7IFJlbGVhc2FibGVDb21taXRzIH0gZnJvbSBcIi4uL3ZlcnNpb25cIjtcbmltcG9ydCB7IENvbW1pdEFuZFRhZ1ZlcnNpb24gfSBmcm9tIFwiLi9jb21taXQtdGFnLXZlcnNpb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBCdW1wT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiBhIC5qc29uIGZpbGUgdG8gc2V0IGB2ZXJzaW9uYC5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25GaWxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjaGFuZ2Vsb2cgZmlsZSB0byBnZW5lcmF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZWxvZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVc2UgYSBwcmUtcmVsZWFzZSBzdWZmaXguXG4gICAqIEBkZWZhdWx0IC0gbm9ybWFsIHZlcnNpb25pbmdcbiAgICovXG4gIHJlYWRvbmx5IHByZXJlbGVhc2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIG1ham9yIHZlcnNpb24gbGluZS4gVGhpcyBpcyB1c2VkIHRvIHNlbGVjdCB0aGUgbGF0ZXN0IHZlcnNpb25cbiAgICogYW5kIGFsc28gZW5mb3JjZSB0aGF0IG5ldyBtYWpvciB2ZXJzaW9ucyBhcmUgbm90IHJlbGVhc2VkIGFjY2lkZW50YWxseS5cbiAgICpcbiAgICogQ2FuIG5vdCBiZSBzZXQgdG9nZXRoZXIgd2l0aCBgbWluTWFqb3JWZXJzaW9uYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhbnkgdmVyc2lvbiBpcyBzdXBwb3J0ZWRcbiAgICovXG4gIHJlYWRvbmx5IG1ham9yVmVyc2lvbj86IG51bWJlcjtcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgbWluaW1hbCBtYWpvciB2ZXJzaW9uLiBUaGlzIGlzIHVzZWQgaWYgeW91IHdhbnQgdG8gc3RhcnQgd2l0aFxuICAgKiBhIHNwZWNpZmljIG1ham9yIHZlcnNpb24sIGFuZCBpbmNyZW1lbnQgZnJvbSB0aGVyZSBvbi5cbiAgICogVGhpcyBjYW4gYmUgdXNlZnVsIHRvIHNldCB0byAxLCBhcyBicmVha2luZyBjaGFuZ2VzIGJlZm9yZSB0aGUgMS54IG1ham9yXG4gICAqIHJlbGVhc2UgYXJlIG5vdCBpbmNyZW1lbnRpbmcgdGhlIG1ham9yIHZlcnNpb24gbnVtYmVyLlxuICAgKlxuICAgKiBDYW4gbm90IGJlIHNldCB0b2dldGhlciB3aXRoIGBtYWpvclZlcnNpb25gLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIG1pbmltdW0gdmVyc2lvbiBpcyBiZWluZyBlbmZvcmNlZFxuICAgKi9cbiAgcmVhZG9ubHkgbWluTWFqb3JWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBtaW5vciB2ZXJzaW9uIGxpbmUuIFRoaXMgaXMgdXNlZCB0byBzZWxlY3QgdGhlIGxhdGVzdCB2ZXJzaW9uXG4gICAqIGFuZCBhbHNvIGVuZm9yY2UgdGhhdCBuZXcgbWlub3IgdmVyc2lvbnMgYXJlIG5vdCByZWxlYXNlZCBhY2NpZGVudGFsbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYW55IHZlcnNpb24gaXMgc3VwcG9ydGVkXG4gICAqL1xuICByZWFkb25seSBtaW5vclZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIGEgZmlsZSB3aGljaCB3aWxsIGluY2x1ZGUgdGhlIG91dHB1dCB2ZXJzaW9uIG51bWJlciAoYSB0ZXh0IGZpbGUpLlxuICAgKlxuICAgKiBSZWxhdGl2ZSB0byBjd2QuXG4gICAqXG4gICAqIEBleGFtcGxlIFwiLnZlcnNpb24udHh0XCJcbiAgICovXG4gIHJlYWRvbmx5IGJ1bXBGaWxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBmaWxlIHdoaWNoIHdpbGwgaW5jbHVkZSB0aGUgcmVsZWFzZSB0YWcgKGEgdGV4dCBmaWxlKS5cbiAgICpcbiAgICogUmVsYXRpdmUgdG8gY3dkLlxuICAgKlxuICAgKiBAZXhhbXBsZSBcIi5yZWxlYXNldGFnLnR4dFwiXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlVGFnRmlsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IGFwcGxpZWQgdG8gcmVsZWFzZSB0YWdzLiBCdW1wcyB3aWxsIGJlIG1hZGUgYmFzZWQgb24gdGhlIGxhdGVzdFxuICAgKiB2ZXJzaW9uIGZvdW5kIHdpdGggdGhpcyBwcmVmaXguXG4gICAqL1xuICByZWFkb25seSB0YWdQcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gdmFsdWVzIHRoYXQgd291bGQgYXBwZW5kIHRvIHZlcnNpb25yYyBmaWxlIG9yIG92ZXJ3cml0ZSB2YWx1ZXNcbiAgICogY29taW5nIHRvIHRoYXQgZnJvbSBkZWZhdWx0IG9uZS5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25yY09wdGlvbnM/OiBDb25maWc7XG5cbiAgLyoqXG4gICAqIEEgc2hlbGwgY29tbWFuZCB0byBsaXN0IGFsbCByZWxlYXNlIGNvbW1pdHMgc2luY2UgdGhlIGxhdGVzdCB0YWcuXG4gICAqXG4gICAqIEEgbmV3IHJlbGVhc2Ugd2lsbCBiZSBpbml0aWF0ZWQsIGlmIHRoZSBudW1iZXIgb2YgcmV0dXJuZWQgY29tbWl0cyBpcyBncmVhdGVyIHRoYW4gemVyby5cbiAgICpcbiAgICogYCRMQVRFU1RfVEFHYCBpcyBhdmFpbGFibGUgYXMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgKHNldCB0byB0aGUgYWN0dWFsIGxhdGVzdCB0YWcgZm9yIHRoZSBnaXZlbiBwcmVmaXgpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImdpdCBsb2cgLS1vbmVsaW5lICRMQVRFU1RfVEFHLi5IRUFEXCJcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2FibGVDb21taXRzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYGNvbW1pdC1hbmQtdGFnLXZlcnNpb25gIGNvbXBhdGlibGUgcGFja2FnZSB1c2VkIHRvIGJ1bXAgdGhlIHBhY2thZ2UgdmVyc2lvbiwgYXMgYSBkZXBlbmRlbmN5IHN0cmluZy5cbiAgICpcbiAgICogVGhpcyBjYW4gYmUgYW55IGNvbXBhdGlibGUgcGFja2FnZSB2ZXJzaW9uLCBpbmNsdWRpbmcgdGhlIGRlcHJlY2F0ZWQgYHN0YW5kYXJkLXZlcnNpb25AOWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiY29tbWl0LWFuZC10YWctdmVyc2lvbkAxMlwiXG4gICAqL1xuICByZWFkb25seSBidW1wUGFja2FnZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBzaGVsbCBjb21tYW5kIHRvIGNvbnRyb2wgdGhlIG5leHQgdmVyc2lvbiB0byByZWxlYXNlLlxuICAgKlxuICAgKiBJZiBwcmVzZW50LCB0aGlzIHNoZWxsIGNvbW1hbmQgd2lsbCBiZSBydW4gYmVmb3JlIHRoZSBidW1wIGlzIGV4ZWN1dGVkLCBhbmRcbiAgICogaXQgZGV0ZXJtaW5lcyB3aGF0IHZlcnNpb24gdG8gcmVsZWFzZS4gSXQgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgZm9sbG93aW5nXG4gICAqIGVudmlyb25tZW50OlxuICAgKlxuICAgKiAtIFdvcmtpbmcgZGlyZWN0b3J5OiB0aGUgcHJvamVjdCBkaXJlY3RvcnkuXG4gICAqIC0gYCRWRVJTSU9OYDogdGhlIGN1cnJlbnQgdmVyc2lvbi4gTG9va3MgbGlrZSBgMS4yLjNgLlxuICAgKiAtIGAkTEFURVNUX1RBR2A6IHRoZSBtb3N0IHJlY2VudCB0YWcuIExvb2tzIGxpa2UgYHByZWZpeC12MS4yLjNgLCBvciBtYXkgYmUgdW5zZXQuXG4gICAqXG4gICAqIFRoZSBjb21tYW5kIHNob3VsZCBwcmludCBvbmUgb2YgdGhlIGZvbGxvd2luZyB0byBgc3Rkb3V0YDpcbiAgICpcbiAgICogLSBOb3RoaW5nOiB0aGUgbmV4dCB2ZXJzaW9uIG51bWJlciB3aWxsIGJlIGRldGVybWluZWQgYmFzZWQgb24gY29tbWl0IGhpc3RvcnkuXG4gICAqIC0gYHgueS56YDogdGhlIG5leHQgdmVyc2lvbiBudW1iZXIgd2lsbCBiZSBgeC55LnpgLlxuICAgKiAtIGBtYWpvcnxtaW5vcnxwYXRjaGA6IHRoZSBuZXh0IHZlcnNpb24gbnVtYmVyIHdpbGwgYmUgdGhlIGN1cnJlbnQgdmVyc2lvbiBudW1iZXJcbiAgICogICB3aXRoIHRoZSBpbmRpY2F0ZWQgY29tcG9uZW50IGJ1bXBlZC5cbiAgICpcbiAgICogVGhpcyBzZXR0aW5nIGNhbm5vdCBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBgbWluTWFqb3JWZXJzaW9uYDsgdGhlIGludm9rZWRcbiAgICogc2NyaXB0IGNhbiBiZSB1c2VkIHRvIGFjaGlldmUgdGhlIGVmZmVjdHMgb2YgYG1pbk1ham9yVmVyc2lvbmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVGhlIG5leHQgdmVyc2lvbiB3aWxsIGJlIGRldGVybWluZWQgYmFzZWQgb24gdGhlIGNvbW1pdCBoaXN0b3J5IGFuZCBwcm9qZWN0IHNldHRpbmdzLlxuICAgKi9cbiAgcmVhZG9ubHkgbmV4dFZlcnNpb25Db21tYW5kPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tIGdpdCB0YWdzIGFuZCB1c2VzIGBjb21taXQtYW5kLXRhZy12ZXJzaW9uYCB0byBidW1wXG4gKiB0byB0aGUgbmV4dCB2ZXJzaW9uIGJhc2VkIG9uIGNvbW1pdHMuXG4gKlxuICogVGhpcyBleHBlY3RzIGBjb21taXQtYW5kLXRhZy12ZXJzaW9uYCB0byBiZSBpbnN0YWxsZWQgaW4gdGhlIHBhdGguXG4gKlxuICogQHBhcmFtIGN3ZCB3b3JraW5nIGRpcmVjdG9yeSAoZ2l0IHJlcG9zaXRvcnkpXG4gKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidW1wKGN3ZDogc3RyaW5nLCBvcHRpb25zOiBCdW1wT3B0aW9ucykge1xuICBjb25zdCB2ZXJzaW9uRmlsZSA9IGpvaW4oY3dkLCBvcHRpb25zLnZlcnNpb25GaWxlKTtcbiAgY29uc3QgcHJlcmVsZWFzZSA9IG9wdGlvbnMucHJlcmVsZWFzZTtcbiAgY29uc3QgbWFqb3IgPSBvcHRpb25zLm1ham9yVmVyc2lvbjtcbiAgY29uc3QgbWlub3IgPSBvcHRpb25zLm1pbm9yVmVyc2lvbjtcbiAgY29uc3QgbWluTWFqb3JWZXJzaW9uID0gb3B0aW9ucy5taW5NYWpvclZlcnNpb247XG4gIGNvbnN0IHRhZ1ByZWZpeCA9IG9wdGlvbnMudGFnUHJlZml4ID8/IFwiXCI7XG4gIGNvbnN0IGJ1bXBGaWxlID0gam9pbihjd2QsIG9wdGlvbnMuYnVtcEZpbGUpO1xuICBjb25zdCBjaGFuZ2Vsb2dGaWxlID0gam9pbihjd2QsIG9wdGlvbnMuY2hhbmdlbG9nKTtcbiAgY29uc3QgcmVsZWFzZVRhZ0ZpbGUgPSBqb2luKGN3ZCwgb3B0aW9ucy5yZWxlYXNlVGFnRmlsZSk7XG5cbiAgaWYgKG1ham9yICYmIG1pbk1ham9yVmVyc2lvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBtaW5NYWpvclZlcnNpb24gYW5kIG1ham9yVmVyc2lvbiBjYW5ub3QgYmUgdXNlZCB0b2dldGhlci5gLFxuICAgICk7XG4gIH1cbiAgaWYgKG9wdGlvbnMubmV4dFZlcnNpb25Db21tYW5kICYmIG1pbk1ham9yVmVyc2lvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBtaW5NYWpvclZlcnNpb24gYW5kIG5leHRWZXJzaW9uQ29tbWFuZCBjYW5ub3QgYmUgdXNlZCB0b2dldGhlci5gLFxuICAgICk7XG4gIH1cbiAgaWYgKG1pbm9yICYmICFtYWpvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihgbWlub3JWZXJzaW9uIGFuZCBtYWpvclZlcnNpb24gbXVzdCBiZSB1c2VkIHRvZ2V0aGVyLmApO1xuICB9XG5cbiAgYXdhaXQgZnMubWtkaXIoZGlybmFtZShidW1wRmlsZSksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBhd2FpdCBmcy5ta2RpcihkaXJuYW1lKGNoYW5nZWxvZ0ZpbGUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgYXdhaXQgZnMubWtkaXIoZGlybmFtZShyZWxlYXNlVGFnRmlsZSksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGNvbnN0IHsgbGF0ZXN0VmVyc2lvbiwgbGF0ZXN0VGFnLCBpc0ZpcnN0UmVsZWFzZSB9ID0gZGV0ZXJtaW5lTGF0ZXN0VGFnKHtcbiAgICBjd2QsXG4gICAgbWFqb3IsXG4gICAgbWlub3IsXG4gICAgcHJlcmVsZWFzZSxcbiAgICBwcmVmaXg6IHRhZ1ByZWZpeCxcbiAgfSk7XG5cbiAgLy8gV3JpdGUgdGhlIGN1cnJlbnQgdmVyc2lvbiBpbnRvIHRoZSB2ZXJzaW9uIGZpbGUgc28gdGhhdCBDQVRWIHdpbGwga25vdyB0aGUgY3VycmVudCB2ZXJzaW9uXG4gIGNvbnN0IHsgY29udGVudHMsIG5ld2xpbmUgfSA9IGF3YWl0IHRyeVJlYWRWZXJzaW9uRmlsZSh2ZXJzaW9uRmlsZSk7XG4gIGNvbnRlbnRzLnZlcnNpb24gPSBsYXRlc3RWZXJzaW9uO1xuICBsb2dnaW5nLmluZm8oXG4gICAgYFVwZGF0ZSAke3ZlcnNpb25GaWxlfSB0byBsYXRlc3QgcmVzb2x2ZWQgdmVyc2lvbjogJHtsYXRlc3RWZXJzaW9ufWAsXG4gICk7XG4gIGF3YWl0IGZzLndyaXRlRmlsZShcbiAgICB2ZXJzaW9uRmlsZSxcbiAgICBKU09OLnN0cmluZ2lmeShjb250ZW50cywgdW5kZWZpbmVkLCAyKSArIChuZXdsaW5lID8gXCJcXG5cIiA6IFwiXCIpLFxuICApO1xuXG4gIC8vIERldGVybWluZSB0aGUgaW5pdGlhbCBidW1wIHN0YXR1cy4gQ0FUViB3aWxsIGFsd2F5cyBkbyBhIHBhdGNoIGV2ZW4gaWZcbiAgLy8gdGhlcmUgYXJlIG5vIGNvbW1pdHMsIHNvIGxvb2sgYXQgY29tbWl0cyBvdXJzZWx2ZXMgZmlyc3QgdG8gZGVjaWRlXG4gIC8vIGlmIHdlIGV2ZW4gc2hvdWxkIGRvIG5vdGhpbmcgYXQgYWxsLlxuICBjb25zdCBzaG91bGRSZWxlYXNlID0gaXNGaXJzdFJlbGVhc2VcbiAgICA/IHRydWVcbiAgICA6IGF3YWl0IGhhc05ld0ludGVyZXN0aW5nQ29tbWl0cyh7XG4gICAgICAgIGN3ZCxcbiAgICAgICAgbGF0ZXN0VGFnLFxuICAgICAgICByZWxlYXNhYmxlQ29tbWl0czogb3B0aW9ucy5yZWxlYXNhYmxlQ29tbWl0cyxcbiAgICAgIH0pO1xuXG4gIGNvbnN0IGNhdHYgPSBuZXcgQ29tbWl0QW5kVGFnVmVyc2lvbihvcHRpb25zLmJ1bXBQYWNrYWdlLCBjd2QsIHtcbiAgICB2ZXJzaW9uRmlsZSxcbiAgICBjaGFuZ2Vsb2dGaWxlLFxuICAgIHByZXJlbGVhc2UsXG4gICAgY29uZmlnT3B0aW9uczogb3B0aW9ucy52ZXJzaW9ucmNPcHRpb25zLFxuICAgIHRhZ1ByZWZpeCxcbiAgfSk7XG5cbiAgLy8gV2UgdXNlZCB0byB0cmFuc2xhdGUgYGlzRmlyc3RSZWxlYXNlYCB0byB0aGUgYC0tZmlyc3QtcmVsZWFzZWAgZmxhZyBvZiBDQVRWLlxuICAvLyBXaGF0IHRoYXQgZG9lcyBpcyBza2lwIGEgYnVtcCwgb25seSBnZW5lcmF0ZSB0aGUgY2hhbmdlbG9nLlxuICAvL1xuICAvLyBPdXIgYHsgYnVtcDogbm9uZSB9YCBkb2VzIHRoZSBzYW1lLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGNhcnJ5IG92ZXIgdGhpc1xuICAvLyBmbGFnIGFueW1vcmUuXG4gIGxldCBidW1wVHlwZTogQnVtcFR5cGUgPVxuICAgIHNob3VsZFJlbGVhc2UgJiYgIWlzRmlyc3RSZWxlYXNlXG4gICAgICA/IHJlbGF0aXZlQnVtcFR5cGUobGF0ZXN0VmVyc2lvbiwgYXdhaXQgY2F0di5kcnlSdW4oKSlcbiAgICAgIDogeyBidW1wOiBcIm5vbmVcIiB9O1xuXG4gIGxvZ2dpbmcuaW5mbyhgQnVtcCBmcm9tIGNvbW1pdHM6ICR7cmVuZGVyQnVtcFR5cGUoYnVtcFR5cGUpfWApO1xuICBpZiAob3B0aW9ucy5uZXh0VmVyc2lvbkNvbW1hbmQpIHtcbiAgICBjb25zdCBuZXh0VmVyc2lvbiA9IGF3YWl0IHJhd1NoZWxsLmNhcHR1cmUob3B0aW9ucy5uZXh0VmVyc2lvbkNvbW1hbmQsIHtcbiAgICAgIGN3ZCxcbiAgICAgIGVudjoge1xuICAgICAgICBWRVJTSU9OOiBsYXRlc3RWZXJzaW9uLFxuICAgICAgICBTVUdHRVNURURfQlVNUDogcmVuZGVyQnVtcFR5cGUoYnVtcFR5cGUpLFxuICAgICAgICAuLi4obGF0ZXN0VGFnID8geyBMQVRFU1RfVEFHOiBsYXRlc3RUYWcgfSA6IHt9KSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAobmV4dFZlcnNpb24pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGJ1bXBUeXBlID0gcGFyc2VCdW1wVHlwZShuZXh0VmVyc2lvbik7XG4gICAgICAgIGxvZ2dpbmcuaW5mbyhcbiAgICAgICAgICBgQnVtcCBmcm9tIG5leHRWZXJzaW9uQ29tbWFuZDogJHtyZW5kZXJCdW1wVHlwZShidW1wVHlwZSl9YCxcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBuZXh0VmVyc2lvbkNvbW1hbmQgXCIke29wdGlvbnMubmV4dFZlcnNpb25Db21tYW5kfVwiIHJldHVybmVkIGludmFsaWQgb3V0cHV0OiAke2V9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXNwZWN0IG1pbk1ham9yVmVyc2lvbiB0byBjb3JyZWN0IHRoZSByZXN1bHQgb2YgdGhlIG5leHRWZXJzaW9uQ29tbWFuZFxuICBpZiAobWluTWFqb3JWZXJzaW9uKSB7XG4gICAgY29uc3QgYnVtcGVkVmVyc2lvbiA9IHBlcmZvcm1CdW1wKGxhdGVzdFZlcnNpb24sIGJ1bXBUeXBlKTtcbiAgICBjb25zdCBbbWFqb3JWZXJzaW9uXSA9IGJ1bXBlZFZlcnNpb24uc3BsaXQoXCIuXCIpO1xuICAgIGNvbnN0IG1ham9yVmVyc2lvbk51bWJlciA9IHBhcnNlSW50KG1ham9yVmVyc2lvbiwgMTApO1xuICAgIGlmIChtYWpvclZlcnNpb25OdW1iZXIgPCBtaW5NYWpvclZlcnNpb24pIHtcbiAgICAgIGJ1bXBUeXBlID0geyBidW1wOiBcImFic29sdXRlXCIsIGFic29sdXRlOiBgJHttaW5NYWpvclZlcnNpb259LjAuMGAgfTtcbiAgICB9XG4gIH1cblxuICAvLyBJbnZva2UgQ0FUViB3aXRoIHRoZSBvcHRpb25zIHdlIGxhbmRlZCBvbi4gSWYgd2UgZGVjaWRlZCBub3QgdG8gZG8gYSBidW1wLFxuICAvLyB3ZSB3aWxsIHVzZSB0aGlzIHRvIHJlZ2VuZXJhdGUgdGhlIGNoYW5nZWxvZyBvZiB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbi5cbiAgY29uc3QgbmV3UmVsZWFzZSA9IGJ1bXBUeXBlLmJ1bXAgIT09IFwibm9uZVwiO1xuXG4gIC8vIElmIHdlJ3JlIG5vdCBkb2luZyBhIG5ldyByZWxlYXNlIGFuZCB0aGlzIGlzIG5vdCB0aGVcbiAgLy8gZmlyc3QgcmVsZWFzZSwgd2UncmUganVzdCByZWdlbmVyYXRpbmcgdGhlIHByZXZpb3VzIGNoYW5nZWxvZyBhZ2Fpbi5cbiAgaWYgKCFuZXdSZWxlYXNlICYmICFpc0ZpcnN0UmVsZWFzZSkge1xuICAgIGF3YWl0IGNhdHYucmVnZW5lcmF0ZVByZXZpb3VzQ2hhbmdlTG9nKGxhdGVzdFZlcnNpb24sIGxhdGVzdFRhZyk7XG4gIH0gZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlIHdlJ3JlIGVpdGhlciBkb2luZyBhIGJ1bXAgKyByZWxlYXNlLCBvciB3ZSdyZSByZWxlYXNpbmcgdGhlXG4gICAgLy8gZmlyc3QgdmVyc2lvbiBhcyAwLjAuMCAod2hpY2ggaXMgYWxyZWFkeSB0aGUgbnVtYmVyIGluIHRoZSBmaWxlIHNvIHdlXG4gICAgLy8gc2tpcCBidW1waW5nKS5cbiAgICBhd2FpdCBjYXR2Lmludm9rZSh7XG4gICAgICByZWxlYXNlQXM6IG5ld1JlbGVhc2UgPyByZW5kZXJCdW1wVHlwZShidW1wVHlwZSkgOiB1bmRlZmluZWQsXG4gICAgICBza2lwQnVtcDogIW5ld1JlbGVhc2UsXG4gICAgfSk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSB0aGUgdmVyc2lvbiB0aGF0IHdlIGVuZGVkIHVwIHdpdGhcbiAgY29uc3QgbmV3VmVyc2lvbiA9IChhd2FpdCB0cnlSZWFkVmVyc2lvbkZpbGUodmVyc2lvbkZpbGUpKS52ZXJzaW9uO1xuICBpZiAoIW5ld1ZlcnNpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGJ1bXAgZmFpbGVkOiAke3ZlcnNpb25GaWxlfSBkb2VzIG5vdCBoYXZlIGEgdmVyc2lvbiBzZXRgKTtcbiAgfVxuICBpZiAobWFqb3IpIHtcbiAgICBpZiAoIW5ld1ZlcnNpb24uc3RhcnRzV2l0aChgJHttYWpvcn0uYCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYGJ1bXAgZmFpbGVkOiB0aGlzIGJyYW5jaCBpcyBjb25maWd1cmVkIHRvIG9ubHkgcHVibGlzaCB2JHttYWpvcn0gcmVsZWFzZXMgLSBidW1wIHJlc3VsdGVkIGluICR7bmV3VmVyc2lvbn1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgaWYgKG1pbm9yKSB7XG4gICAgaWYgKCFuZXdWZXJzaW9uLnN0YXJ0c1dpdGgoYCR7bWFqb3J9LiR7bWlub3J9YCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYGJ1bXAgZmFpbGVkOiB0aGlzIGJyYW5jaCBpcyBjb25maWd1cmVkIHRvIG9ubHkgcHVibGlzaCB2JHttYWpvcn0uJHttaW5vcn0gcmVsZWFzZXMgLSBidW1wIHJlc3VsdGVkIGluICR7bmV3VmVyc2lvbn1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXBvcnQgY3VyZW50IHN0YXR1cyBpbnRvIHRoZSBkaXN0LyBkaXJlY3RvcnlcbiAgY29uc3QgbmV3VGFnID0gYCR7dGFnUHJlZml4fXYke25ld1ZlcnNpb259YDtcbiAgYXdhaXQgZnMud3JpdGVGaWxlKGJ1bXBGaWxlLCBuZXdWZXJzaW9uKTtcbiAgYXdhaXQgZnMud3JpdGVGaWxlKHJlbGVhc2VUYWdGaWxlLCBuZXdUYWcpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBiYXNlZCBvbiByZWxlYXNlYWJsZSBjb21taXRzIHdoZXRoZXIgd2Ugc2hvdWxkIHJlbGVhc2Ugb3Igbm90XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGhhc05ld0ludGVyZXN0aW5nQ29tbWl0cyhvcHRpb25zOiB7XG4gIHJlbGVhc2FibGVDb21taXRzPzogc3RyaW5nO1xuICBsYXRlc3RUYWc6IHN0cmluZztcbiAgY3dkOiBzdHJpbmc7XG59KTogUHJvbWlzZTxib29sZWFuPiB7XG4gIC8vIGAkTEFURVNUX1RBR2AgaXMgcHJvdmlkZWQgdG8gdGhlIGNvbW1hbmQgYXMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGVcbiAgLy8gKHJhdGhlciB0aGFuIGludGVycG9sYXRlZCBpbnRvIHRoZSBjb21tYW5kIHN0cmluZyksIGNvbnNpc3RlbnQgd2l0aCBob3dcbiAgLy8gYG5leHRWZXJzaW9uQ29tbWFuZGAgcmVjZWl2ZXMgaXQuXG4gIGNvbnN0IGZpbmRDb21taXRzID1cbiAgICBvcHRpb25zLnJlbGVhc2FibGVDb21taXRzID8/IFJlbGVhc2FibGVDb21taXRzLmV2ZXJ5Q29tbWl0KCkuY21kO1xuXG4gIGNvbnN0IGNvbW1pdHNTaW5jZUxhc3RUYWcgPSAoXG4gICAgYXdhaXQgcmF3U2hlbGwudHJ5Q2FwdHVyZShmaW5kQ29tbWl0cywge1xuICAgICAgY3dkOiBvcHRpb25zLmN3ZCxcbiAgICAgIGVudjogeyBMQVRFU1RfVEFHOiBvcHRpb25zLmxhdGVzdFRhZyB9LFxuICAgIH0pXG4gICk/LnNwbGl0KFwiXFxuXCIpO1xuICBjb25zdCBudW1Db21taXRzU2luY2VMYXN0VGFnID0gY29tbWl0c1NpbmNlTGFzdFRhZz8ubGVuZ3RoID8/IDA7XG4gIGxvZ2dpbmcuaW5mbyhcbiAgICBgTnVtYmVyIG9mIGNvbW1pdHMgc2luY2UgJHtvcHRpb25zLmxhdGVzdFRhZ306ICR7bnVtQ29tbWl0c1NpbmNlTGFzdFRhZ31gLFxuICApO1xuXG4gIC8vIE5vdGhpbmcgdG8gcmVsZWFzZSByaWdodCBub3dcbiAgaWYgKG51bUNvbW1pdHNTaW5jZUxhc3RUYWcgPT09IDApIHtcbiAgICBsb2dnaW5nLmluZm8oXCJObyBuZXcgaW50ZXJlc3RpbmcgY29tbWl0cy5cIik7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHRyeVJlYWRWZXJzaW9uRmlsZShcbiAgdmVyc2lvbkZpbGU6IHN0cmluZyxcbik6IFByb21pc2U8eyBjb250ZW50czogYW55OyB2ZXJzaW9uPzogc3RyaW5nOyBuZXdsaW5lOiBib29sZWFuIH0+IHtcbiAgaWYgKCFleGlzdHNTeW5jKHZlcnNpb25GaWxlKSkge1xuICAgIHJldHVybiB7IGNvbnRlbnRzOiB7fSwgbmV3bGluZTogdHJ1ZSB9O1xuICB9XG4gIGNvbnN0IHJhdyA9IGF3YWl0IGZzLnJlYWRGaWxlKHZlcnNpb25GaWxlLCBcInV0Zi04XCIpO1xuICBjb25zdCBjb250ZW50cyA9IEpTT04ucGFyc2UocmF3KTtcblxuICByZXR1cm4ge1xuICAgIGNvbnRlbnRzLFxuICAgIHZlcnNpb246IGNvbnRlbnRzLnZlcnNpb24sXG4gICAgbmV3bGluZTogcmF3LmVuZHNXaXRoKFwiXFxuXCIpLFxuICB9O1xufVxuXG5pbnRlcmZhY2UgTGF0ZXN0VGFnT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXb3JraW5nIGRpcmVjdG9yeSBvZiB0aGUgZ2l0IHJlcG9zaXRvcnkuXG4gICAqL1xuICByZWFkb25seSBjd2Q6IHN0cmluZztcbiAgLyoqXG4gICAqIE1ham9yIHZlcnNpb24gdG8gc2VsZWN0IGZyb20uXG4gICAqL1xuICByZWFkb25seSBtYWpvcj86IG51bWJlcjtcbiAgLyoqXG4gICAqIE1pbm9yIHZlcnNpb24gdG8gc2VsZWN0IGZyb20uXG4gICAqL1xuICByZWFkb25seSBtaW5vcj86IG51bWJlcjtcbiAgLyoqXG4gICAqIEEgcHJlLXJlbGVhc2Ugc3VmZml4LlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlcmVsZWFzZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEEgcHJlZml4IGFwcGxpZWQgdG8gYWxsIHRhZ3MuXG4gICAqL1xuICByZWFkb25seSBwcmVmaXg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHRoZSBsYXRlc3QgcmVsZWFzZSB0YWcuXG4gKiBAcGFyYW0gbWFqb3IgKG9wdGlvbmFsKSBBIG1ham9yIHZlcnNpb24gbGluZSB0byBzZWxlY3QgZnJvbVxuICogQHBhcmFtIHByZXJlbGVhc2UgKG9wdGlvbmFsKSBBIHByZS1yZWxlYXNlIHN1ZmZpeC5cbiAqIEByZXR1cm5zIHRoZSBsYXRlc3QgdGFnLCBhbmQgd2hldGhlciBpdCBpcyB0aGUgZmlyc3QgcmVsZWFzZSBvciBub3RcbiAqL1xuZnVuY3Rpb24gZGV0ZXJtaW5lTGF0ZXN0VGFnKG9wdGlvbnM6IExhdGVzdFRhZ09wdGlvbnMpOiB7XG4gIGxhdGVzdFZlcnNpb246IHN0cmluZztcbiAgbGF0ZXN0VGFnOiBzdHJpbmc7XG4gIGlzRmlyc3RSZWxlYXNlOiBib29sZWFuO1xufSB7XG4gIGNvbnN0IHsgY3dkLCBtYWpvciwgbWlub3IsIHByZXJlbGVhc2UsIHByZWZpeCB9ID0gb3B0aW9ucztcblxuICAvLyBmaWx0ZXIgb25seSB0YWdzIGZvciB0aGlzIHByZWZpeCBhbmQgbWFqb3IgdmVyc2lvbiBpZiBzcGVjaWZpZWQgKHN0YXJ0IHdpdGggXCJ2Tk4uXCIpLlxuICBsZXQgcHJlZml4RmlsdGVyOiBzdHJpbmc7XG4gIGlmIChtYWpvciAhPT0gdW5kZWZpbmVkICYmIG1pbm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICBwcmVmaXhGaWx0ZXIgPSBgJHtwcmVmaXh9diR7bWFqb3J9LiR7bWlub3J9LipgO1xuICB9IGVsc2UgaWYgKG1ham9yICE9PSB1bmRlZmluZWQpIHtcbiAgICBwcmVmaXhGaWx0ZXIgPSBgJHtwcmVmaXh9diR7bWFqb3J9LipgO1xuICB9IGVsc2Uge1xuICAgIHByZWZpeEZpbHRlciA9IGAke3ByZWZpeH12KmA7XG4gIH1cblxuICBjb25zdCBzdGRvdXQgPSBnaXQuY2FwdHVyZShcbiAgICBbXG4gICAgICBcIi1jXCIsXG4gICAgICBcInZlcnNpb25zb3J0LnN1ZmZpeD0tXCIsIC8vIG1ha2VzIHN1cmUgcHJlLXJlbGVhc2UgdmVyc2lvbnMgYXJlIGxpc3RlZCBhZnRlciB0aGUgcHJpbWFyeSB2ZXJzaW9uXG4gICAgICBcInRhZ1wiLFxuICAgICAgXCItLXNvcnQ9LXZlcnNpb246cmVmbmFtZVwiLCAvLyBzb3J0IGFzIHZlcnNpb25zIGFuZCBub3QgbGV4aWNvZ3JhcGhpY2FsbHlcbiAgICAgIFwiLS1saXN0XCIsXG4gICAgICBwcmVmaXhGaWx0ZXIsXG4gICAgXSxcbiAgICB7IGN3ZCB9LFxuICApO1xuXG4gIGxldCB0YWdzID0gc3Rkb3V0Py5zcGxpdChcIlxcblwiKTtcblxuICAvLyBpZiBwcmVyZWxlYXNlIGlzIHNldCBhbmQgdGhlcmUgYXJlIGV4aXN0aW5nIHByZXJlbGVhc2UgdGFncywgZmlsdGVyIHZlcnNpb25zIHRoYXQgZW5kIHdpdGggXCItUFJFLmRkZFwiLlxuICBjb25zdCBwcmVyZWxlYXNlVGFncyA9IHRhZ3MuZmlsdGVyKCh4KSA9PlxuICAgIG5ldyBSZWdFeHAoYC0ke3ByZXJlbGVhc2V9XFxcXC5bMC05XSskYCkudGVzdCh4KSxcbiAgKTtcbiAgaWYgKHByZXJlbGVhc2UgJiYgcHJlcmVsZWFzZVRhZ3MubGVuZ3RoID4gMCkge1xuICAgIGxldCBwcmVyZWxlYXNlVGFnID0gcHJlcmVsZWFzZVRhZ3NbMF07XG5cbiAgICAvKipcbiAgICAgKiBDb3ZlciB0aGUgZm9sbG93aW5nIGNhc2Ugc3BlY2lmaWNhbGx5XG4gICAgICogMSAtIHYxLjAuMFxuICAgICAqIDIgLSB2MS4wLjEtYmV0YS4wXG4gICAgICogMyAtIHYxLjAuMS1iZXRhLjFcbiAgICAgKiA0IC0gdjEuMC4xXG4gICAgICogNSAtIG5vdyBwdWJsaXNoIGEgbmV3IHJlbGVhc2Ugb24gdGhlIHByZXJlbGVhc2UgYnJhbmNoXG4gICAgICogICAgYnkgc2V0dGluZyB0aGUgbGF0ZXN0VGFnIGFzIHYxLjAuMSBpbnN0ZWFkIG9mIHYxLjAuMS1iZXRhLjFcbiAgICAgKi9cbiAgICBjb25zdCByZWxlYXNlVGFncyA9IHRhZ3MuZmlsdGVyKCh4KSA9PlxuICAgICAgbmV3IFJlZ0V4cChgXiR7cHJlZml4fXYoWzAtOV0rKVxcXFwuKFswLTldKylcXFxcLihbMC05XSspJGApLnRlc3QoeCksXG4gICAgKTtcblxuICAgIGxldCByZWxlYXNlVGFnOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKHJlbGVhc2VUYWdzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJlbGVhc2VUYWcgPSByZWxlYXNlVGFnc1swXTtcbiAgICB9XG5cbiAgICBpZiAocHJlZml4KSB7XG4gICAgICByZWxlYXNlVGFnID0gcmVsZWFzZVRhZz8uc3Vic3RyaW5nKHByZWZpeC5sZW5ndGgpO1xuICAgICAgcHJlcmVsZWFzZVRhZyA9IHByZXJlbGVhc2VUYWcuc3Vic3RyaW5nKHByZWZpeC5sZW5ndGgpO1xuICAgIH1cblxuICAgIGlmIChyZWxlYXNlVGFnICYmIGNvbXBhcmUocmVsZWFzZVRhZywgcHJlcmVsZWFzZVRhZykgPT09IDEpIHtcbiAgICAgIHRhZ3MgPSByZWxlYXNlVGFncztcbiAgICB9IGVsc2Uge1xuICAgICAgdGFncyA9IHByZXJlbGVhc2VUYWdzO1xuICAgIH1cbiAgfVxuXG4gIHRhZ3MgPSB0YWdzLmZpbHRlcigoeCkgPT4geCk7XG5cbiAgLy8gaWYgYSBwcmUtcmVsZWFzZSB0YWcgaXMgdXNlZCwgdGhlbiBhZGQgaXQgdG8gdGhlIGluaXRpYWwgdmVyc2lvblxuICBsZXQgaXNGaXJzdFJlbGVhc2UgPSBmYWxzZTtcbiAgbGV0IGxhdGVzdFRhZztcblxuICBpZiAodGFncy5sZW5ndGggPiAwKSB7XG4gICAgbGF0ZXN0VGFnID0gdGFnc1swXTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBpbml0aWFsID0gYCR7cHJlZml4fXYke21ham9yID8/IDB9LiR7bWlub3IgPz8gMH0uMGA7XG4gICAgbGF0ZXN0VGFnID0gcHJlcmVsZWFzZSA/IGAke2luaXRpYWx9LSR7cHJlcmVsZWFzZX0uMGAgOiBpbml0aWFsO1xuICAgIGlzRmlyc3RSZWxlYXNlID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIHJlbW92ZSB0YWcgcHJlZml4IChpZiBleGlzdHMpXG4gIGxldCBsYXRlc3RWZXJzaW9uID0gbGF0ZXN0VGFnO1xuICBpZiAocHJlZml4ICYmIGxhdGVzdFZlcnNpb24uc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgbGF0ZXN0VmVyc2lvbiA9IGxhdGVzdFZlcnNpb24uc3Vic3RyaW5nKHByZWZpeC5sZW5ndGgpO1xuICB9XG5cbiAgLy8gcmVtb3ZlIFwidlwiIHByZWZpeCAoaWYgZXhpc3RzKVxuICBpZiAobGF0ZXN0VmVyc2lvbi5zdGFydHNXaXRoKFwidlwiKSkge1xuICAgIGxhdGVzdFZlcnNpb24gPSBsYXRlc3RWZXJzaW9uLnN1YnN0cmluZygxKTtcbiAgfVxuXG4gIHJldHVybiB7IGxhdGVzdFZlcnNpb24sIGxhdGVzdFRhZywgaXNGaXJzdFJlbGVhc2UgfTtcbn1cbiJdfQ==
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVtcC12ZXJzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlbGVhc2UvYnVtcC12ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0pBLDRDQTZDQztBQU1ELGdEQXlDQztBQU1ELDRDQW9GQztBQXhVRCwyQkFBZ0Q7QUFDaEQsK0JBQXFDO0FBRXJDLG1DQUFpQztBQUNqQyxvREFBc0M7QUFFdEMsMkNBQTRFO0FBQzVFLDZEQUEyRDtBQUMzRCx1Q0FBbUM7QUFzSW5DOzs7R0FHRztBQUNJLEtBQUssVUFBVSxnQkFBZ0IsQ0FDcEMsR0FBVyxFQUNYLE9BT0M7SUFFRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO0lBQ25DLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7SUFDbkMsSUFBSSxLQUFLLElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQ2IsMkRBQTJELENBQzVELENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLElBQUEsV0FBSSxFQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFbkQsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUM7UUFDakMsR0FBRztRQUNILEtBQUs7UUFDTCxLQUFLO1FBQ0wsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1FBQzlCLE1BQU0sRUFBRSxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUU7S0FDaEMsQ0FBQyxDQUFDO0lBRUgsNEVBQTRFO0lBQzVFLHFDQUFxQztJQUNyQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFB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SSxDQUFDLElBQUksQ0FBQztRQUMxRCxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sSUFBSSxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ2hFLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxJQUFJLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDOUIsSUFBSSxNQUFNLElBQUksYUFBYSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQy9DLGFBQWEsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsZ0NBQWdDO0lBQ2hDLElBQUksYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xDLGFBQWEsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsQ0FBQztBQUN0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMsIGV4aXN0c1N5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tIFwiY29udmVudGlvbmFsLWNoYW5nZWxvZy1jb25maWctc3BlY1wiO1xuaW1wb3J0IHsgY29tcGFyZSB9IGZyb20gXCJzZW12ZXJcIjtcbmltcG9ydCAqIGFzIGxvZ2dpbmcgZnJvbSBcIi4uL2xvZ2dpbmdcIjtcbmltcG9ydCB0eXBlIHsgQnVtcFR5cGUgfSBmcm9tIFwiLi9idW1wLXR5cGVcIjtcbmltcG9ydCB7IHBlcmZvcm1CdW1wLCByZWxhdGl2ZUJ1bXBUeXBlLCByZW5kZXJCdW1wVHlwZSB9IGZyb20gXCIuL2J1bXAtdHlwZVwiO1xuaW1wb3J0IHsgQ29tbWl0QW5kVGFnVmVyc2lvbiB9IGZyb20gXCIuL2NvbW1pdC10YWctdmVyc2lvblwiO1xuaW1wb3J0IHsgZ2l0IH0gZnJvbSBcIi4uL3V0aWwvZXhlY1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1bXBPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIGEgLmpzb24gZmlsZSB0byBzZXQgYHZlcnNpb25gLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbkZpbGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNoYW5nZWxvZyBmaWxlIHRvIGdlbmVyYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlbG9nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVzZSBhIHByZS1yZWxlYXNlIHN1ZmZpeC5cbiAgICogQGRlZmF1bHQgLSBub3JtYWwgdmVyc2lvbmluZ1xuICAgKi9cbiAgcmVhZG9ubHkgcHJlcmVsZWFzZT86IHN0cmluZztcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgbWFqb3IgdmVyc2lvbiBsaW5lLiBUaGlzIGlzIHVzZWQgdG8gc2VsZWN0IHRoZSBsYXRlc3QgdmVyc2lvblxuICAgKiBhbmQgYWxzbyBlbmZvcmNlIHRoYXQgbmV3IG1ham9yIHZlcnNpb25zIGFyZSBub3QgcmVsZWFzZWQgYWNjaWRlbnRhbGx5LlxuICAgKlxuICAgKiBDYW4gbm90IGJlIHNldCB0b2dldGhlciB3aXRoIGBtaW5NYWpvclZlcnNpb25gLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFueSB2ZXJzaW9uIGlzIHN1cHBvcnRlZFxuICAgKi9cbiAgcmVhZG9ubHkgbWFqb3JWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBtaW5pbWFsIG1ham9yIHZlcnNpb24uIFRoaXMgaXMgdXNlZCBpZiB5b3Ugd2FudCB0byBzdGFydCB3aXRoXG4gICAqIGEgc3BlY2lmaWMgbWFqb3IgdmVyc2lvbiwgYW5kIGluY3JlbWVudCBmcm9tIHRoZXJlIG9uLlxuICAgKiBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gc2V0IHRvIDEsIGFzIGJyZWFraW5nIGNoYW5nZXMgYmVmb3JlIHRoZSAxLnggbWFqb3JcbiAgICogcmVsZWFzZSBhcmUgbm90IGluY3JlbWVudGluZyB0aGUgbWFqb3IgdmVyc2lvbiBudW1iZXIuXG4gICAqXG4gICAqIENhbiBub3QgYmUgc2V0IHRvZ2V0aGVyIHdpdGggYG1ham9yVmVyc2lvbmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbWluaW11bSB2ZXJzaW9uIGlzIGJlaW5nIGVuZm9yY2VkXG4gICAqL1xuICByZWFkb25seSBtaW5NYWpvclZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIG1pbm9yIHZlcnNpb24gbGluZS4gVGhpcyBpcyB1c2VkIHRvIHNlbGVjdCB0aGUgbGF0ZXN0IHZlcnNpb25cbiAgICogYW5kIGFsc28gZW5mb3JjZSB0aGF0IG5ldyBtaW5vciB2ZXJzaW9ucyBhcmUgbm90IHJlbGVhc2VkIGFjY2lkZW50YWxseS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhbnkgdmVyc2lvbiBpcyBzdXBwb3J0ZWRcbiAgICovXG4gIHJlYWRvbmx5IG1pbm9yVmVyc2lvbj86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgYSBmaWxlIHdoaWNoIHdpbGwgaW5jbHVkZSB0aGUgb3V0cHV0IHZlcnNpb24gbnVtYmVyIChhIHRleHQgZmlsZSkuXG4gICAqXG4gICAqIFJlbGF0aXZlIHRvIGN3ZC5cbiAgICpcbiAgICogQGV4YW1wbGUgXCIudmVyc2lvbi50eHRcIlxuICAgKi9cbiAgcmVhZG9ubHkgYnVtcEZpbGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGZpbGUgd2hpY2ggd2lsbCBpbmNsdWRlIHRoZSByZWxlYXNlIHRhZyAoYSB0ZXh0IGZpbGUpLlxuICAgKlxuICAgKiBSZWxhdGl2ZSB0byBjd2QuXG4gICAqXG4gICAqIEBleGFtcGxlIFwiLnJlbGVhc2V0YWcudHh0XCJcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VUYWdGaWxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggYXBwbGllZCB0byByZWxlYXNlIHRhZ3MuIEJ1bXBzIHdpbGwgYmUgbWFkZSBiYXNlZCBvbiB0aGUgbGF0ZXN0XG4gICAqIHZlcnNpb24gZm91bmQgd2l0aCB0aGlzIHByZWZpeC5cbiAgICovXG4gIHJlYWRvbmx5IHRhZ1ByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiB2YWx1ZXMgdGhhdCB3b3VsZCBhcHBlbmQgdG8gdmVyc2lvbnJjIGZpbGUgb3Igb3ZlcndyaXRlIHZhbHVlc1xuICAgKiBjb21pbmcgdG8gdGhhdCBmcm9tIGRlZmF1bHQgb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbnJjT3B0aW9ucz86IENvbmZpZztcblxuICAvKipcbiAgICogQSBzaGVsbCBjb21tYW5kIHRvIGxpc3QgYWxsIHJlbGVhc2UgY29tbWl0cyBzaW5jZSB0aGUgbGF0ZXN0IHRhZy5cbiAgICpcbiAgICogQSBuZXcgcmVsZWFzZSB3aWxsIGJlIGluaXRpYXRlZCwgaWYgdGhlIG51bWJlciBvZiByZXR1cm5lZCBjb21taXRzIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLlxuICAgKlxuICAgKiBgJExBVEVTVF9UQUdgIGlzIGF2YWlsYWJsZSBhcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSAoc2V0IHRvIHRoZSBhY3R1YWwgbGF0ZXN0IHRhZyBmb3IgdGhlIGdpdmVuIHByZWZpeCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiZ2l0IGxvZyAtLW9uZWxpbmUgJExBVEVTVF9UQUcuLkhFQURcIlxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzYWJsZUNvbW1pdHM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBgY29tbWl0LWFuZC10YWctdmVyc2lvbmAgY29tcGF0aWJsZSBwYWNrYWdlIHVzZWQgdG8gYnVtcCB0aGUgcGFja2FnZSB2ZXJzaW9uLCBhcyBhIGRlcGVuZGVuY3kgc3RyaW5nLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSBhbnkgY29tcGF0aWJsZSBwYWNrYWdlIHZlcnNpb24sIGluY2x1ZGluZyB0aGUgZGVwcmVjYXRlZCBgc3RhbmRhcmQtdmVyc2lvbkA5YC5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJjb21taXQtYW5kLXRhZy12ZXJzaW9uQDEyXCJcbiAgICovXG4gIHJlYWRvbmx5IGJ1bXBQYWNrYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHNoZWxsIGNvbW1hbmQgdG8gY29udHJvbCB0aGUgbmV4dCB2ZXJzaW9uIHRvIHJlbGVhc2UuXG4gICAqXG4gICAqIElmIHByZXNlbnQsIHRoaXMgc2hlbGwgY29tbWFuZCB3aWxsIGJlIHJ1biBiZWZvcmUgdGhlIGJ1bXAgaXMgZXhlY3V0ZWQsIGFuZFxuICAgKiBpdCBkZXRlcm1pbmVzIHdoYXQgdmVyc2lvbiB0byByZWxlYXNlLiBJdCB3aWxsIGJlIGV4ZWN1dGVkIGluIHRoZSBmb2xsb3dpbmdcbiAgICogZW52aXJvbm1lbnQ6XG4gICAqXG4gICAqIC0gV29ya2luZyBkaXJlY3Rvcnk6IHRoZSBwcm9qZWN0IGRpcmVjdG9yeS5cbiAgICogLSBgJFZFUlNJT05gOiB0aGUgY3VycmVudCB2ZXJzaW9uLiBMb29rcyBsaWtlIGAxLjIuM2AuXG4gICAqIC0gYCRMQVRFU1RfVEFHYDogdGhlIG1vc3QgcmVjZW50IHRhZy4gTG9va3MgbGlrZSBgcHJlZml4LXYxLjIuM2AsIG9yIG1heSBiZSB1bnNldC5cbiAgICpcbiAgICogVGhlIGNvbW1hbmQgc2hvdWxkIHByaW50IG9uZSBvZiB0aGUgZm9sbG93aW5nIHRvIGBzdGRvdXRgOlxuICAgKlxuICAgKiAtIE5vdGhpbmc6IHRoZSBuZXh0IHZlcnNpb24gbnVtYmVyIHdpbGwgYmUgZGV0ZXJtaW5lZCBiYXNlZCBvbiBjb21taXQgaGlzdG9yeS5cbiAgICogLSBgeC55LnpgOiB0aGUgbmV4dCB2ZXJzaW9uIG51bWJlciB3aWxsIGJlIGB4LnkuemAuXG4gICAqIC0gYG1ham9yfG1pbm9yfHBhdGNoYDogdGhlIG5leHQgdmVyc2lvbiBudW1iZXIgd2lsbCBiZSB0aGUgY3VycmVudCB2ZXJzaW9uIG51bWJlclxuICAgKiAgIHdpdGggdGhlIGluZGljYXRlZCBjb21wb25lbnQgYnVtcGVkLlxuICAgKlxuICAgKiBUaGlzIHNldHRpbmcgY2Fubm90IGJlIHNwZWNpZmllZCB0b2dldGhlciB3aXRoIGBtaW5NYWpvclZlcnNpb25gOyB0aGUgaW52b2tlZFxuICAgKiBzY3JpcHQgY2FuIGJlIHVzZWQgdG8gYWNoaWV2ZSB0aGUgZWZmZWN0cyBvZiBgbWluTWFqb3JWZXJzaW9uYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBUaGUgbmV4dCB2ZXJzaW9uIHdpbGwgYmUgZGV0ZXJtaW5lZCBiYXNlZCBvbiB0aGUgY29tbWl0IGhpc3RvcnkgYW5kIHByb2plY3Qgc2V0dGluZ3MuXG4gICAqL1xuICByZWFkb25seSBuZXh0VmVyc2lvbkNvbW1hbmQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udGV4dCByZXNvbHZlZCBieSB7QGxpbmsgcmVzb2x2ZUxhdGVzdFRhZ30gYW5kIGNvbnN1bWVkIGJ5IHRoZSBsYXRlciBidW1wIHBoYXNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdW1wQ29udGV4dCB7XG4gIHJlYWRvbmx5IGxhdGVzdFZlcnNpb246IHN0cmluZztcbiAgcmVhZG9ubHkgbGF0ZXN0VGFnOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlzRmlyc3RSZWxlYXNlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBoYXNlIDE6IHJlc29sdmUgdGhlIGxhdGVzdCB0YWcvdmVyc2lvbiBhbmQgc2VlZCB0aGUgdmVyc2lvbiBmaWxlIChzbyB0aGVcbiAqIGxhdGVyIHBoYXNlcyBjYW4gcmVhZCB0aGUgY3VycmVudCB2ZXJzaW9uIGJhY2sgZnJvbSBpdCkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlTGF0ZXN0VGFnKFxuICBjd2Q6IHN0cmluZyxcbiAgb3B0aW9uczoge1xuICAgIHZlcnNpb25GaWxlOiBzdHJpbmc7XG4gICAgdGFnUHJlZml4Pzogc3RyaW5nO1xuICAgIG1ham9yVmVyc2lvbj86IG51bWJlcjtcbiAgICBtaW5vclZlcnNpb24/OiBudW1iZXI7XG4gICAgbWluTWFqb3JWZXJzaW9uPzogbnVtYmVyO1xuICAgIHByZXJlbGVhc2U/OiBzdHJpbmc7XG4gIH0sXG4pOiBQcm9taXNlPEJ1bXBDb250ZXh0PiB7XG4gIGNvbnN0IG1ham9yID0gb3B0aW9ucy5tYWpvclZlcnNpb247XG4gIGNvbnN0IG1pbm9yID0gb3B0aW9ucy5taW5vclZlcnNpb247XG4gIGlmIChtYWpvciAmJiBvcHRpb25zLm1pbk1ham9yVmVyc2lvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBtaW5NYWpvclZlcnNpb24gYW5kIG1ham9yVmVyc2lvbiBjYW5ub3QgYmUgdXNlZCB0b2dldGhlci5gLFxuICAgICk7XG4gIH1cbiAgaWYgKG1pbm9yICYmICFtYWpvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihgbWlub3JWZXJzaW9uIGFuZCBtYWpvclZlcnNpb24gbXVzdCBiZSB1c2VkIHRvZ2V0aGVyLmApO1xuICB9XG5cbiAgY29uc3QgdmVyc2lvbkZpbGUgPSBqb2luKGN3ZCwgb3B0aW9ucy52ZXJzaW9uRmlsZSk7XG5cbiAgY29uc3QgY29udGV4dCA9IGRldGVybWluZUxhdGVzdFRhZyh7XG4gICAgY3dkLFxuICAgIG1ham9yLFxuICAgIG1pbm9yLFxuICAgIHByZXJlbGVhc2U6IG9wdGlvbnMucHJlcmVsZWFzZSxcbiAgICBwcmVmaXg6IG9wdGlvbnMudGFnUHJlZml4ID8/IFwiXCIsXG4gIH0pO1xuXG4gIC8vIFdyaXRlIHRoZSBjdXJyZW50IHZlcnNpb24gaW50byB0aGUgdmVyc2lvbiBmaWxlIHNvIHRoYXQgQ0FUViBrbm93cyBpdCBhbmRcbiAgLy8gdGhlIGxhdGVyIHBoYXNlcyBjYW4gcmVhZCBpdCBiYWNrLlxuICBjb25zdCB7IGNvbnRlbnRzLCBuZXdsaW5lIH0gPSBhd2FpdCB0cnlSZWFkVmVyc2lvbkZpbGUodmVyc2lvbkZpbGUpO1xuICBjb250ZW50cy52ZXJzaW9uID0gY29udGV4dC5sYXRlc3RWZXJzaW9uO1xuICBsb2dnaW5nLmluZm8oXG4gICAgYFVwZGF0ZSAke3ZlcnNpb25GaWxlfSB0byByZXNvbHZlZCB2ZXJzaW9uOiAke2NvbnRleHQubGF0ZXN0VmVyc2lvbn1gLFxuICApO1xuICBhd2FpdCBmcy53cml0ZUZpbGUoXG4gICAgdmVyc2lvbkZpbGUsXG4gICAgSlNPTi5zdHJpbmdpZnkoY29udGVudHMsIHVuZGVmaW5lZCwgMikgKyAobmV3bGluZSA/IFwiXFxuXCIgOiBcIlwiKSxcbiAgKTtcblxuICByZXR1cm4gY29udGV4dDtcbn1cblxuLyoqXG4gKiBQaGFzZSAyOiBkZWNpZGUgdGhlIGJ1bXAgZnJvbSB0aGUgY29tbWl0IGhpc3RvcnkuIFJldHVybnMgYG5vbmVgIHdoZW4gdGhlcmVcbiAqIGlzIG5vdGhpbmcgcmVsZWFzYWJsZSAob3Igb24gYSBmaXJzdCByZWxlYXNlLCB3aGljaCBpcyBoYW5kbGVkIGJ5IENBVFYpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3VnZ2VzdFZlcnNpb25CdW1wKFxuICBjd2Q6IHN0cmluZyxcbiAgb3B0aW9uczoge1xuICAgIHZlcnNpb25GaWxlOiBzdHJpbmc7XG4gICAgY2hhbmdlbG9nOiBzdHJpbmc7XG4gICAgbGF0ZXN0VGFnPzogc3RyaW5nO1xuICAgIHRhZ1ByZWZpeD86IHN0cmluZztcbiAgICBwcmVyZWxlYXNlPzogc3RyaW5nO1xuICAgIGJ1bXBQYWNrYWdlPzogc3RyaW5nO1xuICAgIHZlcnNpb25yY09wdGlvbnM/OiBDb25maWc7XG4gICAgcmVsZWFzYWJsZUNvbW1pdHM/OiBzdHJpbmc7XG4gIH0sXG4pOiBQcm9taXNlPEJ1bXBUeXBlPiB7XG4gIGNvbnN0IGlzRmlyc3RSZWxlYXNlID0gIW9wdGlvbnMubGF0ZXN0VGFnO1xuICBjb25zdCBsYXRlc3RWZXJzaW9uID0gYXdhaXQgcmVhZEN1cnJlbnRWZXJzaW9uKFxuICAgIGpvaW4oY3dkLCBvcHRpb25zLnZlcnNpb25GaWxlKSxcbiAgKTtcblxuICBjb25zdCBudW1Db21taXRzID0gKG9wdGlvbnMucmVsZWFzYWJsZUNvbW1pdHMgPz8gXCJcIilcbiAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAuZmlsdGVyKChsKSA9PiBsLnRyaW0oKSkubGVuZ3RoO1xuICBsb2dnaW5nLmluZm8oXG4gICAgYE51bWJlciBvZiBjb21taXRzIHNpbmNlICR7b3B0aW9ucy5sYXRlc3RUYWcgfHwgXCIoZmlyc3QgcmVsZWFzZSlcIn06ICR7bnVtQ29tbWl0c31gLFxuICApO1xuXG4gIGlmIChpc0ZpcnN0UmVsZWFzZSB8fCBudW1Db21taXRzID09PSAwKSB7XG4gICAgaWYgKCFpc0ZpcnN0UmVsZWFzZSkge1xuICAgICAgbG9nZ2luZy5pbmZvKFwiTm8gbmV3IGludGVyZXN0aW5nIGNvbW1pdHMuXCIpO1xuICAgIH1cbiAgICByZXR1cm4geyBidW1wOiBcIm5vbmVcIiB9O1xuICB9XG5cbiAgY29uc3QgY2F0diA9IG5ldyBDb21taXRBbmRUYWdWZXJzaW9uKG9wdGlvbnMuYnVtcFBhY2thZ2UsIGN3ZCwge1xuICAgIHZlcnNpb25GaWxlOiBqb2luKGN3ZCwgb3B0aW9ucy52ZXJzaW9uRmlsZSksXG4gICAgY2hhbmdlbG9nRmlsZTogam9pbihjd2QsIG9wdGlvbnMuY2hhbmdlbG9nKSxcbiAgICBwcmVyZWxlYXNlOiBvcHRpb25zLnByZXJlbGVhc2UsXG4gICAgY29uZmlnT3B0aW9uczogb3B0aW9ucy52ZXJzaW9ucmNPcHRpb25zLFxuICAgIHRhZ1ByZWZpeDogb3B0aW9ucy50YWdQcmVmaXggPz8gXCJcIixcbiAgfSk7XG5cbiAgcmV0dXJuIHJlbGF0aXZlQnVtcFR5cGUobGF0ZXN0VmVyc2lvbiwgYXdhaXQgY2F0di5kcnlSdW4oKSk7XG59XG5cbi8qKlxuICogUGhhc2UgMzogYXBwbHkgdGhlIGNob3NlbiBidW1wIC0gaW52b2tlIENBVFYgKG9yIHJlZ2VuZXJhdGUgdGhlIGNoYW5nZWxvZyksXG4gKiBlbmZvcmNlIHZlcnNpb24gY29uc3RyYWludHMsIGFuZCByZWNvcmQgdGhlIHJlc3VsdGluZyB2ZXJzaW9uIGFuZCB0YWcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseVZlcnNpb25CdW1wKFxuICBjd2Q6IHN0cmluZyxcbiAgb3B0aW9uczoge1xuICAgIHZlcnNpb25GaWxlOiBzdHJpbmc7XG4gICAgY2hhbmdlbG9nOiBzdHJpbmc7XG4gICAgYnVtcEZpbGU6IHN0cmluZztcbiAgICByZWxlYXNlVGFnRmlsZTogc3RyaW5nO1xuICAgIGJ1bXBUeXBlOiBCdW1wVHlwZTtcbiAgICBsYXRlc3RUYWc/OiBzdHJpbmc7XG4gICAgdGFnUHJlZml4Pzogc3RyaW5nO1xuICAgIHByZXJlbGVhc2U/OiBzdHJpbmc7XG4gICAgYnVtcFBhY2thZ2U/OiBzdHJpbmc7XG4gICAgdmVyc2lvbnJjT3B0aW9ucz86IENvbmZpZztcbiAgICBtYWpvclZlcnNpb24/OiBudW1iZXI7XG4gICAgbWlub3JWZXJzaW9uPzogbnVtYmVyO1xuICAgIG1pbk1ham9yVmVyc2lvbj86IG51bWJlcjtcbiAgfSxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBpc0ZpcnN0UmVsZWFzZSA9ICFvcHRpb25zLmxhdGVzdFRhZztcbiAgY29uc3QgdmVyc2lvbkZpbGUgPSBqb2luKGN3ZCwgb3B0aW9ucy52ZXJzaW9uRmlsZSk7XG4gIGNvbnN0IGJ1bXBGaWxlID0gam9pbihjd2QsIG9wdGlvbnMuYnVtcEZpbGUpO1xuICBjb25zdCBjaGFuZ2Vsb2dGaWxlID0gam9pbihjd2QsIG9wdGlvbnMuY2hhbmdlbG9nKTtcbiAgY29uc3QgcmVsZWFzZVRhZ0ZpbGUgPSBqb2luKGN3ZCwgb3B0aW9ucy5yZWxlYXNlVGFnRmlsZSk7XG4gIGNvbnN0IHRhZ1ByZWZpeCA9IG9wdGlvbnMudGFnUHJlZml4ID8/IFwiXCI7XG4gIGNvbnN0IGxhdGVzdFZlcnNpb24gPSBhd2FpdCByZWFkQ3VycmVudFZlcnNpb24odmVyc2lvbkZpbGUpO1xuXG4gIGF3YWl0IGZzLm1rZGlyKGRpcm5hbWUoYnVtcEZpbGUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgYXdhaXQgZnMubWtkaXIoZGlybmFtZShjaGFuZ2Vsb2dGaWxlKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGF3YWl0IGZzLm1rZGlyKGRpcm5hbWUocmVsZWFzZVRhZ0ZpbGUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBsZXQgYnVtcFR5cGUgPSBvcHRpb25zLmJ1bXBUeXBlO1xuXG4gIC8vIFJlc3BlY3QgbWluTWFqb3JWZXJzaW9uIHRvIGNvcnJlY3QgdGhlIHJlc3VsdCBvZiB0aGUgbmV4dFZlcnNpb25Db21tYW5kLlxuICBpZiAob3B0aW9ucy5taW5NYWpvclZlcnNpb24pIHtcbiAgICBjb25zdCBidW1wZWRWZXJzaW9uID0gcGVyZm9ybUJ1bXAobGF0ZXN0VmVyc2lvbiwgYnVtcFR5cGUpO1xuICAgIGNvbnN0IFttYWpvclZlcnNpb25dID0gYnVtcGVkVmVyc2lvbi5zcGxpdChcIi5cIik7XG4gICAgaWYgKHBhcnNlSW50KG1ham9yVmVyc2lvbiwgMTApIDwgb3B0aW9ucy5taW5NYWpvclZlcnNpb24pIHtcbiAgICAgIGJ1bXBUeXBlID0ge1xuICAgICAgICBidW1wOiBcImFic29sdXRlXCIsXG4gICAgICAgIGFic29sdXRlOiBgJHtvcHRpb25zLm1pbk1ham9yVmVyc2lvbn0uMC4wYCxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgY29uc3QgY2F0diA9IG5ldyBDb21taXRBbmRUYWdWZXJzaW9uKG9wdGlvbnMuYnVtcFBhY2thZ2UsIGN3ZCwge1xuICAgIHZlcnNpb25GaWxlLFxuICAgIGNoYW5nZWxvZ0ZpbGUsXG4gICAgcHJlcmVsZWFzZTogb3B0aW9ucy5wcmVyZWxlYXNlLFxuICAgIGNvbmZpZ09wdGlvbnM6IG9wdGlvbnMudmVyc2lvbnJjT3B0aW9ucyxcbiAgICB0YWdQcmVmaXgsXG4gIH0pO1xuXG4gIGNvbnN0IG5ld1JlbGVhc2UgPSBidW1wVHlwZS5idW1wICE9PSBcIm5vbmVcIjtcbiAgaWYgKCFuZXdSZWxlYXNlICYmICFpc0ZpcnN0UmVsZWFzZSkge1xuICAgIC8vIFJlZ2VuZXJhdGUgdGhlIGNoYW5nZWxvZyBvZiB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbi5cbiAgICBhd2FpdCBjYXR2LnJlZ2VuZXJhdGVQcmV2aW91c0NoYW5nZUxvZyhsYXRlc3RWZXJzaW9uLCBvcHRpb25zLmxhdGVzdFRhZyEpO1xuICB9IGVsc2Uge1xuICAgIC8vIEJ1bXAgKyByZWxlYXNlLCBvciByZWxlYXNlIHRoZSBmaXJzdCB2ZXJzaW9uIChhbHJlYWR5IGluIHRoZSBmaWxlKS5cbiAgICBhd2FpdCBjYXR2Lmludm9rZSh7XG4gICAgICByZWxlYXNlQXM6IG5ld1JlbGVhc2UgPyByZW5kZXJCdW1wVHlwZShidW1wVHlwZSkgOiB1bmRlZmluZWQsXG4gICAgICBza2lwQnVtcDogIW5ld1JlbGVhc2UsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBuZXdWZXJzaW9uID0gKGF3YWl0IHRyeVJlYWRWZXJzaW9uRmlsZSh2ZXJzaW9uRmlsZSkpLnZlcnNpb247XG4gIGlmICghbmV3VmVyc2lvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihgYnVtcCBmYWlsZWQ6ICR7dmVyc2lvbkZpbGV9IGRvZXMgbm90IGhhdmUgYSB2ZXJzaW9uIHNldGApO1xuICB9XG4gIGNvbnN0IG1ham9yID0gb3B0aW9ucy5tYWpvclZlcnNpb247XG4gIGNvbnN0IG1pbm9yID0gb3B0aW9ucy5taW5vclZlcnNpb247XG4gIGlmIChtYWpvciAhPT0gdW5kZWZpbmVkICYmICFuZXdWZXJzaW9uLnN0YXJ0c1dpdGgoYCR7bWFqb3J9LmApKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYGJ1bXAgZmFpbGVkOiB0aGlzIGJyYW5jaCBpcyBjb25maWd1cmVkIHRvIG9ubHkgcHVibGlzaCB2JHttYWpvcn0gcmVsZWFzZXMgLSBidW1wIHJlc3VsdGVkIGluICR7bmV3VmVyc2lvbn1gLFxuICAgICk7XG4gIH1cbiAgaWYgKG1pbm9yICE9PSB1bmRlZmluZWQgJiYgIW5ld1ZlcnNpb24uc3RhcnRzV2l0aChgJHttYWpvcn0uJHttaW5vcn1gKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBidW1wIGZhaWxlZDogdGhpcyBicmFuY2ggaXMgY29uZmlndXJlZCB0byBvbmx5IHB1Ymxpc2ggdiR7bWFqb3J9LiR7bWlub3J9IHJlbGVhc2VzIC0gYnVtcCByZXN1bHRlZCBpbiAke25ld1ZlcnNpb259YCxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgbmV3VGFnID0gYCR7dGFnUHJlZml4fXYke25ld1ZlcnNpb259YDtcbiAgYXdhaXQgZnMud3JpdGVGaWxlKGJ1bXBGaWxlLCBuZXdWZXJzaW9uKTtcbiAgYXdhaXQgZnMud3JpdGVGaWxlKHJlbGVhc2VUYWdGaWxlLCBuZXdUYWcpO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkQ3VycmVudFZlcnNpb24odmVyc2lvbkZpbGU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHsgdmVyc2lvbiB9ID0gYXdhaXQgdHJ5UmVhZFZlcnNpb25GaWxlKHZlcnNpb25GaWxlKTtcbiAgaWYgKCF2ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke3ZlcnNpb25GaWxlfSBkb2VzIG5vdCBoYXZlIGEgdmVyc2lvbiBzZXRgKTtcbiAgfVxuICByZXR1cm4gdmVyc2lvbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdHJ5UmVhZFZlcnNpb25GaWxlKFxuICB2ZXJzaW9uRmlsZTogc3RyaW5nLFxuKTogUHJvbWlzZTx7IGNvbnRlbnRzOiBhbnk7IHZlcnNpb24/OiBzdHJpbmc7IG5ld2xpbmU6IGJvb2xlYW4gfT4ge1xuICBpZiAoIWV4aXN0c1N5bmModmVyc2lvbkZpbGUpKSB7XG4gICAgcmV0dXJuIHsgY29udGVudHM6IHt9LCBuZXdsaW5lOiB0cnVlIH07XG4gIH1cbiAgY29uc3QgcmF3ID0gYXdhaXQgZnMucmVhZEZpbGUodmVyc2lvbkZpbGUsIFwidXRmLThcIik7XG4gIGNvbnN0IGNvbnRlbnRzID0gSlNPTi5wYXJzZShyYXcpO1xuXG4gIHJldHVybiB7XG4gICAgY29udGVudHMsXG4gICAgdmVyc2lvbjogY29udGVudHMudmVyc2lvbixcbiAgICBuZXdsaW5lOiByYXcuZW5kc1dpdGgoXCJcXG5cIiksXG4gIH07XG59XG5cbmludGVyZmFjZSBMYXRlc3RUYWdPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdvcmtpbmcgZGlyZWN0b3J5IG9mIHRoZSBnaXQgcmVwb3NpdG9yeS5cbiAgICovXG4gIHJlYWRvbmx5IGN3ZDogc3RyaW5nO1xuICAvKipcbiAgICogTWFqb3IgdmVyc2lvbiB0byBzZWxlY3QgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IG1ham9yPzogbnVtYmVyO1xuICAvKipcbiAgICogTWlub3IgdmVyc2lvbiB0byBzZWxlY3QgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IG1pbm9yPzogbnVtYmVyO1xuICAvKipcbiAgICogQSBwcmUtcmVsZWFzZSBzdWZmaXguXG4gICAqL1xuICByZWFkb25seSBwcmVyZWxlYXNlPzogc3RyaW5nO1xuICAvKipcbiAgICogQSBwcmVmaXggYXBwbGllZCB0byBhbGwgdGFncy5cbiAgICovXG4gIHJlYWRvbmx5IHByZWZpeDogc3RyaW5nO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgdGhlIGxhdGVzdCByZWxlYXNlIHRhZy5cbiAqIEBwYXJhbSBtYWpvciAob3B0aW9uYWwpIEEgbWFqb3IgdmVyc2lvbiBsaW5lIHRvIHNlbGVjdCBmcm9tXG4gKiBAcGFyYW0gcHJlcmVsZWFzZSAob3B0aW9uYWwpIEEgcHJlLXJlbGVhc2Ugc3VmZml4LlxuICogQHJldHVybnMgdGhlIGxhdGVzdCB0YWcsIGFuZCB3aGV0aGVyIGl0IGlzIHRoZSBmaXJzdCByZWxlYXNlIG9yIG5vdFxuICovXG5mdW5jdGlvbiBkZXRlcm1pbmVMYXRlc3RUYWcob3B0aW9uczogTGF0ZXN0VGFnT3B0aW9ucyk6IHtcbiAgbGF0ZXN0VmVyc2lvbjogc3RyaW5nO1xuICBsYXRlc3RUYWc6IHN0cmluZztcbiAgaXNGaXJzdFJlbGVhc2U6IGJvb2xlYW47XG59IHtcbiAgY29uc3QgeyBjd2QsIG1ham9yLCBtaW5vciwgcHJlcmVsZWFzZSwgcHJlZml4IH0gPSBvcHRpb25zO1xuXG4gIC8vIGZpbHRlciBvbmx5IHRhZ3MgZm9yIHRoaXMgcHJlZml4IGFuZCBtYWpvciB2ZXJzaW9uIGlmIHNwZWNpZmllZCAoc3RhcnQgd2l0aCBcInZOTi5cIikuXG4gIGxldCBwcmVmaXhGaWx0ZXI6IHN0cmluZztcbiAgaWYgKG1ham9yICE9PSB1bmRlZmluZWQgJiYgbWlub3IgIT09IHVuZGVmaW5lZCkge1xuICAgIHByZWZpeEZpbHRlciA9IGAke3ByZWZpeH12JHttYWpvcn0uJHttaW5vcn0uKmA7XG4gIH0gZWxzZSBpZiAobWFqb3IgIT09IHVuZGVmaW5lZCkge1xuICAgIHByZWZpeEZpbHRlciA9IGAke3ByZWZpeH12JHttYWpvcn0uKmA7XG4gIH0gZWxzZSB7XG4gICAgcHJlZml4RmlsdGVyID0gYCR7cHJlZml4fXYqYDtcbiAgfVxuXG4gIGNvbnN0IHN0ZG91dCA9IGdpdC5jYXB0dXJlKFxuICAgIFtcbiAgICAgIFwiLWNcIixcbiAgICAgIFwidmVyc2lvbnNvcnQuc3VmZml4PS1cIiwgLy8gbWFrZXMgc3VyZSBwcmUtcmVsZWFzZSB2ZXJzaW9ucyBhcmUgbGlzdGVkIGFmdGVyIHRoZSBwcmltYXJ5IHZlcnNpb25cbiAgICAgIFwidGFnXCIsXG4gICAgICBcIi0tc29ydD0tdmVyc2lvbjpyZWZuYW1lXCIsIC8vIHNvcnQgYXMgdmVyc2lvbnMgYW5kIG5vdCBsZXhpY29ncmFwaGljYWxseVxuICAgICAgXCItLWxpc3RcIixcbiAgICAgIHByZWZpeEZpbHRlcixcbiAgICBdLFxuICAgIHsgY3dkIH0sXG4gICk7XG5cbiAgbGV0IHRhZ3MgPSBzdGRvdXQ/LnNwbGl0KFwiXFxuXCIpO1xuXG4gIC8vIGlmIHByZXJlbGVhc2UgaXMgc2V0IGFuZCB0aGVyZSBhcmUgZXhpc3RpbmcgcHJlcmVsZWFzZSB0YWdzLCBmaWx0ZXIgdmVyc2lvbnMgdGhhdCBlbmQgd2l0aCBcIi1QUkUuZGRkXCIuXG4gIGNvbnN0IHByZXJlbGVhc2VUYWdzID0gdGFncy5maWx0ZXIoKHgpID0+XG4gICAgbmV3IFJlZ0V4cChgLSR7cHJlcmVsZWFzZX1cXFxcLlswLTldKyRgKS50ZXN0KHgpLFxuICApO1xuICBpZiAocHJlcmVsZWFzZSAmJiBwcmVyZWxlYXNlVGFncy5sZW5ndGggPiAwKSB7XG4gICAgbGV0IHByZXJlbGVhc2VUYWcgPSBwcmVyZWxlYXNlVGFnc1swXTtcblxuICAgIC8qKlxuICAgICAqIENvdmVyIHRoZSBmb2xsb3dpbmcgY2FzZSBzcGVjaWZpY2FsbHlcbiAgICAgKiAxIC0gdjEuMC4wXG4gICAgICogMiAtIHYxLjAuMS1iZXRhLjBcbiAgICAgKiAzIC0gdjEuMC4xLWJldGEuMVxuICAgICAqIDQgLSB2MS4wLjFcbiAgICAgKiA1IC0gbm93IHB1Ymxpc2ggYSBuZXcgcmVsZWFzZSBvbiB0aGUgcHJlcmVsZWFzZSBicmFuY2hcbiAgICAgKiAgICBieSBzZXR0aW5nIHRoZSBsYXRlc3RUYWcgYXMgdjEuMC4xIGluc3RlYWQgb2YgdjEuMC4xLWJldGEuMVxuICAgICAqL1xuICAgIGNvbnN0IHJlbGVhc2VUYWdzID0gdGFncy5maWx0ZXIoKHgpID0+XG4gICAgICBuZXcgUmVnRXhwKGBeJHtwcmVmaXh9dihbMC05XSspXFxcXC4oWzAtOV0rKVxcXFwuKFswLTldKykkYCkudGVzdCh4KSxcbiAgICApO1xuXG4gICAgbGV0IHJlbGVhc2VUYWc6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBpZiAocmVsZWFzZVRhZ3MubGVuZ3RoID4gMCkge1xuICAgICAgcmVsZWFzZVRhZyA9IHJlbGVhc2VUYWdzWzBdO1xuICAgIH1cblxuICAgIGlmIChwcmVmaXgpIHtcbiAgICAgIHJlbGVhc2VUYWcgPSByZWxlYXNlVGFnPy5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCk7XG4gICAgICBwcmVyZWxlYXNlVGFnID0gcHJlcmVsZWFzZVRhZy5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCk7XG4gICAgfVxuXG4gICAgaWYgKHJlbGVhc2VUYWcgJiYgY29tcGFyZShyZWxlYXNlVGFnLCBwcmVyZWxlYXNlVGFnKSA9PT0gMSkge1xuICAgICAgdGFncyA9IHJlbGVhc2VUYWdzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YWdzID0gcHJlcmVsZWFzZVRhZ3M7XG4gICAgfVxuICB9XG5cbiAgdGFncyA9IHRhZ3MuZmlsdGVyKCh4KSA9PiB4KTtcblxuICAvLyBpZiBhIHByZS1yZWxlYXNlIHRhZyBpcyB1c2VkLCB0aGVuIGFkZCBpdCB0byB0aGUgaW5pdGlhbCB2ZXJzaW9uXG4gIGxldCBpc0ZpcnN0UmVsZWFzZSA9IGZhbHNlO1xuICBsZXQgbGF0ZXN0VGFnO1xuXG4gIGlmICh0YWdzLmxlbmd0aCA+IDApIHtcbiAgICBsYXRlc3RUYWcgPSB0YWdzWzBdO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGluaXRpYWwgPSBgJHtwcmVmaXh9diR7bWFqb3IgPz8gMH0uJHttaW5vciA/PyAwfS4wYDtcbiAgICBsYXRlc3RUYWcgPSBwcmVyZWxlYXNlID8gYCR7aW5pdGlhbH0tJHtwcmVyZWxlYXNlfS4wYCA6IGluaXRpYWw7XG4gICAgaXNGaXJzdFJlbGVhc2UgPSB0cnVlO1xuICB9XG5cbiAgLy8gcmVtb3ZlIHRhZyBwcmVmaXggKGlmIGV4aXN0cylcbiAgbGV0IGxhdGVzdFZlcnNpb24gPSBsYXRlc3RUYWc7XG4gIGlmIChwcmVmaXggJiYgbGF0ZXN0VmVyc2lvbi5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICBsYXRlc3RWZXJzaW9uID0gbGF0ZXN0VmVyc2lvbi5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCk7XG4gIH1cblxuICAvLyByZW1vdmUgXCJ2XCIgcHJlZml4IChpZiBleGlzdHMpXG4gIGlmIChsYXRlc3RWZXJzaW9uLnN0YXJ0c1dpdGgoXCJ2XCIpKSB7XG4gICAgbGF0ZXN0VmVyc2lvbiA9IGxhdGVzdFZlcnNpb24uc3Vic3RyaW5nKDEpO1xuICB9XG5cbiAgcmV0dXJuIHsgbGF0ZXN0VmVyc2lvbiwgbGF0ZXN0VGFnLCBpc0ZpcnN0UmVsZWFzZSB9O1xufVxuIl19
@@ -48,7 +48,7 @@ const PUBLISH_JOB_PREFIX = "release_";
48
48
  * Under the hood, it uses https://github.com/cdklabs/publib
49
49
  */
50
50
  class Publisher extends component_1.Component {
51
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.release.Publisher", version: "0.101.13" };
51
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.release.Publisher", version: "0.101.15" };
52
52
  static PUBLISH_GIT_TASK_NAME = "publish:git";
53
53
  buildJobId;
54
54
  artifactName;
@@ -7,7 +7,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
7
7
  * and release artifact automation
8
8
  */
9
9
  class ReleaseTrigger {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.release.ReleaseTrigger", version: "0.101.13" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.release.ReleaseTrigger", version: "0.101.15" };
11
11
  /**
12
12
  * Creates a manual release trigger.
13
13
  *
@@ -64,7 +64,7 @@ const DEPENDENT_JOB_CONDITIONAL = `needs.${BUILD_JOBID}.outputs.${TAG_EXISTS_OUT
64
64
  * By default, no branches are released. To add branches, call `addBranch()`.
65
65
  */
66
66
  class Release extends component_1.Component {
67
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.release.Release", version: "0.101.13" };
67
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.release.Release", version: "0.101.15" };
68
68
  static ANTI_TAMPER_CMD = "git diff --ignore-space-at-eol --exit-code";
69
69
  /**
70
70
  * Returns the `Release` component of a project or `undefined` if the project
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ // Builtin task (step 1 of `bump`): resolves the latest tag/version, seeds the
3
+ // version file, and prints the latest tag so it is captured into `LATEST_TAG`
4
+ // for the later steps. On a first release the tag is printed as empty, which is
5
+ // how the later phases detect "first release".
6
+ //
7
+ // Inputs (env): OUTFILE, RELEASE_TAG_PREFIX, MAJOR, MINOR, MIN_MAJOR,
8
+ // PRERELEASE.
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const bump_version_1 = require("./bump-version");
11
+ const task_env_1 = require("../util/task-env");
12
+ (0, task_env_1.runBuiltin)(async () => {
13
+ const context = await (0, bump_version_1.resolveLatestTag)(process.cwd(), {
14
+ versionFile: (0, task_env_1.requireEnv)("OUTFILE"),
15
+ tagPrefix: process.env.RELEASE_TAG_PREFIX,
16
+ majorVersion: (0, task_env_1.intEnv)("MAJOR"),
17
+ minorVersion: (0, task_env_1.intEnv)("MINOR"),
18
+ minMajorVersion: (0, task_env_1.intEnv)("MIN_MAJOR"),
19
+ prerelease: process.env.PRERELEASE || undefined,
20
+ });
21
+ process.stdout.write(context.isFirstRelease ? "" : context.latestTag);
22
+ });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1sYXRlc3QtdGFnLnRhc2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVsZWFzZS9yZXNvbHZlLWxhdGVzdC10YWcudGFzay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsOEVBQThFO0FBQzlFLDhFQUE4RTtBQUM5RSxnRkFBZ0Y7QUFDaEYsK0NBQStDO0FBQy9DLEVBQUU7QUFDRixzRUFBc0U7QUFDdEUsY0FBYzs7QUFFZCxpREFBa0Q7QUFDbEQsK0NBQWtFO0FBRWxFLElBQUEscUJBQVUsRUFBQyxLQUFLLElBQUksRUFBRTtJQUNwQixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUEsK0JBQWdCLEVBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ3BELFdBQVcsRUFBRSxJQUFBLHFCQUFVLEVBQUMsU0FBUyxDQUFDO1FBQ2xDLFNBQVMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQjtRQUN6QyxZQUFZLEVBQUUsSUFBQSxpQkFBTSxFQUFDLE9BQU8sQ0FBQztRQUM3QixZQUFZLEVBQUUsSUFBQSxpQkFBTSxFQUFDLE9BQU8sQ0FBQztRQUM3QixlQUFlLEVBQUUsSUFBQSxpQkFBTSxFQUFDLFdBQVcsQ0FBQztRQUNwQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksU0FBUztLQUNoRCxDQUFDLENBQUM7SUFDSCxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN4RSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEJ1aWx0aW4gdGFzayAoc3RlcCAxIG9mIGBidW1wYCk6IHJlc29sdmVzIHRoZSBsYXRlc3QgdGFnL3ZlcnNpb24sIHNlZWRzIHRoZVxuLy8gdmVyc2lvbiBmaWxlLCBhbmQgcHJpbnRzIHRoZSBsYXRlc3QgdGFnIHNvIGl0IGlzIGNhcHR1cmVkIGludG8gYExBVEVTVF9UQUdgXG4vLyBmb3IgdGhlIGxhdGVyIHN0ZXBzLiBPbiBhIGZpcnN0IHJlbGVhc2UgdGhlIHRhZyBpcyBwcmludGVkIGFzIGVtcHR5LCB3aGljaCBpc1xuLy8gaG93IHRoZSBsYXRlciBwaGFzZXMgZGV0ZWN0IFwiZmlyc3QgcmVsZWFzZVwiLlxuLy9cbi8vIElucHV0cyAoZW52KTogT1VURklMRSwgUkVMRUFTRV9UQUdfUFJFRklYLCBNQUpPUiwgTUlOT1IsIE1JTl9NQUpPUixcbi8vIFBSRVJFTEVBU0UuXG5cbmltcG9ydCB7IHJlc29sdmVMYXRlc3RUYWcgfSBmcm9tIFwiLi9idW1wLXZlcnNpb25cIjtcbmltcG9ydCB7IGludEVudiwgcmVxdWlyZUVudiwgcnVuQnVpbHRpbiB9IGZyb20gXCIuLi91dGlsL3Rhc2stZW52XCI7XG5cbnJ1bkJ1aWx0aW4oYXN5bmMgKCkgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gYXdhaXQgcmVzb2x2ZUxhdGVzdFRhZyhwcm9jZXNzLmN3ZCgpLCB7XG4gICAgdmVyc2lvbkZpbGU6IHJlcXVpcmVFbnYoXCJPVVRGSUxFXCIpLFxuICAgIHRhZ1ByZWZpeDogcHJvY2Vzcy5lbnYuUkVMRUFTRV9UQUdfUFJFRklYLFxuICAgIG1ham9yVmVyc2lvbjogaW50RW52KFwiTUFKT1JcIiksXG4gICAgbWlub3JWZXJzaW9uOiBpbnRFbnYoXCJNSU5PUlwiKSxcbiAgICBtaW5NYWpvclZlcnNpb246IGludEVudihcIk1JTl9NQUpPUlwiKSxcbiAgICBwcmVyZWxlYXNlOiBwcm9jZXNzLmVudi5QUkVSRUxFQVNFIHx8IHVuZGVmaW5lZCxcbiAgfSk7XG4gIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGNvbnRleHQuaXNGaXJzdFJlbGVhc2UgPyBcIlwiIDogY29udGV4dC5sYXRlc3RUYWcpO1xufSk7XG4iXX0=
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ // Builtin task (step 3 of `bump`): decides the commit-derived bump type from
3
+ // the `releasable-commits` output and prints it, capturing it into
4
+ // `SUGGESTED_BUMP`.
5
+ //
6
+ // Inputs (env): OUTFILE, CHANGELOG, LATEST_TAG, RELEASE_TAG_PREFIX, PRERELEASE,
7
+ // BUMP_PACKAGE, VERSIONRCOPTIONS, RELEASABLE_COMMITS.
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ const bump_type_1 = require("./bump-type");
10
+ const bump_version_1 = require("./bump-version");
11
+ const task_env_1 = require("../util/task-env");
12
+ (0, task_env_1.runBuiltin)(async () => {
13
+ const bumpType = await (0, bump_version_1.suggestVersionBump)(process.cwd(), {
14
+ versionFile: (0, task_env_1.requireEnv)("OUTFILE"),
15
+ changelog: (0, task_env_1.requireEnv)("CHANGELOG"),
16
+ latestTag: process.env.LATEST_TAG,
17
+ tagPrefix: process.env.RELEASE_TAG_PREFIX,
18
+ prerelease: process.env.PRERELEASE || undefined,
19
+ bumpPackage: process.env.BUMP_PACKAGE,
20
+ versionrcOptions: JSON.parse(process.env.VERSIONRCOPTIONS ?? "{}"),
21
+ releasableCommits: process.env.RELEASABLE_COMMITS,
22
+ });
23
+ process.stdout.write((0, bump_type_1.renderBumpType)(bumpType));
24
+ });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VnZ2VzdC12ZXJzaW9uLWJ1bXAudGFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWxlYXNlL3N1Z2dlc3QtdmVyc2lvbi1idW1wLnRhc2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDZFQUE2RTtBQUM3RSxtRUFBbUU7QUFDbkUsb0JBQW9CO0FBQ3BCLEVBQUU7QUFDRixnRkFBZ0Y7QUFDaEYsc0RBQXNEOztBQUV0RCwyQ0FBNkM7QUFDN0MsaURBQW9EO0FBQ3BELCtDQUEwRDtBQUUxRCxJQUFBLHFCQUFVLEVBQUMsS0FBSyxJQUFJLEVBQUU7SUFDcEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLGlDQUFrQixFQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUN2RCxXQUFXLEVBQUUsSUFBQSxxQkFBVSxFQUFDLFNBQVMsQ0FBQztRQUNsQyxTQUFTLEVBQUUsSUFBQSxxQkFBVSxFQUFDLFdBQVcsQ0FBQztRQUNsQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVO1FBQ2pDLFNBQVMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQjtRQUN6QyxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksU0FBUztRQUMvQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZO1FBQ3JDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUM7UUFDbEUsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0I7S0FDbEQsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBQSwwQkFBYyxFQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCdWlsdGluIHRhc2sgKHN0ZXAgMyBvZiBgYnVtcGApOiBkZWNpZGVzIHRoZSBjb21taXQtZGVyaXZlZCBidW1wIHR5cGUgZnJvbVxuLy8gdGhlIGByZWxlYXNhYmxlLWNvbW1pdHNgIG91dHB1dCBhbmQgcHJpbnRzIGl0LCBjYXB0dXJpbmcgaXQgaW50b1xuLy8gYFNVR0dFU1RFRF9CVU1QYC5cbi8vXG4vLyBJbnB1dHMgKGVudik6IE9VVEZJTEUsIENIQU5HRUxPRywgTEFURVNUX1RBRywgUkVMRUFTRV9UQUdfUFJFRklYLCBQUkVSRUxFQVNFLFxuLy8gQlVNUF9QQUNLQUdFLCBWRVJTSU9OUkNPUFRJT05TLCBSRUxFQVNBQkxFX0NPTU1JVFMuXG5cbmltcG9ydCB7IHJlbmRlckJ1bXBUeXBlIH0gZnJvbSBcIi4vYnVtcC10eXBlXCI7XG5pbXBvcnQgeyBzdWdnZXN0VmVyc2lvbkJ1bXAgfSBmcm9tIFwiLi9idW1wLXZlcnNpb25cIjtcbmltcG9ydCB7IHJlcXVpcmVFbnYsIHJ1bkJ1aWx0aW4gfSBmcm9tIFwiLi4vdXRpbC90YXNrLWVudlwiO1xuXG5ydW5CdWlsdGluKGFzeW5jICgpID0+IHtcbiAgY29uc3QgYnVtcFR5cGUgPSBhd2FpdCBzdWdnZXN0VmVyc2lvbkJ1bXAocHJvY2Vzcy5jd2QoKSwge1xuICAgIHZlcnNpb25GaWxlOiByZXF1aXJlRW52KFwiT1VURklMRVwiKSxcbiAgICBjaGFuZ2Vsb2c6IHJlcXVpcmVFbnYoXCJDSEFOR0VMT0dcIiksXG4gICAgbGF0ZXN0VGFnOiBwcm9jZXNzLmVudi5MQVRFU1RfVEFHLFxuICAgIHRhZ1ByZWZpeDogcHJvY2Vzcy5lbnYuUkVMRUFTRV9UQUdfUFJFRklYLFxuICAgIHByZXJlbGVhc2U6IHByb2Nlc3MuZW52LlBSRVJFTEVBU0UgfHwgdW5kZWZpbmVkLFxuICAgIGJ1bXBQYWNrYWdlOiBwcm9jZXNzLmVudi5CVU1QX1BBQ0tBR0UsXG4gICAgdmVyc2lvbnJjT3B0aW9uczogSlNPTi5wYXJzZShwcm9jZXNzLmVudi5WRVJTSU9OUkNPUFRJT05TID8/IFwie31cIiksXG4gICAgcmVsZWFzYWJsZUNvbW1pdHM6IHByb2Nlc3MuZW52LlJFTEVBU0FCTEVfQ09NTUlUUyxcbiAgfSk7XG4gIHByb2Nlc3Muc3Rkb3V0LndyaXRlKHJlbmRlckJ1bXBUeXBlKGJ1bXBUeXBlKSk7XG59KTtcbiJdfQ==
@@ -68,7 +68,7 @@ var RenovatebotMinimumReleaseAgeBehaviour;
68
68
  * Ignores the versions controlled by Projen.
69
69
  */
70
70
  class Renovatebot extends component_1.Component {
71
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Renovatebot", version: "0.101.13" };
71
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Renovatebot", version: "0.101.15" };
72
72
  /**
73
73
  * The file holding the renovatebot configuration
74
74
  */