@cdktn/hcl2cdk 0.23.0-pre.38 → 0.23.0-pre.39

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 (85) hide show
  1. package/build/__tests__/coerceType.test.js +165 -0
  2. package/build/__tests__/expressionToTs.test.js +693 -0
  3. package/build/__tests__/expressions.test.js +415 -0
  4. package/build/__tests__/findExpressionType.test.js +105 -0
  5. package/build/__tests__/functions.test.js +605 -0
  6. package/build/__tests__/generation.test.js +45 -0
  7. package/build/__tests__/jsii-rosetta-workarounds.test.js +86 -0
  8. package/build/__tests__/partialCode.test.js +390 -0
  9. package/build/__tests__/terraformSchema.test.js +105 -0
  10. package/build/__tests__/testHelpers.js +16 -0
  11. package/build/coerceType.js +240 -0
  12. package/build/dynamic-blocks.js +44 -0
  13. package/build/expressions.js +633 -0
  14. package/build/function-bindings/functions.generated.js +1142 -0
  15. package/build/function-bindings/functions.js +73 -0
  16. package/build/generation.js +676 -0
  17. package/{lib → build}/index.d.ts +2 -2
  18. package/build/index.js +364 -0
  19. package/build/iteration.js +87 -0
  20. package/build/jsii-rosetta-workarounds.js +126 -0
  21. package/build/partialCode.js +116 -0
  22. package/build/provider.js +40 -0
  23. package/build/references.js +141 -0
  24. package/build/schema.js +81 -0
  25. package/build/telemetryAllowList.json +24 -0
  26. package/build/terraformSchema.js +136 -0
  27. package/build/types.js +3 -0
  28. package/build/utils.js +25 -0
  29. package/build/variables.js +172 -0
  30. package/package.json +8 -8
  31. package/tsconfig.json +4 -2
  32. package/lib/__tests__/coerceType.test.js +0 -165
  33. package/lib/__tests__/expressionToTs.test.js +0 -693
  34. package/lib/__tests__/expressions.test.js +0 -415
  35. package/lib/__tests__/findExpressionType.test.js +0 -105
  36. package/lib/__tests__/functions.test.js +0 -605
  37. package/lib/__tests__/generation.test.js +0 -45
  38. package/lib/__tests__/jsii-rosetta-workarounds.test.js +0 -86
  39. package/lib/__tests__/partialCode.test.js +0 -390
  40. package/lib/__tests__/terraformSchema.test.js +0 -105
  41. package/lib/__tests__/testHelpers.js +0 -16
  42. package/lib/coerceType.js +0 -240
  43. package/lib/dynamic-blocks.js +0 -44
  44. package/lib/expressions.js +0 -634
  45. package/lib/function-bindings/functions.generated.js +0 -1142
  46. package/lib/function-bindings/functions.js +0 -73
  47. package/lib/generation.js +0 -676
  48. package/lib/index.js +0 -364
  49. package/lib/iteration.js +0 -87
  50. package/lib/jsii-rosetta-workarounds.js +0 -126
  51. package/lib/partialCode.js +0 -116
  52. package/lib/provider.js +0 -40
  53. package/lib/references.js +0 -141
  54. package/lib/schema.js +0 -81
  55. package/lib/terraformSchema.js +0 -136
  56. package/lib/types.js +0 -3
  57. package/lib/utils.js +0 -25
  58. package/lib/variables.js +0 -172
  59. /package/{lib → build}/__tests__/coerceType.test.d.ts +0 -0
  60. /package/{lib → build}/__tests__/expressionToTs.test.d.ts +0 -0
  61. /package/{lib → build}/__tests__/expressions.test.d.ts +0 -0
  62. /package/{lib → build}/__tests__/findExpressionType.test.d.ts +0 -0
  63. /package/{lib → build}/__tests__/functions.test.d.ts +0 -0
  64. /package/{lib → build}/__tests__/generation.test.d.ts +0 -0
  65. /package/{lib → build}/__tests__/jsii-rosetta-workarounds.test.d.ts +0 -0
  66. /package/{lib → build}/__tests__/partialCode.test.d.ts +0 -0
  67. /package/{lib → build}/__tests__/terraformSchema.test.d.ts +0 -0
  68. /package/{lib → build}/__tests__/testHelpers.d.ts +0 -0
  69. /package/{lib → build}/coerceType.d.ts +0 -0
  70. /package/{lib → build}/dynamic-blocks.d.ts +0 -0
  71. /package/{lib → build}/expressions.d.ts +0 -0
  72. /package/{lib → build}/function-bindings/functions.d.ts +0 -0
  73. /package/{lib → build}/function-bindings/functions.generated.d.ts +0 -0
  74. /package/{lib → build}/generation.d.ts +0 -0
  75. /package/{lib → build}/iteration.d.ts +0 -0
  76. /package/{lib → build}/jsii-rosetta-workarounds.d.ts +0 -0
  77. /package/{lib → build}/partialCode.d.ts +0 -0
  78. /package/{lib → build}/provider.d.ts +0 -0
  79. /package/{lib → build}/references.d.ts +0 -0
  80. /package/{lib → build}/schema.d.ts +0 -0
  81. /package/{lib → build}/terraformSchema.d.ts +0 -0
  82. /package/{lib → build}/types.d.ts +0 -0
  83. /package/{lib → build}/utils.d.ts +0 -0
  84. /package/{lib → build}/variables.d.ts +0 -0
  85. /package/{lib → src}/telemetryAllowList.json +0 -0
