@taimos/projen 0.1.78 → 0.1.79

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.
@@ -32,7 +32,7 @@ var MonorepoAmplifyFramework;
32
32
  * @pjid taimos-monorepo
33
33
  */
34
34
  class MonorepoProject extends projen_1.typescript.TypeScriptProject {
35
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@taimos/projen.MonorepoProject", version: "0.1.78" };
35
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@taimos/projen.MonorepoProject", version: "0.1.79" };
36
36
  /** The generated `pnpm-workspace.yaml`. */
37
37
  workspaceFile;
38
38
  /** The unified PR build workflow. */
@@ -43,6 +43,8 @@ class MonorepoProject extends projen_1.typescript.TypeScriptProject {
43
43
  assignApprover;
44
44
  /** The production release workflow, if enabled. */
45
45
  productionRelease;
46
+ /** The Amplify deploy workflows, when `amplifyDeployOptions` is set. */
47
+ amplifyDeploy;
46
48
  /** The default release branch (promoted by the production release workflow). */
47
49
  defaultReleaseBranch;
48
50
  constructor(options) {
@@ -132,6 +134,9 @@ class MonorepoProject extends projen_1.typescript.TypeScriptProject {
132
134
  });
133
135
  }
134
136
  // Manual production release — promotes a branch to the production branch.
137
+ if (options.amplifyDeployOptions) {
138
+ this.amplifyDeploy = new components_1.GitHubAmplifyDeploy(this, options.amplifyDeployOptions);
139
+ }
135
140
  if (options.productionRelease ?? false) {
136
141
  this.productionRelease = new components_1.GitHubProductionRelease(this, options.productionReleaseOptions);
137
142
  }
@@ -252,4 +257,4 @@ class MonorepoProject extends projen_1.typescript.TypeScriptProject {
252
257
  }
253
258
  }
