cdktn 0.25.0-pre.9 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +2191 -422
- package/README.md +12 -0
- package/lib/annotations.js +1 -1
- package/lib/app.js +1 -1
- package/lib/aspect.js +1 -1
- package/lib/asset-hash.d.ts +75 -0
- package/lib/asset-hash.js +129 -0
- package/lib/asset-staging.d.ts +180 -0
- package/lib/asset-staging.js +464 -0
- package/lib/assets.d.ts +401 -0
- package/lib/assets.js +333 -0
- package/lib/backends/azurerm-backend.js +2 -2
- package/lib/backends/cloud-backend.js +10 -7
- package/lib/backends/consul-backend.js +2 -2
- package/lib/backends/cos-backend.js +2 -2
- package/lib/backends/gcs-backend.js +2 -2
- package/lib/backends/http-backend.js +2 -2
- package/lib/backends/local-backend.js +2 -2
- package/lib/backends/oss-backend.js +2 -2
- package/lib/backends/pg-backend.js +2 -2
- package/lib/backends/remote-backend.js +4 -4
- package/lib/backends/s3-backend.js +2 -2
- package/lib/backends/swift-backend.js +2 -2
- package/lib/complex-computed-list.js +26 -26
- package/lib/errors.d.ts +16 -0
- package/lib/errors.js +51 -3
- package/lib/functions/provider-function.js +1 -1
- package/lib/functions/terraform-functions.generated.js +1 -1
- package/lib/ignore-strategy.d.ts +82 -0
- package/lib/ignore-strategy.js +29 -0
- package/lib/importable-resource.js +7 -4
- package/lib/index.d.ts +4 -0
- package/lib/index.js +5 -1
- package/lib/manifest.js +1 -1
- package/lib/private/fs.d.ts +74 -2
- package/lib/private/fs.js +93 -14
- package/lib/resource.js +1 -1
- package/lib/synthesize/synthesizer.js +9 -22
- package/lib/terraform-asset.d.ts +68 -5
- package/lib/terraform-asset.js +86 -36
- package/lib/terraform-backend.js +1 -1
- package/lib/terraform-count.js +1 -1
- package/lib/terraform-data-resource.d.ts +1 -1
- package/lib/terraform-data-resource.js +8 -5
- package/lib/terraform-data-source.js +1 -1
- package/lib/terraform-element.js +1 -1
- package/lib/terraform-ephemeral-resource.js +1 -1
- package/lib/terraform-functions.js +1 -1
- package/lib/terraform-hcl-module.js +1 -1
- package/lib/terraform-iterator.js +6 -6
- package/lib/terraform-local.js +1 -1
- package/lib/terraform-module.js +1 -1
- package/lib/terraform-operators.js +1 -1
- package/lib/terraform-output.js +1 -1
- package/lib/terraform-provider.js +1 -1
- package/lib/terraform-provisioner.js +1 -1
- package/lib/terraform-remote-state.js +1 -1
- package/lib/terraform-resource-targets.js +1 -1
- package/lib/terraform-resource.js +9 -4
- package/lib/terraform-stack.js +1 -1
- package/lib/terraform-variable.js +2 -2
- package/lib/testing/adapters/jest.d.ts +2 -1
- package/lib/testing/adapters/jest.js +3 -3
- package/lib/testing/index.js +1 -1
- package/lib/testing/matchers.d.ts +34 -30
- package/lib/testing/matchers.js +292 -89
- package/lib/tokens/lazy.js +2 -2
- package/lib/tokens/resolvable.js +2 -2
- package/lib/tokens/string-fragments.js +2 -2
- package/lib/tokens/token.js +2 -2
- package/lib/upgrade-id-aspect.js +1 -1
- package/lib/validations/index.d.ts +0 -1
- package/lib/validations/index.js +1 -2
- package/package.json +17 -3
- package/scripts/pack.mjs +27 -12
- package/lib/validations/validate-binary-version.d.ts +0 -23
- package/lib/validations/validate-binary-version.js +0 -91
- package/lib/validations/validate-terraform-version.d.ts +0 -13
- package/lib/validations/validate-terraform-version.js +0 -23
package/lib/assets.js
ADDED
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ChainBundler = exports.BundlerKey = exports.BundleResult = exports.BundleOutputType = exports.AssetPackaging = exports.AssetHashType = void 0;
|
|
37
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
38
|
+
// Copyright (c) HashiCorp, Inc
|
|
39
|
+
// SPDX-License-Identifier: MPL-2.0
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const errors_1 = require("./errors");
|
|
43
|
+
const fs_1 = require("./private/fs");
|
|
44
|
+
/**
|
|
45
|
+
* The type of asset hash.
|
|
46
|
+
*
|
|
47
|
+
* The hash identifies a specific revision of the asset and caches deployment
|
|
48
|
+
* work such as packaging and uploading.
|
|
49
|
+
*/
|
|
50
|
+
var AssetHashType;
|
|
51
|
+
(function (AssetHashType) {
|
|
52
|
+
/**
|
|
53
|
+
* Based on the content of the source path.
|
|
54
|
+
*
|
|
55
|
+
* Use `SOURCE` to track changes to the source files directly.
|
|
56
|
+
*/
|
|
57
|
+
AssetHashType["SOURCE"] = "source";
|
|
58
|
+
/**
|
|
59
|
+
* Based on the content of the bundling output.
|
|
60
|
+
*
|
|
61
|
+
* Use `OUTPUT` when the source is a top-level folder holding code and/or
|
|
62
|
+
* dependencies not directly linked to the asset.
|
|
63
|
+
*/
|
|
64
|
+
AssetHashType["OUTPUT"] = "output";
|
|
65
|
+
/**
|
|
66
|
+
* Use a custom hash.
|
|
67
|
+
*/
|
|
68
|
+
AssetHashType["CUSTOM"] = "custom";
|
|
69
|
+
})(AssetHashType || (exports.AssetHashType = AssetHashType = {}));
|
|
70
|
+
/**
|
|
71
|
+
* Copies a single file verbatim.
|
|
72
|
+
*/
|
|
73
|
+
class FilePackaging {
|
|
74
|
+
extension = "";
|
|
75
|
+
producesDirectory = false;
|
|
76
|
+
acceptsDirectorySource = false;
|
|
77
|
+
omitsDirectoryEntries = false;
|
|
78
|
+
pack(options) {
|
|
79
|
+
fs.copyFileSync(options.source, options.target);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Copies a directory tree verbatim, without archiving it.
|
|
84
|
+
*/
|
|
85
|
+
class DirectoryPackaging {
|
|
86
|
+
extension = "";
|
|
87
|
+
producesDirectory = true;
|
|
88
|
+
acceptsDirectorySource = true;
|
|
89
|
+
omitsDirectoryEntries = false;
|
|
90
|
+
pack(options) {
|
|
91
|
+
(0, fs_1.copySync)(options.source, options.target, {
|
|
92
|
+
shouldExclude: options.ignoreStrategy
|
|
93
|
+
? (relativePath, isDirectory) => options.ignoreStrategy.ignores({ relativePath, isDirectory })
|
|
94
|
+
: undefined,
|
|
95
|
+
descendIntoExcludedDirectories: options.ignoreStrategy?.pruneExcludedDirectories === false,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Archives a directory tree into a single zip file.
|
|
101
|
+
*/
|
|
102
|
+
class ZipPackaging {
|
|
103
|
+
extension = ".zip";
|
|
104
|
+
producesDirectory = false;
|
|
105
|
+
acceptsDirectorySource = true;
|
|
106
|
+
omitsDirectoryEntries = true;
|
|
107
|
+
pack(options) {
|
|
108
|
+
(0, fs_1.archiveSync)(options.source, options.target, options.ignoreStrategy
|
|
109
|
+
? (relativePath, isDirectory) => options.ignoreStrategy.ignores({ relativePath, isDirectory })
|
|
110
|
+
: undefined, options.ignoreStrategy?.pruneExcludedDirectories === false);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Built-in packaging strategies. Custom formats implement `IAssetPackaging`
|
|
115
|
+
* directly rather than extending this class.
|
|
116
|
+
*/
|
|
117
|
+
class AssetPackaging {
|
|
118
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.AssetPackaging", version: "0.25.0" };
|
|
119
|
+
/**
|
|
120
|
+
* Copy a single file as-is.
|
|
121
|
+
*/
|
|
122
|
+
static FILE = new FilePackaging();
|
|
123
|
+
/**
|
|
124
|
+
* Copy a directory tree as-is, without archiving.
|
|
125
|
+
*/
|
|
126
|
+
static DIRECTORY = new DirectoryPackaging();
|
|
127
|
+
/**
|
|
128
|
+
* Archive a directory tree into a single zip file.
|
|
129
|
+
*/
|
|
130
|
+
static ZIP = new ZipPackaging();
|
|
131
|
+
constructor() { }
|
|
132
|
+
}
|
|
133
|
+
exports.AssetPackaging = AssetPackaging;
|
|
134
|
+
/**
|
|
135
|
+
* The shape of a bundler's output, so staging and packaging can treat a
|
|
136
|
+
* single-file artifact (a tarball, a `.zip`) differently from a directory
|
|
137
|
+
* tree without inferring it from the path.
|
|
138
|
+
*/
|
|
139
|
+
var BundleOutputType;
|
|
140
|
+
(function (BundleOutputType) {
|
|
141
|
+
/**
|
|
142
|
+
* The output is a directory tree.
|
|
143
|
+
*
|
|
144
|
+
* Packaged like an unbundled source directory. The default, and the only
|
|
145
|
+
* shape that predates archive support.
|
|
146
|
+
*/
|
|
147
|
+
BundleOutputType["DIRECTORY"] = "directory";
|
|
148
|
+
/**
|
|
149
|
+
* The output is a single file the bundler already produced in its final
|
|
150
|
+
* form.
|
|
151
|
+
*
|
|
152
|
+
* A tarball or a deterministic `.zip`. Staged verbatim rather than
|
|
153
|
+
* re-archived, so `AssetType.FILE` no longer has to reject a bundler.
|
|
154
|
+
*/
|
|
155
|
+
BundleOutputType["FILE"] = "file";
|
|
156
|
+
})(BundleOutputType || (exports.BundleOutputType = BundleOutputType = {}));
|
|
157
|
+
/**
|
|
158
|
+
* What a bundler produced, returned from {@link IAssetBundler.bundle}.
|
|
159
|
+
*
|
|
160
|
+
* Carries the artifact path and its shape, or a declined state signalling the
|
|
161
|
+
* caller should fall back. See {@link declined} for the decline protocol.
|
|
162
|
+
*/
|
|
163
|
+
class BundleResult {
|
|
164
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.BundleResult", version: "0.25.0" };
|
|
165
|
+
/**
|
|
166
|
+
* A directory-tree artifact at `path`.
|
|
167
|
+
*/
|
|
168
|
+
static directory(path) {
|
|
169
|
+
return new BundleResult(BundleOutputType.DIRECTORY, path, false);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* A single-file artifact at `path` (a tarball, a `.zip`), staged verbatim.
|
|
173
|
+
*/
|
|
174
|
+
static file(path) {
|
|
175
|
+
return new BundleResult(BundleOutputType.FILE, path, false);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* The bundler declined to run here; the caller should fall back.
|
|
179
|
+
*
|
|
180
|
+
* Distinct from a thrown error, which is a hard failure.
|
|
181
|
+
*/
|
|
182
|
+
static declined() {
|
|
183
|
+
return new BundleResult(undefined, undefined, true);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* The artifact's shape, or undefined when {@link isDeclined}.
|
|
187
|
+
*/
|
|
188
|
+
outputType;
|
|
189
|
+
/**
|
|
190
|
+
* The artifact path, or undefined when {@link isDeclined}.
|
|
191
|
+
*/
|
|
192
|
+
path;
|
|
193
|
+
/**
|
|
194
|
+
* Whether the bundler declined to run, signalling the caller to fall back.
|
|
195
|
+
*/
|
|
196
|
+
isDeclined;
|
|
197
|
+
constructor(outputType, path, isDeclined) {
|
|
198
|
+
this.outputType = outputType;
|
|
199
|
+
this.path = path;
|
|
200
|
+
this.isDeclined = isDeclined;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
exports.BundleResult = BundleResult;
|
|
204
|
+
/**
|
|
205
|
+
* Builds an {@link IAssetBundler.bundlerKey} from an ordered set of parts.
|
|
206
|
+
*
|
|
207
|
+
* A `bundlerKey` has to serialize everything that can move a build's output;
|
|
208
|
+
* done ad hoc, every bundler invents its own delimiter and forgets an input
|
|
209
|
+
* differently. This gives the convention one implementation: parts are joined
|
|
210
|
+
* with a separator that is escaped inside values, so distinct inputs cannot
|
|
211
|
+
* collide into the same key.
|
|
212
|
+
*
|
|
213
|
+
* @example
|
|
214
|
+
* const key = BundlerKey.of("docker", image, command)
|
|
215
|
+
* .withEnv({ NODE_ENV: nodeEnv })
|
|
216
|
+
* .toString();
|
|
217
|
+
*/
|
|
218
|
+
class BundlerKey {
|
|
219
|
+
parts;
|
|
220
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.BundlerKey", version: "0.25.0" };
|
|
221
|
+
/**
|
|
222
|
+
* Start a key from an ordered list of parts.
|
|
223
|
+
*
|
|
224
|
+
* Order is significant: it is part of what the key identifies.
|
|
225
|
+
*/
|
|
226
|
+
static of(...parts) {
|
|
227
|
+
return new BundlerKey(parts);
|
|
228
|
+
}
|
|
229
|
+
static escape(part) {
|
|
230
|
+
return part.replace(/\\/g, "\\\\").replace(/:/g, "\\:");
|
|
231
|
+
}
|
|
232
|
+
constructor(parts) {
|
|
233
|
+
this.parts = parts;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Append parts, returning a new key.
|
|
237
|
+
*/
|
|
238
|
+
add(...parts) {
|
|
239
|
+
return new BundlerKey([...this.parts, ...parts]);
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Append `key=value` parts for a record, sorted by key so the result does
|
|
243
|
+
* not depend on property order.
|
|
244
|
+
*/
|
|
245
|
+
withEnv(entries) {
|
|
246
|
+
const kept = Object.keys(entries)
|
|
247
|
+
.sort()
|
|
248
|
+
.map((k) => `${k}=${entries[k]}`);
|
|
249
|
+
return new BundlerKey([...this.parts, ...kept]);
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Render the collected parts to the string passed as `bundlerKey`.
|
|
253
|
+
*/
|
|
254
|
+
toString() {
|
|
255
|
+
return this.parts.map(BundlerKey.escape).join(":");
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
exports.BundlerKey = BundlerKey;
|
|
259
|
+
/**
|
|
260
|
+
* Composes bundlers into a "try each in order until one runs" chain.
|
|
261
|
+
*
|
|
262
|
+
* This is how a local bundler and a Docker bundler compose without being
|
|
263
|
+
* rewritten as one: each leg declines (`BundleResult.declined()`) when it
|
|
264
|
+
* cannot run here, and the chain moves to the next. The first non-declining
|
|
265
|
+
* result wins; if all decline, `bundle` throws, since staging has nothing to
|
|
266
|
+
* fall back to. Each leg builds into its own output directory, so a leg that
|
|
267
|
+
* writes before declining cannot leak partial files into the leg that wins.
|
|
268
|
+
*
|
|
269
|
+
* The chain's `bundlerKey` folds in *every* leg's key, so identity is the same
|
|
270
|
+
* regardless of which leg ends up running — a build that could have gone local
|
|
271
|
+
* or Docker is one asset, not two.
|
|
272
|
+
*
|
|
273
|
+
* This makes the legs interchangeable only if they produce equivalent output.
|
|
274
|
+
* Under `SOURCE` hashing they must: a machine with a host tool and one without
|
|
275
|
+
* run different legs, and non-equivalent legs would stage different bytes under
|
|
276
|
+
* the same hash. Use `OUTPUT` hashing when legs may diverge, so identity tracks
|
|
277
|
+
* the artifact each leg actually produced.
|
|
278
|
+
*/
|
|
279
|
+
class ChainBundler {
|
|
280
|
+
bundlers;
|
|
281
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.ChainBundler", version: "0.25.0" };
|
|
282
|
+
/**
|
|
283
|
+
* Chain bundlers in the order given; earlier bundlers are preferred.
|
|
284
|
+
*/
|
|
285
|
+
static of(...bundlers) {
|
|
286
|
+
return new ChainBundler(bundlers);
|
|
287
|
+
}
|
|
288
|
+
bundlerKey;
|
|
289
|
+
outputFileName;
|
|
290
|
+
constructor(bundlers) {
|
|
291
|
+
this.bundlers = bundlers;
|
|
292
|
+
if (bundlers.length === 0) {
|
|
293
|
+
throw (0, errors_1.chainBundlerRequiresAtLeastOneBundler)();
|
|
294
|
+
}
|
|
295
|
+
// Fold in every leg's key so which leg runs cannot change identity. A leg
|
|
296
|
+
// without a key contributes an empty part, still distinguishing "two legs"
|
|
297
|
+
// from "one leg" positionally.
|
|
298
|
+
const keys = bundlers.map((b) => b.bundlerKey ?? "");
|
|
299
|
+
this.bundlerKey = keys.some((k) => k !== "")
|
|
300
|
+
? BundlerKey.of("chain", ...keys).toString()
|
|
301
|
+
: undefined;
|
|
302
|
+
// The staged file name is fixed at construction, before any leg runs, so
|
|
303
|
+
// legs that declare one must agree — otherwise the name would depend on
|
|
304
|
+
// which leg happens to run.
|
|
305
|
+
const names = new Set(bundlers
|
|
306
|
+
.map((b) => b.outputFileName)
|
|
307
|
+
.filter((n) => n !== undefined));
|
|
308
|
+
if (names.size > 1) {
|
|
309
|
+
throw (0, errors_1.chainBundlerConflictingOutputFileName)([...names]);
|
|
310
|
+
}
|
|
311
|
+
this.outputFileName = names.size === 1 ? [...names][0] : undefined;
|
|
312
|
+
}
|
|
313
|
+
bundle(options) {
|
|
314
|
+
for (let i = 0; i < this.bundlers.length; i++) {
|
|
315
|
+
// Each leg gets its own output directory. A leg is free to write before
|
|
316
|
+
// it declines (esbuild failing on an unsupported target, a Docker leg
|
|
317
|
+
// creating output before finding the daemon down), and sharing one
|
|
318
|
+
// directory would leak those partial files into the leg that succeeds.
|
|
319
|
+
const legOutputDir = path.join(options.outputDir, `leg-${i}`);
|
|
320
|
+
fs.mkdirSync(legOutputDir);
|
|
321
|
+
const result = this.bundlers[i].bundle({
|
|
322
|
+
source: options.source,
|
|
323
|
+
outputDir: legOutputDir,
|
|
324
|
+
});
|
|
325
|
+
if (!result.isDeclined) {
|
|
326
|
+
return result;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
throw (0, errors_1.chainBundlerAllDeclined)(this.bundlers.length);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
exports.ChainBundler = ChainBundler;
|
|
333
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Fzc2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUVuQyx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLHFDQUlrQjtBQUNsQixxQ0FBcUQ7QUE4Q3JEOzs7OztHQUtHO0FBQ0gsSUFBWSxhQW9CWDtBQXBCRCxXQUFZLGFBQWE7SUFDdkI7Ozs7T0FJRztJQUNILGtDQUFpQixDQUFBO0lBRWpCOzs7OztPQUtHO0lBQ0gsa0NBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCxrQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBcEJXLGFBQWEsNkJBQWIsYUFBYSxRQW9CeEI7QUFrRkQ7O0dBRUc7QUFDSCxNQUFNLGFBQWE7SUFDRCxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ2YsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQzFCLHNCQUFzQixHQUFHLEtBQUssQ0FBQztJQUMvQixxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFDdkMsSUFBSSxDQUFDLE9BQW9CO1FBQzlCLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLGtCQUFrQjtJQUNOLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDZixpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDekIsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO0lBQzlCLHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUN2QyxJQUFJLENBQUMsT0FBb0I7UUFDOUIsSUFBQSxhQUFRLEVBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ3ZDLGFBQWEsRUFBRSxPQUFPLENBQUMsY0FBYztnQkFDbkMsQ0FB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LEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNyRSxDQUFDO0lBRU0sTUFBTSxDQUFDLE9BQXNCO1FBQ2xDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzlDLHdFQUF3RTtZQUN4RSxzRUFBc0U7WUFDdEUsbUVBQW1FO1lBQ25FLHVFQUF1RTtZQUN2RSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzlELEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDM0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQ3JDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDdEIsU0FBUyxFQUFFLFlBQVk7YUFDeEIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztRQUNILENBQUM7UUFDRCxNQUFNLElBQUEsZ0NBQXVCLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RCxDQUFDOztBQXZESCxvQ0F3REMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuXG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7XG4gIGNoYWluQnVuZGxlckFsbERlY2xpbmVkLFxuICBjaGFpbkJ1bmRsZXJDb25mbGljdGluZ091dHB1dEZpbGVOYW1lLFxuICBjaGFpbkJ1bmRsZXJSZXF1aXJlc0F0TGVhc3RPbmVCdW5kbGVyLFxufSBmcm9tIFwiLi9lcnJvcnNcIjtcbmltcG9ydCB7IGFyY2hpdmVTeW5jLCBjb3B5U3luYyB9IGZyb20gXCIuL3ByaXZhdGUvZnNcIjtcbmltcG9ydCB7IElJZ25vcmVTdHJhdGVneSB9IGZyb20gXCIuL2lnbm9yZS1zdHJhdGVneVwiO1xuXG4vKipcbiAqIENvbW1vbiBpbnRlcmZhY2UgZm9yIGFsbCBhc3NldHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0IHtcbiAgLyoqXG4gICAqIEEgaGFzaCBvZiB0aGlzIGFzc2V0LCBhdmFpbGFibGUgYXQgY29uc3RydWN0aW9uIHRpbWUuXG4gICAqXG4gICAqIEJlaW5nIGEgcGxhaW4gc3RyaW5nLCBpdCBjYW4gYmUgdXNlZCBpbiBjb25zdHJ1Y3QgSURzIHRvIGZvcmNlIGEgbmV3XG4gICAqIHJlc291cmNlIHdoZW4gdGhlIGNvbnRlbnQgaGFzaCBjaGFuZ2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRIYXNoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBjb250cm9sbGluZyBob3cgYW4gYXNzZXQncyBoYXNoIGlzIGRlcml2ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZXRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNwZWNpZnkgYSBjdXN0b20gaGFzaCBmb3IgdGhpcyBhc3NldC4gSWYgYGFzc2V0SGFzaFR5cGVgIGlzIHNldCBpdCBtdXN0XG4gICAqIGJlIHNldCB0byBgQXNzZXRIYXNoVHlwZS5DVVNUT01gLiBUaGUgdmFsdWUgaXMgdXNlZCB2ZXJiYXRpbSBhcyB0aGUgYXNzZXRcbiAgICogaGFzaCwgYW5kIGJlY2F1c2UgaXQgbmFtZXMgdGhlIHN0YWdlZCBhc3NldCBmaWxlIGl0IG1heSBvbmx5IGNvbnRhaW5cbiAgICogbGV0dGVycywgZGlnaXRzLCBgX2AsIGAuYCBhbmQgYC1gLlxuICAgKlxuICAgKiBUaGUgaGFzaCBpZGVudGlmaWVzIGEgc3BlY2lmaWMgcmV2aXNpb24gb2YgdGhlIGFzc2V0IGFuZCBjYWNoZXMgZGVwbG95bWVudFxuICAgKiB3b3JrIChwYWNrYWdpbmcsIHVwbG9hZGluZykuIEEgY3VzdG9tIGhhc2ggbXVzdCBiZSB1cGRhdGVkIHdoZW5ldmVyIHRoZVxuICAgKiBhc3NldCBjaGFuZ2VzLCBvciBzb21lIGRlcGxveW1lbnRzIHdpbGwgbm90IGJlIGludmFsaWRhdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGJhc2VkIG9uIGBhc3NldEhhc2hUeXBlYFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRIYXNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHR5cGUgb2YgaGFzaCB0byBjYWxjdWxhdGUgZm9yIHRoaXMgYXNzZXQuXG4gICAqXG4gICAqIElmIGBhc3NldEhhc2hgIGlzIGNvbmZpZ3VyZWQsIHRoaXMgb3B0aW9uIG11c3QgYmUgYHVuZGVmaW5lZGAgb3JcbiAgICogYEFzc2V0SGFzaFR5cGUuQ1VTVE9NYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgZGVmYXVsdCBpcyBgQXNzZXRIYXNoVHlwZS5TT1VSQ0VgLCBidXQgaWYgYGFzc2V0SGFzaGAgaXNcbiAgICogZXhwbGljaXRseSBzcGVjaWZpZWQgdGhpcyB2YWx1ZSBkZWZhdWx0cyB0byBgQXNzZXRIYXNoVHlwZS5DVVNUT01gLlxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRIYXNoVHlwZT86IEFzc2V0SGFzaFR5cGU7XG59XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgYXNzZXQgaGFzaC5cbiAqXG4gKiBUaGUgaGFzaCBpZGVudGlmaWVzIGEgc3BlY2lmaWMgcmV2aXNpb24gb2YgdGhlIGFzc2V0IGFuZCBjYWNoZXMgZGVwbG95bWVudFxuICogd29yayBzdWNoIGFzIHBhY2thZ2luZyBhbmQgdXBsb2FkaW5nLlxuICovXG5leHBvcnQgZW51bSBBc3NldEhhc2hUeXBlIHtcbiAgLyoqXG4gICAqIEJhc2VkIG9uIHRoZSBjb250ZW50IG9mIHRoZSBzb3VyY2UgcGF0aC5cbiAgICpcbiAgICogVXNlIGBTT1VSQ0VgIHRvIHRyYWNrIGNoYW5nZXMgdG8gdGhlIHNvdXJjZSBmaWxlcyBkaXJlY3RseS5cbiAgICovXG4gIFNPVVJDRSA9IFwic291cmNlXCIsXG5cbiAgLyoqXG4gICAqIEJhc2VkIG9uIHRoZSBjb250ZW50IG9mIHRoZSBidW5kbGluZyBvdXRwdXQuXG4gICAqXG4gICAqIFVzZSBgT1VUUFVUYCB3aGVuIHRoZSBzb3VyY2UgaXMgYSB0b3AtbGV2ZWwgZm9sZGVyIGhvbGRpbmcgY29kZSBhbmQvb3JcbiAgICogZGVwZW5kZW5jaWVzIG5vdCBkaXJlY3RseSBsaW5rZWQgdG8gdGhlIGFzc2V0LlxuICAgKi9cbiAgT1VUUFVUID0gXCJvdXRwdXRcIixcblxuICAvKipcbiAgICogVXNlIGEgY3VzdG9tIGhhc2guXG4gICAqL1xuICBDVVNUT00gPSBcImN1c3RvbVwiLFxufVxuXG4vKipcbiAqIEhvdyBhIHN0YWdlZCBhc3NldCBpcyBwcm9kdWNlZCBhbmQgd2hhdCBzaGFwZSBpdCB0YWtlcyBvbiBkaXNrLlxuICpcbiAqIFBhY2thZ2luZyBhbnN3ZXJzIHR3byBpbmRlcGVuZGVudCBxdWVzdGlvbnM6IGhvdyB0aGUgYXJ0aWZhY3QgaXMgcHJvZHVjZWRcbiAqIChjb3B5LCB6aXAsIHRhci5neiwgLi4uKSBhbmQgd2hldGhlciB0aGUgcmVzdWx0IGlzIGEgZGlyZWN0b3J5IG9yIGEgc2luZ2xlXG4gKiBmaWxlLiBBIGNsb3NlZCBlbnVtIGNhbiBvbmx5IGV2ZXIgYW5zd2VyIHRoZSBzZWNvbmQgb25lLCBzbyBpdCBpcyBhblxuICogaW50ZXJmYWNlIHJhdGhlciB0aGFuIGFuIGVudW0g4oCUIGN1c3RvbSBmb3JtYXRzIChlLmcuIGB0YXIuYnoyYCkgbmVlZCBub1xuICogY29yZSBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0UGFja2FnaW5nIHtcbiAgLyoqXG4gICAqIEFwcGVuZGVkIHRvIHRoZSBzdGFnZWQgYXJ0aWZhY3QgbmFtZSwgZS5nLiBcIi56aXBcIiwgXCJcIiwgXCIudGFyLmJ6MlwiLlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZW5zaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHN0YWdlZCByZXN1bHQgaXMgYSBkaXJlY3RvcnkgcmF0aGVyIHRoYW4gYSBzaW5nbGUgZmlsZS5cbiAgICpcbiAgICogUHVibGlzaGVycyBicmFuY2ggb24gdGhpcyB0byBkZWNpZGUgd2hldGhlciB0aGV5IHVwbG9hZCBvbmUgb2JqZWN0IG9yXG4gICAqIHN5bmMgYSB0cmVlLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZHVjZXNEaXJlY3Rvcnk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYHBhY2tgIGFjY2VwdHMgYSBkaXJlY3RvcnkgYXMgaXRzIGBzb3VyY2VgLlxuICAgKlxuICAgKiBJbmRlcGVuZGVudCBvZiBgcHJvZHVjZXNEaXJlY3RvcnlgIGFuZCBgb21pdHNEaXJlY3RvcnlFbnRyaWVzYCwgYm90aCBvZlxuICAgKiB3aGljaCBkZXNjcmliZSB0aGUgb3V0cHV0OiBhIGB0YXIuZ3pgIHBhY2thZ2luZyB0YWtlcyBhIGRpcmVjdG9yeSBzb3VyY2VcbiAgICogeWV0IGVtaXRzIGEgc2luZ2xlIGZpbGUuIEJ1bmRsZXIgb3V0cHV0IGlzIGFsd2F5cyBhIGRpcmVjdG9yeSwgc28gYVxuICAgKiBwYWNrYWdpbmcgdGhhdCBpcyBgZmFsc2VgIGhlcmUgY2Fubm90IHN0YWdlIGl0LlxuICAgKi9cbiAgcmVhZG9ubHkgYWNjZXB0c0RpcmVjdG9yeVNvdXJjZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBgcGFja2AgZW1pdHMgYW4gYXJ0aWZhY3Qgd2l0aCBubyBkaXJlY3RvcnkgZW50cmllcyBvZiBpdHMgb3duIOKAlFxuICAgKiBvbmx5IHRoZSBpZ25vcmUtc3RyYXRlZ3ktYXdhcmUgc291cmNlIHdhbGsuIGBoYXNoUGF0aGAncyBgYXJjaGl2ZWAgZnJhbWVcbiAgICogbXVzdCBhZ3JlZSB3aXRoIHRoaXMgb3IgdGhlIGhhc2ggYW5kIHRoZSBhcnRpZmFjdCBkZXNjcmliZSBkaWZmZXJlbnRcbiAgICogZmlsZSBzZXRzLlxuICAgKlxuICAgKiBgWmlwUGFja2FnaW5nYCBzZXRzIHRoaXMgYmVjYXVzZSBgYXJjaGl2ZVN5bmNgIG5ldmVyIGVtaXRzIFpJUCBkaXJlY3RvcnlcbiAgICogZW50cmllcy4gQSBkaXJlY3RvcnktcHJvZHVjaW5nIHBhY2thZ2luZyB0aGF0IG1pcnJvcnMgdGhlIHNvdXJjZSB0cmVlXG4gICAqIChlLmcuIGBEaXJlY3RvcnlQYWNrYWdpbmdgKSBsZWF2ZXMgdGhpcyBmYWxzZSwgc2luY2UgaXRzIGRpcmVjdG9yaWVzIGFyZVxuICAgKiByZWFsIGVudHJpZXMgb24gZGlzay5cbiAgICovXG4gIHJlYWRvbmx5IG9taXRzRGlyZWN0b3J5RW50cmllczogYm9vbGVhbjtcblxuICAvKipcbiAgICogV3JpdGUgdGhlIHBhY2thZ2VkIHJlc3VsdCB0byBgb3B0aW9ucy50YXJnZXRgLlxuICAgKi9cbiAgcGFjayhvcHRpb25zOiBQYWNrT3B0aW9ucyk6IHZvaWQ7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIElBc3NldFBhY2thZ2luZy5wYWNrfS5cbiAqXG4gKiBBIHN0cnVjdCByYXRoZXIgdGhhbiBwb3NpdGlvbmFsIHBhcmFtZXRlcnM6IGFkZGluZyBhIHN0cnVjdCBmaWVsZCBpc1xuICogYWRkaXRpdmUsIGFkZGluZyBhIG1ldGhvZCBwYXJhbWV0ZXIgaXMgbm90LCBhbmQgYHBhY2tgIGlzIGNhbGxlZCB0aHJvdWdoXG4gKiBKU0lJIHdoZXJlIHRoYXQgZGlzdGluY3Rpb24gaXMgYSBicmVha2luZy1jaGFuZ2UgYm91bmRhcnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFja09wdGlvbnMge1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgcmVzb2x2ZWQgKGFscmVhZHkgYnVuZGxlZCwgaWYgYXBwbGljYWJsZSkgc291cmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhdGggdGhlIHBhY2thZ2VkIHJlc3VsdCBzaG91bGQgYmUgd3JpdHRlbiB0by5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbnRyaWVzIHRvIG9taXQgZnJvbSB0aGUgcGFja2FnZWQgcmVzdWx0LiBNdXN0IG1hdGNoIHRoZSBzdHJhdGVneSB1c2VkXG4gICAqIHRvIGhhc2ggdGhlIHNhbWUgc291cmNlLCBvciB0aGUgaGFzaCBhbmQgdGhlIGFydGlmYWN0IGRlc2NyaWJlXG4gICAqIGRpZmZlcmVudCBzZXRzIG9mIGZpbGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vdGhpbmcgaXMgZXhjbHVkZWRcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZVN0cmF0ZWd5PzogSUlnbm9yZVN0cmF0ZWd5O1xufVxuXG4vKipcbiAqIENvcGllcyBhIHNpbmdsZSBmaWxlIHZlcmJhdGltLlxuICovXG5jbGFzcyBGaWxlUGFja2FnaW5nIGltcGxlbWVudHMgSUFzc2V0UGFja2FnaW5nIHtcbiAgcHVibGljIHJlYWRvbmx5IGV4dGVuc2lvbiA9IFwiXCI7XG4gIHB1YmxpYyByZWFkb25seSBwcm9kdWNlc0RpcmVjdG9yeSA9IGZhbHNlO1xuICBwdWJsaWMgcmVhZG9ubHkgYWNjZXB0c0RpcmVjdG9yeVNvdXJjZSA9IGZhbHNlO1xuICBwdWJsaWMgcmVhZG9ubHkgb21pdHNEaXJlY3RvcnlFbnRyaWVzID0gZmFsc2U7XG4gIHB1YmxpYyBwYWNrKG9wdGlvbnM6IFBhY2tPcHRpb25zKTogdm9pZCB7XG4gICAgZnMuY29weUZpbGVTeW5jKG9wdGlvbnMuc291cmNlLCBvcHRpb25zLnRhcmdldCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb3BpZXMgYSBkaXJlY3RvcnkgdHJlZSB2ZXJiYXRpbSwgd2l0aG91dCBhcmNoaXZpbmcgaXQuXG4gKi9cbmNsYXNzIERpcmVjdG9yeVBhY2thZ2luZyBpbXBsZW1lbnRzIElBc3NldFBhY2thZ2luZyB7XG4gIHB1YmxpYyByZWFkb25seSBleHRlbnNpb24gPSBcIlwiO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvZHVjZXNEaXJlY3RvcnkgPSB0cnVlO1xuICBwdWJsaWMgcmVhZG9ubHkgYWNjZXB0c0RpcmVjdG9yeVNvdXJjZSA9IHRydWU7XG4gIHB1YmxpYyByZWFkb25seSBvbWl0c0RpcmVjdG9yeUVudHJpZXMgPSBmYWxzZTtcbiAgcHVibGljIHBhY2sob3B0aW9uczogUGFja09wdGlvbnMpOiB2b2lkIHtcbiAgICBjb3B5U3luYyhvcHRpb25zLnNvdXJjZSwgb3B0aW9ucy50YXJnZXQsIHtcbiAgICAgIHNob3VsZEV4Y2x1ZGU6IG9wdGlvbnMuaWdub3JlU3RyYXRlZ3lcbiAgICAgICAgPyAocmVsYXRpdmVQYXRoLCBpc0RpcmVjdG9yeSkgPT5cbiAgICAgICAgICAgIG9wdGlvbnMuaWdub3JlU3RyYXRlZ3khLmlnbm9yZXMoeyByZWxhdGl2ZVBhdGgsIGlzRGlyZWN0b3J5IH0pXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZGVzY2VuZEludG9FeGNsdWRlZERpcmVjdG9yaWVzOlxuICAgICAgICBvcHRpb25zLmlnbm9yZVN0cmF0ZWd5Py5wcnVuZUV4Y2x1ZGVkRGlyZWN0b3JpZXMgPT09IGZhbHNlLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQXJjaGl2ZXMgYSBkaXJlY3RvcnkgdHJlZSBpbnRvIGEgc2luZ2xlIHppcCBmaWxlLlxuICovXG5jbGFzcyBaaXBQYWNrYWdpbmcgaW1wbGVtZW50cyBJQXNzZXRQYWNrYWdpbmcge1xuICBwdWJsaWMgcmVhZG9ubHkgZXh0ZW5zaW9uID0gXCIuemlwXCI7XG4gIHB1YmxpYyByZWFkb25seSBwcm9kdWNlc0RpcmVjdG9yeSA9IGZhbHNlO1xuICBwdWJsaWMgcmVhZG9ubHkgYWNjZXB0c0RpcmVjdG9yeVNvdXJjZSA9IHRydWU7XG4gIHB1YmxpYyByZWFkb25seSBvbWl0c0RpcmVjdG9yeUVudHJpZXMgPSB0cnVlO1xuICBwdWJsaWMgcGFjayhvcHRpb25zOiBQYWNrT3B0aW9ucyk6IHZvaWQge1xuICAgIGFyY2hpdmVTeW5jKFxuICAgICAgb3B0aW9ucy5zb3VyY2UsXG4gICAgICBvcHRpb25zLnRhcmdldCxcbiAgICAgIG9wdGlvbnMuaWdub3JlU3RyYXRlZ3lcbiAgICAgICAgPyAocmVsYXRpdmVQYXRoLCBpc0RpcmVjdG9yeSkgPT5cbiAgICAgICAgICAgIG9wdGlvbnMuaWdub3JlU3RyYXRlZ3khLmlnbm9yZXMoeyByZWxhdGl2ZVBhdGgsIGlzRGlyZWN0b3J5IH0pXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgb3B0aW9ucy5pZ25vcmVTdHJhdGVneT8ucHJ1bmVFeGNsdWRlZERpcmVjdG9yaWVzID09PSBmYWxzZSxcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogQnVpbHQtaW4gcGFja2FnaW5nIHN0cmF0ZWdpZXMuIEN1c3RvbSBmb3JtYXRzIGltcGxlbWVudCBgSUFzc2V0UGFja2FnaW5nYFxuICogZGlyZWN0bHkgcmF0aGVyIHRoYW4gZXh0ZW5kaW5nIHRoaXMgY2xhc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBBc3NldFBhY2thZ2luZyB7XG4gIC8qKlxuICAgKiBDb3B5IGEgc2luZ2xlIGZpbGUgYXMtaXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZJTEU6IElBc3NldFBhY2thZ2luZyA9IG5ldyBGaWxlUGFja2FnaW5nKCk7XG5cbiAgLyoqXG4gICAqIENvcHkgYSBkaXJlY3RvcnkgdHJlZSBhcy1pcywgd2l0aG91dCBhcmNoaXZpbmcuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERJUkVDVE9SWTogSUFzc2V0UGFja2FnaW5nID0gbmV3IERpcmVjdG9yeVBhY2thZ2luZygpO1xuXG4gIC8qKlxuICAgKiBBcmNoaXZlIGEgZGlyZWN0b3J5IHRyZWUgaW50byBhIHNpbmdsZSB6aXAgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgWklQOiBJQXNzZXRQYWNrYWdpbmcgPSBuZXcgWmlwUGFja2FnaW5nKCk7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbi8qKlxuICogT3B0aW9ucyBoYW5kZWQgdG8gYW4ge0BsaW5rIElBc3NldEJ1bmRsZXJ9IHdoZW4gaXQgcnVucy5cbiAqXG4gKiBBIHN0cnVjdCByYXRoZXIgdGhhbiBwb3NpdGlvbmFsIHBhcmFtZXRlcnM6IGFkZGluZyBhIGZpZWxkIGlzIGFkZGl0aXZlLFxuICogYWRkaW5nIGEgbWV0aG9kIHBhcmFtZXRlciBpcyBub3QsIGFuZCBgYnVuZGxlYCBpcyBjYWxsZWQgdGhyb3VnaCBKU0lJIHdoZXJlXG4gKiB0aGF0IGRpc3RpbmN0aW9uIGlzIGEgYnJlYWtpbmctY2hhbmdlIGJvdW5kYXJ5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsZU9wdGlvbnMge1xuICAvKipcbiAgICogQWJzb2x1dGUgcGF0aCB0byB0aGUgYXNzZXQncyBzb3VyY2UgZmlsZSBvciBkaXJlY3RvcnkuIFRoZSBidW5kbGVyIHJlYWRzXG4gICAqIGZyb20gaGVyZSBhbmQgbXVzdCBub3QgbW9kaWZ5IGl0LlxuICAgKlxuICAgKiBFeGNsdXNpb25zIChgZXhjbHVkZWAgLyBgaWdub3JlU3RyYXRlZ3lgKSBhcmUgYWxyZWFkeSBhcHBsaWVkOiB3aGVuIGFueVxuICAgKiBhcmUgY29uZmlndXJlZCB0aGlzIHBvaW50cyBhdCBhIGZpbHRlcmVkIGNvcHksIG5vdCB0aGUgb3JpZ2luYWwgdHJlZSwgc29cbiAgICogdGhlIGJ1bmRsZXIgcmVhZHMgZXhhY3RseSB0aGUgZmlsZSBzZXQgdGhlIGFzc2V0IGhhc2ggd2FzIHRha2VuIG92ZXIuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U6IHN0cmluZztcblxuICAvKipcbiAgICogQSBzY3JhdGNoIGRpcmVjdG9yeSB0aGUgYnVuZGxlciBtYXkgd3JpdGUgaW50bywgb3duZWQgYW5kIGNyZWF0ZWQgYnkgdGhlXG4gICAqIGNhbGxlci4gVGhlIGJ1bmRsZXIgcHJvZHVjZXMgaXRzIG91dHB1dCBoZXJlIChvciBpbiBhIHN1YmRpcmVjdG9yeSkgYW5kXG4gICAqIHJldHVybnMgYSB7QGxpbmsgQnVuZGxlUmVzdWx0fSBwb2ludGluZyBhdCB0aGUgZmluaXNoZWQgYXJ0aWZhY3Qg4oCUIHNlZVxuICAgKiB7QGxpbmsgSUFzc2V0QnVuZGxlci5idW5kbGV9LlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0RGlyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIHNoYXBlIG9mIGEgYnVuZGxlcidzIG91dHB1dCwgc28gc3RhZ2luZyBhbmQgcGFja2FnaW5nIGNhbiB0cmVhdCBhXG4gKiBzaW5nbGUtZmlsZSBhcnRpZmFjdCAoYSB0YXJiYWxsLCBhIGAuemlwYCkgZGlmZmVyZW50bHkgZnJvbSBhIGRpcmVjdG9yeVxuICogdHJlZSB3aXRob3V0IGluZmVycmluZyBpdCBmcm9tIHRoZSBwYXRoLlxuICovXG5leHBvcnQgZW51bSBCdW5kbGVPdXRwdXRUeXBlIHtcbiAgLyoqXG4gICAqIFRoZSBvdXRwdXQgaXMgYSBkaXJlY3RvcnkgdHJlZS5cbiAgICpcbiAgICogUGFja2FnZWQgbGlrZSBhbiB1bmJ1bmRsZWQgc291cmNlIGRpcmVjdG9yeS4gVGhlIGRlZmF1bHQsIGFuZCB0aGUgb25seVxuICAgKiBzaGFwZSB0aGF0IHByZWRhdGVzIGFyY2hpdmUgc3VwcG9ydC5cbiAgICovXG4gIERJUkVDVE9SWSA9IFwiZGlyZWN0b3J5XCIsXG5cbiAgLyoqXG4gICAqIFRoZSBvdXRwdXQgaXMgYSBzaW5nbGUgZmlsZSB0aGUgYnVuZGxlciBhbHJlYWR5IHByb2R1Y2VkIGluIGl0cyBmaW5hbFxuICAgKiBmb3JtLlxuICAgKlxuICAgKiBBIHRhcmJhbGwgb3IgYSBkZXRlcm1pbmlzdGljIGAuemlwYC4gU3RhZ2VkIHZlcmJhdGltIHJhdGhlciB0aGFuXG4gICAqIHJlLWFyY2hpdmVkLCBzbyBgQXNzZXRUeXBlLkZJTEVgIG5vIGxvbmdlciBoYXMgdG8gcmVqZWN0IGEgYnVuZGxlci5cbiAgICovXG4gIEZJTEUgPSBcImZpbGVcIixcbn1cblxuLyoqXG4gKiBXaGF0IGEgYnVuZGxlciBwcm9kdWNlZCwgcmV0dXJuZWQgZnJvbSB7QGxpbmsgSUFzc2V0QnVuZGxlci5idW5kbGV9LlxuICpcbiAqIENhcnJpZXMgdGhlIGFydGlmYWN0IHBhdGggYW5kIGl0cyBzaGFwZSwgb3IgYSBkZWNsaW5lZCBzdGF0ZSBzaWduYWxsaW5nIHRoZVxuICogY2FsbGVyIHNob3VsZCBmYWxsIGJhY2suIFNlZSB7QGxpbmsgZGVjbGluZWR9IGZvciB0aGUgZGVjbGluZSBwcm90b2NvbC5cbiAqL1xuZXhwb3J0IGNsYXNzIEJ1bmRsZVJlc3VsdCB7XG4gIC8qKlxuICAgKiBBIGRpcmVjdG9yeS10cmVlIGFydGlmYWN0IGF0IGBwYXRoYC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGlyZWN0b3J5KHBhdGg6IHN0cmluZyk6IEJ1bmRsZVJlc3VsdCB7XG4gICAgcmV0dXJuIG5ldyBCdW5kbGVSZXN1bHQoQnVuZGxlT3V0cHV0VHlwZS5ESVJFQ1RPUlksIHBhdGgsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNpbmdsZS1maWxlIGFydGlmYWN0IGF0IGBwYXRoYCAoYSB0YXJiYWxsLCBhIGAuemlwYCksIHN0YWdlZCB2ZXJiYXRpbS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZmlsZShwYXRoOiBzdHJpbmcpOiBCdW5kbGVSZXN1bHQge1xuICAgIHJldHVybiBuZXcgQnVuZGxlUmVzdWx0KEJ1bmRsZU91dHB1dFR5cGUuRklMRSwgcGF0aCwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBidW5kbGVyIGRlY2xpbmVkIHRvIHJ1biBoZXJlOyB0aGUgY2FsbGVyIHNob3VsZCBmYWxsIGJhY2suXG4gICAqXG4gICAqIERpc3RpbmN0IGZyb20gYSB0aHJvd24gZXJyb3IsIHdoaWNoIGlzIGEgaGFyZCBmYWlsdXJlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWNsaW5lZCgpOiBCdW5kbGVSZXN1bHQge1xuICAgIHJldHVybiBuZXcgQnVuZGxlUmVzdWx0KHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYXJ0aWZhY3QncyBzaGFwZSwgb3IgdW5kZWZpbmVkIHdoZW4ge0BsaW5rIGlzRGVjbGluZWR9LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG91dHB1dFR5cGU/OiBCdW5kbGVPdXRwdXRUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgYXJ0aWZhY3QgcGF0aCwgb3IgdW5kZWZpbmVkIHdoZW4ge0BsaW5rIGlzRGVjbGluZWR9LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGJ1bmRsZXIgZGVjbGluZWQgdG8gcnVuLCBzaWduYWxsaW5nIHRoZSBjYWxsZXIgdG8gZmFsbCBiYWNrLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlzRGVjbGluZWQ6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBvdXRwdXRUeXBlOiBCdW5kbGVPdXRwdXRUeXBlIHwgdW5kZWZpbmVkLFxuICAgIHBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBpc0RlY2xpbmVkOiBib29sZWFuLFxuICApIHtcbiAgICB0aGlzLm91dHB1dFR5cGUgPSBvdXRwdXRUeXBlO1xuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgdGhpcy5pc0RlY2xpbmVkID0gaXNEZWNsaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFRyYW5zZm9ybXMgYSBzb3VyY2UgdHJlZSBpbnRvIGEgYnVpbHQgYXJ0aWZhY3QuIFJ1bnMgYXQgc3ludGgsIGJlZm9yZSB0aGVcbiAqIG91dHB1dCBpcyBwYWNrYWdlZCBhbmQgc3RhZ2VkLlxuICpcbiAqIFRoaXMgaXMgdGhlIGV4dGVuc2lvbiBwb2ludCBmb3IgYXNzZXQgYnVuZGxpbmc6IGNvcmUgc2hpcHMgbm8gYnVuZGxlci5cbiAqIERvY2tlciwgZXNidWlsZCwgcGlwLCBgZ28gYnVpbGRgLCBhbmQgc2ltaWxhciBhcmUgYW4gb3Blbi1lbmRlZCwgbm9uXG4gKiBjbG91ZC1zcGVjaWZpYyBzZXQsIHNvIGVhY2ggbGl2ZXMgaW4gaXRzIG93biBwYWNrYWdlIGFuZCBpbXBsZW1lbnRzIHRoaXNcbiAqIG9uZSBpbnRlcmZhY2Ug4oCUIHRoZSBzYW1lIHdheSB7QGxpbmsgSUlnbm9yZVN0cmF0ZWd5fSBsZXRzIHJpY2hlciBleGNsdXNpb25cbiAqIGxpdmUgb3V0c2lkZSBjb3JlLiBVc2VycyBwYXNzIGFuIGluc3RhbmNlIHZpYSB0aGUgY29uc3VtaW5nIGNvbnN0cnVjdCdzXG4gKiBgYnVuZGxlcmAgb3B0aW9uLlxuICpcbiAqIGBidW5kbGVgIHJ1bnMgZHVyaW5nIHRoZSBvd25pbmcgY29uc3RydWN0J3MgYG9uU3ludGhlc2l6ZWAgaG9vayBhbmQgbWF5XG4gKiB0b3VjaCB0aGUgZmlsZXN5c3RlbS4gRGVmZXJyaW5nIGl0IHRoZXJlIGtlZXBzIGl0IHNraXBwYWJsZSB3aGVuIHRoZSBhc3NldCdzXG4gKiBzdGFjayBpcyBub3QgYmVpbmcgc3ludGhlc2l6ZWQsIHdoaWNoIGhvbGRzIGFzIGxvbmcgYXMgdGhlIGhhc2ggaXMgdGFrZW5cbiAqIG92ZXIgdGhlIHNvdXJjZSByYXRoZXIgdGhhbiB0aGUgYnVpbHQgb3V0cHV0LlxuICpcbiAqIEJ1bmRsZXJzIGNvbXBvc2UgdGhyb3VnaCB7QGxpbmsgQ2hhaW5CdW5kbGVyfSByYXRoZXIgdGhhbiBhIGhpZXJhcmNoeTogYVxuICogYnVuZGxlciBkZWNsaW5lcyAoc2VlIHtAbGluayBCdW5kbGVSZXN1bHQuZGVjbGluZWR9KSBpbnN0ZWFkIG9mIGZhaWxpbmcgd2hlblxuICogaXQgY2Fubm90IHJ1biwgYW5kIHRoZSBjaGFpbiBmYWxscyB0aHJvdWdoIHRvIHRoZSBuZXh0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElBc3NldEJ1bmRsZXIge1xuICAvKipcbiAgICogQSB2YWx1ZSBpZGVudGlmeWluZyB0aGUgYnVpbGQsIGZvbGRlZCBpbnRvIHRoZSBhc3NldCBoYXNoLlxuICAgKlxuICAgKiBUaGUgc291cmNlIHRyZWUgYWxvbmUgY2Fubm90IHNlZSB0aGUgYnVpbGQsIHNvIHN3YXBwaW5nIGEgYG5vZGU6MThgIGJhc2VcbiAgICogaW1hZ2UgZm9yIGBub2RlOjIwYCB3b3VsZCBvdGhlcndpc2UgbGVhdmUgaWRlbnRpdHkgdW5jaGFuZ2VkLiBVbmRlclxuICAgKiBgU09VUkNFYCBoYXNoaW5nIHRoaXMgaXMgdGhlIG9ubHkgY2hhbm5lbCBieSB3aGljaCB0aGUgYnVpbGQgcmVhY2hlc1xuICAgKiBpZGVudGl0eSwgc28gaXQgbXVzdCBzZXJpYWxpemUgZXZlcnkgaW5wdXQgdGhhdCBjYW4gbW92ZSB0aGUgb3V0cHV0LCBvciBhXG4gICAqIGNoYW5nZWQgYnVpbGQgc2lsZW50bHkgcmV1c2VzIGEgc3RhbGUgYXJ0aWZhY3QuIHtAbGluayBCdW5kbGVyS2V5fSBidWlsZHNcbiAgICogb25lIGZyb20gYW4gb3JkZXJlZCBzZXQgb2YgcGFydHMuXG4gICAqXG4gICAqIE1pcnJvcnMge0BsaW5rIElJZ25vcmVTdHJhdGVneS5jYWNoZUtleX06IG9taXQgaXQgd2hlbiB0aGUgYnVpbGQgY2Fubm90IGJlXG4gICAqIHN1bW1hcml6ZWQgYXMgYSBzdHJpbmcsIGFuZCBmYWxsIGJhY2sgdG8gYGV4dHJhSGFzaGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGJ1aWxkIGRvZXMgbm90IGNvbnRyaWJ1dGUgdG8gdGhlIGhhc2hcbiAgICovXG4gIHJlYWRvbmx5IGJ1bmRsZXJLZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIGEgc2luZ2xlLWZpbGUgYXJ0aWZhY3QgaXMgc3RhZ2VkIHVuZGVyIChlLmcuIGBhcmNoaXZlLnppcGApLlxuICAgKlxuICAgKiBBIGZpbGUtcHJvZHVjaW5nIGJ1bmRsZXIgKGBCdW5kbGVSZXN1bHQuZmlsZWApIHN0YWdlZCB3aXRoXG4gICAqIGBBc3NldFR5cGUuRklMRWAgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNvdXJjZSBwYXRoJ3MgYmFzZW5hbWUsIHdoaWNoIGlzXG4gICAqIGEgZGlyZWN0b3J5IG5hbWUgd2hlbiB0aGUgc291cmNlIGlzIGEgZGlyZWN0b3J5LiBEZWNsYXJpbmcgdGhlIG5hbWUgaGVyZVxuICAgKiBsZXRzIHRoZSBhcnRpZmFjdCByZWZsZWN0IHdoYXQgdGhlIGJ1bmRsZXIgcHJvZHVjZXMuIEl0IGlzIHN0YXRpY1xuICAgKiBjb25maWd1cmF0aW9uLCBuZWVkZWQgYXQgY29uc3RydWN0aW9uIGJlZm9yZSBhIGRlZmVycmVkIGBTT1VSQ0VgIGJ1aWxkXG4gICAqIHJ1bnMsIG5vdCB0aGUgZmlsZSdzIHJ1bnRpbWUgbmFtZS5cbiAgICpcbiAgICogVmFsaWQgb25seSBmb3IgYSBmaWxlLXByb2R1Y2luZyBidW5kbGVyOiBzZXR0aW5nIGl0IHdpdGggYSBkaXJlY3RvcnlcbiAgICogcGFja2FnaW5nIChhbnl0aGluZyBidXQgYEFzc2V0VHlwZS5GSUxFYCkgaXMgcmVqZWN0ZWQgYXQgY29uc3RydWN0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBzb3VyY2UgcGF0aCdzIGJhc2VuYW1lXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRGaWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogUHJvZHVjZSB0aGUgYXJ0aWZhY3QgYW5kIHJldHVybiBhIHtAbGluayBCdW5kbGVSZXN1bHR9IGRlc2NyaWJpbmcgaXQuXG4gICAqXG4gICAqIEltcGxlbWVudGF0aW9ucyB3cml0ZSBpbnRvIGBvcHRpb25zLm91dHB1dERpcmAgYW5kIG5ldmVyIHdyaXRlIGJhY2sgdG9cbiAgICogYG9wdGlvbnMuc291cmNlYC4gVGhlIHJldHVybmVkIHBhdGggbXVzdCBleGlzdCBhbmQgbWF0Y2ggaXRzIGRlY2xhcmVkXG4gICAqIHNoYXBlLCBvciBzdGFnaW5nIHJlamVjdHMgaXQuXG4gICAqXG4gICAqIEEgYnVuZGxlciB0aGF0IGNhbm5vdCBydW4gaW4gdGhpcyBlbnZpcm9ubWVudCByZXR1cm5zXG4gICAqIGBCdW5kbGVSZXN1bHQuZGVjbGluZWQoKWAgc28gYSB7QGxpbmsgQ2hhaW5CdW5kbGVyfSBjYW4gZmFsbCB0aHJvdWdoIHRvXG4gICAqIHRoZSBuZXh0OyBhIHRocm93biBlcnJvciBpcyBhIGhhcmQgZmFpbHVyZSwgbm90IGEgZGVjbGluZS5cbiAgICovXG4gIGJ1bmRsZShvcHRpb25zOiBCdW5kbGVPcHRpb25zKTogQnVuZGxlUmVzdWx0O1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhbiB7QGxpbmsgSUFzc2V0QnVuZGxlci5idW5kbGVyS2V5fSBmcm9tIGFuIG9yZGVyZWQgc2V0IG9mIHBhcnRzLlxuICpcbiAqIEEgYGJ1bmRsZXJLZXlgIGhhcyB0byBzZXJpYWxpemUgZXZlcnl0aGluZyB0aGF0IGNhbiBtb3ZlIGEgYnVpbGQncyBvdXRwdXQ7XG4gKiBkb25lIGFkIGhvYywgZXZlcnkgYnVuZGxlciBpbnZlbnRzIGl0cyBvd24gZGVsaW1pdGVyIGFuZCBmb3JnZXRzIGFuIGlucHV0XG4gKiBkaWZmZXJlbnRseS4gVGhpcyBnaXZlcyB0aGUgY29udmVudGlvbiBvbmUgaW1wbGVtZW50YXRpb246IHBhcnRzIGFyZSBqb2luZWRcbiAqIHdpdGggYSBzZXBhcmF0b3IgdGhhdCBpcyBlc2NhcGVkIGluc2lkZSB2YWx1ZXMsIHNvIGRpc3RpbmN0IGlucHV0cyBjYW5ub3RcbiAqIGNvbGxpZGUgaW50byB0aGUgc2FtZSBrZXkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGtleSA9IEJ1bmRsZXJLZXkub2YoXCJkb2NrZXJcIiwgaW1hZ2UsIGNvbW1hbmQpXG4gKiAgIC53aXRoRW52KHsgTk9ERV9FTlY6IG5vZGVFbnYgfSlcbiAqICAgLnRvU3RyaW5nKCk7XG4gKi9cbmV4cG9ydCBjbGFzcyBCdW5kbGVyS2V5IHtcbiAgLyoqXG4gICAqIFN0YXJ0IGEga2V5IGZyb20gYW4gb3JkZXJlZCBsaXN0IG9mIHBhcnRzLlxuICAgKlxuICAgKiBPcmRlciBpcyBzaWduaWZpY2FudDogaXQgaXMgcGFydCBvZiB3aGF0IHRoZSBrZXkgaWRlbnRpZmllcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb2YoLi4ucGFydHM6IHN0cmluZ1tdKTogQnVuZGxlcktleSB7XG4gICAgcmV0dXJuIG5ldyBCdW5kbGVyS2V5KHBhcnRzKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGVzY2FwZShwYXJ0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBwYXJ0LnJlcGxhY2UoL1xcXFwvZywgXCJcXFxcXFxcXFwiKS5yZXBsYWNlKC86L2csIFwiXFxcXDpcIik7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcGFydHM6IHN0cmluZ1tdKSB7fVxuXG4gIC8qKlxuICAgKiBBcHBlbmQgcGFydHMsIHJldHVybmluZyBhIG5ldyBrZXkuXG4gICAqL1xuICBwdWJsaWMgYWRkKC4uLnBhcnRzOiBzdHJpbmdbXSk6IEJ1bmRsZXJLZXkge1xuICAgIHJldHVybiBuZXcgQnVuZGxlcktleShbLi4udGhpcy5wYXJ0cywgLi4ucGFydHNdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmQgYGtleT12YWx1ZWAgcGFydHMgZm9yIGEgcmVjb3JkLCBzb3J0ZWQgYnkga2V5IHNvIHRoZSByZXN1bHQgZG9lc1xuICAgKiBub3QgZGVwZW5kIG9uIHByb3BlcnR5IG9yZGVyLlxuICAgKi9cbiAgcHVibGljIHdpdGhFbnYoZW50cmllczogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IEJ1bmRsZXJLZXkge1xuICAgIGNvbnN0IGtlcHQgPSBPYmplY3Qua2V5cyhlbnRyaWVzKVxuICAgICAgLnNvcnQoKVxuICAgICAgLm1hcCgoaykgPT4gYCR7a309JHtlbnRyaWVzW2tdfWApO1xuICAgIHJldHVybiBuZXcgQnVuZGxlcktleShbLi4udGhpcy5wYXJ0cywgLi4ua2VwdF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciB0aGUgY29sbGVjdGVkIHBhcnRzIHRvIHRoZSBzdHJpbmcgcGFzc2VkIGFzIGBidW5kbGVyS2V5YC5cbiAgICovXG4gIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBhcnRzLm1hcChCdW5kbGVyS2V5LmVzY2FwZSkuam9pbihcIjpcIik7XG4gIH1cbn1cblxuLyoqXG4gKiBDb21wb3NlcyBidW5kbGVycyBpbnRvIGEgXCJ0cnkgZWFjaCBpbiBvcmRlciB1bnRpbCBvbmUgcnVuc1wiIGNoYWluLlxuICpcbiAqIFRoaXMgaXMgaG93IGEgbG9jYWwgYnVuZGxlciBhbmQgYSBEb2NrZXIgYnVuZGxlciBjb21wb3NlIHdpdGhvdXQgYmVpbmdcbiAqIHJld3JpdHRlbiBhcyBvbmU6IGVhY2ggbGVnIGRlY2xpbmVzIChgQnVuZGxlUmVzdWx0LmRlY2xpbmVkKClgKSB3aGVuIGl0XG4gKiBjYW5ub3QgcnVuIGhlcmUsIGFuZCB0aGUgY2hhaW4gbW92ZXMgdG8gdGhlIG5leHQuIFRoZSBmaXJzdCBub24tZGVjbGluaW5nXG4gKiByZXN1bHQgd2luczsgaWYgYWxsIGRlY2xpbmUsIGBidW5kbGVgIHRocm93cywgc2luY2Ugc3RhZ2luZyBoYXMgbm90aGluZyB0b1xuICogZmFsbCBiYWNrIHRvLiBFYWNoIGxlZyBidWlsZHMgaW50byBpdHMgb3duIG91dHB1dCBkaXJlY3RvcnksIHNvIGEgbGVnIHRoYXRcbiAqIHdyaXRlcyBiZWZvcmUgZGVjbGluaW5nIGNhbm5vdCBsZWFrIHBhcnRpYWwgZmlsZXMgaW50byB0aGUgbGVnIHRoYXQgd2lucy5cbiAqXG4gKiBUaGUgY2hhaW4ncyBgYnVuZGxlcktleWAgZm9sZHMgaW4gKmV2ZXJ5KiBsZWcncyBrZXksIHNvIGlkZW50aXR5IGlzIHRoZSBzYW1lXG4gKiByZWdhcmRsZXNzIG9mIHdoaWNoIGxlZyBlbmRzIHVwIHJ1bm5pbmcg4oCUIGEgYnVpbGQgdGhhdCBjb3VsZCBoYXZlIGdvbmUgbG9jYWxcbiAqIG9yIERvY2tlciBpcyBvbmUgYXNzZXQsIG5vdCB0d28uXG4gKlxuICogVGhpcyBtYWtlcyB0aGUgbGVncyBpbnRlcmNoYW5nZWFibGUgb25seSBpZiB0aGV5IHByb2R1Y2UgZXF1aXZhbGVudCBvdXRwdXQuXG4gKiBVbmRlciBgU09VUkNFYCBoYXNoaW5nIHRoZXkgbXVzdDogYSBtYWNoaW5lIHdpdGggYSBob3N0IHRvb2wgYW5kIG9uZSB3aXRob3V0XG4gKiBydW4gZGlmZmVyZW50IGxlZ3MsIGFuZCBub24tZXF1aXZhbGVudCBsZWdzIHdvdWxkIHN0YWdlIGRpZmZlcmVudCBieXRlcyB1bmRlclxuICogdGhlIHNhbWUgaGFzaC4gVXNlIGBPVVRQVVRgIGhhc2hpbmcgd2hlbiBsZWdzIG1heSBkaXZlcmdlLCBzbyBpZGVudGl0eSB0cmFja3NcbiAqIHRoZSBhcnRpZmFjdCBlYWNoIGxlZyBhY3R1YWxseSBwcm9kdWNlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIENoYWluQnVuZGxlciBpbXBsZW1lbnRzIElBc3NldEJ1bmRsZXIge1xuICAvKipcbiAgICogQ2hhaW4gYnVuZGxlcnMgaW4gdGhlIG9yZGVyIGdpdmVuOyBlYXJsaWVyIGJ1bmRsZXJzIGFyZSBwcmVmZXJyZWQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKC4uLmJ1bmRsZXJzOiBJQXNzZXRCdW5kbGVyW10pOiBDaGFpbkJ1bmRsZXIge1xuICAgIHJldHVybiBuZXcgQ2hhaW5CdW5kbGVyKGJ1bmRsZXJzKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBidW5kbGVyS2V5Pzogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBvdXRwdXRGaWxlTmFtZT86IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYnVuZGxlcnM6IElBc3NldEJ1bmRsZXJbXSkge1xuICAgIGlmIChidW5kbGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IGNoYWluQnVuZGxlclJlcXVpcmVzQXRMZWFzdE9uZUJ1bmRsZXIoKTtcbiAgICB9XG4gICAgLy8gRm9sZCBpbiBldmVyeSBsZWcncyBrZXkgc28gd2hpY2ggbGVnIHJ1bnMgY2Fubm90IGNoYW5nZSBpZGVudGl0eS4gQSBsZWdcbiAgICAvLyB3aXRob3V0IGEga2V5IGNvbnRyaWJ1dGVzIGFuIGVtcHR5IHBhcnQsIHN0aWxsIGRpc3Rpbmd1aXNoaW5nIFwidHdvIGxlZ3NcIlxuICAgIC8vIGZyb20gXCJvbmUgbGVnXCIgcG9zaXRpb25hbGx5LlxuICAgIGNvbnN0IGtleXMgPSBidW5kbGVycy5tYXAoKGIpID0+IGIuYnVuZGxlcktleSA/PyBcIlwiKTtcbiAgICB0aGlzLmJ1bmRsZXJLZXkgPSBrZXlzLnNvbWUoKGspID0+IGsgIT09IFwiXCIpXG4gICAgICA/IEJ1bmRsZXJLZXkub2YoXCJjaGFpblwiLCAuLi5rZXlzKS50b1N0cmluZygpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIC8vIFRoZSBzdGFnZWQgZmlsZSBuYW1lIGlzIGZpeGVkIGF0IGNvbnN0cnVjdGlvbiwgYmVmb3JlIGFueSBsZWcgcnVucywgc29cbiAgICAvLyBsZWdzIHRoYXQgZGVjbGFyZSBvbmUgbXVzdCBhZ3JlZSDigJQgb3RoZXJ3aXNlIHRoZSBuYW1lIHdvdWxkIGRlcGVuZCBvblxuICAgIC8vIHdoaWNoIGxlZyBoYXBwZW5zIHRvIHJ1bi5cbiAgICBjb25zdCBuYW1lcyA9IG5ldyBTZXQoXG4gICAgICBidW5kbGVyc1xuICAgICAgICAubWFwKChiKSA9PiBiLm91dHB1dEZpbGVOYW1lKVxuICAgICAgICAuZmlsdGVyKChuKTogbiBpcyBzdHJpbmcgPT4gbiAhPT0gdW5kZWZpbmVkKSxcbiAgICApO1xuICAgIGlmIChuYW1lcy5zaXplID4gMSkge1xuICAgICAgdGhyb3cgY2hhaW5CdW5kbGVyQ29uZmxpY3RpbmdPdXRwdXRGaWxlTmFtZShbLi4ubmFtZXNdKTtcbiAgICB9XG4gICAgdGhpcy5vdXRwdXRGaWxlTmFtZSA9IG5hbWVzLnNpemUgPT09IDEgPyBbLi4ubmFtZXNdWzBdIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIGJ1bmRsZShvcHRpb25zOiBCdW5kbGVPcHRpb25zKTogQnVuZGxlUmVzdWx0IHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYnVuZGxlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIEVhY2ggbGVnIGdldHMgaXRzIG93biBvdXRwdXQgZGlyZWN0b3J5LiBBIGxlZyBpcyBmcmVlIHRvIHdyaXRlIGJlZm9yZVxuICAgICAgLy8gaXQgZGVjbGluZXMgKGVzYnVpbGQgZmFpbGluZyBvbiBhbiB1bnN1cHBvcnRlZCB0YXJnZXQsIGEgRG9ja2VyIGxlZ1xuICAgICAgLy8gY3JlYXRpbmcgb3V0cHV0IGJlZm9yZSBmaW5kaW5nIHRoZSBkYWVtb24gZG93biksIGFuZCBzaGFyaW5nIG9uZVxuICAgICAgLy8gZGlyZWN0b3J5IHdvdWxkIGxlYWsgdGhvc2UgcGFydGlhbCBmaWxlcyBpbnRvIHRoZSBsZWcgdGhhdCBzdWNjZWVkcy5cbiAgICAgIGNvbnN0IGxlZ091dHB1dERpciA9IHBhdGguam9pbihvcHRpb25zLm91dHB1dERpciwgYGxlZy0ke2l9YCk7XG4gICAgICBmcy5ta2RpclN5bmMobGVnT3V0cHV0RGlyKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuYnVuZGxlcnNbaV0uYnVuZGxlKHtcbiAgICAgICAgc291cmNlOiBvcHRpb25zLnNvdXJjZSxcbiAgICAgICAgb3V0cHV0RGlyOiBsZWdPdXRwdXREaXIsXG4gICAgICB9KTtcbiAgICAgIGlmICghcmVzdWx0LmlzRGVjbGluZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgY2hhaW5CdW5kbGVyQWxsRGVjbGluZWQodGhpcy5idW5kbGVycy5sZW5ndGgpO1xuICB9XG59XG5cbi8qKlxuICogQSBzdGFnZWQgYXJ0aWZhY3QsIHJlYWR5IHRvIGhhbmQgdG8gYW4gYElBc3NldFB1Ymxpc2hlcmAuXG4gKlxuICogRGVsaWJlcmF0ZWx5IG5hcnJvd2VyIHRoYW4gYSBsb2NhdGlvbjogYHBhdGhgIGFuZCBgaXNEaXJlY3RvcnlgIGFyZSBrbm93blxuICogb25jZSBzdGFnaW5nIHJ1bnMsIGF0IHN5bnRoIHRpbWUsIGJlZm9yZSBhbnl0aGluZyBpcyBwdWJsaXNoZWQuIFdoZXJlIGFuXG4gKiBhc3NldCBlbmRzIHVwIOKAlCBhIGJ1Y2tldCBuYW1lLCBhbiBvYmplY3Qga2V5LCBhIFVSTCDigJQgaXMgcmVzb2x2ZWQgYXRcbiAqIGFwcGx5IHRpbWUgYW5kIGJlbG9uZ3Mgb24gdGhlIHB1Ymxpc2hlcidzIG93biByZWZlcmVuY2UgdHlwZSBpbnN0ZWFkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YWdlZEFzc2V0IHtcbiAgLyoqXG4gICAqIEEgaGFzaCBvbiB0aGUgY29udGVudCBzb3VyY2UsIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIHRoaXMgYXNzZXQuXG4gICAqXG4gICAqIFRoZSBhc3NldCBpcyBub3QgcmVidWlsdCBvciByZXB1Ymxpc2hlZCB3aGlsZSB0aGlzIHZhbHVlIGlzIHVuY2hhbmdlZC5cbiAgICovXG4gIHJlYWRvbmx5IGFzc2V0SGFzaDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB0aGUgc3RhZ2VkIGFydGlmYWN0LCByZWxhdGl2ZSB0byB0aGUgc3RhY2sgZGlyZWN0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzdGFnZWQgYXJ0aWZhY3QgaXMgYSBkaXJlY3RvcnkgcmF0aGVyIHRoYW4gYSBzaW5nbGUgZmlsZS5cbiAgICpcbiAgICogUHVibGlzaGVycyBicmFuY2ggb24gdGhpcyB0byBkZWNpZGUgd2hldGhlciB0aGV5IHVwbG9hZCBvbmUgb2JqZWN0IG9yXG4gICAqIHN5bmMgYSB0cmVlOyBzZWUgYElBc3NldFBhY2thZ2luZy5wcm9kdWNlc0RpcmVjdG9yeWAuXG4gICAqL1xuICByZWFkb25seSBpc0RpcmVjdG9yeTogYm9vbGVhbjtcbn1cbiJdfQ==
|
|
@@ -8,7 +8,7 @@ const terraform_remote_state_1 = require("../terraform-remote-state");
|
|
|
8
8
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
9
9
|
class AzurermBackend extends terraform_backend_1.TerraformBackend {
|
|
10
10
|
props;
|
|
11
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.AzurermBackend", version: "0.25.0
|
|
11
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.AzurermBackend", version: "0.25.0" };
|
|
12
12
|
constructor(scope, props) {
|
|
13
13
|
super(scope, "backend", "azurerm");
|
|
14
14
|
this.props = props;
|
|
@@ -29,7 +29,7 @@ class AzurermBackend extends terraform_backend_1.TerraformBackend {
|
|
|
29
29
|
exports.AzurermBackend = AzurermBackend;
|
|
30
30
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
31
31
|
class DataTerraformRemoteStateAzurerm extends terraform_remote_state_1.TerraformRemoteState {
|
|
32
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.DataTerraformRemoteStateAzurerm", version: "0.25.0
|
|
32
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.DataTerraformRemoteStateAzurerm", version: "0.25.0" };
|
|
33
33
|
constructor(scope, id, config) {
|
|
34
34
|
super(scope, id, "azurerm", config);
|
|
35
35
|
}
|
|
@@ -6,7 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
6
6
|
const util_1 = require("../util");
|
|
7
7
|
const remote_backend_1 = require("./remote-backend");
|
|
8
8
|
const terraform_backend_1 = require("../terraform-backend");
|
|
9
|
-
const
|
|
9
|
+
const validations_1 = require("../validations");
|
|
10
10
|
const errors_1 = require("../errors");
|
|
11
11
|
/**
|
|
12
12
|
* checks whether the given hostname belongs to tfc or (else) to tfe
|
|
@@ -28,11 +28,14 @@ function getHostNameType(hostname) {
|
|
|
28
28
|
*/
|
|
29
29
|
class CloudBackend extends terraform_backend_1.TerraformBackend {
|
|
30
30
|
props;
|
|
31
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.CloudBackend", version: "0.25.0
|
|
31
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.CloudBackend", version: "0.25.0" };
|
|
32
32
|
constructor(scope, props) {
|
|
33
33
|
super(scope, "backend", "cloud");
|
|
34
34
|
this.props = props;
|
|
35
|
-
this.node.addValidation(new
|
|
35
|
+
this.node.addValidation(new validations_1.ValidateFeatureTargetSupport(this, "The cloud block", {
|
|
36
|
+
terraform: ">=1.1.0",
|
|
37
|
+
opentofu: ">=1.6.0",
|
|
38
|
+
}));
|
|
36
39
|
}
|
|
37
40
|
toHclTerraform() {
|
|
38
41
|
return {
|
|
@@ -91,7 +94,7 @@ exports.CloudBackend = CloudBackend;
|
|
|
91
94
|
* A cloud workspace can either be a single named workspace, or a list of tagged workspaces.
|
|
92
95
|
*/
|
|
93
96
|
class CloudWorkspace {
|
|
94
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.CloudWorkspace", version: "0.25.0
|
|
97
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.CloudWorkspace", version: "0.25.0" };
|
|
95
98
|
}
|
|
96
99
|
exports.CloudWorkspace = CloudWorkspace;
|
|
97
100
|
/**
|
|
@@ -101,7 +104,7 @@ exports.CloudWorkspace = CloudWorkspace;
|
|
|
101
104
|
class NamedCloudWorkspace extends CloudWorkspace {
|
|
102
105
|
name;
|
|
103
106
|
project;
|
|
104
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.NamedCloudWorkspace", version: "0.25.0
|
|
107
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.NamedCloudWorkspace", version: "0.25.0" };
|
|
105
108
|
constructor(name, project) {
|
|
106
109
|
super();
|
|
107
110
|
this.name = name;
|
|
@@ -130,7 +133,7 @@ exports.NamedCloudWorkspace = NamedCloudWorkspace;
|
|
|
130
133
|
class TaggedCloudWorkspaces extends CloudWorkspace {
|
|
131
134
|
tags;
|
|
132
135
|
project;
|
|
133
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.TaggedCloudWorkspaces", version: "0.25.0
|
|
136
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.TaggedCloudWorkspaces", version: "0.25.0" };
|
|
134
137
|
constructor(tags, project) {
|
|
135
138
|
super();
|
|
136
139
|
this.tags = tags;
|
|
@@ -153,4 +156,4 @@ class TaggedCloudWorkspaces extends CloudWorkspace {
|
|
|
153
156
|
}
|
|
154
157
|
}
|
|
155
158
|
exports.TaggedCloudWorkspaces = TaggedCloudWorkspaces;
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtYmFja2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYWNrZW5kcy9jbG91ZC1iYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWdCQSwwQ0FHQzs7QUFoQkQsa0NBQXFEO0FBQ3JELHFEQUE0RDtBQUU1RCw0REFBd0Q7QUFDeEQsMEZBQXFGO0FBQ3JGLHNDQUFvRTtBQUVwRTs7Ozs7R0FLRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxRQUFpQjtJQUMvQyxJQUFJLENBQUMsUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMseURBQXlEO0lBQ3RGLE9BQU8sUUFBUSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNqRSxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBYSxZQUFhLFNBQVEsb0NBQWdCO0lBRzdCOztJQUZuQixZQUNFLEtBQWdCLEVBQ0MsS0FBeUI7UUFFMUMsS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFGaEIsVUFBSyxHQUFMLEtBQUssQ0FBb0I7UUFJMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQ3JCLElBQUkscURBQXdCLENBQzFCLE9BQU8sRUFDUCwrRkFBK0YsQ0FDaEcsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTztZQUNMLFNBQVMsRUFBRTtnQkFDVCxLQUFLLEVBQUUsSUFBQSxnQkFBUyxFQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDcEU7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNoQixPQUFPO1lBQ0wsU0FBUyxFQUFFO2dCQUNULEtBQUssRUFBRSxJQUFBLGdCQUFTLEVBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVB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T0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDO0lBQ0osQ0FBQzs7QUF2Qkgsc0RBd0JDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBrZXlzVG9TbmFrZUNhc2UsIGRlZXBNZXJnZSB9IGZyb20gXCIuLi91dGlsXCI7XG5pbXBvcnQgeyBEYXRhVGVycmFmb3JtUmVtb3RlU3RhdGUgfSBmcm9tIFwiLi9yZW1vdGUtYmFja2VuZFwiO1xuaW1wb3J0IHsgVGVycmFmb3JtUmVtb3RlU3RhdGUgfSBmcm9tIFwiLi4vdGVycmFmb3JtLXJlbW90ZS1zdGF0ZVwiO1xuaW1wb3J0IHsgVGVycmFmb3JtQmFja2VuZCB9IGZyb20gXCIuLi90ZXJyYWZvcm0tYmFja2VuZFwiO1xuaW1wb3J0IHsgVmFsaWRhdGVUZXJyYWZvcm1WZXJzaW9uIH0gZnJvbSBcIi4uL3ZhbGlkYXRpb25zL3ZhbGlkYXRlLXRlcnJhZm9ybS12ZXJzaW9uXCI7XG5pbXBvcnQgeyBjbG91ZEJhY2tlbmRXb3Jrc3BhY2VJc05vdERlZmluZWRCeU5hbWUgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5cbi8qKlxuICogY2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGhvc3RuYW1lIGJlbG9uZ3MgdG8gdGZjIG9yIChlbHNlKSB0byB0ZmVcbiAqIElmIG5vIGhvc3RuYW1lIGlzIGdpdmVuLCBpdCB3aWxsIHJldHVybiB0ZmMsIGFzIHRoYXQncyB0aGUgZGVmYXVsdCBpbiBiYWNrZW5kcy5cbiAqIEBwYXJhbSBob3N0bmFtZSBlLmcuIGFwcC50ZXJyYWZvcm0uaW8sIGFwcC50ZXJyYWZvcm0uaW86ODAsIHRmZS5teW9yZy5vcmdcbiAqIEByZXR1cm5zIFwidGZjXCIgb3IgXCJ0ZmVcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SG9zdE5hbWVUeXBlKGhvc3RuYW1lPzogc3RyaW5nKTogXCJ0ZmNcIiB8IFwidGZlXCIge1xuICBpZiAoIWhvc3RuYW1lKSByZXR1cm4gXCJ0ZmNcIjsgLy8gZGVmYXVsdCBpcyB0ZmMgd2hlbiBub3QgcGFzc2luZyBhIGhvc3RuYW1lIHRvIGJhY2tlbmRzXG4gIHJldHVybiBob3N0bmFtZS5zdGFydHNXaXRoKFwiYXBwLnRlcnJhZm9ybS5pb1wiKSA/IFwidGZjXCIgOiBcInRmZVwiO1xufVxuXG4vKipcbiAqIFRoZSBDbG91ZCBCYWNrZW5kIHN5bnRoZXNpemVzIGEge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLmhhc2hpY29ycC5jb20vdGVycmFmb3JtL2NsaS9jbG91ZC9zZXR0aW5ncyN0aGUtY2xvdWQtYmxvY2sgY2xvdWQgYmxvY2t9LlxuICogVGhlIGNsb3VkIGJsb2NrIGlzIGEgbmVzdGVkIGJsb2NrIHdpdGhpbiB0aGUgdG9wLWxldmVsIHRlcnJhZm9ybSBzZXR0aW5ncyBibG9jay5cbiAqIEl0IHNwZWNpZmllcyB3aGljaCBUZXJyYWZvcm0gQ2xvdWQgd29ya3NwYWNlcyB0byB1c2UgZm9yIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LlxuICogVGhlIGNsb3VkIGJsb2NrIG9ubHkgYWZmZWN0cyBUZXJyYWZvcm0gQ0xJJ3MgYmVoYXZpb3IuXG4gKiBXaGVuIFRlcnJhZm9ybSBDbG91ZCB1c2VzIGEgY29uZmlndXJhdGlvbiB0aGF0IGNvbnRhaW5zIGEgY2xvdWQgYmxvY2sgLSBmb3IgZXhhbXBsZSwgd2hlbiBhIHdvcmtzcGFjZSBpcyBjb25maWd1cmVkIHRvIHVzZSBhIFZDUyBwcm92aWRlciBkaXJlY3RseSAtIGl0IGlnbm9yZXMgdGhlIGJsb2NrIGFuZCBiZWhhdmVzIGFjY29yZGluZyB0byBpdHMgb3duIHdvcmtzcGFjZSBzZXR0aW5ncy5cbiAqL1xuZXhwb3J0IGNsYXNzIENsb3VkQmFja2VuZCBleHRlbmRzIFRlcnJhZm9ybUJhY2tlbmQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IENsb3VkQmFja2VuZENvbmZpZyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIFwiYmFja2VuZFwiLCBcImNsb3VkXCIpO1xuXG4gICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24oXG4gICAgICBuZXcgVmFsaWRhdGVUZXJyYWZvcm1WZXJzaW9uKFxuICAgICAgICBcIj49MS4xXCIsXG4gICAgICAgIGBUaGUgY2xvdWQgYmxvY2sgaXMgb25seSBzdXBwb3J0ZWQgZm9yIFRlcnJhZm9ybSA+PTEuMS4gUGxlYXNlIHVwZ3JhZGUgeW91ciBUZXJyYWZvcm0gdmVyc2lvbi5gLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHRvSGNsVGVycmFmb3JtKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRlcnJhZm9ybToge1xuICAgICAgICBjbG91ZDogZGVlcE1lcmdlKHRoaXMuc3ludGhlc2l6ZUhjbEF0dHJpYnV0ZXMoKSwgdGhpcy5yYXdPdmVycmlkZXMpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhpcyByZXNvdXJjZSB0byB0aGUgdGVycmFmb3JtIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgcHVibGljIHRvVGVycmFmb3JtKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRlcnJhZm9ybToge1xuICAgICAgICBjbG91ZDogZGVlcE1lcmdlKHRoaXMuc3ludGhlc2l6ZUF0dHJpYnV0ZXMoKSwgdGhpcy5yYXdPdmVycmlkZXMpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHRvTWV0YWRhdGEoKSB7XG4gICAgY29uc3QgY2xvdWQgPSBnZXRIb3N0TmFtZVR5cGUodGhpcy5wcm9wcy5ob3N0bmFtZSk7XG4gICAgcmV0dXJuIHsgLi4uc3VwZXIudG9NZXRhZGF0YSgpLCBjbG91ZCB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVIY2xBdHRyaWJ1dGVzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ua2V5c1RvU25ha2VDYXNlKHRoaXMucHJvcHMpLFxuICAgICAgd29ya3NwYWNlczoge1xuICAgICAgICB2YWx1ZTogdGhpcy5wcm9wcy53b3Jrc3BhY2VzLnRvSGNsVGVycmFmb3JtKCksXG4gICAgICAgIGlzQmxvY2s6IHRydWUsXG4gICAgICAgIHR5cGU6IFwibWFwXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nbWFwXCIsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUF0dHJpYnV0ZXMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiBrZXlzVG9TbmFrZUNhc2Uoe1xuICAgICAgLi4udGhpcy5wcm9wcyxcbiAgICAgIHdvcmtzcGFjZXM6IHRoaXMucHJvcHMud29ya3NwYWNlcy50b1RlcnJhZm9ybSgpLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldFJlbW90ZVN0YXRlRGF0YVNvdXJjZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBfZnJvbVN0YWNrOiBzdHJpbmcsXG4gICk6IFRlcnJhZm9ybVJlbW90ZVN0YXRlIHtcbiAgICAvLyBUaGUgY2xvdWQgXCJiYWNrZW5kXCIgZG9lcyBub3QgaGF2ZSBhIGNvcmVzcG9uZGluZyByZW1vdGUgc3RhdGUgZGF0YSBzb3VyY2Ugc2luY2UgaXQncyBtZWFudCB0byBhbHNvXG4gICAgLy8gd29yayB3aXRoIG11bHRpcGxlIHdvcmtzcGFjZXMgdGhyb3VnaCB0YWdzLlxuICAgIGlmIChcIm5hbWVcIiBpbiB0aGlzLnByb3BzLndvcmtzcGFjZXMpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0YVRlcnJhZm9ybVJlbW90ZVN0YXRlKHNjb3BlLCBuYW1lLCB7XG4gICAgICAgIG9yZ2FuaXphdGlvbjogdGhpcy5wcm9wcy5vcmdhbml6YXRpb24sXG4gICAgICAgIHdvcmtzcGFjZXM6IHsgbmFtZTogKHRoaXMucHJvcHMud29ya3NwYWNlcyBhcyBhbnkpLm5hbWUgfSxcbiAgICAgICAgdG9rZW46IHRoaXMucHJvcHMudG9rZW4sXG4gICAgICAgIGhvc3RuYW1lOiB0aGlzLnByb3BzLmhvc3RuYW1lLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhyb3cgY2xvdWRCYWNrZW5kV29ya3NwYWNlSXNOb3REZWZpbmVkQnlOYW1lKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgQ2xvdWQgQmFja2VuZCBzeW50aGVzaXplcyBhIHtAbGluayBodHRwczovL2RldmVsb3Blci5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9jbGkvY2xvdWQvc2V0dGluZ3MjdGhlLWNsb3VkLWJsb2NrIGNsb3VkIGJsb2NrfS5cbiAqIFRoZSBjbG91ZCBibG9jayBpcyBhIG5lc3RlZCBibG9jayB3aXRoaW4gdGhlIHRvcC1sZXZlbCB0ZXJyYWZvcm0gc2V0dGluZ3MgYmxvY2suXG4gKiBJdCBzcGVjaWZpZXMgd2hpY2ggVGVycmFmb3JtIENsb3VkIHdvcmtzcGFjZXMgdG8gdXNlIGZvciB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5cbiAqIFRoZSBjbG91ZCBibG9jayBvbmx5IGFmZmVjdHMgVGVycmFmb3JtIENMSSdzIGJlaGF2aW9yLlxuICogV2hlbiBUZXJyYWZvcm0gQ2xvdWQgdXNlcyBhIGNvbmZpZ3VyYXRpb24gdGhhdCBjb250YWlucyBhIGNsb3VkIGJsb2NrIC0gZm9yIGV4YW1wbGUsIHdoZW4gYSB3b3Jrc3BhY2UgaXMgY29uZmlndXJlZCB0byB1c2UgYSBWQ1MgcHJvdmlkZXIgZGlyZWN0bHkgLSBpdCBpZ25vcmVzIHRoZSBibG9jayBhbmQgYmVoYXZlcyBhY2NvcmRpbmcgdG8gaXRzIG93biB3b3Jrc3BhY2Ugc2V0dGluZ3MuXG4gKlxuICogaHR0cHM6Ly9kZXZlbG9wZXIuaGFzaGljb3JwLmNvbS90ZXJyYWZvcm0vY2xpL2Nsb3VkL3NldHRpbmdzI2FyZ3VtZW50c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkQmFja2VuZENvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgb3JnYW5pemF0aW9uIGNvbnRhaW5pbmcgdGhlIHdvcmtzcGFjZShzKSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIHNob3VsZCB1c2UuXG4gICAqL1xuICByZWFkb25seSBvcmdhbml6YXRpb246IHN0cmluZztcblxuICAvKipcbiAgICogQSBuZXN0ZWQgYmxvY2sgdGhhdCBzcGVjaWZpZXMgd2hpY2ggcmVtb3RlIFRlcnJhZm9ybSBDbG91ZCB3b3Jrc3BhY2VzIHRvIHVzZSBmb3IgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi5cbiAgICogVGhlIHdvcmtzcGFjZXMgYmxvY2sgbXVzdCBjb250YWluIGV4YWN0bHkgb25lIG9mIHRoZSBmb2xsb3dpbmcgYXJndW1lbnRzLCBlYWNoIGRlbm90aW5nIGEgc3RyYXRlZ3kgZm9yIGhvdyB3b3Jrc3BhY2VzIHNob3VsZCBiZSBtYXBwZWQ6XG4gICAqL1xuICByZWFkb25seSB3b3Jrc3BhY2VzOiBOYW1lZENsb3VkV29ya3NwYWNlIHwgVGFnZ2VkQ2xvdWRXb3Jrc3BhY2VzO1xuXG4gIC8qKlxuICAgKiBUaGUgaG9zdG5hbWUgb2YgYSBUZXJyYWZvcm0gRW50ZXJwcmlzZSBpbnN0YWxsYXRpb24sIGlmIHVzaW5nIFRlcnJhZm9ybSBFbnRlcnByaXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBhcHAudGVycmFmb3JtLmlvXG4gICAqL1xuICByZWFkb25seSBob3N0bmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRva2VuIHVzZWQgdG8gYXV0aGVudGljYXRlIHdpdGggVGVycmFmb3JtIENsb3VkLlxuICAgKiBXZSByZWNvbW1lbmQgb21pdHRpbmcgdGhlIHRva2VuIGZyb20gdGhlIGNvbmZpZ3VyYXRpb24sIGFuZCBpbnN0ZWFkIHVzaW5nIHRlcnJhZm9ybSBsb2dpbiBvciBtYW51YWxseSBjb25maWd1cmluZyBjcmVkZW50aWFscyBpbiB0aGUgQ0xJIGNvbmZpZyBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgdG9rZW4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBjbG91ZCB3b3Jrc3BhY2UgY2FuIGVpdGhlciBiZSBhIHNpbmdsZSBuYW1lZCB3b3Jrc3BhY2UsIG9yIGEgbGlzdCBvZiB0YWdnZWQgd29ya3NwYWNlcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENsb3VkV29ya3NwYWNlIHtcbiAgcHVibGljIGFic3RyYWN0IHRvVGVycmFmb3JtKCk6IGFueTtcbn1cblxuLyoqXG4gKiBUaGUgbmFtZSBvZiBhIHNpbmdsZSBUZXJyYWZvcm0gQ2xvdWQgd29ya3NwYWNlLlxuICogWW91IHdpbGwgb25seSBiZSBhYmxlIHRvIHVzZSB0aGUgd29ya3NwYWNlIHNwZWNpZmllZCBpbiB0aGUgY29uZmlndXJhdGlvbiB3aXRoIHRoaXMgd29ya2luZyBkaXJlY3RvcnksIGFuZCBjYW5ub3QgbWFuYWdlIHdvcmtzcGFjZXMgZnJvbSB0aGUgQ0xJIChlLmcuIHRlcnJhZm9ybSB3b3Jrc3BhY2Ugc2VsZWN0IG9yIHRlcnJhZm9ybSB3b3Jrc3BhY2UgbmV3KS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5hbWVkQ2xvdWRXb3Jrc3BhY2UgZXh0ZW5kcyBDbG91ZFdvcmtzcGFjZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nLFxuICAgIHB1YmxpYyBwcm9qZWN0Pzogc3RyaW5nLFxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIHRvSGNsVGVycmFmb3JtKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHtcbiAgICAgICAgdmFsdWU6IHRoaXMubmFtZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0b1RlcnJhZm9ybSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqICBBIHNldCBvZiBUZXJyYWZvcm0gQ2xvdWQgd29ya3NwYWNlIHRhZ3MuIFlvdSB3aWxsIGJlIGFibGUgdG8gdXNlIHRoaXMgd29ya2luZyBkaXJlY3Rvcnkgd2l0aCBhbnkgd29ya3NwYWNlcyB0aGF0IGhhdmUgYWxsIG9mIHRoZSBzcGVjaWZpZWQgdGFncywgYW5kIGNhbiB1c2UgdGhlIHRlcnJhZm9ybSB3b3Jrc3BhY2UgY29tbWFuZHMgdG8gc3dpdGNoIGJldHdlZW4gdGhlbSBvciBjcmVhdGUgbmV3IHdvcmtzcGFjZXMuIE5ldyB3b3Jrc3BhY2VzIHdpbGwgYXV0b21hdGljYWxseSBoYXZlIHRoZSBzcGVjaWZpZWQgdGFncy4gVGhpcyBvcHRpb24gY29uZmxpY3RzIHdpdGggbmFtZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFRhZ2dlZENsb3VkV29ya3NwYWNlcyBleHRlbmRzIENsb3VkV29ya3NwYWNlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWdzOiBzdHJpbmdbXSxcbiAgICBwdWJsaWMgcHJvamVjdD86IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b0hjbFRlcnJhZm9ybSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICB0YWdzOiB7XG4gICAgICAgIHZhbHVlOiB0aGlzLnRhZ3MsXG4gICAgICAgIHR5cGU6IFwibGlzdFwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ0xpc3RcIixcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0b1RlcnJhZm9ybSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICB0YWdzOiB0aGlzLnRhZ3MsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtYmFja2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYWNrZW5kcy9jbG91ZC1iYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWdCQSwwQ0FHQzs7QUFoQkQsa0NBQXFEO0FBQ3JELHFEQUE0RDtBQUU1RCw0REFBd0Q7QUFDeEQsZ0RBQThEO0FBQzlELHNDQUFvRTtBQUVwRTs7Ozs7R0FLRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxRQUFpQjtJQUMvQyxJQUFJLENBQUMsUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMseURBQXlEO0lBQ3RGLE9BQU8sUUFBUSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNqRSxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBYSxZQUFhLFNBQVEsb0NBQWdCO0lBRzdCOztJQUZuQixZQUNFLEtBQWdCLEVBQ0MsS0FBeUI7UUFFMUMsS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFGaEIsVUFBSyxHQUFMLEtBQUssQ0FBb0I7UUFJMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQ3JCLElBQUksMENBQTRCLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3hELFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFFBQVEsRUFBRSxTQUFTO1NBQ3BCLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTztZQUNMLFNBQVMsRUFBRTtnQkFDVCxLQUFLLEVBQUUsSUFBQSxnQkFBUyxFQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDcEU7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNoQixPQUFPO1lBQ0wsU0FBUyxFQUFFO2dCQUNU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QUFFLFlBQVk7YUFDL0I7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDO0lBQ0osQ0FBQzs7QUF2Qkgsc0RBd0JDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBrZXlzVG9TbmFrZUNhc2UsIGRlZXBNZXJnZSB9IGZyb20gXCIuLi91dGlsXCI7XG5pbXBvcnQgeyBEYXRhVGVycmFmb3JtUmVtb3RlU3RhdGUgfSBmcm9tIFwiLi9yZW1vdGUtYmFja2VuZFwiO1xuaW1wb3J0IHsgVGVycmFmb3JtUmVtb3RlU3RhdGUgfSBmcm9tIFwiLi4vdGVycmFmb3JtLXJlbW90ZS1zdGF0ZVwiO1xuaW1wb3J0IHsgVGVycmFmb3JtQmFja2VuZCB9IGZyb20gXCIuLi90ZXJyYWZvcm0tYmFja2VuZFwiO1xuaW1wb3J0IHsgVmFsaWRhdGVGZWF0dXJlVGFyZ2V0U3VwcG9ydCB9IGZyb20gXCIuLi92YWxpZGF0aW9uc1wiO1xuaW1wb3J0IHsgY2xvdWRCYWNrZW5kV29ya3NwYWNlSXNOb3REZWZpbmVkQnlOYW1lIH0gZnJvbSBcIi4uL2Vycm9yc1wiO1xuXG4vKipcbiAqIGNoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBob3N0bmFtZSBiZWxvbmdzIHRvIHRmYyBvciAoZWxzZSkgdG8gdGZlXG4gKiBJZiBubyBob3N0bmFtZSBpcyBnaXZlbiwgaXQgd2lsbCByZXR1cm4gdGZjLCBhcyB0aGF0J3MgdGhlIGRlZmF1bHQgaW4gYmFja2VuZHMuXG4gKiBAcGFyYW0gaG9zdG5hbWUgZS5nLiBhcHAudGVycmFmb3JtLmlvLCBhcHAudGVycmFmb3JtLmlvOjgwLCB0ZmUubXlvcmcub3JnXG4gKiBAcmV0dXJucyBcInRmY1wiIG9yIFwidGZlXCJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEhvc3ROYW1lVHlwZShob3N0bmFtZT86IHN0cmluZyk6IFwidGZjXCIgfCBcInRmZVwiIHtcbiAgaWYgKCFob3N0bmFtZSkgcmV0dXJuIFwidGZjXCI7IC8vIGRlZmF1bHQgaXMgdGZjIHdoZW4gbm90IHBhc3NpbmcgYSBob3N0bmFtZSB0byBiYWNrZW5kc1xuICByZXR1cm4gaG9zdG5hbWUuc3RhcnRzV2l0aChcImFwcC50ZXJyYWZvcm0uaW9cIikgPyBcInRmY1wiIDogXCJ0ZmVcIjtcbn1cblxuLyoqXG4gKiBUaGUgQ2xvdWQgQmFja2VuZCBzeW50aGVzaXplcyBhIHtAbGluayBodHRwczovL2RldmVsb3Blci5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9jbGkvY2xvdWQvc2V0dGluZ3MjdGhlLWNsb3VkLWJsb2NrIGNsb3VkIGJsb2NrfS5cbiAqIFRoZSBjbG91ZCBibG9jayBpcyBhIG5lc3RlZCBibG9jayB3aXRoaW4gdGhlIHRvcC1sZXZlbCB0ZXJyYWZvcm0gc2V0dGluZ3MgYmxvY2suXG4gKiBJdCBzcGVjaWZpZXMgd2hpY2ggVGVycmFmb3JtIENsb3VkIHdvcmtzcGFjZXMgdG8gdXNlIGZvciB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5cbiAqIFRoZSBjbG91ZCBibG9jayBvbmx5IGFmZmVjdHMgVGVycmFmb3JtIENMSSdzIGJlaGF2aW9yLlxuICogV2hlbiBUZXJyYWZvcm0gQ2xvdWQgdXNlcyBhIGNvbmZpZ3VyYXRpb24gdGhhdCBjb250YWlucyBhIGNsb3VkIGJsb2NrIC0gZm9yIGV4YW1wbGUsIHdoZW4gYSB3b3Jrc3BhY2UgaXMgY29uZmlndXJlZCB0byB1c2UgYSBWQ1MgcHJvdmlkZXIgZGlyZWN0bHkgLSBpdCBpZ25vcmVzIHRoZSBibG9jayBhbmQgYmVoYXZlcyBhY2NvcmRpbmcgdG8gaXRzIG93biB3b3Jrc3BhY2Ugc2V0dGluZ3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBDbG91ZEJhY2tlbmQgZXh0ZW5kcyBUZXJyYWZvcm1CYWNrZW5kIHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBDbG91ZEJhY2tlbmRDb25maWcsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBcImJhY2tlbmRcIiwgXCJjbG91ZFwiKTtcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKFxuICAgICAgbmV3IFZhbGlkYXRlRmVhdHVyZVRhcmdldFN1cHBvcnQodGhpcywgXCJUaGUgY2xvdWQgYmxvY2tcIiwge1xuICAgICAgICB0ZXJyYWZvcm06IFwiPj0xLjEuMFwiLFxuICAgICAgICBvcGVudG9mdTogXCI+PTEuNi4wXCIsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHRvSGNsVGVycmFmb3JtKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRlcnJhZm9ybToge1xuICAgICAgICBjbG91ZDogZGVlcE1lcmdlKHRoaXMuc3ludGhlc2l6ZUhjbEF0dHJpYnV0ZXMoKSwgdGhpcy5yYXdPdmVycmlkZXMpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhpcyByZXNvdXJjZSB0byB0aGUgdGVycmFmb3JtIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgcHVibGljIHRvVGVycmFmb3JtKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRlcnJhZm9ybToge1xuICAgICAgICBjbG91ZDogZGVlcE1lcmdlKHRoaXMuc3ludGhlc2l6ZUF0dHJpYnV0ZXMoKSwgdGhpcy5yYXdPdmVycmlkZXMpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHRvTWV0YWRhdGEoKSB7XG4gICAgY29uc3QgY2xvdWQgPSBnZXRIb3N0TmFtZVR5cGUodGhpcy5wcm9wcy5ob3N0bmFtZSk7XG4gICAgcmV0dXJuIHsgLi4uc3VwZXIudG9NZXRhZGF0YSgpLCBjbG91ZCB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVIY2xBdHRyaWJ1dGVzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ua2V5c1RvU25ha2VDYXNlKHRoaXMucHJvcHMpLFxuICAgICAgd29ya3NwYWNlczoge1xuICAgICAgICB2YWx1ZTogdGhpcy5wcm9wcy53b3Jrc3BhY2VzLnRvSGNsVGVycmFmb3JtKCksXG4gICAgICAgIGlzQmxvY2s6IHRydWUsXG4gICAgICAgIHR5cGU6IFwibWFwXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nbWFwXCIsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUF0dHJpYnV0ZXMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiBrZXlzVG9TbmFrZUNhc2Uoe1xuICAgICAgLi4udGhpcy5wcm9wcyxcbiAgICAgIHdvcmtzcGFjZXM6IHRoaXMucHJvcHMud29ya3NwYWNlcy50b1RlcnJhZm9ybSgpLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldFJlbW90ZVN0YXRlRGF0YVNvdXJjZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBfZnJvbVN0YWNrOiBzdHJpbmcsXG4gICk6IFRlcnJhZm9ybVJlbW90ZVN0YXRlIHtcbiAgICAvLyBUaGUgY2xvdWQgXCJiYWNrZW5kXCIgZG9lcyBub3QgaGF2ZSBhIGNvcmVzcG9uZGluZyByZW1vdGUgc3RhdGUgZGF0YSBzb3VyY2Ugc2luY2UgaXQncyBtZWFudCB0byBhbHNvXG4gICAgLy8gd29yayB3aXRoIG11bHRpcGxlIHdvcmtzcGFjZXMgdGhyb3VnaCB0YWdzLlxuICAgIGlmIChcIm5hbWVcIiBpbiB0aGlzLnByb3BzLndvcmtzcGFjZXMpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0YVRlcnJhZm9ybVJlbW90ZVN0YXRlKHNjb3BlLCBuYW1lLCB7XG4gICAgICAgIG9yZ2FuaXphdGlvbjogdGhpcy5wcm9wcy5vcmdhbml6YXRpb24sXG4gICAgICAgIHdvcmtzcGFjZXM6IHsgbmFtZTogKHRoaXMucHJvcHMud29ya3NwYWNlcyBhcyBhbnkpLm5hbWUgfSxcbiAgICAgICAgdG9rZW46IHRoaXMucHJvcHMudG9rZW4sXG4gICAgICAgIGhvc3RuYW1lOiB0aGlzLnByb3BzLmhvc3RuYW1lLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhyb3cgY2xvdWRCYWNrZW5kV29ya3NwYWNlSXNOb3REZWZpbmVkQnlOYW1lKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgQ2xvdWQgQmFja2VuZCBzeW50aGVzaXplcyBhIHtAbGluayBodHRwczovL2RldmVsb3Blci5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9jbGkvY2xvdWQvc2V0dGluZ3MjdGhlLWNsb3VkLWJsb2NrIGNsb3VkIGJsb2NrfS5cbiAqIFRoZSBjbG91ZCBibG9jayBpcyBhIG5lc3RlZCBibG9jayB3aXRoaW4gdGhlIHRvcC1sZXZlbCB0ZXJyYWZvcm0gc2V0dGluZ3MgYmxvY2suXG4gKiBJdCBzcGVjaWZpZXMgd2hpY2ggVGVycmFmb3JtIENsb3VkIHdvcmtzcGFjZXMgdG8gdXNlIGZvciB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5cbiAqIFRoZSBjbG91ZCBibG9jayBvbmx5IGFmZmVjdHMgVGVycmFmb3JtIENMSSdzIGJlaGF2aW9yLlxuICogV2hlbiBUZXJyYWZvcm0gQ2xvdWQgdXNlcyBhIGNvbmZpZ3VyYXRpb24gdGhhdCBjb250YWlucyBhIGNsb3VkIGJsb2NrIC0gZm9yIGV4YW1wbGUsIHdoZW4gYSB3b3Jrc3BhY2UgaXMgY29uZmlndXJlZCB0byB1c2UgYSBWQ1MgcHJvdmlkZXIgZGlyZWN0bHkgLSBpdCBpZ25vcmVzIHRoZSBibG9jayBhbmQgYmVoYXZlcyBhY2NvcmRpbmcgdG8gaXRzIG93biB3b3Jrc3BhY2Ugc2V0dGluZ3MuXG4gKlxuICogaHR0cHM6Ly9kZXZlbG9wZXIuaGFzaGljb3JwLmNvbS90ZXJyYWZvcm0vY2xpL2Nsb3VkL3NldHRpbmdzI2FyZ3VtZW50c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkQmFja2VuZENvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgb3JnYW5pemF0aW9uIGNvbnRhaW5pbmcgdGhlIHdvcmtzcGFjZShzKSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIHNob3VsZCB1c2UuXG4gICAqL1xuICByZWFkb25seSBvcmdhbml6YXRpb246IHN0cmluZztcblxuICAvKipcbiAgICogQSBuZXN0ZWQgYmxvY2sgdGhhdCBzcGVjaWZpZXMgd2hpY2ggcmVtb3RlIFRlcnJhZm9ybSBDbG91ZCB3b3Jrc3BhY2VzIHRvIHVzZSBmb3IgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi5cbiAgICogVGhlIHdvcmtzcGFjZXMgYmxvY2sgbXVzdCBjb250YWluIGV4YWN0bHkgb25lIG9mIHRoZSBmb2xsb3dpbmcgYXJndW1lbnRzLCBlYWNoIGRlbm90aW5nIGEgc3RyYXRlZ3kgZm9yIGhvdyB3b3Jrc3BhY2VzIHNob3VsZCBiZSBtYXBwZWQ6XG4gICAqL1xuICByZWFkb25seSB3b3Jrc3BhY2VzOiBOYW1lZENsb3VkV29ya3NwYWNlIHwgVGFnZ2VkQ2xvdWRXb3Jrc3BhY2VzO1xuXG4gIC8qKlxuICAgKiBUaGUgaG9zdG5hbWUgb2YgYSBUZXJyYWZvcm0gRW50ZXJwcmlzZSBpbnN0YWxsYXRpb24sIGlmIHVzaW5nIFRlcnJhZm9ybSBFbnRlcnByaXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBhcHAudGVycmFmb3JtLmlvXG4gICAqL1xuICByZWFkb25seSBob3N0bmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRva2VuIHVzZWQgdG8gYXV0aGVudGljYXRlIHdpdGggVGVycmFmb3JtIENsb3VkLlxuICAgKiBXZSByZWNvbW1lbmQgb21pdHRpbmcgdGhlIHRva2VuIGZyb20gdGhlIGNvbmZpZ3VyYXRpb24sIGFuZCBpbnN0ZWFkIHVzaW5nIHRlcnJhZm9ybSBsb2dpbiBvciBtYW51YWxseSBjb25maWd1cmluZyBjcmVkZW50aWFscyBpbiB0aGUgQ0xJIGNvbmZpZyBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgdG9rZW4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBjbG91ZCB3b3Jrc3BhY2UgY2FuIGVpdGhlciBiZSBhIHNpbmdsZSBuYW1lZCB3b3Jrc3BhY2UsIG9yIGEgbGlzdCBvZiB0YWdnZWQgd29ya3NwYWNlcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENsb3VkV29ya3NwYWNlIHtcbiAgcHVibGljIGFic3RyYWN0IHRvVGVycmFmb3JtKCk6IGFueTtcbn1cblxuLyoqXG4gKiBUaGUgbmFtZSBvZiBhIHNpbmdsZSBUZXJyYWZvcm0gQ2xvdWQgd29ya3NwYWNlLlxuICogWW91IHdpbGwgb25seSBiZSBhYmxlIHRvIHVzZSB0aGUgd29ya3NwYWNlIHNwZWNpZmllZCBpbiB0aGUgY29uZmlndXJhdGlvbiB3aXRoIHRoaXMgd29ya2luZyBkaXJlY3RvcnksIGFuZCBjYW5ub3QgbWFuYWdlIHdvcmtzcGFjZXMgZnJvbSB0aGUgQ0xJIChlLmcuIHRlcnJhZm9ybSB3b3Jrc3BhY2Ugc2VsZWN0IG9yIHRlcnJhZm9ybSB3b3Jrc3BhY2UgbmV3KS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5hbWVkQ2xvdWRXb3Jrc3BhY2UgZXh0ZW5kcyBDbG91ZFdvcmtzcGFjZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nLFxuICAgIHB1YmxpYyBwcm9qZWN0Pzogc3RyaW5nLFxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIHRvSGNsVGVycmFmb3JtKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHtcbiAgICAgICAgdmFsdWU6IHRoaXMubmFtZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0b1RlcnJhZm9ybSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqICBBIHNldCBvZiBUZXJyYWZvcm0gQ2xvdWQgd29ya3NwYWNlIHRhZ3MuIFlvdSB3aWxsIGJlIGFibGUgdG8gdXNlIHRoaXMgd29ya2luZyBkaXJlY3Rvcnkgd2l0aCBhbnkgd29ya3NwYWNlcyB0aGF0IGhhdmUgYWxsIG9mIHRoZSBzcGVjaWZpZWQgdGFncywgYW5kIGNhbiB1c2UgdGhlIHRlcnJhZm9ybSB3b3Jrc3BhY2UgY29tbWFuZHMgdG8gc3dpdGNoIGJldHdlZW4gdGhlbSBvciBjcmVhdGUgbmV3IHdvcmtzcGFjZXMuIE5ldyB3b3Jrc3BhY2VzIHdpbGwgYXV0b21hdGljYWxseSBoYXZlIHRoZSBzcGVjaWZpZWQgdGFncy4gVGhpcyBvcHRpb24gY29uZmxpY3RzIHdpdGggbmFtZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFRhZ2dlZENsb3VkV29ya3NwYWNlcyBleHRlbmRzIENsb3VkV29ya3NwYWNlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWdzOiBzdHJpbmdbXSxcbiAgICBwdWJsaWMgcHJvamVjdD86IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b0hjbFRlcnJhZm9ybSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICB0YWdzOiB7XG4gICAgICAgIHZhbHVlOiB0aGlzLnRhZ3MsXG4gICAgICAgIHR5cGU6IFwibGlzdFwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ0xpc3RcIixcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0b1RlcnJhZm9ybSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICB0YWdzOiB0aGlzLnRhZ3MsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -8,7 +8,7 @@ const terraform_remote_state_1 = require("../terraform-remote-state");
|
|
|
8
8
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
9
9
|
class ConsulBackend extends terraform_backend_1.TerraformBackend {
|
|
10
10
|
props;
|
|
11
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.ConsulBackend", version: "0.25.0
|
|
11
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.ConsulBackend", version: "0.25.0" };
|
|
12
12
|
constructor(scope, props) {
|
|
13
13
|
super(scope, "backend", "consul");
|
|
14
14
|
this.props = props;
|
|
@@ -29,7 +29,7 @@ class ConsulBackend extends terraform_backend_1.TerraformBackend {
|
|
|
29
29
|
exports.ConsulBackend = ConsulBackend;
|
|
30
30
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
31
31
|
class DataTerraformRemoteStateConsul extends terraform_remote_state_1.TerraformRemoteState {
|
|
32
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.DataTerraformRemoteStateConsul", version: "0.25.0
|
|
32
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.DataTerraformRemoteStateConsul", version: "0.25.0" };
|
|
33
33
|
constructor(scope, id, config) {
|
|
34
34
|
super(scope, id, "consul", config);
|
|
35
35
|
}
|
|
@@ -8,7 +8,7 @@ const terraform_remote_state_1 = require("../terraform-remote-state");
|
|
|
8
8
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
9
9
|
class CosBackend extends terraform_backend_1.TerraformBackend {
|
|
10
10
|
props;
|
|
11
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.CosBackend", version: "0.25.0
|
|
11
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.CosBackend", version: "0.25.0" };
|
|
12
12
|
constructor(scope, props) {
|
|
13
13
|
super(scope, "backend", "cos");
|
|
14
14
|
this.props = props;
|
|
@@ -29,7 +29,7 @@ class CosBackend extends terraform_backend_1.TerraformBackend {
|
|
|
29
29
|
exports.CosBackend = CosBackend;
|
|
30
30
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
31
31
|
class DataTerraformRemoteStateCos extends terraform_remote_state_1.TerraformRemoteState {
|
|
32
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.DataTerraformRemoteStateCos", version: "0.25.0
|
|
32
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.DataTerraformRemoteStateCos", version: "0.25.0" };
|
|
33
33
|
constructor(scope, id, config) {
|
|
34
34
|
super(scope, id, "cos", config);
|
|
35
35
|
}
|
|
@@ -8,7 +8,7 @@ const terraform_remote_state_1 = require("../terraform-remote-state");
|
|
|
8
8
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
9
9
|
class GcsBackend extends terraform_backend_1.TerraformBackend {
|
|
10
10
|
props;
|
|
11
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.GcsBackend", version: "0.25.0
|
|
11
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.GcsBackend", version: "0.25.0" };
|
|
12
12
|
constructor(scope, props) {
|
|
13
13
|
super(scope, "backend", "gcs");
|
|
14
14
|
this.props = props;
|
|
@@ -29,7 +29,7 @@ class GcsBackend extends terraform_backend_1.TerraformBackend {
|
|
|
29
29
|
exports.GcsBackend = GcsBackend;
|
|
30
30
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
31
31
|
class DataTerraformRemoteStateGcs extends terraform_remote_state_1.TerraformRemoteState {
|
|
32
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.DataTerraformRemoteStateGcs", version: "0.25.0
|
|
32
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.DataTerraformRemoteStateGcs", version: "0.25.0" };
|
|
33
33
|
constructor(scope, id, config) {
|
|
34
34
|
super(scope, id, "gcs", config);
|
|
35
35
|
}
|
|
@@ -8,7 +8,7 @@ const terraform_remote_state_1 = require("../terraform-remote-state");
|
|
|
8
8
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
9
9
|
class HttpBackend extends terraform_backend_1.TerraformBackend {
|
|
10
10
|
props;
|
|
11
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.HttpBackend", version: "0.25.0
|
|
11
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.HttpBackend", version: "0.25.0" };
|
|
12
12
|
constructor(scope, props) {
|
|
13
13
|
super(scope, "backend", "http");
|
|
14
14
|
this.props = props;
|
|
@@ -26,7 +26,7 @@ class HttpBackend extends terraform_backend_1.TerraformBackend {
|
|
|
26
26
|
exports.HttpBackend = HttpBackend;
|
|
27
27
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
28
28
|
class DataTerraformRemoteStateHttp extends terraform_remote_state_1.TerraformRemoteState {
|
|
29
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.DataTerraformRemoteStateHttp", version: "0.25.0
|
|
29
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.DataTerraformRemoteStateHttp", version: "0.25.0" };
|
|
30
30
|
constructor(scope, id, config) {
|
|
31
31
|
super(scope, id, "http", config);
|
|
32
32
|
}
|
|
@@ -44,7 +44,7 @@ const terraform_remote_state_1 = require("../terraform-remote-state");
|
|
|
44
44
|
const __1 = require("..");
|
|
45
45
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
46
46
|
class LocalBackend extends terraform_backend_1.TerraformBackend {
|
|
47
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.LocalBackend", version: "0.25.0
|
|
47
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.LocalBackend", version: "0.25.0" };
|
|
48
48
|
props;
|
|
49
49
|
constructor(scope, props = {}) {
|
|
50
50
|
super(scope, "backend", "local");
|
|
@@ -72,7 +72,7 @@ class LocalBackend extends terraform_backend_1.TerraformBackend {
|
|
|
72
72
|
exports.LocalBackend = LocalBackend;
|
|
73
73
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
74
74
|
class DataTerraformRemoteStateLocal extends terraform_remote_state_1.TerraformRemoteState {
|
|
75
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.DataTerraformRemoteStateLocal", version: "0.25.0
|
|
75
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.DataTerraformRemoteStateLocal", version: "0.25.0" };
|
|
76
76
|
constructor(scope, id, config) {
|
|
77
77
|
super(scope, id, "local", config);
|
|
78
78
|
}
|
|
@@ -8,7 +8,7 @@ const terraform_remote_state_1 = require("../terraform-remote-state");
|
|
|
8
8
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
9
9
|
class OssBackend extends terraform_backend_1.TerraformBackend {
|
|
10
10
|
props;
|
|
11
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.OssBackend", version: "0.25.0
|
|
11
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.OssBackend", version: "0.25.0" };
|
|
12
12
|
constructor(scope, props) {
|
|
13
13
|
super(scope, "backend", "oss");
|
|
14
14
|
this.props = props;
|
|
@@ -26,7 +26,7 @@ class OssBackend extends terraform_backend_1.TerraformBackend {
|
|
|
26
26
|
exports.OssBackend = OssBackend;
|
|
27
27
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
28
28
|
class DataTerraformRemoteStateOss extends terraform_remote_state_1.TerraformRemoteState {
|
|
29
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.DataTerraformRemoteStateOss", version: "0.25.0
|
|
29
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.DataTerraformRemoteStateOss", version: "0.25.0" };
|
|
30
30
|
constructor(scope, id, config) {
|
|
31
31
|
super(scope, id, "oss", config);
|
|
32
32
|
}
|