@macedon-technologies/batman 1.17.3 → 1.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/.jsii +124 -17
  2. package/.swamp.yaml +6 -0
  3. package/API.md +107 -0
  4. package/CLAUDE.md +44 -0
  5. package/architecture-rules/README.md +42 -0
  6. package/architecture-rules/check.ts +162 -0
  7. package/architecture-rules/rules.json +3 -0
  8. package/architecture-rules/tsconfig.json +14 -0
  9. package/attestation/manifest.ts +40 -0
  10. package/attestation/tsconfig.json +13 -0
  11. package/attestation/verify.ts +142 -0
  12. package/lib/BaseApplicationStackFile.js +4 -3
  13. package/lib/BatmanProject.js +8 -2
  14. package/lib/BootcampBaseApplicationStackFile.js +4 -3
  15. package/lib/BootcampProject.js +8 -2
  16. package/lib/CodeOwnersFile.js +1 -1
  17. package/lib/ProductionDeployWorkflow.js +1 -1
  18. package/lib/SoftwareFactoryArchitectureRules.d.ts +10 -0
  19. package/lib/SoftwareFactoryArchitectureRules.js +245 -0
  20. package/lib/SoftwareFactoryAttestation.d.ts +18 -0
  21. package/lib/SoftwareFactoryAttestation.js +221 -0
  22. package/lib/SoftwareFactoryFiles.d.ts +45 -0
  23. package/lib/SoftwareFactoryFiles.js +102 -0
  24. package/lib/SoftwareFactoryModels.d.ts +25 -0
  25. package/lib/SoftwareFactoryModels.js +306 -0
  26. package/lib/SoftwareFactoryOpenSpecGates.d.ts +8 -0
  27. package/lib/SoftwareFactoryOpenSpecGates.js +75 -0
  28. package/lib/SoftwareFactoryWorkflows.d.ts +28 -0
  29. package/lib/SoftwareFactoryWorkflows.js +326 -0
  30. package/lib/StagingDeployWorkflow.js +1 -1
  31. package/lib/StaticWebsiteConstructFile.js +2 -2
  32. package/lib/WorkflowAutoDiscover.js +1 -1
  33. package/lib/index.d.ts +1 -0
  34. package/lib/index.js +2 -1
  35. package/lib/utils.js +29 -1
  36. package/models/@goodcraft/github/platform-common-pr.yaml +10 -0
  37. package/models/@swamp/software-factory/platform-common-factory.yaml +240 -0
  38. package/models/@webframp/github/platform-common-issues.yaml +8 -0
  39. package/models/command/shell/platform-common-shell-architecture.yaml +8 -0
  40. package/models/command/shell/platform-common-shell-manifest.yaml +8 -0
  41. package/models/command/shell/platform-common-shell.yaml +8 -0
  42. package/openspec-gates/check-tasks-complete.ts +44 -0
  43. package/openspec-gates/tsconfig.json +13 -0
  44. package/package.json +6 -1
  45. package/workflows/workflow-openspec-plan-verify.yaml +51 -0
  46. package/workflows/workflow-openspec-tasks-verify.yaml +51 -0
  47. package/workflows/workflow-pre-pr-verify.yaml +118 -0
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Single source of truth for which files' content determines "was this PR
3
+ * actually verified against the rules it claims." Hashed by both the
4
+ * pre-pr-verify workflow (to embed in the PR's attestation) and the
5
+ * verify-attestation GitHub Action (to check nothing drifted since). Keeping
6
+ * one list in one file is what keeps generator and checker from disagreeing
7
+ * about what "the config" even is.
8
+ */
9
+ import { createHash } from 'node:crypto';
10
+ import { readFileSync } from 'node:fs';
11
+ import { join } from 'node:path';
12
+
13
+ export const MANIFEST_FILES: readonly string[] = [
14
+ 'workflows/workflow-pre-pr-verify.yaml',
15
+ 'workflows/workflow-openspec-plan-verify.yaml',
16
+ 'workflows/workflow-openspec-tasks-verify.yaml',
17
+ 'models/@swamp/software-factory/platform-common-factory.yaml',
18
+ 'architecture-rules/rules.json',
19
+ 'architecture-rules/check.ts',
20
+ 'openspec-gates/check-tasks-complete.ts',
21
+ 'CLAUDE.md',
22
+ ];
23
+
24
+ export interface Manifest {
25
+ generatedAt: string;
26
+ files: Record<string, string>;
27
+ }
28
+
29
+ export function computeManifest(repoRoot: string = join(__dirname, '..')): Manifest {
30
+ const files: Record<string, string> = {};
31
+ for (const relativePath of MANIFEST_FILES) {
32
+ const contents = readFileSync(join(repoRoot, relativePath));
33
+ files[relativePath] = createHash('sha256').update(contents).digest('hex');
34
+ }
35
+ return { generatedAt: new Date().toISOString(), files };
36
+ }
37
+
38
+ if (require.main === module) {
39
+ console.log(JSON.stringify(computeManifest(), null, 2));
40
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "extends": "../tsconfig.json",
3
+ "compilerOptions": {
4
+ "noEmit": true,
5
+ "rootDir": "."
6
+ },
7
+ "include": [
8
+ "*.ts"
9
+ ],
10
+ "exclude": [
11
+ "node_modules"
12
+ ]
13
+ }
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Checks the `<!-- attestation-manifest ... -->` block a factory-opened PR
3
+ * embeds in its body (see the open-pr stage in
4
+ * models/@swamp/software-factory/platform-common-factory.yaml) against reality at the
5
+ * commit being merged. Per stack72.dev/ai-broke-the-assumptions-behind-ci/:
6
+ * this proves the verification-relevant config hasn't drifted since the
7
+ * attestation was generated — it does NOT independently prove the tests
8
+ * in that attestation actually ran. That's an accepted limitation, not an
9
+ * oversight; see the article and attestation/manifest.ts's own comment.
10
+ */
11
+ import { readFileSync } from 'node:fs';
12
+ import { computeManifest, type Manifest } from './manifest';
13
+
14
+ const MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000; // 7 days
15
+ // Global, and deliberately loose about what's *between* the marker and the
16
+ // block's own closing "-->" — PR bodies can (and, it turns out, do) mention
17
+ // the literal "<!-- attestation-manifest -->" syntax in prose describing
18
+ // this mechanism. Each match is independently validated below; a mention
19
+ // with no JSON inside it is skipped rather than treated as a parse error.
20
+ const MANIFEST_BLOCK_RE = /<!--\s*attestation-manifest([\s\S]*?)-->/g;
21
+
22
+ interface EmbeddedManifest extends Manifest {
23
+ commit: string;
24
+ status: string;
25
+ }
26
+
27
+ function isEmbeddedManifest(value: unknown): value is EmbeddedManifest {
28
+ const candidate = value as Partial<EmbeddedManifest> | null;
29
+ return (
30
+ typeof candidate === 'object' &&
31
+ candidate !== null &&
32
+ typeof candidate.commit === 'string' &&
33
+ typeof candidate.status === 'string' &&
34
+ typeof candidate.generatedAt === 'string' &&
35
+ typeof candidate.files === 'object' &&
36
+ candidate.files !== null
37
+ );
38
+ }
39
+
40
+ // Balanced-brace scan rather than a regex for the JSON itself: the manifest
41
+ // has nested objects (files: {...}), so a non-greedy `\{.*?\}` would stop at
42
+ // the first inner "}" instead of the real end of the object.
43
+ function extractBalancedJson(text: string): string | null {
44
+ const start = text.indexOf('{');
45
+ if (start === -1) return null;
46
+ let depth = 0;
47
+ for (let i = start; i < text.length; i++) {
48
+ if (text[i] === '{') depth++;
49
+ else if (text[i] === '}') {
50
+ depth--;
51
+ if (depth === 0) return text.slice(start, i + 1);
52
+ }
53
+ }
54
+ return null;
55
+ }
56
+
57
+ function extractEmbeddedManifest(body: string): EmbeddedManifest {
58
+ let matchedAnyBlock = false;
59
+ for (const match of body.matchAll(MANIFEST_BLOCK_RE)) {
60
+ matchedAnyBlock = true;
61
+ const jsonText = extractBalancedJson(match[1]);
62
+ if (!jsonText) continue;
63
+ try {
64
+ const parsed = JSON.parse(jsonText);
65
+ if (isEmbeddedManifest(parsed)) return parsed;
66
+ } catch {
67
+ // Not this one — keep looking at the next attestation-manifest mention.
68
+ }
69
+ }
70
+ throw new Error(
71
+ matchedAnyBlock
72
+ ? 'Found <!-- attestation-manifest --> mention(s) in the PR body, but none contained a complete, valid manifest.'
73
+ : 'No <!-- attestation-manifest --> block found in the PR body. This PR was never verified by ' +
74
+ 'pre-pr-verify (or the block was removed) — run the factory\'s pre-pr-verify workflow and re-open/update the PR.',
75
+ );
76
+ }
77
+
78
+ function verify(prBody: string, expectedCommit: string): string[] {
79
+ let embedded: EmbeddedManifest;
80
+ try {
81
+ embedded = extractEmbeddedManifest(prBody);
82
+ } catch (err) {
83
+ return [err instanceof Error ? err.message : String(err)];
84
+ }
85
+
86
+ const errors: string[] = [];
87
+
88
+ if (embedded.commit !== expectedCommit) {
89
+ errors.push(
90
+ `Attestation is for commit ${embedded.commit}, but the PR's head commit is ${expectedCommit}. ` +
91
+ 'New commits were pushed without re-running pre-pr-verify.',
92
+ );
93
+ }
94
+
95
+ if (embedded.status !== 'succeeded') {
96
+ errors.push(`Attestation status is "${embedded.status}", not "succeeded".`);
97
+ }
98
+
99
+ const ageMs = Date.now() - Date.parse(embedded.generatedAt);
100
+ if (!Number.isFinite(ageMs)) {
101
+ errors.push(`Attestation generatedAt ("${embedded.generatedAt}") is not a parseable timestamp.`);
102
+ } else if (ageMs > MAX_AGE_MS) {
103
+ errors.push(`Attestation is ${Math.floor(ageMs / (24 * 60 * 60 * 1000))} days old (max ${MAX_AGE_MS / (24 * 60 * 60 * 1000)}) — re-run pre-pr-verify.`);
104
+ }
105
+
106
+ const actual = computeManifest();
107
+ for (const file of Object.keys(actual.files)) {
108
+ if (embedded.files[file] !== actual.files[file]) {
109
+ errors.push(`${file} has changed since the attestation was generated (expected ${embedded.files[file] ?? 'missing'}, got ${actual.files[file]}).`);
110
+ }
111
+ }
112
+ for (const file of Object.keys(embedded.files)) {
113
+ if (!(file in actual.files)) {
114
+ errors.push(`${file} is in the attestation manifest but no longer in the current file list (attestation/manifest.ts's MANIFEST_FILES changed).`);
115
+ }
116
+ }
117
+
118
+ return errors;
119
+ }
120
+
121
+ function parseArgs(argv: string[]): { bodyFile: string; commit: string } {
122
+ const bodyFile = argv[argv.indexOf('--body-file') + 1];
123
+ const commit = argv[argv.indexOf('--commit') + 1];
124
+ if (!bodyFile || !commit) {
125
+ throw new Error('Usage: verify.ts --body-file <path> --commit <sha>');
126
+ }
127
+ return { bodyFile, commit };
128
+ }
129
+
130
+ if (require.main === module) {
131
+ const { bodyFile, commit } = parseArgs(process.argv.slice(2));
132
+ const prBody = readFileSync(bodyFile, 'utf8');
133
+ const errors = verify(prBody, commit);
134
+ if (errors.length > 0) {
135
+ console.error('Attestation verification failed:\n');
136
+ for (const error of errors) {
137
+ console.error(` - ${error}`);
138
+ }
139
+ process.exit(1);
140
+ }
141
+ console.log(`Attestation verified: commit ${commit}, all ${Object.keys(computeManifest().files).length} tracked files match.`);
142
+ }
@@ -87,6 +87,7 @@ class BaseApplicationStackFile extends projen_1.TextFile {
87
87
  ' protected hostedZone: IHostedZone;',
88
88
  ' protected vpc: IVpc;',
89
89
  ' protected api: Api;',
90
+ ' protected staticWebsite: StaticWebsite;',
90
91
  '',
91
92
  ' constructor(scope: Construct, private id: string, protected props: TProps) {',
92
93
  ' super(scope, id, props);',
@@ -119,7 +120,7 @@ class BaseApplicationStackFile extends projen_1.TextFile {
119
120
  ' }',
120
121
  '',
121
122
  ' protected createStaticWebsite() {',
122
- ' new StaticWebsite(this, \'StaticWebsite\', {',
123
+ ' this.staticWebsite = new StaticWebsite(this, \'StaticWebsite\', {',
123
124
  ' hostedZone: this.hostedZone,',
124
125
  ' api: this.api.restApi,',
125
126
  ' hostname: this.props.hostname,',
@@ -150,7 +151,7 @@ class BaseApplicationStackFile extends projen_1.TextFile {
150
151
  '',
151
152
  ' protected createOutputs() {',
152
153
  ' new CfnOutput(this, \'WebsiteUrl\', {',
153
- ' value: `https://${this.props.hostname}.${this.hostedZone.zoneName}`,',
154
+ ' value: `https://${this.staticWebsite.hostname}`,',
154
155
  ' description: \'The URL of the static website\',',
155
156
  ' exportName: `${this.id.replace(/\\//, \'-\')}-WebsiteUrl`,',
156
157
  ' });',
@@ -173,4 +174,4 @@ class BaseApplicationStackFile extends projen_1.TextFile {
173
174
  }
174
175
  }
175
176
  exports.BaseApplicationStackFile = BaseApplicationStackFile;
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUFwcGxpY2F0aW9uU3RhY2tGaWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Jhc2VBcHBsaWNhdGlvblN0YWNrRmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBa0M7QUFHbEMsTUFBYSx3QkFBeUIsU0FBUSxpQkFBUTtJQUNwRCxZQUFZLE9BQTRCO1FBQ3RDLEtBQUssQ0FBQyxPQUFPLEVBQUUsb0NBQW9DLEVBQUU7WUFDbkQsTUFBTSxFQUFFLElBQUk7WUFDWixRQUFRLEVBQUUsSUFBSTtZQUNkLEtBQUssRUFBRTtnQkFDTCx3RUFBd0U7Z0JBQ3hFLG9EQUFvRDtnQkFDcEQsc0VBQXNFO2dCQUN0RSw0REFBNEQ7Z0JBQzVELDJDQUEyQztnQkFDM0MsOERBQThEO2dCQUM5RCw2REFBNkQ7Z0JBQzdELDRDQUE0QztnQkFDNUMsZ0VBQWdFO2dCQUNoRSxFQUFFO2dCQUNGLGlFQUFpRTtnQkFDakUsRUFBRTtnQkFDRix3QkFBd0I7Z0JBQ3hCLFNBQVM7Z0JBQ1QsZ0VBQWdFO2dCQUNoRSxRQUFRO2dCQUNSLHFCQUFxQjtnQkFDckIsU0FBUztnQkFDVCx5Q0FBeUM7Z0JBQ3pDLEVBQUU7Z0JBQ0YsU0FBUztnQkFDVCwrREFBK0Q7Z0JBQy9ELFFBQVE7Z0JBQ1IscUJBQXFCO2dCQUNyQixTQUFTO2dCQUNULDJDQUEyQztnQkFDM0MsRUFBRTtnQkFDRixTQUFTO2dCQUNULHNFQUFzRTtnQkFDdEUsUUFBUTtnQkFDUixxQ0FBcUM7Z0JBQ3JDLFNBQVM7Z0JBQ1Qsb0NBQW9DO2dCQUNwQyxNQUFNO2dCQUNOLE9BQU87Z0JBQ1AsMERBQTBEO2dCQUMxRCxNQUFNO2dCQUNOLCtDQUErQztnQkFDL0MsT0FBTztnQkFDUCwwQ0FBMEM7Z0JBQzFDLEVBQUU7Z0JBQ0YsT0FBTztnQkFDUCwrRUFBK0U7Z0JBQy9FLE9BQU87Z0JBQ1AsNkZBQTZGO2dCQUM3RixFQUFFO2dCQUNGLE9BQU87Z0JBQ1Asa0VBQWtFO2dCQUNsRSxPQUFPO2dCQUNQLHFFQUFxRTtnQkFDckUsRUFBRTtnQkFDRixPQUFPO2dCQUNQLGlDQUFpQztnQkFDakMsTUFBTTtnQkFDTix5REFBeUQ7Z0JBQ3pELE9BQU87Z0JBQ1AsaUNBQWlDO2dCQUNqQyxFQUFFO2dCQUNGLE9BQU87Z0JBQ1AscUNBQXFDO2dCQUNyQyxNQUFNO2dCQUNOLDZCQUE2QjtnQkFDN0IsT0FBTztnQkFDUCw4QkFBOEI7Z0JBQzlCLEVBQUU7Z0JBQ0YsT0FBTztnQkFDUCxpRkFBaUY7Z0JBQ2pGLE1BQU07Z0JBQ04seUJBQXlCO2dCQUN6Qix1QkFBdUI7Z0JBQ3ZCLE9BQU87Z0JBQ1AsOEJBQThCO2dCQUM5QixHQUFHO2dCQUNILEVBQUU7Z0JBQ0YsNkZBQTZGO2dCQUM3RixxQ0FBcUM7Z0JBQ3JDLHNDQUFzQztnQkFDdEMsd0JBQXdCO2dCQUN4Qix1QkFBdUI7Z0JBQ3ZCLEVBQUU7Z0JBQ0YsZ0ZBQWdGO2dCQUNoRiw4QkFBOEI7Z0JBQzlCLEVBQUU7Z0JBQ0YscUNBQXFDO2dCQUNyQyxzREFBc0Q7Z0JBQ3RELE9BQU87Z0JBQ1AsRUFBRTtnQkFDRixvQ0FBb0M7Z0JBQ3BDLDBCQUEwQjtnQkFDMUIsK0RBQStEO2dCQUMvRCxPQUFPO2dCQUNQLEVBQUU7Z0JBQ0YsOEJBQThCO2dCQUM5Qiw2QkFBNkI7Z0JBQzdCLHdEQUF3RDtnQkFDeEQsT0FBTztnQkFDUCxFQUFFO2dCQUNGLHVCQUF1QjtnQkFDdkIsRUFBRTtnQkFDRix1QkFBdUI7Z0JBQ3ZCLHNCQUFzQjtnQkFDdEIsaURBQWlEO2dCQUNqRCxPQUFPO2dCQUNQLEVBQUU7Z0JBQ0YsaUNBQWlDO2dCQUNqQyxFQUFFO2dCQUNGLDJCQUEyQjtnQkFDM0IseUVBQXlFO2dCQUN6RSxLQUFLO2dCQUNMLEVBQUU7Z0JBQ0YscUNBQXFDO2dCQUNyQyxrREFBa0Q7Z0JBQ2xELG9DQUFvQztnQkFDcEMsOEJBQThCO2dCQUM5QixzQ0FBc0M7Z0JBQ3RDLFNBQVM7Z0JBQ1QsS0FBSztnQkFDTCxFQUFFO2dCQUNGLDJCQUEyQjtnQkFDM0IseUNBQXlDO2dCQUN6QyxzQkFBc0I7Z0JBQ3RCLDhDQUE4QztnQkFDOUMsNENBQTRDO2dCQUM1QyxTQUFTO2dCQUNULEtBQUs7Z0JBQ0wsRUFBRTtnQkFDRiwyQkFBMkI7Z0JBQzNCLHlDQUF5QztnQkFDekMsd0RBQXdEO2dCQUN4RCxrQkFBa0I7Z0JBQ2xCLHVCQUF1QjtnQkFDdkIsU0FBUztnQkFDVCxLQUFLO2dCQUNMLEVBQUU7Z0JBQ0Ysa0NBQWtDO2dCQUNsQyxxRUFBcUU7Z0JBQ3JFLG9EQUFvRDtnQkFDcEQsU0FBUztnQkFDVCxLQUFLO2dCQUNMLEVBQUU7Z0JBQ0YsK0JBQStCO2dCQUMvQiwyQ0FBMkM7Z0JBQzNDLDRFQUE0RTtnQkFDNUUsdURBQXVEO2dCQUN2RCxrRUFBa0U7Z0JBQ2xFLFNBQVM7Z0JBQ1QsS0FBSztnQkFDTCxFQUFFO2dCQUNGLHdDQUF3QztnQkFDeEMsa0hBQWtIO2dCQUNsSCwyREFBMkQ7Z0JBQzNELHVDQUF1QztnQkFDdkMsNERBQTREO2dCQUM1RCxzRUFBc0U7Z0JBQ3RFLDBFQUEwRTtnQkFDMUUsa0NBQWtDO2dCQUNsQyxTQUFTO2dCQUNULEtBQUs7Z0JBQ0wsR0FBRztnQkFDSCxFQUFFO2FBQ0g7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUF6S0QsNERBeUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dEZpbGUgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgQXdzQ2RrVHlwZVNjcmlwdEFwcCB9IGZyb20gJ3Byb2plbi9saWIvYXdzY2RrJztcblxuZXhwb3J0IGNsYXNzIEJhc2VBcHBsaWNhdGlvblN0YWNrRmlsZSBleHRlbmRzIFRleHRGaWxlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogQXdzQ2RrVHlwZVNjcmlwdEFwcCkge1xuICAgIHN1cGVyKHByb2plY3QsICdzcmMvc3RhY2tzL0Jhc2VBcHBsaWNhdGlvblN0YWNrLnRzJywge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgICBsaW5lczogW1xuICAgICAgICAnaW1wb3J0IHsgQXNwZWN0cywgQ2ZuT3V0cHV0LCBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gXFwnYXdzLWNkay1saWJcXCc7JyxcbiAgICAgICAgJ2ltcG9ydCB7IElWcGMsIFZwYyB9IGZyb20gXFwnYXdzLWNkay1saWIvYXdzLWVjMlxcJzsnLFxuICAgICAgICAnaW1wb3J0IHsgSG9zdGVkWm9uZSwgSUhvc3RlZFpvbmUgfSBmcm9tIFxcJ2F3cy1jZGstbGliL2F3cy1yb3V0ZTUzXFwnOycsXG4gICAgICAgICdpbXBvcnQgeyBTZWNyZXQgfSBmcm9tIFxcJ2F3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlclxcJzsnLFxuICAgICAgICAnaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcXCdjb25zdHJ1Y3RzXFwnOycsXG4gICAgICAgICdpbXBvcnQgeyBEYXRhZG9nTGFtYmRhIH0gZnJvbSBcXCdkYXRhZG9nLWNkay1jb25zdHJ1Y3RzLXYyXFwnOycsXG4gICAgICAgICdpbXBvcnQgeyBEYXRhRG9nQXNwZWN0IH0gZnJvbSBcXCcuLi9hc3BlY3RzL0RhdGFEb2dBc3BlY3RcXCc7JyxcbiAgICAgICAgJ2ltcG9ydCB7IEFwaSB9IGZyb20gXFwnLi4vY29uc3RydWN0cy9BcGlcXCc7JyxcbiAgICAgICAgJ2ltcG9ydCB7IFN0YXRpY1dlYnNpdGUgfSBmcm9tIFxcJy4uL2NvbnN0cnVjdHMvU3RhdGljV2Vic2l0ZVxcJzsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJ2V4cG9ydCBpbnRlcmZhY2UgQmFzZUFwcGxpY2F0aW9uU3RhY2tQcm9wcyBleHRlbmRzIFN0YWNrUHJvcHMgeycsXG4gICAgICAgICcnLFxuICAgICAgICAnICByZWFkb25seSBkYXRhZG9nPzogeycsXG4gICAgICAgICcgICAgLyoqJyxcbiAgICAgICAgJyAgICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgRGF0YWRvZyBOb2RlLmpzIExhbWJkYSBsYXllciB0byB1c2UuJyxcbiAgICAgICAgJyAgICAgKicsXG4gICAgICAgICcgICAgICogQGRlZmF1bHQgMTI4JyxcbiAgICAgICAgJyAgICAgKi8nLFxuICAgICAgICAnICAgIHJlYWRvbmx5IG5vZGVMYXllclZlcnNpb24/OiBudW1iZXI7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgLyoqJyxcbiAgICAgICAgJyAgICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgRGF0YWRvZyBQeXRob24gTGFtYmRhIGxheWVyIHRvIHVzZS4nLFxuICAgICAgICAnICAgICAqJyxcbiAgICAgICAgJyAgICAgKiBAZGVmYXVsdCAxMjMnLFxuICAgICAgICAnICAgICAqLycsXG4gICAgICAgICcgICAgcmVhZG9ubHkgcHl0aG9uTGF5ZXJWZXJzaW9uPzogbnVtYmVyOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgIC8qKicsXG4gICAgICAgICcgICAgICogVGhlIG5hbWUgb2YgdGhlIHByb2plY3Qvc2VydmljZSBmb3IgRGF0YWRvZyB0YWdnaW5nIHB1cnBvc2VzLicsXG4gICAgICAgICcgICAgIConLFxuICAgICAgICAnICAgICAqIEBkZWZhdWx0IC0gdXNlcyB0aGUgc3RhY2sgSUQnLFxuICAgICAgICAnICAgICAqLycsXG4gICAgICAgICcgICAgcmVhZG9ubHkgcHJvamVjdE5hbWU/OiBzdHJpbmc7JyxcbiAgICAgICAgJyAgfTsnLFxuICAgICAgICAnICAvKionLFxuICAgICAgICAnICAgKiBUaGUgZG9tYWluIG5hbWUgb2YgdGhlIFJvdXRlIDUzIGhvc3RlZCB6b25lIHRvIHVzZS4nLFxuICAgICAgICAnICAgKicsXG4gICAgICAgICcgICAqIEBleGFtcGxlIFxcJ21hY2Vkb24uc2FuZGJveC5kZWZpYW5jZS5haVxcJycsXG4gICAgICAgICcgICAqLycsXG4gICAgICAgICcgIHJlYWRvbmx5IGhvc3RlZFpvbmVEb21haW5OYW1lOiBzdHJpbmc7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIC8qKicsXG4gICAgICAgICcgICAqIFRoZSBBUk4gb2YgdGhlIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgdGhhdCBjb250YWlucyB0aGUgRGF0YWRvZyBBUEkga2V5LicsXG4gICAgICAgICcgICAqLycsXG4gICAgICAgICcgIHJlYWRvbmx5IGRhdGFkb2dTZWNyZXRBcm46IGBhcm46YXdzOnNlY3JldHNtYW5hZ2VyOiR7c3RyaW5nfToke3N0cmluZ306c2VjcmV0OiR7c3RyaW5nfWA7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIC8qKicsXG4gICAgICAgICcgICAqIFRoZSBDbGVyayBKV0tTIFVSTCB1c2VkIHRvIHZlcmlmeSBzZXNzaW9uIHRva2VuIHNpZ25hdHVyZXMuJyxcbiAgICAgICAgJyAgICovJyxcbiAgICAgICAgJyAgcmVhZG9ubHkgY2xlcmtKd2tzVXJsOiBgaHR0cHM6Ly8ke3N0cmluZ30vLndlbGwta25vd24vandrcy5qc29uYDsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgLyoqJyxcbiAgICAgICAgJyAgICogVGhlIE44TiBlbmRwb2ludCBiYXNlIFVSTC4nLFxuICAgICAgICAnICAgKicsXG4gICAgICAgICcgICAqIEBleGFtcGxlIFxcJ2h0dHBzOi8vd29ya2Zsb3cuc2FuZGJveC5kZWZpYW5jZS5haS9cXCcnLFxuICAgICAgICAnICAgKi8nLFxuICAgICAgICAnICByZWFkb25seSBuOG5FbmRwb2ludDogc3RyaW5nOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAvKionLFxuICAgICAgICAnICAgKiBUaGUgbmFtZSBvZiB0aGUgVlBDIHRvIGNyZWF0ZS4nLFxuICAgICAgICAnICAgKicsXG4gICAgICAgICcgICAqIEBkZWZhdWx0IFxcJyR7aWR9LXZwY1xcJycsXG4gICAgICAgICcgICAqLycsXG4gICAgICAgICcgIHJlYWRvbmx5IHZwY05hbWU/OiBzdHJpbmc7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIC8qKicsXG4gICAgICAgICcgICAqIFRoZSBob3N0bmFtZSBmb3IgdGhlIHN0YXRpYyB3ZWJzaXRlLiBUaGlzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGhvc3RlZHpvbmUuJyxcbiAgICAgICAgJyAgIConLFxuICAgICAgICAnICAgKiBAZXhhbXBsZSBcXCdteWJvaVxcJycsXG4gICAgICAgICcgICAqIEBkZWZhdWx0IFxcJ212cFxcJycsXG4gICAgICAgICcgICAqLycsXG4gICAgICAgICcgIHJlYWRvbmx5IGhvc3RuYW1lOiBzdHJpbmc7JyxcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgJ2V4cG9ydCBjbGFzcyBCYXNlQXBwbGljYXRpb25TdGFjazxUUHJvcHMgZXh0ZW5kcyBCYXNlQXBwbGljYXRpb25TdGFja1Byb3BzPiBleHRlbmRzIFN0YWNrIHsnLFxuICAgICAgICAnICBwcm90ZWN0ZWQgZGF0YWRvZzogRGF0YWRvZ0xhbWJkYTsnLFxuICAgICAgICAnICBwcm90ZWN0ZWQgaG9zdGVkWm9uZTogSUhvc3RlZFpvbmU7JyxcbiAgICAgICAgJyAgcHJvdGVjdGVkIHZwYzogSVZwYzsnLFxuICAgICAgICAnICBwcm90ZWN0ZWQgYXBpOiBBcGk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIHByaXZhdGUgaWQ6IHN0cmluZywgcHJvdGVjdGVkIHByb3BzOiBUUHJvcHMpIHsnLFxuICAgICAgICAnICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgIGlmICghdGhpcy5wcm9wcy5jbGVya0p3a3NVcmwpIHsnLFxuICAgICAgICAnICAgICAgdGhyb3cgbmV3IEVycm9yKFxcJ2NsZXJrSndrc1VybCBpcyByZXF1aXJlZFxcJyk7JyxcbiAgICAgICAgJyAgICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgdGhpcy5jcmVhdGVEYXRhZG9nRXh0ZW5zaW9uKCk7JyxcbiAgICAgICAgJyAgICBpZiAoIXRoaXMuZGF0YWRvZykgeycsXG4gICAgICAgICcgICAgICB0aHJvdyBuZXcgRXJyb3IoXFwnRGF0YWRvZyBleHRlbnNpb24gY3JlYXRpb24gZmFpbGVkXFwnKTsnLFxuICAgICAgICAnICAgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgICB0aGlzLmNyZWF0ZUhvc3RlZFpvbmUoKTsnLFxuICAgICAgICAnICAgIGlmICghdGhpcy5ob3N0ZWRab25lKSB7JyxcbiAgICAgICAgJyAgICAgIHRocm93IG5ldyBFcnJvcihcXCdIb3N0ZWRab25lIGNyZWF0aW9uIGZhaWxlZFxcJyk7JyxcbiAgICAgICAgJyAgICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgdGhpcy5jcmVhdGVWcGMoKTsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgICB0aGlzLmNyZWF0ZUFwaSgpOycsXG4gICAgICAgICcgICAgaWYgKCF0aGlzLmFwaSkgeycsXG4gICAgICAgICcgICAgICB0aHJvdyBuZXcgRXJyb3IoXFwnQVBJIGNyZWF0aW9uIGZhaWxlZFxcJyk7JyxcbiAgICAgICAgJyAgICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgdGhpcy5jcmVhdGVTdGF0aWNXZWJzaXRlKCk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgdGhpcy5jcmVhdGVPdXRwdXRzKCk7JyxcbiAgICAgICAgJyAgICBBc3BlY3RzLm9mKHRoaXMpLmFkZChuZXcgRGF0YURvZ0FzcGVjdCh7IGRhdGFkb2c6IHRoaXMuZGF0YWRvZyB9KSk7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICBwcm90ZWN0ZWQgY3JlYXRlU3RhdGljV2Vic2l0ZSgpIHsnLFxuICAgICAgICAnICAgIG5ldyBTdGF0aWNXZWJzaXRlKHRoaXMsIFxcJ1N0YXRpY1dlYnNpdGVcXCcsIHsnLFxuICAgICAgICAnICAgICAgaG9zdGVkWm9uZTogdGhpcy5ob3N0ZWRab25lLCcsXG4gICAgICAgICcgICAgICBhcGk6IHRoaXMuYXBpLnJlc3RBcGksJyxcbiAgICAgICAgJyAgICAgIGhvc3RuYW1lOiB0aGlzLnByb3BzLmhvc3RuYW1lLCcsXG4gICAgICAgICcgICAgfSk7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICBwcm90ZWN0ZWQgY3JlYXRlQXBpKCkgeycsXG4gICAgICAgICcgICAgdGhpcy5hcGkgPSBuZXcgQXBpKHRoaXMsIFxcJ0FwaVxcJywgeycsXG4gICAgICAgICcgICAgICB2cGM6IHRoaXMudnBjLCcsXG4gICAgICAgICcgICAgICBjbGVya0p3a3NVcmw6IHRoaXMucHJvcHMuY2xlcmtKd2tzVXJsLCcsXG4gICAgICAgICcgICAgICBuOG5FbmRwb2ludDogdGhpcy5wcm9wcy5uOG5FbmRwb2ludCwnLFxuICAgICAgICAnICAgIH0pOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgcHJvdGVjdGVkIGNyZWF0ZVZwYygpIHsnLFxuICAgICAgICAnICAgIHRoaXMudnBjID0gbmV3IFZwYyh0aGlzLCBcXCdWUENcXCcsIHsnLFxuICAgICAgICAnICAgICAgdnBjTmFtZTogdGhpcy5wcm9wcy52cGNOYW1lIHx8IGAke3RoaXMuaWR9LXZwY2AsJyxcbiAgICAgICAgJyAgICAgIG1heEF6czogMywnLFxuICAgICAgICAnICAgICAgbmF0R2F0ZXdheXM6IDEsJyxcbiAgICAgICAgJyAgICB9KTsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIHByb3RlY3RlZCBjcmVhdGVIb3N0ZWRab25lKCkgeycsXG4gICAgICAgICcgICAgdGhpcy5ob3N0ZWRab25lID0gSG9zdGVkWm9uZS5mcm9tTG9va3VwKHRoaXMsIFxcJ0hvc3RlZFpvbmVcXCcsIHsnLFxuICAgICAgICAnICAgICAgZG9tYWluTmFtZTogdGhpcy5wcm9wcy5ob3N0ZWRab25lRG9tYWluTmFtZSwnLFxuICAgICAgICAnICAgIH0pOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgcHJvdGVjdGVkIGNyZWF0ZU91dHB1dHMoKSB7JyxcbiAgICAgICAgJyAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFxcJ1dlYnNpdGVVcmxcXCcsIHsnLFxuICAgICAgICAnICAgICAgdmFsdWU6IGBodHRwczovLyR7dGhpcy5wcm9wcy5ob3N0bmFtZX0uJHt0aGlzLmhvc3RlZFpvbmUuem9uZU5hbWV9YCwnLFxuICAgICAgICAnICAgICAgZGVzY3JpcHRpb246IFxcJ1RoZSBVUkwgb2YgdGhlIHN0YXRpYyB3ZWJzaXRlXFwnLCcsXG4gICAgICAgICcgICAgICBleHBvcnROYW1lOiBgJHt0aGlzLmlkLnJlcGxhY2UoL1xcXFwvLywgXFwnLVxcJyl9LVdlYnNpdGVVcmxgLCcsXG4gICAgICAgICcgICAgfSk7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICBwcm90ZWN0ZWQgY3JlYXRlRGF0YWRvZ0V4dGVuc2lvbigpIHsnLFxuICAgICAgICAnICAgIGNvbnN0IGRhdGFkb2dBcGlTZWNyZXQgPSBTZWNyZXQuZnJvbVNlY3JldENvbXBsZXRlQXJuKHRoaXMsIFxcJ0RhdGFkb2dBcGlLZXlcXCcsIHRoaXMucHJvcHMuZGF0YWRvZ1NlY3JldEFybik7JyxcbiAgICAgICAgJyAgICB0aGlzLmRhdGFkb2cgPSBuZXcgRGF0YWRvZ0xhbWJkYSh0aGlzLCBcXCdEYXRhZG9nXFwnLCB7JyxcbiAgICAgICAgJyAgICAgIGFwaUtleVNlY3JldDogZGF0YWRvZ0FwaVNlY3JldCwnLFxuICAgICAgICAnICAgICAgc2VydmljZTogdGhpcy5wcm9wcy5kYXRhZG9nPy5wcm9qZWN0TmFtZSB8fCB0aGlzLmlkLCcsXG4gICAgICAgICcgICAgICBub2RlTGF5ZXJWZXJzaW9uOiB0aGlzLnByb3BzLmRhdGFkb2c/Lm5vZGVMYXllclZlcnNpb24gfHwgMTI4LCcsXG4gICAgICAgICcgICAgICBweXRob25MYXllclZlcnNpb246IHRoaXMucHJvcHMuZGF0YWRvZz8ucHl0aG9uTGF5ZXJWZXJzaW9uIHx8IDEyMywnLFxuICAgICAgICAnICAgICAgZXh0ZW5zaW9uTGF5ZXJWZXJzaW9uOiA4NiwnLFxuICAgICAgICAnICAgIH0pOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxufVxuIl19
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUFwcGxpY2F0aW9uU3RhY2tGaWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Jhc2VBcHBsaWNhdGlvblN0YWNrRmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBa0M7QUFHbEMsTUFBYSx3QkFBeUIsU0FBUSxpQkFBUTtJQUNwRCxZQUFZLE9BQTRCO1FBQ3RDLEtBQUssQ0FBQyxPQUFPLEVBQUUsb0NBQW9DLEVBQUU7WUFDbkQsTUFBTSxFQUFFLElBQUk7WUFDWixRQUFRLEVBQUUsSUFBSTtZQUNkLEtBQUssRUFBRTtnQkFDTCx3RUFBd0U7Z0JBQ3hFLG9EQUFvRDtnQkFDcEQsc0VBQXNFO2dCQUN0RSw0REFBNEQ7Z0JBQzVELDJDQUEyQztnQkFDM0MsOERBQThEO2dCQUM5RCw2REFBNkQ7Z0JBQzdELDRDQUE0QztnQkFDNUMsZ0VBQWdFO2dCQUNoRSxFQUFFO2dCQUNGLGlFQUFpRTtnQkFDakUsRUFBRTtnQkFDRix3QkFBd0I7Z0JBQ3hCLFNBQVM7Z0JBQ1QsZ0VBQWdFO2dCQUNoRSxRQUFRO2dCQUNSLHFCQUFxQjtnQkFDckIsU0FBUztnQkFDVCx5Q0FBeUM7Z0JBQ3pDLEVBQUU7Z0JBQ0YsU0FBUztnQkFDVCwrREFBK0Q7Z0JBQy9ELFFBQVE7Z0JBQ1IscUJBQXFCO2dCQUNyQixTQUFTO2dCQUNULDJDQUEyQztnQkFDM0MsRUFBRTtnQkFDRixTQUFTO2dCQUNULHNFQUFzRTtnQkFDdEUsUUFBUTtnQkFDUixxQ0FBcUM7Z0JBQ3JDLFNBQVM7Z0JBQ1Qsb0NBQW9DO2dCQUNwQyxNQUFNO2dCQUNOLE9BQU87Z0JBQ1AsMERBQTBEO2dCQUMxRCxNQUFNO2dCQUNOLCtDQUErQztnQkFDL0MsT0FBTztnQkFDUCwwQ0FBMEM7Z0JBQzFDLEVBQUU7Z0JBQ0YsT0FBTztnQkFDUCwrRUFBK0U7Z0JBQy9FLE9BQU87Z0JBQ1AsNkZBQTZGO2dCQUM3RixFQUFFO2dCQUNGLE9BQU87Z0JBQ1Asa0VBQWtFO2dCQUNsRSxPQUFPO2dCQUNQLHFFQUFxRTtnQkFDckUsRUFBRTtnQkFDRixPQUFPO2dCQUNQLGlDQUFpQztnQkFDakMsTUFBTTtnQkFDTix5REFBeUQ7Z0JBQ3pELE9BQU87Z0JBQ1AsaUNBQWlDO2dCQUNqQyxFQUFFO2dCQUNGLE9BQU87Z0JBQ1AscUNBQXFDO2dCQUNyQyxNQUFNO2dCQUNOLDZCQUE2QjtnQkFDN0IsT0FBTztnQkFDUCw4QkFBOEI7Z0JBQzlCLEVBQUU7Z0JBQ0YsT0FBTztnQkFDUCxpRkFBaUY7Z0JBQ2pGLE1BQU07Z0JBQ04seUJBQXlCO2dCQUN6Qix1QkFBdUI7Z0JBQ3ZCLE9BQU87Z0JBQ1AsOEJBQThCO2dCQUM5QixHQUFHO2dCQUNILEVBQUU7Z0JBQ0YsNkZBQTZGO2dCQUM3RixxQ0FBcUM7Z0JBQ3JDLHNDQUFzQztnQkFDdEMsd0JBQXdCO2dCQUN4Qix1QkFBdUI7Z0JBQ3ZCLDJDQUEyQztnQkFDM0MsRUFBRTtnQkFDRixnRkFBZ0Y7Z0JBQ2hGLDhCQUE4QjtnQkFDOUIsRUFBRTtnQkFDRixxQ0FBcUM7Z0JBQ3JDLHNEQUFzRDtnQkFDdEQsT0FBTztnQkFDUCxFQUFFO2dCQUNGLG9DQUFvQztnQkFDcEMsMEJBQTBCO2dCQUMxQiwrREFBK0Q7Z0JBQy9ELE9BQU87Z0JBQ1AsRUFBRTtnQkFDRiw4QkFBOEI7Z0JBQzlCLDZCQUE2QjtnQkFDN0Isd0RBQXdEO2dCQUN4RCxPQUFPO2dCQUNQLEVBQUU7Z0JBQ0YsdUJBQXVCO2dCQUN2QixFQUFFO2dCQUNGLHVCQUF1QjtnQkFDdkIsc0JBQXNCO2dCQUN0QixpREFBaUQ7Z0JBQ2pELE9BQU87Z0JBQ1AsRUFBRTtnQkFDRixpQ0FBaUM7Z0JBQ2pDLEVBQUU7Z0JBQ0YsMkJBQTJCO2dCQUMzQix5RUFBeUU7Z0JBQ3pFLEtBQUs7Z0JBQ0wsRUFBRTtnQkFDRixxQ0FBcUM7Z0JBQ3JDLHVFQUF1RTtnQkFDdkUsb0NBQW9DO2dCQUNwQyw4QkFBOEI7Z0JBQzlCLHNDQUFzQztnQkFDdEMsU0FBUztnQkFDVCxLQUFLO2dCQUNMLEVBQUU7Z0JBQ0YsMkJBQTJCO2dCQUMzQix5Q0FBeUM7Z0JBQ3pDLHNCQUFzQjtnQkFDdEIsOENBQThDO2dCQUM5Qyw0Q0FBNEM7Z0JBQzVDLFNBQVM7Z0JBQ1QsS0FBSztnQkFDTCxFQUFFO2dCQUNGLDJCQUEyQjtnQkFDM0IseUNBQXlDO2dCQUN6Qyx3REFBd0Q7Z0JBQ3hELGtCQUFrQjtnQkFDbEIsdUJBQXVCO2dCQUN2QixTQUFTO2dCQUNULEtBQUs7Z0JBQ0wsRUFBRTtnQkFDRixrQ0FBa0M7Z0JBQ2xDLHFFQUFxRTtnQkFDckUsb0RBQW9EO2dCQUNwRCxTQUFTO2dCQUNULEtBQUs7Z0JBQ0wsRUFBRTtnQkFDRiwrQkFBK0I7Z0JBQy9CLDJDQUEyQztnQkFDM0Msd0RBQXdEO2dCQUN4RCx1REFBdUQ7Z0JBQ3ZELGtFQUFrRTtnQkFDbEUsU0FBUztnQkFDVCxLQUFLO2dCQUNMLEVBQUU7Z0JBQ0Ysd0NBQXdDO2dCQUN4QyxrSEFBa0g7Z0JBQ2xILDJEQUEyRDtnQkFDM0QsdUNBQXVDO2dCQUN2Qyw0REFBNEQ7Z0JBQzVELHNFQUFzRTtnQkFDdEUsMEVBQTBFO2dCQUMxRSxrQ0FBa0M7Z0JBQ2xDLFNBQVM7Z0JBQ1QsS0FBSztnQkFDTCxHQUFHO2dCQUNILEVBQUU7YUFDSDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTFLRCw0REEwS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZXh0RmlsZSB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBBd3NDZGtUeXBlU2NyaXB0QXBwIH0gZnJvbSAncHJvamVuL2xpYi9hd3NjZGsnO1xuXG5leHBvcnQgY2xhc3MgQmFzZUFwcGxpY2F0aW9uU3RhY2tGaWxlIGV4dGVuZHMgVGV4dEZpbGUge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBBd3NDZGtUeXBlU2NyaXB0QXBwKSB7XG4gICAgc3VwZXIocHJvamVjdCwgJ3NyYy9zdGFja3MvQmFzZUFwcGxpY2F0aW9uU3RhY2sudHMnLCB7XG4gICAgICBtYXJrZXI6IHRydWUsXG4gICAgICByZWFkb25seTogdHJ1ZSxcbiAgICAgIGxpbmVzOiBbXG4gICAgICAgICdpbXBvcnQgeyBBc3BlY3RzLCBDZm5PdXRwdXQsIFN0YWNrLCBTdGFja1Byb3BzIH0gZnJvbSBcXCdhd3MtY2RrLWxpYlxcJzsnLFxuICAgICAgICAnaW1wb3J0IHsgSVZwYywgVnBjIH0gZnJvbSBcXCdhd3MtY2RrLWxpYi9hd3MtZWMyXFwnOycsXG4gICAgICAgICdpbXBvcnQgeyBIb3N0ZWRab25lLCBJSG9zdGVkWm9uZSB9IGZyb20gXFwnYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcXCc7JyxcbiAgICAgICAgJ2ltcG9ydCB7IFNlY3JldCB9IGZyb20gXFwnYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXFwnOycsXG4gICAgICAgICdpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFxcJ2NvbnN0cnVjdHNcXCc7JyxcbiAgICAgICAgJ2ltcG9ydCB7IERhdGFkb2dMYW1iZGEgfSBmcm9tIFxcJ2RhdGFkb2ctY2RrLWNvbnN0cnVjdHMtdjJcXCc7JyxcbiAgICAgICAgJ2ltcG9ydCB7IERhdGFEb2dBc3BlY3QgfSBmcm9tIFxcJy4uL2FzcGVjdHMvRGF0YURvZ0FzcGVjdFxcJzsnLFxuICAgICAgICAnaW1wb3J0IHsgQXBpIH0gZnJvbSBcXCcuLi9jb25zdHJ1Y3RzL0FwaVxcJzsnLFxuICAgICAgICAnaW1wb3J0IHsgU3RhdGljV2Vic2l0ZSB9IGZyb20gXFwnLi4vY29uc3RydWN0cy9TdGF0aWNXZWJzaXRlXFwnOycsXG4gICAgICAgICcnLFxuICAgICAgICAnZXhwb3J0IGludGVyZmFjZSBCYXNlQXBwbGljYXRpb25TdGFja1Byb3BzIGV4dGVuZHMgU3RhY2tQcm9wcyB7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIHJlYWRvbmx5IGRhdGFkb2c/OiB7JyxcbiAgICAgICAgJyAgICAvKionLFxuICAgICAgICAnICAgICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBEYXRhZG9nIE5vZGUuanMgTGFtYmRhIGxheWVyIHRvIHVzZS4nLFxuICAgICAgICAnICAgICAqJyxcbiAgICAgICAgJyAgICAgKiBAZGVmYXVsdCAxMjgnLFxuICAgICAgICAnICAgICAqLycsXG4gICAgICAgICcgICAgcmVhZG9ubHkgbm9kZUxheWVyVmVyc2lvbj86IG51bWJlcjsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgICAvKionLFxuICAgICAgICAnICAgICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBEYXRhZG9nIFB5dGhvbiBMYW1iZGEgbGF5ZXIgdG8gdXNlLicsXG4gICAgICAgICcgICAgIConLFxuICAgICAgICAnICAgICAqIEBkZWZhdWx0IDEyMycsXG4gICAgICAgICcgICAgICovJyxcbiAgICAgICAgJyAgICByZWFkb25seSBweXRob25MYXllclZlcnNpb24/OiBudW1iZXI7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgLyoqJyxcbiAgICAgICAgJyAgICAgKiBUaGUgbmFtZSBvZiB0aGUgcHJvamVjdC9zZXJ2aWNlIGZvciBEYXRhZG9nIHRhZ2dpbmcgcHVycG9zZXMuJyxcbiAgICAgICAgJyAgICAgKicsXG4gICAgICAgICcgICAgICogQGRlZmF1bHQgLSB1c2VzIHRoZSBzdGFjayBJRCcsXG4gICAgICAgICcgICAgICovJyxcbiAgICAgICAgJyAgICByZWFkb25seSBwcm9qZWN0TmFtZT86IHN0cmluZzsnLFxuICAgICAgICAnICB9OycsXG4gICAgICAgICcgIC8qKicsXG4gICAgICAgICcgICAqIFRoZSBkb21haW4gbmFtZSBvZiB0aGUgUm91dGUgNTMgaG9zdGVkIHpvbmUgdG8gdXNlLicsXG4gICAgICAgICcgICAqJyxcbiAgICAgICAgJyAgICogQGV4YW1wbGUgXFwnbWFjZWRvbi5zYW5kYm94LmRlZmlhbmNlLmFpXFwnJyxcbiAgICAgICAgJyAgICovJyxcbiAgICAgICAgJyAgcmVhZG9ubHkgaG9zdGVkWm9uZURvbWFpbk5hbWU6IHN0cmluZzsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgLyoqJyxcbiAgICAgICAgJyAgICogVGhlIEFSTiBvZiB0aGUgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCB0aGF0IGNvbnRhaW5zIHRoZSBEYXRhZG9nIEFQSSBrZXkuJyxcbiAgICAgICAgJyAgICovJyxcbiAgICAgICAgJyAgcmVhZG9ubHkgZGF0YWRvZ1NlY3JldEFybjogYGFybjphd3M6c2VjcmV0c21hbmFnZXI6JHtzdHJpbmd9OiR7c3RyaW5nfTpzZWNyZXQ6JHtzdHJpbmd9YDsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgLyoqJyxcbiAgICAgICAgJyAgICogVGhlIENsZXJrIEpXS1MgVVJMIHVzZWQgdG8gdmVyaWZ5IHNlc3Npb24gdG9rZW4gc2lnbmF0dXJlcy4nLFxuICAgICAgICAnICAgKi8nLFxuICAgICAgICAnICByZWFkb25seSBjbGVya0p3a3NVcmw6IGBodHRwczovLyR7c3RyaW5nfS8ud2VsbC1rbm93bi9qd2tzLmpzb25gOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAvKionLFxuICAgICAgICAnICAgKiBUaGUgTjhOIGVuZHBvaW50IGJhc2UgVVJMLicsXG4gICAgICAgICcgICAqJyxcbiAgICAgICAgJyAgICogQGV4YW1wbGUgXFwnaHR0cHM6Ly93b3JrZmxvdy5zYW5kYm94LmRlZmlhbmNlLmFpL1xcJycsXG4gICAgICAgICcgICAqLycsXG4gICAgICAgICcgIHJlYWRvbmx5IG44bkVuZHBvaW50OiBzdHJpbmc7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIC8qKicsXG4gICAgICAgICcgICAqIFRoZSBuYW1lIG9mIHRoZSBWUEMgdG8gY3JlYXRlLicsXG4gICAgICAgICcgICAqJyxcbiAgICAgICAgJyAgICogQGRlZmF1bHQgXFwnJHtpZH0tdnBjXFwnJyxcbiAgICAgICAgJyAgICovJyxcbiAgICAgICAgJyAgcmVhZG9ubHkgdnBjTmFtZT86IHN0cmluZzsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgLyoqJyxcbiAgICAgICAgJyAgICogVGhlIGhvc3RuYW1lIGZvciB0aGUgc3RhdGljIHdlYnNpdGUuIFRoaXMgd2lsbCBiZSBhZGRlZCB0byB0aGUgaG9zdGVkem9uZS4nLFxuICAgICAgICAnICAgKicsXG4gICAgICAgICcgICAqIEBleGFtcGxlIFxcJ215Ym9pXFwnJyxcbiAgICAgICAgJyAgICogQGRlZmF1bHQgXFwnbXZwXFwnJyxcbiAgICAgICAgJyAgICovJyxcbiAgICAgICAgJyAgcmVhZG9ubHkgaG9zdG5hbWU6IHN0cmluZzsnLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnZXhwb3J0IGNsYXNzIEJhc2VBcHBsaWNhdGlvblN0YWNrPFRQcm9wcyBleHRlbmRzIEJhc2VBcHBsaWNhdGlvblN0YWNrUHJvcHM+IGV4dGVuZHMgU3RhY2sgeycsXG4gICAgICAgICcgIHByb3RlY3RlZCBkYXRhZG9nOiBEYXRhZG9nTGFtYmRhOycsXG4gICAgICAgICcgIHByb3RlY3RlZCBob3N0ZWRab25lOiBJSG9zdGVkWm9uZTsnLFxuICAgICAgICAnICBwcm90ZWN0ZWQgdnBjOiBJVnBjOycsXG4gICAgICAgICcgIHByb3RlY3RlZCBhcGk6IEFwaTsnLFxuICAgICAgICAnICBwcm90ZWN0ZWQgc3RhdGljV2Vic2l0ZTogU3RhdGljV2Vic2l0ZTsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgcHJpdmF0ZSBpZDogc3RyaW5nLCBwcm90ZWN0ZWQgcHJvcHM6IFRQcm9wcykgeycsXG4gICAgICAgICcgICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgaWYgKCF0aGlzLnByb3BzLmNsZXJrSndrc1VybCkgeycsXG4gICAgICAgICcgICAgICB0aHJvdyBuZXcgRXJyb3IoXFwnY2xlcmtKd2tzVXJsIGlzIHJlcXVpcmVkXFwnKTsnLFxuICAgICAgICAnICAgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgICB0aGlzLmNyZWF0ZURhdGFkb2dFeHRlbnNpb24oKTsnLFxuICAgICAgICAnICAgIGlmICghdGhpcy5kYXRhZG9nKSB7JyxcbiAgICAgICAgJyAgICAgIHRocm93IG5ldyBFcnJvcihcXCdEYXRhZG9nIGV4dGVuc2lvbiBjcmVhdGlvbiBmYWlsZWRcXCcpOycsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgIHRoaXMuY3JlYXRlSG9zdGVkWm9uZSgpOycsXG4gICAgICAgICcgICAgaWYgKCF0aGlzLmhvc3RlZFpvbmUpIHsnLFxuICAgICAgICAnICAgICAgdGhyb3cgbmV3IEVycm9yKFxcJ0hvc3RlZFpvbmUgY3JlYXRpb24gZmFpbGVkXFwnKTsnLFxuICAgICAgICAnICAgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgICB0aGlzLmNyZWF0ZVZwYygpOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgIHRoaXMuY3JlYXRlQXBpKCk7JyxcbiAgICAgICAgJyAgICBpZiAoIXRoaXMuYXBpKSB7JyxcbiAgICAgICAgJyAgICAgIHRocm93IG5ldyBFcnJvcihcXCdBUEkgY3JlYXRpb24gZmFpbGVkXFwnKTsnLFxuICAgICAgICAnICAgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgICB0aGlzLmNyZWF0ZVN0YXRpY1dlYnNpdGUoKTsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgICB0aGlzLmNyZWF0ZU91dHB1dHMoKTsnLFxuICAgICAgICAnICAgIEFzcGVjdHMub2YodGhpcykuYWRkKG5ldyBEYXRhRG9nQXNwZWN0KHsgZGF0YWRvZzogdGhpcy5kYXRhZG9nIH0pKTsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIHByb3RlY3RlZCBjcmVhdGVTdGF0aWNXZWJzaXRlKCkgeycsXG4gICAgICAgICcgICAgdGhpcy5zdGF0aWNXZWJzaXRlID0gbmV3IFN0YXRpY1dlYnNpdGUodGhpcywgXFwnU3RhdGljV2Vic2l0ZVxcJywgeycsXG4gICAgICAgICcgICAgICBob3N0ZWRab25lOiB0aGlzLmhvc3RlZFpvbmUsJyxcbiAgICAgICAgJyAgICAgIGFwaTogdGhpcy5hcGkucmVzdEFwaSwnLFxuICAgICAgICAnICAgICAgaG9zdG5hbWU6IHRoaXMucHJvcHMuaG9zdG5hbWUsJyxcbiAgICAgICAgJyAgICB9KTsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIHByb3RlY3RlZCBjcmVhdGVBcGkoKSB7JyxcbiAgICAgICAgJyAgICB0aGlzLmFwaSA9IG5ldyBBcGkodGhpcywgXFwnQXBpXFwnLCB7JyxcbiAgICAgICAgJyAgICAgIHZwYzogdGhpcy52cGMsJyxcbiAgICAgICAgJyAgICAgIGNsZXJrSndrc1VybDogdGhpcy5wcm9wcy5jbGVya0p3a3NVcmwsJyxcbiAgICAgICAgJyAgICAgIG44bkVuZHBvaW50OiB0aGlzLnByb3BzLm44bkVuZHBvaW50LCcsXG4gICAgICAgICcgICAgfSk7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICBwcm90ZWN0ZWQgY3JlYXRlVnBjKCkgeycsXG4gICAgICAgICcgICAgdGhpcy52cGMgPSBuZXcgVnBjKHRoaXMsIFxcJ1ZQQ1xcJywgeycsXG4gICAgICAgICcgICAgICB2cGNOYW1lOiB0aGlzLnByb3BzLnZwY05hbWUgfHwgYCR7dGhpcy5pZH0tdnBjYCwnLFxuICAgICAgICAnICAgICAgbWF4QXpzOiAzLCcsXG4gICAgICAgICcgICAgICBuYXRHYXRld2F5czogMSwnLFxuICAgICAgICAnICAgIH0pOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgcHJvdGVjdGVkIGNyZWF0ZUhvc3RlZFpvbmUoKSB7JyxcbiAgICAgICAgJyAgICB0aGlzLmhvc3RlZFpvbmUgPSBIb3N0ZWRab25lLmZyb21Mb29rdXAodGhpcywgXFwnSG9zdGVkWm9uZVxcJywgeycsXG4gICAgICAgICcgICAgICBkb21haW5OYW1lOiB0aGlzLnByb3BzLmhvc3RlZFpvbmVEb21haW5OYW1lLCcsXG4gICAgICAgICcgICAgfSk7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICBwcm90ZWN0ZWQgY3JlYXRlT3V0cHV0cygpIHsnLFxuICAgICAgICAnICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXFwnV2Vic2l0ZVVybFxcJywgeycsXG4gICAgICAgICcgICAgICB2YWx1ZTogYGh0dHBzOi8vJHt0aGlzLnN0YXRpY1dlYnNpdGUuaG9zdG5hbWV9YCwnLFxuICAgICAgICAnICAgICAgZGVzY3JpcHRpb246IFxcJ1RoZSBVUkwgb2YgdGhlIHN0YXRpYyB3ZWJzaXRlXFwnLCcsXG4gICAgICAgICcgICAgICBleHBvcnROYW1lOiBgJHt0aGlzLmlkLnJlcGxhY2UoL1xcXFwvLywgXFwnLVxcJyl9LVdlYnNpdGVVcmxgLCcsXG4gICAgICAgICcgICAgfSk7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICBwcm90ZWN0ZWQgY3JlYXRlRGF0YWRvZ0V4dGVuc2lvbigpIHsnLFxuICAgICAgICAnICAgIGNvbnN0IGRhdGFkb2dBcGlTZWNyZXQgPSBTZWNyZXQuZnJvbVNlY3JldENvbXBsZXRlQXJuKHRoaXMsIFxcJ0RhdGFkb2dBcGlLZXlcXCcsIHRoaXMucHJvcHMuZGF0YWRvZ1NlY3JldEFybik7JyxcbiAgICAgICAgJyAgICB0aGlzLmRhdGFkb2cgPSBuZXcgRGF0YWRvZ0xhbWJkYSh0aGlzLCBcXCdEYXRhZG9nXFwnLCB7JyxcbiAgICAgICAgJyAgICAgIGFwaUtleVNlY3JldDogZGF0YWRvZ0FwaVNlY3JldCwnLFxuICAgICAgICAnICAgICAgc2VydmljZTogdGhpcy5wcm9wcy5kYXRhZG9nPy5wcm9qZWN0TmFtZSB8fCB0aGlzLmlkLCcsXG4gICAgICAgICcgICAgICBub2RlTGF5ZXJWZXJzaW9uOiB0aGlzLnByb3BzLmRhdGFkb2c/Lm5vZGVMYXllclZlcnNpb24gfHwgMTI4LCcsXG4gICAgICAgICcgICAgICBweXRob25MYXllclZlcnNpb246IHRoaXMucHJvcHMuZGF0YWRvZz8ucHl0aG9uTGF5ZXJWZXJzaW9uIHx8IDEyMywnLFxuICAgICAgICAnICAgICAgZXh0ZW5zaW9uTGF5ZXJWZXJzaW9uOiA4NiwnLFxuICAgICAgICAnICAgIH0pOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -8,10 +8,11 @@ const Application_1 = require("./Application");
8
8
  const CodeOwnersFile_1 = require("./CodeOwnersFile");
9
9
  const DataDogAspectFile_1 = require("./DataDogAspectFile");
10
10
  const GitHubRolesFile_1 = require("./GitHubRolesFile");
11
+ const SoftwareFactoryFiles_1 = require("./SoftwareFactoryFiles");
11
12
  const utils_1 = require("./utils");
12
13
  const ViteReactProject_1 = require("./ViteReactProject");
13
14
  class BatmanProject extends awscdk_1.AwsCdkTypeScriptApp {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.BatmanProject", version: "1.17.3" };
15
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.BatmanProject", version: "1.18.1" };
15
16
  constructor(options) {
16
17
  super({
17
18
  ...options,
@@ -96,6 +97,11 @@ class BatmanProject extends awscdk_1.AwsCdkTypeScriptApp {
96
97
  additionalOwners: options.additionalCodeOwners,
97
98
  });
98
99
  new DataDogAspectFile_1.DataDogAspectFile(this);
100
+ new SoftwareFactoryFiles_1.SoftwareFactoryFiles(this, {
101
+ repoName: options.name,
102
+ baseBranch: options.defaultReleaseBranch,
103
+ actionVersions: options.actionVersions,
104
+ });
99
105
  const viteReact = new ViteReactProject_1.ViteReactProject({
100
106
  name: options.name,
101
107
  defaultReleaseBranch: 'main',
@@ -118,4 +124,4 @@ class BatmanProject extends awscdk_1.AwsCdkTypeScriptApp {
118
124
  }
119
125
  }
120
126
  exports.BatmanProject = BatmanProject;
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmF0bWFuUHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9CYXRtYW5Qcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw4Q0FBb0Y7QUFDcEYsOENBQXNEO0FBQ3RELCtDQUEwRTtBQUMxRSxxREFBa0Q7QUFDbEQsMkRBQXdEO0FBQ3hELHVEQUFvRDtBQUNwRCxtQ0FBeUM7QUFDekMseURBQXNEO0FBc0R0RCxNQUFhLGFBQWMsU0FBUSw0QkFBbUI7O0lBQ3BELFlBQVksT0FBNkI7UUFDdkMsS0FBSyxDQUFDO1lBQ0osR0FBRyxPQUFPO1lBQ1YsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLElBQUksU0FBUztZQUMzQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsb0JBQW9CLElBQUksTUFBTTtZQUM1RCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7WUFDbEIsVUFBVSxFQUFFLElBQUk7WUFDaEIsYUFBYSxFQUFFLEtBQUs7WUFDcEIsSUFBSSxFQUFFO2dCQUNKLG1CQUFtQjtnQkFDbkIsZ0JBQWdCO2dCQUNoQixXQUFXO2dCQUNYLElBQUk7Z0JBQ0oscUJBQXFCO2dCQUNyQixzQkFBc0I7Z0JBQ3RCLDJCQUEyQjtnQkFDM0IsMEJBQTBCO2dCQUMxQixtQ0FBbUM7Z0JBQ25DLGNBQWM7Z0JBQ2QsaUNBQWlDO2dCQUNqQyxTQUFTO2dCQUNULGlCQUFpQjtnQkFDakIsR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUU7YUFDdEI7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AscUJBQXFCO2dCQUNyQixTQUFTO2dCQUNULGNBQWM7Z0JBQ2QscUNBQXFDO2dCQUNyQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRTthQUN6QjtZQUNELFNBQVMsRUFBRTtnQkFDVCxtREFBbUQ7Z0JBQ25ELGNBQWM7Z0JBQ2QsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUU7YUFDM0I7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsR0FBRyxPQUFPLENBQUMsUUFBUTtnQkFDbkIsZUFBZSxFQUFFO29CQUNmLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxlQUFlO29CQUNwQyxlQUFlLEVBQUUsSUFBSTtvQkFDckIsMEJBQTBCLEVBQUUsSUFBSTtpQkFDakM7YUFDRjtZQUNELFVBQVUsRUFBRSxLQUFLO1lBQ2pCLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYyxJQUFJLElBQUk7WUFDOUMsa0JBQWtCLEVBQUU7Z0JBQ2xCLGVBQWUsRUFBRTtvQkFDZixpQkFBaUIsRUFBRSwwQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQzt3QkFDM0QsTUFBTSxFQUFFLGNBQWM7cUJBQ3ZCLENBQUM7aUJBQ0g7YUFDRjtZQUNELE1BQU0sRUFBRTtnQkFDTixRQUFRLEVBQUUsSUFBQSxzQkFBYyxFQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7YUFDdkM7U0FDRixDQUFDLENBQUM7UUFHSCxnQ0FBZ0M7UUFDaEMsTUFBTSxlQUFlLEdBQUcsY0FBYyxDQUFDO1FBQ3ZDLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQztRQUVuQyxJQUFJLHlCQUFXLENBQUMsSUFBSSxFQUFFO1lBQ3BCLGdCQUFnQixFQUFFLHdCQUF3QixPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ3hELEdBQUcsRUFBRTtnQkFDSCxHQUFHLE9BQU8sQ0FBQyxHQUFHO2FBQ2Y7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsR0FBRyxPQUFPLENBQUMsT0FBTzthQUNuQjtZQUNELElBQUksRUFBRTtnQkFDSixHQUFHLE9BQU8sQ0FBQyxHQUFHO2FBQ2Y7WUFDRCxjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWM7WUFDdEMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZO1lBQ2xDLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYztZQUN0Qyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsdUJBQXVCO1NBQ3pELENBQUMsQ0FBQztRQUVILElBQUksaUNBQWUsQ0FBQyxJQUFJLEVBQUU7WUFDeEIsT0FBTyxFQUFFLGVBQWU7WUFDeEIsYUFBYSxFQUFFLGNBQWM7U0FDOUIsQ0FBQyxDQUFDO1FBRUgsSUFBSSwrQkFBYyxDQUFDLElBQUksRUFBRTtZQUN2QixnQkFBZ0IsRUFBRSxPQUFPLENBQUMsb0JBQW9CO1NBQy9DLENBQUMsQ0FBQztRQUVILElBQUkscUNBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxtQ0FBZ0IsQ0FBQztZQUNyQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7WUFDbEIsb0JBQW9CLEVBQUUsTUFBTTtZQUM1QixNQUFNLEVBQUUsSUFBSTtZQUNaLE1BQU0sRUFBRSxLQUFLO1lBQ2IsSUFBSSxFQUFFLE9BQU8sQ0FBQyxXQUFXO1NBQzFCLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELFNBQVMsQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRXBELE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBRyxJQUFjLEVBQUUsRUFBRTtZQUN6QyxPQUFPLGdCQUFnQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdELENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2xCLElBQUksRUFBRSxZQUFZLENBQ2hCLGdGQUFnRixFQUNoRixTQUFTLENBQUMsVUFBVSxDQUNyQjtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQ3RCLElBQUksRUFBRSwyRUFBMkU7WUFDakYsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FBQyxDQUFDO0lBR0wsQ0FBQzs7QUF2SEgsc0NBd0hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXdzQ2RrVHlwZVNjcmlwdEFwcCwgQXdzQ2RrVHlwZVNjcmlwdEFwcE9wdGlvbnMgfSBmcm9tICdwcm9qZW4vbGliL2F3c2Nkayc7XG5pbXBvcnQgeyBHaXRodWJDcmVkZW50aWFscyB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uLCBBcHBsaWNhdGlvbkVudmlyb25tZW50Q29uZmlnIH0gZnJvbSAnLi9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBDb2RlT3duZXJzRmlsZSB9IGZyb20gJy4vQ29kZU93bmVyc0ZpbGUnO1xuaW1wb3J0IHsgRGF0YURvZ0FzcGVjdEZpbGUgfSBmcm9tICcuL0RhdGFEb2dBc3BlY3RGaWxlJztcbmltcG9ydCB7IEdpdEh1YlJvbGVzRmlsZSB9IGZyb20gJy4vR2l0SHViUm9sZXNGaWxlJztcbmltcG9ydCB7IHJlYWRtZUNvbnRlbnRzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBWaXRlUmVhY3RQcm9qZWN0IH0gZnJvbSAnLi9WaXRlUmVhY3RQcm9qZWN0JztcbmltcG9ydCB7IFdvcmtmbG93QWN0aW9uVmVyc2lvbnMgfSBmcm9tICcuL1dvcmtmbG93QWN0aW9uVmVyc2lvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhdG1hblByb2plY3RPcHRpb25zIGV4dGVuZHMgQXdzQ2RrVHlwZVNjcmlwdEFwcE9wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBEZXZlbG9wbWVudCBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXY6IEFwcGxpY2F0aW9uRW52aXJvbm1lbnRDb25maWc7XG5cbiAgLyoqXG4gICAqIERldmVsb3BtZW50IGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHN0YWdpbmc6IEFwcGxpY2F0aW9uRW52aXJvbm1lbnRDb25maWc7XG5cbiAgLyoqXG4gICAqIFByb2R1Y3Rpb24gZW52aXJvbm1lbnQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZDogQXBwbGljYXRpb25FbnZpcm9ubWVudENvbmZpZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCB0YWdzIHRvIGFwcGx5IHRvIGFsbCBzdGFja3NcbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxUYWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRW5hYmxlIG44biB3b3JrZmxvdyBhdXRvLWRpc2NvdmVyeSBhbmQgV29ya2Zsb3dQcm92aWRlciBnZW5lcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBuOG5Xb3JrZmxvd3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGNvZGUgb3duZXJzIHRvIGFkZCB0byB0aGUgQ09ERU9XTkVSUyBmaWxlXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsQ29kZU93bmVycz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBXZWJzaXRlIGRlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgd2Vic2l0ZURlcHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT3ZlcnJpZGVzIGZvciB0aGUgcGlubmVkIGFjdGlvbiB2ZXJzaW9ucyB1c2VkIGJ5IHRoZSBnZW5lcmF0ZWQgR2l0SHViIEFjdGlvbnMgd29ya2Zsb3dzLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uVmVyc2lvbnM/OiBXb3JrZmxvd0FjdGlvblZlcnNpb25zO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZXMgdGhlIHBpbm5lZCBTMyBvYmplY3QgdmVyc2lvbiBvZiB0aGUgY2xlcmstYXV0aG9yaXplciBMYW1iZGEgZGVwbG95bWVudCBwYWNrYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBkZWZhdWx0IHBpbm5lZCBpbiBBcGlDb25zdHJ1Y3RGaWxlXG4gICAqL1xuICByZWFkb25seSBhdXRob3JpemVyT2JqZWN0VmVyc2lvbj86IHN0cmluZztcbn1cblxuXG5leHBvcnQgY2xhc3MgQmF0bWFuUHJvamVjdCBleHRlbmRzIEF3c0Nka1R5cGVTY3JpcHRBcHAge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBCYXRtYW5Qcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBjZGtWZXJzaW9uOiBvcHRpb25zLmNka1ZlcnNpb24gfHwgJzIuMjI0LjAnLFxuICAgICAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6IG9wdGlvbnMuZGVmYXVsdFJlbGVhc2VCcmFuY2ggfHwgJ21haW4nLFxuICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgcHJvamVucmNUczogdHJ1ZSxcbiAgICAgIGJ1aWxkV29ya2Zsb3c6IGZhbHNlLFxuICAgICAgZGVwczogW1xuICAgICAgICAnQHR5cGVzL2F3cy1sYW1iZGEnLFxuICAgICAgICAnQHR5cGVzL2V4cHJlc3MnLFxuICAgICAgICAnQHR5cGVzL3BnJyxcbiAgICAgICAgJ3BnJyxcbiAgICAgICAgJ0Bhd3Mtc2RrL3Jkcy1zaWduZXInLFxuICAgICAgICAnQG1hdHRoZXdib25pZy9zZWNyZXQnLFxuICAgICAgICAnZGF0YWRvZy1jZGstY29uc3RydWN0cy12MicsXG4gICAgICAgICdAY2RrbGFicy9hd3MtbGFtYmRhLXJ1c3QnLFxuICAgICAgICAnQGF3cy1sYW1iZGEtcG93ZXJ0b29scy9wYXJhbWV0ZXJzJyxcbiAgICAgICAgJ2pzb253ZWJ0b2tlbicsXG4gICAgICAgICdAYXdzLXNkay9jbGllbnQtc2VjcmV0cy1tYW5hZ2VyJyxcbiAgICAgICAgJ2V4cHJlc3MnLFxuICAgICAgICAnc2VydmVybGVzcy1odHRwJyxcbiAgICAgICAgLi4ub3B0aW9ucy5kZXBzIHx8IFtdLFxuICAgICAgXSxcbiAgICAgIGRldkRlcHM6IFtcbiAgICAgICAgJ0B0eXBlcy9qc29ud2VidG9rZW4nLFxuICAgICAgICAnbm9kZW1vbicsXG4gICAgICAgICdjb25jdXJyZW50bHknLFxuICAgICAgICAnQG1hY2Vkb24tdGVjaG5vbG9naWVzL2JhdG1hbkBeMS4wLjAnLFxuICAgICAgICAuLi5vcHRpb25zLmRldkRlcHMgfHwgW10sXG4gICAgICBdLFxuICAgICAgZ2l0aWdub3JlOiBbXG4gICAgICAgICdzcmMvY29uc3RydWN0cy9oYW5kbGVyL2NsZXJrLWF1dGhvcml6ZXIvdGFyZ2V0LyoqJyxcbiAgICAgICAgJyoqLy5EU19TdG9yZScsXG4gICAgICAgIC4uLm9wdGlvbnMuZ2l0aWdub3JlIHx8IFtdLFxuICAgICAgXSxcbiAgICAgIHRzY29uZmlnOiB7XG4gICAgICAgIC4uLm9wdGlvbnMudHNjb25maWcsXG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIC4uLm9wdGlvbnMudHNjb25maWc/LmNvbXBpbGVyT3B0aW9ucyxcbiAgICAgICAgICBpc29sYXRlZE1vZHVsZXM6IHRydWUsXG4gICAgICAgICAgYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc2FtcGxlQ29kZTogZmFsc2UsXG4gICAgICBtaW5Ob2RlVmVyc2lvbjogb3B0aW9ucy5taW5Ob2RlVmVyc2lvbiB8fCAnMjInLFxuICAgICAgZGVwc1VwZ3JhZGVPcHRpb25zOiB7XG4gICAgICAgIHdvcmtmbG93T3B0aW9uczoge1xuICAgICAgICAgIHByb2plbkNyZWRlbnRpYWxzOiBHaXRodWJDcmVkZW50aWFscy5mcm9tUGVyc29uYWxBY2Nlc3NUb2tlbih7XG4gICAgICAgICAgICBzZWNyZXQ6ICdHSVRIVUJfVE9LRU4nLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHJlYWRtZToge1xuICAgICAgICBjb250ZW50czogcmVhZG1lQ29udGVudHMob3B0aW9ucy5uYW1lKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cblxuICAgIC8vIENyZWF0ZSBzdGFuZGFyZCBwcm9qZWN0IGZpbGVzXG4gICAgY29uc3QgUFJJTUFSWV9BQ0NPVU5UID0gJzAxNTk1NTgxNzI2Myc7XG4gICAgY29uc3QgUFJJTUFSWV9SRUdJT04gPSAndXMtZWFzdC0xJztcblxuICAgIG5ldyBBcHBsaWNhdGlvbih0aGlzLCB7XG4gICAgICBnaXRodWJSZXBvc2l0b3J5OiBgbWFjZWRvbi10ZWNobm9sb2dpZXMvJHtvcHRpb25zLm5hbWV9YCxcbiAgICAgIGRldjoge1xuICAgICAgICAuLi5vcHRpb25zLmRldixcbiAgICAgIH0sXG4gICAgICBzdGFnaW5nOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuc3RhZ2luZyxcbiAgICAgIH0sXG4gICAgICBwcm9kOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZGV2LFxuICAgICAgfSxcbiAgICAgIGFkZGl0aW9uYWxUYWdzOiBvcHRpb25zLmFkZGl0aW9uYWxUYWdzLFxuICAgICAgbjhuV29ya2Zsb3dzOiBvcHRpb25zLm44bldvcmtmbG93cyxcbiAgICAgIGFjdGlvblZlcnNpb25zOiBvcHRpb25zLmFjdGlvblZlcnNpb25zLFxuICAgICAgYXV0aG9yaXplck9iamVjdFZlcnNpb246IG9wdGlvbnMuYXV0aG9yaXplck9iamVjdFZlcnNpb24sXG4gICAgfSk7XG5cbiAgICBuZXcgR2l0SHViUm9sZXNGaWxlKHRoaXMsIHtcbiAgICAgIGFjY291bnQ6IFBSSU1BUllfQUNDT1VOVCxcbiAgICAgIHByaW1hcnlSZWdpb246IFBSSU1BUllfUkVHSU9OLFxuICAgIH0pO1xuXG4gICAgbmV3IENvZGVPd25lcnNGaWxlKHRoaXMsIHtcbiAgICAgIGFkZGl0aW9uYWxPd25lcnM6IG9wdGlvbnMuYWRkaXRpb25hbENvZGVPd25lcnMsXG4gICAgfSk7XG5cbiAgICBuZXcgRGF0YURvZ0FzcGVjdEZpbGUodGhpcyk7XG5cbiAgICBjb25zdCB2aXRlUmVhY3QgPSBuZXcgVml0ZVJlYWN0UHJvamVjdCh7XG4gICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICBkZWZhdWx0UmVsZWFzZUJyYW5jaDogJ21haW4nLFxuICAgICAgcGFyZW50OiB0aGlzLFxuICAgICAgb3V0ZGlyOiAnd2ViJyxcbiAgICAgIGRlcHM6IG9wdGlvbnMud2Vic2l0ZURlcHMsXG4gICAgfSk7XG4gICAgdml0ZVJlYWN0LmFkZENvbmZpZ0ZpZWxkKCdzb21ldGhpbmcnLCAnbnVtYmVyJyk7XG4gICAgdml0ZVJlYWN0LmFkZENvbmZpZ0ZpZWxkKCdzb21ldGhpbmdFbHNlJywgJ3N0cmluZycpO1xuXG4gICAgY29uc3QgY29uY3VycmVudGx5ID0gKC4uLmFyZ3M6IHN0cmluZ1tdKSA9PiB7XG4gICAgICByZXR1cm4gYGNvbmN1cnJlbnRseSAke2FyZ3MubWFwKGEgPT4gYFwiJHthfVwiYCkuam9pbignICcpfWA7XG4gICAgfTtcblxuICAgIHRoaXMuYWRkVGFzaygnZGV2Jywge1xuICAgICAgZXhlYzogY29uY3VycmVudGx5KFxuICAgICAgICAnbm9kZW1vbiAtLXdhdGNoIC4vc3JjL2NvbnN0cnVjdHMvaGFuZGxlciAtLXdhdGNoIC4vbG9jYWwvZGV2LnRzIC4vbG9jYWwvZGV2LnRzJyxcbiAgICAgICAgdml0ZVJlYWN0LmRldkNvbW1hbmQsXG4gICAgICApLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRUYXNrKCdjZGs6ZGV2Jywge1xuICAgICAgZXhlYzogJ2NkayAtYSBcIm5weCB0cy1ub2RlIC1QIHRzY29uZmlnLmpzb24gLS1wcmVmZXItdHMtZXh0cyBzcmMvTG9jYWxEZXZBcHAudHNcIicsXG4gICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICB9KTtcblxuXG4gIH1cbn1cbiJdfQ==
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmF0bWFuUHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9CYXRtYW5Qcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw4Q0FBb0Y7QUFDcEYsOENBQXNEO0FBQ3RELCtDQUEwRTtBQUMxRSxxREFBa0Q7QUFDbEQsMkRBQXdEO0FBQ3hELHVEQUFvRDtBQUNwRCxpRUFBOEQ7QUFDOUQsbUNBQXlDO0FBQ3pDLHlEQUFzRDtBQXNEdEQsTUFBYSxhQUFjLFNBQVEsNEJBQW1COztJQUNwRCxZQUFZLE9BQTZCO1FBQ3ZDLEtBQUssQ0FBQztZQUNKLEdBQUcsT0FBTztZQUNWLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxJQUFJLFNBQVM7WUFDM0Msb0JBQW9CLEVBQUUsT0FBTyxDQUFDLG9CQUFvQixJQUFJLE1BQU07WUFDNUQsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQ2xCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLElBQUksRUFBRTtnQkFDSixtQkFBbUI7Z0JBQ25CLGdCQUFnQjtnQkFDaEIsV0FBVztnQkFDWCxJQUFJO2dCQUNKLHFCQUFxQjtnQkFDckIsc0JBQXNCO2dCQUN0QiwyQkFBMkI7Z0JBQzNCLDBCQUEwQjtnQkFDMUIsbUNBQW1DO2dCQUNuQyxjQUFjO2dCQUNkLGlDQUFpQztnQkFDakMsU0FBUztnQkFDVCxpQkFBaUI7Z0JBQ2pCLEdBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFO2FBQ3RCO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLHFCQUFxQjtnQkFDckIsU0FBUztnQkFDVCxjQUFjO2dCQUNkLHFDQUFxQztnQkFDckMsR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUU7YUFDekI7WUFDRCxTQUFTLEVBQUU7Z0JBQ1QsbURBQW1EO2dCQUNuRCxjQUFjO2dCQUNkLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFO2FBQzNCO1lBQ0QsUUFBUSxF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Q3RCLElBQUksRUFBRSwyRUFBMkU7WUFDakYsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FBQyxDQUFDO0lBR0wsQ0FBQzs7QUE3SEgsc0NBOEhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXdzQ2RrVHlwZVNjcmlwdEFwcCwgQXdzQ2RrVHlwZVNjcmlwdEFwcE9wdGlvbnMgfSBmcm9tICdwcm9qZW4vbGliL2F3c2Nkayc7XG5pbXBvcnQgeyBHaXRodWJDcmVkZW50aWFscyB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uLCBBcHBsaWNhdGlvbkVudmlyb25tZW50Q29uZmlnIH0gZnJvbSAnLi9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBDb2RlT3duZXJzRmlsZSB9IGZyb20gJy4vQ29kZU93bmVyc0ZpbGUnO1xuaW1wb3J0IHsgRGF0YURvZ0FzcGVjdEZpbGUgfSBmcm9tICcuL0RhdGFEb2dBc3BlY3RGaWxlJztcbmltcG9ydCB7IEdpdEh1YlJvbGVzRmlsZSB9IGZyb20gJy4vR2l0SHViUm9sZXNGaWxlJztcbmltcG9ydCB7IFNvZnR3YXJlRmFjdG9yeUZpbGVzIH0gZnJvbSAnLi9Tb2Z0d2FyZUZhY3RvcnlGaWxlcyc7XG5pbXBvcnQgeyByZWFkbWVDb250ZW50cyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgVml0ZVJlYWN0UHJvamVjdCB9IGZyb20gJy4vVml0ZVJlYWN0UHJvamVjdCc7XG5pbXBvcnQgeyBXb3JrZmxvd0FjdGlvblZlcnNpb25zIH0gZnJvbSAnLi9Xb3JrZmxvd0FjdGlvblZlcnNpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBCYXRtYW5Qcm9qZWN0T3B0aW9ucyBleHRlbmRzIEF3c0Nka1R5cGVTY3JpcHRBcHBPcHRpb25zIHtcblxuICAvKipcbiAgICogRGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGV2OiBBcHBsaWNhdGlvbkVudmlyb25tZW50Q29uZmlnO1xuXG4gIC8qKlxuICAgKiBEZXZlbG9wbWVudCBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSBzdGFnaW5nOiBBcHBsaWNhdGlvbkVudmlyb25tZW50Q29uZmlnO1xuXG4gIC8qKlxuICAgKiBQcm9kdWN0aW9uIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHByb2Q6IEFwcGxpY2F0aW9uRW52aXJvbm1lbnRDb25maWc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgdGFncyB0byBhcHBseSB0byBhbGwgc3RhY2tzXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsVGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBuOG4gd29ya2Zsb3cgYXV0by1kaXNjb3ZlcnkgYW5kIFdvcmtmbG93UHJvdmlkZXIgZ2VuZXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgbjhuV29ya2Zsb3dzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBjb2RlIG93bmVycyB0byBhZGQgdG8gdGhlIENPREVPV05FUlMgZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbENvZGVPd25lcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2Vic2l0ZSBkZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IHdlYnNpdGVEZXBzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyBmb3IgdGhlIHBpbm5lZCBhY3Rpb24gdmVyc2lvbnMgdXNlZCBieSB0aGUgZ2VuZXJhdGVkIEdpdEh1YiBBY3Rpb25zIHdvcmtmbG93cy5cbiAgICovXG4gIHJlYWRvbmx5IGFjdGlvblZlcnNpb25zPzogV29ya2Zsb3dBY3Rpb25WZXJzaW9ucztcblxuICAvKipcbiAgICogT3ZlcnJpZGVzIHRoZSBwaW5uZWQgUzMgb2JqZWN0IHZlcnNpb24gb2YgdGhlIGNsZXJrLWF1dGhvcml6ZXIgTGFtYmRhIGRlcGxveW1lbnQgcGFja2FnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgZGVmYXVsdCBwaW5uZWQgaW4gQXBpQ29uc3RydWN0RmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0aG9yaXplck9iamVjdFZlcnNpb24/OiBzdHJpbmc7XG59XG5cblxuZXhwb3J0IGNsYXNzIEJhdG1hblByb2plY3QgZXh0ZW5kcyBBd3NDZGtUeXBlU2NyaXB0QXBwIHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogQmF0bWFuUHJvamVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcih7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgY2RrVmVyc2lvbjogb3B0aW9ucy5jZGtWZXJzaW9uIHx8ICcyLjIyNC4wJyxcbiAgICAgIGRlZmF1bHRSZWxlYXNlQnJhbmNoOiBvcHRpb25zLmRlZmF1bHRSZWxlYXNlQnJhbmNoIHx8ICdtYWluJyxcbiAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgIHByb2plbnJjVHM6IHRydWUsXG4gICAgICBidWlsZFdvcmtmbG93OiBmYWxzZSxcbiAgICAgIGRlcHM6IFtcbiAgICAgICAgJ0B0eXBlcy9hd3MtbGFtYmRhJyxcbiAgICAgICAgJ0B0eXBlcy9leHByZXNzJyxcbiAgICAgICAgJ0B0eXBlcy9wZycsXG4gICAgICAgICdwZycsXG4gICAgICAgICdAYXdzLXNkay9yZHMtc2lnbmVyJyxcbiAgICAgICAgJ0BtYXR0aGV3Ym9uaWcvc2VjcmV0JyxcbiAgICAgICAgJ2RhdGFkb2ctY2RrLWNvbnN0cnVjdHMtdjInLFxuICAgICAgICAnQGNka2xhYnMvYXdzLWxhbWJkYS1ydXN0JyxcbiAgICAgICAgJ0Bhd3MtbGFtYmRhLXBvd2VydG9vbHMvcGFyYW1ldGVycycsXG4gICAgICAgICdqc29ud2VidG9rZW4nLFxuICAgICAgICAnQGF3cy1zZGsvY2xpZW50LXNlY3JldHMtbWFuYWdlcicsXG4gICAgICAgICdleHByZXNzJyxcbiAgICAgICAgJ3NlcnZlcmxlc3MtaHR0cCcsXG4gICAgICAgIC4uLm9wdGlvbnMuZGVwcyB8fCBbXSxcbiAgICAgIF0sXG4gICAgICBkZXZEZXBzOiBbXG4gICAgICAgICdAdHlwZXMvanNvbndlYnRva2VuJyxcbiAgICAgICAgJ25vZGVtb24nLFxuICAgICAgICAnY29uY3VycmVudGx5JyxcbiAgICAgICAgJ0BtYWNlZG9uLXRlY2hub2xvZ2llcy9iYXRtYW5AXjEuMC4wJyxcbiAgICAgICAgLi4ub3B0aW9ucy5kZXZEZXBzIHx8IFtdLFxuICAgICAgXSxcbiAgICAgIGdpdGlnbm9yZTogW1xuICAgICAgICAnc3JjL2NvbnN0cnVjdHMvaGFuZGxlci9jbGVyay1hdXRob3JpemVyL3RhcmdldC8qKicsXG4gICAgICAgICcqKi8uRFNfU3RvcmUnLFxuICAgICAgICAuLi5vcHRpb25zLmdpdGlnbm9yZSB8fCBbXSxcbiAgICAgIF0sXG4gICAgICB0c2NvbmZpZzoge1xuICAgICAgICAuLi5vcHRpb25zLnRzY29uZmlnLFxuICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICAuLi5vcHRpb25zLnRzY29uZmlnPy5jb21waWxlck9wdGlvbnMsXG4gICAgICAgICAgaXNvbGF0ZWRNb2R1bGVzOiB0cnVlLFxuICAgICAgICAgIGFsbG93SW1wb3J0aW5nVHNFeHRlbnNpb25zOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuICAgICAgbWluTm9kZVZlcnNpb246IG9wdGlvbnMubWluTm9kZVZlcnNpb24gfHwgJzIyJyxcbiAgICAgIGRlcHNVcGdyYWRlT3B0aW9uczoge1xuICAgICAgICB3b3JrZmxvd09wdGlvbnM6IHtcbiAgICAgICAgICBwcm9qZW5DcmVkZW50aWFsczogR2l0aHViQ3JlZGVudGlhbHMuZnJvbVBlcnNvbmFsQWNjZXNzVG9rZW4oe1xuICAgICAgICAgICAgc2VjcmV0OiAnR0lUSFVCX1RPS0VOJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICByZWFkbWU6IHtcbiAgICAgICAgY29udGVudHM6IHJlYWRtZUNvbnRlbnRzKG9wdGlvbnMubmFtZSksXG4gICAgICB9LFxuICAgIH0pO1xuXG5cbiAgICAvLyBDcmVhdGUgc3RhbmRhcmQgcHJvamVjdCBmaWxlc1xuICAgIGNvbnN0IFBSSU1BUllfQUNDT1VOVCA9ICcwMTU5NTU4MTcyNjMnO1xuICAgIGNvbnN0IFBSSU1BUllfUkVHSU9OID0gJ3VzLWVhc3QtMSc7XG5cbiAgICBuZXcgQXBwbGljYXRpb24odGhpcywge1xuICAgICAgZ2l0aHViUmVwb3NpdG9yeTogYG1hY2Vkb24tdGVjaG5vbG9naWVzLyR7b3B0aW9ucy5uYW1lfWAsXG4gICAgICBkZXY6IHtcbiAgICAgICAgLi4ub3B0aW9ucy5kZXYsXG4gICAgICB9LFxuICAgICAgc3RhZ2luZzoge1xuICAgICAgICAuLi5vcHRpb25zLnN0YWdpbmcsXG4gICAgICB9LFxuICAgICAgcHJvZDoge1xuICAgICAgICAuLi5vcHRpb25zLmRldixcbiAgICAgIH0sXG4gICAgICBhZGRpdGlvbmFsVGFnczogb3B0aW9ucy5hZGRpdGlvbmFsVGFncyxcbiAgICAgIG44bldvcmtmbG93czogb3B0aW9ucy5uOG5Xb3JrZmxvd3MsXG4gICAgICBhY3Rpb25WZXJzaW9uczogb3B0aW9ucy5hY3Rpb25WZXJzaW9ucyxcbiAgICAgIGF1dGhvcml6ZXJPYmplY3RWZXJzaW9uOiBvcHRpb25zLmF1dGhvcml6ZXJPYmplY3RWZXJzaW9uLFxuICAgIH0pO1xuXG4gICAgbmV3IEdpdEh1YlJvbGVzRmlsZSh0aGlzLCB7XG4gICAgICBhY2NvdW50OiBQUklNQVJZX0FDQ09VTlQsXG4gICAgICBwcmltYXJ5UmVnaW9uOiBQUklNQVJZX1JFR0lPTixcbiAgICB9KTtcblxuICAgIG5ldyBDb2RlT3duZXJzRmlsZSh0aGlzLCB7XG4gICAgICBhZGRpdGlvbmFsT3duZXJzOiBvcHRpb25zLmFkZGl0aW9uYWxDb2RlT3duZXJzLFxuICAgIH0pO1xuXG4gICAgbmV3IERhdGFEb2dBc3BlY3RGaWxlKHRoaXMpO1xuXG4gICAgbmV3IFNvZnR3YXJlRmFjdG9yeUZpbGVzKHRoaXMsIHtcbiAgICAgIHJlcG9OYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICBiYXNlQnJhbmNoOiBvcHRpb25zLmRlZmF1bHRSZWxlYXNlQnJhbmNoLFxuICAgICAgYWN0aW9uVmVyc2lvbnM6IG9wdGlvbnMuYWN0aW9uVmVyc2lvbnMsXG4gICAgfSk7XG5cbiAgICBjb25zdCB2aXRlUmVhY3QgPSBuZXcgVml0ZVJlYWN0UHJvamVjdCh7XG4gICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICBkZWZhdWx0UmVsZWFzZUJyYW5jaDogJ21haW4nLFxuICAgICAgcGFyZW50OiB0aGlzLFxuICAgICAgb3V0ZGlyOiAnd2ViJyxcbiAgICAgIGRlcHM6IG9wdGlvbnMud2Vic2l0ZURlcHMsXG4gICAgfSk7XG4gICAgdml0ZVJlYWN0LmFkZENvbmZpZ0ZpZWxkKCdzb21ldGhpbmcnLCAnbnVtYmVyJyk7XG4gICAgdml0ZVJlYWN0LmFkZENvbmZpZ0ZpZWxkKCdzb21ldGhpbmdFbHNlJywgJ3N0cmluZycpO1xuXG4gICAgY29uc3QgY29uY3VycmVudGx5ID0gKC4uLmFyZ3M6IHN0cmluZ1tdKSA9PiB7XG4gICAgICByZXR1cm4gYGNvbmN1cnJlbnRseSAke2FyZ3MubWFwKGEgPT4gYFwiJHthfVwiYCkuam9pbignICcpfWA7XG4gICAgfTtcblxuICAgIHRoaXMuYWRkVGFzaygnZGV2Jywge1xuICAgICAgZXhlYzogY29uY3VycmVudGx5KFxuICAgICAgICAnbm9kZW1vbiAtLXdhdGNoIC4vc3JjL2NvbnN0cnVjdHMvaGFuZGxlciAtLXdhdGNoIC4vbG9jYWwvZGV2LnRzIC4vbG9jYWwvZGV2LnRzJyxcbiAgICAgICAgdml0ZVJlYWN0LmRldkNvbW1hbmQsXG4gICAgICApLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRUYXNrKCdjZGs6ZGV2Jywge1xuICAgICAgZXhlYzogJ2NkayAtYSBcIm5weCB0cy1ub2RlIC1QIHRzY29uZmlnLmpzb24gLS1wcmVmZXItdHMtZXh0cyBzcmMvTG9jYWxEZXZBcHAudHNcIicsXG4gICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICB9KTtcblxuXG4gIH1cbn1cbiJdfQ==
@@ -89,6 +89,7 @@ class BootcampBaseApplicationStackFile extends projen_1.TextFile {
89
89
  ' protected hostedZone: IHostedZone;',
90
90
  ' protected vpc: IVpc;',
91
91
  ' protected api: Api;',
92
+ ' protected staticWebsite: StaticWebsite;',
92
93
  '',
93
94
  ' constructor(scope: Construct, private id: string, protected props: TProps) {',
94
95
  ' super(scope, id, props);',
@@ -121,7 +122,7 @@ class BootcampBaseApplicationStackFile extends projen_1.TextFile {
121
122
  ' }',
122
123
  '',
123
124
  ' protected createStaticWebsite() {',
124
- ' new StaticWebsite(this, \'StaticWebsite\', {',
125
+ ' this.staticWebsite = new StaticWebsite(this, \'StaticWebsite\', {',
125
126
  ' hostedZone: this.hostedZone,',
126
127
  ' api: this.api.restApi,',
127
128
  ' hostname: this.props.hostname,',
@@ -152,7 +153,7 @@ class BootcampBaseApplicationStackFile extends projen_1.TextFile {
152
153
  '',
153
154
  ' protected createOutputs() {',
154
155
  ' new CfnOutput(this, \'WebsiteUrl\', {',
155
- ' value: `https://${this.props.hostname}.${this.hostedZone.zoneName}`,',
156
+ ' value: `https://${this.staticWebsite.hostname}`,',
156
157
  ' description: \'The URL of the static website\',',
157
158
  ' exportName: `${this.id.replace(/\\//, \'-\')}-WebsiteUrl`,',
158
159
  ' });',
@@ -205,4 +206,4 @@ class BootcampBaseApplicationStackFile extends projen_1.TextFile {
205
206
  }
206
207
  }
207
208
  exports.BootcampBaseApplicationStackFile = BootcampBaseApplicationStackFile;
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQm9vdGNhbXBCYXNlQXBwbGljYXRpb25TdGFja0ZpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQm9vdGNhbXBCYXNlQXBwbGljYXRpb25TdGFja0ZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQWtDO0FBR2xDLE1BQWEsZ0NBQWlDLFNBQVEsaUJBQVE7SUFDNUQsWUFBWSxPQUE0QjtRQUN0QyxLQUFLLENBQUMsT0FBTyxFQUFFLG9DQUFvQyxFQUFFO1lBQ25ELE1BQU0sRUFBRSxJQUFJO1lBQ1osUUFBUSxFQUFFLElBQUk7WUFDZCxLQUFLLEVBQUU7Z0JBQ0wsd0JBQXdCO2dCQUN4Qiw0QkFBNEI7Z0JBQzVCLHdFQUF3RTtnQkFDeEUsb0RBQW9EO2dCQUNwRCxzRUFBc0U7Z0JBQ3RFLDREQUE0RDtnQkFDNUQsMkNBQTJDO2dCQUMzQyw4REFBOEQ7Z0JBQzlELDZEQUE2RDtnQkFDN0QsNENBQTRDO2dCQUM1QyxnRUFBZ0U7Z0JBQ2hFLEVBQUU7Z0JBQ0YsaUVBQWlFO2dCQUNqRSxFQUFFO2dCQUNGLHdCQUF3QjtnQkFDeEIsU0FBUztnQkFDVCxnRUFBZ0U7Z0JBQ2hFLFFBQVE7Z0JBQ1IscUJBQXFCO2dCQUNyQixTQUFTO2dCQUNULHlDQUF5QztnQkFDekMsRUFBRTtnQkFDRixTQUFTO2dCQUNULCtEQUErRDtnQkFDL0QsUUFBUTtnQkFDUixxQkFBcUI7Z0JBQ3JCLFNBQVM7Z0JBQ1QsMkNBQTJDO2dCQUMzQyxFQUFFO2dCQUNGLFNBQVM7Z0JBQ1Qsc0VBQXNFO2dCQUN0RSxRQUFRO2dCQUNSLHFDQUFxQztnQkFDckMsU0FBUztnQkFDVCxvQ0FBb0M7Z0JBQ3BDLE1BQU07Z0JBQ04sT0FBTztnQkFDUCwwREFBMEQ7Z0JBQzFELE1BQU07Z0JBQ04sK0NBQStDO2dCQUMvQyxPQUFPO2dCQUNQLDBDQUEwQztnQkFDMUMsRUFBRTtnQkFDRixPQUFPO2dCQUNQLCtFQUErRTtnQkFDL0UsT0FBTztnQkFDUCw2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QUNKLDZDQUE2QztnQkFDN0MsMENBQTBDO2dCQUMxQyxLQUFLO2dCQUNMLEdBQUc7YUFDSjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXpNRCw0RUF5TUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZXh0RmlsZSB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBBd3NDZGtUeXBlU2NyaXB0QXBwIH0gZnJvbSAncHJvamVuL2xpYi9hd3NjZGsnO1xuXG5leHBvcnQgY2xhc3MgQm9vdGNhbXBCYXNlQXBwbGljYXRpb25TdGFja0ZpbGUgZXh0ZW5kcyBUZXh0RmlsZSB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IEF3c0Nka1R5cGVTY3JpcHRBcHApIHtcbiAgICBzdXBlcihwcm9qZWN0LCAnc3JjL3N0YWNrcy9CYXNlQXBwbGljYXRpb25TdGFjay50cycsIHtcbiAgICAgIG1hcmtlcjogdHJ1ZSxcbiAgICAgIHJlYWRvbmx5OiB0cnVlLFxuICAgICAgbGluZXM6IFtcbiAgICAgICAgJ2ltcG9ydCBmcyBmcm9tIFxcJ2ZzXFwnOycsXG4gICAgICAgICdpbXBvcnQgcGF0aCBmcm9tIFxcJ3BhdGhcXCc7JyxcbiAgICAgICAgJ2ltcG9ydCB7IEFzcGVjdHMsIENmbk91dHB1dCwgU3RhY2ssIFN0YWNrUHJvcHMgfSBmcm9tIFxcJ2F3cy1jZGstbGliXFwnOycsXG4gICAgICAgICdpbXBvcnQgeyBJVnBjLCBWcGMgfSBmcm9tIFxcJ2F3cy1jZGstbGliL2F3cy1lYzJcXCc7JyxcbiAgICAgICAgJ2ltcG9ydCB7IEhvc3RlZFpvbmUsIElIb3N0ZWRab25lIH0gZnJvbSBcXCdhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1xcJzsnLFxuICAgICAgICAnaW1wb3J0IHsgU2VjcmV0IH0gZnJvbSBcXCdhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXJcXCc7JyxcbiAgICAgICAgJ2ltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXFwnY29uc3RydWN0c1xcJzsnLFxuICAgICAgICAnaW1wb3J0IHsgRGF0YWRvZ0xhbWJkYSB9IGZyb20gXFwnZGF0YWRvZy1jZGstY29uc3RydWN0cy12MlxcJzsnLFxuICAgICAgICAnaW1wb3J0IHsgRGF0YURvZ0FzcGVjdCB9IGZyb20gXFwnLi4vYXNwZWN0cy9EYXRhRG9nQXNwZWN0XFwnOycsXG4gICAgICAgICdpbXBvcnQgeyBBcGkgfSBmcm9tIFxcJy4uL2NvbnN0cnVjdHMvQXBpXFwnOycsXG4gICAgICAgICdpbXBvcnQgeyBTdGF0aWNXZWJzaXRlIH0gZnJvbSBcXCcuLi9jb25zdHJ1Y3RzL1N0YXRpY1dlYnNpdGVcXCc7JyxcbiAgICAgICAgJycsXG4gICAgICAgICdleHBvcnQgaW50ZXJmYWNlIEJhc2VBcHBsaWNhdGlvblN0YWNrUHJvcHMgZXh0ZW5kcyBTdGFja1Byb3BzIHsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgcmVhZG9ubHkgZGF0YWRvZz86IHsnLFxuICAgICAgICAnICAgIC8qKicsXG4gICAgICAgICcgICAgICogVGhlIHZlcnNpb24gb2YgdGhlIERhdGFkb2cgTm9kZS5qcyBMYW1iZGEgbGF5ZXIgdG8gdXNlLicsXG4gICAgICAgICcgICAgIConLFxuICAgICAgICAnICAgICAqIEBkZWZhdWx0IDEyOCcsXG4gICAgICAgICcgICAgICovJyxcbiAgICAgICAgJyAgICByZWFkb25seSBub2RlTGF5ZXJWZXJzaW9uPzogbnVtYmVyOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgIC8qKicsXG4gICAgICAgICcgICAgICogVGhlIHZlcnNpb24gb2YgdGhlIERhdGFkb2cgUHl0aG9uIExhbWJkYSBsYXllciB0byB1c2UuJyxcbiAgICAgICAgJyAgICAgKicsXG4gICAgICAgICcgICAgICogQGRlZmF1bHQgMTIzJyxcbiAgICAgICAgJyAgICAgKi8nLFxuICAgICAgICAnICAgIHJlYWRvbmx5IHB5dGhvbkxheWVyVmVyc2lvbj86IG51bWJlcjsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgICAvKionLFxuICAgICAgICAnICAgICAqIFRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0L3NlcnZpY2UgZm9yIERhdGFkb2cgdGFnZ2luZyBwdXJwb3Nlcy4nLFxuICAgICAgICAnICAgICAqJyxcbiAgICAgICAgJyAgICAgKiBAZGVmYXVsdCAtIHVzZXMgdGhlIHN0YWNrIElEJyxcbiAgICAgICAgJyAgICAgKi8nLFxuICAgICAgICAnICAgIHJlYWRvbmx5IHByb2plY3ROYW1lPzogc3RyaW5nOycsXG4gICAgICAgICcgIH07JyxcbiAgICAgICAgJyAgLyoqJyxcbiAgICAgICAgJyAgICogVGhlIGRvbWFpbiBuYW1lIG9mIHRoZSBSb3V0ZSA1MyBob3N0ZWQgem9uZSB0byB1c2UuJyxcbiAgICAgICAgJyAgIConLFxuICAgICAgICAnICAgKiBAZXhhbXBsZSBcXCdtYWNlZG9uLnNhbmRib3guZGVmaWFuY2UuYWlcXCcnLFxuICAgICAgICAnICAgKi8nLFxuICAgICAgICAnICByZWFkb25seSBob3N0ZWRab25lRG9tYWluTmFtZTogc3RyaW5nOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAvKionLFxuICAgICAgICAnICAgKiBUaGUgQVJOIG9mIHRoZSBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IHRoYXQgY29udGFpbnMgdGhlIERhdGFkb2cgQVBJIGtleS4nLFxuICAgICAgICAnICAgKi8nLFxuICAgICAgICAnICByZWFkb25seSBkYXRhZG9nU2VjcmV0QXJuOiBgYXJuOmF3czpzZWNyZXRzbWFuYWdlcjoke3N0cmluZ306JHtzdHJpbmd9OnNlY3JldDoke3N0cmluZ31gOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAvKionLFxuICAgICAgICAnICAgKiBUaGUgQ2xlcmsgSldLUyBVUkwgdXNlZCB0byB2ZXJpZnkgc2Vzc2lvbiB0b2tlbiBzaWduYXR1cmVzLicsXG4gICAgICAgICcgICAqLycsXG4gICAgICAgICcgIHJlYWRvbmx5IGNsZXJrSndrc1VybDogYGh0dHBzOi8vJHtzdHJpbmd9Ly53ZWxsLWtub3duL2p3a3MuanNvbmA7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIC8qKicsXG4gICAgICAgICcgICAqIFRoZSBOOE4gZW5kcG9pbnQgYmFzZSBVUkwuJyxcbiAgICAgICAgJyAgIConLFxuICAgICAgICAnICAgKiBAZXhhbXBsZSBcXCdodHRwczovL3dvcmtmbG93LnNhbmRib3guZGVmaWFuY2UuYWkvXFwnJyxcbiAgICAgICAgJyAgICovJyxcbiAgICAgICAgJyAgcmVhZG9ubHkgbjhuRW5kcG9pbnQ6IHN0cmluZzsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgLyoqJyxcbiAgICAgICAgJyAgICogVGhlIG5hbWUgb2YgdGhlIFZQQyB0byBjcmVhdGUuJyxcbiAgICAgICAgJyAgIConLFxuICAgICAgICAnICAgKiBAZGVmYXVsdCBcXCcke2lkfS12cGNcXCcnLFxuICAgICAgICAnICAgKi8nLFxuICAgICAgICAnICByZWFkb25seSB2cGNOYW1lPzogc3RyaW5nOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAvKionLFxuICAgICAgICAnICAgKiBUaGUgaG9zdG5hbWUgZm9yIHRoZSBzdGF0aWMgd2Vic2l0ZS4gVGhpcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBob3N0ZWR6b25lLicsXG4gICAgICAgICcgICAqJyxcbiAgICAgICAgJyAgICogQGV4YW1wbGUgXFwnbXlib2lcXCcnLFxuICAgICAgICAnICAgKiBAZGVmYXVsdCBcXCdtdnBcXCcnLFxuICAgICAgICAnICAgKi8nLFxuICAgICAgICAnICByZWFkb25seSBob3N0bmFtZTogc3RyaW5nOycsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICdleHBvcnQgY2xhc3MgQmFzZUFwcGxpY2F0aW9uU3RhY2s8VFByb3BzIGV4dGVuZHMgQmFzZUFwcGxpY2F0aW9uU3RhY2tQcm9wcz4gZXh0ZW5kcyBTdGFjayB7JyxcbiAgICAgICAgJyAgcHJvdGVjdGVkIGRhdGFkb2c6IERhdGFkb2dMYW1iZGE7JyxcbiAgICAgICAgJyAgcHJvdGVjdGVkIGhvc3RlZFpvbmU6IElIb3N0ZWRab25lOycsXG4gICAgICAgICcgIHByb3RlY3RlZCB2cGM6IElWcGM7JyxcbiAgICAgICAgJyAgcHJvdGVjdGVkIGFwaTogQXBpOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBwcml2YXRlIGlkOiBzdHJpbmcsIHByb3RlY3RlZCBwcm9wczogVFByb3BzKSB7JyxcbiAgICAgICAgJyAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgICBpZiAoIXRoaXMucHJvcHMuY2xlcmtKd2tzVXJsKSB7JyxcbiAgICAgICAgJyAgICAgIHRocm93IG5ldyBFcnJvcihcXCdjbGVya0p3a3NVcmwgaXMgcmVxdWlyZWRcXCcpOycsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgIHRoaXMuY3JlYXRlRGF0YWRvZ0V4dGVuc2lvbigpOycsXG4gICAgICAgICcgICAgaWYgKCF0aGlzLmRhdGFkb2cpIHsnLFxuICAgICAgICAnICAgICAgdGhyb3cgbmV3IEVycm9yKFxcJ0RhdGFkb2cgZXh0ZW5zaW9uIGNyZWF0aW9uIGZhaWxlZFxcJyk7JyxcbiAgICAgICAgJyAgICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgdGhpcy5jcmVhdGVIb3N0ZWRab25lKCk7JyxcbiAgICAgICAgJyAgICBpZiAoIXRoaXMuaG9zdGVkWm9uZSkgeycsXG4gICAgICAgICcgICAgICB0aHJvdyBuZXcgRXJyb3IoXFwnSG9zdGVkWm9uZSBjcmVhdGlvbiBmYWlsZWRcXCcpOycsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgIHRoaXMuY3JlYXRlVnBjKCk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgdGhpcy5jcmVhdGVBcGkoKTsnLFxuICAgICAgICAnICAgIGlmICghdGhpcy5hcGkpIHsnLFxuICAgICAgICAnICAgICAgdGhyb3cgbmV3IEVycm9yKFxcJ0FQSSBjcmVhdGlvbiBmYWlsZWRcXCcpOycsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgIHRoaXMuY3JlYXRlU3RhdGljV2Vic2l0ZSgpOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgIHRoaXMuY3JlYXRlT3V0cHV0cygpOycsXG4gICAgICAgICcgICAgQXNwZWN0cy5vZih0aGlzKS5hZGQobmV3IERhdGFEb2dBc3BlY3QoeyBkYXRhZG9nOiB0aGlzLmRhdGFkb2cgfSkpOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgcHJvdGVjdGVkIGNyZWF0ZVN0YXRpY1dlYnNpdGUoKSB7JyxcbiAgICAgICAgJyAgICBuZXcgU3RhdGljV2Vic2l0ZSh0aGlzLCBcXCdTdGF0aWNXZWJzaXRlXFwnLCB7JyxcbiAgICAgICAgJyAgICAgIGhvc3RlZFpvbmU6IHRoaXMuaG9zdGVkWm9uZSwnLFxuICAgICAgICAnICAgICAgYXBpOiB0aGlzLmFwaS5yZXN0QXBpLCcsXG4gICAgICAgICcgICAgICBob3N0bmFtZTogdGhpcy5wcm9wcy5ob3N0bmFtZSwnLFxuICAgICAgICAnICAgIH0pOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgcHJvdGVjdGVkIGNyZWF0ZUFwaSgpIHsnLFxuICAgICAgICAnICAgIHRoaXMuYXBpID0gbmV3IEFwaSh0aGlzLCBcXCdBcGlcXCcsIHsnLFxuICAgICAgICAnICAgICAgdnBjOiB0aGlzLnZwYywnLFxuICAgICAgICAnICAgICAgY2xlcmtKd2tzVXJsOiB0aGlzLnByb3BzLmNsZXJrSndrc1VybCwnLFxuICAgICAgICAnICAgICAgbjhuRW5kcG9pbnQ6IHRoaXMucHJvcHMubjhuRW5kcG9pbnQsJyxcbiAgICAgICAgJyAgICB9KTsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIHByb3RlY3RlZCBjcmVhdGVWcGMoKSB7JyxcbiAgICAgICAgJyAgICB0aGlzLnZwYyA9IG5ldyBWcGModGhpcywgXFwnVlBDXFwnLCB7JyxcbiAgICAgICAgJyAgICAgIHZwY05hbWU6IHRoaXMucHJvcHMudnBjTmFtZSB8fCBgJHt0aGlzLmlkfS12cGNgLCcsXG4gICAgICAgICcgICAgICBtYXhBenM6IDMsJyxcbiAgICAgICAgJyAgICAgIG5hdEdhdGV3YXlzOiAxLCcsXG4gICAgICAgICcgICAgfSk7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICBwcm90ZWN0ZWQgY3JlYXRlSG9zdGVkWm9uZSgpIHsnLFxuICAgICAgICAnICAgIHRoaXMuaG9zdGVkWm9uZSA9IEhvc3RlZFpvbmUuZnJvbUxvb2t1cCh0aGlzLCBcXCdIb3N0ZWRab25lXFwnLCB7JyxcbiAgICAgICAgJyAgICAgIGRvbWFpbk5hbWU6IHRoaXMucHJvcHMuaG9zdGVkWm9uZURvbWFpbk5hbWUsJyxcbiAgICAgICAgJyAgICB9KTsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIHByb3RlY3RlZCBjcmVhdGVPdXRwdXRzKCkgeycsXG4gICAgICAgICcgICAgbmV3IENmbk91dHB1dCh0aGlzLCBcXCdXZWJzaXRlVXJsXFwnLCB7JyxcbiAgICAgICAgJyAgICAgIHZhbHVlOiBgaHR0cHM6Ly8ke3RoaXMucHJvcHMuaG9zdG5hbWV9LiR7dGhpcy5ob3N0ZWRab25lLnpvbmVOYW1lfWAsJyxcbiAgICAgICAgJyAgICAgIGRlc2NyaXB0aW9uOiBcXCdUaGUgVVJMIG9mIHRoZSBzdGF0aWMgd2Vic2l0ZVxcJywnLFxuICAgICAgICAnICAgICAgZXhwb3J0TmFtZTogYCR7dGhpcy5pZC5yZXBsYWNlKC9cXFxcLy8sIFxcJy1cXCcpfS1XZWJzaXRlVXJsYCwnLFxuICAgICAgICAnICAgIH0pOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgcHJvdGVjdGVkIGNyZWF0ZURhdGFkb2dFeHRlbnNpb24oKSB7JyxcbiAgICAgICAgJyAgICBjb25zdCBkYXRhZG9nQXBpU2VjcmV0ID0gU2VjcmV0LmZyb21TZWNyZXRDb21wbGV0ZUFybih0aGlzLCBcXCdEYXRhZG9nQXBpS2V5XFwnLCB0aGlzLnByb3BzLmRhdGFkb2dTZWNyZXRBcm4pOycsXG4gICAgICAgICcgICAgdGhpcy5kYXRhZG9nID0gbmV3IERhdGFkb2dMYW1iZGEodGhpcywgXFwnRGF0YWRvZ1xcJywgeycsXG4gICAgICAgICcgICAgICBhcGlLZXlTZWNyZXQ6IGRhdGFkb2dBcGlTZWNyZXQsJyxcbiAgICAgICAgJyAgICAgIHNlcnZpY2U6IHRoaXMucHJvcHMuZGF0YWRvZz8ucHJvamVjdE5hbWUgfHwgdGhpcy5pZCwnLFxuICAgICAgICAnICAgICAgbm9kZUxheWVyVmVyc2lvbjogdGhpcy5wcm9wcy5kYXRhZG9nPy5ub2RlTGF5ZXJWZXJzaW9uIHx8IDEyOCwnLFxuICAgICAgICAnICAgICAgcHl0aG9uTGF5ZXJWZXJzaW9uOiB0aGlzLnByb3BzLmRhdGFkb2c/LnB5dGhvbkxheWVyVmVyc2lvbiB8fCAxMjMsJyxcbiAgICAgICAgJyAgICAgIGV4dGVuc2lvbkxheWVyVmVyc2lvbjogODYsJyxcbiAgICAgICAgJyAgICB9KTsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIC8qKicsXG4gICAgICAgICcgICAqIEFkZHMgdGhlIGN1cnJlbnQgYnJhbmNoIG5hbWUgKGNsZWFuZWQgd2l0aCBcXCcvXFwnIC0+IFxcJy1cXCcpIGlmIG5vdCBvbiB0aGUgbWFpbiBicmFuY2gnLFxuICAgICAgICAnICAgKiBAcGFyYW0gcHJlZml4JyxcbiAgICAgICAgJyAgICogQHByaXZhdGUnLFxuICAgICAgICAnICAqLycsXG4gICAgICAgICcgIHByaXZhdGUgYWRkQnJhbmNoTmFtZShwcmVmaXg6IHN0cmluZykgeycsXG4gICAgICAgICcgICAgY29uc3QgZGJPdmVycmlkZSA9IHByb2Nlc3MuZW52LkRCX09WRVJSSURFOycsXG4gICAgICAgICcgICAgaWYgKGRiT3ZlcnJpZGUpIHsnLFxuICAgICAgICAnICAgICAgcmV0dXJuIGAke3ByZWZpeH0tJHtkYk92ZXJyaWRlfWA7JyxcbiAgICAgICAgJyAgICB9JyxcbiAgICAgICAgJyAgJyxcbiAgICAgICAgJyAgICBjb25zdCBoZWFkID0gZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcXCcuZ2l0XFwnLCBcXCdIRUFEXFwnKSwgXFwndXRmOFxcJykudHJpbSgpOycsXG4gICAgICAgICcgICAgY29uc3QgYnJhbmNoID0gaGVhZC5zdGFydHNXaXRoKFxcJ3JlZjogXFwnKSA/IGhlYWQucmVwbGFjZShcXCdyZWY6IHJlZnMvaGVhZHMvXFwnLCBcXCdcXCcpIDogaGVhZDsgLy8gZGV0YWNoZWQgSEVBRCByZXR1cm5zIGEgU0hBJyxcbiAgICAgICAgJyAgJyxcbiAgICAgICAgJyAgICBpZiAoYnJhbmNoICE9PSBcXCdtYWluXFwnKSB7JyxcbiAgICAgICAgJyAgICAgIGNvbnNvbGUubG9nKFxcJ2JyYW5jaDogXFwnLCBicmFuY2gpOycsXG4gICAgICAgICcgICAgICBjb25zdCBjbGVhbkJyYW5jaE5hbWUgPSBicmFuY2gucmVwbGFjZSgvXFxcXC8vZ2ksIFxcJy1cXCcpOycsXG4gICAgICAgICcgICAgICByZXR1cm4gYCR7cHJlZml4fS0ke2NsZWFuQnJhbmNoTmFtZX1gOycsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcgICcsXG4gICAgICAgICcgICAgcmV0dXJuIHByZWZpeDsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJyAgJyxcbiAgICAgICAgJyAgcHJvdGVjdGVkIGdldERhdGFiYXNlTmFtZShkYXRhYmFzZU5hbWU6IHN0cmluZykgeycsXG4gICAgICAgICcgICAgcmV0dXJuIHRoaXMuYWRkQnJhbmNoTmFtZShkYXRhYmFzZU5hbWUpOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnICAnLFxuICAgICAgICAnICBwcm90ZWN0ZWQgZ2V0VXNlcm5hbWUodXNlcm5hbWU6IHN0cmluZykgeycsXG4gICAgICAgICcgICAgcmV0dXJuIHRoaXMuYWRkQnJhbmNoTmFtZSh1c2VybmFtZSk7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICd9JyxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQm9vdGNhbXBCYXNlQXBwbGljYXRpb25TdGFja0ZpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQm9vdGNhbXBCYXNlQXBwbGljYXRpb25TdGFja0ZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQWtDO0FBR2xDLE1BQWEsZ0NBQWlDLFNBQVEsaUJBQVE7SUFDNUQsWUFBWSxPQUE0QjtRQUN0QyxLQUFLLENBQUMsT0FBTyxFQUFFLG9DQUFvQyxFQUFFO1lBQ25ELE1BQU0sRUFBRSxJQUFJO1lBQ1osUUFBUSxFQUFFLElBQUk7WUFDZCxLQUFLLEVBQUU7Z0JBQ0wsd0JBQXdCO2dCQUN4Qiw0QkFBNEI7Z0JBQzVCLHdFQUF3RTtnQkFDeEUsb0RBQW9EO2dCQUNwRCxzRUFBc0U7Z0JBQ3RFLDREQUE0RDtnQkFDNUQsMkNBQTJDO2dCQUMzQyw4REFBOEQ7Z0JBQzlELDZEQUE2RDtnQkFDN0QsNENBQTRDO2dCQUM1QyxnRUFBZ0U7Z0JBQ2hFLEVBQUU7Z0JBQ0YsaUVBQWlFO2dCQUNqRSxFQUFFO2dCQUNGLHdCQUF3QjtnQkFDeEIsU0FBUztnQkFDVCxnRUFBZ0U7Z0JBQ2hFLFFBQVE7Z0JBQ1IscUJBQXFCO2dCQUNyQixTQUFTO2dCQUNULHlDQUF5QztnQkFDekMsRUFBRTtnQkFDRixTQUFTO2dCQUNULCtEQUErRDtnQkFDL0QsUUFBUTtnQkFDUixxQkFBcUI7Z0JBQ3JCLFNBQVM7Z0JBQ1QsMkNBQTJDO2dCQUMzQyxFQUFFO2dCQUNGLFNBQVM7Z0JBQ1Qsc0VBQXNFO2dCQUN0RSxRQUFRO2dCQUNSLHFDQUFxQztnQkFDckMsU0FBUztnQkFDVCxvQ0FBb0M7Z0JBQ3BDLE1BQU07Z0JBQ04sT0FBTztnQkFDUCwwREFBMEQ7Z0JBQzFELE1BQU07Z0JBQ04sK0NBQStDO2dCQUMvQyxPQUFPO2dCQUNQLDBDQUEwQztnQkFDMUMsRUFBRTtnQkFDRixPQUFPO2dCQUNQLCtFQUErRTtnQkFDL0UsT0FBTztnQkFDUCw2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O2dCQUNMLElBQUk7Z0JBQ0osNkNBQTZDO2dCQUM3QywwQ0FBMEM7Z0JBQzFDLEtBQUs7Z0JBQ0wsR0FBRzthQUNKO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBMU1ELDRFQTBNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRleHRGaWxlIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IEF3c0Nka1R5cGVTY3JpcHRBcHAgfSBmcm9tICdwcm9qZW4vbGliL2F3c2Nkayc7XG5cbmV4cG9ydCBjbGFzcyBCb290Y2FtcEJhc2VBcHBsaWNhdGlvblN0YWNrRmlsZSBleHRlbmRzIFRleHRGaWxlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogQXdzQ2RrVHlwZVNjcmlwdEFwcCkge1xuICAgIHN1cGVyKHByb2plY3QsICdzcmMvc3RhY2tzL0Jhc2VBcHBsaWNhdGlvblN0YWNrLnRzJywge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgICBsaW5lczogW1xuICAgICAgICAnaW1wb3J0IGZzIGZyb20gXFwnZnNcXCc7JyxcbiAgICAgICAgJ2ltcG9ydCBwYXRoIGZyb20gXFwncGF0aFxcJzsnLFxuICAgICAgICAnaW1wb3J0IHsgQXNwZWN0cywgQ2ZuT3V0cHV0LCBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gXFwnYXdzLWNkay1saWJcXCc7JyxcbiAgICAgICAgJ2ltcG9ydCB7IElWcGMsIFZwYyB9IGZyb20gXFwnYXdzLWNkay1saWIvYXdzLWVjMlxcJzsnLFxuICAgICAgICAnaW1wb3J0IHsgSG9zdGVkWm9uZSwgSUhvc3RlZFpvbmUgfSBmcm9tIFxcJ2F3cy1jZGstbGliL2F3cy1yb3V0ZTUzXFwnOycsXG4gICAgICAgICdpbXBvcnQgeyBTZWNyZXQgfSBmcm9tIFxcJ2F3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlclxcJzsnLFxuICAgICAgICAnaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcXCdjb25zdHJ1Y3RzXFwnOycsXG4gICAgICAgICdpbXBvcnQgeyBEYXRhZG9nTGFtYmRhIH0gZnJvbSBcXCdkYXRhZG9nLWNkay1jb25zdHJ1Y3RzLXYyXFwnOycsXG4gICAgICAgICdpbXBvcnQgeyBEYXRhRG9nQXNwZWN0IH0gZnJvbSBcXCcuLi9hc3BlY3RzL0RhdGFEb2dBc3BlY3RcXCc7JyxcbiAgICAgICAgJ2ltcG9ydCB7IEFwaSB9IGZyb20gXFwnLi4vY29uc3RydWN0cy9BcGlcXCc7JyxcbiAgICAgICAgJ2ltcG9ydCB7IFN0YXRpY1dlYnNpdGUgfSBmcm9tIFxcJy4uL2NvbnN0cnVjdHMvU3RhdGljV2Vic2l0ZVxcJzsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJ2V4cG9ydCBpbnRlcmZhY2UgQmFzZUFwcGxpY2F0aW9uU3RhY2tQcm9wcyBleHRlbmRzIFN0YWNrUHJvcHMgeycsXG4gICAgICAgICcnLFxuICAgICAgICAnICByZWFkb25seSBkYXRhZG9nPzogeycsXG4gICAgICAgICcgICAgLyoqJyxcbiAgICAgICAgJyAgICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgRGF0YWRvZyBOb2RlLmpzIExhbWJkYSBsYXllciB0byB1c2UuJyxcbiAgICAgICAgJyAgICAgKicsXG4gICAgICAgICcgICAgICogQGRlZmF1bHQgMTI4JyxcbiAgICAgICAgJyAgICAgKi8nLFxuICAgICAgICAnICAgIHJlYWRvbmx5IG5vZGVMYXllclZlcnNpb24/OiBudW1iZXI7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgLyoqJyxcbiAgICAgICAgJyAgICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgRGF0YWRvZyBQeXRob24gTGFtYmRhIGxheWVyIHRvIHVzZS4nLFxuICAgICAgICAnICAgICAqJyxcbiAgICAgICAgJyAgICAgKiBAZGVmYXVsdCAxMjMnLFxuICAgICAgICAnICAgICAqLycsXG4gICAgICAgICcgICAgcmVhZG9ubHkgcHl0aG9uTGF5ZXJWZXJzaW9uPzogbnVtYmVyOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgIC8qKicsXG4gICAgICAgICcgICAgICogVGhlIG5hbWUgb2YgdGhlIHByb2plY3Qvc2VydmljZSBmb3IgRGF0YWRvZyB0YWdnaW5nIHB1cnBvc2VzLicsXG4gICAgICAgICcgICAgIConLFxuICAgICAgICAnICAgICAqIEBkZWZhdWx0IC0gdXNlcyB0aGUgc3RhY2sgSUQnLFxuICAgICAgICAnICAgICAqLycsXG4gICAgICAgICcgICAgcmVhZG9ubHkgcHJvamVjdE5hbWU/OiBzdHJpbmc7JyxcbiAgICAgICAgJyAgfTsnLFxuICAgICAgICAnICAvKionLFxuICAgICAgICAnICAgKiBUaGUgZG9tYWluIG5hbWUgb2YgdGhlIFJvdXRlIDUzIGhvc3RlZCB6b25lIHRvIHVzZS4nLFxuICAgICAgICAnICAgKicsXG4gICAgICAgICcgICAqIEBleGFtcGxlIFxcJ21hY2Vkb24uc2FuZGJveC5kZWZpYW5jZS5haVxcJycsXG4gICAgICAgICcgICAqLycsXG4gICAgICAgICcgIHJlYWRvbmx5IGhvc3RlZFpvbmVEb21haW5OYW1lOiBzdHJpbmc7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIC8qKicsXG4gICAgICAgICcgICAqIFRoZSBBUk4gb2YgdGhlIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgdGhhdCBjb250YWlucyB0aGUgRGF0YWRvZyBBUEkga2V5LicsXG4gICAgICAgICcgICAqLycsXG4gICAgICAgICcgIHJlYWRvbmx5IGRhdGFkb2dTZWNyZXRBcm46IGBhcm46YXdzOnNlY3JldHNtYW5hZ2VyOiR7c3RyaW5nfToke3N0cmluZ306c2VjcmV0OiR7c3RyaW5nfWA7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIC8qKicsXG4gICAgICAgICcgICAqIFRoZSBDbGVyayBKV0tTIFVSTCB1c2VkIHRvIHZlcmlmeSBzZXNzaW9uIHRva2VuIHNpZ25hdHVyZXMuJyxcbiAgICAgICAgJyAgICovJyxcbiAgICAgICAgJyAgcmVhZG9ubHkgY2xlcmtKd2tzVXJsOiBgaHR0cHM6Ly8ke3N0cmluZ30vLndlbGwta25vd24vandrcy5qc29uYDsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgLyoqJyxcbiAgICAgICAgJyAgICogVGhlIE44TiBlbmRwb2ludCBiYXNlIFVSTC4nLFxuICAgICAgICAnICAgKicsXG4gICAgICAgICcgICAqIEBleGFtcGxlIFxcJ2h0dHBzOi8vd29ya2Zsb3cuc2FuZGJveC5kZWZpYW5jZS5haS9cXCcnLFxuICAgICAgICAnICAgKi8nLFxuICAgICAgICAnICByZWFkb25seSBuOG5FbmRwb2ludDogc3RyaW5nOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAvKionLFxuICAgICAgICAnICAgKiBUaGUgbmFtZSBvZiB0aGUgVlBDIHRvIGNyZWF0ZS4nLFxuICAgICAgICAnICAgKicsXG4gICAgICAgICcgICAqIEBkZWZhdWx0IFxcJyR7aWR9LXZwY1xcJycsXG4gICAgICAgICcgICAqLycsXG4gICAgICAgICcgIHJlYWRvbmx5IHZwY05hbWU/OiBzdHJpbmc7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIC8qKicsXG4gICAgICAgICcgICAqIFRoZSBob3N0bmFtZSBmb3IgdGhlIHN0YXRpYyB3ZWJzaXRlLiBUaGlzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGhvc3RlZHpvbmUuJyxcbiAgICAgICAgJyAgIConLFxuICAgICAgICAnICAgKiBAZXhhbXBsZSBcXCdteWJvaVxcJycsXG4gICAgICAgICcgICAqIEBkZWZhdWx0IFxcJ212cFxcJycsXG4gICAgICAgICcgICAqLycsXG4gICAgICAgICcgIHJlYWRvbmx5IGhvc3RuYW1lOiBzdHJpbmc7JyxcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgJ2V4cG9ydCBjbGFzcyBCYXNlQXBwbGljYXRpb25TdGFjazxUUHJvcHMgZXh0ZW5kcyBCYXNlQXBwbGljYXRpb25TdGFja1Byb3BzPiBleHRlbmRzIFN0YWNrIHsnLFxuICAgICAgICAnICBwcm90ZWN0ZWQgZGF0YWRvZzogRGF0YWRvZ0xhbWJkYTsnLFxuICAgICAgICAnICBwcm90ZWN0ZWQgaG9zdGVkWm9uZTogSUhvc3RlZFpvbmU7JyxcbiAgICAgICAgJyAgcHJvdGVjdGVkIHZwYzogSVZwYzsnLFxuICAgICAgICAnICBwcm90ZWN0ZWQgYXBpOiBBcGk7JyxcbiAgICAgICAgJyAgcHJvdGVjdGVkIHN0YXRpY1dlYnNpdGU6IFN0YXRpY1dlYnNpdGU7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIHByaXZhdGUgaWQ6IHN0cmluZywgcHJvdGVjdGVkIHByb3BzOiBUUHJvcHMpIHsnLFxuICAgICAgICAnICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgIGlmICghdGhpcy5wcm9wcy5jbGVya0p3a3NVcmwpIHsnLFxuICAgICAgICAnICAgICAgdGhyb3cgbmV3IEVycm9yKFxcJ2NsZXJrSndrc1VybCBpcyByZXF1aXJlZFxcJyk7JyxcbiAgICAgICAgJyAgICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgdGhpcy5jcmVhdGVEYXRhZG9nRXh0ZW5zaW9uKCk7JyxcbiAgICAgICAgJyAgICBpZiAoIXRoaXMuZGF0YWRvZykgeycsXG4gICAgICAgICcgICAgICB0aHJvdyBuZXcgRXJyb3IoXFwnRGF0YWRvZyBleHRlbnNpb24gY3JlYXRpb24gZmFpbGVkXFwnKTsnLFxuICAgICAgICAnICAgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgICB0aGlzLmNyZWF0ZUhvc3RlZFpvbmUoKTsnLFxuICAgICAgICAnICAgIGlmICghdGhpcy5ob3N0ZWRab25lKSB7JyxcbiAgICAgICAgJyAgICAgIHRocm93IG5ldyBFcnJvcihcXCdIb3N0ZWRab25lIGNyZWF0aW9uIGZhaWxlZFxcJyk7JyxcbiAgICAgICAgJyAgICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgdGhpcy5jcmVhdGVWcGMoKTsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgICB0aGlzLmNyZWF0ZUFwaSgpOycsXG4gICAgICAgICcgICAgaWYgKCF0aGlzLmFwaSkgeycsXG4gICAgICAgICcgICAgICB0aHJvdyBuZXcgRXJyb3IoXFwnQVBJIGNyZWF0aW9uIGZhaWxlZFxcJyk7JyxcbiAgICAgICAgJyAgICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgdGhpcy5jcmVhdGVTdGF0aWNXZWJzaXRlKCk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgdGhpcy5jcmVhdGVPdXRwdXRzKCk7JyxcbiAgICAgICAgJyAgICBBc3BlY3RzLm9mKHRoaXMpLmFkZChuZXcgRGF0YURvZ0FzcGVjdCh7IGRhdGFkb2c6IHRoaXMuZGF0YWRvZyB9KSk7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICBwcm90ZWN0ZWQgY3JlYXRlU3RhdGljV2Vic2l0ZSgpIHsnLFxuICAgICAgICAnICAgIHRoaXMuc3RhdGljV2Vic2l0ZSA9IG5ldyBTdGF0aWNXZWJzaXRlKHRoaXMsIFxcJ1N0YXRpY1dlYnNpdGVcXCcsIHsnLFxuICAgICAgICAnICAgICAgaG9zdGVkWm9uZTogdGhpcy5ob3N0ZWRab25lLCcsXG4gICAgICAgICcgICAgICBhcGk6IHRoaXMuYXBpLnJlc3RBcGksJyxcbiAgICAgICAgJyAgICAgIGhvc3RuYW1lOiB0aGlzLnByb3BzLmhvc3RuYW1lLCcsXG4gICAgICAgICcgICAgfSk7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICBwcm90ZWN0ZWQgY3JlYXRlQXBpKCkgeycsXG4gICAgICAgICcgICAgdGhpcy5hcGkgPSBuZXcgQXBpKHRoaXMsIFxcJ0FwaVxcJywgeycsXG4gICAgICAgICcgICAgICB2cGM6IHRoaXMudnBjLCcsXG4gICAgICAgICcgICAgICBjbGVya0p3a3NVcmw6IHRoaXMucHJvcHMuY2xlcmtKd2tzVXJsLCcsXG4gICAgICAgICcgICAgICBuOG5FbmRwb2ludDogdGhpcy5wcm9wcy5uOG5FbmRwb2ludCwnLFxuICAgICAgICAnICAgIH0pOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgcHJvdGVjdGVkIGNyZWF0ZVZwYygpIHsnLFxuICAgICAgICAnICAgIHRoaXMudnBjID0gbmV3IFZwYyh0aGlzLCBcXCdWUENcXCcsIHsnLFxuICAgICAgICAnICAgICAgdnBjTmFtZTogdGhpcy5wcm9wcy52cGNOYW1lIHx8IGAke3RoaXMuaWR9LXZwY2AsJyxcbiAgICAgICAgJyAgICAgIG1heEF6czogMywnLFxuICAgICAgICAnICAgICAgbmF0R2F0ZXdheXM6IDEsJyxcbiAgICAgICAgJyAgICB9KTsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIHByb3RlY3RlZCBjcmVhdGVIb3N0ZWRab25lKCkgeycsXG4gICAgICAgICcgICAgdGhpcy5ob3N0ZWRab25lID0gSG9zdGVkWm9uZS5mcm9tTG9va3VwKHRoaXMsIFxcJ0hvc3RlZFpvbmVcXCcsIHsnLFxuICAgICAgICAnICAgICAgZG9tYWluTmFtZTogdGhpcy5wcm9wcy5ob3N0ZWRab25lRG9tYWluTmFtZSwnLFxuICAgICAgICAnICAgIH0pOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgcHJvdGVjdGVkIGNyZWF0ZU91dHB1dHMoKSB7JyxcbiAgICAgICAgJyAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFxcJ1dlYnNpdGVVcmxcXCcsIHsnLFxuICAgICAgICAnICAgICAgdmFsdWU6IGBodHRwczovLyR7dGhpcy5zdGF0aWNXZWJzaXRlLmhvc3RuYW1lfWAsJyxcbiAgICAgICAgJyAgICAgIGRlc2NyaXB0aW9uOiBcXCdUaGUgVVJMIG9mIHRoZSBzdGF0aWMgd2Vic2l0ZVxcJywnLFxuICAgICAgICAnICAgICAgZXhwb3J0TmFtZTogYCR7dGhpcy5pZC5yZXBsYWNlKC9cXFxcLy8sIFxcJy1cXCcpfS1XZWJzaXRlVXJsYCwnLFxuICAgICAgICAnICAgIH0pOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgcHJvdGVjdGVkIGNyZWF0ZURhdGFkb2dFeHRlbnNpb24oKSB7JyxcbiAgICAgICAgJyAgICBjb25zdCBkYXRhZG9nQXBpU2VjcmV0ID0gU2VjcmV0LmZyb21TZWNyZXRDb21wbGV0ZUFybih0aGlzLCBcXCdEYXRhZG9nQXBpS2V5XFwnLCB0aGlzLnByb3BzLmRhdGFkb2dTZWNyZXRBcm4pOycsXG4gICAgICAgICcgICAgdGhpcy5kYXRhZG9nID0gbmV3IERhdGFkb2dMYW1iZGEodGhpcywgXFwnRGF0YWRvZ1xcJywgeycsXG4gICAgICAgICcgICAgICBhcGlLZXlTZWNyZXQ6IGRhdGFkb2dBcGlTZWNyZXQsJyxcbiAgICAgICAgJyAgICAgIHNlcnZpY2U6IHRoaXMucHJvcHMuZGF0YWRvZz8ucHJvamVjdE5hbWUgfHwgdGhpcy5pZCwnLFxuICAgICAgICAnICAgICAgbm9kZUxheWVyVmVyc2lvbjogdGhpcy5wcm9wcy5kYXRhZG9nPy5ub2RlTGF5ZXJWZXJzaW9uIHx8IDEyOCwnLFxuICAgICAgICAnICAgICAgcHl0aG9uTGF5ZXJWZXJzaW9uOiB0aGlzLnByb3BzLmRhdGFkb2c/LnB5dGhvbkxheWVyVmVyc2lvbiB8fCAxMjMsJyxcbiAgICAgICAgJyAgICAgIGV4dGVuc2lvbkxheWVyVmVyc2lvbjogODYsJyxcbiAgICAgICAgJyAgICB9KTsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIC8qKicsXG4gICAgICAgICcgICAqIEFkZHMgdGhlIGN1cnJlbnQgYnJhbmNoIG5hbWUgKGNsZWFuZWQgd2l0aCBcXCcvXFwnIC0+IFxcJy1cXCcpIGlmIG5vdCBvbiB0aGUgbWFpbiBicmFuY2gnLFxuICAgICAgICAnICAgKiBAcGFyYW0gcHJlZml4JyxcbiAgICAgICAgJyAgICogQHByaXZhdGUnLFxuICAgICAgICAnICAqLycsXG4gICAgICAgICcgIHByaXZhdGUgYWRkQnJhbmNoTmFtZShwcmVmaXg6IHN0cmluZykgeycsXG4gICAgICAgICcgICAgY29uc3QgZGJPdmVycmlkZSA9IHByb2Nlc3MuZW52LkRCX09WRVJSSURFOycsXG4gICAgICAgICcgICAgaWYgKGRiT3ZlcnJpZGUpIHsnLFxuICAgICAgICAnICAgICAgcmV0dXJuIGAke3ByZWZpeH0tJHtkYk92ZXJyaWRlfWA7JyxcbiAgICAgICAgJyAgICB9JyxcbiAgICAgICAgJyAgJyxcbiAgICAgICAgJyAgICBjb25zdCBoZWFkID0gZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcXCcuZ2l0XFwnLCBcXCdIRUFEXFwnKSwgXFwndXRmOFxcJykudHJpbSgpOycsXG4gICAgICAgICcgICAgY29uc3QgYnJhbmNoID0gaGVhZC5zdGFydHNXaXRoKFxcJ3JlZjogXFwnKSA/IGhlYWQucmVwbGFjZShcXCdyZWY6IHJlZnMvaGVhZHMvXFwnLCBcXCdcXCcpIDogaGVhZDsgLy8gZGV0YWNoZWQgSEVBRCByZXR1cm5zIGEgU0hBJyxcbiAgICAgICAgJyAgJyxcbiAgICAgICAgJyAgICBpZiAoYnJhbmNoICE9PSBcXCdtYWluXFwnKSB7JyxcbiAgICAgICAgJyAgICAgIGNvbnNvbGUubG9nKFxcJ2JyYW5jaDogXFwnLCBicmFuY2gpOycsXG4gICAgICAgICcgICAgICBjb25zdCBjbGVhbkJyYW5jaE5hbWUgPSBicmFuY2gucmVwbGFjZSgvXFxcXC8vZ2ksIFxcJy1cXCcpOycsXG4gICAgICAgICcgICAgICByZXR1cm4gYCR7cHJlZml4fS0ke2NsZWFuQnJhbmNoTmFtZX1gOycsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcgICcsXG4gICAgICAgICcgICAgcmV0dXJuIHByZWZpeDsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJyAgJyxcbiAgICAgICAgJyAgcHJvdGVjdGVkIGdldERhdGFiYXNlTmFtZShkYXRhYmFzZU5hbWU6IHN0cmluZykgeycsXG4gICAgICAgICcgICAgcmV0dXJuIHRoaXMuYWRkQnJhbmNoTmFtZShkYXRhYmFzZU5hbWUpOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnICAnLFxuICAgICAgICAnICBwcm90ZWN0ZWQgZ2V0VXNlcm5hbWUodXNlcm5hbWU6IHN0cmluZykgeycsXG4gICAgICAgICcgICAgcmV0dXJuIHRoaXMuYWRkQnJhbmNoTmFtZSh1c2VybmFtZSk7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICd9JyxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -8,10 +8,11 @@ const BootcampApplication_1 = require("./BootcampApplication");
8
8
  const CodeOwnersFile_1 = require("./CodeOwnersFile");
9
9
  const DataDogAspectFile_1 = require("./DataDogAspectFile");
10
10
  const GitHubRolesFile_1 = require("./GitHubRolesFile");
11
+ const SoftwareFactoryFiles_1 = require("./SoftwareFactoryFiles");
11
12
  const utils_1 = require("./utils");
12
13
  const ViteReactProject_1 = require("./ViteReactProject");
13
14
  class BootcampProject extends awscdk_1.AwsCdkTypeScriptApp {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.BootcampProject", version: "1.17.3" };
15
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.BootcampProject", version: "1.18.1" };
15
16
  constructor(options) {
16
17
  super({
17
18
  ...options,
@@ -96,6 +97,11 @@ class BootcampProject extends awscdk_1.AwsCdkTypeScriptApp {
96
97
  additionalOwners: options.additionalCodeOwners,
97
98
  });
98
99
  new DataDogAspectFile_1.DataDogAspectFile(this);
100
+ new SoftwareFactoryFiles_1.SoftwareFactoryFiles(this, {
101
+ repoName: options.name,
102
+ baseBranch: options.defaultReleaseBranch,
103
+ actionVersions: options.actionVersions,
104
+ });
99
105
  const viteReact = new ViteReactProject_1.ViteReactProject({
100
106
  name: options.name,
101
107
  defaultReleaseBranch: 'main',
@@ -118,4 +124,4 @@ class BootcampProject extends awscdk_1.AwsCdkTypeScriptApp {
118
124
  }
119
125
  }
120
126
  exports.BootcampProject = BootcampProject;
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQm9vdGNhbXBQcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Jvb3RjYW1wUHJvamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsOENBQXdEO0FBQ3hELDhDQUFzRDtBQUV0RCwrREFBNEQ7QUFDNUQscURBQWtEO0FBQ2xELDJEQUF3RDtBQUN4RCx1REFBb0Q7QUFDcEQsbUNBQXlDO0FBQ3pDLHlEQUFzRDtBQU90RCxNQUFhLGVBQWdCLFNBQVEsNEJBQW1COztJQUN0RCxZQUFZLE9BQStCO1FBQ3pDLEtBQUssQ0FBQztZQUNKLEdBQUcsT0FBTztZQUNWLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxJQUFJLFNBQVM7WUFDM0Msb0JBQW9CLEVBQUUsT0FBTyxDQUFDLG9CQUFvQixJQUFJLE1BQU07WUFDNUQsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQ2xCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLElBQUksRUFBRTtnQkFDSixtQkFBbUI7Z0JBQ25CLGdCQUFnQjtnQkFDaEIsV0FBVztnQkFDWCxJQUFJO2dCQUNKLHFCQUFxQjtnQkFDckIsc0JBQXNCO2dCQUN0QiwyQkFBMkI7Z0JBQzNCLDBCQUEwQjtnQkFDMUIsbUNBQW1DO2dCQUNuQyxjQUFjO2dCQUNkLGlDQUFpQztnQkFDakMsU0FBUztnQkFDVCxpQkFBaUI7Z0JBQ2pCLGFBQWE7Z0JBQ2IsR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUU7YUFDdEI7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AscUJBQXFCO2dCQUNyQixTQUFTO2dCQUNULGNBQWM7Z0JBQ2QscUNBQXFDO2dCQUNyQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRTthQUN6QjtZQUNELFNBQVMsRUFBRTtnQkFDVCxtREFBbUQ7Z0JBQ25ELGNBQWM7Z0JBQ2QsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUU7YUFDM0I7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsR0FBRyxPQUFPLENBQUMsUUFBUTtnQkFDbkIsZUFBZSxFQUFFO29CQUNmLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxlQUFlO29CQUNwQyxlQUFlLEVBQUUsSUFBSTtvQkFDckIsMEJBQTBCLEVBQUUsSUFBSTtpQkFDakM7YUFDRjtZQUNELFVBQVUsRUFBRSxLQUFLO1lBQ2pCLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYyxJQUFJLElBQUk7WUFDOUMsa0JBQWtCLEVBQUU7Z0JBQ2xCLGVBQWUsRUFBRTtvQkFDZixpQkFBaUIsRUFBRSwwQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQzt3QkFDM0QsTUFBTSxFQUFFLGNBQWM7cUJBQ3ZCLENBQUM7aUJBQ0g7YUFDRjtZQUNELE1BQU0sRUFBRTtnQkFDTixRQUFRLEVBQUUsSUFBQSxzQkFBYyxFQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7YUFDdkM7U0FDRixDQUFDLENBQUM7UUFHSCxnQ0FBZ0M7UUFDaEMsTUFBTSxlQUFlLEdBQUcsY0FBYyxDQUFDO1FBQ3ZDLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQztRQUVuQyxJQUFJLHlDQUFtQixDQUFDLElBQUksRUFBRTtZQUM1QixnQkFBZ0IsRUFBRSx3QkFBd0IsT0FBTyxDQUFDLElBQUksRUFBRTtZQUN4RCxHQUFHLEVBQUU7Z0JBQ0gsR0FBRyxPQUFPLENBQUMsR0FBRzthQUNmO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEdBQUcsT0FBTyxDQUFDLE9BQU87YUFDbkI7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osR0FBRyxPQUFPLENBQUMsR0FBRzthQUNmO1lBQ0QsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjO1lBQ3RDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtZQUNsQyxjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWM7U0FDdkMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxpQ0FBZSxDQUFDLElBQUksRUFBRTtZQUN4QixPQUFPLEVBQUUsZUFBZTtZQUN4QixhQUFhLEVBQUUsY0FBYztTQUM5QixDQUFDLENBQUM7UUFFSCxJQUFJLCtCQUFjLENBQUMsSUFBSSxFQUFFO1lBQ3ZCLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxvQkFBb0I7U0FDL0MsQ0FBQyxDQUFDO1FBRUgsSUFBSSxxQ0FBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1QixNQUFNLFNBQVMsR0FBRyxJQUFJLG1DQUFnQixDQUFDO1lBQ3JDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtZQUNsQixvQkFBb0IsRUFBRSxNQUFNO1lBQzVCLE1BQU0sRUFBRSxJQUFJO1lBQ1osTUFBTSxFQUFFLEtBQUs7WUFDYixJQUFJLEVBQUUsT0FBTyxDQUFDLFdBQVc7U0FDMUIsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDaEQsU0FBUyxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFcEQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLElBQWMsRUFBRSxFQUFFO1lBQ3pDLE9BQU8sZ0JBQWdCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDN0QsQ0FBQyxDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDbEIsSUFBSSxFQUFFLFlBQVksQ0FDaEIsZ0ZBQWdGLEVBQ2hGLFNBQVMsQ0FBQyxVQUFVLENBQ3JCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDdEIsSUFBSSxFQUFFLDJFQUEyRTtZQUNqRixXQUFXLEVBQUUsSUFBSTtTQUNsQixDQUFDLENBQUM7SUFHTCxDQUFDOztBQXZISCwwQ0F3SEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBd3NDZGtUeXBlU2NyaXB0QXBwIH0gZnJvbSAncHJvamVuL2xpYi9hd3NjZGsnO1xuaW1wb3J0IHsgR2l0aHViQ3JlZGVudGlhbHMgfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yic7XG5pbXBvcnQgeyBCYXRtYW5Qcm9qZWN0T3B0aW9ucyB9IGZyb20gJy4vQmF0bWFuUHJvamVjdCc7XG5pbXBvcnQgeyBCb290Y2FtcEFwcGxpY2F0aW9uIH0gZnJvbSAnLi9Cb290Y2FtcEFwcGxpY2F0aW9uJztcbmltcG9ydCB7IENvZGVPd25lcnNGaWxlIH0gZnJvbSAnLi9Db2RlT3duZXJzRmlsZSc7XG5pbXBvcnQgeyBEYXRhRG9nQXNwZWN0RmlsZSB9IGZyb20gJy4vRGF0YURvZ0FzcGVjdEZpbGUnO1xuaW1wb3J0IHsgR2l0SHViUm9sZXNGaWxlIH0gZnJvbSAnLi9HaXRIdWJSb2xlc0ZpbGUnO1xuaW1wb3J0IHsgcmVhZG1lQ29udGVudHMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFZpdGVSZWFjdFByb2plY3QgfSBmcm9tICcuL1ZpdGVSZWFjdFByb2plY3QnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9vdGNhbXBQcm9qZWN0T3B0aW9ucyBleHRlbmRzIEJhdG1hblByb2plY3RPcHRpb25zIHtcblxufVxuXG5leHBvcnQgY2xhc3MgQm9vdGNhbXBQcm9qZWN0IGV4dGVuZHMgQXdzQ2RrVHlwZVNjcmlwdEFwcCB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEJvb3RjYW1wUHJvamVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcih7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgY2RrVmVyc2lvbjogb3B0aW9ucy5jZGtWZXJzaW9uIHx8ICcyLjIyNC4wJyxcbiAgICAgIGRlZmF1bHRSZWxlYXNlQnJhbmNoOiBvcHRpb25zLmRlZmF1bHRSZWxlYXNlQnJhbmNoIHx8ICdtYWluJyxcbiAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgIHByb2plbnJjVHM6IHRydWUsXG4gICAgICBidWlsZFdvcmtmbG93OiBmYWxzZSxcbiAgICAgIGRlcHM6IFtcbiAgICAgICAgJ0B0eXBlcy9hd3MtbGFtYmRhJyxcbiAgICAgICAgJ0B0eXBlcy9leHByZXNzJyxcbiAgICAgICAgJ0B0eXBlcy9wZycsXG4gICAgICAgICdwZycsXG4gICAgICAgICdAYXdzLXNkay9yZHMtc2lnbmVyJyxcbiAgICAgICAgJ0BtYXR0aGV3Ym9uaWcvc2VjcmV0JyxcbiAgICAgICAgJ2RhdGFkb2ctY2RrLWNvbnN0cnVjdHMtdjInLFxuICAgICAgICAnQGNka2xhYnMvYXdzLWxhbWJkYS1ydXN0JyxcbiAgICAgICAgJ0Bhd3MtbGFtYmRhLXBvd2VydG9vbHMvcGFyYW1ldGVycycsXG4gICAgICAgICdqc29ud2VidG9rZW4nLFxuICAgICAgICAnQGF3cy1zZGsvY2xpZW50LXNlY3JldHMtbWFuYWdlcicsXG4gICAgICAgICdleHByZXNzJyxcbiAgICAgICAgJ3NlcnZlcmxlc3MtaHR0cCcsXG4gICAgICAgICdjZGstcmRzLXNxbCcsXG4gICAgICAgIC4uLm9wdGlvbnMuZGVwcyB8fCBbXSxcbiAgICAgIF0sXG4gICAgICBkZXZEZXBzOiBbXG4gICAgICAgICdAdHlwZXMvanNvbndlYnRva2VuJyxcbiAgICAgICAgJ25vZGVtb24nLFxuICAgICAgICAnY29uY3VycmVudGx5JyxcbiAgICAgICAgJ0BtYWNlZG9uLXRlY2hub2xvZ2llcy9iYXRtYW5AXjEuMC4wJyxcbiAgICAgICAgLi4ub3B0aW9ucy5kZXZEZXBzIHx8IFtdLFxuICAgICAgXSxcbiAgICAgIGdpdGlnbm9yZTogW1xuICAgICAgICAnc3JjL2NvbnN0cnVjdHMvaGFuZGxlci9jbGVyay1hdXRob3JpemVyL3RhcmdldC8qKicsXG4gICAgICAgICcqKi8uRFNfU3RvcmUnLFxuICAgICAgICAuLi5vcHRpb25zLmdpdGlnbm9yZSB8fCBbXSxcbiAgICAgIF0sXG4gICAgICB0c2NvbmZpZzoge1xuICAgICAgICAuLi5vcHRpb25zLnRzY29uZmlnLFxuICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICAuLi5vcHRpb25zLnRzY29uZmlnPy5jb21waWxlck9wdGlvbnMsXG4gICAgICAgICAgaXNvbGF0ZWRNb2R1bGVzOiB0cnVlLFxuICAgICAgICAgIGFsbG93SW1wb3J0aW5nVHNFeHRlbnNpb25zOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuICAgICAgbWluTm9kZVZlcnNpb246IG9wdGlvbnMubWluTm9kZVZlcnNpb24gfHwgJzIyJyxcbiAgICAgIGRlcHNVcGdyYWRlT3B0aW9uczoge1xuICAgICAgICB3b3JrZmxvd09wdGlvbnM6IHtcbiAgICAgICAgICBwcm9qZW5DcmVkZW50aWFsczogR2l0aHViQ3JlZGVudGlhbHMuZnJvbVBlcnNvbmFsQWNjZXNzVG9rZW4oe1xuICAgICAgICAgICAgc2VjcmV0OiAnR0lUSFVCX1RPS0VOJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICByZWFkbWU6IHtcbiAgICAgICAgY29udGVudHM6IHJlYWRtZUNvbnRlbnRzKG9wdGlvbnMubmFtZSksXG4gICAgICB9LFxuICAgIH0pO1xuXG5cbiAgICAvLyBDcmVhdGUgc3RhbmRhcmQgcHJvamVjdCBmaWxlc1xuICAgIGNvbnN0IFBSSU1BUllfQUNDT1VOVCA9ICcwMTU5NTU4MTcyNjMnO1xuICAgIGNvbnN0IFBSSU1BUllfUkVHSU9OID0gJ3VzLWVhc3QtMSc7XG5cbiAgICBuZXcgQm9vdGNhbXBBcHBsaWNhdGlvbih0aGlzLCB7XG4gICAgICBnaXRodWJSZXBvc2l0b3J5OiBgbWFjZWRvbi10ZWNobm9sb2dpZXMvJHtvcHRpb25zLm5hbWV9YCxcbiAgICAgIGRldjoge1xuICAgICAgICAuLi5vcHRpb25zLmRldixcbiAgICAgIH0sXG4gICAgICBzdGFnaW5nOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuc3RhZ2luZyxcbiAgICAgIH0sXG4gICAgICBwcm9kOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZGV2LFxuICAgICAgfSxcbiAgICAgIGFkZGl0aW9uYWxUYWdzOiBvcHRpb25zLmFkZGl0aW9uYWxUYWdzLFxuICAgICAgbjhuV29ya2Zsb3dzOiBvcHRpb25zLm44bldvcmtmbG93cyxcbiAgICAgIGFjdGlvblZlcnNpb25zOiBvcHRpb25zLmFjdGlvblZlcnNpb25zLFxuICAgIH0pO1xuXG4gICAgbmV3IEdpdEh1YlJvbGVzRmlsZSh0aGlzLCB7XG4gICAgICBhY2NvdW50OiBQUklNQVJZX0FDQ09VTlQsXG4gICAgICBwcmltYXJ5UmVnaW9uOiBQUklNQVJZX1JFR0lPTixcbiAgICB9KTtcblxuICAgIG5ldyBDb2RlT3duZXJzRmlsZSh0aGlzLCB7XG4gICAgICBhZGRpdGlvbmFsT3duZXJzOiBvcHRpb25zLmFkZGl0aW9uYWxDb2RlT3duZXJzLFxuICAgIH0pO1xuXG4gICAgbmV3IERhdGFEb2dBc3BlY3RGaWxlKHRoaXMpO1xuXG4gICAgY29uc3Qgdml0ZVJlYWN0ID0gbmV3IFZpdGVSZWFjdFByb2plY3Qoe1xuICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6ICdtYWluJyxcbiAgICAgIHBhcmVudDogdGhpcyxcbiAgICAgIG91dGRpcjogJ3dlYicsXG4gICAgICBkZXBzOiBvcHRpb25zLndlYnNpdGVEZXBzLFxuICAgIH0pO1xuICAgIHZpdGVSZWFjdC5hZGRDb25maWdGaWVsZCgnc29tZXRoaW5nJywgJ251bWJlcicpO1xuICAgIHZpdGVSZWFjdC5hZGRDb25maWdGaWVsZCgnc29tZXRoaW5nRWxzZScsICdzdHJpbmcnKTtcblxuICAgIGNvbnN0IGNvbmN1cnJlbnRseSA9ICguLi5hcmdzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgcmV0dXJuIGBjb25jdXJyZW50bHkgJHthcmdzLm1hcChhID0+IGBcIiR7YX1cImApLmpvaW4oJyAnKX1gO1xuICAgIH07XG5cbiAgICB0aGlzLmFkZFRhc2soJ2RldicsIHtcbiAgICAgIGV4ZWM6IGNvbmN1cnJlbnRseShcbiAgICAgICAgJ25vZGVtb24gLS13YXRjaCAuL3NyYy9jb25zdHJ1Y3RzL2hhbmRsZXIgLS13YXRjaCAuL2xvY2FsL2Rldi50cyAuL2xvY2FsL2Rldi50cycsXG4gICAgICAgIHZpdGVSZWFjdC5kZXZDb21tYW5kLFxuICAgICAgKSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkVGFzaygnY2RrOmRldicsIHtcbiAgICAgIGV4ZWM6ICdjZGsgLWEgXCJucHggdHMtbm9kZSAtUCB0c2NvbmZpZy5qc29uIC0tcHJlZmVyLXRzLWV4dHMgc3JjL0xvY2FsRGV2QXBwLnRzXCInLFxuICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgfSk7XG5cblxuICB9XG59XG4iXX0=
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQm9vdGNhbXBQcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Jvb3RjYW1wUHJvamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsOENBQXdEO0FBQ3hELDhDQUFzRDtBQUV0RCwrREFBNEQ7QUFDNUQscURBQWtEO0FBQ2xELDJEQUF3RDtBQUN4RCx1REFBb0Q7QUFDcEQsaUVBQThEO0FBQzlELG1DQUF5QztBQUN6Qyx5REFBc0Q7QUFPdEQsTUFBYSxlQUFnQixTQUFRLDRCQUFtQjs7SUFDdEQsWUFBWSxPQUErQjtRQUN6QyxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsSUFBSSxTQUFTO1lBQzNDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsSUFBSSxNQUFNO1lBQzVELElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtZQUNsQixVQUFVLEVBQUUsSUFBSTtZQUNoQixhQUFhLEVBQUUsS0FBSztZQUNwQixJQUFJLEVBQUU7Z0JBQ0osbUJBQW1CO2dCQUNuQixnQkFBZ0I7Z0JBQ2hCLFdBQVc7Z0JBQ1gsSUFBSTtnQkFDSixxQkFBcUI7Z0JBQ3JCLHNCQUFzQjtnQkFDdEIsMkJBQTJCO2dCQUMzQiwwQkFBMEI7Z0JBQzFCLG1DQUFtQztnQkFDbkMsY0FBYztnQkFDZCxpQ0FBaUM7Z0JBQ2pDLFNBQVM7Z0JBQ1QsaUJBQWlCO2dCQUNqQixhQUFhO2dCQUNiLEdBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFO2FBQ3RCO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLHFCQUFxQjtnQkFDckIsU0FBUztnQkFDVCxjQUFjO2dCQUNkLHFDQUFxQztnQkFDckMsR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUU7YUFDekI7WUFDRCxTQUFTLEVBQUU7Z0JBQ1QsbURBQW1EO2dCQUNuRCxjQUFjO2dCQUNkLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFO2FB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RTtZQUNqRixXQUFXLEVBQUUsSUFBSTtTQUNsQixDQUFDLENBQUM7SUFHTCxDQUFDOztBQTdISCwwQ0E4SEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBd3NDZGtUeXBlU2NyaXB0QXBwIH0gZnJvbSAncHJvamVuL2xpYi9hd3NjZGsnO1xuaW1wb3J0IHsgR2l0aHViQ3JlZGVudGlhbHMgfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yic7XG5pbXBvcnQgeyBCYXRtYW5Qcm9qZWN0T3B0aW9ucyB9IGZyb20gJy4vQmF0bWFuUHJvamVjdCc7XG5pbXBvcnQgeyBCb290Y2FtcEFwcGxpY2F0aW9uIH0gZnJvbSAnLi9Cb290Y2FtcEFwcGxpY2F0aW9uJztcbmltcG9ydCB7IENvZGVPd25lcnNGaWxlIH0gZnJvbSAnLi9Db2RlT3duZXJzRmlsZSc7XG5pbXBvcnQgeyBEYXRhRG9nQXNwZWN0RmlsZSB9IGZyb20gJy4vRGF0YURvZ0FzcGVjdEZpbGUnO1xuaW1wb3J0IHsgR2l0SHViUm9sZXNGaWxlIH0gZnJvbSAnLi9HaXRIdWJSb2xlc0ZpbGUnO1xuaW1wb3J0IHsgU29mdHdhcmVGYWN0b3J5RmlsZXMgfSBmcm9tICcuL1NvZnR3YXJlRmFjdG9yeUZpbGVzJztcbmltcG9ydCB7IHJlYWRtZUNvbnRlbnRzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBWaXRlUmVhY3RQcm9qZWN0IH0gZnJvbSAnLi9WaXRlUmVhY3RQcm9qZWN0JztcblxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb3RjYW1wUHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBCYXRtYW5Qcm9qZWN0T3B0aW9ucyB7XG5cbn1cblxuZXhwb3J0IGNsYXNzIEJvb3RjYW1wUHJvamVjdCBleHRlbmRzIEF3c0Nka1R5cGVTY3JpcHRBcHAge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBCb290Y2FtcFByb2plY3RPcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGNka1ZlcnNpb246IG9wdGlvbnMuY2RrVmVyc2lvbiB8fCAnMi4yMjQuMCcsXG4gICAgICBkZWZhdWx0UmVsZWFzZUJyYW5jaDogb3B0aW9ucy5kZWZhdWx0UmVsZWFzZUJyYW5jaCB8fCAnbWFpbicsXG4gICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICBwcm9qZW5yY1RzOiB0cnVlLFxuICAgICAgYnVpbGRXb3JrZmxvdzogZmFsc2UsXG4gICAgICBkZXBzOiBbXG4gICAgICAgICdAdHlwZXMvYXdzLWxhbWJkYScsXG4gICAgICAgICdAdHlwZXMvZXhwcmVzcycsXG4gICAgICAgICdAdHlwZXMvcGcnLFxuICAgICAgICAncGcnLFxuICAgICAgICAnQGF3cy1zZGsvcmRzLXNpZ25lcicsXG4gICAgICAgICdAbWF0dGhld2JvbmlnL3NlY3JldCcsXG4gICAgICAgICdkYXRhZG9nLWNkay1jb25zdHJ1Y3RzLXYyJyxcbiAgICAgICAgJ0BjZGtsYWJzL2F3cy1sYW1iZGEtcnVzdCcsXG4gICAgICAgICdAYXdzLWxhbWJkYS1wb3dlcnRvb2xzL3BhcmFtZXRlcnMnLFxuICAgICAgICAnanNvbndlYnRva2VuJyxcbiAgICAgICAgJ0Bhd3Mtc2RrL2NsaWVudC1zZWNyZXRzLW1hbmFnZXInLFxuICAgICAgICAnZXhwcmVzcycsXG4gICAgICAgICdzZXJ2ZXJsZXNzLWh0dHAnLFxuICAgICAgICAnY2RrLXJkcy1zcWwnLFxuICAgICAgICAuLi5vcHRpb25zLmRlcHMgfHwgW10sXG4gICAgICBdLFxuICAgICAgZGV2RGVwczogW1xuICAgICAgICAnQHR5cGVzL2pzb253ZWJ0b2tlbicsXG4gICAgICAgICdub2RlbW9uJyxcbiAgICAgICAgJ2NvbmN1cnJlbnRseScsXG4gICAgICAgICdAbWFjZWRvbi10ZWNobm9sb2dpZXMvYmF0bWFuQF4xLjAuMCcsXG4gICAgICAgIC4uLm9wdGlvbnMuZGV2RGVwcyB8fCBbXSxcbiAgICAgIF0sXG4gICAgICBnaXRpZ25vcmU6IFtcbiAgICAgICAgJ3NyYy9jb25zdHJ1Y3RzL2hhbmRsZXIvY2xlcmstYXV0aG9yaXplci90YXJnZXQvKionLFxuICAgICAgICAnKiovLkRTX1N0b3JlJyxcbiAgICAgICAgLi4ub3B0aW9ucy5naXRpZ25vcmUgfHwgW10sXG4gICAgICBdLFxuICAgICAgdHNjb25maWc6IHtcbiAgICAgICAgLi4ub3B0aW9ucy50c2NvbmZpZyxcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgLi4ub3B0aW9ucy50c2NvbmZpZz8uY29tcGlsZXJPcHRpb25zLFxuICAgICAgICAgIGlzb2xhdGVkTW9kdWxlczogdHJ1ZSxcbiAgICAgICAgICBhbGxvd0ltcG9ydGluZ1RzRXh0ZW5zaW9uczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzYW1wbGVDb2RlOiBmYWxzZSxcbiAgICAgIG1pbk5vZGVWZXJzaW9uOiBvcHRpb25zLm1pbk5vZGVWZXJzaW9uIHx8ICcyMicsXG4gICAgICBkZXBzVXBncmFkZU9wdGlvbnM6IHtcbiAgICAgICAgd29ya2Zsb3dPcHRpb25zOiB7XG4gICAgICAgICAgcHJvamVuQ3JlZGVudGlhbHM6IEdpdGh1YkNyZWRlbnRpYWxzLmZyb21QZXJzb25hbEFjY2Vzc1Rva2VuKHtcbiAgICAgICAgICAgIHNlY3JldDogJ0dJVEhVQl9UT0tFTicsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcmVhZG1lOiB7XG4gICAgICAgIGNvbnRlbnRzOiByZWFkbWVDb250ZW50cyhvcHRpb25zLm5hbWUpLFxuICAgICAgfSxcbiAgICB9KTtcblxuXG4gICAgLy8gQ3JlYXRlIHN0YW5kYXJkIHByb2plY3QgZmlsZXNcbiAgICBjb25zdCBQUklNQVJZX0FDQ09VTlQgPSAnMDE1OTU1ODE3MjYzJztcbiAgICBjb25zdCBQUklNQVJZX1JFR0lPTiA9ICd1cy1lYXN0LTEnO1xuXG4gICAgbmV3IEJvb3RjYW1wQXBwbGljYXRpb24odGhpcywge1xuICAgICAgZ2l0aHViUmVwb3NpdG9yeTogYG1hY2Vkb24tdGVjaG5vbG9naWVzLyR7b3B0aW9ucy5uYW1lfWAsXG4gICAgICBkZXY6IHtcbiAgICAgICAgLi4ub3B0aW9ucy5kZXYsXG4gICAgICB9LFxuICAgICAgc3RhZ2luZzoge1xuICAgICAgICAuLi5vcHRpb25zLnN0YWdpbmcsXG4gICAgICB9LFxuICAgICAgcHJvZDoge1xuICAgICAgICAuLi5vcHRpb25zLmRldixcbiAgICAgIH0sXG4gICAgICBhZGRpdGlvbmFsVGFnczogb3B0aW9ucy5hZGRpdGlvbmFsVGFncyxcbiAgICAgIG44bldvcmtmbG93czogb3B0aW9ucy5uOG5Xb3JrZmxvd3MsXG4gICAgICBhY3Rpb25WZXJzaW9uczogb3B0aW9ucy5hY3Rpb25WZXJzaW9ucyxcbiAgICB9KTtcblxuICAgIG5ldyBHaXRIdWJSb2xlc0ZpbGUodGhpcywge1xuICAgICAgYWNjb3VudDogUFJJTUFSWV9BQ0NPVU5ULFxuICAgICAgcHJpbWFyeVJlZ2lvbjogUFJJTUFSWV9SRUdJT04sXG4gICAgfSk7XG5cbiAgICBuZXcgQ29kZU93bmVyc0ZpbGUodGhpcywge1xuICAgICAgYWRkaXRpb25hbE93bmVyczogb3B0aW9ucy5hZGRpdGlvbmFsQ29kZU93bmVycyxcbiAgICB9KTtcblxuICAgIG5ldyBEYXRhRG9nQXNwZWN0RmlsZSh0aGlzKTtcblxuICAgIG5ldyBTb2Z0d2FyZUZhY3RvcnlGaWxlcyh0aGlzLCB7XG4gICAgICByZXBvTmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgYmFzZUJyYW5jaDogb3B0aW9ucy5kZWZhdWx0UmVsZWFzZUJyYW5jaCxcbiAgICAgIGFjdGlvblZlcnNpb25zOiBvcHRpb25zLmFjdGlvblZlcnNpb25zLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgdml0ZVJlYWN0ID0gbmV3IFZpdGVSZWFjdFByb2plY3Qoe1xuICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6ICdtYWluJyxcbiAgICAgIHBhcmVudDogdGhpcyxcbiAgICAgIG91dGRpcjogJ3dlYicsXG4gICAgICBkZXBzOiBvcHRpb25zLndlYnNpdGVEZXBzLFxuICAgIH0pO1xuICAgIHZpdGVSZWFjdC5hZGRDb25maWdGaWVsZCgnc29tZXRoaW5nJywgJ251bWJlcicpO1xuICAgIHZpdGVSZWFjdC5hZGRDb25maWdGaWVsZCgnc29tZXRoaW5nRWxzZScsICdzdHJpbmcnKTtcblxuICAgIGNvbnN0IGNvbmN1cnJlbnRseSA9ICguLi5hcmdzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgcmV0dXJuIGBjb25jdXJyZW50bHkgJHthcmdzLm1hcChhID0+IGBcIiR7YX1cImApLmpvaW4oJyAnKX1gO1xuICAgIH07XG5cbiAgICB0aGlzLmFkZFRhc2soJ2RldicsIHtcbiAgICAgIGV4ZWM6IGNvbmN1cnJlbnRseShcbiAgICAgICAgJ25vZGVtb24gLS13YXRjaCAuL3NyYy9jb25zdHJ1Y3RzL2hhbmRsZXIgLS13YXRjaCAuL2xvY2FsL2Rldi50cyAuL2xvY2FsL2Rldi50cycsXG4gICAgICAgIHZpdGVSZWFjdC5kZXZDb21tYW5kLFxuICAgICAgKSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkVGFzaygnY2RrOmRldicsIHtcbiAgICAgIGV4ZWM6ICdjZGsgLWEgXCJucHggdHMtbm9kZSAtUCB0c2NvbmZpZy5qc29uIC0tcHJlZmVyLXRzLWV4dHMgc3JjL0xvY2FsRGV2QXBwLnRzXCInLFxuICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgfSk7XG5cblxuICB9XG59XG4iXX0=
@@ -4,7 +4,7 @@ exports.CodeOwnersFile = void 0;
4
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
5
  const projen_1 = require("projen");
6
6
  class CodeOwnersFile extends projen_1.TextFile {
7
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.CodeOwnersFile", version: "1.17.3" };
7
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.CodeOwnersFile", version: "1.18.1" };
8
8
  constructor(project, options = {}) {
9
9
  const defaultOwners = ['* @macedon-technologies/platform'];
10
10
  const allOwners = [...defaultOwners, ...(options.additionalOwners || [])];
@@ -7,7 +7,7 @@ const javascript_1 = require("projen/lib/javascript");
7
7
  const utils_1 = require("./utils");
8
8
  const WorkflowActionVersions_1 = require("./WorkflowActionVersions");
9
9
  class ProductionDeployWorkflow extends projen_1.YamlFile {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.ProductionDeployWorkflow", version: "1.17.3" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.ProductionDeployWorkflow", version: "1.18.1" };
11
11
  constructor(project, options) {
12
12
  const packageManager = project.package.packageManager;
13
13
  const actionVersions = (0, WorkflowActionVersions_1.resolveActionVersions)(options.actionVersions);
@@ -0,0 +1,10 @@
1
+ import { NodeProject } from 'projen/lib/javascript';
2
+ /**
3
+ * The generic, data-driven architecture rule engine plus an empty seed
4
+ * rules.json. `check.ts`/`tsconfig.json`/`README.md` are managed (Batman
5
+ * owns the engine); `rules.json` is a `SampleFile` — each repo's own rules
6
+ * are data the team owns, not something Batman should overwrite.
7
+ */
8
+ export declare class SoftwareFactoryArchitectureRules {
9
+ constructor(project: NodeProject);
10
+ }