254
259
  exports.MonorepoProject = MonorepoProject;
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvamVjdHMvbW9ub3JlcG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLG1DQUFrRTtBQUNsRSx1REFBd0Q7QUFDeEQsOENBQXdGO0FBRXhGOzs7OztHQUtHO0FBQ0gsSUFBWSx3QkFLWDtBQUxELFdBQVksd0JBQXdCO0lBQ2xDLDZFQUE2RTtJQUM3RSw2Q0FBaUIsQ0FBQTtJQUNqQiwyR0FBMkc7SUFDM0csK0NBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUxXLHdCQUF3Qix3Q0FBeEIsd0JBQXdCLFFBS25DO0FBa09EOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxtQkFBVSxDQUFDLGlCQUFpQjs7SUFFL0QsMkNBQTJDO0lBQzNCLGFBQWEsQ0FBVztJQUV4QyxxQ0FBcUM7SUFDckIsZUFBZSxDQUF3QjtJQUV2RCx3RUFBd0U7SUFDeEQsV0FBVyxDQUFZO0lBRXZDLDhDQUE4QztJQUM5QixjQUFjLENBQXdCO0lBRXRELG1EQUFtRDtJQUNuQyxpQkFBaUIsQ0FBMkI7SUFFNUQsZ0ZBQWdGO0lBQ2hFLG9CQUFvQixDQUFTO0lBRTdDLFlBQVksT0FBK0I7UUFDekMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixJQUFJLFNBQVMsQ0FBQztRQUU5RCw0RUFBNEU7UUFDNUUsMEVBQTBFO1FBQzFFLDBDQUEwQztRQUMxQyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1FBQzFDLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQyxhQUFhLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBRXBHLEtBQUssQ0FBQztZQUNKLFFBQVEsRUFBRSxLQUFLO1lBQ2YsT0FBTyxFQUFFLEtBQUs7WUFDZCxXQUFXLEVBQUUsS0FBSztZQUNsQixxRUFBcUU7WUFDckUsSUFBSSxFQUFFLEtBQUs7WUFDWCxNQUFNLEVBQUUsS0FBSztZQUNiLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLDBFQUEwRTtZQUMxRSxhQUFhLEVBQUUsS0FBSztZQUNwQixHQUFHLE9BQU87WUFDVixvREFBb0Q7WUFDcEQsY0FBYyxFQUFFLG1CQUFVLENBQUMsa0JBQWtCLENBQUMsSUFBSTtZQUNsRCxXQUFXO1lBQ1gsMkVBQTJFO1lBQzNFLDBFQUEwRTtZQUMxRSx1RUFBdUU7WUFDdkUsdUNBQXVDO1lBQ3ZDLFlBQVksRUFBRSxhQUFhO1lBQzNCLFdBQVcsRUFBRTtnQkFDWCxHQUFHLE9BQU8sQ0FBQyxXQUFXO2dCQUN0QixvQkFBb0IsRUFBRTtvQkFDcEIsaUVBQWlFO29CQUNqRSxxRUFBcUU7b0JBQ3JFLHVFQUF1RTtvQkFDdkUscUVBQXFFO29CQUNyRSwyREFBMkQ7b0JBQzNELFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQ3hFLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxJQUFJLENBQUMsWUFBWSxDQUFDO29CQUN2QyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsaUJBQWlCLElBQUksSUFBSSxFQUFFLG9CQUFvQjtvQkFDckUsd0JBQXdCLEVBQUUsRUFBRSxDQUFDLHdCQUF3QixJQUFJO3dCQUN2RCxrQkFBa0I7d0JBQ2xCLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3FCQUNqQjtvQkFDRCxHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDNUYsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLG9CQUFvQjtpQkFDN0M7YUFDRjtZQUNELFVBQVUsRUFBRSxJQUFJO1lBQ2hCLE1BQU0sRUFBRSxJQUFJO1lBQ1osYUFBYSxFQUFFO2dCQUNiLGlCQUFpQixFQUFFLGVBQU0sQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3JELE9BQU8sRUFBRSxLQUFLO2dCQUNkLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixHQUFHLE9BQU8sQ0FBQyxhQUFhO2dCQUN4QixpQkFBaUIsRUFBRTtvQkFDakIsU0FBUyxFQUFFLElBQUk7b0JBQ2YsR0FBRyxPQUFPLENBQUMsYUFBYSxFQUFFLGlCQUFpQjtpQkFDNUM7Z0JBQ0Qsc0JBQXNCLEVBQUU7b0JBQ3RCLEdBQUcsT0FBTyxDQUFDLGFBQWEsRUFBRSxzQkFBc0I7b0JBQ2hELG9CQUFvQixFQUFFO3dCQUNwQixHQUFHLE9BQU8sQ0FBQyxhQUFhLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CO3dCQUN0RSxzREFBc0Q7d0JBQ3RELEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDO3FCQUN0RDtpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLGdCQUFnQjtnQkFDaEIsa0JBQWtCO2dCQUNsQixHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUM3RCxHQUFHLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRTthQUN6QjtTQUNGLENBQUMsQ0FBQztRQUVILHVFQUF1RTtRQUN2RSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFdkMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsSUFBSSxNQUFNLENBQUM7UUFFbkUsdUJBQXVCO1FBQ3ZCLElBQUksT0FBTyxDQUFDLGNBQWMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksdUNBQW9CLENBQUMsSUFBSSxFQUFFO2dCQUNuRCxlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWUsSUFBSTtvQkFDMUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFO29CQUMvQyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUU7aUJBQ2hEO2dCQUNELGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUM7YUFDdkUsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELDBFQUEwRTtRQUMxRSxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxvQ0FBdUIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDL0YsQ0FBQztRQUVELDRFQUE0RTtRQUM1RSx1REFBdUQ7UUFDdkQsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFN0MsMkVBQTJFO1FBQzNFLDZFQUE2RTtRQUM3RSxtRUFBbUU7UUFDbkUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLENBQWEsQ0FBQztRQUUvRSxzREFBc0Q7UUFDdEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBRSxDQUFDO1FBQ3hELE9BQU8sQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDMUQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUN4RCxPQUFPLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBRTFELDRFQUE0RTtRQUM1RSwrQkFBK0I7UUFDL0IsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUM7UUFDaEQsTUFBTSxVQUFVLEdBQStCO1lBQzdDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUU7WUFDakQsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEVBQUU7WUFDcEY7Z0JBQ0UsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLElBQUksRUFBRSx1QkFBdUI7Z0JBQzdCLElBQUksRUFBRSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTthQUN2RDtZQUNELEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsZ0NBQWdDLEVBQUU7WUFDMUQsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxtQkFBbUIsRUFBRTtTQUM1QyxDQUFDO1FBQ0YsSUFBSSxPQUFPLENBQUMsZUFBZSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3BDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUNELG1FQUFtRTtRQUNuRSxzRUFBc0U7UUFDdEUsd0NBQXdDO1FBQ3hDLE1BQU0saUJBQWlCLEdBQUcsRUFBRSxDQUFDLFFBQVEsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hELE1BQU0sVUFBVSxHQUFhO1lBQzNCLGtDQUFrQztZQUNsQyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztZQUM5Qyw2Q0FBNkM7WUFDN0MsZ0JBQWdCO1lBQ2hCLHFCQUFxQjtZQUNyQixpREFBaUQ7WUFDakQsY0FBYztZQUNkLG9EQUFvRDtZQUNwRCxjQUFjO1lBQ2QsY0FBYztZQUNkLFlBQVk7WUFDWixtQ0FBbUM7WUFDbkMsZUFBZTtZQUNmLGlCQUFpQjtZQUNqQiw2QkFBNkI7WUFDN0IsNkJBQTZCO1lBQzdCLDZCQUE2QjtZQUM3QixhQUFhO1lBQ2IsaUJBQWlCO1NBQ2xCLENBQUM7UUFFRixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksZUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ3RCLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7WUFDbEMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtZQUMvQyxnQkFBZ0IsRUFBRSxFQUFFO1NBQ3JCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtZQUNuQyxNQUFNLEVBQUUsQ0FBQyxlQUFlLENBQUM7WUFDekIsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLGVBQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRTtZQUM5RCxLQUFLLEVBQUUsVUFBVTtTQUNsQixDQUFDLENBQUM7UUFFSCwyRUFBMkU7UUFDM0Usd0VBQXdFO1FBQ3hFLHlEQUF5RDtRQUN6RCxJQUFJLE9BQU8sQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGlCQUFRLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtnQkFDbkQsR0FBRyxFQUFFO29CQUNILE9BQU8sRUFBRSxDQUFDO29CQUNWLFlBQVksRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUMzRTthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsR0FBdUI7UUFDOUMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLFNBQVMsS0FBSyx3QkFBd0IsQ0FBQyxPQUFPLENBQUM7UUFDbkUsd0VBQXdFO1FBQ3hFLHdFQUF3RTtRQUN4RSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsYUFBYSxJQUFJLEdBQUcsR0FBRyxDQUFDLFdBQVcsS0FBSyxDQUFDO1FBQzVELE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxjQUFjO2VBQ3BDLGtFQUFrRSxNQUFNLEdBQUcsQ0FBQztRQUNqRixNQUFNLFFBQVEsR0FBRztZQUNmLGlCQUFpQjtZQUNqQixjQUFjO1lBQ2QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUM7U0FDMUUsQ0FBQztRQUNGLHVFQUF1RTtRQUN2RSxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsWUFBWSxJQUFJLENBQUMsT0FBTztZQUMvQyxDQUFDLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxXQUFXLDBCQUEwQjtZQUM1RCxDQUFDLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxXQUFXLFlBQVksQ0FBQyxDQUFDO1FBQ2xELE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLE9BQU87WUFDekQsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sU0FBUyxHQUFHLENBQUMsV0FBVyxVQUFVO1lBQ2xELENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxVQUFVLElBQUk7WUFDbkMsbUJBQW1CO1lBQ25CLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxtQkFBbUI7U0FDbkYsQ0FBQztRQUNGLE9BQU87WUFDTCxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87WUFDcEIsUUFBUSxFQUFFO2dCQUNSLDZEQUE2RDtnQkFDN0QsaURBQWlEO2dCQUNqRCxTQUFTLEVBQUUsR0FBRztnQkFDZCxNQUFNLEVBQUU7b0JBQ04sUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRTtvQkFDaEMsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUU7aUJBQ3BDO2dCQUNELFNBQVMsRUFBRSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDN0MsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTthQUM3QjtTQUNGLENBQUM7SUFDSixDQUFDOztBQTdPSCwwQ0E4T0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnaXRodWIsIGphdmFzY3JpcHQsIHR5cGVzY3JpcHQsIFlhbWxGaWxlIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IEdpdEh1YkFzc2lnbkFwcHJvdmVyIH0gZnJvbSAncHJvamVuLXBpcGVsaW5lcyc7XG5pbXBvcnQgeyBHaXRIdWJQcm9kdWN0aW9uUmVsZWFzZSwgR2l0SHViUHJvZHVjdGlvblJlbGVhc2VPcHRpb25zIH0gZnJvbSAnLi4vY29tcG9uZW50cyc7XG5cbi8qKlxuICogVGhlIGZyb250ZW5kIGZyYW1ld29yayBhbiBBbXBsaWZ5IEhvc3RpbmcgYXBwbGljYXRpb24gaXMgYnVpbHQgd2l0aC5cbiAqXG4gKiBTZWxlY3RzIHNlbnNpYmxlIGRlZmF1bHRzIGZvciB0aGUgYnVpbGQgY29tbWFuZCwgYXJ0aWZhY3QgZGlyZWN0b3J5IGFuZFxuICogY2FjaGUgcGF0aHMgaW4gdGhlIGdlbmVyYXRlZCBgYW1wbGlmeS55bWxgLlxuICovXG5leHBvcnQgZW51bSBNb25vcmVwb0FtcGxpZnlGcmFtZXdvcmsge1xuICAvKiogQSBOZXh0LmpzIGFwcCDigJQgYXJ0aWZhY3RzIGluIGA8YXBwUm9vdD4vLm5leHRgLCBidWlsdCB2aWEgYHJ1biBidWlsZGAuICovXG4gIE5FWFRKUyA9ICduZXh0anMnLFxuICAvKiogQW4gQW5ndWxhciBhcHAg4oCUIGFydGlmYWN0cyBpbiBgPGFwcFJvb3Q+L2Rpc3QvPGZpbHRlcj4vYnJvd3NlcmAsIGJ1aWx0IHZpYSBgcnVuIGJ1aWxkOiR7QlVJTERfRU5WfWAuICovXG4gIEFOR1VMQVIgPSAnYW5ndWxhcicsXG59XG5cbi8qKlxuICogT25lIEFXUyBBbXBsaWZ5IEhvc3RpbmcgYXBwbGljYXRpb24gc2VydmVkIGZyb20gYSB3b3Jrc3BhY2UgcGFja2FnZS5cbiAqXG4gKiBSZW5kZXJzIGEgc2luZ2xlIGVudHJ5IHVuZGVyIGBhcHBsaWNhdGlvbnM6YCBpbiB0aGUgZ2VuZXJhdGVkIGBhbXBsaWZ5LnltbGAuXG4gKiBBbXBsaWZ5IGRvZXMgbm90IGF1dG8tZGV0ZWN0IFBOUE0gd29ya3NwYWNlcywgc28gdGhlIGdlbmVyYXRlZCBidWlsZCBzcGVjXG4gKiBydW5zIGBjb3JlcGFjayBlbmFibGVgICsgYSByb290IGBwbnBtIGluc3RhbGxgIGFuZCBwcmUtYnVpbGRzIGFueSBzaGFyZWRcbiAqIHBhY2thZ2VzIGJlZm9yZSBidWlsZGluZyB0aGUgYXBwIGZyb20gaXRzIGBhcHBSb290YCAoc2VlIEFEUi0wMDAyKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25vcmVwb0FtcGxpZnlBcHAge1xuICAvKipcbiAgICogVGhlIHBhY2thZ2UgcGF0aCB0aGF0IGlzIHRoZSBBbXBsaWZ5IGFwcCByb290LCBlLmcuIGBwYWNrYWdlcy9mcm9udGVuZGAuXG4gICAqL1xuICByZWFkb25seSBhcHBSb290OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmcm9udGVuZCBmcmFtZXdvcmssIHVzZWQgdG8gcGljayBidWlsZC9hcnRpZmFjdC9jYWNoZSBkZWZhdWx0cy5cbiAgICovXG4gIHJlYWRvbmx5IGZyYW1ld29yazogTW9ub3JlcG9BbXBsaWZ5RnJhbWV3b3JrO1xuXG4gIC8qKlxuICAgKiBUaGUgcG5wbSBwYWNrYWdlIG5hbWUgdG8gYnVpbGQsIHVzZWQgYXMgdGhlIGAtLWZpbHRlcmAgdGFyZ2V0LFxuICAgKiBlLmcuIGBkZXBsb3ltb24tZnJvbnRlbmRgIG9yIGByYWRiYWxsLWRpZ2l0YWwtcG9ydGFsYC5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkRmlsdGVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdvcmtzcGFjZSBwYWNrYWdlcyB0byBidWlsZCBiZWZvcmUgdGhlIGFwcCwgYXMgYC0tZmlsdGVyYCB0YXJnZXRzLlxuICAgKlxuICAgKiBUeXBpY2FsbHkgdGhlIHNoYXJlZCBBUEkgcGFja2FnZSB0aGUgYXBwIGNvbnN1bWVzIHZpYSBgd29ya3NwYWNlOipgLFxuICAgKiBlLmcuIGBbJ0B0YWltb3MvZGVwbG95bW9uLWFwaSddYC5cbiAgICpcbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IHByZUJ1aWxkRmlsdGVycz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgYnVpbGQgY29tbWFuZCBydW4gaW4gdGhlIEFtcGxpZnkgYGJ1aWxkYCBwaGFzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBgcG5wbSAtLWZpbHRlciA8YnVpbGRGaWx0ZXI+IHJ1biBidWlsZGAgZm9yIE5leHQuanMsIG9yXG4gICAqIGBwbnBtIC0tZmlsdGVyIDxidWlsZEZpbHRlcj4gcnVuIGJ1aWxkOiR7QlVJTERfRU5WfWAgZm9yIEFuZ3VsYXIuXG4gICAqL1xuICByZWFkb25seSBidWlsZENvbW1hbmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRoZSBhcnRpZmFjdCBiYXNlIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBgPGFwcFJvb3Q+Ly5uZXh0YCBmb3IgTmV4dC5qcywgb3JcbiAgICogYDxhcHBSb290Pi9kaXN0LzxidWlsZEZpbHRlcj4vYnJvd3NlcmAgZm9yIEFuZ3VsYXIuXG4gICAqL1xuICByZWFkb25seSBhcnRpZmFjdEJhc2VEaXJlY3Rvcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRoZSBBbXBsaWZ5IGJ1aWxkIGNhY2hlIHBhdGhzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGBub2RlX21vZHVsZXMvKipgIHBsdXMgdGhlIGZyYW1ld29yayBidWlsZCBjYWNoZVxuICAgKiAoYDxhcHBSb290Pi8ubmV4dC9jYWNoZS8qKmAgb3IgYDxhcHBSb290Pi8uYW5ndWxhci9jYWNoZS8qKmApLlxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVQYXRocz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBwbnBtIGAtLWZpbHRlcmAgZXhwcmVzc2lvbiBmb3IgdGhlIHNjb3BlZCBpbnN0YWxsIGluIHRoZSBwcmVCdWlsZCBwaGFzZS5cbiAgICpcbiAgICogVGhlIHRyYWlsaW5nIGAuLi5gIHN5bnRheCBwdWxscyBpbiB0aGUgYXBwJ3MgdHJhbnNpdGl2ZSB3b3Jrc3BhY2VcbiAgICogZGVwZW5kZW5jaWVzIChlLmcuIGEgc2hhcmVkIEFQSSBwYWNrYWdlKSBidXQgZXhjbHVkZXMgdW5yZWxhdGVkIHBhY2thZ2VzLFxuICAgKiBhdm9pZGluZyBjb25jdXJyZW50IGBwcm9qZW4vbm9kZV9tb2R1bGVzYCByZW5hbWUgcmFjZXMgdW5kZXIgdGhlIGhvaXN0ZWRcbiAgICogbGlua2VyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJHtidWlsZEZpbHRlcn0uLi5gXG4gICAqL1xuICByZWFkb25seSBpbnN0YWxsRmlsdGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGdWxsIG92ZXJyaWRlIG9mIHRoZSBpbnN0YWxsIGNvbW1hbmQgaW4gdGhlIHByZUJ1aWxkIHBoYXNlLlxuICAgKlxuICAgKiBXaGVuIHNldCwgYGluc3RhbGxGaWx0ZXJgIGlzIGlnbm9yZWQgYW5kIHRoaXMgc3RyaW5nIGlzIGVtaXR0ZWQgdmVyYmF0aW0uXG4gICAqIFVzZSB0aGlzIGFzIGFuIGVzY2FwZSBoYXRjaCB3aGVuIHRoZSBkZWZhdWx0IHNjb3BlZCBpbnN0YWxsIGlzIGluc3VmZmljaWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBgcG5wbSBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlIC0tbm9kZS1saW5rZXIgaG9pc3RlZCAtLWZpbHRlciBcIjxpbnN0YWxsRmlsdGVyPlwiYFxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFsbENvbW1hbmQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUE5QTSB3b3Jrc3BhY2UgdHVuaW5nIGZvciB0aGUgZ2VuZXJhdGVkIGBwbnBtLXdvcmtzcGFjZS55YW1sYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25vcmVwb1dvcmtzcGFjZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHdvcmtzcGFjZSBwYWNrYWdlIGdsb2JzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbJ3BhY2thZ2VzLyonXVxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVmVyc2lvbiBvdmVycmlkZXMgZm9yY2VkIGFjcm9zcyB0aGUgd2hvbGUgd29ya3NwYWNlXG4gICAqICh0aGUgYG92ZXJyaWRlczpgIGZpZWxkKS4gT21pdHRlZCBmcm9tIHRoZSBmaWxlIHdoZW4gZW1wdHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICByZWFkb25seSBvdmVycmlkZXM/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRGVwZW5kZW5jaWVzIGFsbG93ZWQgdG8gcnVuIGluc3RhbGwvYnVpbGQgc2NyaXB0cy4gcG5wbSA+PSAxMCBibG9ja3MgdGhlc2VcbiAgICogYnkgZGVmYXVsdC4gVGhlIGxpc3QgcG9wdWxhdGVzIGJvdGggYGFsbG93QnVpbGRzYCBhbmRcbiAgICogYG9ubHlCdWlsdERlcGVuZGVuY2llc2Agc28gcG5wbSBkb2VzIG5vdCB0cmVhdCBgbm9kZV9tb2R1bGVzYCBhcyBzdGFsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgWydAYXdzLWFtcGxpZnkvY2xpJywgJ2VzYnVpbGQnLCAnc2hhcnAnLCAndW5ycy1yZXNvbHZlciddXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkQnVpbGRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gYWdlIGluIG1pbnV0ZXMgYSBwdWJsaXNoZWQgdmVyc2lvbiBtdXN0IGhhdmUgYmVmb3JlIGl0IG1heSBiZVxuICAgKiBpbnN0YWxsZWQgKGBtaW5pbXVtUmVsZWFzZUFnZWApLlxuICAgKlxuICAgKiBAZGVmYXVsdCAyODgwIC8vIDIgZGF5c1xuICAgKi9cbiAgcmVhZG9ubHkgbWluaW11bVJlbGVhc2VBZ2U/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFBhY2thZ2VzIGV4ZW1wdCBmcm9tIGBtaW5pbXVtUmVsZWFzZUFnZWAgc28gb3VyIG93biB0b29saW5nIGNhbiB1cGRhdGVcbiAgICogd2l0aG91dCB0aGUgY29vbGRvd24uXG4gICAqXG4gICAqIEBkZWZhdWx0IFsncHJvamVuLXBpcGVsaW5lcycsICdjZGstc2VydmVybGVzcycsICdAdGFpbW9zL3Byb2plbiddXG4gICAqL1xuICByZWFkb25seSBtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGU/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBPbmUgYXV0aG9yLXRvLWFwcHJvdmVycyByb3V0aW5nIHJ1bGUgZm9yIHRoZSBQUiBhcHByb3ZlciBhc3NpZ25tZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vbm9yZXBvQXBwcm92ZXJNYXBwaW5nIHtcbiAgLyoqXG4gICAqIFRoZSBHaXRIdWIgdXNlcm5hbWUgb3BlbmluZyB0aGUgUFIuXG4gICAqL1xuICByZWFkb25seSBhdXRob3I6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEdpdEh1YiB1c2VybmFtZXMgYXNzaWduZWQgdG8gcmV2aWV3IHdoZW4gYGF1dGhvcmAgb3BlbnMgYSBQUi5cbiAgICovXG4gIHJlYWRvbmx5IGFwcHJvdmVyczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9ub3JlcG9Qcm9qZWN0T3B0aW9ucyBleHRlbmRzIHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBwbnBtIHZlcnNpb24gcGlubmVkIGZvciB0aGUgd29ya3NwYWNlIGFuZCBDSS5cbiAgICpcbiAgICogQGRlZmF1bHQgJzEwLjMzLjAnXG4gICAqL1xuICByZWFkb25seSBwbnBtV29ya3NwYWNlVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIE5vZGUuanMgdmVyc2lvbiB1c2VkIGluIHRoZSBnZW5lcmF0ZWQgYnVpbGQgd29ya2Zsb3cuXG4gICAqXG4gICAqIEBkZWZhdWx0ICcyMidcbiAgICovXG4gIHJlYWRvbmx5IG5vZGVWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQTlBNIHdvcmtzcGFjZSB0dW5pbmcgZm9yIHRoZSBnZW5lcmF0ZWQgYHBucG0td29ya3NwYWNlLnlhbWxgLlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya3NwYWNlT3B0aW9ucz86IE1vbm9yZXBvV29ya3NwYWNlT3B0aW9ucztcblxuICAvKipcbiAgICogV2hldGhlciB0byBhZGQgYGNkay1zZXJ2ZXJsZXNzYCBhcyBhIHdvcmtzcGFjZSBkZXYgZGVwZW5kZW5jeS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNka1NlcnZlcmxlc3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFzc2lnbiBQUiBhcHByb3ZlcnMgdmlhIGBHaXRIdWJBc3NpZ25BcHByb3ZlcmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFzc2lnbkFwcHJvdmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQXV0aG9yLXRvLWFwcHJvdmVycyByb3V0aW5nIGZvciB0aGUgUFIgYXBwcm92ZXIgYXNzaWdubWVudC5cbiAgICogT25seSB1c2VkIHdoZW4gYGFzc2lnbkFwcHJvdmVyYCBpcyBlbmFibGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGhvZWdlcnRuIGFuZCBob2VnZXJtYSByZXZpZXcgZWFjaCBvdGhlclxuICAgKi9cbiAgcmVhZG9ubHkgYXBwcm92ZXJNYXBwaW5nPzogTW9ub3JlcG9BcHByb3Zlck1hcHBpbmdbXTtcblxuICAvKipcbiAgICogQXBwcm92ZXJzIGFzc2lnbmVkIHdoZW4gbm8gYXV0aG9yLXNwZWNpZmljIG1hcHBpbmcgbWF0Y2hlcy5cbiAgICogT25seSB1c2VkIHdoZW4gYGFzc2lnbkFwcHJvdmVyYCBpcyBlbmFibGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbJ2hvZWdlcnRuJywgJ2hvZWdlcm1hJ11cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRBcHByb3ZlcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdW5pZmllZCBidWlsZCB3b3JrZmxvdyBhbHNvIHJ1bnMgYHBucG0gLXIgcnVuIHRlc3RgLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBydW5UZXN0c0luQnVpbGQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBV1MgQW1wbGlmeSBIb3N0aW5nIGFwcGxpY2F0aW9ucy4gV2hlbiBzZXQsIGFuIGBhbXBsaWZ5LnltbGAgaXMgZ2VuZXJhdGVkXG4gICAqIHdpdGggb25lIGVudHJ5IHBlciBhcHAuIFdoZW4gb21pdHRlZCwgbm8gYGFtcGxpZnkueW1sYCBpcyBjcmVhdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgcmVhZG9ubHkgYW1wbGlmeUFwcHM/OiBNb25vcmVwb0FtcGxpZnlBcHBbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhZGQgYSBtYW51YWwgXCJQcm9kdWN0aW9uIFJlbGVhc2VcIiB3b3JrZmxvdyB0aGF0IHByb21vdGVzIGEgYnJhbmNoXG4gICAqIHRvIHRoZSBwcm9kdWN0aW9uIGJyYW5jaCAoc2VlIGBHaXRIdWJQcm9kdWN0aW9uUmVsZWFzZWApLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZHVjdGlvblJlbGVhc2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciB0aGUgcHJvZHVjdGlvbiByZWxlYXNlIHdvcmtmbG93LiBPbmx5IHVzZWQgd2hlblxuICAgKiBgcHJvZHVjdGlvblJlbGVhc2VgIGlzIGVuYWJsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcHJvbW90ZSBgbWFpbmAgdG8gYSBgcHJvZHVjdGlvbmAgYnJhbmNoXG4gICAqL1xuICByZWFkb25seSBwcm9kdWN0aW9uUmVsZWFzZU9wdGlvbnM/OiBHaXRIdWJQcm9kdWN0aW9uUmVsZWFzZU9wdGlvbnM7XG59XG5cbi8qKlxuICogUHJpdmF0ZSBQTlBNLXdvcmtzcGFjZSBtb25vcmVwbyByb290LCBmb2xsb3dpbmcgVGFpbW9zIEFEUi0wMDAyLlxuICpcbiAqIFRoZSByb290IG9ubHkgb3JjaGVzdHJhdGVzIHRoZSB3b3Jrc3BhY2Ug4oCUIGJ1aWxkaW5nLCB0ZXN0aW5nIGFuZCBsaW50aW5nIGFyZVxuICogZGVsZWdhdGVkIHRvIHRoZSB3b3Jrc3BhY2UgcGFja2FnZXMgdmlhIGBwbnBtIC1yYC4gVGhpcyBwcm9qZWN0IGdlbmVyYXRlcyB0aGVcbiAqIGBwbnBtLXdvcmtzcGFjZS55YW1sYCwgdGhlIHJvb3QgY29udmVuaWVuY2Ugc2NyaXB0cywgYSB1bmlmaWVkIFBSIGJ1aWxkXG4gKiB3b3JrZmxvdyBhbmQgKG9wdGlvbmFsbHkpIGFuIEFtcGxpZnkgSG9zdGluZyBidWlsZCBzcGVjLiBUaGUgcHJvamVuLW1hbmFnZWRcbiAqIHN1Yi1wcm9qZWN0cyAoYXBpLCBiYWNrZW5kLCBpbmZyYSkgYXJlIGFkZGVkIHdpdGggdGhlIGBwYXJlbnRgL2BvdXRkaXJgXG4gKiBwYXR0ZXJuIGluIHRoZSBjb25zdW1pbmcgYC5wcm9qZW5yYy50c2A7IHBsYWluIHdvcmtzcGFjZSBwYWNrYWdlcyAoZS5nLlxuICogTmV4dC5qcyBhcHBzKSBhcmUgcGlja2VkIHVwIGJ5IHRoZSBgcGFja2FnZXMvKmAgZ2xvYi5cbiAqXG4gKiBAcGppZCB0YWltb3MtbW9ub3JlcG9cbiAqL1xuZXhwb3J0IGNsYXNzIE1vbm9yZXBvUHJvamVjdCBleHRlbmRzIHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3Qge1xuXG4gIC8qKiBUaGUgZ2VuZXJhdGVkIGBwbnBtLXdvcmtzcGFjZS55YW1sYC4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHdvcmtzcGFjZUZpbGU6IFlhbWxGaWxlO1xuXG4gIC8qKiBUaGUgdW5pZmllZCBQUiBidWlsZCB3b3JrZmxvdy4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHByQnVpbGRXb3JrZmxvdzogZ2l0aHViLkdpdGh1YldvcmtmbG93O1xuXG4gIC8qKiBUaGUgZ2VuZXJhdGVkIGBhbXBsaWZ5LnltbGAsIGlmIGFueSBBbXBsaWZ5IGFwcHMgd2VyZSBjb25maWd1cmVkLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYW1wbGlmeUZpbGU/OiBZYW1sRmlsZTtcblxuICAvKiogVGhlIFBSIGFwcHJvdmVyIGFzc2lnbm1lbnQsIGlmIGVuYWJsZWQuICovXG4gIHB1YmxpYyByZWFkb25seSBhc3NpZ25BcHByb3Zlcj86IEdpdEh1YkFzc2lnbkFwcHJvdmVyO1xuXG4gIC8qKiBUaGUgcHJvZHVjdGlvbiByZWxlYXNlIHdvcmtmbG93LCBpZiBlbmFibGVkLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvZHVjdGlvblJlbGVhc2U/OiBHaXRIdWJQcm9kdWN0aW9uUmVsZWFzZTtcblxuICAvKiogVGhlIGRlZmF1bHQgcmVsZWFzZSBicmFuY2ggKHByb21vdGVkIGJ5IHRoZSBwcm9kdWN0aW9uIHJlbGVhc2Ugd29ya2Zsb3cpLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdFJlbGVhc2VCcmFuY2g6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBNb25vcmVwb1Byb2plY3RPcHRpb25zKSB7XG4gICAgY29uc3QgcG5wbVZlcnNpb24gPSBvcHRpb25zLnBucG1Xb3Jrc3BhY2VWZXJzaW9uID8/ICcxMC4zMy4wJztcblxuICAgIC8vIFBOUE0gd29ya3NwYWNlIHR1bmluZyDigJQgbWFwcGVkIG9udG8gcHJvamVuJ3MgbmF0aXZlIGBwbnBtLXdvcmtzcGFjZS55YW1sYFxuICAgIC8vIHN1cHBvcnQgKHByb2plbiA+PSAwLjEwMSkgdGhyb3VnaCBgYWxsb3dTY3JpcHRzYCArIGBwbnBtT3B0aW9uc2AgYmVsb3csXG4gICAgLy8gcmF0aGVyIHRoYW4gaGFuZC1yb2xsaW5nIHRoZSBZQU1MIGZpbGUuXG4gICAgY29uc3Qgd3MgPSBvcHRpb25zLndvcmtzcGFjZU9wdGlvbnMgPz8ge307XG4gICAgY29uc3QgYWxsb3dlZEJ1aWxkcyA9IHdzLmFsbG93ZWRCdWlsZHMgPz8gWydAYXdzLWFtcGxpZnkvY2xpJywgJ2VzYnVpbGQnLCAnc2hhcnAnLCAndW5ycy1yZXNvbHZlciddO1xuXG4gICAgc3VwZXIoe1xuICAgICAgbGljZW5zZWQ6IGZhbHNlLFxuICAgICAgcmVsZWFzZTogZmFsc2UsXG4gICAgICBkZXBzVXBncmFkZTogZmFsc2UsXG4gICAgICAvLyBUaGUgcm9vdCBvbmx5IG9yY2hlc3RyYXRlcyB0aGUgd29ya3NwYWNlIOKAlCBubyBhcHAgY29kZSBsaXZlcyBoZXJlLlxuICAgICAgamVzdDogZmFsc2UsXG4gICAgICBlc2xpbnQ6IGZhbHNlLFxuICAgICAgc2FtcGxlQ29kZTogZmFsc2UsXG4gICAgICAvLyBDSSBpcyB0aGUgc2luZ2xlIGhhbmQtcm9sbGVkIHdvcmtmbG93IGJlbG93IHRoYXQgZGVsZWdhdGVzIHRvIHBhY2thZ2VzLlxuICAgICAgYnVpbGRXb3JrZmxvdzogZmFsc2UsXG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgLy8gRm9yY2VkIOKAlCBkZWZpbmluZyB3aGF0IGEgVGFpbW9zIG1vbm9yZXBvIHJvb3QgaXMuXG4gICAgICBwYWNrYWdlTWFuYWdlcjogamF2YXNjcmlwdC5Ob2RlUGFja2FnZU1hbmFnZXIuUE5QTSxcbiAgICAgIHBucG1WZXJzaW9uLFxuICAgICAgLy8gTmF0aXZlIHBucG0td29ya3NwYWNlLnlhbWwgKHByb2plbiA+PSAwLjEwMSkuIGBhbGxvd1NjcmlwdHNgIHJlbmRlcnMgdGhlXG4gICAgICAvLyBidWlsZCBhbGxvd2xpc3QgaW50byBgb25seUJ1aWx0RGVwZW5kZW5jaWVzYDsgdGhlIHJlbWFpbmluZyB0dW5pbmcgbWFwc1xuICAgICAgLy8gb250byBgd29ya3NwYWNlWWFtbE9wdGlvbnNgLiBBbnkgY29uc3VtZXItc3VwcGxpZWQgYHBucG1PcHRpb25zYCBhcmVcbiAgICAgIC8vIG1lcmdlZCBpbiBhbmQgd2luIG92ZXIgb3VyIGRlZmF1bHRzLlxuICAgICAgYWxsb3dTY3JpcHRzOiBhbGxvd2VkQnVpbGRzLFxuICAgICAgcG5wbU9wdGlvbnM6IHtcbiAgICAgICAgLi4ub3B0aW9ucy5wbnBtT3B0aW9ucyxcbiAgICAgICAgd29ya3NwYWNlWWFtbE9wdGlvbnM6IHtcbiAgICAgICAgICAvLyBwbnBtIDExIHJlcGxhY2VkIGBvbmx5QnVpbHREZXBlbmRlbmNpZXNgICh3aGljaCBgYWxsb3dTY3JpcHRzYFxuICAgICAgICAgIC8vIHJlbmRlcnMpIHdpdGggYGFsbG93QnVpbGRzYCwgYW5kIHJlYWRzIG9ubHkgdGhlIGxhdHRlciDigJQgYSBwbnBtIDExXG4gICAgICAgICAgLy8gaW5zdGFsbCBvdGhlcndpc2UgYWJvcnRzIHdpdGggRVJSX1BOUE1fSUdOT1JFRF9CVUlMRFMuIHBucG0gMTAgcmVhZHNcbiAgICAgICAgICAvLyBvbmx5IGBvbmx5QnVpbHREZXBlbmRlbmNpZXNgLiBFbWl0IGJvdGggc28gdGhlIHNhbWUgd29ya3NwYWNlIGZpbGVcbiAgICAgICAgICAvLyB3b3JrcyBvbiBlaXRoZXIsIHdoYXRldmVyIGBwbnBtVmVyc2lvbmAgYSBjb25zdW1lciBwaW5zLlxuICAgICAgICAgIGFsbG93QnVpbGRzOiBPYmplY3QuZnJvbUVudHJpZXMoYWxsb3dlZEJ1aWxkcy5tYXAoKHBrZykgPT4gW3BrZywgdHJ1ZV0pKSxcbiAgICAgICAgICBwYWNrYWdlczogd3MucGFja2FnZXMgPz8gWydwYWNrYWdlcy8qJ10sXG4gICAgICAgICAgbWluaW11bVJlbGVhc2VBZ2U6IHdzLm1pbmltdW1SZWxlYXNlQWdlID8/IDI4ODAsIC8vIDIgZGF5cyBpbiBtaW51dGVzXG4gICAgICAgICAgbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlOiB3cy5taW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGUgPz8gW1xuICAgICAgICAgICAgJ3Byb2plbi1waXBlbGluZXMnLFxuICAgICAgICAgICAgJ2Nkay1zZXJ2ZXJsZXNzJyxcbiAgICAgICAgICAgICdAdGFpbW9zL3Byb2plbicsXG4gICAgICAgICAgXSxcbiAgICAgICAgICAuLi4od3Mub3ZlcnJpZGVzICYmIE9iamVjdC5rZXlzKHdzLm92ZXJyaWRlcykubGVuZ3RoID4gMCA/IHsgb3ZlcnJpZGVzOiB3cy5vdmVycmlkZXMgfSA6IHt9KSxcbiAgICAgICAgICAuLi5vcHRpb25zLnBucG1PcHRpb25zPy53b3Jrc3BhY2VZYW1sT3B0aW9ucyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBwcm9qZW5yY1RzOiB0cnVlLFxuICAgICAgZ2l0aHViOiB0cnVlLFxuICAgICAgZ2l0aHViT3B0aW9uczoge1xuICAgICAgICBwcm9qZW5DcmVkZW50aWFsczogZ2l0aHViLkdpdGh1YkNyZWRlbnRpYWxzLmZyb21BcHAoKSxcbiAgICAgICAgbWVyZ2lmeTogZmFsc2UsXG4gICAgICAgIG1lcmdlUXVldWU6IHRydWUsXG4gICAgICAgIC4uLm9wdGlvbnMuZ2l0aHViT3B0aW9ucyxcbiAgICAgICAgbWVyZ2VRdWV1ZU9wdGlvbnM6IHtcbiAgICAgICAgICBhdXRvUXVldWU6IHRydWUsXG4gICAgICAgICAgLi4ub3B0aW9ucy5naXRodWJPcHRpb25zPy5tZXJnZVF1ZXVlT3B0aW9ucyxcbiAgICAgICAgfSxcbiAgICAgICAgcHVsbFJlcXVlc3RMaW50T3B0aW9uczoge1xuICAgICAgICAgIC4uLm9wdGlvbnMuZ2l0aHViT3B0aW9ucz8ucHVsbFJlcXVlc3RMaW50T3B0aW9ucyxcbiAgICAgICAgICBzZW1hbnRpY1RpdGxlT3B0aW9uczoge1xuICAgICAgICAgICAgLi4ub3B0aW9ucy5naXRodWJPcHRpb25zPy5wdWxsUmVxdWVzdExpbnRPcHRpb25zPy5zZW1hbnRpY1RpdGxlT3B0aW9ucyxcbiAgICAgICAgICAgIC8vIEZpeGVkIGFsbG93ZWQgUFIgdGl0bGUgdHlwZXMgZm9yIGEgVGFpbW9zIG1vbm9yZXBvLlxuICAgICAgICAgICAgdHlwZXM6IFsnZmVhdCcsICdmaXgnLCAnY2hvcmUnLCAnZG9jcycsICdzcGVjJywgJ2NpJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBkZXZEZXBzOiBbXG4gICAgICAgICdAdGFpbW9zL3Byb2plbicsXG4gICAgICAgICdwcm9qZW4tcGlwZWxpbmVzJyxcbiAgICAgICAgLi4uKG9wdGlvbnMuY2RrU2VydmVybGVzcyA/PyBmYWxzZSA/IFsnY2RrLXNlcnZlcmxlc3MnXSA6IFtdKSxcbiAgICAgICAgLi4ub3B0aW9ucy5kZXZEZXBzID8/IFtdLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIFByaXZhdGUgd29ya3NwYWNlIHJvb3Qg4oCUIG5ldmVyIHB1Ymxpc2hlZCwgcmVzb2x2ZXMgcGFja2FnZXMgbG9jYWxseS5cbiAgICB0aGlzLnBhY2thZ2UuYWRkRmllbGQoJ3ByaXZhdGUnLCB0cnVlKTtcblxuICAgIHRoaXMuZGVmYXVsdFJlbGVhc2VCcmFuY2ggPSBvcHRpb25zLmRlZmF1bHRSZWxlYXNlQnJhbmNoID8/ICdtYWluJztcblxuICAgIC8vIFBSIGFwcHJvdmVyIHJvdXRpbmcuXG4gICAgaWYgKG9wdGlvbnMuYXNzaWduQXBwcm92ZXIgPz8gdHJ1ZSkge1xuICAgICAgdGhpcy5hc3NpZ25BcHByb3ZlciA9IG5ldyBHaXRIdWJBc3NpZ25BcHByb3Zlcih0aGlzLCB7XG4gICAgICAgIGFwcHJvdmVyTWFwcGluZzogb3B0aW9ucy5hcHByb3Zlck1hcHBpbmcgPz8gW1xuICAgICAgICAgIHsgYXV0aG9yOiAnaG9lZ2VydG4nLCBhcHByb3ZlcnM6IFsnaG9lZ2VybWEnXSB9LFxuICAgICAgICAgIHsgYXV0aG9yOiAnaG9lZ2VybWEnLCBhcHByb3ZlcnM6IFsnaG9lZ2VydG4nXSB9LFxuICAgICAgICBdLFxuICAgICAgICBkZWZhdWx0QXBwcm92ZXJzOiBvcHRpb25zLmRlZmF1bHRBcHByb3ZlcnMgPz8gWydob2VnZXJ0bicsICdob2VnZXJtYSddLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gTWFudWFsIHByb2R1Y3Rpb24gcmVsZWFzZSDigJQgcHJvbW90ZXMgYSBicmFuY2ggdG8gdGhlIHByb2R1Y3Rpb24gYnJhbmNoLlxuICAgIGlmIChvcHRpb25zLnByb2R1Y3Rpb25SZWxlYXNlID8/IGZhbHNlKSB7XG4gICAgICB0aGlzLnByb2R1Y3Rpb25SZWxlYXNlID0gbmV3IEdpdEh1YlByb2R1Y3Rpb25SZWxlYXNlKHRoaXMsIG9wdGlvbnMucHJvZHVjdGlvblJlbGVhc2VPcHRpb25zKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgcHJvamVucmMgaXMgc3BsaXQgaW50byBtb2R1bGVzIHVuZGVyIC5wcm9qZW4vIOKAlCBtYWtlIHRoZW0gcGFydCBvZiB0aGVcbiAgICAvLyBkZXYgdHNjb25maWcgc28gdGhlIElERSBhbmQgdHMtbm9kZSB0eXBlLWNoZWNrIHRoZW0uXG4gICAgdGhpcy50c2NvbmZpZ0Rldj8uYWRkSW5jbHVkZSgnLnByb2plbi8qLnRzJyk7XG5cbiAgICAvLyBwcm9qZW4ncyBOb2RlUGFja2FnZSBnZW5lcmF0ZXMgYHBucG0td29ya3NwYWNlLnlhbWxgIG5hdGl2ZWx5IChwcm9qZW4gPj1cbiAgICAvLyAwLjEwMSksIGNvbmZpZ3VyZWQgdmlhIHRoZSBgcG5wbU9wdGlvbnNgL2BhbGxvd1NjcmlwdHNgIHBhc3NlZCB0byBzdXBlcigpLlxuICAgIC8vIEV4cG9zZSB0aGUgZ2VuZXJhdGVkIGZpbGUgc28gY29uc3VtZXJzIGNhbiBmdXJ0aGVyIGN1c3RvbWl6ZSBpdC5cbiAgICB0aGlzLndvcmtzcGFjZUZpbGUgPSB0aGlzLnRyeUZpbmRPYmplY3RGaWxlKCdwbnBtLXdvcmtzcGFjZS55YW1sJykgYXMgWWFtbEZpbGU7XG5cbiAgICAvLyBDb252ZW5pZW5jZSByb290IHNjcmlwdHMgZGVsZWdhdGUgdG8gdGhlIHdvcmtzcGFjZS5cbiAgICBjb25zdCByb290UGtnID0gdGhpcy50cnlGaW5kT2JqZWN0RmlsZSgncGFja2FnZS5qc29uJykhO1xuICAgIHJvb3RQa2cuYWRkT3ZlcnJpZGUoJ3NjcmlwdHMuYnVpbGQnLCAncG5wbSAtciBydW4gYnVpbGQnKTtcbiAgICByb290UGtnLmFkZE92ZXJyaWRlKCdzY3JpcHRzLnRlc3QnLCAncG5wbSAtciBydW4gdGVzdCcpO1xuICAgIHJvb3RQa2cuYWRkT3ZlcnJpZGUoJ3NjcmlwdHMubGludCcsICdwbnBtIC1yIHJ1biBlc2xpbnQnKTtcblxuICAgIC8vIFVuaWZpZWQgUFIgYnVpbGQgd29ya2Zsb3cg4oCUIGJ1aWxkcyAoYW5kIG9wdGlvbmFsbHkgdGVzdHMpIGV2ZXJ5IHdvcmtzcGFjZVxuICAgIC8vIHBhY2thZ2UgaW4gZGVwZW5kZW5jeSBvcmRlci5cbiAgICBjb25zdCBub2RlVmVyc2lvbiA9IG9wdGlvbnMubm9kZVZlcnNpb24gPz8gJzIyJztcbiAgICBjb25zdCBidWlsZFN0ZXBzOiBnaXRodWIud29ya2Zsb3dzLkpvYlN0ZXBbXSA9IFtcbiAgICAgIHsgbmFtZTogJ0NoZWNrb3V0JywgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjQnIH0sXG4gICAgICB7IG5hbWU6ICdTZXR1cCBwbnBtJywgdXNlczogJ3BucG0vYWN0aW9uLXNldHVwQHY0Jywgd2l0aDogeyB2ZXJzaW9uOiBwbnBtVmVyc2lvbiB9IH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdTZXR1cCBOb2RlLmpzJyxcbiAgICAgICAgdXNlczogJ2FjdGlvbnMvc2V0dXAtbm9kZUB2NCcsXG4gICAgICAgIHdpdGg6IHsgJ25vZGUtdmVyc2lvbic6IG5vZGVWZXJzaW9uLCAnY2FjaGUnOiAncG5wbScgfSxcbiAgICAgIH0sXG4gICAgICB7IG5hbWU6ICdJbnN0YWxsJywgcnVuOiAncG5wbSBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlJyB9LFxuICAgICAgeyBuYW1lOiAnQnVpbGQnLCBydW46ICdwbnBtIC1yIHJ1biBidWlsZCcgfSxcbiAgICBdO1xuICAgIGlmIChvcHRpb25zLnJ1blRlc3RzSW5CdWlsZCA/PyB0cnVlKSB7XG4gICAgICBidWlsZFN0ZXBzLnB1c2goeyBuYW1lOiAnVGVzdCcsIHJ1bjogJ3BucG0gLXIgcnVuIHRlc3QnIH0pO1xuICAgIH1cbiAgICAvLyBQYXRoIGZpbHRlcjogb25seSB0cmlnZ2VyIGJ1aWxkcyB3aGVuIHdvcmtzcGFjZSBwYWNrYWdlIGZpbGVzIG9yXG4gICAgLy8gYnVpbGQtcmVsZXZhbnQgcm9vdCBjb25maWd1cmF0aW9uIGNoYW5nZXMuIENoYW5nZXMgdG8gc3BlY3Mgb3IgZG9jc1xuICAgIC8vIGFsb25lIHNob3VsZCBub3QgdHJpZ2dlciBhIG5ldyBidWlsZC5cbiAgICBjb25zdCB3b3Jrc3BhY2VQYWNrYWdlcyA9IHdzLnBhY2thZ2VzID8/IFsncGFja2FnZXMvKiddO1xuICAgIGNvbnN0IGJ1aWxkUGF0aHM6IHN0cmluZ1tdID0gW1xuICAgICAgLy8gV29ya3NwYWNlIHBhY2thZ2Ugc291cmNlIGZpbGVzLlxuICAgICAgLi4ud29ya3NwYWNlUGFja2FnZXMubWFwKChwa2cpID0+IGAke3BrZ30vKipgKSxcbiAgICAgIC8vIERlcGVuZGVuY3kgbG9jayAmIHdvcmtzcGFjZSBjb25maWd1cmF0aW9uLlxuICAgICAgJ3BucG0tbG9jay55YW1sJyxcbiAgICAgICdwbnBtLXdvcmtzcGFjZS55YW1sJyxcbiAgICAgIC8vIFJvb3QgcGFja2FnZS5qc29uIChzY3JpcHRzLCBkZXZEZXBzLCBlbmdpbmVzKS5cbiAgICAgICdwYWNrYWdlLmpzb24nLFxuICAgICAgLy8gUHJvamVuIGNvbmZpZ3VyYXRpb24g4oCUIHJlZ2VuZXJhdGVzIHByb2plY3QgZmlsZXMuXG4gICAgICAnLnByb2plbnJjLnRzJyxcbiAgICAgICcucHJvamVucmMuanMnLFxuICAgICAgJy5wcm9qZW4vKionLFxuICAgICAgLy8gU2hhcmVkIFR5cGVTY3JpcHQgY29uZmlndXJhdGlvbi5cbiAgICAgICd0c2NvbmZpZy5qc29uJyxcbiAgICAgICd0c2NvbmZpZy4qLmpzb24nLFxuICAgICAgLy8gVGhlIGJ1aWxkIHdvcmtmbG93IGl0c2VsZi5cbiAgICAgICcuZ2l0aHViL3dvcmtmbG93cy9idWlsZC55bWwnLFxuICAgICAgLy8gU2hhcmVkIGxpbnQgY29uZmlndXJhdGlvbi5cbiAgICAgICcuZXNsaW50cmMuKicsXG4gICAgICAnZXNsaW50LmNvbmZpZy4qJyxcbiAgICBdO1xuXG4gICAgdGhpcy5wckJ1aWxkV29ya2Zsb3cgPSBuZXcgZ2l0aHViLkdpdGh1YldvcmtmbG93KHRoaXMuZ2l0aHViISwgJ2J1aWxkJyk7XG4gICAgdGhpcy5wckJ1aWxkV29ya2Zsb3cub24oe1xuICAgICAgcHVsbFJlcXVlc3Q6IHsgcGF0aHM6IGJ1aWxkUGF0aHMgfSxcbiAgICAgIHB1c2g6IHsgYnJhbmNoZXM6IFsnbWFpbiddLCBwYXRoczogYnVpbGRQYXRocyB9LFxuICAgICAgd29ya2Zsb3dEaXNwYXRjaDoge30sXG4gICAgfSk7XG4gICAgdGhpcy5wckJ1aWxkV29ya2Zsb3cuYWRkSm9iKCdidWlsZCcsIHtcbiAgICAgIHJ1bnNPbjogWyd1YnVudHUtbGF0ZXN0J10sXG4gICAgICBwZXJtaXNzaW9uczogeyBjb250ZW50czogZ2l0aHViLndvcmtmbG93cy5Kb2JQZXJtaXNzaW9uLlJFQUQgfSxcbiAgICAgIHN0ZXBzOiBidWlsZFN0ZXBzLFxuICAgIH0pO1xuXG4gICAgLy8gQVdTIEFtcGxpZnkgSG9zdGluZyBidWlsZCBzcGVjLiBQTlBNIHdvcmtzcGFjZXMgYXJlIG5vdCBhdXRvLWRldGVjdGVkIGJ5XG4gICAgLy8gQW1wbGlmeSwgc28gZWFjaCBhcHAgaW5zdGFsbHMgYXQgdGhlIHJlcG8gcm9vdCwgcHJlLWJ1aWxkcyBpdHMgc2hhcmVkXG4gICAgLy8gcGFja2FnZXMsIHRoZW4gYnVpbGRzIGZyb20gaXRzIGFwcFJvb3QgKHNlZSBBRFItMDAwMikuXG4gICAgaWYgKG9wdGlvbnMuYW1wbGlmeUFwcHMgJiYgb3B0aW9ucy5hbXBsaWZ5QXBwcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmFtcGxpZnlGaWxlID0gbmV3IFlhbWxGaWxlKHRoaXMsICdhbXBsaWZ5LnltbCcsIHtcbiAgICAgICAgb2JqOiB7XG4gICAgICAgICAgdmVyc2lvbjogMSxcbiAgICAgICAgICBhcHBsaWNhdGlvbnM6IG9wdGlvbnMuYW1wbGlmeUFwcHMubWFwKChhcHApID0+IHRoaXMucmVuZGVyQW1wbGlmeUFwcChhcHApKSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyQW1wbGlmeUFwcChhcHA6IE1vbm9yZXBvQW1wbGlmeUFwcCkge1xuICAgIGNvbnN0IGFuZ3VsYXIgPSBhcHAuZnJhbWV3b3JrID09PSBNb25vcmVwb0FtcGxpZnlGcmFtZXdvcmsuQU5HVUxBUjtcbiAgICAvLyBTY29wZSB0aGUgaW5zdGFsbCB0byB0aGUgYXBwJ3MgZGVwZW5kZW5jeSBjbG9zdXJlIHRvIGF2b2lkIGNvbmN1cnJlbnRcbiAgICAvLyBwcm9qZW4vbm9kZV9tb2R1bGVzIHJlbmFtZSByYWNlcyB1bmRlciB0aGUgaG9pc3RlZCBsaW5rZXIgKHNlZSAjMzcyKS5cbiAgICBjb25zdCBmaWx0ZXIgPSBhcHAuaW5zdGFsbEZpbHRlciA/PyBgJHthcHAuYnVpbGRGaWx0ZXJ9Li4uYDtcbiAgICBjb25zdCBpbnN0YWxsQ29tbWFuZCA9IGFwcC5pbnN0YWxsQ29tbWFuZFxuICAgICAgPz8gYHBucG0gaW5zdGFsbCAtLWZyb3plbi1sb2NrZmlsZSAtLW5vZGUtbGlua2VyIGhvaXN0ZWQgLS1maWx0ZXIgXCIke2ZpbHRlcn1cImA7XG4gICAgY29uc3QgcHJlQnVpbGQgPSBbXG4gICAgICAnY29yZXBhY2sgZW5hYmxlJyxcbiAgICAgIGluc3RhbGxDb21tYW5kLFxuICAgICAgLi4uKGFwcC5wcmVCdWlsZEZpbHRlcnMgPz8gW10pLm1hcCgoZikgPT4gYHBucG0gLS1maWx0ZXIgJHtmfSBydW4gYnVpbGRgKSxcbiAgICBdO1xuICAgIC8vIEJVSUxEX0VOViAoZGV2fHByb2QpIGlzIHByb3ZpZGVkIGFzIGFuIEFtcGxpZnkgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAgY29uc3QgYnVpbGRDb21tYW5kID0gYXBwLmJ1aWxkQ29tbWFuZCA/PyAoYW5ndWxhclxuICAgICAgPyBgcG5wbSAtLWZpbHRlciAke2FwcC5idWlsZEZpbHRlcn0gcnVuIGJ1aWxkOlxcJHtCVUlMRF9FTlZ9YFxuICAgICAgOiBgcG5wbSAtLWZpbHRlciAke2FwcC5idWlsZEZpbHRlcn0gcnVuIGJ1aWxkYCk7XG4gICAgY29uc3QgYmFzZURpcmVjdG9yeSA9IGFwcC5hcnRpZmFjdEJhc2VEaXJlY3RvcnkgPz8gKGFuZ3VsYXJcbiAgICAgID8gYCR7YXBwLmFwcFJvb3R9L2Rpc3QvJHthcHAuYnVpbGRGaWx0ZXJ9L2Jyb3dzZXJgXG4gICAgICA6IGAke2FwcC5hcHBSb290fS8ubmV4dGApO1xuICAgIGNvbnN0IGNhY2hlUGF0aHMgPSBhcHAuY2FjaGVQYXRocyA/PyBbXG4gICAgICAnbm9kZV9tb2R1bGVzLyoqLyonLFxuICAgICAgYW5ndWxhciA/IGAke2FwcC5hcHBSb290fS8uYW5ndWxhci9jYWNoZS8qKi8qYCA6IGAke2FwcC5hcHBSb290fS8ubmV4dC9jYWNoZS8qKi8qYCxcbiAgICBdO1xuICAgIHJldHVybiB7XG4gICAgICBhcHBSb290OiBhcHAuYXBwUm9vdCxcbiAgICAgIGZyb250ZW5kOiB7XG4gICAgICAgIC8vIEluc3RhbGwvYnVpbGQgZnJvbSB0aGUgbW9ub3JlcG8gcm9vdCBzbyB0aGUgd29ya3NwYWNlIHJvb3RcbiAgICAgICAgLy8gcGFja2FnZS5qc29uIGFuZCBwbnBtLWxvY2sueWFtbCBhcmUgYXZhaWxhYmxlLlxuICAgICAgICBidWlsZFBhdGg6ICcvJyxcbiAgICAgICAgcGhhc2VzOiB7XG4gICAgICAgICAgcHJlQnVpbGQ6IHsgY29tbWFuZHM6IHByZUJ1aWxkIH0sXG4gICAgICAgICAgYnVpbGQ6IHsgY29tbWFuZHM6IFtidWlsZENvbW1hbmRdIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGFydGlmYWN0czogeyBiYXNlRGlyZWN0b3J5LCBmaWxlczogWycqKi8qJ10gfSxcbiAgICAgICAgY2FjaGU6IHsgcGF0aHM6IGNhY2hlUGF0aHMgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuIl19
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvamVjdHMvbW9ub3JlcG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLG1DQUFrRTtBQUNsRSx1REFBd0Q7QUFDeEQsOENBQXlJO0FBRXpJOzs7OztHQUtHO0FBQ0gsSUFBWSx3QkFLWDtBQUxELFdBQVksd0JBQXdCO0lBQ2xDLDZFQUE2RTtJQUM3RSw2Q0FBaUIsQ0FBQTtJQUNqQiwyR0FBMkc7SUFDM0csK0NBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUxXLHdCQUF3Qix3Q0FBeEIsd0JBQXdCLFFBS25DO0FBK09EOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxtQkFBVSxDQUFDLGlCQUFpQjs7SUFFL0QsMkNBQTJDO0lBQzNCLGFBQWEsQ0FBVztJQUV4QyxxQ0FBcUM7SUFDckIsZUFBZSxDQUF3QjtJQUV2RCx3RUFBd0U7SUFDeEQsV0FBVyxDQUFZO0lBRXZDLDhDQUE4QztJQUM5QixjQUFjLENBQXdCO0lBRXRELG1EQUFtRDtJQUNuQyxpQkFBaUIsQ0FBMkI7SUFFNUQsd0VBQXdFO0lBQ3hELGFBQWEsQ0FBdUI7SUFFcEQsZ0ZBQWdGO0lBQ2hFLG9CQUFvQixDQUFTO0lBRTdDLFlBQVksT0FBK0I7UUFDekMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixJQUFJLFNBQVMsQ0FBQztRQUU5RCw0RUFBNEU7UUFDNUUsMEVBQTBFO1FBQzFFLDBDQUEwQztRQUMxQyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1FBQzFDLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQyxhQUFhLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBRXBHLEtBQUssQ0FBQztZQUNKLFFBQVEsRUFBRSxLQUFLO1lBQ2YsT0FBTyxFQUFFLEtBQUs7WUFD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bEQsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sUUFBUSxDQUFDLENBQUM7UUFDNUIsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFVBQVUsSUFBSTtZQUNuQyxtQkFBbUI7WUFDbkIsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLG1CQUFtQjtTQUNuRixDQUFDO1FBQ0YsT0FBTztZQUNMLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztZQUNwQixRQUFRLEVBQUU7Z0JBQ1IsNkRBQTZEO2dCQUM3RCxpREFBaUQ7Z0JBQ2pELFNBQVMsRUFBRSxHQUFHO2dCQUNkLE1BQU0sRUFBRTtvQkFDTixRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFO29CQUNoQyxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRTtpQkFDcEM7Z0JBQ0QsU0FBUyxFQUFFLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUM3QyxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO2FBQzdCO1NBQ0YsQ0FBQztJQUNKLENBQUM7O0FBcFBILDBDQXFQQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdpdGh1YiwgamF2YXNjcmlwdCwgdHlwZXNjcmlwdCwgWWFtbEZpbGUgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgR2l0SHViQXNzaWduQXBwcm92ZXIgfSBmcm9tICdwcm9qZW4tcGlwZWxpbmVzJztcbmltcG9ydCB7IEdpdEh1YkFtcGxpZnlEZXBsb3ksIEdpdEh1YkFtcGxpZnlEZXBsb3lPcHRpb25zLCBHaXRIdWJQcm9kdWN0aW9uUmVsZWFzZSwgR2l0SHViUHJvZHVjdGlvblJlbGVhc2VPcHRpb25zIH0gZnJvbSAnLi4vY29tcG9uZW50cyc7XG5cbi8qKlxuICogVGhlIGZyb250ZW5kIGZyYW1ld29yayBhbiBBbXBsaWZ5IEhvc3RpbmcgYXBwbGljYXRpb24gaXMgYnVpbHQgd2l0aC5cbiAqXG4gKiBTZWxlY3RzIHNlbnNpYmxlIGRlZmF1bHRzIGZvciB0aGUgYnVpbGQgY29tbWFuZCwgYXJ0aWZhY3QgZGlyZWN0b3J5IGFuZFxuICogY2FjaGUgcGF0aHMgaW4gdGhlIGdlbmVyYXRlZCBgYW1wbGlmeS55bWxgLlxuICovXG5leHBvcnQgZW51bSBNb25vcmVwb0FtcGxpZnlGcmFtZXdvcmsge1xuICAvKiogQSBOZXh0LmpzIGFwcCDigJQgYXJ0aWZhY3RzIGluIGA8YXBwUm9vdD4vLm5leHRgLCBidWlsdCB2aWEgYHJ1biBidWlsZGAuICovXG4gIE5FWFRKUyA9ICduZXh0anMnLFxuICAvKiogQW4gQW5ndWxhciBhcHAg4oCUIGFydGlmYWN0cyBpbiBgPGFwcFJvb3Q+L2Rpc3QvPGZpbHRlcj4vYnJvd3NlcmAsIGJ1aWx0IHZpYSBgcnVuIGJ1aWxkOiR7QlVJTERfRU5WfWAuICovXG4gIEFOR1VMQVIgPSAnYW5ndWxhcicsXG59XG5cbi8qKlxuICogT25lIEFXUyBBbXBsaWZ5IEhvc3RpbmcgYXBwbGljYXRpb24gc2VydmVkIGZyb20gYSB3b3Jrc3BhY2UgcGFja2FnZS5cbiAqXG4gKiBSZW5kZXJzIGEgc2luZ2xlIGVudHJ5IHVuZGVyIGBhcHBsaWNhdGlvbnM6YCBpbiB0aGUgZ2VuZXJhdGVkIGBhbXBsaWZ5LnltbGAuXG4gKiBBbXBsaWZ5IGRvZXMgbm90IGF1dG8tZGV0ZWN0IFBOUE0gd29ya3NwYWNlcywgc28gdGhlIGdlbmVyYXRlZCBidWlsZCBzcGVjXG4gKiBydW5zIGBjb3JlcGFjayBlbmFibGVgICsgYSByb290IGBwbnBtIGluc3RhbGxgIGFuZCBwcmUtYnVpbGRzIGFueSBzaGFyZWRcbiAqIHBhY2thZ2VzIGJlZm9yZSBidWlsZGluZyB0aGUgYXBwIGZyb20gaXRzIGBhcHBSb290YCAoc2VlIEFEUi0wMDAyKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25vcmVwb0FtcGxpZnlBcHAge1xuICAvKipcbiAgICogVGhlIHBhY2thZ2UgcGF0aCB0aGF0IGlzIHRoZSBBbXBsaWZ5IGFwcCByb290LCBlLmcuIGBwYWNrYWdlcy9mcm9udGVuZGAuXG4gICAqL1xuICByZWFkb25seSBhcHBSb290OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmcm9udGVuZCBmcmFtZXdvcmssIHVzZWQgdG8gcGljayBidWlsZC9hcnRpZmFjdC9jYWNoZSBkZWZhdWx0cy5cbiAgICovXG4gIHJlYWRvbmx5IGZyYW1ld29yazogTW9ub3JlcG9BbXBsaWZ5RnJhbWV3b3JrO1xuXG4gIC8qKlxuICAgKiBUaGUgcG5wbSBwYWNrYWdlIG5hbWUgdG8gYnVpbGQsIHVzZWQgYXMgdGhlIGAtLWZpbHRlcmAgdGFyZ2V0LFxuICAgKiBlLmcuIGBkZXBsb3ltb24tZnJvbnRlbmRgIG9yIGByYWRiYWxsLWRpZ2l0YWwtcG9ydGFsYC5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkRmlsdGVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdvcmtzcGFjZSBwYWNrYWdlcyB0byBidWlsZCBiZWZvcmUgdGhlIGFwcCwgYXMgYC0tZmlsdGVyYCB0YXJnZXRzLlxuICAgKlxuICAgKiBUeXBpY2FsbHkgdGhlIHNoYXJlZCBBUEkgcGFja2FnZSB0aGUgYXBwIGNvbnN1bWVzIHZpYSBgd29ya3NwYWNlOipgLFxuICAgKiBlLmcuIGBbJ0B0YWltb3MvZGVwbG95bW9uLWFwaSddYC5cbiAgICpcbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IHByZUJ1aWxkRmlsdGVycz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgYnVpbGQgY29tbWFuZCBydW4gaW4gdGhlIEFtcGxpZnkgYGJ1aWxkYCBwaGFzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBgcG5wbSAtLWZpbHRlciA8YnVpbGRGaWx0ZXI+IHJ1biBidWlsZGAgZm9yIE5leHQuanMsIG9yXG4gICAqIGBwbnBtIC0tZmlsdGVyIDxidWlsZEZpbHRlcj4gcnVuIGJ1aWxkOiR7QlVJTERfRU5WfWAgZm9yIEFuZ3VsYXIuXG4gICAqL1xuICByZWFkb25seSBidWlsZENvbW1hbmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRoZSBhcnRpZmFjdCBiYXNlIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBgPGFwcFJvb3Q+Ly5uZXh0YCBmb3IgTmV4dC5qcywgb3JcbiAgICogYDxhcHBSb290Pi9kaXN0LzxidWlsZEZpbHRlcj4vYnJvd3NlcmAgZm9yIEFuZ3VsYXIuXG4gICAqL1xuICByZWFkb25seSBhcnRpZmFjdEJhc2VEaXJlY3Rvcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRoZSBBbXBsaWZ5IGJ1aWxkIGNhY2hlIHBhdGhzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGBub2RlX21vZHVsZXMvKipgIHBsdXMgdGhlIGZyYW1ld29yayBidWlsZCBjYWNoZVxuICAgKiAoYDxhcHBSb290Pi8ubmV4dC9jYWNoZS8qKmAgb3IgYDxhcHBSb290Pi8uYW5ndWxhci9jYWNoZS8qKmApLlxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVQYXRocz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBwbnBtIGAtLWZpbHRlcmAgZXhwcmVzc2lvbiBmb3IgdGhlIHNjb3BlZCBpbnN0YWxsIGluIHRoZSBwcmVCdWlsZCBwaGFzZS5cbiAgICpcbiAgICogVGhlIHRyYWlsaW5nIGAuLi5gIHN5bnRheCBwdWxscyBpbiB0aGUgYXBwJ3MgdHJhbnNpdGl2ZSB3b3Jrc3BhY2VcbiAgICogZGVwZW5kZW5jaWVzIChlLmcuIGEgc2hhcmVkIEFQSSBwYWNrYWdlKSBidXQgZXhjbHVkZXMgdW5yZWxhdGVkIHBhY2thZ2VzLFxuICAgKiBhdm9pZGluZyBjb25jdXJyZW50IGBwcm9qZW4vbm9kZV9tb2R1bGVzYCByZW5hbWUgcmFjZXMgdW5kZXIgdGhlIGhvaXN0ZWRcbiAgICogbGlua2VyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJHtidWlsZEZpbHRlcn0uLi5gXG4gICAqL1xuICByZWFkb25seSBpbnN0YWxsRmlsdGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGdWxsIG92ZXJyaWRlIG9mIHRoZSBpbnN0YWxsIGNvbW1hbmQgaW4gdGhlIHByZUJ1aWxkIHBoYXNlLlxuICAgKlxuICAgKiBXaGVuIHNldCwgYGluc3RhbGxGaWx0ZXJgIGlzIGlnbm9yZWQgYW5kIHRoaXMgc3RyaW5nIGlzIGVtaXR0ZWQgdmVyYmF0aW0uXG4gICAqIFVzZSB0aGlzIGFzIGFuIGVzY2FwZSBoYXRjaCB3aGVuIHRoZSBkZWZhdWx0IHNjb3BlZCBpbnN0YWxsIGlzIGluc3VmZmljaWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBgcG5wbSBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlIC0tbm9kZS1saW5rZXIgaG9pc3RlZCAtLWZpbHRlciBcIjxpbnN0YWxsRmlsdGVyPlwiYFxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFsbENvbW1hbmQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUE5QTSB3b3Jrc3BhY2UgdHVuaW5nIGZvciB0aGUgZ2VuZXJhdGVkIGBwbnBtLXdvcmtzcGFjZS55YW1sYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25vcmVwb1dvcmtzcGFjZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHdvcmtzcGFjZSBwYWNrYWdlIGdsb2JzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbJ3BhY2thZ2VzLyonXVxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVmVyc2lvbiBvdmVycmlkZXMgZm9yY2VkIGFjcm9zcyB0aGUgd2hvbGUgd29ya3NwYWNlXG4gICAqICh0aGUgYG92ZXJyaWRlczpgIGZpZWxkKS4gT21pdHRlZCBmcm9tIHRoZSBmaWxlIHdoZW4gZW1wdHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICByZWFkb25seSBvdmVycmlkZXM/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRGVwZW5kZW5jaWVzIGFsbG93ZWQgdG8gcnVuIGluc3RhbGwvYnVpbGQgc2NyaXB0cy4gcG5wbSA+PSAxMCBibG9ja3MgdGhlc2VcbiAgICogYnkgZGVmYXVsdC4gVGhlIGxpc3QgcG9wdWxhdGVzIGJvdGggYGFsbG93QnVpbGRzYCBhbmRcbiAgICogYG9ubHlCdWlsdERlcGVuZGVuY2llc2Agc28gcG5wbSBkb2VzIG5vdCB0cmVhdCBgbm9kZV9tb2R1bGVzYCBhcyBzdGFsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgWydAYXdzLWFtcGxpZnkvY2xpJywgJ2VzYnVpbGQnLCAnc2hhcnAnLCAndW5ycy1yZXNvbHZlciddXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkQnVpbGRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gYWdlIGluIG1pbnV0ZXMgYSBwdWJsaXNoZWQgdmVyc2lvbiBtdXN0IGhhdmUgYmVmb3JlIGl0IG1heSBiZVxuICAgKiBpbnN0YWxsZWQgKGBtaW5pbXVtUmVsZWFzZUFnZWApLlxuICAgKlxuICAgKiBAZGVmYXVsdCAyODgwIC8vIDIgZGF5c1xuICAgKi9cbiAgcmVhZG9ubHkgbWluaW11bVJlbGVhc2VBZ2U/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFBhY2thZ2VzIGV4ZW1wdCBmcm9tIGBtaW5pbXVtUmVsZWFzZUFnZWAgc28gb3VyIG93biB0b29saW5nIGNhbiB1cGRhdGVcbiAgICogd2l0aG91dCB0aGUgY29vbGRvd24uXG4gICAqXG4gICAqIEBkZWZhdWx0IFsncHJvamVuLXBpcGVsaW5lcycsICdjZGstc2VydmVybGVzcycsICdAdGFpbW9zL3Byb2plbiddXG4gICAqL1xuICByZWFkb25seSBtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGU/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBPbmUgYXV0aG9yLXRvLWFwcHJvdmVycyByb3V0aW5nIHJ1bGUgZm9yIHRoZSBQUiBhcHByb3ZlciBhc3NpZ25tZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vbm9yZXBvQXBwcm92ZXJNYXBwaW5nIHtcbiAgLyoqXG4gICAqIFRoZSBHaXRIdWIgdXNlcm5hbWUgb3BlbmluZyB0aGUgUFIuXG4gICAqL1xuICByZWFkb25seSBhdXRob3I6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEdpdEh1YiB1c2VybmFtZXMgYXNzaWduZWQgdG8gcmV2aWV3IHdoZW4gYGF1dGhvcmAgb3BlbnMgYSBQUi5cbiAgICovXG4gIHJlYWRvbmx5IGFwcHJvdmVyczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9ub3JlcG9Qcm9qZWN0T3B0aW9ucyBleHRlbmRzIHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBwbnBtIHZlcnNpb24gcGlubmVkIGZvciB0aGUgd29ya3NwYWNlIGFuZCBDSS5cbiAgICpcbiAgICogQGRlZmF1bHQgJzEwLjMzLjAnXG4gICAqL1xuICByZWFkb25seSBwbnBtV29ya3NwYWNlVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIE5vZGUuanMgdmVyc2lvbiB1c2VkIGluIHRoZSBnZW5lcmF0ZWQgYnVpbGQgd29ya2Zsb3cuXG4gICAqXG4gICAqIEBkZWZhdWx0ICcyMidcbiAgICovXG4gIHJlYWRvbmx5IG5vZGVWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQTlBNIHdvcmtzcGFjZSB0dW5pbmcgZm9yIHRoZSBnZW5lcmF0ZWQgYHBucG0td29ya3NwYWNlLnlhbWxgLlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya3NwYWNlT3B0aW9ucz86IE1vbm9yZXBvV29ya3NwYWNlT3B0aW9ucztcblxuICAvKipcbiAgICogV2hldGhlciB0byBhZGQgYGNkay1zZXJ2ZXJsZXNzYCBhcyBhIHdvcmtzcGFjZSBkZXYgZGVwZW5kZW5jeS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNka1NlcnZlcmxlc3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFzc2lnbiBQUiBhcHByb3ZlcnMgdmlhIGBHaXRIdWJBc3NpZ25BcHByb3ZlcmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFzc2lnbkFwcHJvdmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQXV0aG9yLXRvLWFwcHJvdmVycyByb3V0aW5nIGZvciB0aGUgUFIgYXBwcm92ZXIgYXNzaWdubWVudC5cbiAgICogT25seSB1c2VkIHdoZW4gYGFzc2lnbkFwcHJvdmVyYCBpcyBlbmFibGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGhvZWdlcnRuIGFuZCBob2VnZXJtYSByZXZpZXcgZWFjaCBvdGhlclxuICAgKi9cbiAgcmVhZG9ubHkgYXBwcm92ZXJNYXBwaW5nPzogTW9ub3JlcG9BcHByb3Zlck1hcHBpbmdbXTtcblxuICAvKipcbiAgICogQXBwcm92ZXJzIGFzc2lnbmVkIHdoZW4gbm8gYXV0aG9yLXNwZWNpZmljIG1hcHBpbmcgbWF0Y2hlcy5cbiAgICogT25seSB1c2VkIHdoZW4gYGFzc2lnbkFwcHJvdmVyYCBpcyBlbmFibGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbJ2hvZWdlcnRuJywgJ2hvZWdlcm1hJ11cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRBcHByb3ZlcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdW5pZmllZCBidWlsZCB3b3JrZmxvdyBhbHNvIHJ1bnMgYHBucG0gLXIgcnVuIHRlc3RgLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBydW5UZXN0c0luQnVpbGQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBV1MgQW1wbGlmeSBIb3N0aW5nIGFwcGxpY2F0aW9ucy4gV2hlbiBzZXQsIGFuIGBhbXBsaWZ5LnltbGAgaXMgZ2VuZXJhdGVkXG4gICAqIHdpdGggb25lIGVudHJ5IHBlciBhcHAuIFdoZW4gb21pdHRlZCwgbm8gYGFtcGxpZnkueW1sYCBpcyBjcmVhdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgcmVhZG9ubHkgYW1wbGlmeUFwcHM/OiBNb25vcmVwb0FtcGxpZnlBcHBbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhZGQgYSBtYW51YWwgXCJQcm9kdWN0aW9uIFJlbGVhc2VcIiB3b3JrZmxvdyB0aGF0IHByb21vdGVzIGEgYnJhbmNoXG4gICAqIHRvIHRoZSBwcm9kdWN0aW9uIGJyYW5jaCAoc2VlIGBHaXRIdWJQcm9kdWN0aW9uUmVsZWFzZWApLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZHVjdGlvblJlbGVhc2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciB0aGUgcHJvZHVjdGlvbiByZWxlYXNlIHdvcmtmbG93LiBPbmx5IHVzZWQgd2hlblxuICAgKiBgcHJvZHVjdGlvblJlbGVhc2VgIGlzIGVuYWJsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcHJvbW90ZSBgbWFpbmAgdG8gYSBgcHJvZHVjdGlvbmAgYnJhbmNoXG4gICAqL1xuICByZWFkb25seSBwcm9kdWN0aW9uUmVsZWFzZU9wdGlvbnM/OiBHaXRIdWJQcm9kdWN0aW9uUmVsZWFzZU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIERyaXZlIEFtcGxpZnkgSG9zdGluZyBidWlsZHMgZnJvbSBHaXRIdWIgQWN0aW9ucyBpbnN0ZWFkIG9mIEFtcGxpZnkncyBvd25cbiAgICogYXV0by1idWlsZCwgc28gYW4gYXBwIG9ubHkgcmVidWlsZHMgd2hlbiB0aGUgcGFja2FnZXMgaXQgaXMgYnVpbHQgZnJvbVxuICAgKiBhY3R1YWxseSBjaGFuZ2VkIChzZWUgYEdpdEh1YkFtcGxpZnlEZXBsb3lgKS5cbiAgICpcbiAgICogU2V0dGluZyB0aGlzIGdlbmVyYXRlcyBvbmUgZGVwbG95IHdvcmtmbG93IHBlciBsaXN0ZWQgYXBwLiBUaGUgcHJvamVjdCdzXG4gICAqIENESyBhcHAgbXVzdCBkaXNhYmxlIGBhdXRvQnVpbGRgIG9uIHRoZSB0cmFja2VkIGJyYW5jaGVzIGFuZCBwcm92aWRlIHRoZVxuICAgKiBhcHAtaWQgcGFyYW1ldGVycyBhbmQgYnVpbGQtdHJpZ2dlciByb2xlIHRoZSB3b3JrZmxvd3MgZXhwZWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEFtcGxpZnkncyBvd24gYXV0by1idWlsZCBpcyBsZWZ0IGluIHBsYWNlXG4gICAqL1xuICByZWFkb25seSBhbXBsaWZ5RGVwbG95T3B0aW9ucz86IEdpdEh1YkFtcGxpZnlEZXBsb3lPcHRpb25zO1xufVxuXG4vKipcbiAqIFByaXZhdGUgUE5QTS13b3Jrc3BhY2UgbW9ub3JlcG8gcm9vdCwgZm9sbG93aW5nIFRhaW1vcyBBRFItMDAwMi5cbiAqXG4gKiBUaGUgcm9vdCBvbmx5IG9yY2hlc3RyYXRlcyB0aGUgd29ya3NwYWNlIOKAlCBidWlsZGluZywgdGVzdGluZyBhbmQgbGludGluZyBhcmVcbiAqIGRlbGVnYXRlZCB0byB0aGUgd29ya3NwYWNlIHBhY2thZ2VzIHZpYSBgcG5wbSAtcmAuIFRoaXMgcHJvamVjdCBnZW5lcmF0ZXMgdGhlXG4gKiBgcG5wbS13b3Jrc3BhY2UueWFtbGAsIHRoZSByb290IGNvbnZlbmllbmNlIHNjcmlwdHMsIGEgdW5pZmllZCBQUiBidWlsZFxuICogd29ya2Zsb3cgYW5kIChvcHRpb25hbGx5KSBhbiBBbXBsaWZ5IEhvc3RpbmcgYnVpbGQgc3BlYy4gVGhlIHByb2plbi1tYW5hZ2VkXG4gKiBzdWItcHJvamVjdHMgKGFwaSwgYmFja2VuZCwgaW5mcmEpIGFyZSBhZGRlZCB3aXRoIHRoZSBgcGFyZW50YC9gb3V0ZGlyYFxuICogcGF0dGVybiBpbiB0aGUgY29uc3VtaW5nIGAucHJvamVucmMudHNgOyBwbGFpbiB3b3Jrc3BhY2UgcGFja2FnZXMgKGUuZy5cbiAqIE5leHQuanMgYXBwcykgYXJlIHBpY2tlZCB1cCBieSB0aGUgYHBhY2thZ2VzLypgIGdsb2IuXG4gKlxuICogQHBqaWQgdGFpbW9zLW1vbm9yZXBvXG4gKi9cbmV4cG9ydCBjbGFzcyBNb25vcmVwb1Byb2plY3QgZXh0ZW5kcyB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0IHtcblxuICAvKiogVGhlIGdlbmVyYXRlZCBgcG5wbS13b3Jrc3BhY2UueWFtbGAuICovXG4gIHB1YmxpYyByZWFkb25seSB3b3Jrc3BhY2VGaWxlOiBZYW1sRmlsZTtcblxuICAvKiogVGhlIHVuaWZpZWQgUFIgYnVpbGQgd29ya2Zsb3cuICovXG4gIHB1YmxpYyByZWFkb25seSBwckJ1aWxkV29ya2Zsb3c6IGdpdGh1Yi5HaXRodWJXb3JrZmxvdztcblxuICAvKiogVGhlIGdlbmVyYXRlZCBgYW1wbGlmeS55bWxgLCBpZiBhbnkgQW1wbGlmeSBhcHBzIHdlcmUgY29uZmlndXJlZC4gKi9cbiAgcHVibGljIHJlYWRvbmx5IGFtcGxpZnlGaWxlPzogWWFtbEZpbGU7XG5cbiAgLyoqIFRoZSBQUiBhcHByb3ZlciBhc3NpZ25tZW50LCBpZiBlbmFibGVkLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXNzaWduQXBwcm92ZXI/OiBHaXRIdWJBc3NpZ25BcHByb3ZlcjtcblxuICAvKiogVGhlIHByb2R1Y3Rpb24gcmVsZWFzZSB3b3JrZmxvdywgaWYgZW5hYmxlZC4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb2R1Y3Rpb25SZWxlYXNlPzogR2l0SHViUHJvZHVjdGlvblJlbGVhc2U7XG5cbiAgLyoqIFRoZSBBbXBsaWZ5IGRlcGxveSB3b3JrZmxvd3MsIHdoZW4gYGFtcGxpZnlEZXBsb3lPcHRpb25zYCBpcyBzZXQuICovXG4gIHB1YmxpYyByZWFkb25seSBhbXBsaWZ5RGVwbG95PzogR2l0SHViQW1wbGlmeURlcGxveTtcblxuICAvKiogVGhlIGRlZmF1bHQgcmVsZWFzZSBicmFuY2ggKHByb21vdGVkIGJ5IHRoZSBwcm9kdWN0aW9uIHJlbGVhc2Ugd29ya2Zsb3cpLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdFJlbGVhc2VCcmFuY2g6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBNb25vcmVwb1Byb2plY3RPcHRpb25zKSB7XG4gICAgY29uc3QgcG5wbVZlcnNpb24gPSBvcHRpb25zLnBucG1Xb3Jrc3BhY2VWZXJzaW9uID8/ICcxMC4zMy4wJztcblxuICAgIC8vIFBOUE0gd29ya3NwYWNlIHR1bmluZyDigJQgbWFwcGVkIG9udG8gcHJvamVuJ3MgbmF0aXZlIGBwbnBtLXdvcmtzcGFjZS55YW1sYFxuICAgIC8vIHN1cHBvcnQgKHByb2plbiA+PSAwLjEwMSkgdGhyb3VnaCBgYWxsb3dTY3JpcHRzYCArIGBwbnBtT3B0aW9uc2AgYmVsb3csXG4gICAgLy8gcmF0aGVyIHRoYW4gaGFuZC1yb2xsaW5nIHRoZSBZQU1MIGZpbGUuXG4gICAgY29uc3Qgd3MgPSBvcHRpb25zLndvcmtzcGFjZU9wdGlvbnMgPz8ge307XG4gICAgY29uc3QgYWxsb3dlZEJ1aWxkcyA9IHdzLmFsbG93ZWRCdWlsZHMgPz8gWydAYXdzLWFtcGxpZnkvY2xpJywgJ2VzYnVpbGQnLCAnc2hhcnAnLCAndW5ycy1yZXNvbHZlciddO1xuXG4gICAgc3VwZXIoe1xuICAgICAgbGljZW5zZWQ6IGZhbHNlLFxuICAgICAgcmVsZWFzZTogZmFsc2UsXG4gICAgICBkZXBzVXBncmFkZTogZmFsc2UsXG4gICAgICAvLyBUaGUgcm9vdCBvbmx5IG9yY2hlc3RyYXRlcyB0aGUgd29ya3NwYWNlIOKAlCBubyBhcHAgY29kZSBsaXZlcyBoZXJlLlxuICAgICAgamVzdDogZmFsc2UsXG4gICAgICBlc2xpbnQ6IGZhbHNlLFxuICAgICAgc2FtcGxlQ29kZTogZmFsc2UsXG4gICAgICAvLyBDSSBpcyB0aGUgc2luZ2xlIGhhbmQtcm9sbGVkIHdvcmtmbG93IGJlbG93IHRoYXQgZGVsZWdhdGVzIHRvIHBhY2thZ2VzLlxuICAgICAgYnVpbGRXb3JrZmxvdzogZmFsc2UsXG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgLy8gRm9yY2VkIOKAlCBkZWZpbmluZyB3aGF0IGEgVGFpbW9zIG1vbm9yZXBvIHJvb3QgaXMuXG4gICAgICBwYWNrYWdlTWFuYWdlcjogamF2YXNjcmlwdC5Ob2RlUGFja2FnZU1hbmFnZXIuUE5QTSxcbiAgICAgIHBucG1WZXJzaW9uLFxuICAgICAgLy8gTmF0aXZlIHBucG0td29ya3NwYWNlLnlhbWwgKHByb2plbiA+PSAwLjEwMSkuIGBhbGxvd1NjcmlwdHNgIHJlbmRlcnMgdGhlXG4gICAgICAvLyBidWlsZCBhbGxvd2xpc3QgaW50byBgb25seUJ1aWx0RGVwZW5kZW5jaWVzYDsgdGhlIHJlbWFpbmluZyB0dW5pbmcgbWFwc1xuICAgICAgLy8gb250byBgd29ya3NwYWNlWWFtbE9wdGlvbnNgLiBBbnkgY29uc3VtZXItc3VwcGxpZWQgYHBucG1PcHRpb25zYCBhcmVcbiAgICAgIC8vIG1lcmdlZCBpbiBhbmQgd2luIG92ZXIgb3VyIGRlZmF1bHRzLlxuICAgICAgYWxsb3dTY3JpcHRzOiBhbGxvd2VkQnVpbGRzLFxuICAgICAgcG5wbU9wdGlvbnM6IHtcbiAgICAgICAgLi4ub3B0aW9ucy5wbnBtT3B0aW9ucyxcbiAgICAgICAgd29ya3NwYWNlWWFtbE9wdGlvbnM6IHtcbiAgICAgICAgICAvLyBwbnBtIDExIHJlcGxhY2VkIGBvbmx5QnVpbHREZXBlbmRlbmNpZXNgICh3aGljaCBgYWxsb3dTY3JpcHRzYFxuICAgICAgICAgIC8vIHJlbmRlcnMpIHdpdGggYGFsbG93QnVpbGRzYCwgYW5kIHJlYWRzIG9ubHkgdGhlIGxhdHRlciDigJQgYSBwbnBtIDExXG4gICAgICAgICAgLy8gaW5zdGFsbCBvdGhlcndpc2UgYWJvcnRzIHdpdGggRVJSX1BOUE1fSUdOT1JFRF9CVUlMRFMuIHBucG0gMTAgcmVhZHNcbiAgICAgICAgICAvLyBvbmx5IGBvbmx5QnVpbHREZXBlbmRlbmNpZXNgLiBFbWl0IGJvdGggc28gdGhlIHNhbWUgd29ya3NwYWNlIGZpbGVcbiAgICAgICAgICAvLyB3b3JrcyBvbiBlaXRoZXIsIHdoYXRldmVyIGBwbnBtVmVyc2lvbmAgYSBjb25zdW1lciBwaW5zLlxuICAgICAgICAgIGFsbG93QnVpbGRzOiBPYmplY3QuZnJvbUVudHJpZXMoYWxsb3dlZEJ1aWxkcy5tYXAoKHBrZykgPT4gW3BrZywgdHJ1ZV0pKSxcbiAgICAgICAgICBwYWNrYWdlczogd3MucGFja2FnZXMgPz8gWydwYWNrYWdlcy8qJ10sXG4gICAgICAgICAgbWluaW11bVJlbGVhc2VBZ2U6IHdzLm1pbmltdW1SZWxlYXNlQWdlID8/IDI4ODAsIC8vIDIgZGF5cyBpbiBtaW51dGVzXG4gICAgICAgICAgbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlOiB3cy5taW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGUgPz8gW1xuICAgICAgICAgICAgJ3Byb2plbi1waXBlbGluZXMnLFxuICAgICAgICAgICAgJ2Nkay1zZXJ2ZXJsZXNzJyxcbiAgICAgICAgICAgICdAdGFpbW9zL3Byb2plbicsXG4gICAgICAgICAgXSxcbiAgICAgICAgICAuLi4od3Mub3ZlcnJpZGVzICYmIE9iamVjdC5rZXlzKHdzLm92ZXJyaWRlcykubGVuZ3RoID4gMCA/IHsgb3ZlcnJpZGVzOiB3cy5vdmVycmlkZXMgfSA6IHt9KSxcbiAgICAgICAgICAuLi5vcHRpb25zLnBucG1PcHRpb25zPy53b3Jrc3BhY2VZYW1sT3B0aW9ucyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBwcm9qZW5yY1RzOiB0cnVlLFxuICAgICAgZ2l0aHViOiB0cnVlLFxuICAgICAgZ2l0aHViT3B0aW9uczoge1xuICAgICAgICBwcm9qZW5DcmVkZW50aWFsczogZ2l0aHViLkdpdGh1YkNyZWRlbnRpYWxzLmZyb21BcHAoKSxcbiAgICAgICAgbWVyZ2lmeTogZmFsc2UsXG4gICAgICAgIG1lcmdlUXVldWU6IHRydWUsXG4gICAgICAgIC4uLm9wdGlvbnMuZ2l0aHViT3B0aW9ucyxcbiAgICAgICAgbWVyZ2VRdWV1ZU9wdGlvbnM6IHtcbiAgICAgICAgICBhdXRvUXVldWU6IHRydWUsXG4gICAgICAgICAgLi4ub3B0aW9ucy5naXRodWJPcHRpb25zPy5tZXJnZVF1ZXVlT3B0aW9ucyxcbiAgICAgICAgfSxcbiAgICAgICAgcHVsbFJlcXVlc3RMaW50T3B0aW9uczoge1xuICAgICAgICAgIC4uLm9wdGlvbnMuZ2l0aHViT3B0aW9ucz8ucHVsbFJlcXVlc3RMaW50T3B0aW9ucyxcbiAgICAgICAgICBzZW1hbnRpY1RpdGxlT3B0aW9uczoge1xuICAgICAgICAgICAgLi4ub3B0aW9ucy5naXRodWJPcHRpb25zPy5wdWxsUmVxdWVzdExpbnRPcHRpb25zPy5zZW1hbnRpY1RpdGxlT3B0aW9ucyxcbiAgICAgICAgICAgIC8vIEZpeGVkIGFsbG93ZWQgUFIgdGl0bGUgdHlwZXMgZm9yIGEgVGFpbW9zIG1vbm9yZXBvLlxuICAgICAgICAgICAgdHlwZXM6IFsnZmVhdCcsICdmaXgnLCAnY2hvcmUnLCAnZG9jcycsICdzcGVjJywgJ2NpJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBkZXZEZXBzOiBbXG4gICAgICAgICdAdGFpbW9zL3Byb2plbicsXG4gICAgICAgICdwcm9qZW4tcGlwZWxpbmVzJyxcbiAgICAgICAgLi4uKG9wdGlvbnMuY2RrU2VydmVybGVzcyA/PyBmYWxzZSA/IFsnY2RrLXNlcnZlcmxlc3MnXSA6IFtdKSxcbiAgICAgICAgLi4ub3B0aW9ucy5kZXZEZXBzID8/IFtdLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIFByaXZhdGUgd29ya3NwYWNlIHJvb3Qg4oCUIG5ldmVyIHB1Ymxpc2hlZCwgcmVzb2x2ZXMgcGFja2FnZXMgbG9jYWxseS5cbiAgICB0aGlzLnBhY2thZ2UuYWRkRmllbGQoJ3ByaXZhdGUnLCB0cnVlKTtcblxuICAgIHRoaXMuZGVmYXVsdFJlbGVhc2VCcmFuY2ggPSBvcHRpb25zLmRlZmF1bHRSZWxlYXNlQnJhbmNoID8/ICdtYWluJztcblxuICAgIC8vIFBSIGFwcHJvdmVyIHJvdXRpbmcuXG4gICAgaWYgKG9wdGlvbnMuYXNzaWduQXBwcm92ZXIgPz8gdHJ1ZSkge1xuICAgICAgdGhpcy5hc3NpZ25BcHByb3ZlciA9IG5ldyBHaXRIdWJBc3NpZ25BcHByb3Zlcih0aGlzLCB7XG4gICAgICAgIGFwcHJvdmVyTWFwcGluZzogb3B0aW9ucy5hcHByb3Zlck1hcHBpbmcgPz8gW1xuICAgICAgICAgIHsgYXV0aG9yOiAnaG9lZ2VydG4nLCBhcHByb3ZlcnM6IFsnaG9lZ2VybWEnXSB9LFxuICAgICAgICAgIHsgYXV0aG9yOiAnaG9lZ2VybWEnLCBhcHByb3ZlcnM6IFsnaG9lZ2VydG4nXSB9LFxuICAgICAgICBdLFxuICAgICAgICBkZWZhdWx0QXBwcm92ZXJzOiBvcHRpb25zLmRlZmF1bHRBcHByb3ZlcnMgPz8gWydob2VnZXJ0bicsICdob2VnZXJtYSddLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gTWFudWFsIHByb2R1Y3Rpb24gcmVsZWFzZSDigJQgcHJvbW90ZXMgYSBicmFuY2ggdG8gdGhlIHByb2R1Y3Rpb24gYnJhbmNoLlxuICAgIGlmIChvcHRpb25zLmFtcGxpZnlEZXBsb3lPcHRpb25zKSB7XG4gICAgICB0aGlzLmFtcGxpZnlEZXBsb3kgPSBuZXcgR2l0SHViQW1wbGlmeURlcGxveSh0aGlzLCBvcHRpb25zLmFtcGxpZnlEZXBsb3lPcHRpb25zKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5wcm9kdWN0aW9uUmVsZWFzZSA/PyBmYWxzZSkge1xuICAgICAgdGhpcy5wcm9kdWN0aW9uUmVsZWFzZSA9IG5ldyBHaXRIdWJQcm9kdWN0aW9uUmVsZWFzZSh0aGlzLCBvcHRpb25zLnByb2R1Y3Rpb25SZWxlYXNlT3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLy8gVGhlIHByb2plbnJjIGlzIHNwbGl0IGludG8gbW9kdWxlcyB1bmRlciAucHJvamVuLyDigJQgbWFrZSB0aGVtIHBhcnQgb2YgdGhlXG4gICAgLy8gZGV2IHRzY29uZmlnIHNvIHRoZSBJREUgYW5kIHRzLW5vZGUgdHlwZS1jaGVjayB0aGVtLlxuICAgIHRoaXMudHNjb25maWdEZXY/LmFkZEluY2x1ZGUoJy5wcm9qZW4vKi50cycpO1xuXG4gICAgLy8gcHJvamVuJ3MgTm9kZVBhY2thZ2UgZ2VuZXJhdGVzIGBwbnBtLXdvcmtzcGFjZS55YW1sYCBuYXRpdmVseSAocHJvamVuID49XG4gICAgLy8gMC4xMDEpLCBjb25maWd1cmVkIHZpYSB0aGUgYHBucG1PcHRpb25zYC9gYWxsb3dTY3JpcHRzYCBwYXNzZWQgdG8gc3VwZXIoKS5cbiAgICAvLyBFeHBvc2UgdGhlIGdlbmVyYXRlZCBmaWxlIHNvIGNvbnN1bWVycyBjYW4gZnVydGhlciBjdXN0b21pemUgaXQuXG4gICAgdGhpcy53b3Jrc3BhY2VGaWxlID0gdGhpcy50cnlGaW5kT2JqZWN0RmlsZSgncG5wbS13b3Jrc3BhY2UueWFtbCcpIGFzIFlhbWxGaWxlO1xuXG4gICAgLy8gQ29udmVuaWVuY2Ugcm9vdCBzY3JpcHRzIGRlbGVnYXRlIHRvIHRoZSB3b3Jrc3BhY2UuXG4gICAgY29uc3Qgcm9vdFBrZyA9IHRoaXMudHJ5RmluZE9iamVjdEZpbGUoJ3BhY2thZ2UuanNvbicpITtcbiAgICByb290UGtnLmFkZE92ZXJyaWRlKCdzY3JpcHRzLmJ1aWxkJywgJ3BucG0gLXIgcnVuIGJ1aWxkJyk7XG4gICAgcm9vdFBrZy5hZGRPdmVycmlkZSgnc2NyaXB0cy50ZXN0JywgJ3BucG0gLXIgcnVuIHRlc3QnKTtcbiAgICByb290UGtnLmFkZE92ZXJyaWRlKCdzY3JpcHRzLmxpbnQnLCAncG5wbSAtciBydW4gZXNsaW50Jyk7XG5cbiAgICAvLyBVbmlmaWVkIFBSIGJ1aWxkIHdvcmtmbG93IOKAlCBidWlsZHMgKGFuZCBvcHRpb25hbGx5IHRlc3RzKSBldmVyeSB3b3Jrc3BhY2VcbiAgICAvLyBwYWNrYWdlIGluIGRlcGVuZGVuY3kgb3JkZXIuXG4gICAgY29uc3Qgbm9kZVZlcnNpb24gPSBvcHRpb25zLm5vZGVWZXJzaW9uID8/ICcyMic7XG4gICAgY29uc3QgYnVpbGRTdGVwczogZ2l0aHViLndvcmtmbG93cy5Kb2JTdGVwW10gPSBbXG4gICAgICB7IG5hbWU6ICdDaGVja291dCcsIHVzZXM6ICdhY3Rpb25zL2NoZWNrb3V0QHY0JyB9LFxuICAgICAgeyBuYW1lOiAnU2V0dXAgcG5wbScsIHVzZXM6ICdwbnBtL2FjdGlvbi1zZXR1cEB2NCcsIHdpdGg6IHsgdmVyc2lvbjogcG5wbVZlcnNpb24gfSB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnU2V0dXAgTm9kZS5qcycsXG4gICAgICAgIHVzZXM6ICdhY3Rpb25zL3NldHVwLW5vZGVAdjQnLFxuICAgICAgICB3aXRoOiB7ICdub2RlLXZlcnNpb24nOiBub2RlVmVyc2lvbiwgJ2NhY2hlJzogJ3BucG0nIH0sXG4gICAgICB9LFxuICAgICAgeyBuYW1lOiAnSW5zdGFsbCcsIHJ1bjogJ3BucG0gaW5zdGFsbCAtLWZyb3plbi1sb2NrZmlsZScgfSxcbiAgICAgIHsgbmFtZTogJ0J1aWxkJywgcnVuOiAncG5wbSAtciBydW4gYnVpbGQnIH0sXG4gICAgXTtcbiAgICBpZiAob3B0aW9ucy5ydW5UZXN0c0luQnVpbGQgPz8gdHJ1ZSkge1xuICAgICAgYnVpbGRTdGVwcy5wdXNoKHsgbmFtZTogJ1Rlc3QnLCBydW46ICdwbnBtIC1yIHJ1biB0ZXN0JyB9KTtcbiAgICB9XG4gICAgLy8gUGF0aCBmaWx0ZXI6IG9ubHkgdHJpZ2dlciBidWlsZHMgd2hlbiB3b3Jrc3BhY2UgcGFja2FnZSBmaWxlcyBvclxuICAgIC8vIGJ1aWxkLXJlbGV2YW50IHJvb3QgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBDaGFuZ2VzIHRvIHNwZWNzIG9yIGRvY3NcbiAgICAvLyBhbG9uZSBzaG91bGQgbm90IHRyaWdnZXIgYSBuZXcgYnVpbGQuXG4gICAgY29uc3Qgd29ya3NwYWNlUGFja2FnZXMgPSB3cy5wYWNrYWdlcyA/PyBbJ3BhY2thZ2VzLyonXTtcbiAgICBjb25zdCBidWlsZFBhdGhzOiBzdHJpbmdbXSA9IFtcbiAgICAgIC8vIFdvcmtzcGFjZSBwYWNrYWdlIHNvdXJjZSBmaWxlcy5cbiAgICAgIC4uLndvcmtzcGFjZVBhY2thZ2VzLm1hcCgocGtnKSA9PiBgJHtwa2d9LyoqYCksXG4gICAgICAvLyBEZXBlbmRlbmN5IGxvY2sgJiB3b3Jrc3BhY2UgY29uZmlndXJhdGlvbi5cbiAgICAgICdwbnBtLWxvY2sueWFtbCcsXG4gICAgICAncG5wbS13b3Jrc3BhY2UueWFtbCcsXG4gICAgICAvLyBSb290IHBhY2thZ2UuanNvbiAoc2NyaXB0cywgZGV2RGVwcywgZW5naW5lcykuXG4gICAgICAncGFja2FnZS5qc29uJyxcbiAgICAgIC8vIFByb2plbiBjb25maWd1cmF0aW9uIOKAlCByZWdlbmVyYXRlcyBwcm9qZWN0IGZpbGVzLlxuICAgICAgJy5wcm9qZW5yYy50cycsXG4gICAgICAnLnByb2plbnJjLmpzJyxcbiAgICAgICcucHJvamVuLyoqJyxcbiAgICAgIC8vIFNoYXJlZCBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24uXG4gICAgICAndHNjb25maWcuanNvbicsXG4gICAgICAndHNjb25maWcuKi5qc29uJyxcbiAgICAgIC8vIFRoZSBidWlsZCB3b3JrZmxvdyBpdHNlbGYuXG4gICAgICAnLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueW1sJyxcbiAgICAgIC8vIFNoYXJlZCBsaW50IGNvbmZpZ3VyYXRpb24uXG4gICAgICAnLmVzbGludHJjLionLFxuICAgICAgJ2VzbGludC5jb25maWcuKicsXG4gICAgXTtcblxuICAgIHRoaXMucHJCdWlsZFdvcmtmbG93ID0gbmV3IGdpdGh1Yi5HaXRodWJXb3JrZmxvdyh0aGlzLmdpdGh1YiEsICdidWlsZCcpO1xuICAgIHRoaXMucHJCdWlsZFdvcmtmbG93Lm9uKHtcbiAgICAgIHB1bGxSZXF1ZXN0OiB7IHBhdGhzOiBidWlsZFBhdGhzIH0sXG4gICAgICBwdXNoOiB7IGJyYW5jaGVzOiBbJ21haW4nXSwgcGF0aHM6IGJ1aWxkUGF0aHMgfSxcbiAgICAgIHdvcmtmbG93RGlzcGF0Y2g6IHt9LFxuICAgIH0pO1xuICAgIHRoaXMucHJCdWlsZFdvcmtmbG93LmFkZEpvYignYnVpbGQnLCB7XG4gICAgICBydW5zT246IFsndWJ1bnR1LWxhdGVzdCddLFxuICAgICAgcGVybWlzc2lvbnM6IHsgY29udGVudHM6IGdpdGh1Yi53b3JrZmxvd3MuSm9iUGVybWlzc2lvbi5SRUFEIH0sXG4gICAgICBzdGVwczogYnVpbGRTdGVwcyxcbiAgICB9KTtcblxuICAgIC8vIEFXUyBBbXBsaWZ5IEhvc3RpbmcgYnVpbGQgc3BlYy4gUE5QTSB3b3Jrc3BhY2VzIGFyZSBub3QgYXV0by1kZXRlY3RlZCBieVxuICAgIC8vIEFtcGxpZnksIHNvIGVhY2ggYXBwIGluc3RhbGxzIGF0IHRoZSByZXBvIHJvb3QsIHByZS1idWlsZHMgaXRzIHNoYXJlZFxuICAgIC8vIHBhY2thZ2VzLCB0aGVuIGJ1aWxkcyBmcm9tIGl0cyBhcHBSb290IChzZWUgQURSLTAwMDIpLlxuICAgIGlmIChvcHRpb25zLmFtcGxpZnlBcHBzICYmIG9wdGlvbnMuYW1wbGlmeUFwcHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5hbXBsaWZ5RmlsZSA9IG5ldyBZYW1sRmlsZSh0aGlzLCAnYW1wbGlmeS55bWwnLCB7XG4gICAgICAgIG9iajoge1xuICAgICAgICAgIHZlcnNpb246IDEsXG4gICAgICAgICAgYXBwbGljYXRpb25zOiBvcHRpb25zLmFtcGxpZnlBcHBzLm1hcCgoYXBwKSA9PiB0aGlzLnJlbmRlckFtcGxpZnlBcHAoYXBwKSksXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbmRlckFtcGxpZnlBcHAoYXBwOiBNb25vcmVwb0FtcGxpZnlBcHApIHtcbiAgICBjb25zdCBhbmd1bGFyID0gYXBwLmZyYW1ld29yayA9PT0gTW9ub3JlcG9BbXBsaWZ5RnJhbWV3b3JrLkFOR1VMQVI7XG4gICAgLy8gU2NvcGUgdGhlIGluc3RhbGwgdG8gdGhlIGFwcCdzIGRlcGVuZGVuY3kgY2xvc3VyZSB0byBhdm9pZCBjb25jdXJyZW50XG4gICAgLy8gcHJvamVuL25vZGVfbW9kdWxlcyByZW5hbWUgcmFjZXMgdW5kZXIgdGhlIGhvaXN0ZWQgbGlua2VyIChzZWUgIzM3MikuXG4gICAgY29uc3QgZmlsdGVyID0gYXBwLmluc3RhbGxGaWx0ZXIgPz8gYCR7YXBwLmJ1aWxkRmlsdGVyfS4uLmA7XG4gICAgY29uc3QgaW5zdGFsbENvbW1hbmQgPSBhcHAuaW5zdGFsbENvbW1hbmRcbiAgICAgID8/IGBwbnBtIGluc3RhbGwgLS1mcm96ZW4tbG9ja2ZpbGUgLS1ub2RlLWxpbmtlciBob2lzdGVkIC0tZmlsdGVyIFwiJHtmaWx0ZXJ9XCJgO1xuICAgIGNvbnN0IHByZUJ1aWxkID0gW1xuICAgICAgJ2NvcmVwYWNrIGVuYWJsZScsXG4gICAgICBpbnN0YWxsQ29tbWFuZCxcbiAgICAgIC4uLihhcHAucHJlQnVpbGRGaWx0ZXJzID8/IFtdKS5tYXAoKGYpID0+IGBwbnBtIC0tZmlsdGVyICR7Zn0gcnVuIGJ1aWxkYCksXG4gICAgXTtcbiAgICAvLyBCVUlMRF9FTlYgKGRldnxwcm9kKSBpcyBwcm92aWRlZCBhcyBhbiBBbXBsaWZ5IGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgIGNvbnN0IGJ1aWxkQ29tbWFuZCA9IGFwcC5idWlsZENvbW1hbmQgPz8gKGFuZ3VsYXJcbiAgICAgID8gYHBucG0gLS1maWx0ZXIgJHthcHAuYnVpbGRGaWx0ZXJ9IHJ1biBidWlsZDpcXCR7QlVJTERfRU5WfWBcbiAgICAgIDogYHBucG0gLS1maWx0ZXIgJHthcHAuYnVpbGRGaWx0ZXJ9IHJ1biBidWlsZGApO1xuICAgIGNvbnN0IGJhc2VEaXJlY3RvcnkgPSBhcHAuYXJ0aWZhY3RCYXNlRGlyZWN0b3J5ID8/IChhbmd1bGFyXG4gICAgICA/IGAke2FwcC5hcHBSb290fS9kaXN0LyR7YXBwLmJ1aWxkRmlsdGVyfS9icm93c2VyYFxuICAgICAgOiBgJHthcHAuYXBwUm9vdH0vLm5leHRgKTtcbiAgICBjb25zdCBjYWNoZVBhdGhzID0gYXBwLmNhY2hlUGF0aHMgPz8gW1xuICAgICAgJ25vZGVfbW9kdWxlcy8qKi8qJyxcbiAgICAgIGFuZ3VsYXIgPyBgJHthcHAuYXBwUm9vdH0vLmFuZ3VsYXIvY2FjaGUvKiovKmAgOiBgJHthcHAuYXBwUm9vdH0vLm5leHQvY2FjaGUvKiovKmAsXG4gICAgXTtcbiAgICByZXR1cm4ge1xuICAgICAgYXBwUm9vdDogYXBwLmFwcFJvb3QsXG4gICAgICBmcm9udGVuZDoge1xuICAgICAgICAvLyBJbnN0YWxsL2J1aWxkIGZyb20gdGhlIG1vbm9yZXBvIHJvb3Qgc28gdGhlIHdvcmtzcGFjZSByb290XG4gICAgICAgIC8vIHBhY2thZ2UuanNvbiBhbmQgcG5wbS1sb2NrLnlhbWwgYXJlIGF2YWlsYWJsZS5cbiAgICAgICAgYnVpbGRQYXRoOiAnLycsXG4gICAgICAgIHBoYXNlczoge1xuICAgICAgICAgIHByZUJ1aWxkOiB7IGNvbW1hbmRzOiBwcmVCdWlsZCB9LFxuICAgICAgICAgIGJ1aWxkOiB7IGNvbW1hbmRzOiBbYnVpbGRDb21tYW5kXSB9LFxuICAgICAgICB9LFxuICAgICAgICBhcnRpZmFjdHM6IHsgYmFzZURpcmVjdG9yeSwgZmlsZXM6IFsnKiovKiddIH0sXG4gICAgICAgIGNhY2hlOiB7IHBhdGhzOiBjYWNoZVBhdGhzIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -10,7 +10,7 @@ const cdk_app_1 = require("./cdk-app");
10
10
  * @pjid taimos-cdk-app-private
