@cdktn/hcl2cdk 0.23.0-pre.8 → 0.23.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/ambient.d.ts +0 -1
- package/build/__tests__/coerceType.test.js +165 -0
- package/build/__tests__/expressionToTs.test.js +693 -0
- package/build/__tests__/expressions.test.js +415 -0
- package/build/__tests__/findExpressionType.test.js +105 -0
- package/build/__tests__/functions.test.js +605 -0
- package/build/__tests__/generation.test.js +45 -0
- package/build/__tests__/jsii-rosetta-workarounds.test.js +86 -0
- package/build/__tests__/partialCode.test.js +390 -0
- package/build/__tests__/terraformSchema.test.js +105 -0
- package/build/__tests__/testHelpers.js +16 -0
- package/build/coerceType.js +240 -0
- package/build/dynamic-blocks.js +44 -0
- package/build/expressions.js +633 -0
- package/build/function-bindings/functions.generated.js +1142 -0
- package/build/function-bindings/functions.js +73 -0
- package/{lib → build}/generation.js +4 -4
- package/{lib → build}/index.d.ts +2 -2
- package/build/index.js +364 -0
- package/build/iteration.js +87 -0
- package/build/jsii-rosetta-workarounds.js +126 -0
- package/build/partialCode.js +116 -0
- package/build/provider.js +40 -0
- package/build/references.js +141 -0
- package/build/schema.js +81 -0
- package/build/telemetryAllowList.json +24 -0
- package/build/terraformSchema.js +136 -0
- package/build/types.js +3 -0
- package/build/utils.js +25 -0
- package/build/variables.js +172 -0
- package/package.json +13 -14
- package/tsconfig.json +4 -2
- package/lib/__tests__/coerceType.test.js +0 -165
- package/lib/__tests__/expressionToTs.test.js +0 -693
- package/lib/__tests__/expressions.test.js +0 -415
- package/lib/__tests__/findExpressionType.test.js +0 -105
- package/lib/__tests__/functions.test.js +0 -605
- package/lib/__tests__/generation.test.js +0 -45
- package/lib/__tests__/jsii-rosetta-workarounds.test.js +0 -86
- package/lib/__tests__/partialCode.test.js +0 -390
- package/lib/__tests__/terraformSchema.test.js +0 -105
- package/lib/__tests__/testHelpers.js +0 -16
- package/lib/coerceType.js +0 -240
- package/lib/dynamic-blocks.js +0 -44
- package/lib/expressions.js +0 -634
- package/lib/function-bindings/functions.generated.js +0 -1142
- package/lib/function-bindings/functions.js +0 -73
- package/lib/index.js +0 -364
- package/lib/iteration.js +0 -87
- package/lib/jsii-rosetta-workarounds.js +0 -126
- package/lib/partialCode.js +0 -116
- package/lib/provider.js +0 -40
- package/lib/references.js +0 -141
- package/lib/schema.js +0 -81
- package/lib/terraformSchema.js +0 -136
- package/lib/types.js +0 -3
- package/lib/utils.js +0 -25
- package/lib/variables.js +0 -172
- /package/{lib → build}/__tests__/coerceType.test.d.ts +0 -0
- /package/{lib → build}/__tests__/expressionToTs.test.d.ts +0 -0
- /package/{lib → build}/__tests__/expressions.test.d.ts +0 -0
- /package/{lib → build}/__tests__/findExpressionType.test.d.ts +0 -0
- /package/{lib → build}/__tests__/functions.test.d.ts +0 -0
- /package/{lib → build}/__tests__/generation.test.d.ts +0 -0
- /package/{lib → build}/__tests__/jsii-rosetta-workarounds.test.d.ts +0 -0
- /package/{lib → build}/__tests__/partialCode.test.d.ts +0 -0
- /package/{lib → build}/__tests__/terraformSchema.test.d.ts +0 -0
- /package/{lib → build}/__tests__/testHelpers.d.ts +0 -0
- /package/{lib → build}/coerceType.d.ts +0 -0
- /package/{lib → build}/dynamic-blocks.d.ts +0 -0
- /package/{lib → build}/expressions.d.ts +0 -0
- /package/{lib → build}/function-bindings/functions.d.ts +0 -0
- /package/{lib → build}/function-bindings/functions.generated.d.ts +0 -0
- /package/{lib → build}/generation.d.ts +0 -0
- /package/{lib → build}/iteration.d.ts +0 -0
- /package/{lib → build}/jsii-rosetta-workarounds.d.ts +0 -0
- /package/{lib → build}/partialCode.d.ts +0 -0
- /package/{lib → build}/provider.d.ts +0 -0
- /package/{lib → build}/references.d.ts +0 -0
- /package/{lib → build}/schema.d.ts +0 -0
- /package/{lib → build}/terraformSchema.d.ts +0 -0
- /package/{lib → build}/types.d.ts +0 -0
- /package/{lib → build}/utils.d.ts +0 -0
- /package/{lib → build}/variables.d.ts +0 -0
- /package/{lib → src}/telemetryAllowList.json +0 -0
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
// Copyright (c) HashiCorp, Inc
|
|
7
|
-
// SPDX-License-Identifier: MPL-2.0
|
|
8
|
-
const coerceType_1 = require("../coerceType");
|
|
9
|
-
const template_1 = __importDefault(require("@babel/template"));
|
|
10
|
-
const generator_1 = __importDefault(require("@babel/generator"));
|
|
11
|
-
function expressionify(code) {
|
|
12
|
-
return template_1.default.ast(code).expression;
|
|
13
|
-
}
|
|
14
|
-
function generateCode(ast) {
|
|
15
|
-
return (0, generator_1.default)(ast).code;
|
|
16
|
-
}
|
|
17
|
-
const scope = {
|
|
18
|
-
importables: [],
|
|
19
|
-
variables: {
|
|
20
|
-
a_user_defined_variable: {
|
|
21
|
-
resource: "var",
|
|
22
|
-
variableName: "aUserDefinedVariable",
|
|
23
|
-
},
|
|
24
|
-
a_user_defined_local: {
|
|
25
|
-
resource: "var",
|
|
26
|
-
variableName: "aUserDefinedTerraformLocal",
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
};
|
|
30
|
-
describe("coerceType", () => {
|
|
31
|
-
it.each([
|
|
32
|
-
{ code: `"hello-world"`, type: "string", targetType: undefined },
|
|
33
|
-
{ code: `"hello-world"`, type: "string", targetType: "string" },
|
|
34
|
-
])("should change nothing for %p ", ({ code, type, targetType }) => {
|
|
35
|
-
expect(generateCode((0, coerceType_1.coerceType)(scope, expressionify(code), type, targetType))).toEqual(code);
|
|
36
|
-
});
|
|
37
|
-
it.each([
|
|
38
|
-
{
|
|
39
|
-
code: `"300"`,
|
|
40
|
-
type: "string",
|
|
41
|
-
targetType: "number",
|
|
42
|
-
expectedCode: `Token.asNumber("300")`,
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
code: `300`,
|
|
46
|
-
type: "number",
|
|
47
|
-
targetType: "string",
|
|
48
|
-
expectedCode: `Token.asString(300)`,
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
code: `"['foo', 'bar']"`,
|
|
52
|
-
type: "string",
|
|
53
|
-
targetType: ["list", "string"],
|
|
54
|
-
expectedCode: `Token.asList("['foo', 'bar']")`,
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
code: `"[1,2,3]"`,
|
|
58
|
-
type: "string",
|
|
59
|
-
targetType: ["list", "number"],
|
|
60
|
-
expectedCode: `Token.asNumberList("[1,2,3]")`,
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
code: `"['foo', 'bar']"`,
|
|
64
|
-
type: "string",
|
|
65
|
-
targetType: ["set", "string"],
|
|
66
|
-
expectedCode: `Token.asList("['foo', 'bar']")`,
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
code: `"[1,2,3]"`,
|
|
70
|
-
type: "string",
|
|
71
|
-
targetType: ["set", "number"],
|
|
72
|
-
expectedCode: `Token.asNumberList("[1,2,3]")`,
|
|
73
|
-
},
|
|
74
|
-
// We don't have a token function for boolean lists, so we need to take an asAny
|
|
75
|
-
{
|
|
76
|
-
code: `"[true,false,true]"`,
|
|
77
|
-
type: "string",
|
|
78
|
-
targetType: ["list", "bool"],
|
|
79
|
-
expectedCode: `Token.asAny("[true,false,true]")`,
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
code: `"{ foo: 'bar' }"`,
|
|
83
|
-
type: "string",
|
|
84
|
-
targetType: ["map", "string"],
|
|
85
|
-
expectedCode: `Token.asStringMap("{ foo: 'bar' }")`,
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
code: `"{ foo: 1 }"`,
|
|
89
|
-
type: "string",
|
|
90
|
-
targetType: ["map", "number"],
|
|
91
|
-
expectedCode: `Token.asNumberMap("{ foo: 1 }")`,
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
code: `"{ foo: true }"`,
|
|
95
|
-
type: "string",
|
|
96
|
-
targetType: ["map", "bool"],
|
|
97
|
-
expectedCode: `Token.asBooleanMap("{ foo: true }")`,
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
code: `"{ foo: {bar: true} }"`,
|
|
101
|
-
type: "string",
|
|
102
|
-
targetType: ["map", ["map", "boolean"]],
|
|
103
|
-
expectedCode: `Token.asAnyMap("{ foo: {bar: true} }")`,
|
|
104
|
-
},
|
|
105
|
-
])("should use Token functions %p", ({ code, type, targetType, expectedCode }) => {
|
|
106
|
-
expect(generateCode((0, coerceType_1.coerceType)(scope, expressionify(code), type, targetType))).toEqual(expectedCode);
|
|
107
|
-
});
|
|
108
|
-
it.each([
|
|
109
|
-
{
|
|
110
|
-
code: `aUserDefinedVariable.value`,
|
|
111
|
-
type: "dynamic",
|
|
112
|
-
targetType: "string",
|
|
113
|
-
expectedCode: `aUserDefinedVariable.stringValue`,
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
code: `aUserDefinedVariable.value`,
|
|
117
|
-
type: "dynamic",
|
|
118
|
-
targetType: "number",
|
|
119
|
-
expectedCode: `aUserDefinedVariable.numberValue`,
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
code: `aUserDefinedVariable.value`,
|
|
123
|
-
type: "dynamic",
|
|
124
|
-
targetType: ["list", "string"],
|
|
125
|
-
expectedCode: `aUserDefinedVariable.listValue`,
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
code: `aUserDefinedVariable.value`,
|
|
129
|
-
type: "dynamic",
|
|
130
|
-
targetType: "bool",
|
|
131
|
-
expectedCode: `aUserDefinedVariable.booleanValue`,
|
|
132
|
-
},
|
|
133
|
-
])("should use TerraformVariables accessors %p", ({ code, type, targetType, expectedCode }) => {
|
|
134
|
-
expect(generateCode((0, coerceType_1.coerceType)(scope, expressionify(code), type, targetType))).toEqual(expectedCode);
|
|
135
|
-
});
|
|
136
|
-
it.each([
|
|
137
|
-
{
|
|
138
|
-
code: `aUserDefinedTerraformLocal.value`,
|
|
139
|
-
type: "dynamic",
|
|
140
|
-
targetType: "string",
|
|
141
|
-
expectedCode: `aUserDefinedTerraformLocal.stringValue`,
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
code: `aUserDefinedTerraformLocal.value`,
|
|
145
|
-
type: "dynamic",
|
|
146
|
-
targetType: "number",
|
|
147
|
-
expectedCode: `aUserDefinedTerraformLocal.numberValue`,
|
|
148
|
-
},
|
|
149
|
-
{
|
|
150
|
-
code: `aUserDefinedTerraformLocal.value`,
|
|
151
|
-
type: "dynamic",
|
|
152
|
-
targetType: ["list", "string"],
|
|
153
|
-
expectedCode: `aUserDefinedTerraformLocal.listValue`,
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
code: `aUserDefinedTerraformLocal.value`,
|
|
157
|
-
type: "dynamic",
|
|
158
|
-
targetType: "bool",
|
|
159
|
-
expectedCode: `aUserDefinedTerraformLocal.booleanValue`,
|
|
160
|
-
},
|
|
161
|
-
])("should use TerraformLocal accessors %p", ({ code, type, targetType, expectedCode }) => {
|
|
162
|
-
expect(generateCode((0, coerceType_1.coerceType)(scope, expressionify(code), type, targetType))).toEqual(expectedCode);
|
|
163
|
-
});
|
|
164
|
-
});
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lcmNlVHlwZS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29lcmNlVHlwZS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyw4Q0FBMkM7QUFDM0MsK0RBQXVDO0FBQ3ZDLGlFQUF3QztBQUV4QyxTQUFTLGFBQWEsQ0FBQyxJQUFZO0lBQ2pDLE9BQVEsa0JBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFTLENBQUMsVUFBVSxDQUFDO0FBQ2hELENBQUM7QUFDRCxTQUFTLFlBQVksQ0FBQyxHQUFRO0lBQzVCLE9BQU8sSUFBQSxtQkFBUSxFQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM1QixDQUFDO0FBRUQsTUFBTSxLQUFLLEdBQVE7SUFDakIsV0FBVyxFQUFFLEVBQUU7SUFDZixTQUFTLEVBQUU7UUFDVCx1QkFBdUIsRUFBRTtZQUN2QixRQUFRLEVBQUUsS0FBSztZQUNmLFlBQVksRUFBRSxzQkFBc0I7U0FDckM7UUFDRCxvQkFBb0IsRUFBRTtZQUNwQixRQUFRLEVBQUUsS0FBSztZQUNmLFlBQVksRUFBRSw0QkFBNEI7U0FDM0M7S0FDRjtDQUNGLENBQUM7QUFFRixRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtJQUMxQixFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ04sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRTtRQUNoRSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFO0tBQ2hFLENBQUMsQ0FBQywrQkFBK0IsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFO1FBQ2pFLE1BQU0sQ0FDSixZQUFZLENBQ1YsSUFBQSx1QkFBVSxFQUFDLEtBQUssRUFBRSxh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SUFBSSxFQUFFLFNBQVM7WUFDZixVQUFVLEVBQUUsTUFBTTtZQUNsQixZQUFZLEVBQUUseUNBQXlDO1NBQ3hEO0tBQ0YsQ0FBQyxDQUNBLHdDQUF3QyxFQUN4QyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRTtRQUMzQyxNQUFNLENBQ0osWUFBWSxDQUNWLElBQUEsdUJBQVUsRUFDUixLQUFLLEVBQ0wsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUNuQixJQUFXLEVBQ1gsVUFBaUIsQ0FDbEIsQ0FDRixDQUNGLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFCLENBQUMsQ0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgY29lcmNlVHlwZSB9IGZyb20gXCIuLi9jb2VyY2VUeXBlXCI7XG5pbXBvcnQgdGVtcGxhdGUgZnJvbSBcIkBiYWJlbC90ZW1wbGF0ZVwiO1xuaW1wb3J0IGdlbmVyYXRlIGZyb20gXCJAYmFiZWwvZ2VuZXJhdG9yXCI7XG5cbmZ1bmN0aW9uIGV4cHJlc3Npb25pZnkoY29kZTogc3RyaW5nKSB7XG4gIHJldHVybiAodGVtcGxhdGUuYXN0KGNvZGUpIGFzIGFueSkuZXhwcmVzc2lvbjtcbn1cbmZ1bmN0aW9uIGdlbmVyYXRlQ29kZShhc3Q6IGFueSkge1xuICByZXR1cm4gZ2VuZXJhdGUoYXN0KS5jb2RlO1xufVxuXG5jb25zdCBzY29wZTogYW55ID0ge1xuICBpbXBvcnRhYmxlczogW10sXG4gIHZhcmlhYmxlczoge1xuICAgIGFfdXNlcl9kZWZpbmVkX3ZhcmlhYmxlOiB7XG4gICAgICByZXNvdXJjZTogXCJ2YXJcIixcbiAgICAgIHZhcmlhYmxlTmFtZTogXCJhVXNlckRlZmluZWRWYXJpYWJsZVwiLFxuICAgIH0sXG4gICAgYV91c2VyX2RlZmluZWRfbG9jYWw6IHtcbiAgICAgIHJlc291cmNlOiBcInZhclwiLFxuICAgICAgdmFyaWFibGVOYW1lOiBcImFVc2VyRGVmaW5lZFRlcnJhZm9ybUxvY2FsXCIsXG4gICAgfSxcbiAgfSxcbn07XG5cbmRlc2NyaWJlKFwiY29lcmNlVHlwZVwiLCAoKSA9PiB7XG4gIGl0LmVhY2goW1xuICAgIHsgY29kZTogYFwiaGVsbG8td29ybGRcImAsIHR5cGU6IFwic3RyaW5nXCIsIHRhcmdldFR5cGU6IHVuZGVmaW5lZCB9LFxuICAgIHsgY29kZTogYFwiaGVsbG8td29ybGRcImAsIHR5cGU6IFwic3RyaW5nXCIsIHRhcmdldFR5cGU6IFwic3RyaW5nXCIgfSxcbiAgXSkoXCJzaG91bGQgY2hhbmdlIG5vdGhpbmcgZm9yICVwIFwiLCAoeyBjb2RlLCB0eXBlLCB0YXJnZXRUeXBlIH0pID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBnZW5lcmF0ZUNvZGUoXG4gICAgICAgIGNvZXJjZVR5cGUoc2NvcGUsIGV4cHJlc3Npb25pZnkoY29kZSksIHR5cGUgYXMgYW55LCB0YXJnZXRUeXBlIGFzIGFueSksXG4gICAgICApLFxuICAgICkudG9FcXVhbChjb2RlKTtcbiAgfSk7XG5cbiAgaXQuZWFjaChbXG4gICAge1xuICAgICAgY29kZTogYFwiMzAwXCJgLFxuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIHRhcmdldFR5cGU6IFwibnVtYmVyXCIsXG4gICAgICBleHBlY3RlZENvZGU6IGBUb2tlbi5hc051bWJlcihcIjMwMFwiKWAsXG4gICAgfSxcbiAgICB7XG4gICAgICBjb2RlOiBgMzAwYCxcbiAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICB0YXJnZXRUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgVG9rZW4uYXNTdHJpbmcoMzAwKWAsXG4gICAgfSxcbiAgICB7XG4gICAgICBjb2RlOiBgXCJbJ2ZvbycsICdiYXInXVwiYCxcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICB0YXJnZXRUeXBlOiBbXCJsaXN0XCIsIFwic3RyaW5nXCJdLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgVG9rZW4uYXNMaXN0KFwiWydmb28nLCAnYmFyJ11cIilgLFxuICAgIH0sXG4gICAge1xuICAgICAgY29kZTogYFwiWzEsMiwzXVwiYCxcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICB0YXJnZXRUeXBlOiBbXCJsaXN0XCIsIFwibnVtYmVyXCJdLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgVG9rZW4uYXNOdW1iZXJMaXN0KFwiWzEsMiwzXVwiKWAsXG4gICAgfSxcbiAgICB7XG4gICAgICBjb2RlOiBgXCJbJ2ZvbycsICdiYXInXVwiYCxcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICB0YXJnZXRUeXBlOiBbXCJzZXRcIiwgXCJzdHJpbmdcIl0sXG4gICAgICBleHBlY3RlZENvZGU6IGBUb2tlbi5hc0xpc3QoXCJbJ2ZvbycsICdiYXInXVwiKWAsXG4gICAgfSxcbiAgICB7XG4gICAgICBjb2RlOiBgXCJbMSwyLDNdXCJgLFxuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIHRhcmdldFR5cGU6IFtcInNldFwiLCBcIm51bWJlclwiXSxcbiAgICAgIGV4cGVjdGVkQ29kZTogYFRva2VuLmFzTnVtYmVyTGlzdChcIlsxLDIsM11cIilgLFxuICAgIH0sXG4gICAgLy8gV2UgZG9uJ3QgaGF2ZSBhIHRva2VuIGZ1bmN0aW9uIGZvciBib29sZWFuIGxpc3RzLCBzbyB3ZSBuZWVkIHRvIHRha2UgYW4gYXNBbnlcbiAgICB7XG4gICAgICBjb2RlOiBgXCJbdHJ1ZSxmYWxzZSx0cnVlXVwiYCxcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICB0YXJnZXRUeXBlOiBbXCJsaXN0XCIsIFwiYm9vbFwiXSxcbiAgICAgIGV4cGVjdGVkQ29kZTogYFRva2VuLmFzQW55KFwiW3RydWUsZmFsc2UsdHJ1ZV1cIilgLFxuICAgIH0sXG4gICAge1xuICAgICAgY29kZTogYFwieyBmb286ICdiYXInIH1cImAsXG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgdGFyZ2V0VHlwZTogW1wibWFwXCIsIFwic3RyaW5nXCJdLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgVG9rZW4uYXNTdHJpbmdNYXAoXCJ7IGZvbzogJ2JhcicgfVwiKWAsXG4gICAgfSxcbiAgICB7XG4gICAgICBjb2RlOiBgXCJ7IGZvbzogMSB9XCJgLFxuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIHRhcmdldFR5cGU6IFtcIm1hcFwiLCBcIm51bWJlclwiXSxcbiAgICAgIGV4cGVjdGVkQ29kZTogYFRva2VuLmFzTnVtYmVyTWFwKFwieyBmb286IDEgfVwiKWAsXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNvZGU6IGBcInsgZm9vOiB0cnVlIH1cImAsXG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgdGFyZ2V0VHlwZTogW1wibWFwXCIsIFwiYm9vbFwiXSxcbiAgICAgIGV4cGVjdGVkQ29kZTogYFRva2VuLmFzQm9vbGVhbk1hcChcInsgZm9vOiB0cnVlIH1cIilgLFxuICAgIH0sXG5cbiAgICB7XG4gICAgICBjb2RlOiBgXCJ7IGZvbzoge2JhcjogdHJ1ZX0gfVwiYCxcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICB0YXJnZXRUeXBlOiBbXCJtYXBcIiwgW1wibWFwXCIsIFwiYm9vbGVhblwiXV0sXG4gICAgICBleHBlY3RlZENvZGU6IGBUb2tlbi5hc0FueU1hcChcInsgZm9vOiB7YmFyOiB0cnVlfSB9XCIpYCxcbiAgICB9LFxuICBdKShcbiAgICBcInNob3VsZCB1c2UgVG9rZW4gZnVuY3Rpb25zICVwXCIsXG4gICAgKHsgY29kZSwgdHlwZSwgdGFyZ2V0VHlwZSwgZXhwZWN0ZWRDb2RlIH0pID0+IHtcbiAgICAgIGV4cGVjdChcbiAgICAgICAgZ2VuZXJhdGVDb2RlKFxuICAgICAgICAgIGNvZXJjZVR5cGUoXG4gICAgICAgICAgICBzY29wZSxcbiAgICAgICAgICAgIGV4cHJlc3Npb25pZnkoY29kZSksXG4gICAgICAgICAgICB0eXBlIGFzIGFueSxcbiAgICAgICAgICAgIHRhcmdldFR5cGUgYXMgYW55LFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApLnRvRXF1YWwoZXhwZWN0ZWRDb2RlKTtcbiAgICB9LFxuICApO1xuXG4gIGl0LmVhY2goW1xuICAgIHtcbiAgICAgIGNvZGU6IGBhVXNlckRlZmluZWRWYXJpYWJsZS52YWx1ZWAsXG4gICAgICB0eXBlOiBcImR5bmFtaWNcIixcbiAgICAgIHRhcmdldFR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBleHBlY3RlZENvZGU6IGBhVXNlckRlZmluZWRWYXJpYWJsZS5zdHJpbmdWYWx1ZWAsXG4gICAgfSxcbiAgICB7XG4gICAgICBjb2RlOiBgYVVzZXJEZWZpbmVkVmFyaWFibGUudmFsdWVgLFxuICAgICAgdHlwZTogXCJkeW5hbWljXCIsXG4gICAgICB0YXJnZXRUeXBlOiBcIm51bWJlclwiLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgYVVzZXJEZWZpbmVkVmFyaWFibGUubnVtYmVyVmFsdWVgLFxuICAgIH0sXG4gICAge1xuICAgICAgY29kZTogYGFVc2VyRGVmaW5lZFZhcmlhYmxlLnZhbHVlYCxcbiAgICAgIHR5cGU6IFwiZHluYW1pY1wiLFxuICAgICAgdGFyZ2V0VHlwZTogW1wibGlzdFwiLCBcInN0cmluZ1wiXSxcbiAgICAgIGV4cGVjdGVkQ29kZTogYGFVc2VyRGVmaW5lZFZhcmlhYmxlLmxpc3RWYWx1ZWAsXG4gICAgfSxcbiAgICB7XG4gICAgICBjb2RlOiBgYVVzZXJEZWZpbmVkVmFyaWFibGUudmFsdWVgLFxuICAgICAgdHlwZTogXCJkeW5hbWljXCIsXG4gICAgICB0YXJnZXRUeXBlOiBcImJvb2xcIixcbiAgICAgIGV4cGVjdGVkQ29kZTogYGFVc2VyRGVmaW5lZFZhcmlhYmxlLmJvb2xlYW5WYWx1ZWAsXG4gICAgfSxcbiAgXSkoXG4gICAgXCJzaG91bGQgdXNlIFRlcnJhZm9ybVZhcmlhYmxlcyBhY2Nlc3NvcnMgJXBcIixcbiAgICAoeyBjb2RlLCB0eXBlLCB0YXJnZXRUeXBlLCBleHBlY3RlZENvZGUgfSkgPT4ge1xuICAgICAgZXhwZWN0KFxuICAgICAgICBnZW5lcmF0ZUNvZGUoXG4gICAgICAgICAgY29lcmNlVHlwZShcbiAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgZXhwcmVzc2lvbmlmeShjb2RlKSxcbiAgICAgICAgICAgIHR5cGUgYXMgYW55LFxuICAgICAgICAgICAgdGFyZ2V0VHlwZSBhcyBhbnksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICkudG9FcXVhbChleHBlY3RlZENvZGUpO1xuICAgIH0sXG4gICk7XG5cbiAgaXQuZWFjaChbXG4gICAge1xuICAgICAgY29kZTogYGFVc2VyRGVmaW5lZFRlcnJhZm9ybUxvY2FsLnZhbHVlYCxcbiAgICAgIHR5cGU6IFwiZHluYW1pY1wiLFxuICAgICAgdGFyZ2V0VHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGV4cGVjdGVkQ29kZTogYGFVc2VyRGVmaW5lZFRlcnJhZm9ybUxvY2FsLnN0cmluZ1ZhbHVlYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IGBhVXNlckRlZmluZWRUZXJyYWZvcm1Mb2NhbC52YWx1ZWAsXG4gICAgICB0eXBlOiBcImR5bmFtaWNcIixcbiAgICAgIHRhcmdldFR5cGU6IFwibnVtYmVyXCIsXG4gICAgICBleHBlY3RlZENvZGU6IGBhVXNlckRlZmluZWRUZXJyYWZvcm1Mb2NhbC5udW1iZXJWYWx1ZWAsXG4gICAgfSxcbiAgICB7XG4gICAgICBjb2RlOiBgYVVzZXJEZWZpbmVkVGVycmFmb3JtTG9jYWwudmFsdWVgLFxuICAgICAgdHlwZTogXCJkeW5hbWljXCIsXG4gICAgICB0YXJnZXRUeXBlOiBbXCJsaXN0XCIsIFwic3RyaW5nXCJdLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgYVVzZXJEZWZpbmVkVGVycmFmb3JtTG9jYWwubGlzdFZhbHVlYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IGBhVXNlckRlZmluZWRUZXJyYWZvcm1Mb2NhbC52YWx1ZWAsXG4gICAgICB0eXBlOiBcImR5bmFtaWNcIixcbiAgICAgIHRhcmdldFR5cGU6IFwiYm9vbFwiLFxuICAgICAgZXhwZWN0ZWRDb2RlOiBgYVVzZXJEZWZpbmVkVGVycmFmb3JtTG9jYWwuYm9vbGVhblZhbHVlYCxcbiAgICB9LFxuICBdKShcbiAgICBcInNob3VsZCB1c2UgVGVycmFmb3JtTG9jYWwgYWNjZXNzb3JzICVwXCIsXG4gICAgKHsgY29kZSwgdHlwZSwgdGFyZ2V0VHlwZSwgZXhwZWN0ZWRDb2RlIH0pID0+IHtcbiAgICAgIGV4cGVjdChcbiAgICAgICAgZ2VuZXJhdGVDb2RlKFxuICAgICAgICAgIGNvZXJjZVR5cGUoXG4gICAgICAgICAgICBzY29wZSxcbiAgICAgICAgICAgIGV4cHJlc3Npb25pZnkoY29kZSksXG4gICAgICAgICAgICB0eXBlIGFzIGFueSxcbiAgICAgICAgICAgIHRhcmdldFR5cGUgYXMgYW55LFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApLnRvRXF1YWwoZXhwZWN0ZWRDb2RlKTtcbiAgICB9LFxuICApO1xufSk7XG4iXX0=
|