projen 0.104.1 → 0.104.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +70 -70
- package/lib/ai-instructions.js +2 -2
- package/lib/awscdk/auto-discover.js +6 -6
- package/lib/awscdk/awscdk-app-java.js +1 -1
- package/lib/awscdk/awscdk-app-py.js +1 -1
- package/lib/awscdk/awscdk-app-ts.js +1 -1
- package/lib/awscdk/awscdk-construct.js +1 -1
- package/lib/awscdk/awscdk-deps-java.js +1 -1
- package/lib/awscdk/awscdk-deps-js.js +1 -1
- package/lib/awscdk/awscdk-deps-py.js +1 -1
- package/lib/awscdk/awscdk-deps.js +1 -1
- package/lib/awscdk/cdk-config.js +3 -3
- package/lib/awscdk/cdk-tasks.js +1 -1
- package/lib/awscdk/integration-test.js +1 -1
- package/lib/awscdk/lambda-extension.js +1 -1
- package/lib/awscdk/lambda-function.js +2 -2
- package/lib/build/build-workflow.js +1 -1
- package/lib/cdk/auto-discover-base.js +2 -2
- package/lib/cdk/construct-lib.js +1 -1
- package/lib/cdk/integration-test-base.js +1 -1
- package/lib/cdk/jsii-build.js +1 -1
- package/lib/cdk/jsii-docgen.js +1 -1
- package/lib/cdk/jsii-project.js +4 -2
- package/lib/cdk8s/auto-discover.js +2 -2
- package/lib/cdk8s/cdk8s-app-py.js +1 -1
- package/lib/cdk8s/cdk8s-app-ts.js +1 -1
- package/lib/cdk8s/cdk8s-construct.js +1 -1
- package/lib/cdk8s/cdk8s-deps-py.js +1 -1
- package/lib/cdk8s/cdk8s-deps.js +1 -1
- package/lib/cdk8s/integration-test.js +1 -1
- package/lib/cdktf/cdktf-construct.js +1 -1
- package/lib/cdktn/cdktn-app-ts.js +1 -1
- package/lib/cdktn/cdktn-config.js +1 -1
- package/lib/cdktn/cdktn-construct.js +1 -1
- package/lib/cdktn/cdktn-deps.js +1 -1
- package/lib/cdktn/cdktn-tasks.js +1 -1
- package/lib/circleci/circleci.js +1 -1
- package/lib/component.js +2 -2
- package/lib/dependencies.js +1 -1
- package/lib/dev-env.js +1 -1
- package/lib/docker-compose/docker-compose-service.js +1 -1
- package/lib/docker-compose/docker-compose.js +1 -1
- package/lib/file.js +1 -1
- package/lib/gitattributes.js +1 -1
- package/lib/github/actions-provider.js +1 -1
- package/lib/github/actions.const.js +1 -1
- package/lib/github/auto-approve.js +1 -1
- package/lib/github/auto-merge.js +1 -1
- package/lib/github/auto-queue.js +1 -1
- package/lib/github/dependabot.js +1 -1
- package/lib/github/dependency-review.js +1 -1
- package/lib/github/github-credentials.js +1 -1
- package/lib/github/github-project.js +1 -1
- package/lib/github/github.js +1 -1
- package/lib/github/merge-queue.js +1 -1
- package/lib/github/mergify.js +1 -1
- package/lib/github/pr-template.js +1 -1
- package/lib/github/pull-request-backport.js +1 -1
- package/lib/github/pull-request-lint.js +1 -1
- package/lib/github/pull-request-source.js +1 -1
- package/lib/github/stale.js +1 -1
- package/lib/github/task-workflow-job.js +1 -1
- package/lib/github/task-workflow.js +1 -1
- package/lib/github/workflow-actions.js +1 -1
- package/lib/github/workflow-jobs.js +1 -1
- package/lib/github/workflow-steps.js +1 -1
- package/lib/github/workflows.js +1 -1
- package/lib/gitlab/configuration.js +1 -1
- package/lib/gitlab/gitlab-configuration.js +1 -1
- package/lib/gitlab/nested-configuration.js +1 -1
- package/lib/gitpod.js +1 -1
- package/lib/ignore-file.js +1 -1
- package/lib/ini.js +1 -1
- package/lib/java/java-project.js +1 -1
- package/lib/java/junit.js +1 -1
- package/lib/java/maven-compile.js +1 -1
- package/lib/java/maven-packaging.js +1 -1
- package/lib/java/maven-sample.js +1 -1
- package/lib/java/pom.js +2 -2
- package/lib/java/projenrc.js +1 -1
- package/lib/javascript/biome/biome.js +1 -1
- package/lib/javascript/bundler.js +24 -2
- package/lib/javascript/eslint.js +1 -1
- package/lib/javascript/jest.js +4 -4
- package/lib/javascript/license-checker.js +1 -1
- package/lib/javascript/node-config-file.js +1 -1
- package/lib/javascript/node-native-test-runner.js +2 -2
- package/lib/javascript/node-package.js +1 -1
- package/lib/javascript/node-project.js +1 -1
- package/lib/javascript/npm-config.js +1 -1
- package/lib/javascript/pnpm-workspace-config.js +2 -2
- package/lib/javascript/pnpm-workspace.js +1 -1
- package/lib/javascript/prettier.js +1 -1
- package/lib/javascript/projenrc.js +1 -1
- package/lib/javascript/typescript-config.js +2 -2
- package/lib/javascript/upgrade-dependencies.js +2 -2
- package/lib/javascript/yarnrc.js +1 -1
- package/lib/json-patch.js +1 -1
- package/lib/json.js +1 -1
- package/lib/license.js +1 -1
- package/lib/logger.js +1 -1
- package/lib/makefile.js +1 -1
- package/lib/object-file.js +1 -1
- package/lib/polaris/coverity-go.js +1 -1
- package/lib/polaris/coverity-java.js +1 -1
- package/lib/polaris/coverity-javascript.js +1 -1
- package/lib/polaris/coverity.js +1 -1
- package/lib/project-build.js +1 -1
- package/lib/project-tree.js +1 -1
- package/lib/project.js +1 -1
- package/lib/projects.js +1 -1
- package/lib/projenrc-json.js +1 -1
- package/lib/projenrc.js +1 -1
- package/lib/properties-file.js +1 -1
- package/lib/python/pip.js +1 -1
- package/lib/python/poetry.js +2 -2
- package/lib/python/projenrc.js +1 -1
- package/lib/python/pyproject-toml-file.js +1 -1
- package/lib/python/pytest-sample.js +1 -1
- package/lib/python/pytest.js +1 -1
- package/lib/python/python-project.js +1 -1
- package/lib/python/python-sample.js +1 -1
- package/lib/python/requirements-file.js +1 -1
- package/lib/python/setuppy.js +1 -1
- package/lib/python/setuptools.js +1 -1
- package/lib/python/uv-config.js +1 -1
- package/lib/python/uv.js +1 -1
- package/lib/python/venv.js +1 -1
- package/lib/readme.js +1 -1
- package/lib/release/publisher.js +1 -1
- package/lib/release/release-trigger.js +1 -1
- package/lib/release/release.js +1 -1
- package/lib/renovatebot.js +1 -1
- package/lib/run-task.cjs +1 -1
- package/lib/sample-file.js +2 -2
- package/lib/script-runner.js +1 -1
- package/lib/sonarqube/javascript.js +1 -1
- package/lib/sonarqube/rust.js +1 -1
- package/lib/sonarqube/sonarqube.js +1 -1
- package/lib/sonarqube/typescript.js +1 -1
- package/lib/source-code.js +1 -1
- package/lib/task-shell.js +1 -1
- package/lib/task.js +1 -1
- package/lib/tasks.js +1 -1
- package/lib/testing.js +1 -1
- package/lib/textfile.js +1 -1
- package/lib/toml.js +1 -1
- package/lib/typescript/projenrc-ts.js +1 -1
- package/lib/typescript/projenrc.js +1 -1
- package/lib/typescript/typescript-runner.js +1 -1
- package/lib/typescript/typescript-typedoc.js +1 -1
- package/lib/typescript/typescript.js +5 -5
- package/lib/version.js +2 -2
- package/lib/vscode/devcontainer.js +1 -1
- package/lib/vscode/extensions.js +1 -1
- package/lib/vscode/launch-config.js +1 -1
- package/lib/vscode/settings.js +1 -1
- package/lib/vscode/vscode.js +1 -1
- package/lib/web/next.js +3 -3
- package/lib/web/postcss.js +1 -1
- package/lib/web/react.js +3 -3
- package/lib/web/tailwind.js +1 -1
- package/lib/xmlfile.js +1 -1
- package/lib/yaml.js +1 -1
- package/package.json +1 -1
package/lib/github/dependabot.js
CHANGED
|
@@ -166,7 +166,7 @@ var VersioningStrategy;
|
|
|
166
166
|
* on the lockfile itself will be proposed.
|
|
167
167
|
*/
|
|
168
168
|
class Dependabot extends component_1.Component {
|
|
169
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.Dependabot", version: "0.104.
|
|
169
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.Dependabot", version: "0.104.3" };
|
|
170
170
|
/**
|
|
171
171
|
* The raw dependabot configuration.
|
|
172
172
|
* @see https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates
|
|
@@ -15,7 +15,7 @@ const component_1 = require("../component");
|
|
|
15
15
|
* @see https://github.com/actions/dependency-review-action
|
|
16
16
|
*/
|
|
17
17
|
class DependencyReview extends component_1.Component {
|
|
18
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.DependencyReview", version: "0.104.
|
|
18
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.DependencyReview", version: "0.104.3" };
|
|
19
19
|
constructor(github, options = {}) {
|
|
20
20
|
super(github.project);
|
|
21
21
|
const commentSummary = options.commentSummaryInPr ?? "always";
|
|
@@ -42,7 +42,7 @@ const actions_const_1 = require("./actions.const");
|
|
|
42
42
|
*/
|
|
43
43
|
class GithubCredentials {
|
|
44
44
|
options;
|
|
45
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.GithubCredentials", version: "0.104.
|
|
45
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.GithubCredentials", version: "0.104.3" };
|
|
46
46
|
/**
|
|
47
47
|
* Provide API access through a GitHub personal access token.
|
|
48
48
|
*
|
|
@@ -21,7 +21,7 @@ const vscode_1 = require("../vscode");
|
|
|
21
21
|
* "engines" can be used to implement our CI/CD solutions.
|
|
22
22
|
*/
|
|
23
23
|
class GitHubProject extends project_1.Project {
|
|
24
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.GitHubProject", version: "0.104.
|
|
24
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.GitHubProject", version: "0.104.3" };
|
|
25
25
|
/**
|
|
26
26
|
* Access all github components.
|
|
27
27
|
*
|
package/lib/github/github.js
CHANGED
|
@@ -16,7 +16,7 @@ const workflows_1 = require("./workflows");
|
|
|
16
16
|
const component_1 = require("../component");
|
|
17
17
|
const runner_options_1 = require("../runner-options");
|
|
18
18
|
class GitHub extends component_1.Component {
|
|
19
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.GitHub", version: "0.104.
|
|
19
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.GitHub", version: "0.104.3" };
|
|
20
20
|
/**
|
|
21
21
|
* Returns the `GitHub` component of a project or `undefined` if the project
|
|
22
22
|
* does not have a GitHub component.
|
|
@@ -10,7 +10,7 @@ const github_1 = require("./github");
|
|
|
10
10
|
*/
|
|
11
11
|
class MergeQueue extends component_1.Component {
|
|
12
12
|
options;
|
|
13
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.MergeQueue", version: "0.104.
|
|
13
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.MergeQueue", version: "0.104.3" };
|
|
14
14
|
constructor(scope, options = {}) {
|
|
15
15
|
super(scope);
|
|
16
16
|
this.options = options;
|
package/lib/github/mergify.js
CHANGED
|
@@ -6,7 +6,7 @@ const component_1 = require("../component");
|
|
|
6
6
|
const util_1 = require("../util");
|
|
7
7
|
const yaml_1 = require("../yaml");
|
|
8
8
|
class Mergify extends component_1.Component {
|
|
9
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.Mergify", version: "0.104.
|
|
9
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.Mergify", version: "0.104.3" };
|
|
10
10
|
rules = new Array();
|
|
11
11
|
queues = new Array();
|
|
12
12
|
// The actual YAML file will only be created if at least 1 rule is added.
|
|
@@ -7,7 +7,7 @@ const textfile_1 = require("../textfile");
|
|
|
7
7
|
* Template for GitHub pull requests.
|
|
8
8
|
*/
|
|
9
9
|
class PullRequestTemplate extends textfile_1.TextFile {
|
|
10
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.PullRequestTemplate", version: "0.104.
|
|
10
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.PullRequestTemplate", version: "0.104.3" };
|
|
11
11
|
/**
|
|
12
12
|
* Returns the `PullRequestTemplate` instance associated with a project or `undefined` if
|
|
13
13
|
* there is no PullRequestTemplate.
|
|
@@ -10,7 +10,7 @@ const component_1 = require("../component");
|
|
|
10
10
|
const json_1 = require("../json");
|
|
11
11
|
const release_1 = require("../release");
|
|
12
12
|
class PullRequestBackport extends component_1.Component {
|
|
13
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.PullRequestBackport", version: "0.104.
|
|
13
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.PullRequestBackport", version: "0.104.3" };
|
|
14
14
|
file;
|
|
15
15
|
workflow;
|
|
16
16
|
constructor(scope, options = {}) {
|
|
@@ -13,7 +13,7 @@ const component_1 = require("../component");
|
|
|
13
13
|
class PullRequestLint extends component_1.Component {
|
|
14
14
|
github;
|
|
15
15
|
options;
|
|
16
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.PullRequestLint", version: "0.104.
|
|
16
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.PullRequestLint", version: "0.104.3" };
|
|
17
17
|
constructor(github, options = {}) {
|
|
18
18
|
super(github.project);
|
|
19
19
|
this.github = github;
|
|
@@ -9,7 +9,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
9
9
|
*/
|
|
10
10
|
class PullRequestSource {
|
|
11
11
|
condition;
|
|
12
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.PullRequestSource", version: "0.104.
|
|
12
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.PullRequestSource", version: "0.104.3" };
|
|
13
13
|
/**
|
|
14
14
|
* Pull requests from a head branch in this repository.
|
|
15
15
|
*
|
package/lib/github/stale.js
CHANGED
|
@@ -18,7 +18,7 @@ const component_1 = require("../component");
|
|
|
18
18
|
* @see https://github.com/actions/stale
|
|
19
19
|
*/
|
|
20
20
|
class Stale extends component_1.Component {
|
|
21
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.Stale", version: "0.104.
|
|
21
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.Stale", version: "0.104.3" };
|
|
22
22
|
constructor(github, options = {}) {
|
|
23
23
|
super(github.project);
|
|
24
24
|
const stale = github.addWorkflow("stale");
|
|
@@ -13,7 +13,7 @@ const path_1 = require("../util/path");
|
|
|
13
13
|
* @implements {Job}
|
|
14
14
|
*/
|
|
15
15
|
class TaskWorkflowJob extends component_1.Component {
|
|
16
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.TaskWorkflowJob", version: "0.104.
|
|
16
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.TaskWorkflowJob", version: "0.104.3" };
|
|
17
17
|
runsOn;
|
|
18
18
|
runsOnGroup;
|
|
19
19
|
steps;
|
|
@@ -9,7 +9,7 @@ const DEFAULT_JOB_ID = "build";
|
|
|
9
9
|
* A GitHub workflow for common build tasks within a project.
|
|
10
10
|
*/
|
|
11
11
|
class TaskWorkflow extends workflows_1.GithubWorkflow {
|
|
12
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.TaskWorkflow", version: "0.104.
|
|
12
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.TaskWorkflow", version: "0.104.3" };
|
|
13
13
|
jobId;
|
|
14
14
|
artifactsDirectory;
|
|
15
15
|
constructor(github, options) {
|
|
@@ -17,7 +17,7 @@ const RUNNER_TEMP = "${{ runner.temp }}";
|
|
|
17
17
|
* A set of utility functions for creating GitHub actions in workflows.
|
|
18
18
|
*/
|
|
19
19
|
class WorkflowActions {
|
|
20
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.WorkflowActions", version: "0.104.
|
|
20
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.WorkflowActions", version: "0.104.3" };
|
|
21
21
|
/**
|
|
22
22
|
* Creates a .patch file from the current git diff and uploads it as an
|
|
23
23
|
* artifact. Use `checkoutWithPatch` to download and apply in another job.
|
|
@@ -10,7 +10,7 @@ const runner_options_1 = require("../runner-options");
|
|
|
10
10
|
* A set of utility functions for creating jobs in GitHub Workflows.
|
|
11
11
|
*/
|
|
12
12
|
class WorkflowJobs {
|
|
13
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.WorkflowJobs", version: "0.104.
|
|
13
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.WorkflowJobs", version: "0.104.3" };
|
|
14
14
|
/**
|
|
15
15
|
* Creates a pull request with the changes of a patch file.
|
|
16
16
|
*
|
|
@@ -26,7 +26,7 @@ var CheckoutSubmodules;
|
|
|
26
26
|
* A collection of very commonly used, individual, GitHub Workflow Job steps.
|
|
27
27
|
*/
|
|
28
28
|
class WorkflowSteps {
|
|
29
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.WorkflowSteps", version: "0.104.
|
|
29
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.WorkflowSteps", version: "0.104.3" };
|
|
30
30
|
/**
|
|
31
31
|
* Checks out a repository.
|
|
32
32
|
*
|
package/lib/github/workflows.js
CHANGED
|
@@ -18,7 +18,7 @@ const yaml_1 = require("../yaml");
|
|
|
18
18
|
* @see https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
|
|
19
19
|
*/
|
|
20
20
|
class GithubWorkflow extends component_1.Component {
|
|
21
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.GithubWorkflow", version: "0.104.
|
|
21
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.GithubWorkflow", version: "0.104.3" };
|
|
22
22
|
/**
|
|
23
23
|
* The name of the workflow. GitHub displays the names of your workflows under your repository's
|
|
24
24
|
* "Actions" tab.
|
|
@@ -45,7 +45,7 @@ const yaml_1 = require("../yaml");
|
|
|
45
45
|
* @see https://docs.gitlab.com/ee/ci/yaml/
|
|
46
46
|
*/
|
|
47
47
|
class CiConfiguration extends component_1.Component {
|
|
48
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.gitlab.CiConfiguration", version: "0.104.
|
|
48
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.gitlab.CiConfiguration", version: "0.104.3" };
|
|
49
49
|
/**
|
|
50
50
|
* The name of the configuration.
|
|
51
51
|
*/
|
|
@@ -8,7 +8,7 @@ const nested_configuration_1 = require("./nested-configuration");
|
|
|
8
8
|
* A GitLab CI for the main `.gitlab-ci.yml` file.
|
|
9
9
|
*/
|
|
10
10
|
class GitlabConfiguration extends configuration_1.CiConfiguration {
|
|
11
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.gitlab.GitlabConfiguration", version: "0.104.
|
|
11
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.gitlab.GitlabConfiguration", version: "0.104.3" };
|
|
12
12
|
nestedTemplates = {};
|
|
13
13
|
constructor(project, options) {
|
|
14
14
|
super(project, "gitlab-ci", options);
|
|
@@ -7,7 +7,7 @@ const configuration_1 = require("./configuration");
|
|
|
7
7
|
* A GitLab CI for templates that are created and included in the `.gitlab-ci.yml` file.
|
|
8
8
|
*/
|
|
9
9
|
class NestedConfiguration extends configuration_1.CiConfiguration {
|
|
10
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.gitlab.NestedConfiguration", version: "0.104.
|
|
10
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.gitlab.NestedConfiguration", version: "0.104.3" };
|
|
11
11
|
parent;
|
|
12
12
|
constructor(project, parent, name, options) {
|
|
13
13
|
super(project, name, options);
|
package/lib/gitpod.js
CHANGED
|
@@ -106,7 +106,7 @@ var GitpodPortVisibility;
|
|
|
106
106
|
* The Gitpod component which emits .gitpod.yml
|
|
107
107
|
*/
|
|
108
108
|
class Gitpod extends component_1.Component {
|
|
109
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Gitpod", version: "0.104.
|
|
109
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Gitpod", version: "0.104.3" };
|
|
110
110
|
dockerImage;
|
|
111
111
|
prebuilds;
|
|
112
112
|
tasks = new Array();
|
package/lib/ignore-file.js
CHANGED
|
@@ -5,7 +5,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
5
5
|
const file_1 = require("./file");
|
|
6
6
|
const util_1 = require("./util");
|
|
7
7
|
class IgnoreFile extends file_1.FileBase {
|
|
8
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.IgnoreFile", version: "0.104.
|
|
8
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.IgnoreFile", version: "0.104.3" };
|
|
9
9
|
_patterns;
|
|
10
10
|
filterCommentLines;
|
|
11
11
|
filterEmptyLines;
|
package/lib/ini.js
CHANGED
|
@@ -41,7 +41,7 @@ const object_file_1 = require("./object-file");
|
|
|
41
41
|
* Represents an INI file.
|
|
42
42
|
*/
|
|
43
43
|
class IniFile extends object_file_1.ObjectFile {
|
|
44
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.IniFile", version: "0.104.
|
|
44
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.IniFile", version: "0.104.3" };
|
|
45
45
|
constructor(project, filePath, options) {
|
|
46
46
|
super(project, filePath, options);
|
|
47
47
|
}
|
package/lib/java/java-project.js
CHANGED
|
@@ -16,7 +16,7 @@ const util_1 = require("../util");
|
|
|
16
16
|
* @pjid java
|
|
17
17
|
*/
|
|
18
18
|
class JavaProject extends github_1.GitHubProject {
|
|
19
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.JavaProject", version: "0.104.
|
|
19
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.JavaProject", version: "0.104.3" };
|
|
20
20
|
/**
|
|
21
21
|
* API for managing `pom.xml`.
|
|
22
22
|
*/
|
package/lib/java/junit.js
CHANGED
|
@@ -10,7 +10,7 @@ const TESTDIR = (0, path_1.join)("src", "test", "java");
|
|
|
10
10
|
* Implements JUnit-based testing.
|
|
11
11
|
*/
|
|
12
12
|
class Junit extends component_1.Component {
|
|
13
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.Junit", version: "0.104.
|
|
13
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.Junit", version: "0.104.3" };
|
|
14
14
|
constructor(project, options) {
|
|
15
15
|
super(project);
|
|
16
16
|
const pom = options.pom;
|
|
@@ -7,7 +7,7 @@ const component_1 = require("../component");
|
|
|
7
7
|
* Adds the maven-compiler plugin to a POM file and the `compile` task.
|
|
8
8
|
*/
|
|
9
9
|
class MavenCompile extends component_1.Component {
|
|
10
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.MavenCompile", version: "0.104.
|
|
10
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.MavenCompile", version: "0.104.3" };
|
|
11
11
|
constructor(project, pom, options = {}) {
|
|
12
12
|
super(project);
|
|
13
13
|
project.gitignore.exclude("target");
|
|
@@ -7,7 +7,7 @@ const component_1 = require("../component");
|
|
|
7
7
|
* Configures a maven project to produce a .jar archive with sources and javadocs.
|
|
8
8
|
*/
|
|
9
9
|
class MavenPackaging extends component_1.Component {
|
|
10
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.MavenPackaging", version: "0.104.
|
|
10
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.MavenPackaging", version: "0.104.3" };
|
|
11
11
|
/**
|
|
12
12
|
* The directory containing the package output, relative to the project outdir
|
|
13
13
|
*/
|
package/lib/java/maven-sample.js
CHANGED
|
@@ -9,7 +9,7 @@ const sample_file_1 = require("../sample-file");
|
|
|
9
9
|
* Java code sample.
|
|
10
10
|
*/
|
|
11
11
|
class MavenSample extends component_1.Component {
|
|
12
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.MavenSample", version: "0.104.
|
|
12
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.MavenSample", version: "0.104.3" };
|
|
13
13
|
constructor(project, options) {
|
|
14
14
|
super(project);
|
|
15
15
|
const pkg = options.package.split(".");
|
package/lib/java/pom.js
CHANGED
|
@@ -13,7 +13,7 @@ const POM_XML_ATTRS = {
|
|
|
13
13
|
"@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
|
|
14
14
|
};
|
|
15
15
|
class UpdatePolicy {
|
|
16
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.UpdatePolicy", version: "0.104.
|
|
16
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.UpdatePolicy", version: "0.104.3" };
|
|
17
17
|
static ALWAYS = "always";
|
|
18
18
|
static DAILY = "daily";
|
|
19
19
|
static NEVER = "never";
|
|
@@ -37,7 +37,7 @@ var ChecksumPolicy;
|
|
|
37
37
|
* details used by Maven to build the project.
|
|
38
38
|
*/
|
|
39
39
|
class Pom extends component_1.Component {
|
|
40
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.Pom", version: "0.104.
|
|
40
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.Pom", version: "0.104.3" };
|
|
41
41
|
/**
|
|
42
42
|
* The name of the pom file.
|
|
43
43
|
*/
|
package/lib/java/projenrc.js
CHANGED
|
@@ -19,7 +19,7 @@ const util_1 = require("../util");
|
|
|
19
19
|
* `src/main/java/projenrc.java`.
|
|
20
20
|
*/
|
|
21
21
|
class Projenrc extends projenrc_1.ProjenrcFile {
|
|
22
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.Projenrc", version: "0.104.
|
|
22
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.Projenrc", version: "0.104.3" };
|
|
23
23
|
/**
|
|
24
24
|
* The name of the java class that includes the projen entrypoint.
|
|
25
25
|
*/
|
|
@@ -100,7 +100,7 @@ const DEFAULT_ASSIST = {
|
|
|
100
100
|
*/
|
|
101
101
|
class Biome extends component_1.Component {
|
|
102
102
|
options;
|
|
103
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Biome", version: "0.104.
|
|
103
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Biome", version: "0.104.3" };
|
|
104
104
|
static of(project) {
|
|
105
105
|
const isBiome = (c) => c instanceof Biome;
|
|
106
106
|
return project.components.find(isBiome);
|
|
@@ -45,7 +45,7 @@ const dependencies_1 = require("../dependencies");
|
|
|
45
45
|
* single file. In the future, this will also supports bundling websites.
|
|
46
46
|
*/
|
|
47
47
|
class Bundler extends component_1.Component {
|
|
48
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Bundler", version: "0.104.
|
|
48
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Bundler", version: "0.104.3" };
|
|
49
49
|
/**
|
|
50
50
|
* Returns the `Bundler` instance associated with a project or `undefined` if
|
|
51
51
|
* there is no Bundler.
|
|
@@ -118,6 +118,10 @@ class Bundler extends component_1.Component {
|
|
|
118
118
|
`--platform=${options.platform}`,
|
|
119
119
|
`--outfile=${outfile}`,
|
|
120
120
|
];
|
|
121
|
+
// Keep bundling node_modules. esbuildArgs["--packages"] remains the override.
|
|
122
|
+
if (shouldPassPackagesBundle(options.esbuildArgs)) {
|
|
123
|
+
args.push("--packages=bundle");
|
|
124
|
+
}
|
|
121
125
|
if (options.tsconfigPath) {
|
|
122
126
|
args.push(`--tsconfig=${options.tsconfigPath}`);
|
|
123
127
|
}
|
|
@@ -335,4 +339,22 @@ var BundleLogLevel;
|
|
|
335
339
|
/** Show nothing */
|
|
336
340
|
BundleLogLevel["SILENT"] = "silent";
|
|
337
341
|
})(BundleLogLevel || (exports.BundleLogLevel = BundleLogLevel = {}));
|
|
338
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qYXZhc2NyaXB0L2J1bmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3QiwrQkFBd0M7QUFDeEMsaUNBQTBDO0FBQzFDLDRDQUF5QztBQUN6QyxrREFBaUQ7QUEyQ2pEOzs7R0FHRztBQUNILE1BQWEsT0FBUSxTQUFRLHFCQUFTOztJQUNwQzs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBZ0I7UUFDL0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFZLEVBQWdCLEVBQUUsQ0FBQyxDQUFDLFlBQVksT0FBTyxDQUFDO1FBQ3ZFLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ2EsY0FBYyxDQUFxQjtJQUVuRDs7T0FFRztJQUNhLFNBQVMsQ0FBUztJQUUxQixLQUFLLENBQW1CO0lBQ2YsYUFBYSxDQUFpQjtJQUM5QixPQUFPLENBQTZCO0lBRXJEOztPQUVHO0lBQ0gsWUFBWSxPQUFnQixFQUFFLFVBQTBCLEVBQUU7UUFDeEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUM7UUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBRS9CLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDO0lBQzFFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsVUFBVTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEtB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K0I7SUFDL0IscUNBQW1CLENBQUE7SUFDbkIsdUJBQXVCO0lBQ3ZCLGlDQUFlLENBQUE7SUFDZixtQkFBbUI7SUFDbkIsbUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQWJXLGNBQWMsOEJBQWQsY0FBYyxRQWF6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGpvaW4gYXMgcGF0aEpvaW4gfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgcmVuZGVyQnVuZGxlTmFtZSB9IGZyb20gXCIuL3V0aWxcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IERlcGVuZGVuY3lUeXBlIH0gZnJvbSBcIi4uL2RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RcIjtcbmltcG9ydCB0eXBlIHsgVGFzayB9IGZyb20gXCIuLi90YXNrXCI7XG5cbi8vIFBhcnRzIG9mIHRoaXMgZmlsZSBpbnNwaXJlZCBieSBAYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanNcbi8vICAgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvYzNjNzcxYzZmNmY2NzkwZjIyOThhODVhNTQ5YmRlZDY0MGQyZTM1Yi9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcy9saWIvYnVuZGxpbmcudHMjTDE5NVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBCdW5kbGVyYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdW5kbGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgc2VtYW50aWMgdmVyc2lvbiByZXF1aXJlbWVudCBmb3IgYGVzYnVpbGRgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHNwZWNpZmljIHZlcnNpb24gKGltcGxpZXMgbGF0ZXN0KVxuICAgKi9cbiAgcmVhZG9ubHkgZXNidWlsZFZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE91dHB1dCBkaXJlY3RvcnkgZm9yIGFsbCBidW5kbGVzLlxuICAgKiBAZGVmYXVsdCBcImFzc2V0c1wiXG4gICAqL1xuICByZWFkb25seSBhc3NldHNEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENob29zZSB3aGljaCBwaGFzZSAoaWYgYW55KSB0byBhZGQgdGhlIGBidW5kbGVgIGNvbW1hbmQgdG8uXG4gICAqXG4gICAqIE5vdGU6IElmIHVzaW5nIGBhZGRCdW5kbGUoKWAgd2l0aCB0aGUgYGJ1bmRsZUNvbXBpbGVkUmVzdWx0c2AsIHRoaXMgb3B0aW9uXG4gICAqIG11c3QgYmUgc2V0IHRvIGBSdW5CdW5kbGVUYXNrLlBPU1RfQ09NUElMRWAgb3IgYFJ1bkJ1bmRsZVRhc2suTUFOVUFMYC5cbiAgICpcbiAgICogQHNlZSBBZGRCdW5kbGVPcHRpb25zLmJ1bmRsZUNvbXBpbGVkUmVzdWx0c1xuICAgKlxuICAgKiBAZGVmYXVsdCBSdW5CdW5kbGVUYXNrLlBSRV9DT01QSUxFXG4gICAqL1xuICByZWFkb25seSBydW5CdW5kbGVUYXNrPzogUnVuQnVuZGxlVGFzaztcblxuICAvKipcbiAgICogTWFwIG9mIGZpbGUgZXh0ZW5zaW9ucyAod2l0aG91dCBkb3QpIGFuZCBsb2FkZXJzIHRvIHVzZSBmb3IgdGhpcyBmaWxlIHR5cGUuXG4gICAqIExvYWRlcnMgYXJlIGFwcGVuZGVkIHRvIHRoZSBlc2J1aWxkIGNvbW1hbmQgYnkgYC0tbG9hZGVyOi5leHRlbnNpb249bG9hZGVyYFxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogQWRkcyBzdXBwb3J0IGZvciBidW5kbGluZyBKYXZhU2NyaXB0IGFwcGxpY2F0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGludG8gYVxuICogc2luZ2xlIGZpbGUuIEluIHRoZSBmdXR1cmUsIHRoaXMgd2lsbCBhbHNvIHN1cHBvcnRzIGJ1bmRsaW5nIHdlYnNpdGVzLlxuICovXG5leHBvcnQgY2xhc3MgQnVuZGxlciBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBgQnVuZGxlcmAgaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIGEgcHJvamVjdCBvciBgdW5kZWZpbmVkYCBpZlxuICAgKiB0aGVyZSBpcyBubyBCdW5kbGVyLlxuICAgKiBAcGFyYW0gcHJvamVjdCBUaGUgcHJvamVjdFxuICAgKiBAcmV0dXJucyBBIGJ1bmRsZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb2YocHJvamVjdDogUHJvamVjdCk6IEJ1bmRsZXIgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGlzQnVuZGxlciA9IChvOiBDb21wb25lbnQpOiBvIGlzIEJ1bmRsZXIgPT4gbyBpbnN0YW5jZW9mIEJ1bmRsZXI7XG4gICAgcmV0dXJuIHByb2plY3QuY29tcG9uZW50cy5maW5kKGlzQnVuZGxlcik7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNlbWFudGljIHZlcnNpb24gcmVxdWlyZW1lbnQgZm9yIGBlc2J1aWxkYCAoaWYgZGVmaW5lZCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXNidWlsZFZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogUm9vdCBidW5kbGUgZGlyZWN0b3J5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJ1bmRsZWRpcjogc3RyaW5nO1xuXG4gIHByaXZhdGUgX3Rhc2s6IFRhc2sgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgcnVuQnVuZGxlVGFzaz86IFJ1bkJ1bmRsZVRhc2s7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9hZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBgQnVuZGxlcmAuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBCdW5kbGVyT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICB0aGlzLmVzYnVpbGRWZXJzaW9uID0gb3B0aW9ucy5lc2J1aWxkVmVyc2lvbjtcbiAgICB0aGlzLmJ1bmRsZWRpciA9IG9wdGlvbnMuYXNzZXRzRGlyID8/IFwiYXNzZXRzXCI7XG4gICAgdGhpcy5sb2FkZXJzID0gb3B0aW9ucy5sb2FkZXJzO1xuXG4gICAgdGhpcy5ydW5CdW5kbGVUYXNrID0gb3B0aW9ucy5ydW5CdW5kbGVUYXNrID8/IFJ1bkJ1bmRsZVRhc2suUFJFX0NPTVBJTEU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBvciBjcmVhdGVzIHRoZSBzaW5nbGV0b24gXCJidW5kbGVcIiB0YXNrIG9mIHRoZSBwcm9qZWN0LlxuICAgKlxuICAgKiBJZiB0aGUgcHJvamVjdCBkb2Vzbid0IGhhdmUgYSBcImJ1bmRsZVwiIHRhc2ssIGl0IHdpbGwgYmUgY3JlYXRlZCBhbmQgc3Bhd25lZFxuICAgKiBkdXJpbmcgdGhlIHByZS1jb21waWxlIHBoYXNlLlxuICAgKi9cbiAgcHVibGljIGdldCBidW5kbGVUYXNrKCk6IFRhc2sge1xuICAgIGlmICghdGhpcy5fdGFzaykge1xuICAgICAgdGhpcy5hZGRCdW5kbGluZ1N1cHBvcnQoKTtcbiAgICAgIHRoaXMuX3Rhc2sgPSB0aGlzLnByb2plY3QudGFza3MuYWRkVGFzayhcImJ1bmRsZVwiLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlByZXBhcmUgYXNzZXRzXCIsXG4gICAgICB9KTtcblxuICAgICAgLy8gaW5zdGFsbCB0aGUgYnVuZGxlIHRhc2sgaW50byB0aGUgcHJlLWNvbXBpbGUgcGhhc2UuXG4gICAgICBpZiAodGhpcy5ydW5CdW5kbGVUYXNrID09PSBSdW5CdW5kbGVUYXNrLlBSRV9DT01QSUxFKSB7XG4gICAgICAgIHRoaXMucHJvamVjdC5wcmVDb21waWxlVGFzay5zcGF3bih0aGlzLl90YXNrKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5ydW5CdW5kbGVUYXNrID09PSBSdW5CdW5kbGVUYXNrLlBPU1RfQ09NUElMRSkge1xuICAgICAgICB0aGlzLnByb2plY3QucG9zdENvbXBpbGVUYXNrLnNwYXduKHRoaXMuX3Rhc2spO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl90YXNrO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB0YXNrIHRvIHRoZSBwcm9qZWN0IHdoaWNoIGJ1bmRsZXMgYSBzcGVjaWZpYyBlbnRyeXBvaW50IGFuZCBhbGwgb2ZcbiAgICogaXRzIGRlcGVuZGVuY2llcyBpbnRvIGEgc2luZ2xlIGphdmFzY3JpcHQgb3V0cHV0IGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBlbnRyeXBvaW50IFRoZSByZWxhdGl2ZSBwYXRoIG9mIHRoZSBhcnRpZmFjdCB3aXRoaW4gdGhlIHByb2plY3RcbiAgICogQHBhcmFtIG9wdGlvbnMgQnVuZGxpbmcgb3B0aW9uc1xuICAgKi9cbiAgcHVibGljIGFkZEJ1bmRsZShlbnRyeXBvaW50OiBzdHJpbmcsIG9wdGlvbnM6IEFkZEJ1bmRsZU9wdGlvbnMpOiBCdW5kbGUge1xuICAgIGNvbnN0IG5hbWUgPSByZW5kZXJCdW5kbGVOYW1lKGVudHJ5cG9pbnQpO1xuXG4gICAgY29uc3Qgb3V0ZGlyID0gcGF0aC5wb3NpeC5qb2luKHRoaXMuYnVuZGxlZGlyLCBuYW1lKTtcbiAgICBjb25zdCBvdXRmaWxlID0gcGF0aC5wb3NpeC5qb2luKG91dGRpciwgb3B0aW9ucy5vdXRmaWxlID8/IFwiaW5kZXguanNcIik7XG4gICAgY29uc3QgYXJncyA9IFtcbiAgICAgIFwiZXNidWlsZFwiLFxuICAgICAgXCItLWJ1bmRsZVwiLFxuICAgICAgZW50cnlwb2ludCxcbiAgICAgIGAtLXRhcmdldD0ke29wdGlvbnMudGFyZ2V0fWAsXG4gICAgICBgLS1wbGF0Zm9ybT0ke29wdGlvbnMucGxhdGZvcm19YCxcbiAgICAgIGAtLW91dGZpbGU9JHtvdXRmaWxlfWAsXG4gICAgXTtcblxuICAgIGlmIChvcHRpb25zLnRzY29uZmlnUGF0aCkge1xuICAgICAgYXJncy5wdXNoKGAtLXRzY29uZmlnPSR7b3B0aW9ucy50c2NvbmZpZ1BhdGh9YCk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB4IG9mIG9wdGlvbnMuZXh0ZXJuYWxzID8/IFtdKSB7XG4gICAgICBhcmdzLnB1c2goYC0tZXh0ZXJuYWw6JHt4fWApO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnNvdXJjZW1hcCB8fCBvcHRpb25zLnNvdXJjZU1hcE1vZGUpIHtcbiAgICAgIGNvbnN0IHNvdXJjZU1hcE1vZGUgPSBvcHRpb25zLnNvdXJjZU1hcE1vZGUgPz8gU291cmNlTWFwTW9kZS5ERUZBVUxUO1xuICAgICAgY29uc3Qgc291cmNlTWFwVmFsdWUgPVxuICAgICAgICBzb3VyY2VNYXBNb2RlID09PSBTb3VyY2VNYXBNb2RlLkRFRkFVTFRcbiAgICAgICAgICA/IFwiXCJcbiAgICAgICAgICA6IGA9JHtvcHRpb25zLnNvdXJjZU1hcE1vZGV9YDtcbiAgICAgIGFyZ3MucHVzaChgLS1zb3VyY2VtYXAke3NvdXJjZU1hcFZhbHVlfWApO1xuXG4gICAgICBpZiAob3B0aW9ucy5zb3VyY2VzQ29udGVudCA9PT0gdHJ1ZSkge1xuICAgICAgICBhcmdzLnB1c2goYC0tc291cmNlcy1jb250ZW50PSR7b3B0aW9ucy5zb3VyY2VzQ29udGVudH1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmb3JtYXQgPSBvcHRpb25zLmZvcm1hdDtcbiAgICBpZiAoZm9ybWF0KSB7XG4gICAgICBhcmdzLnB1c2goYC0tZm9ybWF0PSR7Zm9ybWF0fWApO1xuICAgIH1cblxuICAgIGNvbnN0IGxvYWRlcnMgPVxuICAgICAgKG9wdGlvbnMubG9hZGVycyA/PyBmYWxzZSkgPyBvcHRpb25zLmxvYWRlcnMgOiAodGhpcy5sb2FkZXJzID8/IGZhbHNlKTtcbiAgICBpZiAobG9hZGVycykge1xuICAgICAgZm9yIChsZXQgW2V4dGVuc2lvbiwgbG9hZGVyXSBvZiBPYmplY3QuZW50cmllcyhsb2FkZXJzKSkge1xuICAgICAgICBhcmdzLnB1c2goYC0tbG9hZGVyOi4ke2V4dGVuc2lvbn09JHtsb2FkZXJ9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZGVmaW5lcyA9IE9iamVjdC5lbnRyaWVzKG9wdGlvbnMuZGVmaW5lID8/IHt9KTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBkZWZpbmVzKSB7XG4gICAgICBhcmdzLnB1c2goYC0tZGVmaW5lOiR7a2V5fT0ke3ZhbHVlfWApO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm1pbmlmeSkge1xuICAgICAgYXJncy5wdXNoKFwiLS1taW5pZnlcIik7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubG9nTGV2ZWwpIHtcbiAgICAgIGFyZ3MucHVzaChgLS1sb2ctbGV2ZWw9JHtvcHRpb25zLmxvZ0xldmVsfWApO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5rZWVwTmFtZXMpIHtcbiAgICAgIGFyZ3MucHVzaChcIi0ta2VlcC1uYW1lc1wiKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubWV0YWZpbGUpIHtcbiAgICAgIGFyZ3MucHVzaChgLS1tZXRhZmlsZT0ke3BhdGhKb2luKG91dGRpciwgXCJpbmRleC5tZXRhLmpzb25cIil9YCk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmJhbm5lcikge1xuICAgICAgYXJncy5wdXNoKGAtLWJhbm5lcjpqcz0ke29wdGlvbnMuYmFubmVyfWApO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5mb290ZXIpIHtcbiAgICAgIGFyZ3MucHVzaChgLS1mb290ZXI6anM9JHtvcHRpb25zLmZvb3Rlcn1gKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubWFpbkZpZWxkcykge1xuICAgICAgYXJncy5wdXNoKGAtLW1haW4tZmllbGRzPSR7b3B0aW9ucy5tYWluRmllbGRzLmpvaW4oXCIsXCIpfWApO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5pbmplY3QpIHtcbiAgICAgIGFyZ3MucHVzaCguLi5vcHRpb25zLmluamVjdC5tYXAoKGkpID0+IGAtLWluamVjdDoke2l9YCkpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5lc2J1aWxkQXJncykge1xuICAgICAgY29uc3Qgc3ViQXJncyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMuZXNidWlsZEFyZ3MpKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gXCJcIikge1xuICAgICAgICAgIHN1YkFyZ3MucHVzaChrZXkpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgc3ViQXJncy5wdXNoKGAke2tleX09JHt2YWx1ZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhcmdzLnB1c2goLi4uc3ViQXJncyk7XG4gICAgfVxuXG4gICAgY29uc3QgYnVuZGxlVGFzayA9IHRoaXMucHJvamVjdC5hZGRUYXNrKGBidW5kbGU6JHtuYW1lfWAsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgQ3JlYXRlIGEgSmF2YVNjcmlwdCBidW5kbGUgZnJvbSAke2VudHJ5cG9pbnR9YCxcbiAgICAgIGV4ZWNBcmdzOiBhcmdzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5idW5kbGVUYXNrLnNwYXduKGJ1bmRsZVRhc2spO1xuXG4gICAgaWYgKG9wdGlvbnMuZXhlY3V0YWJsZSA/PyBmYWxzZSkge1xuICAgICAgYnVuZGxlVGFzay5leGVjQXJncyhbXCJjaG1vZFwiLCBcIit4XCIsIG91dGZpbGVdKTtcbiAgICB9XG5cbiAgICBsZXQgd2F0Y2hUYXNrO1xuICAgIGNvbnN0IHdhdGNoID0gb3B0aW9ucy53YXRjaFRhc2sgPz8gdHJ1ZTtcbiAgICBpZiAod2F0Y2gpIHtcbiAgICAgIHdhdGNoVGFzayA9IHRoaXMucHJvamVjdC5hZGRUYXNrKGBidW5kbGU6JHtuYW1lfTp3YXRjaGAsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBDb250aW51b3VzbHkgdXBkYXRlIHRoZSBKYXZhU2NyaXB0IGJ1bmRsZSBmcm9tICR7ZW50cnlwb2ludH1gLFxuICAgICAgICBleGVjQXJnczogWy4uLmFyZ3MsIFwiLS13YXRjaFwiXSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBidW5kbGVUYXNrOiBidW5kbGVUYXNrLFxuICAgICAgd2F0Y2hUYXNrOiB3YXRjaFRhc2ssXG4gICAgICBvdXRkaXI6IG91dGRpcixcbiAgICAgIG91dGZpbGU6IG91dGZpbGUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYnVuZGxpbmcgc3VwcG9ydCB0byBhIHByb2plY3QuIFRoaXMgaXMgY2FsbGVkIGltcGxpY2l0bHkgd2hlblxuICAgKiBgYnVuZGxlVGFza2AgaXMgcmVmZXJlbmNlZCBmaXJzdC4gSXQgYWRkcyB0aGUgZGVwZW5kZW5jeSBvbiBgZXNidWlsZGAsXG4gICAqIGdpdGlnbm9yZS9ucG1pZ25vcmUsIGV0Yy5cbiAgICovXG4gIHByaXZhdGUgYWRkQnVuZGxpbmdTdXBwb3J0KCkge1xuICAgIGNvbnN0IGlnbm9yZUVudHJ5ID0gYC8ke3RoaXMuYnVuZGxlZGlyfS9gO1xuICAgIHRoaXMucHJvamVjdC5hZGRHaXRJZ25vcmUoaWdub3JlRW50cnkpO1xuICAgIHRoaXMucHJvamVjdC5hZGRQYWNrYWdlSWdub3JlKGAhJHtpZ25vcmVFbnRyeX1gKTsgLy8gaW5jbHVkZSBpbiB0YXJiYWxsXG4gICAgY29uc3QgZGVwID0gdGhpcy5lc2J1aWxkVmVyc2lvblxuICAgICAgPyBgZXNidWlsZEAke3RoaXMuZXNidWlsZFZlcnNpb259YFxuICAgICAgOiBcImVzYnVpbGRcIjtcbiAgICB0aGlzLnByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KGRlcCwgRGVwZW5kZW5jeVR5cGUuQlVJTEQpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVuZGxlIHtcbiAgLyoqXG4gICAqIFRoZSB0YXNrIHRoYXQgcHJvZHVjZXMgdGhpcyBidW5kbGUuXG4gICAqL1xuICByZWFkb25seSBidW5kbGVUYXNrOiBUYXNrO1xuXG4gIC8qKlxuICAgKiBUaGUgXCJ3YXRjaFwiIHRhc2sgZm9yIHRoaXMgYnVuZGxlLlxuICAgKi9cbiAgcmVhZG9ubHkgd2F0Y2hUYXNrPzogVGFzaztcblxuICAvKipcbiAgICogTG9jYXRpb24gb2YgdGhlIG91dHB1dCBmaWxlIChyZWxhdGl2ZSB0byBwcm9qZWN0IHJvb3QpLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0ZmlsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCYXNlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBvdXRwdXQgZmlsZSAocmVsYXRpdmUgdG8gcHJvamVjdCByb290KS5cbiAgICovXG4gIHJlYWRvbmx5IG91dGRpcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGJ1bmRsaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsaW5nT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBZb3UgY2FuIG1hcmsgYSBmaWxlIG9yIGEgcGFja2FnZSBhcyBleHRlcm5hbCB0byBleGNsdWRlIGl0IGZyb20geW91ciBidWlsZC5cbiAgICogSW5zdGVhZCBvZiBiZWluZyBidW5kbGVkLCB0aGUgaW1wb3J0IHdpbGwgYmUgcHJlc2VydmVkICh1c2luZyByZXF1aXJlIGZvclxuICAgKiB0aGUgaWlmZSBhbmQgY2pzIGZvcm1hdHMgYW5kIHVzaW5nIGltcG9ydCBmb3IgdGhlIGVzbSBmb3JtYXQpIGFuZCB3aWxsIGJlXG4gICAqIGV2YWx1YXRlZCBhdCBydW4gdGltZSBpbnN0ZWFkLlxuICAgKlxuICAgKiBUaGlzIGhhcyBzZXZlcmFsIHVzZXMuIEZpcnN0IG9mIGFsbCwgaXQgY2FuIGJlIHVzZWQgdG8gdHJpbSB1bm5lY2Vzc2FyeVxuICAgKiBjb2RlIGZyb20geW91ciBidW5kbGUgZm9yIGEgY29kZSBwYXRoIHRoYXQgeW91IGtub3cgd2lsbCBuZXZlciBiZSBleGVjdXRlZC5cbiAgICogRm9yIGV4YW1wbGUsIGEgcGFja2FnZSBtYXkgY29udGFpbiBjb2RlIHRoYXQgb25seSBydW5zIGluIG5vZGUgYnV0IHlvdSB3aWxsXG4gICAqIG9ubHkgYmUgdXNpbmcgdGhhdCBwYWNrYWdlIGluIHRoZSBicm93c2VyLiBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGltcG9ydFxuICAgKiBjb2RlIGluIG5vZGUgYXQgcnVuIHRpbWUgZnJvbSBhIHBhY2thZ2UgdGhhdCBjYW5ub3QgYmUgYnVuZGxlZC4gRm9yXG4gICAqIGV4YW1wbGUsIHRoZSBmc2V2ZW50cyBwYWNrYWdlIGNvbnRhaW5zIGEgbmF0aXZlIGV4dGVuc2lvbiwgd2hpY2ggZXNidWlsZFxuICAgKiBkb2Vzbid0IHN1cHBvcnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBleHRlcm5hbHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSW5jbHVkZSBhIHNvdXJjZSBtYXAgaW4gdGhlIGJ1bmRsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZW1hcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluIGFkZGl0aW9uIHRvIHRoZSBgYnVuZGxlOnh5emAgdGFzaywgY3JlYXRlcyBgYnVuZGxlOnh5ejp3YXRjaGAgdGFzayB3aGljaCB3aWxsXG4gICAqIGludm9rZSB0aGUgc2FtZSBlc2J1aWxkIGNvbW1hbmQgd2l0aCB0aGUgYC0td2F0Y2hgIGZsYWcuIFRoaXMgY2FuIGJlIHVzZWRcbiAgICogdG8gY29udGludXNvdWx5IHdhdGNoIGZvciBjaGFuZ2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB3YXRjaFRhc2s/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBhZGRCdW5kbGUoKWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRkQnVuZGxlT3B0aW9ucyBleHRlbmRzIEJ1bmRsaW5nT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBlc2J1aWxkIHRhcmdldC5cbiAgICpcbiAgICogQGV4YW1wbGUgXCJub2RlMTJcIlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGVzYnVpbGQgcGxhdGZvcm0uXG4gICAqXG4gICAqIEBleGFtcGxlIFwibm9kZVwiXG4gICAqL1xuICByZWFkb25seSBwbGF0Zm9ybTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCdW5kbGVyIG91dHB1dCBwYXRoIHJlbGF0aXZlIHRvIHRoZSBhc3NldCdzIG91dHB1dCBkaXJlY3RvcnkuXG4gICAqIEBkZWZhdWx0IFwiaW5kZXguanNcIlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0ZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogTWFyayB0aGUgb3V0cHV0IGZpbGUgYXMgZXhlY3V0YWJsZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGV4ZWN1dGFibGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvZiB0aGUgdHNjb25maWcuanNvbiBmaWxlIHRvIHVzZSBmb3IgYnVuZGxpbmdcbiAgICogQGRlZmF1bHQgXCJ0c2NvbmZpZy5qc29uXCJcbiAgICovXG4gIHJlYWRvbmx5IHRzY29uZmlnUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogTWFwIG9mIGZpbGUgZXh0ZW5zaW9ucyAod2l0aG91dCBkb3QpIGFuZCBsb2FkZXJzIHRvIHVzZSBmb3IgdGhpcyBmaWxlIHR5cGUuXG4gICAqIExvYWRlcnMgYXJlIGFwcGVuZGVkIHRvIHRoZSBlc2J1aWxkIGNvbW1hbmQgYnkgYC0tbG9hZGVyOi5leHRlbnNpb249bG9hZGVyYFxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIE91dHB1dCBmb3JtYXQgZm9yIHRoZSBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBmaWxlcy4gVGhlcmUgYXJlIGN1cnJlbnRseSB0aHJlZSBwb3NzaWJsZSB2YWx1ZXMgdGhhdCBjYW4gYmUgY29uZmlndXJlZDogYFwiaWlmZVwiYCwgYFwiY2pzXCJgLCBhbmQgYFwiZXNtXCJgLlxuICAgKlxuICAgKiBJZiBub3Qgc2V0IChgdW5kZWZpbmVkYCksIGVzYnVpbGQgcGlja3MgYW4gb3V0cHV0IGZvcm1hdCBmb3IgeW91IGJhc2VkIG9uIGBwbGF0Zm9ybWA6XG4gICAqIC0gYFwiY2pzXCJgIGlmIGBwbGF0Zm9ybWAgaXMgYFwibm9kZVwiYFxuICAgKiAtIGBcImlpZmVcImAgaWYgYHBsYXRmb3JtYCBpcyBgXCJicm93c2VyXCJgXG4gICAqIC0gYFwiZXNtXCJgIGlmIGBwbGF0Zm9ybWAgaXMgYFwibmV1dHJhbFwiYFxuICAgKlxuICAgKiBOb3RlOiBJZiBtYWtpbmcgYSBidW5kbGUgdG8gcnVuIHVuZGVyIG5vZGUgd2l0aCBFU00sIHNldCBgZm9ybWF0YCB0byBgXCJlc21cImAgaW5zdGVhZCBvZiBzZXR0aW5nIGBwbGF0Zm9ybWAgdG8gYFwibmV1dHJhbFwiYC5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9lc2J1aWxkLmdpdGh1Yi5pby9hcGkvI2Zvcm1hdFxuICAgKi9cblxuICByZWFkb25seSBmb3JtYXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gbWluaWZ5IGZpbGVzIHdoZW4gYnVuZGxpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBtaW5pZnk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTb3VyY2UgbWFwIG1vZGUgdG8gYmUgdXNlZCB3aGVuIGJ1bmRsaW5nLlxuICAgKiBAc2VlIGh0dHBzOi8vZXNidWlsZC5naXRodWIuaW8vYXBpLyNzb3VyY2VtYXBcbiAgICpcbiAgICogQGRlZmF1bHQgU291cmNlTWFwTW9kZS5ERUZBVUxUXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VNYXBNb2RlPzogU291cmNlTWFwTW9kZTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIG9yaWdpbmFsIHNvdXJjZSBjb2RlIGluIHNvdXJjZSBtYXBzIHdoZW4gYnVuZGxpbmcuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9lc2J1aWxkLmdpdGh1Yi5pby9hcGkvI3NvdXJjZXMtY29udGVudFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VzQ29udGVudD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIExvZyBsZXZlbCBmb3IgZXNidWlsZC4gVGhpcyBpcyBhbHNvIHByb3BhZ2F0ZWQgdG8gdGhlIHBhY2thZ2UgbWFuYWdlciBhbmRcbiAgICogYXBwbGllcyB0byBpdHMgc3BlY2lmaWMgaW5zdGFsbCBjb21tYW5kLlxuICAgKlxuICAgKiBAZGVmYXVsdCBMb2dMZXZlbC5XQVJOSU5HXG4gICAqL1xuICByZWFkb25seSBsb2dMZXZlbD86IEJ1bmRsZUxvZ0xldmVsO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHByZXNlcnZlIHRoZSBvcmlnaW5hbCBgbmFtZWAgdmFsdWVzIGV2ZW4gaW4gbWluaWZpZWQgY29kZS5cbiAgICpcbiAgICogSW4gSmF2YVNjcmlwdCB0aGUgYG5hbWVgIHByb3BlcnR5IG9uIGZ1bmN0aW9ucyBhbmQgY2xhc3NlcyBkZWZhdWx0cyB0byBhXG4gICAqIG5lYXJieSBpZGVudGlmaWVyIGluIHRoZSBzb3VyY2UgY29kZS5cbiAgICpcbiAgICogSG93ZXZlciwgbWluaWZpY2F0aW9uIHJlbmFtZXMgc3ltYm9scyB0byByZWR1Y2UgY29kZSBzaXplIGFuZCBidW5kbGluZ1xuICAgKiBzb21ldGltZXMgbmVlZCB0byByZW5hbWUgc3ltYm9scyB0byBhdm9pZCBjb2xsaXNpb25zLiBUaGF0IGNoYW5nZXMgdmFsdWUgb2ZcbiAgICogdGhlIGBuYW1lYCBwcm9wZXJ0eSBmb3IgbWFueSBvZiB0aGVzZSBjYXNlcy4gVGhpcyBpcyB1c3VhbGx5IGZpbmUgYmVjYXVzZVxuICAgKiB0aGUgYG5hbWVgIHByb3BlcnR5IGlzIG5vcm1hbGx5IG9ubHkgdXNlZCBmb3IgZGVidWdnaW5nLiBIb3dldmVyLCBzb21lXG4gICAqIGZyYW1ld29ya3MgcmVseSBvbiB0aGUgYG5hbWVgIHByb3BlcnR5IGZvciByZWdpc3RyYXRpb24gYW5kIGJpbmRpbmcgcHVycG9zZXMuXG4gICAqIElmIHRoaXMgaXMgdGhlIGNhc2UsIHlvdSBjYW4gZW5hYmxlIHRoaXMgb3B0aW9uIHRvIHByZXNlcnZlIHRoZSBvcmlnaW5hbFxuICAgKiBgbmFtZWAgdmFsdWVzIGV2ZW4gaW4gbWluaWZpZWQgY29kZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGtlZXBOYW1lcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoaXMgb3B0aW9uIHRlbGxzIGVzYnVpbGQgdG8gd3JpdGUgb3V0IGEgSlNPTiBmaWxlIHJlbGF0aXZlIHRvIG91dHB1dCBkaXJlY3Rvcnkgd2l0aCBtZXRhZGF0YSBhYm91dCB0aGUgYnVpbGQuXG4gICAqXG4gICAqIFRoZSBtZXRhZGF0YSBpbiB0aGlzIEpTT04gZmlsZSBmb2xsb3dzIHRoaXMgc2NoZW1hIChzcGVjaWZpZWQgdXNpbmcgVHlwZVNjcmlwdCBzeW50YXgpOlxuICAgKlxuICAgKiBgYGB0ZXh0XG4gICAqIHtcbiAgICogICBvdXRwdXRzOiB7XG4gICAqICAgICBbcGF0aDogc3RyaW5nXToge1xuICAgKiAgICAgICBieXRlczogbnVtYmVyXG4gICAqICAgICAgIGlucHV0czoge1xuICAgKiAgICAgICAgIFtwYXRoOiBzdHJpbmddOiB7IGJ5dGVzSW5PdXRwdXQ6IG51bWJlciB9XG4gICAqICAgICAgIH1cbiAgICogICAgICAgaW1wb3J0czogeyBwYXRoOiBzdHJpbmcgfVtdXG4gICAqICAgICAgIGV4cG9ydHM6IHN0cmluZ1tdXG4gICAqICAgICB9XG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKiBUaGlzIGRhdGEgY2FuIHRoZW4gYmUgYW5hbHl6ZWQgYnkgb3RoZXIgdG9vbHMuIEZvciBleGFtcGxlLFxuICAgKiBidW5kbGUgYnVkZHkgY2FuIGNvbnN1bWUgZXNidWlsZCdzIG1ldGFkYXRhIGZvcm1hdCBhbmQgZ2VuZXJhdGVzIGEgdHJlZW1hcCB2aXN1YWxpemF0aW9uXG4gICAqIG9mIHRoZSBtb2R1bGVzIGluIHlvdXIgYnVuZGxlIGFuZCBob3cgbXVjaCBzcGFjZSBlYWNoIG9uZSB0YWtlcyB1cC5cbiAgICogQHNlZSBodHRwczovL2VzYnVpbGQuZ2l0aHViLmlvL2FwaS8jbWV0YWZpbGVcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG1ldGFmaWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gaW5zZXJ0IGFuIGFyYml0cmFyeSBzdHJpbmcgYXQgdGhlIGJlZ2lubmluZyBvZiBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBmaWxlcy5cbiAgICpcbiAgICogVGhpcyBpcyBzaW1pbGFyIHRvIGZvb3RlciB3aGljaCBpbnNlcnRzIGF0IHRoZSBlbmQgaW5zdGVhZCBvZiB0aGUgYmVnaW5uaW5nLlxuICAgKlxuICAgKiBUaGlzIGlzIGNvbW1vbmx5IHVzZWQgdG8gaW5zZXJ0IGNvbW1lbnRzOlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGNvbW1lbnRzIGFyZSBwYXNzZWRcbiAgICovXG4gIHJlYWRvbmx5IGJhbm5lcj86IHN0cmluZztcblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gaW5zZXJ0IGFuIGFyYml0cmFyeSBzdHJpbmcgYXQgdGhlIGVuZCBvZiBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBmaWxlcy5cbiAgICpcbiAgICogVGhpcyBpcyBzaW1pbGFyIHRvIGJhbm5lciB3aGljaCBpbnNlcnRzIGF0IHRoZSBiZWdpbm5pbmcgaW5zdGVhZCBvZiB0aGUgZW5kLlxuICAgKlxuICAgKiBUaGlzIGlzIGNvbW1vbmx5IHVzZWQgdG8gaW5zZXJ0IGNvbW1lbnRzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gY29tbWVudHMgYXJlIHBhc3NlZFxuICAgKi9cbiAgcmVhZG9ubHkgZm9vdGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY2hhcnNldCB0byB1c2UgZm9yIGVzYnVpbGQncyBvdXRwdXQuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQgZXNidWlsZCdzIG91dHB1dCBpcyBBU0NJSS1vbmx5LiBBbnkgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWRcbiAgICogdXNpbmcgYmFja3NsYXNoIGVzY2FwZSBzZXF1ZW5jZXMuIFVzaW5nIGVzY2FwZSBzZXF1ZW5jZXMgbWFrZXMgdGhlIGdlbmVyYXRlZCBvdXRwdXRcbiAgICogc2xpZ2h0bHkgYmlnZ2VyLCBhbmQgYWxzbyBtYWtlcyBpdCBoYXJkZXIgdG8gcmVhZC4gSWYgeW91IHdvdWxkIGxpa2UgZm9yIGVzYnVpbGQgdG8gcHJpbnRcbiAgICogdGhlIG9yaWdpbmFsIGNoYXJhY3RlcnMgd2l0aG91dCB1c2luZyBlc2NhcGUgc2VxdWVuY2VzLCB1c2UgYENoYXJzZXQuVVRGOGAuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9lc2J1aWxkLmdpdGh1Yi5pby9hcGkvI2NoYXJzZXRcbiAgICogQGRlZmF1bHQgQ2hhcnNldC5BU0NJSVxuICAgKi9cbiAgcmVhZG9ubHkgY2hhcnNldD86IENoYXJzZXQ7XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgZ2xvYmFsIGlkZW50aWZpZXJzIHdpdGggY29uc3RhbnQgZXhwcmVzc2lvbnMuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCBgeyAncHJvY2Vzcy5lbnYuREVCVUcnOiAndHJ1ZScgfWAuXG4gICAqXG4gICAqIEFub3RoZXIgZXhhbXBsZSwgYHsgJ3Byb2Nlc3MuZW52LkFQSV9LRVknOiBKU09OLnN0cmluZ2lmeSgneHh4LXh4eHgteHh4JykgfWAuXG4gICAqXG4gICAqIEVhY2ggZW50cnkgaXMgcGFzc2VkIHRvIGVzYnVpbGQgYXMgYSBzaW5nbGUgYC0tZGVmaW5lOmAgYXJndW1lbnQsIGV4YWN0bHkgYXNcbiAgICogZ2l2ZW46IG5vIHNoZWxsIHBhcnNlcyBpdCwgc28gdmFsdWVzIGFyZSBub3QgdW5xdW90ZWQgYWxvbmcgdGhlIHdheSBhbmQgYVxuICAgKiBzdHJpbmcgcmVwbGFjZW1lbnQga2VlcHMgdGhlIHF1b3RlcyBpdCBuZWVkcyAoYEpTT04uc3RyaW5naWZ5KCd4eHgnKWApLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHJlcGxhY2VtZW50cyBhcmUgbWFkZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVmaW5lPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQnVpbGQgYXJndW1lbnRzIHRvIHBhc3MgaW50byBlc2J1aWxkLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgdG8gYWRkIHRoZSBbLS1sb2ctbGltaXRdKGh0dHBzOi8vZXNidWlsZC5naXRodWIuaW8vYXBpLyNsb2ctbGltaXQpIGZsYWc6XG4gICAqXG4gICAqIGBgYHRleHRcbiAgICogcHJvamVjdC5idW5kbGVyLmFkZEJ1bmRsZShcIi4vc3JjL2hlbGxvLnRzXCIsIHtcbiAgICogICBwbGF0Zm9ybTogXCJub2RlXCIsXG4gICAqICAgdGFyZ2V0OiBcIm5vZGUyMlwiLFxuICAgKiAgIHNvdXJjZW1hcDogdHJ1ZSxcbiAgICogICBmb3JtYXQ6IFwiZXNtXCIsXG4gICAqICAgZXNidWlsZEFyZ3M6IHtcbiAgICogICAgIFwiLS1sb2ctbGltaXRcIjogXCIwXCIsXG4gICAqICAgfSxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBFYWNoIGVudHJ5IGlzIHBhc3NlZCB0byBlc2J1aWxkIGFzIGEgc2luZ2xlIGFyZ3VtZW50LCBleGFjdGx5IGFzIGdpdmVuOiBub1xuICAgKiBzaGVsbCBwYXJzZXMgaXQsIHNvIHZhbHVlcyBtdXN0IG5vdCBiZSBxdW90ZWQgKGEgdmFsdWUgY29udGFpbmluZyBzcGFjZXMgaXNcbiAgICogcGFzc2VkIHRocm91Z2ggYXMgb25lIGFyZ3VtZW50IG9uIGl0cyBvd24pLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGFkZGl0aW9uYWwgZXNidWlsZCBhcmd1bWVudHMgYXJlIHBhc3NlZFxuICAgKi9cbiAgcmVhZG9ubHkgZXNidWlsZEFyZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IGJvb2xlYW4gfTtcblxuICAvKipcbiAgICogSG93IHRvIGRldGVybWluZSB0aGUgZW50cnkgcG9pbnQgZm9yIG1vZHVsZXMuXG4gICAqIFRyeSBbJ21vZHVsZScsICdtYWluJ10gdG8gZGVmYXVsdCB0byBFUyBtb2R1bGUgdmVyc2lvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBtYWluRmllbGRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoaXMgb3B0aW9uIGFsbG93cyB5b3UgdG8gYXV0b21hdGljYWxseSByZXBsYWNlIGEgZ2xvYmFsIHZhcmlhYmxlIHdpdGggYW5cbiAgICogaW1wb3J0IGZyb20gYW5vdGhlciBmaWxlLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZXNidWlsZC5naXRodWIuaW8vYXBpLyNpbmplY3RcbiAgICogQGRlZmF1bHQgLSBubyBjb2RlIGlzIGluamVjdGVkXG4gICAqL1xuICByZWFkb25seSBpbmplY3Q/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBCdW5kbGVyT3B0aW9ucy5ydW5CdW5kbGVUYXNrXG4gKi9cbmV4cG9ydCBlbnVtIFJ1bkJ1bmRsZVRhc2sge1xuICAvKipcbiAgICogRG9uJ3QgYnVuZGxlIGF1dG9tYXRpY2FsbHkgYXMgcGFydCBvZiB0aGUgYnVpbGQuXG4gICAqL1xuICBNQU5VQUwgPSBcIm1hbnVhbFwiLFxuICAvKipcbiAgICogQnVuZGxlIGF1dG9tYXRpY2FsbHkgYmVmb3JlIGNvbXBpbGF0aW9uLlxuICAgKi9cbiAgUFJFX0NPTVBJTEUgPSBcInByZV9jb21waWxlXCIsXG4gIC8qKlxuICAgKiBCdW5kbGUgYXV0b21hdGljYWxseSBhZnRlciBjb21waWxhdGlvbi4gVGhpcyBpcyB1c2VmdWwgaWYgeW91IHdhbnQgdG9cbiAgICogYnVuZGxlIHRoZSBjb21waWxlZCByZXN1bHRzLlxuICAgKlxuICAgKiBUaHVzIHdpbGwgcnVuIGNvbXBpbGF0aW9uIHRhc2tzICh1c2luZyB0c2MsIGV0Yy4pIGJlZm9yZSBydW5uaW5nIGZpbGVcbiAgICogdGhyb3VnaCBidW5kbGluZyBzdGVwLlxuICAgKlxuICAgKiBUaGlzIGlzIG9ubHkgcmVxdWlyZWQgdW5sZXNzIHlvdSBhcmUgdXNpbmcgbmV3IGV4cGVyaW1lbnRhbCBmZWF0dXJlcyB0aGF0XG4gICAqIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGBlc2J1aWxkYCBidXQgYXJlIHN1cHBvcnRlZCBieSB0eXBlc2NyaXB0J3MgYHRzY2BcbiAgICogY29tcGlsZXIuIE9uZSBleGFtcGxlIG9mIHN1Y2ggZmVhdHVyZSBpcyBgZW1pdERlY29yYXRvck1ldGFkYXRhYC5cbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBJbiBhIFR5cGVTY3JpcHQgcHJvamVjdCB3aXRoIG91dHB1dCBjb25maWd1cmVkXG4gICAqIC8vIHRvIGdvIHRvIHRoZSBcImxpYlwiIGRpcmVjdG9yeTpcbiAgICogY29uc3QgcHJvamVjdCA9IG5ldyBUeXBlU2NyaXB0UHJvamVjdCh7XG4gICAqICAgbmFtZTogXCJ0ZXN0XCIsXG4gICAqICAgdHNjb25maWc6IHtcbiAgICogICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgKiAgICAgICBvdXREaXI6IFwibGliXCIsXG4gICAqICAgICB9LFxuICAgKiAgIH0sXG4gICAqICAgYnVuZGxlck9wdGlvbnM6IHtcbiAgICogICAgIC8vIGVuc3VyZSB3ZSBjb21waWxlIHdpdGggYHRzY2AgYmVmb3JlIGJ1bmRsaW5nXG4gICAqICAgICBydW5CdW5kbGVUYXNrOiBSdW5CdW5kbGVUYXNrLlBPU1RfQ09NUElMRSxcbiAgICogICB9LFxuICAgKiB9KTtcbiAgICpcbiAgICogLy8gVGVsbCB0aGUgYnVuZGxlciB0byBidW5kbGUgdGhlIGNvbXBpbGVkIHJlc3VsdHMgKGZyb20gdGhlIFwibGliXCIgZGlyZWN0b3J5KVxuICAgKiBwcm9qZWN0LmJ1bmRsZXIuYWRkQnVuZGxlKFwiLi9saWIvaW5kZXguanNcIiwge1xuICAgKiAgIHBsYXRmb3JtOiBcIm5vZGVcIixcbiAgICogICB0YXJnZXQ6IFwibm9kZTIyXCIsXG4gICAqICAgc291cmNlbWFwOiBmYWxzZSxcbiAgICogICBmb3JtYXQ6IFwiZXNtXCIsXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICoqL1xuICBQT1NUX0NPTVBJTEUgPSBcInBvc3RfY29tcGlsZVwiLFxufVxuXG4vKipcbiAqIFNvdXJjZU1hcCBtb2RlIGZvciBlc2J1aWxkXG4gKiBAc2VlIGh0dHBzOi8vZXNidWlsZC5naXRodWIuaW8vYXBpLyNzb3VyY2VtYXBcbiAqL1xuZXhwb3J0IGVudW0gU291cmNlTWFwTW9kZSB7XG4gIC8qKlxuICAgKiBEZWZhdWx0IHNvdXJjZU1hcCBtb2RlIC0gd2lsbCBnZW5lcmF0ZSBhIC5qcy5tYXAgZmlsZSBhbG9uZ3NpZGUgYW55IGdlbmVyYXRlZCAuanMgZmlsZSBhbmQgYWRkIGEgc3BlY2lhbCAvLyMgc291cmNlTWFwcGluZ1VSTD1cbiAgICogY29tbWVudCB0byB0aGUgYm90dG9tIG9mIHRoZSAuanMgZmlsZSBwb2ludGluZyB0byB0aGUgLmpzLm1hcCBmaWxlXG4gICAqL1xuICBERUZBVUxUID0gXCJkZWZhdWx0XCIsXG4gIC8qKlxuICAgKiAgRXh0ZXJuYWwgc291cmNlTWFwIG1vZGUgLSBJZiB5b3Ugd2FudCB0byBvbWl0IHRoZSBzcGVjaWFsIC8vIyBzb3VyY2VNYXBwaW5nVVJMPSBjb21tZW50IGZyb20gdGhlIGdlbmVyYXRlZCAuanMgZmlsZSBidXQgeW91IHN0aWxsXG4gICAqICB3YW50IHRvIGdlbmVyYXRlIHRoZSAuanMubWFwIGZpbGVzXG4gICAqL1xuICBFWFRFUk5BTCA9IFwiZXh0ZXJuYWxcIixcbiAgLyoqXG4gICAqIElubGluZSBzb3VyY2VNYXAgbW9kZSAtIElmIHlvdSB3YW50IHRvIGluc2VydCB0aGUgZW50aXJlIHNvdXJjZSBtYXAgaW50byB0aGUgLmpzIGZpbGUgaW5zdGVhZCBvZiBnZW5lcmF0aW5nIGEgc2VwYXJhdGUgLmpzLm1hcCBmaWxlXG4gICAqL1xuICBJTkxJTkUgPSBcImlubGluZVwiLFxuICAvKipcbiAgICogQm90aCBzb3VyY2VNYXAgbW9kZSAtIElmIHlvdSB3YW50IHRvIGhhdmUgdGhlIGVmZmVjdCBvZiBib3RoIGlubGluZSBhbmQgZXh0ZXJuYWwgc2ltdWx0YW5lb3VzbHlcbiAgICovXG4gIEJPVEggPSBcImJvdGhcIixcbn1cblxuLyoqXG4gKiBDaGFyc2V0IGZvciBlc2J1aWxkJ3Mgb3V0cHV0XG4gKi9cbmV4cG9ydCBlbnVtIENoYXJzZXQge1xuICAvKipcbiAgICogQVNDSUlcbiAgICpcbiAgICogQW55IG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkIHVzaW5nIGJhY2tzbGFzaCBlc2NhcGUgc2VxdWVuY2VzXG4gICAqL1xuICBBU0NJSSA9IFwiYXNjaWlcIixcblxuICAvKipcbiAgICogVVRGLThcbiAgICpcbiAgICogS2VlcCBvcmlnaW5hbCBjaGFyYWN0ZXJzIHdpdGhvdXQgdXNpbmcgZXNjYXBlIHNlcXVlbmNlc1xuICAgKi9cbiAgVVRGOCA9IFwidXRmOFwiLFxufVxuXG4vKipcbiAqIExvZyBsZXZlbHMgZm9yIGVzYnVpbGQgYW5kIHBhY2thZ2UgbWFuYWdlcnMnIGluc3RhbGwgY29tbWFuZHMuXG4gKi9cbmV4cG9ydCBlbnVtIEJ1bmRsZUxvZ0xldmVsIHtcbiAgLyoqIFNob3cgZXZlcnl0aGluZyAqL1xuICBWRVJCT1NFID0gXCJ2ZXJib3NlXCIsXG4gIC8qKiBTaG93IGV2ZXJ5dGhpbmcgZnJvbSBpbmZvIGFuZCBzb21lIGFkZGl0aW9uYWwgbWVzc2FnZXMgZm9yIGRlYnVnZ2luZyAqL1xuICBERUJVRyA9IFwiZGVidWdcIixcbiAgLyoqIFNob3cgd2FybmluZ3MsIGVycm9ycywgYW5kIGFuIG91dHB1dCBmaWxlIHN1bW1hcnkgKi9cbiAgSU5GTyA9IFwiaW5mb1wiLFxuICAvKiogU2hvdyB3YXJuaW5ncyBhbmQgZXJyb3JzICovXG4gIFdBUk5JTkcgPSBcIndhcm5pbmdcIixcbiAgLyoqIFNob3cgZXJyb3JzIG9ubHkgKi9cbiAgRVJST1IgPSBcImVycm9yXCIsXG4gIC8qKiBTaG93IG5vdGhpbmcgKi9cbiAgU0lMRU5UID0gXCJzaWxlbnRcIixcbn1cbiJdfQ==
|
|
342
|
+
/**
|
|
343
|
+
* Whether `addBundle` should pass `--packages=bundle`.
|
|
344
|
+
*
|
|
345
|
+
* esbuild 0.22.0 stopped including `node_modules` in bundles unless this flag
|
|
346
|
+
* is set. The flag is always passed so that contract holds. An `esbuildArgs`
|
|
347
|
+
* key of `--packages` or `--packages=...` is the caller's override, including
|
|
348
|
+
* a `false` value that the argv loop would otherwise drop.
|
|
349
|
+
*/
|
|
350
|
+
function shouldPassPackagesBundle(esbuildArgs) {
|
|
351
|
+
if (esbuildArgs) {
|
|
352
|
+
for (const key of Object.keys(esbuildArgs)) {
|
|
353
|
+
if (key === "--packages" || key.startsWith("--packages=")) {
|
|
354
|
+
return false;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
return true;
|
|
359
|
+
}
|
|
360
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qYXZhc2NyaXB0L2J1bmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3QiwrQkFBd0M7QUFDeEMsaUNBQTBDO0FBQzFDLDRDQUF5QztBQUN6QyxrREFBaUQ7QUEyQ2pEOzs7R0FHRztBQUNILE1BQWEsT0FBUSxTQUFRLHFCQUFTOztJQUNwQzs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBZ0I7UUFDL0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFZLEVBQWdCLEVBQUUsQ0FBQyxDQUFDLFlBQVksT0FBTyxDQUFDO1FBQ3ZFLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ2EsY0FBYyxDQUFxQjtJQUVuRDs7T0FFRztJQUNhLFNBQVMsQ0FBUztJQUUxQixLQUFLLENBQW1CO0lBQ2YsYUFBYSxDQUFpQjtJQUM5QixPQUFPLENBQTZCO0lBRXJEOztPQUVHO0lBQ0gsWUFBWSxPQUFnQixFQUFFLFVBQTBCLEVBQUU7UUFDeEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUM7UUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBRS9CLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDO0lBQzFFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsVUFBVTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtnQkFDaEQsV0FBVyxFQUFFLGdCQUFnQjthQUM5QixDQUFDLENBQUM7WUFFSCxzREFBc0Q7WUFDdEQsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoRCxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzdELElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakQsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFNBQVMsQ0FBQyxVQUFrQixFQUFFLE9BQXlCO1FBQzVELE1BQU0sSUFBSSxHQUFHLElBQUEsdUJBQWdCLEVBQUMsVUFBVSxDQUFDLENBQUM7UUFFMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQztRQUN2RSxNQUFNLElBQUksR0FBRztZQUNYLFNBQVM7WUFDVCxVQUFVO1lBQ1YsVUFBVTtZQUNWLFlBQVksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUM1QixjQUFjLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDaEMsYUFBYSxPQUFPLEVBQUU7U0FDdkIsQ0FBQztRQUVGLDhFQUE4RTtRQUM5RSxJQUFJLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFFRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRSxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDL0MsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDO1lBQ3JFLE1BQU0sY0FBYyxHQUNsQixhQUFhLEtBQUssYUFBYSxDQUFDLE9BQU87Z0JBQ3JDLENBQUMsQ0FBQyxFQUFFO2dCQUNKLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsY0FBYyxFQUFFLENBQUMsQ0FBQztZQUUxQyxJQUFJLE9BQU8sQ0FBQyxjQUFjLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQzNELENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUM5QixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUNYLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsU0FBUyxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDaEQsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUM7UUFDckQsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBQSxXQUFRLEVBQUMsTUFBTSxFQUFFLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN4QixNQUFNLE9BQU8sR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1lBRXBDLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUMvRCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxDQUFDO29CQUNuQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQixDQUFDO3FCQUFNLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDbEMsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDeEIsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxFQUFFLEVBQUU7WUFDeEQsV0FBVyxFQUFFLG1DQUFtQyxVQUFVLEVBQUU7WUFDNUQsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVsQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksS0FBSyxFQUFFLENBQUM7WUFDaEMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBRUQsSUFBSSxTQUFTLENBQUM7UUFDZCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQztRQUN4QyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxRQUFRLEVBQUU7Z0JBQ3ZELFdBQVcsRUFBRSxrREFBa0QsVUFBVSxFQUFFO2dCQUMzRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxTQUFTLENBQUM7YUFDL0IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU87WUFDTCxVQUFVLEVBQUUsVUFBVTtZQUN0QixTQUFTLEVBQUUsU0FBUztZQUNwQixNQUFNLEVBQUUsTUFBTTtZQUNkLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGtCQUFrQjtRQUN4QixNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQztRQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLHFCQUFxQjtRQUN2RSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYztZQUM3QixDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ2xDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLDZCQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0QsQ0FBQzs7QUFoTkgsMEJBaU5DO0FBb1NEOztHQUVHO0FBQ0gsSUFBWSxhQThDWDtBQTlDRCxXQUFZLGFBQWE7SUFDdkI7O09BRUc7SUFDSCxrQ0FBaUIsQ0FBQTtJQUNqQjs7T0FFRztJQUNILDRDQUEyQixDQUFBO0lBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQW1DSTtJQUNKLDhDQUE2QixDQUFBO0FBQy9CLENBQUMsRUE5Q1csYUFBYSw2QkFBYixhQUFhLFFBOEN4QjtBQUVEOzs7R0FHRztBQUNILElBQVksYUFtQlg7QUFuQkQsV0FBWSxhQUFhO0lBQ3ZCOzs7T0FHRztJQUNILG9DQUFtQixDQUFBO0lBQ25COzs7T0FHRztJQUNILHNDQUFxQixDQUFBO0lBQ3JCOztPQUVHO0lBQ0gsa0NBQWlCLENBQUE7SUFDakI7O09BRUc7SUFDSCw4QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQW5CVyxhQUFhLDZCQUFiLGFBQWEsUUFtQnhCO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLE9BY1g7QUFkRCxXQUFZLE9BQU87SUFDakI7Ozs7T0FJRztJQUNILDBCQUFlLENBQUE7SUFFZjs7OztPQUlHO0lBQ0gsd0JBQWEsQ0FBQTtBQUNmLENBQUMsRUFkVyxPQUFPLHVCQUFQLE9BQU8sUUFjbEI7QUFFRDs7R0FFRztBQUNILElBQVksY0FhWDtBQWJELFdBQVksY0FBYztJQUN4QixzQkFBc0I7SUFDdEIscUNBQW1CLENBQUE7SUFDbkIsMkVBQTJFO0lBQzNFLGlDQUFlLENBQUE7SUFDZix3REFBd0Q7SUFDeEQsK0JBQWEsQ0FBQTtJQUNiLCtCQUErQjtJQUMvQixxQ0FBbUIsQ0FBQTtJQUNuQix1QkFBdUI7SUFDdkIsaUNBQWUsQ0FBQTtJQUNmLG1CQUFtQjtJQUNuQixtQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBYlcsY0FBYyw4QkFBZCxjQUFjLFFBYXpCO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQVMsd0JBQXdCLENBQy9CLFdBQTREO0lBRTVELElBQUksV0FBVyxFQUFFLENBQUM7UUFDaEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDM0MsSUFBSSxHQUFHLEtBQUssWUFBWSxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztnQkFDMUQsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBqb2luIGFzIHBhdGhKb2luIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IHJlbmRlckJ1bmRsZU5hbWUgfSBmcm9tIFwiLi91dGlsXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEZXBlbmRlbmN5VHlwZSB9IGZyb20gXCIuLi9kZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB0eXBlIHsgUHJvamVjdCB9IGZyb20gXCIuLi9wcm9qZWN0XCI7XG5pbXBvcnQgdHlwZSB7IFRhc2sgfSBmcm9tIFwiLi4vdGFza1wiO1xuXG4vLyBQYXJ0cyBvZiB0aGlzIGZpbGUgaW5zcGlyZWQgYnkgQGF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXG4vLyAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL2MzYzc3MWM2ZjZmNjc5MGYyMjk4YTg1YTU0OWJkZWQ2NDBkMmUzNWIvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanMvbGliL2J1bmRsaW5nLnRzI0wxOTVcblxuLyoqXG4gKiBPcHRpb25zIGZvciBgQnVuZGxlcmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVuZGxlck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHNlbWFudGljIHZlcnNpb24gcmVxdWlyZW1lbnQgZm9yIGBlc2J1aWxkYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzcGVjaWZpYyB2ZXJzaW9uIChpbXBsaWVzIGxhdGVzdClcbiAgICovXG4gIHJlYWRvbmx5IGVzYnVpbGRWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPdXRwdXQgZGlyZWN0b3J5IGZvciBhbGwgYnVuZGxlcy5cbiAgICogQGRlZmF1bHQgXCJhc3NldHNcIlxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRzRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDaG9vc2Ugd2hpY2ggcGhhc2UgKGlmIGFueSkgdG8gYWRkIHRoZSBgYnVuZGxlYCBjb21tYW5kIHRvLlxuICAgKlxuICAgKiBOb3RlOiBJZiB1c2luZyBgYWRkQnVuZGxlKClgIHdpdGggdGhlIGBidW5kbGVDb21waWxlZFJlc3VsdHNgLCB0aGlzIG9wdGlvblxuICAgKiBtdXN0IGJlIHNldCB0byBgUnVuQnVuZGxlVGFzay5QT1NUX0NPTVBJTEVgIG9yIGBSdW5CdW5kbGVUYXNrLk1BTlVBTGAuXG4gICAqXG4gICAqIEBzZWUgQWRkQnVuZGxlT3B0aW9ucy5idW5kbGVDb21waWxlZFJlc3VsdHNcbiAgICpcbiAgICogQGRlZmF1bHQgUnVuQnVuZGxlVGFzay5QUkVfQ09NUElMRVxuICAgKi9cbiAgcmVhZG9ubHkgcnVuQnVuZGxlVGFzaz86IFJ1bkJ1bmRsZVRhc2s7XG5cbiAgLyoqXG4gICAqIE1hcCBvZiBmaWxlIGV4dGVuc2lvbnMgKHdpdGhvdXQgZG90KSBhbmQgbG9hZGVycyB0byB1c2UgZm9yIHRoaXMgZmlsZSB0eXBlLlxuICAgKiBMb2FkZXJzIGFyZSBhcHBlbmRlZCB0byB0aGUgZXNidWlsZCBjb21tYW5kIGJ5IGAtLWxvYWRlcjouZXh0ZW5zaW9uPWxvYWRlcmBcbiAgICovXG4gIHJlYWRvbmx5IGxvYWRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIEFkZHMgc3VwcG9ydCBmb3IgYnVuZGxpbmcgSmF2YVNjcmlwdCBhcHBsaWNhdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBpbnRvIGFcbiAqIHNpbmdsZSBmaWxlLiBJbiB0aGUgZnV0dXJlLCB0aGlzIHdpbGwgYWxzbyBzdXBwb3J0cyBidW5kbGluZyB3ZWJzaXRlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEJ1bmRsZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYEJ1bmRsZXJgIGluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCBhIHByb2plY3Qgb3IgYHVuZGVmaW5lZGAgaWZcbiAgICogdGhlcmUgaXMgbm8gQnVuZGxlci5cbiAgICogQHBhcmFtIHByb2plY3QgVGhlIHByb2plY3RcbiAgICogQHJldHVybnMgQSBidW5kbGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHByb2plY3Q6IFByb2plY3QpOiBCdW5kbGVyIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBpc0J1bmRsZXIgPSAobzogQ29tcG9uZW50KTogbyBpcyBCdW5kbGVyID0+IG8gaW5zdGFuY2VvZiBCdW5kbGVyO1xuICAgIHJldHVybiBwcm9qZWN0LmNvbXBvbmVudHMuZmluZChpc0J1bmRsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzZW1hbnRpYyB2ZXJzaW9uIHJlcXVpcmVtZW50IGZvciBgZXNidWlsZGAgKGlmIGRlZmluZWQpLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVzYnVpbGRWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFJvb3QgYnVuZGxlIGRpcmVjdG9yeS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBidW5kbGVkaXI6IHN0cmluZztcblxuICBwcml2YXRlIF90YXNrOiBUYXNrIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IHJ1bkJ1bmRsZVRhc2s/OiBSdW5CdW5kbGVUYXNrO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvYWRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgYEJ1bmRsZXJgLlxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogQnVuZGxlck9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgdGhpcy5lc2J1aWxkVmVyc2lvbiA9IG9wdGlvbnMuZXNidWlsZFZlcnNpb247XG4gICAgdGhpcy5idW5kbGVkaXIgPSBvcHRpb25zLmFzc2V0c0RpciA/PyBcImFzc2V0c1wiO1xuICAgIHRoaXMubG9hZGVycyA9IG9wdGlvbnMubG9hZGVycztcblxuICAgIHRoaXMucnVuQnVuZGxlVGFzayA9IG9wdGlvbnMucnVuQnVuZGxlVGFzayA/PyBSdW5CdW5kbGVUYXNrLlBSRV9DT01QSUxFO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgb3IgY3JlYXRlcyB0aGUgc2luZ2xldG9uIFwiYnVuZGxlXCIgdGFzayBvZiB0aGUgcHJvamVjdC5cbiAgICpcbiAgICogSWYgdGhlIHByb2plY3QgZG9lc24ndCBoYXZlIGEgXCJidW5kbGVcIiB0YXNrLCBpdCB3aWxsIGJlIGNyZWF0ZWQgYW5kIHNwYXduZWRcbiAgICogZHVyaW5nIHRoZSBwcmUtY29tcGlsZSBwaGFzZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgYnVuZGxlVGFzaygpOiBUYXNrIHtcbiAgICBpZiAoIXRoaXMuX3Rhc2spIHtcbiAgICAgIHRoaXMuYWRkQnVuZGxpbmdTdXBwb3J0KCk7XG4gICAgICB0aGlzLl90YXNrID0gdGhpcy5wcm9qZWN0LnRhc2tzLmFkZFRhc2soXCJidW5kbGVcIiwge1xuICAgICAgICBkZXNjcmlwdGlvbjogXCJQcmVwYXJlIGFzc2V0c1wiLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIGluc3RhbGwgdGhlIGJ1bmRsZSB0YXNrIGludG8gdGhlIHByZS1jb21waWxlIHBoYXNlLlxuICAgICAgaWYgKHRoaXMucnVuQnVuZGxlVGFzayA9PT0gUnVuQnVuZGxlVGFzay5QUkVfQ09NUElMRSkge1xuICAgICAgICB0aGlzLnByb2plY3QucHJlQ29tcGlsZVRhc2suc3Bhd24odGhpcy5fdGFzayk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMucnVuQnVuZGxlVGFzayA9PT0gUnVuQnVuZGxlVGFzay5QT1NUX0NPTVBJTEUpIHtcbiAgICAgICAgdGhpcy5wcm9qZWN0LnBvc3RDb21waWxlVGFzay5zcGF3bih0aGlzLl90YXNrKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fdGFzaztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgdGFzayB0byB0aGUgcHJvamVjdCB3aGljaCBidW5kbGVzIGEgc3BlY2lmaWMgZW50cnlwb2ludCBhbmQgYWxsIG9mXG4gICAqIGl0cyBkZXBlbmRlbmNpZXMgaW50byBhIHNpbmdsZSBqYXZhc2NyaXB0IG91dHB1dCBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gZW50cnlwb2ludCBUaGUgcmVsYXRpdmUgcGF0aCBvZiB0aGUgYXJ0aWZhY3Qgd2l0aGluIHRoZSBwcm9qZWN0XG4gICAqIEBwYXJhbSBvcHRpb25zIEJ1bmRsaW5nIG9wdGlvbnNcbiAgICovXG4gIHB1YmxpYyBhZGRCdW5kbGUoZW50cnlwb2ludDogc3RyaW5nLCBvcHRpb25zOiBBZGRCdW5kbGVPcHRpb25zKTogQnVuZGxlIHtcbiAgICBjb25zdCBuYW1lID0gcmVuZGVyQnVuZGxlTmFtZShlbnRyeXBvaW50KTtcblxuICAgIGNvbnN0IG91dGRpciA9IHBhdGgucG9zaXguam9pbih0aGlzLmJ1bmRsZWRpciwgbmFtZSk7XG4gICAgY29uc3Qgb3V0ZmlsZSA9IHBhdGgucG9zaXguam9pbihvdXRkaXIsIG9wdGlvbnMub3V0ZmlsZSA/PyBcImluZGV4LmpzXCIpO1xuICAgIGNvbnN0IGFyZ3MgPSBbXG4gICAgICBcImVzYnVpbGRcIixcbiAgICAgIFwiLS1idW5kbGVcIixcbiAgICAgIGVudHJ5cG9pbnQsXG4gICAgICBgLS10YXJnZXQ9JHtvcHRpb25zLnRhcmdldH1gLFxuICAgICAgYC0tcGxhdGZvcm09JHtvcHRpb25zLnBsYXRmb3JtfWAsXG4gICAgICBgLS1vdXRmaWxlPSR7b3V0ZmlsZX1gLFxuICAgIF07XG5cbiAgICAvLyBLZWVwIGJ1bmRsaW5nIG5vZGVfbW9kdWxlcy4gZXNidWlsZEFyZ3NbXCItLXBhY2thZ2VzXCJdIHJlbWFpbnMgdGhlIG92ZXJyaWRlLlxuICAgIGlmIChzaG91bGRQYXNzUGFja2FnZXNCdW5kbGUob3B0aW9ucy5lc2J1aWxkQXJncykpIHtcbiAgICAgIGFyZ3MucHVzaChcIi0tcGFja2FnZXM9YnVuZGxlXCIpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnRzY29uZmlnUGF0aCkge1xuICAgICAgYXJncy5wdXNoKGAtLXRzY29uZmlnPSR7b3B0aW9ucy50c2NvbmZpZ1BhdGh9YCk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB4IG9mIG9wdGlvbnMuZXh0ZXJuYWxzID8/IFtdKSB7XG4gICAgICBhcmdzLnB1c2goYC0tZXh0ZXJuYWw6JHt4fWApO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnNvdXJjZW1hcCB8fCBvcHRpb25zLnNvdXJjZU1hcE1vZGUpIHtcbiAgICAgIGNvbnN0IHNvdXJjZU1hcE1vZGUgPSBvcHRpb25zLnNvdXJjZU1hcE1vZGUgPz8gU291cmNlTWFwTW9kZS5ERUZBVUxUO1xuICAgICAgY29uc3Qgc291cmNlTWFwVmFsdWUgPVxuICAgICAgICBzb3VyY2VNYXBNb2RlID09PSBTb3VyY2VNYXBNb2RlLkRFRkFVTFRcbiAgICAgICAgICA/IFwiXCJcbiAgICAgICAgICA6IGA9JHtvcHRpb25zLnNvdXJjZU1hcE1vZGV9YDtcbiAgICAgIGFyZ3MucHVzaChgLS1zb3VyY2VtYXAke3NvdXJjZU1hcFZhbHVlfWApO1xuXG4gICAgICBpZiAob3B0aW9ucy5zb3VyY2VzQ29udGVudCA9PT0gdHJ1ZSkge1xuICAgICAgICBhcmdzLnB1c2goYC0tc291cmNlcy1jb250ZW50PSR7b3B0aW9ucy5zb3VyY2VzQ29udGVudH1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmb3JtYXQgPSBvcHRpb25zLmZvcm1hdDtcbiAgICBpZiAoZm9ybWF0KSB7XG4gICAgICBhcmdzLnB1c2goYC0tZm9ybWF0PSR7Zm9ybWF0fWApO1xuICAgIH1cblxuICAgIGNvbnN0IGxvYWRlcnMgPVxuICAgICAgKG9wdGlvbnMubG9hZGVycyA/PyBmYWxzZSkgPyBvcHRpb25zLmxvYWRlcnMgOiAodGhpcy5sb2FkZXJzID8/IGZhbHNlKTtcbiAgICBpZiAobG9hZGVycykge1xuICAgICAgZm9yIChsZXQgW2V4dGVuc2lvbiwgbG9hZGVyXSBvZiBPYmplY3QuZW50cmllcyhsb2FkZXJzKSkge1xuICAgICAgICBhcmdzLnB1c2goYC0tbG9hZGVyOi4ke2V4dGVuc2lvbn09JHtsb2FkZXJ9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZGVmaW5lcyA9IE9iamVjdC5lbnRyaWVzKG9wdGlvbnMuZGVmaW5lID8/IHt9KTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBkZWZpbmVzKSB7XG4gICAgICBhcmdzLnB1c2goYC0tZGVmaW5lOiR7a2V5fT0ke3ZhbHVlfWApO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm1pbmlmeSkge1xuICAgICAgYXJncy5wdXNoKFwiLS1taW5pZnlcIik7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubG9nTGV2ZWwpIHtcbiAgICAgIGFyZ3MucHVzaChgLS1sb2ctbGV2ZWw9JHtvcHRpb25zLmxvZ0xldmVsfWApO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5rZWVwTmFtZXMpIHtcbiAgICAgIGFyZ3MucHVzaChcIi0ta2VlcC1uYW1lc1wiKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubWV0YWZpbGUpIHtcbiAgICAgIGFyZ3MucHVzaChgLS1tZXRhZmlsZT0ke3BhdGhKb2luKG91dGRpciwgXCJpbmRleC5tZXRhLmpzb25cIil9YCk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmJhbm5lcikge1xuICAgICAgYXJncy5wdXNoKGAtLWJhbm5lcjpqcz0ke29wdGlvbnMuYmFubmVyfWApO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5mb290ZXIpIHtcbiAgICAgIGFyZ3MucHVzaChgLS1mb290ZXI6anM9JHtvcHRpb25zLmZvb3Rlcn1gKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubWFpbkZpZWxkcykge1xuICAgICAgYXJncy5wdXNoKGAtLW1haW4tZmllbGRzPSR7b3B0aW9ucy5tYWluRmllbGRzLmpvaW4oXCIsXCIpfWApO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5pbmplY3QpIHtcbiAgICAgIGFyZ3MucHVzaCguLi5vcHRpb25zLmluamVjdC5tYXAoKGkpID0+IGAtLWluamVjdDoke2l9YCkpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5lc2J1aWxkQXJncykge1xuICAgICAgY29uc3Qgc3ViQXJncyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMuZXNidWlsZEFyZ3MpKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gXCJcIikge1xuICAgICAgICAgIHN1YkFyZ3MucHVzaChrZXkpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgc3ViQXJncy5wdXNoKGAke2tleX09JHt2YWx1ZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhcmdzLnB1c2goLi4uc3ViQXJncyk7XG4gICAgfVxuXG4gICAgY29uc3QgYnVuZGxlVGFzayA9IHRoaXMucHJvamVjdC5hZGRUYXNrKGBidW5kbGU6JHtuYW1lfWAsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgQ3JlYXRlIGEgSmF2YVNjcmlwdCBidW5kbGUgZnJvbSAke2VudHJ5cG9pbnR9YCxcbiAgICAgIGV4ZWNBcmdzOiBhcmdzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5idW5kbGVUYXNrLnNwYXduKGJ1bmRsZVRhc2spO1xuXG4gICAgaWYgKG9wdGlvbnMuZXhlY3V0YWJsZSA/PyBmYWxzZSkge1xuICAgICAgYnVuZGxlVGFzay5leGVjQXJncyhbXCJjaG1vZFwiLCBcIit4XCIsIG91dGZpbGVdKTtcbiAgICB9XG5cbiAgICBsZXQgd2F0Y2hUYXNrO1xuICAgIGNvbnN0IHdhdGNoID0gb3B0aW9ucy53YXRjaFRhc2sgPz8gdHJ1ZTtcbiAgICBpZiAod2F0Y2gpIHtcbiAgICAgIHdhdGNoVGFzayA9IHRoaXMucHJvamVjdC5hZGRUYXNrKGBidW5kbGU6JHtuYW1lfTp3YXRjaGAsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBDb250aW51b3VzbHkgdXBkYXRlIHRoZSBKYXZhU2NyaXB0IGJ1bmRsZSBmcm9tICR7ZW50cnlwb2ludH1gLFxuICAgICAgICBleGVjQXJnczogWy4uLmFyZ3MsIFwiLS13YXRjaFwiXSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBidW5kbGVUYXNrOiBidW5kbGVUYXNrLFxuICAgICAgd2F0Y2hUYXNrOiB3YXRjaFRhc2ssXG4gICAgICBvdXRkaXI6IG91dGRpcixcbiAgICAgIG91dGZpbGU6IG91dGZpbGUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYnVuZGxpbmcgc3VwcG9ydCB0byBhIHByb2plY3QuIFRoaXMgaXMgY2FsbGVkIGltcGxpY2l0bHkgd2hlblxuICAgKiBgYnVuZGxlVGFza2AgaXMgcmVmZXJlbmNlZCBmaXJzdC4gSXQgYWRkcyB0aGUgZGVwZW5kZW5jeSBvbiBgZXNidWlsZGAsXG4gICAqIGdpdGlnbm9yZS9ucG1pZ25vcmUsIGV0Yy5cbiAgICovXG4gIHByaXZhdGUgYWRkQnVuZGxpbmdTdXBwb3J0KCkge1xuICAgIGNvbnN0IGlnbm9yZUVudHJ5ID0gYC8ke3RoaXMuYnVuZGxlZGlyfS9gO1xuICAgIHRoaXMucHJvamVjdC5hZGRHaXRJZ25vcmUoaWdub3JlRW50cnkpO1xuICAgIHRoaXMucHJvamVjdC5hZGRQYWNrYWdlSWdub3JlKGAhJHtpZ25vcmVFbnRyeX1gKTsgLy8gaW5jbHVkZSBpbiB0YXJiYWxsXG4gICAgY29uc3QgZGVwID0gdGhpcy5lc2J1aWxkVmVyc2lvblxuICAgICAgPyBgZXNidWlsZEAke3RoaXMuZXNidWlsZFZlcnNpb259YFxuICAgICAgOiBcImVzYnVpbGRcIjtcbiAgICB0aGlzLnByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KGRlcCwgRGVwZW5kZW5jeVR5cGUuQlVJTEQpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVuZGxlIHtcbiAgLyoqXG4gICAqIFRoZSB0YXNrIHRoYXQgcHJvZHVjZXMgdGhpcyBidW5kbGUuXG4gICAqL1xuICByZWFkb25seSBidW5kbGVUYXNrOiBUYXNrO1xuXG4gIC8qKlxuICAgKiBUaGUgXCJ3YXRjaFwiIHRhc2sgZm9yIHRoaXMgYnVuZGxlLlxuICAgKi9cbiAgcmVhZG9ubHkgd2F0Y2hUYXNrPzogVGFzaztcblxuICAvKipcbiAgICogTG9jYXRpb24gb2YgdGhlIG91dHB1dCBmaWxlIChyZWxhdGl2ZSB0byBwcm9qZWN0IHJvb3QpLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0ZmlsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCYXNlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBvdXRwdXQgZmlsZSAocmVsYXRpdmUgdG8gcHJvamVjdCByb290KS5cbiAgICovXG4gIHJlYWRvbmx5IG91dGRpcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGJ1bmRsaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsaW5nT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBZb3UgY2FuIG1hcmsgYSBmaWxlIG9yIGEgcGFja2FnZSBhcyBleHRlcm5hbCB0byBleGNsdWRlIGl0IGZyb20geW91ciBidWlsZC5cbiAgICogSW5zdGVhZCBvZiBiZWluZyBidW5kbGVkLCB0aGUgaW1wb3J0IHdpbGwgYmUgcHJlc2VydmVkICh1c2luZyByZXF1aXJlIGZvclxuICAgKiB0aGUgaWlmZSBhbmQgY2pzIGZvcm1hdHMgYW5kIHVzaW5nIGltcG9ydCBmb3IgdGhlIGVzbSBmb3JtYXQpIGFuZCB3aWxsIGJlXG4gICAqIGV2YWx1YXRlZCBhdCBydW4gdGltZSBpbnN0ZWFkLlxuICAgKlxuICAgKiBUaGlzIGhhcyBzZXZlcmFsIHVzZXMuIEZpcnN0IG9mIGFsbCwgaXQgY2FuIGJlIHVzZWQgdG8gdHJpbSB1bm5lY2Vzc2FyeVxuICAgKiBjb2RlIGZyb20geW91ciBidW5kbGUgZm9yIGEgY29kZSBwYXRoIHRoYXQgeW91IGtub3cgd2lsbCBuZXZlciBiZSBleGVjdXRlZC5cbiAgICogRm9yIGV4YW1wbGUsIGEgcGFja2FnZSBtYXkgY29udGFpbiBjb2RlIHRoYXQgb25seSBydW5zIGluIG5vZGUgYnV0IHlvdSB3aWxsXG4gICAqIG9ubHkgYmUgdXNpbmcgdGhhdCBwYWNrYWdlIGluIHRoZSBicm93c2VyLiBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGltcG9ydFxuICAgKiBjb2RlIGluIG5vZGUgYXQgcnVuIHRpbWUgZnJvbSBhIHBhY2thZ2UgdGhhdCBjYW5ub3QgYmUgYnVuZGxlZC4gRm9yXG4gICAqIGV4YW1wbGUsIHRoZSBmc2V2ZW50cyBwYWNrYWdlIGNvbnRhaW5zIGEgbmF0aXZlIGV4dGVuc2lvbiwgd2hpY2ggZXNidWlsZFxuICAgKiBkb2Vzbid0IHN1cHBvcnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBleHRlcm5hbHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSW5jbHVkZSBhIHNvdXJjZSBtYXAgaW4gdGhlIGJ1bmRsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZW1hcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluIGFkZGl0aW9uIHRvIHRoZSBgYnVuZGxlOnh5emAgdGFzaywgY3JlYXRlcyBgYnVuZGxlOnh5ejp3YXRjaGAgdGFzayB3aGljaCB3aWxsXG4gICAqIGludm9rZSB0aGUgc2FtZSBlc2J1aWxkIGNvbW1hbmQgd2l0aCB0aGUgYC0td2F0Y2hgIGZsYWcuIFRoaXMgY2FuIGJlIHVzZWRcbiAgICogdG8gY29udGludXNvdWx5IHdhdGNoIGZvciBjaGFuZ2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB3YXRjaFRhc2s/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBhZGRCdW5kbGUoKWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRkQnVuZGxlT3B0aW9ucyBleHRlbmRzIEJ1bmRsaW5nT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBlc2J1aWxkIHRhcmdldC5cbiAgICpcbiAgICogQGV4YW1wbGUgXCJub2RlMTJcIlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGVzYnVpbGQgcGxhdGZvcm0uXG4gICAqXG4gICAqIEBleGFtcGxlIFwibm9kZVwiXG4gICAqL1xuICByZWFkb25seSBwbGF0Zm9ybTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCdW5kbGVyIG91dHB1dCBwYXRoIHJlbGF0aXZlIHRvIHRoZSBhc3NldCdzIG91dHB1dCBkaXJlY3RvcnkuXG4gICAqIEBkZWZhdWx0IFwiaW5kZXguanNcIlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0ZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogTWFyayB0aGUgb3V0cHV0IGZpbGUgYXMgZXhlY3V0YWJsZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGV4ZWN1dGFibGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvZiB0aGUgdHNjb25maWcuanNvbiBmaWxlIHRvIHVzZSBmb3IgYnVuZGxpbmdcbiAgICogQGRlZmF1bHQgXCJ0c2NvbmZpZy5qc29uXCJcbiAgICovXG4gIHJlYWRvbmx5IHRzY29uZmlnUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogTWFwIG9mIGZpbGUgZXh0ZW5zaW9ucyAod2l0aG91dCBkb3QpIGFuZCBsb2FkZXJzIHRvIHVzZSBmb3IgdGhpcyBmaWxlIHR5cGUuXG4gICAqIExvYWRlcnMgYXJlIGFwcGVuZGVkIHRvIHRoZSBlc2J1aWxkIGNvbW1hbmQgYnkgYC0tbG9hZGVyOi5leHRlbnNpb249bG9hZGVyYFxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIE91dHB1dCBmb3JtYXQgZm9yIHRoZSBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBmaWxlcy4gVGhlcmUgYXJlIGN1cnJlbnRseSB0aHJlZSBwb3NzaWJsZSB2YWx1ZXMgdGhhdCBjYW4gYmUgY29uZmlndXJlZDogYFwiaWlmZVwiYCwgYFwiY2pzXCJgLCBhbmQgYFwiZXNtXCJgLlxuICAgKlxuICAgKiBJZiBub3Qgc2V0IChgdW5kZWZpbmVkYCksIGVzYnVpbGQgcGlja3MgYW4gb3V0cHV0IGZvcm1hdCBmb3IgeW91IGJhc2VkIG9uIGBwbGF0Zm9ybWA6XG4gICAqIC0gYFwiY2pzXCJgIGlmIGBwbGF0Zm9ybWAgaXMgYFwibm9kZVwiYFxuICAgKiAtIGBcImlpZmVcImAgaWYgYHBsYXRmb3JtYCBpcyBgXCJicm93c2VyXCJgXG4gICAqIC0gYFwiZXNtXCJgIGlmIGBwbGF0Zm9ybWAgaXMgYFwibmV1dHJhbFwiYFxuICAgKlxuICAgKiBOb3RlOiBJZiBtYWtpbmcgYSBidW5kbGUgdG8gcnVuIHVuZGVyIG5vZGUgd2l0aCBFU00sIHNldCBgZm9ybWF0YCB0byBgXCJlc21cImAgaW5zdGVhZCBvZiBzZXR0aW5nIGBwbGF0Zm9ybWAgdG8gYFwibmV1dHJhbFwiYC5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9lc2J1aWxkLmdpdGh1Yi5pby9hcGkvI2Zvcm1hdFxuICAgKi9cblxuICByZWFkb25seSBmb3JtYXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gbWluaWZ5IGZpbGVzIHdoZW4gYnVuZGxpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBtaW5pZnk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTb3VyY2UgbWFwIG1vZGUgdG8gYmUgdXNlZCB3aGVuIGJ1bmRsaW5nLlxuICAgKiBAc2VlIGh0dHBzOi8vZXNidWlsZC5naXRodWIuaW8vYXBpLyNzb3VyY2VtYXBcbiAgICpcbiAgICogQGRlZmF1bHQgU291cmNlTWFwTW9kZS5ERUZBVUxUXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VNYXBNb2RlPzogU291cmNlTWFwTW9kZTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIG9yaWdpbmFsIHNvdXJjZSBjb2RlIGluIHNvdXJjZSBtYXBzIHdoZW4gYnVuZGxpbmcuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9lc2J1aWxkLmdpdGh1Yi5pby9hcGkvI3NvdXJjZXMtY29udGVudFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VzQ29udGVudD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIExvZyBsZXZlbCBmb3IgZXNidWlsZC4gVGhpcyBpcyBhbHNvIHByb3BhZ2F0ZWQgdG8gdGhlIHBhY2thZ2UgbWFuYWdlciBhbmRcbiAgICogYXBwbGllcyB0byBpdHMgc3BlY2lmaWMgaW5zdGFsbCBjb21tYW5kLlxuICAgKlxuICAgKiBAZGVmYXVsdCBMb2dMZXZlbC5XQVJOSU5HXG4gICAqL1xuICByZWFkb25seSBsb2dMZXZlbD86IEJ1bmRsZUxvZ0xldmVsO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHByZXNlcnZlIHRoZSBvcmlnaW5hbCBgbmFtZWAgdmFsdWVzIGV2ZW4gaW4gbWluaWZpZWQgY29kZS5cbiAgICpcbiAgICogSW4gSmF2YVNjcmlwdCB0aGUgYG5hbWVgIHByb3BlcnR5IG9uIGZ1bmN0aW9ucyBhbmQgY2xhc3NlcyBkZWZhdWx0cyB0byBhXG4gICAqIG5lYXJieSBpZGVudGlmaWVyIGluIHRoZSBzb3VyY2UgY29kZS5cbiAgICpcbiAgICogSG93ZXZlciwgbWluaWZpY2F0aW9uIHJlbmFtZXMgc3ltYm9scyB0byByZWR1Y2UgY29kZSBzaXplIGFuZCBidW5kbGluZ1xuICAgKiBzb21ldGltZXMgbmVlZCB0byByZW5hbWUgc3ltYm9scyB0byBhdm9pZCBjb2xsaXNpb25zLiBUaGF0IGNoYW5nZXMgdmFsdWUgb2ZcbiAgICogdGhlIGBuYW1lYCBwcm9wZXJ0eSBmb3IgbWFueSBvZiB0aGVzZSBjYXNlcy4gVGhpcyBpcyB1c3VhbGx5IGZpbmUgYmVjYXVzZVxuICAgKiB0aGUgYG5hbWVgIHByb3BlcnR5IGlzIG5vcm1hbGx5IG9ubHkgdXNlZCBmb3IgZGVidWdnaW5nLiBIb3dldmVyLCBzb21lXG4gICAqIGZyYW1ld29ya3MgcmVseSBvbiB0aGUgYG5hbWVgIHByb3BlcnR5IGZvciByZWdpc3RyYXRpb24gYW5kIGJpbmRpbmcgcHVycG9zZXMuXG4gICAqIElmIHRoaXMgaXMgdGhlIGNhc2UsIHlvdSBjYW4gZW5hYmxlIHRoaXMgb3B0aW9uIHRvIHByZXNlcnZlIHRoZSBvcmlnaW5hbFxuICAgKiBgbmFtZWAgdmFsdWVzIGV2ZW4gaW4gbWluaWZpZWQgY29kZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGtlZXBOYW1lcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoaXMgb3B0aW9uIHRlbGxzIGVzYnVpbGQgdG8gd3JpdGUgb3V0IGEgSlNPTiBmaWxlIHJlbGF0aXZlIHRvIG91dHB1dCBkaXJlY3Rvcnkgd2l0aCBtZXRhZGF0YSBhYm91dCB0aGUgYnVpbGQuXG4gICAqXG4gICAqIFRoZSBtZXRhZGF0YSBpbiB0aGlzIEpTT04gZmlsZSBmb2xsb3dzIHRoaXMgc2NoZW1hIChzcGVjaWZpZWQgdXNpbmcgVHlwZVNjcmlwdCBzeW50YXgpOlxuICAgKlxuICAgKiBgYGB0ZXh0XG4gICAqIHtcbiAgICogICBvdXRwdXRzOiB7XG4gICAqICAgICBbcGF0aDogc3RyaW5nXToge1xuICAgKiAgICAgICBieXRlczogbnVtYmVyXG4gICAqICAgICAgIGlucHV0czoge1xuICAgKiAgICAgICAgIFtwYXRoOiBzdHJpbmddOiB7IGJ5dGVzSW5PdXRwdXQ6IG51bWJlciB9XG4gICAqICAgICAgIH1cbiAgICogICAgICAgaW1wb3J0czogeyBwYXRoOiBzdHJpbmcgfVtdXG4gICAqICAgICAgIGV4cG9ydHM6IHN0cmluZ1tdXG4gICAqICAgICB9XG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKiBUaGlzIGRhdGEgY2FuIHRoZW4gYmUgYW5hbHl6ZWQgYnkgb3RoZXIgdG9vbHMuIEZvciBleGFtcGxlLFxuICAgKiBidW5kbGUgYnVkZHkgY2FuIGNvbnN1bWUgZXNidWlsZCdzIG1ldGFkYXRhIGZvcm1hdCBhbmQgZ2VuZXJhdGVzIGEgdHJlZW1hcCB2aXN1YWxpemF0aW9uXG4gICAqIG9mIHRoZSBtb2R1bGVzIGluIHlvdXIgYnVuZGxlIGFuZCBob3cgbXVjaCBzcGFjZSBlYWNoIG9uZSB0YWtlcyB1cC5cbiAgICogQHNlZSBodHRwczovL2VzYnVpbGQuZ2l0aHViLmlvL2FwaS8jbWV0YWZpbGVcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG1ldGFmaWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gaW5zZXJ0IGFuIGFyYml0cmFyeSBzdHJpbmcgYXQgdGhlIGJlZ2lubmluZyBvZiBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBmaWxlcy5cbiAgICpcbiAgICogVGhpcyBpcyBzaW1pbGFyIHRvIGZvb3RlciB3aGljaCBpbnNlcnRzIGF0IHRoZSBlbmQgaW5zdGVhZCBvZiB0aGUgYmVnaW5uaW5nLlxuICAgKlxuICAgKiBUaGlzIGlzIGNvbW1vbmx5IHVzZWQgdG8gaW5zZXJ0IGNvbW1lbnRzOlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGNvbW1lbnRzIGFyZSBwYXNzZWRcbiAgICovXG4gIHJlYWRvbmx5IGJhbm5lcj86IHN0cmluZztcblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gaW5zZXJ0IGFuIGFyYml0cmFyeSBzdHJpbmcgYXQgdGhlIGVuZCBvZiBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBmaWxlcy5cbiAgICpcbiAgICogVGhpcyBpcyBzaW1pbGFyIHRvIGJhbm5lciB3aGljaCBpbnNlcnRzIGF0IHRoZSBiZWdpbm5pbmcgaW5zdGVhZCBvZiB0aGUgZW5kLlxuICAgKlxuICAgKiBUaGlzIGlzIGNvbW1vbmx5IHVzZWQgdG8gaW5zZXJ0IGNvbW1lbnRzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gY29tbWVudHMgYXJlIHBhc3NlZFxuICAgKi9cbiAgcmVhZG9ubHkgZm9vdGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY2hhcnNldCB0byB1c2UgZm9yIGVzYnVpbGQncyBvdXRwdXQuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQgZXNidWlsZCdzIG91dHB1dCBpcyBBU0NJSS1vbmx5LiBBbnkgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWRcbiAgICogdXNpbmcgYmFja3NsYXNoIGVzY2FwZSBzZXF1ZW5jZXMuIFVzaW5nIGVzY2FwZSBzZXF1ZW5jZXMgbWFrZXMgdGhlIGdlbmVyYXRlZCBvdXRwdXRcbiAgICogc2xpZ2h0bHkgYmlnZ2VyLCBhbmQgYWxzbyBtYWtlcyBpdCBoYXJkZXIgdG8gcmVhZC4gSWYgeW91IHdvdWxkIGxpa2UgZm9yIGVzYnVpbGQgdG8gcHJpbnRcbiAgICogdGhlIG9yaWdpbmFsIGNoYXJhY3RlcnMgd2l0aG91dCB1c2luZyBlc2NhcGUgc2VxdWVuY2VzLCB1c2UgYENoYXJzZXQuVVRGOGAuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9lc2J1aWxkLmdpdGh1Yi5pby9hcGkvI2NoYXJzZXRcbiAgICogQGRlZmF1bHQgQ2hhcnNldC5BU0NJSVxuICAgKi9cbiAgcmVhZG9ubHkgY2hhcnNldD86IENoYXJzZXQ7XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgZ2xvYmFsIGlkZW50aWZpZXJzIHdpdGggY29uc3RhbnQgZXhwcmVzc2lvbnMuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCBgeyAncHJvY2Vzcy5lbnYuREVCVUcnOiAndHJ1ZScgfWAuXG4gICAqXG4gICAqIEFub3RoZXIgZXhhbXBsZSwgYHsgJ3Byb2Nlc3MuZW52LkFQSV9LRVknOiBKU09OLnN0cmluZ2lmeSgneHh4LXh4eHgteHh4JykgfWAuXG4gICAqXG4gICAqIEVhY2ggZW50cnkgaXMgcGFzc2VkIHRvIGVzYnVpbGQgYXMgYSBzaW5nbGUgYC0tZGVmaW5lOmAgYXJndW1lbnQsIGV4YWN0bHkgYXNcbiAgICogZ2l2ZW46IG5vIHNoZWxsIHBhcnNlcyBpdCwgc28gdmFsdWVzIGFyZSBub3QgdW5xdW90ZWQgYWxvbmcgdGhlIHdheSBhbmQgYVxuICAgKiBzdHJpbmcgcmVwbGFjZW1lbnQga2VlcHMgdGhlIHF1b3RlcyBpdCBuZWVkcyAoYEpTT04uc3RyaW5naWZ5KCd4eHgnKWApLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHJlcGxhY2VtZW50cyBhcmUgbWFkZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVmaW5lPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQnVpbGQgYXJndW1lbnRzIHRvIHBhc3MgaW50byBlc2J1aWxkLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgdG8gYWRkIHRoZSBbLS1sb2ctbGltaXRdKGh0dHBzOi8vZXNidWlsZC5naXRodWIuaW8vYXBpLyNsb2ctbGltaXQpIGZsYWc6XG4gICAqXG4gICAqIGBgYHRleHRcbiAgICogcHJvamVjdC5idW5kbGVyLmFkZEJ1bmRsZShcIi4vc3JjL2hlbGxvLnRzXCIsIHtcbiAgICogICBwbGF0Zm9ybTogXCJub2RlXCIsXG4gICAqICAgdGFyZ2V0OiBcIm5vZGUyMlwiLFxuICAgKiAgIHNvdXJjZW1hcDogdHJ1ZSxcbiAgICogICBmb3JtYXQ6IFwiZXNtXCIsXG4gICAqICAgZXNidWlsZEFyZ3M6IHtcbiAgICogICAgIFwiLS1sb2ctbGltaXRcIjogXCIwXCIsXG4gICAqICAgfSxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBFYWNoIGVudHJ5IGlzIHBhc3NlZCB0byBlc2J1aWxkIGFzIGEgc2luZ2xlIGFyZ3VtZW50LCBleGFjdGx5IGFzIGdpdmVuOiBub1xuICAgKiBzaGVsbCBwYXJzZXMgaXQsIHNvIHZhbHVlcyBtdXN0IG5vdCBiZSBxdW90ZWQgKGEgdmFsdWUgY29udGFpbmluZyBzcGFjZXMgaXNcbiAgICogcGFzc2VkIHRocm91Z2ggYXMgb25lIGFyZ3VtZW50IG9uIGl0cyBvd24pLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGFkZGl0aW9uYWwgZXNidWlsZCBhcmd1bWVudHMgYXJlIHBhc3NlZFxuICAgKi9cbiAgcmVhZG9ubHkgZXNidWlsZEFyZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IGJvb2xlYW4gfTtcblxuICAvKipcbiAgICogSG93IHRvIGRldGVybWluZSB0aGUgZW50cnkgcG9pbnQgZm9yIG1vZHVsZXMuXG4gICAqIFRyeSBbJ21vZHVsZScsICdtYWluJ10gdG8gZGVmYXVsdCB0byBFUyBtb2R1bGUgdmVyc2lvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBtYWluRmllbGRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoaXMgb3B0aW9uIGFsbG93cyB5b3UgdG8gYXV0b21hdGljYWxseSByZXBsYWNlIGEgZ2xvYmFsIHZhcmlhYmxlIHdpdGggYW5cbiAgICogaW1wb3J0IGZyb20gYW5vdGhlciBmaWxlLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZXNidWlsZC5naXRodWIuaW8vYXBpLyNpbmplY3RcbiAgICogQGRlZmF1bHQgLSBubyBjb2RlIGlzIGluamVjdGVkXG4gICAqL1xuICByZWFkb25seSBpbmplY3Q/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBCdW5kbGVyT3B0aW9ucy5ydW5CdW5kbGVUYXNrXG4gKi9cbmV4cG9ydCBlbnVtIFJ1bkJ1bmRsZVRhc2sge1xuICAvKipcbiAgICogRG9uJ3QgYnVuZGxlIGF1dG9tYXRpY2FsbHkgYXMgcGFydCBvZiB0aGUgYnVpbGQuXG4gICAqL1xuICBNQU5VQUwgPSBcIm1hbnVhbFwiLFxuICAvKipcbiAgICogQnVuZGxlIGF1dG9tYXRpY2FsbHkgYmVmb3JlIGNvbXBpbGF0aW9uLlxuICAgKi9cbiAgUFJFX0NPTVBJTEUgPSBcInByZV9jb21waWxlXCIsXG4gIC8qKlxuICAgKiBCdW5kbGUgYXV0b21hdGljYWxseSBhZnRlciBjb21waWxhdGlvbi4gVGhpcyBpcyB1c2VmdWwgaWYgeW91IHdhbnQgdG9cbiAgICogYnVuZGxlIHRoZSBjb21waWxlZCByZXN1bHRzLlxuICAgKlxuICAgKiBUaHVzIHdpbGwgcnVuIGNvbXBpbGF0aW9uIHRhc2tzICh1c2luZyB0c2MsIGV0Yy4pIGJlZm9yZSBydW5uaW5nIGZpbGVcbiAgICogdGhyb3VnaCBidW5kbGluZyBzdGVwLlxuICAgKlxuICAgKiBUaGlzIGlzIG9ubHkgcmVxdWlyZWQgdW5sZXNzIHlvdSBhcmUgdXNpbmcgbmV3IGV4cGVyaW1lbnRhbCBmZWF0dXJlcyB0aGF0XG4gICAqIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGBlc2J1aWxkYCBidXQgYXJlIHN1cHBvcnRlZCBieSB0eXBlc2NyaXB0J3MgYHRzY2BcbiAgICogY29tcGlsZXIuIE9uZSBleGFtcGxlIG9mIHN1Y2ggZmVhdHVyZSBpcyBgZW1pdERlY29yYXRvck1ldGFkYXRhYC5cbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBJbiBhIFR5cGVTY3JpcHQgcHJvamVjdCB3aXRoIG91dHB1dCBjb25maWd1cmVkXG4gICAqIC8vIHRvIGdvIHRvIHRoZSBcImxpYlwiIGRpcmVjdG9yeTpcbiAgICogY29uc3QgcHJvamVjdCA9IG5ldyBUeXBlU2NyaXB0UHJvamVjdCh7XG4gICAqICAgbmFtZTogXCJ0ZXN0XCIsXG4gICAqICAgdHNjb25maWc6IHtcbiAgICogICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgKiAgICAgICBvdXREaXI6IFwibGliXCIsXG4gICAqICAgICB9LFxuICAgKiAgIH0sXG4gICAqICAgYnVuZGxlck9wdGlvbnM6IHtcbiAgICogICAgIC8vIGVuc3VyZSB3ZSBjb21waWxlIHdpdGggYHRzY2AgYmVmb3JlIGJ1bmRsaW5nXG4gICAqICAgICBydW5CdW5kbGVUYXNrOiBSdW5CdW5kbGVUYXNrLlBPU1RfQ09NUElMRSxcbiAgICogICB9LFxuICAgKiB9KTtcbiAgICpcbiAgICogLy8gVGVsbCB0aGUgYnVuZGxlciB0byBidW5kbGUgdGhlIGNvbXBpbGVkIHJlc3VsdHMgKGZyb20gdGhlIFwibGliXCIgZGlyZWN0b3J5KVxuICAgKiBwcm9qZWN0LmJ1bmRsZXIuYWRkQnVuZGxlKFwiLi9saWIvaW5kZXguanNcIiwge1xuICAgKiAgIHBsYXRmb3JtOiBcIm5vZGVcIixcbiAgICogICB0YXJnZXQ6IFwibm9kZTIyXCIsXG4gICAqICAgc291cmNlbWFwOiBmYWxzZSxcbiAgICogICBmb3JtYXQ6IFwiZXNtXCIsXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICoqL1xuICBQT1NUX0NPTVBJTEUgPSBcInBvc3RfY29tcGlsZVwiLFxufVxuXG4vKipcbiAqIFNvdXJjZU1hcCBtb2RlIGZvciBlc2J1aWxkXG4gKiBAc2VlIGh0dHBzOi8vZXNidWlsZC5naXRodWIuaW8vYXBpLyNzb3VyY2VtYXBcbiAqL1xuZXhwb3J0IGVudW0gU291cmNlTWFwTW9kZSB7XG4gIC8qKlxuICAgKiBEZWZhdWx0IHNvdXJjZU1hcCBtb2RlIC0gd2lsbCBnZW5lcmF0ZSBhIC5qcy5tYXAgZmlsZSBhbG9uZ3NpZGUgYW55IGdlbmVyYXRlZCAuanMgZmlsZSBhbmQgYWRkIGEgc3BlY2lhbCAvLyMgc291cmNlTWFwcGluZ1VSTD1cbiAgICogY29tbWVudCB0byB0aGUgYm90dG9tIG9mIHRoZSAuanMgZmlsZSBwb2ludGluZyB0byB0aGUgLmpzLm1hcCBmaWxlXG4gICAqL1xuICBERUZBVUxUID0gXCJkZWZhdWx0XCIsXG4gIC8qKlxuICAgKiAgRXh0ZXJuYWwgc291cmNlTWFwIG1vZGUgLSBJZiB5b3Ugd2FudCB0byBvbWl0IHRoZSBzcGVjaWFsIC8vIyBzb3VyY2VNYXBwaW5nVVJMPSBjb21tZW50IGZyb20gdGhlIGdlbmVyYXRlZCAuanMgZmlsZSBidXQgeW91IHN0aWxsXG4gICAqICB3YW50IHRvIGdlbmVyYXRlIHRoZSAuanMubWFwIGZpbGVzXG4gICAqL1xuICBFWFRFUk5BTCA9IFwiZXh0ZXJuYWxcIixcbiAgLyoqXG4gICAqIElubGluZSBzb3VyY2VNYXAgbW9kZSAtIElmIHlvdSB3YW50IHRvIGluc2VydCB0aGUgZW50aXJlIHNvdXJjZSBtYXAgaW50byB0aGUgLmpzIGZpbGUgaW5zdGVhZCBvZiBnZW5lcmF0aW5nIGEgc2VwYXJhdGUgLmpzLm1hcCBmaWxlXG4gICAqL1xuICBJTkxJTkUgPSBcImlubGluZVwiLFxuICAvKipcbiAgICogQm90aCBzb3VyY2VNYXAgbW9kZSAtIElmIHlvdSB3YW50IHRvIGhhdmUgdGhlIGVmZmVjdCBvZiBib3RoIGlubGluZSBhbmQgZXh0ZXJuYWwgc2ltdWx0YW5lb3VzbHlcbiAgICovXG4gIEJPVEggPSBcImJvdGhcIixcbn1cblxuLyoqXG4gKiBDaGFyc2V0IGZvciBlc2J1aWxkJ3Mgb3V0cHV0XG4gKi9cbmV4cG9ydCBlbnVtIENoYXJzZXQge1xuICAvKipcbiAgICogQVNDSUlcbiAgICpcbiAgICogQW55IG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkIHVzaW5nIGJhY2tzbGFzaCBlc2NhcGUgc2VxdWVuY2VzXG4gICAqL1xuICBBU0NJSSA9IFwiYXNjaWlcIixcblxuICAvKipcbiAgICogVVRGLThcbiAgICpcbiAgICogS2VlcCBvcmlnaW5hbCBjaGFyYWN0ZXJzIHdpdGhvdXQgdXNpbmcgZXNjYXBlIHNlcXVlbmNlc1xuICAgKi9cbiAgVVRGOCA9IFwidXRmOFwiLFxufVxuXG4vKipcbiAqIExvZyBsZXZlbHMgZm9yIGVzYnVpbGQgYW5kIHBhY2thZ2UgbWFuYWdlcnMnIGluc3RhbGwgY29tbWFuZHMuXG4gKi9cbmV4cG9ydCBlbnVtIEJ1bmRsZUxvZ0xldmVsIHtcbiAgLyoqIFNob3cgZXZlcnl0aGluZyAqL1xuICBWRVJCT1NFID0gXCJ2ZXJib3NlXCIsXG4gIC8qKiBTaG93IGV2ZXJ5dGhpbmcgZnJvbSBpbmZvIGFuZCBzb21lIGFkZGl0aW9uYWwgbWVzc2FnZXMgZm9yIGRlYnVnZ2luZyAqL1xuICBERUJVRyA9IFwiZGVidWdcIixcbiAgLyoqIFNob3cgd2FybmluZ3MsIGVycm9ycywgYW5kIGFuIG91dHB1dCBmaWxlIHN1bW1hcnkgKi9cbiAgSU5GTyA9IFwiaW5mb1wiLFxuICAvKiogU2hvdyB3YXJuaW5ncyBhbmQgZXJyb3JzICovXG4gIFdBUk5JTkcgPSBcIndhcm5pbmdcIixcbiAgLyoqIFNob3cgZXJyb3JzIG9ubHkgKi9cbiAgRVJST1IgPSBcImVycm9yXCIsXG4gIC8qKiBTaG93IG5vdGhpbmcgKi9cbiAgU0lMRU5UID0gXCJzaWxlbnRcIixcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGBhZGRCdW5kbGVgIHNob3VsZCBwYXNzIGAtLXBhY2thZ2VzPWJ1bmRsZWAuXG4gKlxuICogZXNidWlsZCAwLjIyLjAgc3RvcHBlZCBpbmNsdWRpbmcgYG5vZGVfbW9kdWxlc2AgaW4gYnVuZGxlcyB1bmxlc3MgdGhpcyBmbGFnXG4gKiBpcyBzZXQuIFRoZSBmbGFnIGlzIGFsd2F5cyBwYXNzZWQgc28gdGhhdCBjb250cmFjdCBob2xkcy4gQW4gYGVzYnVpbGRBcmdzYFxuICoga2V5IG9mIGAtLXBhY2thZ2VzYCBvciBgLS1wYWNrYWdlcz0uLi5gIGlzIHRoZSBjYWxsZXIncyBvdmVycmlkZSwgaW5jbHVkaW5nXG4gKiBhIGBmYWxzZWAgdmFsdWUgdGhhdCB0aGUgYXJndiBsb29wIHdvdWxkIG90aGVyd2lzZSBkcm9wLlxuICovXG5mdW5jdGlvbiBzaG91bGRQYXNzUGFja2FnZXNCdW5kbGUoXG4gIGVzYnVpbGRBcmdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IGJvb2xlYW4gfSB8IHVuZGVmaW5lZCxcbik6IGJvb2xlYW4ge1xuICBpZiAoZXNidWlsZEFyZ3MpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhlc2J1aWxkQXJncykpIHtcbiAgICAgIGlmIChrZXkgPT09IFwiLS1wYWNrYWdlc1wiIHx8IGtleS5zdGFydHNXaXRoKFwiLS1wYWNrYWdlcz1cIikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuIl19
|
package/lib/javascript/eslint.js
CHANGED
|
@@ -10,7 +10,7 @@ const yaml_1 = require("../yaml");
|
|
|
10
10
|
* Represents eslint configuration.
|
|
11
11
|
*/
|
|
12
12
|
class Eslint extends component_1.Component {
|
|
13
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Eslint", version: "0.104.
|
|
13
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Eslint", version: "0.104.3" };
|
|
14
14
|
/**
|
|
15
15
|
* Returns the singleton Eslint component of a project or undefined if there is none.
|
|
16
16
|
*/
|
package/lib/javascript/jest.js
CHANGED
|
@@ -45,7 +45,7 @@ const DEFAULT_TEST_REPORTS_DIR = "test-reports";
|
|
|
45
45
|
class Transform {
|
|
46
46
|
name;
|
|
47
47
|
options;
|
|
48
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Transform", version: "0.104.
|
|
48
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Transform", version: "0.104.3" };
|
|
49
49
|
constructor(name, options) {
|
|
50
50
|
this.name = name;
|
|
51
51
|
this.options = options;
|
|
@@ -65,7 +65,7 @@ exports.Transform = Transform;
|
|
|
65
65
|
class WatchPlugin {
|
|
66
66
|
name;
|
|
67
67
|
options;
|
|
68
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.WatchPlugin", version: "0.104.
|
|
68
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.WatchPlugin", version: "0.104.3" };
|
|
69
69
|
constructor(name, options) {
|
|
70
70
|
this.name = name;
|
|
71
71
|
this.options = options;
|
|
@@ -96,7 +96,7 @@ var UpdateSnapshot;
|
|
|
96
96
|
class JestReporter {
|
|
97
97
|
name;
|
|
98
98
|
options;
|
|
99
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.JestReporter", version: "0.104.
|
|
99
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.JestReporter", version: "0.104.3" };
|
|
100
100
|
constructor(name, options) {
|
|
101
101
|
this.name = name;
|
|
102
102
|
this.options = options;
|
|
@@ -122,7 +122,7 @@ exports.JestReporter = JestReporter;
|
|
|
122
122
|
*
|
|
123
123
|
*/
|
|
124
124
|
class Jest extends component_1.Component {
|
|
125
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Jest", version: "0.104.
|
|
125
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Jest", version: "0.104.3" };
|
|
126
126
|
/**
|
|
127
127
|
* Returns the singleton Jest component of a project or undefined if there is none.
|
|
128
128
|
*/
|
|
@@ -8,7 +8,7 @@ const dependencies_1 = require("../dependencies");
|
|
|
8
8
|
* Enforces allowed licenses used by dependencies.
|
|
9
9
|
*/
|
|
10
10
|
class LicenseChecker extends component_1.Component {
|
|
11
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.LicenseChecker", version: "0.104.
|
|
11
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.LicenseChecker", version: "0.104.3" };
|
|
12
12
|
task;
|
|
13
13
|
constructor(scope, options) {
|
|
14
14
|
const taskName = options.taskName ?? "check-licenses";
|
|
@@ -12,7 +12,7 @@ const node_config_1 = require("./node-config");
|
|
|
12
12
|
* @see https://nodejs.org/api/cli.html#configuration-via-nodeconfig
|
|
13
13
|
*/
|
|
14
14
|
class NodeConfigFile extends component_1.Component {
|
|
15
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.NodeConfigFile", version: "0.104.
|
|
15
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.NodeConfigFile", version: "0.104.3" };
|
|
16
16
|
/**
|
|
17
17
|
* Returns the `NodeConfigFile` instance associated with a project or
|
|
18
18
|
* `undefined` if there is none.
|