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.
Files changed (79) hide show
  1. package/.jsii +2191 -422
  2. package/README.md +12 -0
  3. package/lib/annotations.js +1 -1
  4. package/lib/app.js +1 -1
  5. package/lib/aspect.js +1 -1
  6. package/lib/asset-hash.d.ts +75 -0
  7. package/lib/asset-hash.js +129 -0
  8. package/lib/asset-staging.d.ts +180 -0
  9. package/lib/asset-staging.js +464 -0
  10. package/lib/assets.d.ts +401 -0
  11. package/lib/assets.js +333 -0
  12. package/lib/backends/azurerm-backend.js +2 -2
  13. package/lib/backends/cloud-backend.js +10 -7
  14. package/lib/backends/consul-backend.js +2 -2
  15. package/lib/backends/cos-backend.js +2 -2
  16. package/lib/backends/gcs-backend.js +2 -2
  17. package/lib/backends/http-backend.js +2 -2
  18. package/lib/backends/local-backend.js +2 -2
  19. package/lib/backends/oss-backend.js +2 -2
  20. package/lib/backends/pg-backend.js +2 -2
  21. package/lib/backends/remote-backend.js +4 -4
  22. package/lib/backends/s3-backend.js +2 -2
  23. package/lib/backends/swift-backend.js +2 -2
  24. package/lib/complex-computed-list.js +26 -26
  25. package/lib/errors.d.ts +16 -0
  26. package/lib/errors.js +51 -3
  27. package/lib/functions/provider-function.js +1 -1
  28. package/lib/functions/terraform-functions.generated.js +1 -1
  29. package/lib/ignore-strategy.d.ts +82 -0
  30. package/lib/ignore-strategy.js +29 -0
  31. package/lib/importable-resource.js +7 -4
  32. package/lib/index.d.ts +4 -0
  33. package/lib/index.js +5 -1
  34. package/lib/manifest.js +1 -1
  35. package/lib/private/fs.d.ts +74 -2
  36. package/lib/private/fs.js +93 -14
  37. package/lib/resource.js +1 -1
  38. package/lib/synthesize/synthesizer.js +9 -22
  39. package/lib/terraform-asset.d.ts +68 -5
  40. package/lib/terraform-asset.js +86 -36
  41. package/lib/terraform-backend.js +1 -1
  42. package/lib/terraform-count.js +1 -1
  43. package/lib/terraform-data-resource.d.ts +1 -1
  44. package/lib/terraform-data-resource.js +8 -5
  45. package/lib/terraform-data-source.js +1 -1
  46. package/lib/terraform-element.js +1 -1
  47. package/lib/terraform-ephemeral-resource.js +1 -1
  48. package/lib/terraform-functions.js +1 -1
  49. package/lib/terraform-hcl-module.js +1 -1
  50. package/lib/terraform-iterator.js +6 -6
  51. package/lib/terraform-local.js +1 -1
  52. package/lib/terraform-module.js +1 -1
  53. package/lib/terraform-operators.js +1 -1
  54. package/lib/terraform-output.js +1 -1
  55. package/lib/terraform-provider.js +1 -1
  56. package/lib/terraform-provisioner.js +1 -1
  57. package/lib/terraform-remote-state.js +1 -1
  58. package/lib/terraform-resource-targets.js +1 -1
  59. package/lib/terraform-resource.js +9 -4
  60. package/lib/terraform-stack.js +1 -1
  61. package/lib/terraform-variable.js +2 -2
  62. package/lib/testing/adapters/jest.d.ts +2 -1
  63. package/lib/testing/adapters/jest.js +3 -3
  64. package/lib/testing/index.js +1 -1
  65. package/lib/testing/matchers.d.ts +34 -30
  66. package/lib/testing/matchers.js +292 -89
  67. package/lib/tokens/lazy.js +2 -2
  68. package/lib/tokens/resolvable.js +2 -2
  69. package/lib/tokens/string-fragments.js +2 -2
  70. package/lib/tokens/token.js +2 -2
  71. package/lib/upgrade-id-aspect.js +1 -1
  72. package/lib/validations/index.d.ts +0 -1
  73. package/lib/validations/index.js +1 -2
  74. package/package.json +17 -3
  75. package/scripts/pack.mjs +27 -12
  76. package/lib/validations/validate-binary-version.d.ts +0 -23
  77. package/lib/validations/validate-binary-version.js +0 -91
  78. package/lib/validations/validate-terraform-version.d.ts +0 -13
  79. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Fzc2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUVuQyx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLHFDQUlrQjtBQUNsQixxQ0FBcUQ7QUE4Q3JEOzs7OztHQUtHO0FBQ0gsSUFBWSxhQW9CWDtBQXBCRCxXQUFZLGFBQWE7SUFDdkI7Ozs7T0FJRztJQUNILGtDQUFpQixDQUFBO0lBRWpCOzs7OztPQUtHO0lBQ0gsa0NBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCxrQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBcEJXLGFBQWEsNkJBQWIsYUFBYSxRQW9CeEI7QUFrRkQ7O0dBRUc7QUFDSCxNQUFNLGFBQWE7SUFDRCxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ2YsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQzFCLHNCQUFzQixHQUFHLEtBQUssQ0FBQztJQUMvQixxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFDdkMsSUFBSSxDQUFDLE9BQW9CO1FBQzlCLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLGtCQUFrQjtJQUNOLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDZixpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDekIsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO0lBQzlCLHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUN2QyxJQUFJLENBQUMsT0FBb0I7UUFDOUIsSUFBQSxhQUFRLEVBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ3ZDLGFBQWEsRUFBRSxPQUFPLENBQUMsY0FBYztnQkFDbkMsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQzVCLE9BQU8sQ0FBQyxjQUFlLENBQUMsT0FBTyxDQUFDLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDO2dCQUNsRSxDQUFDLENBQUMsU0FBUztZQUNiLDhCQUE4QixFQUM1QixPQUFPLENBQUMsY0FBYyxFQUFFLHdCQUF3QixLQUFLLEtBQUs7U0FDN0QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFlBQVk7SUFDQSxTQUFTLEdBQUcsTUFBTSxDQUFDO0lBQ25CLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUMxQixzQkFBc0IsR0FBRyxJQUFJLENBQUM7SUFDOUIscUJBQXFCLEdBQUcsSUFBSSxDQUFDO0lBQ3RDLElBQUksQ0FBQyxPQUFvQjtRQUM5QixJQUFBLGdCQUFXLEVBQ1QsT0FBTyxDQUFDLE1BQU0sRUFDZCxPQUFPLENBQUMsTUFBTSxFQUNkLE9BQU8sQ0FBQyxjQUFjO1lBQ3BCLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUM1QixPQUFPLENBQUMsY0FBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUNsRSxDQUFDLENBQUMsU0FBUyxFQUNiLE9BQU8sQ0FBQyxjQUFjLEVBQUUsd0JBQXdCLEtBQUssS0FBSyxDQUMzRCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBRUQ7OztHQUdHO0FBQ0gsTUFBYSxjQUFjOztJQUN6Qjs7T0FFRztJQUNJLE1BQU0sQ0FBVSxJQUFJLEdBQW9CLElBQUksYUFBYSxFQUFFLENBQUM7SUFFbkU7O09BRUc7SUFDSSxNQUFNLENBQVUsU0FBUyxHQUFvQixJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFFN0U7O09BRUc7SUFDSSxNQUFNLENBQVUsR0FBRyxHQUFvQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRWpFLGdCQUF1QixDQUFDOztBQWhCMUIsd0NBaUJDO0FBNkJEOzs7O0dBSUc7QUFDSCxJQUFZLGdCQWlCWDtBQWpCRCxXQUFZLGdCQUFnQjtJQUMxQjs7Ozs7T0FLRztJQUNILDJDQUF1QixDQUFBO0lBRXZCOzs7Ozs7T0FNRztJQUNILGlDQUFhLENBQUE7QUFDZixDQUFDLEVBakJXLGdCQUFnQixnQ0FBaEIsZ0JBQWdCLFFBaUIzQjtBQUVEOzs7OztHQUtHO0FBQ0gsTUFBYSxZQUFZOztJQUN2Qjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBWTtRQUNsQyxPQUFPLElBQUksWUFBWSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFZO1FBQzdCLE9BQU8sSUFBSSxZQUFZLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxRQUFRO1FBQ3BCLE9BQU8sSUFBSSxZQUFZLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7O09BRUc7SUFDYSxVQUFVLENBQW9CO0lBRTlDOztPQUVHO0lBQ2EsSUFBSSxDQUFVO0lBRTlCOztPQUVHO0lBQ2EsVUFBVSxDQUFVO0lBRXBDLFlBQ0UsVUFBd0MsRUFDeEMsSUFBd0IsRUFDeEIsVUFBbUI7UUFFbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQzs7QUEvQ0gsb0NBZ0RDO0FBdUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFhLFVBQVU7SUFjZ0I7O0lBYnJDOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBZTtRQUNqQyxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQVk7UUFDaEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxZQUFxQyxLQUFlO1FBQWYsVUFBSyxHQUFMLEtBQUssQ0FBVTtJQUFHLENBQUM7SUFFeEQ7O09BRUc7SUFDSSxHQUFHLENBQUMsR0FBRyxLQUFlO1FBQzNCLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7O09BR0c7SUFDSSxPQUFPLENBQUMsT0FBK0I7UUFDNUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDOUIsSUFBSSxFQUFFO2FBQ04sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckQsQ0FBQzs7QUF2Q0gsZ0NBd0NDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFhLFlBQVk7SUFZYzs7SUFYckM7O09BRUc7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBeUI7UUFDM0MsT0FBTyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRWUsVUFBVSxDQUFVO0lBRXBCLGNBQWMsQ0FBVTtJQUV4QyxZQUFxQyxRQUF5QjtRQUF6QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUM1RCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFBLDhDQUFxQyxHQUFFLENBQUM7UUFDaEQsQ0FBQztRQUNELDBFQUEwRTtRQUMxRSwyRUFBMkU7UUFDM0UsK0JBQStCO1FBQy9CLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUM1QyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWQseUVBQXlFO1FBQ3pFLHdFQUF3RTtRQUN4RSw0QkFBNEI7UUFDNUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQ25CLFFBQVE7YUFDTCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7YUFDNUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFlLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQy9DLENBQUM7UUFDRixJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFBLDhDQUFxQyxFQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNyRSxDQUFDO0lBRU0sTUFBTSxDQUFDLE9BQXNCO1FBQ2xDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzlDLHdFQUF3RTtZQUN4RSxzRUFBc0U7WUFDdEUsbUVBQW1FO1lBQ25FLHVFQUF1RTtZQUN2RSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzlELEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDM0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQ3JDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDdEIsU0FBUyxFQUFFLFlBQVk7YUFDeEIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztRQUNILENBQUM7UUFDRCxNQUFNLElBQUEsZ0NBQXVCLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RCxDQUFDOztBQXZESCxvQ0F3REMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuXG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7XG4gIGNoYWluQnVuZGxlckFsbERlY2xpbmVkLFxuICBjaGFpbkJ1bmRsZXJDb25mbGljdGluZ091dHB1dEZpbGVOYW1lLFxuICBjaGFpbkJ1bmRsZXJSZXF1aXJlc0F0TGVhc3RPbmVCdW5kbGVyLFxufSBmcm9tIFwiLi9lcnJvcnNcIjtcbmltcG9ydCB7IGFyY2hpdmVTeW5jLCBjb3B5U3luYyB9IGZyb20gXCIuL3ByaXZhdGUvZnNcIjtcbmltcG9ydCB7IElJZ25vcmVTdHJhdGVneSB9IGZyb20gXCIuL2lnbm9yZS1zdHJhdGVneVwiO1xuXG4vKipcbiAqIENvbW1vbiBpbnRlcmZhY2UgZm9yIGFsbCBhc3NldHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0IHtcbiAgLyoqXG4gICAqIEEgaGFzaCBvZiB0aGlzIGFzc2V0LCBhdmFpbGFibGUgYXQgY29uc3RydWN0aW9uIHRpbWUuXG4gICAqXG4gICAqIEJlaW5nIGEgcGxhaW4gc3RyaW5nLCBpdCBjYW4gYmUgdXNlZCBpbiBjb25zdHJ1Y3QgSURzIHRvIGZvcmNlIGEgbmV3XG4gICAqIHJlc291cmNlIHdoZW4gdGhlIGNvbnRlbnQgaGFzaCBjaGFuZ2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRIYXNoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBjb250cm9sbGluZyBob3cgYW4gYXNzZXQncyBoYXNoIGlzIGRlcml2ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZXRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNwZWNpZnkgYSBjdXN0b20gaGFzaCBmb3IgdGhpcyBhc3NldC4gSWYgYGFzc2V0SGFzaFR5cGVgIGlzIHNldCBpdCBtdXN0XG4gICAqIGJlIHNldCB0byBgQXNzZXRIYXNoVHlwZS5DVVNUT01gLiBUaGUgdmFsdWUgaXMgdXNlZCB2ZXJiYXRpbSBhcyB0aGUgYXNzZXRcbiAgICogaGFzaCwgYW5kIGJlY2F1c2UgaXQgbmFtZXMgdGhlIHN0YWdlZCBhc3NldCBmaWxlIGl0IG1heSBvbmx5IGNvbnRhaW5cbiAgICogbGV0dGVycywgZGlnaXRzLCBgX2AsIGAuYCBhbmQgYC1gLlxuICAgKlxuICAgKiBUaGUgaGFzaCBpZGVudGlmaWVzIGEgc3BlY2lmaWMgcmV2aXNpb24gb2YgdGhlIGFzc2V0IGFuZCBjYWNoZXMgZGVwbG95bWVudFxuICAgKiB3b3JrIChwYWNrYWdpbmcsIHVwbG9hZGluZykuIEEgY3VzdG9tIGhhc2ggbXVzdCBiZSB1cGRhdGVkIHdoZW5ldmVyIHRoZVxuICAgKiBhc3NldCBjaGFuZ2VzLCBvciBzb21lIGRlcGxveW1lbnRzIHdpbGwgbm90IGJlIGludmFsaWRhdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGJhc2VkIG9uIGBhc3NldEhhc2hUeXBlYFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRIYXNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHR5cGUgb2YgaGFzaCB0byBjYWxjdWxhdGUgZm9yIHRoaXMgYXNzZXQuXG4gICAqXG4gICAqIElmIGBhc3NldEhhc2hgIGlzIGNvbmZpZ3VyZWQsIHRoaXMgb3B0aW9uIG11c3QgYmUgYHVuZGVmaW5lZGAgb3JcbiAgICogYEFzc2V0SGFzaFR5cGUuQ1VTVE9NYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgZGVmYXVsdCBpcyBgQXNzZXRIYXNoVHlwZS5TT1VSQ0VgLCBidXQgaWYgYGFzc2V0SGFzaGAgaXNcbiAgICogZXhwbGljaXRseSBzcGVjaWZpZWQgdGhpcyB2YWx1ZSBkZWZhdWx0cyB0byBgQXNzZXRIYXNoVHlwZS5DVVNUT01gLlxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRIYXNoVHlwZT86IEFzc2V0SGFzaFR5cGU7XG59XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgYXNzZXQgaGFzaC5cbiAqXG4gKiBUaGUgaGFzaCBpZGVudGlmaWVzIGEgc3BlY2lmaWMgcmV2aXNpb24gb2YgdGhlIGFzc2V0IGFuZCBjYWNoZXMgZGVwbG95bWVudFxuICogd29yayBzdWNoIGFzIHBhY2thZ2luZyBhbmQgdXBsb2FkaW5nLlxuICovXG5leHBvcnQgZW51bSBBc3NldEhhc2hUeXBlIHtcbiAgLyoqXG4gICAqIEJhc2VkIG9uIHRoZSBjb250ZW50IG9mIHRoZSBzb3VyY2UgcGF0aC5cbiAgICpcbiAgICogVXNlIGBTT1VSQ0VgIHRvIHRyYWNrIGNoYW5nZXMgdG8gdGhlIHNvdXJjZSBmaWxlcyBkaXJlY3RseS5cbiAgICovXG4gIFNPVVJDRSA9IFwic291cmNlXCIsXG5cbiAgLyoqXG4gICAqIEJhc2VkIG9uIHRoZSBjb250ZW50IG9mIHRoZSBidW5kbGluZyBvdXRwdXQuXG4gICAqXG4gICAqIFVzZSBgT1VUUFVUYCB3aGVuIHRoZSBzb3VyY2UgaXMgYSB0b3AtbGV2ZWwgZm9sZGVyIGhvbGRpbmcgY29kZSBhbmQvb3JcbiAgICogZGVwZW5kZW5jaWVzIG5vdCBkaXJlY3RseSBsaW5rZWQgdG8gdGhlIGFzc2V0LlxuICAgKi9cbiAgT1VUUFVUID0gXCJvdXRwdXRcIixcblxuICAvKipcbiAgICogVXNlIGEgY3VzdG9tIGhhc2guXG4gICAqL1xuICBDVVNUT00gPSBcImN1c3RvbVwiLFxufVxuXG4vKipcbiAqIEhvdyBhIHN0YWdlZCBhc3NldCBpcyBwcm9kdWNlZCBhbmQgd2hhdCBzaGFwZSBpdCB0YWtlcyBvbiBkaXNrLlxuICpcbiAqIFBhY2thZ2luZyBhbnN3ZXJzIHR3byBpbmRlcGVuZGVudCBxdWVzdGlvbnM6IGhvdyB0aGUgYXJ0aWZhY3QgaXMgcHJvZHVjZWRcbiAqIChjb3B5LCB6aXAsIHRhci5neiwgLi4uKSBhbmQgd2hldGhlciB0aGUgcmVzdWx0IGlzIGEgZGlyZWN0b3J5IG9yIGEgc2luZ2xlXG4gKiBmaWxlLiBBIGNsb3NlZCBlbnVtIGNhbiBvbmx5IGV2ZXIgYW5zd2VyIHRoZSBzZWNvbmQgb25lLCBzbyBpdCBpcyBhblxuICogaW50ZXJmYWNlIHJhdGhlciB0aGFuIGFuIGVudW0g4oCUIGN1c3RvbSBmb3JtYXRzIChlLmcuIGB0YXIuYnoyYCkgbmVlZCBub1xuICogY29yZSBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0UGFja2FnaW5nIHtcbiAgLyoqXG4gICAqIEFwcGVuZGVkIHRvIHRoZSBzdGFnZWQgYXJ0aWZhY3QgbmFtZSwgZS5nLiBcIi56aXBcIiwgXCJcIiwgXCIudGFyLmJ6MlwiLlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZW5zaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHN0YWdlZCByZXN1bHQgaXMgYSBkaXJlY3RvcnkgcmF0aGVyIHRoYW4gYSBzaW5nbGUgZmlsZS5cbiAgICpcbiAgICogUHVibGlzaGVycyBicmFuY2ggb24gdGhpcyB0byBkZWNpZGUgd2hldGhlciB0aGV5IHVwbG9hZCBvbmUgb2JqZWN0IG9yXG4gICAqIHN5bmMgYSB0cmVlLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZHVjZXNEaXJlY3Rvcnk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYHBhY2tgIGFjY2VwdHMgYSBkaXJlY3RvcnkgYXMgaXRzIGBzb3VyY2VgLlxuICAgKlxuICAgKiBJbmRlcGVuZGVudCBvZiBgcHJvZHVjZXNEaXJlY3RvcnlgIGFuZCBgb21pdHNEaXJlY3RvcnlFbnRyaWVzYCwgYm90aCBvZlxuICAgKiB3aGljaCBkZXNjcmliZSB0aGUgb3V0cHV0OiBhIGB0YXIuZ3pgIHBhY2thZ2luZyB0YWtlcyBhIGRpcmVjdG9yeSBzb3VyY2VcbiAgICogeWV0IGVtaXRzIGEgc2luZ2xlIGZpbGUuIEJ1bmRsZXIgb3V0cHV0IGlzIGFsd2F5cyBhIGRpcmVjdG9yeSwgc28gYVxuICAgKiBwYWNrYWdpbmcgdGhhdCBpcyBgZmFsc2VgIGhlcmUgY2Fubm90IHN0YWdlIGl0LlxuICAgKi9cbiAgcmVhZG9ubHkgYWNjZXB0c0RpcmVjdG9yeVNvdXJjZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBgcGFja2AgZW1pdHMgYW4gYXJ0aWZhY3Qgd2l0aCBubyBkaXJlY3RvcnkgZW50cmllcyBvZiBpdHMgb3duIOKAlFxuICAgKiBvbmx5IHRoZSBpZ25vcmUtc3RyYXRlZ3ktYXdhcmUgc291cmNlIHdhbGsuIGBoYXNoUGF0aGAncyBgYXJjaGl2ZWAgZnJhbWVcbiAgICogbXVzdCBhZ3JlZSB3aXRoIHRoaXMgb3IgdGhlIGhhc2ggYW5kIHRoZSBhcnRpZmFjdCBkZXNjcmliZSBkaWZmZXJlbnRcbiAgICogZmlsZSBzZXRzLlxuICAgKlxuICAgKiBgWmlwUGFja2FnaW5nYCBzZXRzIHRoaXMgYmVjYXVzZSBgYXJjaGl2ZVN5bmNgIG5ldmVyIGVtaXRzIFpJUCBkaXJlY3RvcnlcbiAgICogZW50cmllcy4gQSBkaXJlY3RvcnktcHJvZHVjaW5nIHBhY2thZ2luZyB0aGF0IG1pcnJvcnMgdGhlIHNvdXJjZSB0cmVlXG4gICAqIChlLmcuIGBEaXJlY3RvcnlQYWNrYWdpbmdgKSBsZWF2ZXMgdGhpcyBmYWxzZSwgc2luY2UgaXRzIGRpcmVjdG9yaWVzIGFyZVxuICAgKiByZWFsIGVudHJpZXMgb24gZGlzay5cbiAgICovXG4gIHJlYWRvbmx5IG9taXRzRGlyZWN0b3J5RW50cmllczogYm9vbGVhbjtcblxuICAvKipcbiAgICogV3JpdGUgdGhlIHBhY2thZ2VkIHJlc3VsdCB0byBgb3B0aW9ucy50YXJnZXRgLlxuICAgKi9cbiAgcGFjayhvcHRpb25zOiBQYWNrT3B0aW9ucyk6IHZvaWQ7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIElBc3NldFBhY2thZ2luZy5wYWNrfS5cbiAqXG4gKiBBIHN0cnVjdCByYXRoZXIgdGhhbiBwb3NpdGlvbmFsIHBhcmFtZXRlcnM6IGFkZGluZyBhIHN0cnVjdCBmaWVsZCBpc1xuICogYWRkaXRpdmUsIGFkZGluZyBhIG1ldGhvZCBwYXJhbWV0ZXIgaXMgbm90LCBhbmQgYHBhY2tgIGlzIGNhbGxlZCB0aHJvdWdoXG4gKiBKU0lJIHdoZXJlIHRoYXQgZGlzdGluY3Rpb24gaXMgYSBicmVha2luZy1jaGFuZ2UgYm91bmRhcnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFja09wdGlvbnMge1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgcmVzb2x2ZWQgKGFscmVhZHkgYnVuZGxlZCwgaWYgYXBwbGljYWJsZSkgc291cmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhdGggdGhlIHBhY2thZ2VkIHJlc3VsdCBzaG91bGQgYmUgd3JpdHRlbiB0by5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbnRyaWVzIHRvIG9taXQgZnJvbSB0aGUgcGFja2FnZWQgcmVzdWx0LiBNdXN0IG1hdGNoIHRoZSBzdHJhdGVneSB1c2VkXG4gICAqIHRvIGhhc2ggdGhlIHNhbWUgc291cmNlLCBvciB0aGUgaGFzaCBhbmQgdGhlIGFydGlmYWN0IGRlc2NyaWJlXG4gICAqIGRpZmZlcmVudCBzZXRzIG9mIGZpbGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vdGhpbmcgaXMgZXhjbHVkZWRcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZVN0cmF0ZWd5PzogSUlnbm9yZVN0cmF0ZWd5O1xufVxuXG4vKipcbiAqIENvcGllcyBhIHNpbmdsZSBmaWxlIHZlcmJhdGltLlxuICovXG5jbGFzcyBGaWxlUGFja2FnaW5nIGltcGxlbWVudHMgSUFzc2V0UGFja2FnaW5nIHtcbiAgcHVibGljIHJlYWRvbmx5IGV4dGVuc2lvbiA9IFwiXCI7XG4gIHB1YmxpYyByZWFkb25seSBwcm9kdWNlc0RpcmVjdG9yeSA9IGZhbHNlO1xuICBwdWJsaWMgcmVhZG9ubHkgYWNjZXB0c0RpcmVjdG9yeVNvdXJjZSA9IGZhbHNlO1xuICBwdWJsaWMgcmVhZG9ubHkgb21pdHNEaXJlY3RvcnlFbnRyaWVzID0gZmFsc2U7XG4gIHB1YmxpYyBwYWNrKG9wdGlvbnM6IFBhY2tPcHRpb25zKTogdm9pZCB7XG4gICAgZnMuY29weUZpbGVTeW5jKG9wdGlvbnMuc291cmNlLCBvcHRpb25zLnRhcmdldCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb3BpZXMgYSBkaXJlY3RvcnkgdHJlZSB2ZXJiYXRpbSwgd2l0aG91dCBhcmNoaXZpbmcgaXQuXG4gKi9cbmNsYXNzIERpcmVjdG9yeVBhY2thZ2luZyBpbXBsZW1lbnRzIElBc3NldFBhY2thZ2luZyB7XG4gIHB1YmxpYyByZWFkb25seSBleHRlbnNpb24gPSBcIlwiO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvZHVjZXNEaXJlY3RvcnkgPSB0cnVlO1xuICBwdWJsaWMgcmVhZG9ubHkgYWNjZXB0c0RpcmVjdG9yeVNvdXJjZSA9IHRydWU7XG4gIHB1YmxpYyByZWFkb25seSBvbWl0c0RpcmVjdG9yeUVudHJpZXMgPSBmYWxzZTtcbiAgcHVibGljIHBhY2sob3B0aW9uczogUGFja09wdGlvbnMpOiB2b2lkIHtcbiAgICBjb3B5U3luYyhvcHRpb25zLnNvdXJjZSwgb3B0aW9ucy50YXJnZXQsIHtcbiAgICAgIHNob3VsZEV4Y2x1ZGU6IG9wdGlvbnMuaWdub3JlU3RyYXRlZ3lcbiAgICAgICAgPyAocmVsYXRpdmVQYXRoLCBpc0RpcmVjdG9yeSkgPT5cbiAgICAgICAgICAgIG9wdGlvbnMuaWdub3JlU3RyYXRlZ3khLmlnbm9yZXMoeyByZWxhdGl2ZVBhdGgsIGlzRGlyZWN0b3J5IH0pXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZGVzY2VuZEludG9FeGNsdWRlZERpcmVjdG9yaWVzOlxuICAgICAgICBvcHRpb25zLmlnbm9yZVN0cmF0ZWd5Py5wcnVuZUV4Y2x1ZGVkRGlyZWN0b3JpZXMgPT09IGZhbHNlLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQXJjaGl2ZXMgYSBkaXJlY3RvcnkgdHJlZSBpbnRvIGEgc2luZ2xlIHppcCBmaWxlLlxuICovXG5jbGFzcyBaaXBQYWNrYWdpbmcgaW1wbGVtZW50cyBJQXNzZXRQYWNrYWdpbmcge1xuICBwdWJsaWMgcmVhZG9ubHkgZXh0ZW5zaW9uID0gXCIuemlwXCI7XG4gIHB1YmxpYyByZWFkb25seSBwcm9kdWNlc0RpcmVjdG9yeSA9IGZhbHNlO1xuICBwdWJsaWMgcmVhZG9ubHkgYWNjZXB0c0RpcmVjdG9yeVNvdXJjZSA9IHRydWU7XG4gIHB1YmxpYyByZWFkb25seSBvbWl0c0RpcmVjdG9yeUVudHJpZXMgPSB0cnVlO1xuICBwdWJsaWMgcGFjayhvcHRpb25zOiBQYWNrT3B0aW9ucyk6IHZvaWQge1xuICAgIGFyY2hpdmVTeW5jKFxuICAgICAgb3B0aW9ucy5zb3VyY2UsXG4gICAgICBvcHRpb25zLnRhcmdldCxcbiAgICAgIG9wdGlvbnMuaWdub3JlU3RyYXRlZ3lcbiAgICAgICAgPyAocmVsYXRpdmVQYXRoLCBpc0RpcmVjdG9yeSkgPT5cbiAgICAgICAgICAgIG9wdGlvbnMuaWdub3JlU3RyYXRlZ3khLmlnbm9yZXMoeyByZWxhdGl2ZVBhdGgsIGlzRGlyZWN0b3J5IH0pXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgb3B0aW9ucy5pZ25vcmVTdHJhdGVneT8ucHJ1bmVFeGNsdWRlZERpcmVjdG9yaWVzID09PSBmYWxzZSxcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogQnVpbHQtaW4gcGFja2FnaW5nIHN0cmF0ZWdpZXMuIEN1c3RvbSBmb3JtYXRzIGltcGxlbWVudCBgSUFzc2V0UGFja2FnaW5nYFxuICogZGlyZWN0bHkgcmF0aGVyIHRoYW4gZXh0ZW5kaW5nIHRoaXMgY2xhc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBBc3NldFBhY2thZ2luZyB7XG4gIC8qKlxuICAgKiBDb3B5IGEgc2luZ2xlIGZpbGUgYXMtaXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZJTEU6IElBc3NldFBhY2thZ2luZyA9IG5ldyBGaWxlUGFja2FnaW5nKCk7XG5cbiAgLyoqXG4gICAqIENvcHkgYSBkaXJlY3RvcnkgdHJlZSBhcy1pcywgd2l0aG91dCBhcmNoaXZpbmcuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERJUkVDVE9SWTogSUFzc2V0UGFja2FnaW5nID0gbmV3IERpcmVjdG9yeVBhY2thZ2luZygpO1xuXG4gIC8qKlxuICAgKiBBcmNoaXZlIGEgZGlyZWN0b3J5IHRyZWUgaW50byBhIHNpbmdsZSB6aXAgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgWklQOiBJQXNzZXRQYWNrYWdpbmcgPSBuZXcgWmlwUGFja2FnaW5nKCk7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbi8qKlxuICogT3B0aW9ucyBoYW5kZWQgdG8gYW4ge0BsaW5rIElBc3NldEJ1bmRsZXJ9IHdoZW4gaXQgcnVucy5cbiAqXG4gKiBBIHN0cnVjdCByYXRoZXIgdGhhbiBwb3NpdGlvbmFsIHBhcmFtZXRlcnM6IGFkZGluZyBhIGZpZWxkIGlzIGFkZGl0aXZlLFxuICogYWRkaW5nIGEgbWV0aG9kIHBhcmFtZXRlciBpcyBub3QsIGFuZCBgYnVuZGxlYCBpcyBjYWxsZWQgdGhyb3VnaCBKU0lJIHdoZXJlXG4gKiB0aGF0IGRpc3RpbmN0aW9uIGlzIGEgYnJlYWtpbmctY2hhbmdlIGJvdW5kYXJ5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsZU9wdGlvbnMge1xuICAvKipcbiAgICogQWJzb2x1dGUgcGF0aCB0byB0aGUgYXNzZXQncyBzb3VyY2UgZmlsZSBvciBkaXJlY3RvcnkuIFRoZSBidW5kbGVyIHJlYWRzXG4gICAqIGZyb20gaGVyZSBhbmQgbXVzdCBub3QgbW9kaWZ5IGl0LlxuICAgKlxuICAgKiBFeGNsdXNpb25zIChgZXhjbHVkZWAgLyBgaWdub3JlU3RyYXRlZ3lgKSBhcmUgYWxyZWFkeSBhcHBsaWVkOiB3aGVuIGFueVxuICAgKiBhcmUgY29uZmlndXJlZCB0aGlzIHBvaW50cyBhdCBhIGZpbHRlcmVkIGNvcHksIG5vdCB0aGUgb3JpZ2luYWwgdHJlZSwgc29cbiAgICogdGhlIGJ1bmRsZXIgcmVhZHMgZXhhY3RseSB0aGUgZmlsZSBzZXQgdGhlIGFzc2V0IGhhc2ggd2FzIHRha2VuIG92ZXIuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U6IHN0cmluZztcblxuICAvKipcbiAgICogQSBzY3JhdGNoIGRpcmVjdG9yeSB0aGUgYnVuZGxlciBtYXkgd3JpdGUgaW50bywgb3duZWQgYW5kIGNyZWF0ZWQgYnkgdGhlXG4gICAqIGNhbGxlci4gVGhlIGJ1bmRsZXIgcHJvZHVjZXMgaXRzIG91dHB1dCBoZXJlIChvciBpbiBhIHN1YmRpcmVjdG9yeSkgYW5kXG4gICAqIHJldHVybnMgYSB7QGxpbmsgQnVuZGxlUmVzdWx0fSBwb2ludGluZyBhdCB0aGUgZmluaXNoZWQgYXJ0aWZhY3Qg4oCUIHNlZVxuICAgKiB7QGxpbmsgSUFzc2V0QnVuZGxlci5idW5kbGV9LlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0RGlyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIHNoYXBlIG9mIGEgYnVuZGxlcidzIG91dHB1dCwgc28gc3RhZ2luZyBhbmQgcGFja2FnaW5nIGNhbiB0cmVhdCBhXG4gKiBzaW5nbGUtZmlsZSBhcnRpZmFjdCAoYSB0YXJiYWxsLCBhIGAuemlwYCkgZGlmZmVyZW50bHkgZnJvbSBhIGRpcmVjdG9yeVxuICogdHJlZSB3aXRob3V0IGluZmVycmluZyBpdCBmcm9tIHRoZSBwYXRoLlxuICovXG5leHBvcnQgZW51bSBCdW5kbGVPdXRwdXRUeXBlIHtcbiAgLyoqXG4gICAqIFRoZSBvdXRwdXQgaXMgYSBkaXJlY3RvcnkgdHJlZS5cbiAgICpcbiAgICogUGFja2FnZWQgbGlrZSBhbiB1bmJ1bmRsZWQgc291cmNlIGRpcmVjdG9yeS4gVGhlIGRlZmF1bHQsIGFuZCB0aGUgb25seVxuICAgKiBzaGFwZSB0aGF0IHByZWRhdGVzIGFyY2hpdmUgc3VwcG9ydC5cbiAgICovXG4gIERJUkVDVE9SWSA9IFwiZGlyZWN0b3J5XCIsXG5cbiAgLyoqXG4gICAqIFRoZSBvdXRwdXQgaXMgYSBzaW5nbGUgZmlsZSB0aGUgYnVuZGxlciBhbHJlYWR5IHByb2R1Y2VkIGluIGl0cyBmaW5hbFxuICAgKiBmb3JtLlxuICAgKlxuICAgKiBBIHRhcmJhbGwgb3IgYSBkZXRlcm1pbmlzdGljIGAuemlwYC4gU3RhZ2VkIHZlcmJhdGltIHJhdGhlciB0aGFuXG4gICAqIHJlLWFyY2hpdmVkLCBzbyBgQXNzZXRUeXBlLkZJTEVgIG5vIGxvbmdlciBoYXMgdG8gcmVqZWN0IGEgYnVuZGxlci5cbiAgICovXG4gIEZJTEUgPSBcImZpbGVcIixcbn1cblxuLyoqXG4gKiBXaGF0IGEgYnVuZGxlciBwcm9kdWNlZCwgcmV0dXJuZWQgZnJvbSB7QGxpbmsgSUFzc2V0QnVuZGxlci5idW5kbGV9LlxuICpcbiAqIENhcnJpZXMgdGhlIGFydGlmYWN0IHBhdGggYW5kIGl0cyBzaGFwZSwgb3IgYSBkZWNsaW5lZCBzdGF0ZSBzaWduYWxsaW5nIHRoZVxuICogY2FsbGVyIHNob3VsZCBmYWxsIGJhY2suIFNlZSB7QGxpbmsgZGVjbGluZWR9IGZvciB0aGUgZGVjbGluZSBwcm90b2NvbC5cbiAqL1xuZXhwb3J0IGNsYXNzIEJ1bmRsZVJlc3VsdCB7XG4gIC8qKlxuICAgKiBBIGRpcmVjdG9yeS10cmVlIGFydGlmYWN0IGF0IGBwYXRoYC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGlyZWN0b3J5KHBhdGg6IHN0cmluZyk6IEJ1bmRsZVJlc3VsdCB7XG4gICAgcmV0dXJuIG5ldyBCdW5kbGVSZXN1bHQoQnVuZGxlT3V0cHV0VHlwZS5ESVJFQ1RPUlksIHBhdGgsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNpbmdsZS1maWxlIGFydGlmYWN0IGF0IGBwYXRoYCAoYSB0YXJiYWxsLCBhIGAuemlwYCksIHN0YWdlZCB2ZXJiYXRpbS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZmlsZShwYXRoOiBzdHJpbmcpOiBCdW5kbGVSZXN1bHQge1xuICAgIHJldHVybiBuZXcgQnVuZGxlUmVzdWx0KEJ1bmRsZU91dHB1dFR5cGUuRklMRSwgcGF0aCwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBidW5kbGVyIGRlY2xpbmVkIHRvIHJ1biBoZXJlOyB0aGUgY2FsbGVyIHNob3VsZCBmYWxsIGJhY2suXG4gICAqXG4gICAqIERpc3RpbmN0IGZyb20gYSB0aHJvd24gZXJyb3IsIHdoaWNoIGlzIGEgaGFyZCBmYWlsdXJlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWNsaW5lZCgpOiBCdW5kbGVSZXN1bHQge1xuICAgIHJldHVybiBuZXcgQnVuZGxlUmVzdWx0KHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYXJ0aWZhY3QncyBzaGFwZSwgb3IgdW5kZWZpbmVkIHdoZW4ge0BsaW5rIGlzRGVjbGluZWR9LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG91dHB1dFR5cGU/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-pre.9" };
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-pre.9" };
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 validate_terraform_version_1 = require("../validations/validate-terraform-version");
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-pre.9" };
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 validate_terraform_version_1.ValidateTerraformVersion(">=1.1", `The cloud block is only supported for Terraform >=1.1. Please upgrade your Terraform version.`));
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-pre.9" };
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-pre.9" };
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-pre.9" };
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-pre.9" };
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-pre.9" };
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-pre.9" };
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-pre.9" };
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-pre.9" };
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-pre.9" };
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-pre.9" };
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-pre.9" };
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-pre.9" };
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-pre.9" };
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-pre.9" };
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-pre.9" };
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
  }