11
11
  */
12
12
  class PrivateTaimosCdkApp extends cdk_app_1.TaimosCdkApp {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@taimos/projen.PrivateTaimosCdkApp", version: "0.1.78" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@taimos/projen.PrivateTaimosCdkApp", version: "0.1.79" };
14
14
  constructor(options) {
15
15
  super({
16
16
  licensed: false,
@@ -10,7 +10,7 @@ const ts_lib_1 = require("./ts-lib");
10
10
  * @pjid taimos-ts-lib-private
11
11
  */
12
12
  class TaimosPrivateTypescriptLibrary extends ts_lib_1.TaimosTypescriptLibrary {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@taimos/projen.TaimosPrivateTypescriptLibrary", version: "0.1.78" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@taimos/projen.TaimosPrivateTypescriptLibrary", version: "0.1.79" };
14
14
  constructor(options) {
15
15
  super({
16
16
  licensed: false,
@@ -11,7 +11,7 @@ const cdk_app_1 = require("./cdk-app");
11
11
  * @pjid taimos-cdk-app-production
12
12
  */
13
13
  class ProductionTaimosCdkApp extends cdk_app_1.TaimosCdkApp {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@taimos/projen.ProductionTaimosCdkApp", version: "0.1.78" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@taimos/projen.ProductionTaimosCdkApp", version: "0.1.79" };
15
15
  /**
16
16
  * The SonarCloud properties file.
17
17
  */
@@ -9,7 +9,7 @@ const projen_1 = require("projen");
9
9
  * @pjid taimos-ts-lib
10
10
  */
11
11
  class TaimosTypescriptLibrary extends projen_1.typescript.TypeScriptProject {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@taimos/projen.TaimosTypescriptLibrary", version: "0.1.78" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@taimos/projen.TaimosTypescriptLibrary", version: "0.1.79" };
13
13
  constructor(options) {
14
14
  super({
15
15
  authorName: 'Taimos GmbH',
package/package.json CHANGED
@@ -75,7 +75,7 @@
75
75
  "publishConfig": {
76
76
  "access": "public"
77
77
  },
78
- "version": "0.1.78",
78
+ "version": "0.1.79",
79
79
  "jest": {
80
80
  "coverageProvider": "v8",
81
81
  "testMatch": [