@@ -1,73 +0,0 @@
1
- "use strict";
2
- /**
3
- * Copyright (c) HashiCorp, Inc.
4
- * SPDX-License-Identifier: MPL-2.0
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.tsFunctionsMap = exports.functionsMap = void 0;
8
- const functions_generated_1 = require("./functions.generated");
9
- exports.functionsMap = {
10
- ...functions_generated_1.functionsMapGenerated,
11
- bcrypt: {
12
- name: "bcrypt", // this one is not variadic anymore after we mapped it
13
- returnType: "string",
14
- parameters: [{ type: "string" }, { type: "number", optional: true }],
15
- },
16
- join: {
17
- name: "join",
18
- returnType: "string",
19
- parameters: [{ type: "string" }, { type: ["list", "string"] }],
20
- /**
21
- * Terraform supports join(separator, listA, listB)
22
- * wheras CDKTN only supports join(separator, list) (to make it simpler to use as JSII does not support variadic parameters)
23
- * and we'd need to convert this to join(separator, concat(listA, listB)) if multiple variadic args are passed
24
- */
25
- transformer: (fc) => {
26
- if (fc.children.length <= 2) {
27
- return fc; // just one child -> nothing to do
28
- }
29
- const concatFunction = {
30
- type: "function",
31
- meta: {
32
- name: "concat",
33
- expandedFinalArgument: fc.meta.expandedFinalArgument,
34
- nameRange: {},
35
- openParenRange: {},
36
- closeParenRange: {},
37
- argsRanges: [],
38
- },
39
- children: fc.children.slice(1),
40
- };
41
- return {
42
- type: "function",
43
- meta: {
44
- name: "join",
45
- },
46
- children: [
47
- fc.children[0], // the first parameter is the separator, so keep it as is
48
- concatFunction,
49
- ],
50
- };
51
- },
52
- },
53
- range: {
54
- name: "range",
55
- returnType: ["list", "string"], // TODO: Fn.range() currently returns string[] but should return number[] (according to functions.json)
56
- parameters: [
57
- { type: "number" },
58
- { type: "number" },
59
- { type: "number", optional: true },
60
- ],
61
- },
62
- lookup: {
63
- name: "lookup",
64
- returnType: "dynamic",
65
- parameters: [{ type: "dynamic" }, { type: "string" }, { type: "dynamic" }],
66
- },
67
- };
68
- exports.tsFunctionsMap = Object.entries(exports.functionsMap).reduce((acc, [name, fnInfo]) => {
69
- // Swap the names around
70
- acc[fnInfo.name] = { ...fnInfo, name: name };
71
- return acc;
72
- }, {});
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZnVuY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQUdILCtEQUE4RDtBQTJCakQsUUFBQSxZQUFZLEdBQWlDO0lBQ3hELEdBQUksMkNBQTZCO0lBRWpDLE1BQU0sRUFBRTtRQUNOLElBQUksRUFBRSxRQUFRLEVBQUUsc0RBQXNEO1FBQ3RFLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7S0FDckU7SUFDRCxJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUUsTUFBTTtRQUNaLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDOUQ7Ozs7V0FJRztRQUNILFdBQVcsRUFBRSxDQUFDLEVBQThCLEVBQUUsRUFBRTtZQUM5QyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM1QixPQUFPLEVBQUUsQ0FBQyxDQUFDLGtDQUFrQztZQUMvQyxDQUFDO1lBRUQsTUFBTSxjQUFjLEdBQUc7Z0JBQ3JCLElBQUksRUFBRSxVQUFVO2dCQUNoQixJQUFJLEVBQUU7b0JBQ0osSUFBSSxFQUFFLFFBQVE7b0JBQ2QscUJBQXFCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUI7b0JBQ3BELFNBQVMsRUFBRSxFQUFFO29CQUNiLGNBQWMsRUFBRSxFQUFFO29CQUNsQixlQUFlLEVBQUUsRUFBRTtvQkFDbkIsVUFBVSxFQUFFLEVBQUU7aUJBQ2Y7Z0JBQ0QsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUMvQixDQUFDO1lBRUYsT0FBTztnQkFDTCxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsSUFBSSxFQUFFO29CQUNKLElBQUksRUFBRSxNQUFNO2lCQUNiO2dCQUNELFFBQVEsRUFBRTtvQkFDUixFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLHlEQUF5RDtvQkFDekUsY0FBYztpQkFDZjthQUNGLENBQUM7UUFDSixDQUFDO0tBQ0Y7SUFDRCxLQUFLLEVBQUU7UUFDTCxJQUFJLEVBQUUsT0FBTztRQUNiLFVBQVUsRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRSx1R0FBdUc7UUFDdkksVUFBVSxFQUFFO1lBQ1YsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQ2xCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNsQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtTQUNuQztLQUNGO0lBQ0QsTUFBTSxFQUFFO1FBQ04sSUFBSSxFQUFFLFFBQVE7UUFDZCxVQUFVLEVBQUUsU0FBUztRQUNyQixVQUFVLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztLQUMzRTtDQUNGLENBQUM7QUFFVyxRQUFBLGNBQWMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLG9CQUFZLENBQUMsQ0FBQyxNQUFNLENBQy9ELENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUU7SUFDdEIsd0JBQXdCO0lBQ3hCLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDN0MsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLEVBQ0QsRUFBa0MsQ0FDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluYy5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4gKi9cblxuaW1wb3J0IHsgQXR0cmlidXRlVHlwZSB9IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuaW1wb3J0IHsgZnVuY3Rpb25zTWFwR2VuZXJhdGVkIH0gZnJvbSBcIi4vZnVuY3Rpb25zLmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgVEZFeHByZXNzaW9uU3ludGF4VHJlZSBhcyB0ZXggfSBmcm9tIFwiQGNka3RuL2hjbDJqc29uXCI7XG5cbnR5cGUgRnVuY3Rpb25DYWxsID0gYW55OyAvLyBUT0RPOiB0aGlzIHdpbGwgY29tZSBmcm9tIHRoZSB0eXBlcyBmb3IgaGNsMmpzb24gKGFrYSBmcm9tIHRoZSBUZXJyYWZvcm0gQVNUKVxuXG50eXBlIEZ1bmN0aW9uTWV0YSA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICByZXR1cm5UeXBlOiBBdHRyaWJ1dGVUeXBlO1xuICBwYXJhbWV0ZXJzOiB7XG4gICAgdHlwZTogQXR0cmlidXRlVHlwZTtcbiAgICBvcHRpb25hbD86IGJvb2xlYW47XG4gICAgdmFyaWFkaWM/OiBib29sZWFuO1xuICB9W107XG4gIC8qKlxuICAgKiBBbGxvd3MgdHJhbnNmb3JtaW5nIHRoZSBmdW5jdGlvbiBjYWxsIGJlZm9yZSBpdCBpcyBoYW5kbGVkLiBUaGlzIGlzIGN1cnJlbnRseSB1c2VkIHRvIGhhbmRsZVxuICAgKiBkaWZmZXJlbnQgQVBJcyBiZXR3ZWVuIFRGIHN1cHBvcnRpbmcgam9pbihzZXAsIGxpc3RBLCBsaXN0QikgYW5kIENES1ROIG9ubHkgc3VwcG9ydGluZyBqb2luKHNlcCwgbGlzdClcbiAgICogKGFzIHRoZSBhbHRlcm5hdGl2ZSBkdWUgdG8gSlNJSXMgbGFjayBvZiBzdXBwb3J0IGZvciB2YXJpYWRpYyBwYXJhbWV0ZXMgd291bGQgYmUgam9pbihzZXAsIGxpc3RzKSB3aGljaFxuICAgKiAgd291bGQgaGF2ZSBhIHdvcnNlIFVYIGFzIG1vc3Qgb2Z0ZW4ganVzdCBhIHNpbmdsZSBsaXN0IGlzIHBhc3NlZClcbiAgICogSW4gdGhlIGNhc2Ugb2Ygam9pbigpIHRoZSB0cmFuc2Zvcm1lciB3aWxsIGNvbnZlcnQgdGhlIGZ1bmN0aW9uIGNhbGwgdG8gam9pbihzZXAsIGNvbmNhdChsaXN0QSwgbGlzdEIpKVxuICAgKiBiZWZvcmUgaGFuZGxpbmcgaXRcbiAgICpcbiAgICogQ2F1dGlvbjogQmV3YXJlIG9mIGluZmluaXRlIHJlY3Vyc2lvbiBpZiB0aGUgcmV0dXJuZWQgZnVuY3Rpb24gY2FsbCBpcyB0byB0aGUgc2FtZSBmdW5jdGlvbiB0aGF0IGhhcyB0aGlzXG4gICAqIHRyYW5zZm9ybWVyLiBSZXR1cm4gdGhlIHNhbWUgaW5zdGFuY2Ugb2YgdGhlIHBhc3NlZCBmdW5jdGlvbkNhbGwgdG8gYnJlYWsgb3V0IG9mIHRoYXQgcmVjdXJzaW9uLlxuICAgKi9cbiAgdHJhbnNmb3JtZXI/OiAoZnVuY3Rpb25DYWxsOiBGdW5jdGlvbkNhbGwpID0+IEZ1bmN0aW9uQ2FsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBmdW5jdGlvbnNNYXA6IFJlY29yZDxzdHJpbmcsIEZ1bmN0aW9uTWV0YT4gPSB7XG4gIC4uLihmdW5jdGlvbnNNYXBHZW5lcmF0ZWQgYXMgYW55KSxcblxuICBiY3J5cHQ6IHtcbiAgICBuYW1lOiBcImJjcnlwdFwiLCAvLyB0aGlzIG9uZSBpcyBub3QgdmFyaWFkaWMgYW55bW9yZSBhZnRlciB3ZSBtYXBwZWQgaXRcbiAgICByZXR1cm5UeXBlOiBcInN0cmluZ1wiLFxuICAgIHBhcmFtZXRlcnM6IFt7IHR5cGU6IFwic3RyaW5nXCIgfSwgeyB0eXBlOiBcIm51bWJlclwiLCBvcHRpb25hbDogdHJ1ZSB9XSxcbiAgfSxcbiAgam9pbjoge1xuICAgIG5hbWU6IFwiam9pblwiLFxuICAgIHJldHVyblR5cGU6IFwic3RyaW5nXCIsXG4gICAgcGFyYW1ldGVyczogW3sgdHlwZTogXCJzdHJpbmdcIiB9LCB7IHR5cGU6IFtcImxpc3RcIiwgXCJzdHJpbmdcIl0gfV0sXG4gICAgLyoqXG4gICAgICogVGVycmFmb3JtIHN1cHBvcnRzIGpvaW4oc2VwYXJhdG9yLCBsaXN0QSwgbGlzdEIpXG4gICAgICogd2hlcmFzIENES1ROIG9ubHkgc3VwcG9ydHMgam9pbihzZXBhcmF0b3IsIGxpc3QpICh0byBtYWtlIGl0IHNpbXBsZXIgdG8gdXNlIGFzIEpTSUkgZG9lcyBub3Qgc3VwcG9ydCB2YXJpYWRpYyBwYXJhbWV0ZXJzKVxuICAgICAqIGFuZCB3ZSdkIG5lZWQgdG8gY29udmVydCB0aGlzIHRvIGpvaW4oc2VwYXJhdG9yLCBjb25jYXQobGlzdEEsIGxpc3RCKSkgaWYgbXVsdGlwbGUgdmFyaWFkaWMgYXJncyBhcmUgcGFzc2VkXG4gICAgICovXG4gICAgdHJhbnNmb3JtZXI6IChmYzogdGV4LkZ1bmN0aW9uQ2FsbEV4cHJlc3Npb24pID0+IHtcbiAgICAgIGlmIChmYy5jaGlsZHJlbi5sZW5ndGggPD0gMikge1xuICAgICAgICByZXR1cm4gZmM7IC8vIGp1c3Qgb25lIGNoaWxkIC0+IG5vdGhpbmcgdG8gZG9cbiAgICAgIH1cblxuICAgICAgY29uc3QgY29uY2F0RnVuY3Rpb24gPSB7XG4gICAgICAgIHR5cGU6IFwiZnVuY3Rpb25cIixcbiAgICAgICAgbWV0YToge1xuICAgICAgICAgIG5hbWU6IFwiY29uY2F0XCIsXG4gICAgICAgICAgZXhwYW5kZWRGaW5hbEFyZ3VtZW50OiBmYy5tZXRhLmV4cGFuZGVkRmluYWxBcmd1bWVudCxcbiAgICAgICAgICBuYW1lUmFuZ2U6IHt9LFxuICAgICAgICAgIG9wZW5QYXJlblJhbmdlOiB7fSxcbiAgICAgICAgICBjbG9zZVBhcmVuUmFuZ2U6IHt9LFxuICAgICAgICAgIGFyZ3NSYW5nZXM6IFtdLFxuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogZmMuY2hpbGRyZW4uc2xpY2UoMSksXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcImZ1bmN0aW9uXCIsXG4gICAgICAgIG1ldGE6IHtcbiAgICAgICAgICBuYW1lOiBcImpvaW5cIixcbiAgICAgICAgfSxcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICBmYy5jaGlsZHJlblswXSwgLy8gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgc2VwYXJhdG9yLCBzbyBrZWVwIGl0IGFzIGlzXG4gICAgICAgICAgY29uY2F0RnVuY3Rpb24sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgIH0sXG4gIH0sXG4gIHJhbmdlOiB7XG4gICAgbmFtZTogXCJyYW5nZVwiLFxuICAgIHJldHVyblR5cGU6IFtcImxpc3RcIiwgXCJzdHJpbmdcIl0sIC8vIFRPRE86IEZuLnJhbmdlKCkgY3VycmVudGx5IHJldHVybnMgc3RyaW5nW10gYnV0IHNob3VsZCByZXR1cm4gbnVtYmVyW10gKGFjY29yZGluZyB0byBmdW5jdGlvbnMuanNvbilcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7IHR5cGU6IFwibnVtYmVyXCIgfSxcbiAgICAgIHsgdHlwZTogXCJudW1iZXJcIiB9LFxuICAgICAgeyB0eXBlOiBcIm51bWJlclwiLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgIF0sXG4gIH0sXG4gIGxvb2t1cDoge1xuICAgIG5hbWU6IFwibG9va3VwXCIsXG4gICAgcmV0dXJuVHlwZTogXCJkeW5hbWljXCIsXG4gICAgcGFyYW1ldGVyczogW3sgdHlwZTogXCJkeW5hbWljXCIgfSwgeyB0eXBlOiBcInN0cmluZ1wiIH0sIHsgdHlwZTogXCJkeW5hbWljXCIgfV0sXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgdHNGdW5jdGlvbnNNYXAgPSBPYmplY3QuZW50cmllcyhmdW5jdGlvbnNNYXApLnJlZHVjZShcbiAgKGFjYywgW25hbWUsIGZuSW5mb10pID0+IHtcbiAgICAvLyBTd2FwIHRoZSBuYW1lcyBhcm91bmRcbiAgICBhY2NbZm5JbmZvLm5hbWVdID0geyAuLi5mbkluZm8sIG5hbWU6IG5hbWUgfTtcbiAgICByZXR1cm4gYWNjO1xuICB9LFxuICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBGdW5jdGlvbk1ldGE+LFxuKTtcbiJdfQ==