cdktn 0.23.1 → 0.23.2

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 (125) hide show
  1. package/.jsii +1560 -1559
  2. package/.spec.swcrc +22 -0
  3. package/jest.config.js +18 -15
  4. package/lib/_tokens.js +1 -1
  5. package/lib/annotations.js +2 -2
  6. package/lib/app.js +2 -2
  7. package/lib/aspect.js +2 -2
  8. package/lib/backends/azurerm-backend.js +3 -3
  9. package/lib/backends/cloud-backend.js +5 -5
  10. package/lib/backends/consul-backend.js +3 -3
  11. package/lib/backends/cos-backend.js +3 -3
  12. package/lib/backends/gcs-backend.js +3 -3
  13. package/lib/backends/http-backend.js +3 -3
  14. package/lib/backends/index.js +1 -1
  15. package/lib/backends/local-backend.js +3 -3
  16. package/lib/backends/oss-backend.js +3 -3
  17. package/lib/backends/pg-backend.js +3 -3
  18. package/lib/backends/remote-backend.js +5 -5
  19. package/lib/backends/s3-backend.js +3 -3
  20. package/lib/backends/swift-backend.js +3 -3
  21. package/lib/complex-computed-list.js +24 -24
  22. package/lib/errors.js +1 -1
  23. package/lib/features.js +1 -1
  24. package/lib/functions/helpers.js +1 -1
  25. package/lib/functions/terraform-functions.generated.js +2 -2
  26. package/lib/hcl/render.js +1 -1
  27. package/lib/importable-resource.js +2 -2
  28. package/lib/index.js +1 -1
  29. package/lib/manifest.js +2 -2
  30. package/lib/private/fs.d.ts +20 -5
  31. package/lib/private/fs.js +43 -69
  32. package/lib/private/unique.js +1 -1
  33. package/lib/resource.js +2 -2
  34. package/lib/runtime.js +1 -1
  35. package/lib/synthesize/index.js +1 -1
  36. package/lib/synthesize/synthesizer.js +1 -1
  37. package/lib/synthesize/types.js +1 -1
  38. package/lib/terraform-addressable.js +1 -1
  39. package/lib/terraform-asset.js +2 -2
  40. package/lib/terraform-backend.js +2 -2
  41. package/lib/terraform-conditions.js +1 -1
  42. package/lib/terraform-count.js +2 -2
  43. package/lib/terraform-data-resource.js +2 -2
  44. package/lib/terraform-data-source.js +2 -2
  45. package/lib/terraform-dependable.js +1 -1
  46. package/lib/terraform-dynamic-block.js +1 -1
  47. package/lib/terraform-dynamic-expression.js +1 -1
  48. package/lib/terraform-element.js +2 -2
  49. package/lib/terraform-functions.js +2 -2
  50. package/lib/terraform-hcl-module.js +2 -2
  51. package/lib/terraform-iterator.js +6 -6
  52. package/lib/terraform-local.js +2 -2
  53. package/lib/terraform-module-asset.js +1 -1
  54. package/lib/terraform-module.js +2 -2
  55. package/lib/terraform-operators.js +2 -2
  56. package/lib/terraform-output.js +2 -2
  57. package/lib/terraform-provider.js +2 -2
  58. package/lib/terraform-provisioner.js +2 -2
  59. package/lib/terraform-remote-state.js +2 -2
  60. package/lib/terraform-resource-targets.js +2 -2
  61. package/lib/terraform-resource.js +2 -2
  62. package/lib/terraform-stack.js +2 -2
  63. package/lib/terraform-variable.js +3 -3
  64. package/lib/testing/adapters/jest.js +1 -1
  65. package/lib/testing/index.js +2 -2
  66. package/lib/testing/matchers.js +2 -2
  67. package/lib/tfExpression.js +1 -1
  68. package/lib/tokens/index.js +1 -1
  69. package/lib/tokens/lazy.js +3 -3
  70. package/lib/tokens/private/dependency.js +1 -1
  71. package/lib/tokens/private/encoding.js +1 -1
  72. package/lib/tokens/private/intrinsic.js +1 -1
  73. package/lib/tokens/private/resolve.js +1 -1
  74. package/lib/tokens/private/stack-trace.js +1 -1
  75. package/lib/tokens/private/token-map.js +1 -1
  76. package/lib/tokens/private/uniqueid.js +1 -1
  77. package/lib/tokens/resolvable.js +3 -3
  78. package/lib/tokens/string-fragments.js +2 -2
  79. package/lib/tokens/token.js +3 -3
  80. package/lib/tsconfig.tsbuildinfo +1 -0
  81. package/lib/upgrade-id-aspect.js +2 -2
  82. package/lib/util.js +1 -1
  83. package/lib/validateEnvironment.js +1 -1
  84. package/lib/validations/index.js +1 -1
  85. package/lib/validations/validate-binary-version.js +1 -1
  86. package/lib/validations/validate-provider-presence.js +1 -1
  87. package/lib/validations/validate-terraform-version.js +1 -1
  88. package/node_modules/fflate/CHANGELOG.md +115 -0
  89. package/node_modules/{yazl → fflate}/LICENSE +3 -3
  90. package/node_modules/fflate/README.md +558 -0
  91. package/node_modules/fflate/esm/browser.d.ts +1501 -0
  92. package/node_modules/fflate/esm/browser.js +2665 -0
  93. package/node_modules/fflate/esm/index.d.mts +1501 -0
  94. package/node_modules/fflate/esm/index.mjs +2679 -0
  95. package/node_modules/fflate/lib/browser.cjs +2688 -0
  96. package/node_modules/fflate/lib/browser.d.cts +1501 -0
  97. package/node_modules/fflate/lib/index.cjs +2668 -0
  98. package/node_modules/fflate/lib/index.d.ts +1501 -0
  99. package/node_modules/fflate/lib/node-worker.cjs +32 -0
  100. package/node_modules/fflate/lib/node.cjs +2700 -0
  101. package/node_modules/fflate/lib/node.d.cts +1501 -0
  102. package/node_modules/fflate/lib/worker.cjs +20 -0
  103. package/node_modules/fflate/package.json +127 -0
  104. package/node_modules/fflate/umd/index.js +1 -0
  105. package/package.json +17 -10
  106. package/tsconfig.json +6 -3
  107. package/tsconfig.test.json +12 -0
  108. package/lib/testing/__tests__/matchers.test.d.ts +0 -1
  109. package/lib/testing/__tests__/matchers.test.js +0 -205
  110. package/lib/testing/adapters/__tests__/index.test.d.ts +0 -1
  111. package/lib/testing/adapters/__tests__/index.test.js +0 -67
  112. package/lib/testing/adapters/__tests__/jest.test.d.ts +0 -1
  113. package/lib/testing/adapters/__tests__/jest.test.js +0 -41
  114. package/node_modules/buffer-crc32/LICENSE +0 -19
  115. package/node_modules/buffer-crc32/README.md +0 -55
  116. package/node_modules/buffer-crc32/dist/index.cjs +0 -306
  117. package/node_modules/buffer-crc32/dist/index.d.cts +0 -35
  118. package/node_modules/buffer-crc32/dist/index.d.mts +0 -35
  119. package/node_modules/buffer-crc32/dist/index.mjs +0 -304
  120. package/node_modules/buffer-crc32/index.d.ts +0 -35
  121. package/node_modules/buffer-crc32/package.json +0 -54
  122. package/node_modules/yazl/README.md +0 -457
  123. package/node_modules/yazl/index.js +0 -826
  124. package/node_modules/yazl/package.json +0 -34
  125. package/tsconfig.tsbuildinfo +0 -1
@@ -45,5 +45,5 @@ class TerraformSelf {
45
45
  }
46
46
  exports.TerraformSelf = TerraformSelf;
47
47
  _a = JSII_RTTI_SYMBOL_1;
48
- TerraformSelf[_a] = { fqn: "cdktn.TerraformSelf", version: "0.23.1" };
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLXByb3Zpc2lvbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVycmFmb3JtLXByb3Zpc2lvbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyxpREFBcUM7QUFDckMsMENBQXVDO0FBQ3ZDLGlDQUFtQztBQXVWbkM7Ozs7O0dBS0c7QUFDSCxNQUFhLGFBQWE7SUFDaEIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBQVc7UUFDekMsT0FBTyxRQUFRLEdBQUc7YUFDZixLQUFLLENBQUMsR0FBRyxDQUFDO2FBQ1YsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFBLGdCQUFTLEVBQUMsQ0FBQyxDQUFDLENBQUM7YUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBVztRQUNqQyxPQUFPLGFBQUssQ0FBQyxRQUFRLENBQUMsSUFBQSxrQkFBRyxFQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBVztRQUNqQyxPQUFPLGFBQUssQ0FBQyxRQUFRLENBQUMsSUFBQSxrQkFBRyxFQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBVztRQUM5QixPQUFPLGFBQUssQ0FBQyxLQUFLLENBQUMsSUFBQSxrQkFBRyxFQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQzs7QUE5Qkgsc0NBK0JDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IHJlZiB9IGZyb20gXCIuL3RmRXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiLi90b2tlbnMvdG9rZW5cIjtcbmltcG9ydCB7IHNuYWtlQ2FzZSB9IGZyb20gXCIuL3V0aWxcIjtcbi8qKlxuICogTW9zdCBwcm92aXNpb25lcnMgcmVxdWlyZSBhY2Nlc3MgdG8gdGhlIHJlbW90ZSByZXNvdXJjZSB2aWEgU1NIIG9yIFdpblJNIGFuZCBleHBlY3QgYSBuZXN0ZWQgY29ubmVjdGlvbiBibG9jayB3aXRoIGRldGFpbHMgYWJvdXQgaG93IHRvIGNvbm5lY3QuXG4gKlxuICogUmVmZXIgdG8ge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLmhhc2hpY29ycC5jb20vdGVycmFmb3JtL2xhbmd1YWdlL3Jlc291cmNlcy9wcm92aXNpb25lcnMvY29ubmVjdGlvbiBjb25uZWN0aW9ufVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNTSFByb3Zpc2lvbmVyQ29ubmVjdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgY29ubmVjdGlvbiB0eXBlLiBWYWxpZCB2YWx1ZXMgYXJlIFwic3NoXCIgYW5kIFwid2lucm1cIi5cbiAgICogUHJvdmlzaW9uZXJzIHR5cGljYWxseSBhc3N1bWUgdGhhdCB0aGUgcmVtb3RlIHN5c3RlbSBydW5zIE1pY3Jvc29mdCBXaW5kb3dzIHdoZW4gdXNpbmcgV2luUk0uXG4gICAqIEJlaGF2aW9ycyBiYXNlZCBvbiB0aGUgU1NIIHRhcmdldF9wbGF0Zm9ybSB3aWxsIGZvcmNlIFdpbmRvd3Mtc3BlY2lmaWMgYmVoYXZpb3IgZm9yIFdpblJNLCB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZC5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IFwic3NoXCI7XG5cbiAgLyoqXG4gICAqIFRoZSB1c2VyIHRvIHVzZSBmb3IgdGhlIGNvbm5lY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IHJvb3RcbiAgICovXG4gIHJlYWRvbmx5IHVzZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXNzd29yZCB0byB1c2UgZm9yIHRoZSBjb25uZWN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFzc3dvcmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhZGRyZXNzIG9mIHRoZSByZXNvdXJjZSB0byBjb25uZWN0IHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgaG9zdDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9ydCB0byBjb25uZWN0IHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCAyMlxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHRpbWVvdXQgdG8gd2FpdCBmb3IgdGhlIGNvbm5lY3Rpb24gdG8gYmVjb21lIGF2YWlsYWJsZS5cbiAgICogU2hvdWxkIGJlIHByb3ZpZGVkIGFzIGEgc3RyaW5nIChlLmcuLCBcIjMwc1wiIG9yIFwiNW1cIi4pXG4gICAqXG4gICAqIEBkZWZhdWx0IDVtXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB1c2VkIHRvIGNvcHkgc2NyaXB0cyBtZWFudCBmb3IgcmVtb3RlIGV4ZWN1dGlvbi5cbiAgICogUmVmZXIgdG8ge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLmhhc2hpY29ycC5jb20vdGVycmFmb3JtL2xhbmd1YWdlL3Jlc291cmNlcy9wcm92aXNpb25lcnMvY29ubmVjdGlvbiNob3ctcHJvdmlzaW9uZXJzLWV4ZWN1dGUtcmVtb3RlLXNjcmlwdHMgSG93IFByb3Zpc2lvbmVycyBFeGVjdXRlIFJlbW90ZSBTY3JpcHRzIGJlbG93IGZvciBtb3JlIGRldGFpbHN9XG4gICAqL1xuICByZWFkb25seSBzY3JpcHRQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudHMgb2YgYW4gU1NIIGtleSB0byB1c2UgZm9yIHRoZSBjb25uZWN0aW9uLlxuICAgKiBUaGVzZSBjYW4gYmUgbG9hZGVkIGZyb20gYSBmaWxlIG9uIGRpc2sgdXNpbmcgdGhlIGZpbGUgZnVuY3Rpb24uXG4gICAqIFRoaXMgdGFrZXMgcHJlZmVyZW5jZSBvdmVyIHBhc3N3b3JkIGlmIHByb3ZpZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJpdmF0ZUtleT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNvbnRlbnRzIG9mIGEgc2lnbmVkIENBIENlcnRpZmljYXRlLlxuICAgKiBUaGUgY2VydGlmaWNhdGUgYXJndW1lbnQgbXVzdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYSBwcml2YXRlX2tleS5cbiAgICogVGhlc2UgY2FuIGJlIGxvYWRlZCBmcm9tIGEgZmlsZSBvbiBkaXNrIHVzaW5nIHRoZSB0aGUgZmlsZSBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGNlcnRpZmljYXRlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSB1c2luZyBzc2gtYWdlbnQgdG8gYXV0aGVudGljYXRlLlxuICAgKiBPbiBXaW5kb3dzIHRoZSBvbmx5IHN1cHBvcnRlZCBTU0ggYXV0aGVudGljYXRpb24gYWdlbnQgaXMgUGFnZWFudC5cbiAgICovXG4gIHJlYWRvbmx5IGFnZW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJlZmVycmVkIGlkZW50aXR5IGZyb20gdGhlIHNzaCBhZ2VudCBmb3IgYXV0aGVudGljYXRpb24uXG4gICAqL1xuICByZWFkb25seSBhZ2VudElkZW50aXR5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcHVibGljIGtleSBmcm9tIHRoZSByZW1vdGUgaG9zdCBvciB0aGUgc2lnbmluZyBDQSwgdXNlZCB0byB2ZXJpZnkgdGhlIGNvbm5lY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBob3N0S2V5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IHBsYXRmb3JtIHRvIGNvbm5lY3QgdG8uXG4gICAqIFZhbGlkIHZhbHVlcyBhcmUgXCJ3aW5kb3dzXCIgYW5kIFwidW5peFwiLlxuICAgKiBJZiB0aGUgcGxhdGZvcm0gaXMgc2V0IHRvIHdpbmRvd3MsIHRoZSBkZWZhdWx0IHNjcmlwdF9wYXRoIGlzIGM6XFx3aW5kb3dzXFx0ZW1wXFx0ZXJyYWZvcm1fJVJBTkQlLmNtZCwgYXNzdW1pbmcgdGhlIFNTSCBkZWZhdWx0IHNoZWxsIGlzIGNtZC5leGUuXG4gICAqIElmIHRoZSBTU0ggZGVmYXVsdCBzaGVsbCBpcyBQb3dlclNoZWxsLCBzZXQgc2NyaXB0X3BhdGggdG8gXCJjOi93aW5kb3dzL3RlbXAvdGVycmFmb3JtXyVSQU5EJS5wczFcIlxuICAgKiBAZGVmYXVsdCB1bml4XG4gICAqL1xuICByZWFkb25seSB0YXJnZXRQbGF0Zm9ybT86IFwidW5peFwiIHwgXCJ3aW5kb3dzXCI7XG5cbiAgLyoqXG4gICAqIFNldHRpbmcgdGhpcyBlbmFibGVzIHRoZSBiYXN0aW9uIEhvc3QgY29ubmVjdGlvbi5cbiAgICogVGhlIHByb3Zpc2lvbmVyIHdpbGwgY29ubmVjdCB0byBiYXN0aW9uX2hvc3QgZmlyc3QsIGFuZCB0aGVuIGNvbm5lY3QgZnJvbSB0aGVyZSB0byBob3N0LlxuICAgKi9cbiAgcmVhZG9ubHkgYmFzdGlvbkhvc3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwdWJsaWMga2V5IGZyb20gdGhlIHJlbW90ZSBob3N0IG9yIHRoZSBzaWduaW5nIENBLCB1c2VkIHRvIHZlcmlmeSB0aGUgaG9zdCBjb25uZWN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYmFzdGlvbkhvc3RLZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwb3J0IHRvIHVzZSBjb25uZWN0IHRvIHRoZSBiYXN0aW9uIGhvc3QuXG4gICAqL1xuICByZWFkb25seSBiYXN0aW9uUG9ydD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHVzZXIgZm9yIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBiYXN0aW9uIGhvc3QuXG4gICAqL1xuICByZWFkb25seSBiYXN0aW9uVXNlcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhc3N3b3JkIHRvIHVzZSBmb3IgdGhlIGJhc3Rpb24gaG9zdC5cbiAgICovXG4gIHJlYWRvbmx5IGJhc3Rpb25QYXNzd29yZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNvbnRlbnRzIG9mIGFuIFNTSCBrZXkgZmlsZSB0byB1c2UgZm9yIHRoZSBiYXN0aW9uIGhvc3QuXG4gICAqIFRoZXNlIGNhbiBiZSBsb2FkZWQgZnJvbSBhIGZpbGUgb24gZGlzayB1c2luZyB0aGUgZmlsZSBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGJhc3Rpb25Qcml2YXRlS2V5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudHMgb2YgYSBzaWduZWQgQ0EgQ2VydGlmaWNhdGUuXG4gICAqIFRoZSBjZXJ0aWZpY2F0ZSBhcmd1bWVudCBtdXN0IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBhIGJhc3Rpb25fcHJpdmF0ZV9rZXkuXG4gICAqIFRoZXNlIGNhbiBiZSBsb2FkZWQgZnJvbSBhIGZpbGUgb24gZGlzayB1c2luZyB0aGUgdGhlIGZpbGUgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBiYXN0aW9uQ2VydGlmaWNhdGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzc2ggY29ubmVjdGlvbiBhbHNvIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgZmllbGRzIHRvIGZhY2lsaXRhdGUgY29ubmVjdGlvbnMgYnkgU1NIIG92ZXIgSFRUUCBwcm94eS5cbiAgICovXG4gIHJlYWRvbmx5IHByb3h5U2NoZW1lPzogXCJodHRwXCIgfCBcImh0dHBzXCI7XG5cbiAgLyoqXG4gICAqIFNldHRpbmcgdGhpcyBlbmFibGVzIHRoZSBTU0ggb3ZlciBIVFRQIGNvbm5lY3Rpb24uXG4gICAqIFRoaXMgaG9zdCB3aWxsIGJlIGNvbm5lY3RlZCB0byBmaXJzdCwgYW5kIHRoZW4gdGhlIGhvc3Qgb3IgYmFzdGlvbl9ob3N0IGNvbm5lY3Rpb24gd2lsbCBiZSBtYWRlIGZyb20gdGhlcmUuXG4gICAqL1xuICByZWFkb25seSBwcm94eUhvc3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwb3J0IHRvIHVzZSBjb25uZWN0IHRvIHRoZSBwcm94eSBob3N0LlxuICAgKi9cbiAgcmVhZG9ubHkgcHJveHlQb3J0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgdXNlcm5hbWUgdG8gdXNlIGNvbm5lY3QgdG8gdGhlIHByaXZhdGUgcHJveHkgaG9zdC5cbiAgICogVGhpcyBhcmd1bWVudCBzaG91bGQgYmUgc3BlY2lmaWVkIG9ubHkgaWYgYXV0aGVudGljYXRpb24gaXMgcmVxdWlyZWQgZm9yIHRoZSBIVFRQIFByb3h5IHNlcnZlci5cbiAgICovXG4gIHJlYWRvbmx5IHByb3h5VXNlck5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXNzd29yZCB0byB1c2UgY29ubmVjdCB0byB0aGUgcHJpdmF0ZSBwcm94eSBob3N0LlxuICAgKiBUaGlzIGFyZ3VtZW50IHNob3VsZCBiZSBzcGVjaWZpZWQgb25seSBpZiBhdXRoZW50aWNhdGlvbiBpcyByZXF1aXJlZCBmb3IgdGhlIEhUVFAgUHJveHkgc2VydmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJveHlVc2VyUGFzc3dvcmQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTW9zdCBwcm92aXNpb25lcnMgcmVxdWlyZSBhY2Nlc3MgdG8gdGhlIHJlbW90ZSByZXNvdXJjZSB2aWEgU1NIIG9yIFdpblJNIGFuZCBleHBlY3QgYSBuZXN0ZWQgY29ubmVjdGlvbiBibG9jayB3aXRoIGRldGFpbHMgYWJvdXQgaG93IHRvIGNvbm5lY3QuXG4gKlxuICogU2VlIHtAbGluayBodHRwczovL2RldmVsb3Blci5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9sYW5ndWFnZS9yZXNvdXJjZXMvcHJvdmlzaW9uZXJzL2Nvbm5lY3Rpb24gY29ubmVjdGlvbn1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXaW5ybVByb3Zpc2lvbmVyQ29ubmVjdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgY29ubmVjdGlvbiB0eXBlLiBWYWxpZCB2YWx1ZXMgYXJlIFwic3NoXCIgYW5kIFwid2lucm1cIi5cbiAgICogUHJvdmlzaW9uZXJzIHR5cGljYWxseSBhc3N1bWUgdGhhdCB0aGUgcmVtb3RlIHN5c3RlbSBydW5zIE1pY3Jvc29mdCBXaW5kb3dzIHdoZW4gdXNpbmcgV2luUk0uXG4gICAqIEJlaGF2aW9ycyBiYXNlZCBvbiB0aGUgU1NIIHRhcmdldF9wbGF0Zm9ybSB3aWxsIGZvcmNlIFdpbmRvd3Mtc3BlY2lmaWMgYmVoYXZpb3IgZm9yIFdpblJNLCB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZC5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IFwid2lucm1cIjtcblxuICAvKipcbiAgICogVGhlIHVzZXIgdG8gdXNlIGZvciB0aGUgY29ubmVjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgcm9vdFxuICAgKi9cbiAgcmVhZG9ubHkgdXNlcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhc3N3b3JkIHRvIHVzZSBmb3IgdGhlIGNvbm5lY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBwYXNzd29yZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFkZHJlc3Mgb2YgdGhlIHJlc291cmNlIHRvIGNvbm5lY3QgdG8uXG4gICAqL1xuICByZWFkb25seSBob3N0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwb3J0IHRvIGNvbm5lY3QgdG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IDIyXG4gICAqL1xuICByZWFkb25seSBwb3J0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZW91dCB0byB3YWl0IGZvciB0aGUgY29ubmVjdGlvbiB0byBiZWNvbWUgYXZhaWxhYmxlLlxuICAgKiBTaG91bGQgYmUgcHJvdmlkZWQgYXMgYSBzdHJpbmcgKGUuZy4sIFwiMzBzXCIgb3IgXCI1bVwiLilcbiAgICpcbiAgICogQGRlZmF1bHQgNW1cbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHVzZWQgdG8gY29weSBzY3JpcHRzIG1lYW50IGZvciByZW1vdGUgZXhlY3V0aW9uLlxuICAgKiBSZWZlciB0byB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIuaGFzaGljb3JwLmNvbS90ZXJyYWZvcm0vbGFuZ3VhZ2UvcmVzb3VyY2VzL3Byb3Zpc2lvbmVycy9jb25uZWN0aW9uI2hvdy1wcm92aXNpb25lcnMtZXhlY3V0ZS1yZW1vdGUtc2NyaXB0cyBIb3cgUHJvdmlzaW9uZXJzIEV4ZWN1dGUgUmVtb3RlIFNjcmlwdHMgYmVsb3cgZm9yIG1vcmUgZGV0YWlsc31cbiAgICovXG4gIHJlYWRvbmx5IHNjcmlwdFBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldCB0byB0cnVlIHRvIGNvbm5lY3QgdXNpbmcgSFRUUFMgaW5zdGVhZCBvZiBIVFRQLlxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gdHJ1ZSB0byBza2lwIHZhbGlkYXRpbmcgdGhlIEhUVFBTIGNlcnRpZmljYXRlIGNoYWluLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zZWN1cmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gdHJ1ZSB0byB1c2UgTlRMTSBhdXRoZW50aWNhdGlvbiByYXRoZXIgdGhhbiBkZWZhdWx0IChiYXNpYyBhdXRoZW50aWNhdGlvbiksIHJlbW92aW5nIHRoZSByZXF1aXJlbWVudCBmb3IgYmFzaWMgYXV0aGVudGljYXRpb24gdG8gYmUgZW5hYmxlZCB3aXRoaW4gdGhlIHRhcmdldCBndWVzdC5cbiAgICogUmVmZXIgdG8gQXV0aGVudGljYXRpb24gZm9yIFJlbW90ZSBDb25uZWN0aW9ucyBpbiB0aGUgV2luZG93cyBBcHAgRGV2ZWxvcG1lbnQgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlTnRsbT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBDQSBjZXJ0aWZpY2F0ZSB0byB2YWxpZGF0ZSBhZ2FpbnN0LlxuICAgKi9cbiAgcmVhZG9ubHkgY2FjZXJ0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBmaWxlIHByb3Zpc2lvbmVyIGNvcGllcyBmaWxlcyBvciBkaXJlY3RvcmllcyBmcm9tIHRoZSBtYWNoaW5lIHJ1bm5pbmcgVGVycmFmb3JtIHRvIHRoZSBuZXdseSBjcmVhdGVkIHJlc291cmNlLlxuICogVGhlIGZpbGUgcHJvdmlzaW9uZXIgc3VwcG9ydHMgYm90aCBzc2ggYW5kIHdpbnJtIHR5cGUgY29ubmVjdGlvbnMuXG4gKlxuICogU2VlIHtAbGluayBodHRwczovL2RldmVsb3Blci5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9sYW5ndWFnZS9yZXNvdXJjZXMvcHJvdmlzaW9uZXJzL2ZpbGUgZmlsZX1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlUHJvdmlzaW9uZXIge1xuICByZWFkb25seSB0eXBlOiBcImZpbGVcIjtcbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgZmlsZSBvciBkaXJlY3RvcnkuIFNwZWNpZnkgaXQgZWl0aGVyIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IG9yIGFzIGFuIGFic29sdXRlIHBhdGguXG4gICAqIFRoaXMgYXJndW1lbnQgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggY29udGVudC5cbiAgICovXG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0IGNvbnRlbnQgdG8gY29weSBvbiB0aGUgZGVzdGluYXRpb24uXG4gICAqIElmIGRlc3RpbmF0aW9uIGlzIGEgZmlsZSwgdGhlIGNvbnRlbnQgd2lsbCBiZSB3cml0dGVuIG9uIHRoYXQgZmlsZS5cbiAgICogSW4gY2FzZSBvZiBhIGRpcmVjdG9yeSwgYSBmaWxlIG5hbWVkIHRmLWZpbGUtY29udGVudCBpcyBjcmVhdGVkIGluc2lkZSB0aGF0IGRpcmVjdG9yeS5cbiAgICogV2UgcmVjb21tZW5kIHVzaW5nIGEgZmlsZSBhcyB0aGUgZGVzdGluYXRpb24gd2hlbiB1c2luZyBjb250ZW50LlxuICAgKiBUaGlzIGFyZ3VtZW50IGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIHNvdXJjZS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBkZXN0aW5hdGlvbiBwYXRoIHRvIHdyaXRlIHRvIG9uIHRoZSByZW1vdGUgc3lzdGVtLlxuICAgKiBTZWUgRGVzdGluYXRpb24gUGF0aHMgYmVsb3cgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqL1xuICByZWFkb25seSBjb250ZW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNb3N0IHByb3Zpc2lvbmVycyByZXF1aXJlIGFjY2VzcyB0byB0aGUgcmVtb3RlIHJlc291cmNlIHZpYSBTU0ggb3IgV2luUk0gYW5kIGV4cGVjdCBhIG5lc3RlZCBjb25uZWN0aW9uIGJsb2NrIHdpdGggZGV0YWlscyBhYm91dCBob3cgdG8gY29ubmVjdC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbm5lY3Rpb24/OiBTU0hQcm92aXNpb25lckNvbm5lY3Rpb24gfCBXaW5ybVByb3Zpc2lvbmVyQ29ubmVjdGlvbjtcbn1cblxuLyoqXG4gKiBUaGUgbG9jYWwtZXhlYyBwcm92aXNpb25lciBpbnZva2VzIGEgbG9jYWwgZXhlY3V0YWJsZSBhZnRlciBhIHJlc291cmNlIGlzIGNyZWF0ZWQuXG4gKiBUaGlzIGludm9rZXMgYSBwcm9jZXNzIG9uIHRoZSBtYWNoaW5lIHJ1bm5pbmcgVGVycmFmb3JtLCBub3Qgb24gdGhlIHJlc291cmNlLlxuICpcbiAqIFNlZSB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIuaGFzaGljb3JwLmNvbS90ZXJyYWZvcm0vbGFuZ3VhZ2UvcmVzb3VyY2VzL3Byb3Zpc2lvbmVycy9sb2NhbC1leGVjIGxvY2FsLWV4ZWN9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYWxFeGVjUHJvdmlzaW9uZXIge1xuICByZWFkb25seSB0eXBlOiBcImxvY2FsLWV4ZWNcIjtcbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS5cbiAgICogSXQgY2FuIGJlIHByb3ZpZGVkIGFzIGEgcmVsYXRpdmUgcGF0aCB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvciBhcyBhbiBhYnNvbHV0ZSBwYXRoLlxuICAgKiBJdCBpcyBldmFsdWF0ZWQgaW4gYSBzaGVsbCwgYW5kIGNhbiB1c2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIG9yIFRlcnJhZm9ybSB2YXJpYWJsZXMuXG4gICAqL1xuICByZWFkb25seSBjb21tYW5kOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiBwcm92aWRlZCwgc3BlY2lmaWVzIHRoZSB3b3JraW5nIGRpcmVjdG9yeSB3aGVyZSBjb21tYW5kIHdpbGwgYmUgZXhlY3V0ZWQuXG4gICAqIEl0IGNhbiBiZSBwcm92aWRlZCBhcyBhIHJlbGF0aXZlIHBhdGggdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb3IgYXMgYW4gYWJzb2x1dGUgcGF0aC5cbiAgICogVGhlIGRpcmVjdG9yeSBtdXN0IGV4aXN0LlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2luZ0Rpcj86IHN0cmluZztcbiAgLyoqXG4gICAqIElmIHByb3ZpZGVkLCB0aGlzIGlzIGEgbGlzdCBvZiBpbnRlcnByZXRlciBhcmd1bWVudHMgdXNlZCB0byBleGVjdXRlIHRoZSBjb21tYW5kLlxuICAgKiBUaGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIGludGVycHJldGVyIGl0c2VsZi5cbiAgICogSXQgY2FuIGJlIHByb3ZpZGVkIGFzIGEgcmVsYXRpdmUgcGF0aCB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvciBhcyBhbiBhYnNvbHV0ZSBwYXRoXG4gICAqIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSBhcHBlbmRlZCBwcmlvciB0byB0aGUgY29tbWFuZC5cbiAgICogVGhpcyBhbGxvd3MgYnVpbGRpbmcgY29tbWFuZCBsaW5lcyBvZiB0aGUgZm9ybSBcIi9iaW4vYmFzaFwiLCBcIi1jXCIsIFwiZWNobyBmb29cIi5cbiAgICogSWYgaW50ZXJwcmV0ZXIgaXMgdW5zcGVjaWZpZWQsIHNlbnNpYmxlIGRlZmF1bHRzIHdpbGwgYmUgY2hvc2VuIGJhc2VkIG9uIHRoZSBzeXN0ZW0gT1MuXG4gICAqL1xuICByZWFkb25seSBpbnRlcnByZXRlcj86IHN0cmluZ1tdO1xuICAvKipcbiAgICogIEEgcmVjb3JkIG9mIGtleSB2YWx1ZSBwYWlycyByZXByZXNlbnRpbmcgdGhlIGVudmlyb25tZW50IG9mIHRoZSBleGVjdXRlZCBjb21tYW5kLlxuICAgKiBJdCBpbmhlcml0cyB0aGUgY3VycmVudCBwcm9jZXNzIGVudmlyb25tZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvKipcbiAgICogSWYgcHJvdmlkZWQsIHNwZWNpZmllcyB3aGVuIFRlcnJhZm9ybSB3aWxsIGV4ZWN1dGUgdGhlIGNvbW1hbmQuXG4gICAqIEZvciBleGFtcGxlLCB3aGVuID0gZGVzdHJveSBzcGVjaWZpZXMgdGhhdCB0aGUgcHJvdmlzaW9uZXIgd2lsbCBydW4gd2hlbiB0aGUgYXNzb2NpYXRlZCByZXNvdXJjZSBpcyBkZXN0cm95ZWRcbiAgICovXG4gIHJlYWRvbmx5IHdoZW4/OiBcImRlc3Ryb3lcIiB8IFwiY3JlYXRlXCI7XG59XG5cbi8qKlxuICogVGhlIHJlbW90ZS1leGVjIHByb3Zpc2lvbmVyIGludm9rZXMgYSBzY3JpcHQgb24gYSByZW1vdGUgcmVzb3VyY2UgYWZ0ZXIgaXQgaXMgY3JlYXRlZC5cbiAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gcnVuIGEgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50IHRvb2wsIGJvb3RzdHJhcCBpbnRvIGEgY2x1c3RlciwgZXRjXG4gKiBUaGUgcmVtb3RlLWV4ZWMgcHJvdmlzaW9uZXIgcmVxdWlyZXMgYSBjb25uZWN0aW9uIGFuZCBzdXBwb3J0cyBib3RoIHNzaCBhbmQgd2lucm0uXG4gKlxuICogU2VlIHtAbGluayBodHRwczovL2RldmVsb3Blci5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9sYW5ndWFnZS9yZXNvdXJjZXMvcHJvdmlzaW9uZXJzL3JlbW90ZS1leGVjIHJlbW90ZS1leGVjfVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbW90ZUV4ZWNQcm92aXNpb25lciB7XG4gIHJlYWRvbmx5IHR5cGU6IFwicmVtb3RlLWV4ZWNcIjtcblxuICAvKipcbiAgICogVGhpcyBpcyBhIGxpc3Qgb2YgY29tbWFuZCBzdHJpbmdzLlxuICAgKiBUaGV5IGFyZSBleGVjdXRlZCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgcHJvdmlkZWQuXG4gICAqIFRoaXMgY2Fubm90IGJlIHByb3ZpZGVkIHdpdGggc2NyaXB0IG9yIHNjcmlwdHMuXG4gICAqL1xuICByZWFkb25seSBpbmxpbmU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhpcyBpcyBhIHBhdGggKHJlbGF0aXZlIG9yIGFic29sdXRlKSB0byBhIGxvY2FsIHNjcmlwdCB0aGF0IHdpbGwgYmUgY29waWVkIHRvIHRoZSByZW1vdGUgcmVzb3VyY2UgYW5kIHRoZW4gZXhlY3V0ZWQuXG4gICAqIFRoaXMgY2Fubm90IGJlIHByb3ZpZGVkIHdpdGggaW5saW5lIG9yIHNjcmlwdHMuXG4gICAqL1xuICByZWFkb25seSBzY3JpcHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBsaXN0IG9mIHBhdGhzIChyZWxhdGl2ZSBvciBhYnNvbHV0ZSkgdG8gbG9jYWwgc2NyaXB0cyB0aGF0IHdpbGwgYmUgY29waWVkIHRvIHRoZSByZW1vdGUgcmVzb3VyY2UgYW5kIHRoZW4gZXhlY3V0ZWQuXG4gICAqIFRoZXkgYXJlIGV4ZWN1dGVkIGluIHRoZSBvcmRlciB0aGV5IGFyZSBwcm92aWRlZC5cbiAgICogVGhpcyBjYW5ub3QgYmUgcHJvdmlkZWQgd2l0aCBpbmxpbmUgb3Igc2NyaXB0LlxuICAgKi9cbiAgcmVhZG9ubHkgc2NyaXB0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBNb3N0IHByb3Zpc2lvbmVycyByZXF1aXJlIGFjY2VzcyB0byB0aGUgcmVtb3RlIHJlc291cmNlIHZpYSBTU0ggb3IgV2luUk0gYW5kIGV4cGVjdCBhIG5lc3RlZCBjb25uZWN0aW9uIGJsb2NrIHdpdGggZGV0YWlscyBhYm91dCBob3cgdG8gY29ubmVjdC5cbiAgICogQSBjb25uZWN0aW9uIG11c3QgYmUgcHJvdmlkZWQgaGVyZSBvciBpbiB0aGUgcGFyZW50IHJlc291cmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgY29ubmVjdGlvbj86IFNTSFByb3Zpc2lvbmVyQ29ubmVjdGlvbiB8IFdpbnJtUHJvdmlzaW9uZXJDb25uZWN0aW9uO1xufVxuXG4vKipcbiAqIEV4cHJlc3Npb25zIGluIGNvbm5lY3Rpb24gYmxvY2tzIGNhbm5vdCByZWZlciB0byB0aGVpciBwYXJlbnQgcmVzb3VyY2UgYnkgbmFtZS5cbiAqIFJlZmVyZW5jZXMgY3JlYXRlIGRlcGVuZGVuY2llcywgYW5kIHJlZmVycmluZyB0byBhIHJlc291cmNlIGJ5IG5hbWUgd2l0aGluIGl0cyBvd24gYmxvY2sgd291bGQgY3JlYXRlIGEgZGVwZW5kZW5jeSBjeWNsZS5cbiAqIEluc3RlYWQsIGV4cHJlc3Npb25zIGNhbiB1c2UgdGhlIHNlbGYgb2JqZWN0LCB3aGljaCByZXByZXNlbnRzIHRoZSBjb25uZWN0aW9uJ3MgcGFyZW50IHJlc291cmNlIGFuZCBoYXMgYWxsIG9mIHRoYXQgcmVzb3VyY2UncyBhdHRyaWJ1dGVzLlxuICogRm9yIGV4YW1wbGUsIHVzZSBzZWxmLnB1YmxpY19pcCB0byByZWZlcmVuY2UgYW4gYXdzX2luc3RhbmNlJ3MgcHVibGljX2lwIGF0dHJpYnV0ZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFRlcnJhZm9ybVNlbGYge1xuICBwcml2YXRlIHN0YXRpYyBnZXRJbnRlcnBvbGF0aW9uKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGBzZWxmLiR7a2V5XG4gICAgICAuc3BsaXQoXCIuXCIpXG4gICAgICAubWFwKChzKSA9PiBzbmFrZUNhc2UocykpXG4gICAgICAuam9pbihcIi5cIil9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbmx5IHVzYWJsZSB3aXRoaW4gYSBjb25uZWN0aW9uIGJsb2NrIHRvIHJlZmVyZW5jZSB0aGUgY29ubmVjdGlvbnMgcGFyZW50IHJlc291cmNlLlxuICAgKiBBY2Nlc3MgYSBwcm9wZXJ0eSBvbiB0aGUgcmVzb3VyY2UgbGlrZSB0aGlzOiBgZ2V0U3RyaW5nKFwicHVibGljSXBcIilgXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldFN0cmluZyhrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKHJlZihUZXJyYWZvcm1TZWxmLmdldEludGVycG9sYXRpb24oa2V5KSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9ubHkgdXNhYmxlIHdpdGhpbiBhIGNvbm5lY3Rpb24gYmxvY2sgdG8gcmVmZXJlbmNlIHRoZSBjb25uZWN0aW9ucyBwYXJlbnQgcmVzb3VyY2UuXG4gICAqIEFjY2VzcyBhIHByb3BlcnR5IG9uIHRoZSByZXNvdXJjZSBsaWtlIHRoaXM6IGBnZXROdW1iZXIoXCJob3N0UG9ydFwiKWBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0TnVtYmVyKGtleTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gVG9rZW4uYXNOdW1iZXIocmVmKFRlcnJhZm9ybVNlbGYuZ2V0SW50ZXJwb2xhdGlvbihrZXkpKSk7XG4gIH1cblxuICAvKipcbiAgICogT25seSB1c2FibGUgd2l0aGluIGEgY29ubmVjdGlvbiBibG9jayB0byByZWZlcmVuY2UgdGhlIGNvbm5lY3Rpb25zIHBhcmVudCByZXNvdXJjZS5cbiAgICogQWNjZXNzIGEgcHJvcGVydHkgb24gdGhlIHJlc291cmNlIGxpa2UgdGhpczogYGdldEFueShcImhvc3RQb3J0XCIpYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRBbnkoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiBUb2tlbi5hc0FueShyZWYoVGVycmFmb3JtU2VsZi5nZXRJbnRlcnBvbGF0aW9uKGtleSkpKTtcbiAgfVxufVxuIl19
48
+ TerraformSelf[_a] = { fqn: "cdktn.TerraformSelf", version: "0.23.2" };
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLXByb3Zpc2lvbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RlcnJhZm9ybS1wcm92aXNpb25lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsaURBQXFDO0FBQ3JDLDBDQUF1QztBQUN2QyxpQ0FBbUM7QUF1Vm5DOzs7OztHQUtHO0FBQ0gsTUFBYSxhQUFhO0lBQ2hCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFXO1FBQ3pDLE9BQU8sUUFBUSxHQUFHO2FBQ2YsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBQSxnQkFBUyxFQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQVc7UUFDakMsT0FBTyxhQUFLLENBQUMsUUFBUSxDQUFDLElBQUEsa0JBQUcsRUFBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQVc7UUFDakMsT0FBTyxhQUFLLENBQUMsUUFBUSxDQUFDLElBQUEsa0JBQUcsRUFBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQVc7UUFDOUIsT0FBTyxhQUFLLENBQUMsS0FBSyxDQUFDLElBQUEsa0JBQUcsRUFBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7O0FBOUJILHNDQStCQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyByZWYgfSBmcm9tIFwiLi90ZkV4cHJlc3Npb25cIjtcbmltcG9ydCB7IFRva2VuIH0gZnJvbSBcIi4vdG9rZW5zL3Rva2VuXCI7XG5pbXBvcnQgeyBzbmFrZUNhc2UgfSBmcm9tIFwiLi91dGlsXCI7XG4vKipcbiAqIE1vc3QgcHJvdmlzaW9uZXJzIHJlcXVpcmUgYWNjZXNzIHRvIHRoZSByZW1vdGUgcmVzb3VyY2UgdmlhIFNTSCBvciBXaW5STSBhbmQgZXhwZWN0IGEgbmVzdGVkIGNvbm5lY3Rpb24gYmxvY2sgd2l0aCBkZXRhaWxzIGFib3V0IGhvdyB0byBjb25uZWN0LlxuICpcbiAqIFJlZmVyIHRvIHtAbGluayBodHRwczovL2RldmVsb3Blci5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9sYW5ndWFnZS9yZXNvdXJjZXMvcHJvdmlzaW9uZXJzL2Nvbm5lY3Rpb24gY29ubmVjdGlvbn1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTU0hQcm92aXNpb25lckNvbm5lY3Rpb24ge1xuICAvKipcbiAgICogVGhlIGNvbm5lY3Rpb24gdHlwZS4gVmFsaWQgdmFsdWVzIGFyZSBcInNzaFwiIGFuZCBcIndpbnJtXCIuXG4gICAqIFByb3Zpc2lvbmVycyB0eXBpY2FsbHkgYXNzdW1lIHRoYXQgdGhlIHJlbW90ZSBzeXN0ZW0gcnVucyBNaWNyb3NvZnQgV2luZG93cyB3aGVuIHVzaW5nIFdpblJNLlxuICAgKiBCZWhhdmlvcnMgYmFzZWQgb24gdGhlIFNTSCB0YXJnZXRfcGxhdGZvcm0gd2lsbCBmb3JjZSBXaW5kb3dzLXNwZWNpZmljIGJlaGF2aW9yIGZvciBXaW5STSwgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBcInNzaFwiO1xuXG4gIC8qKlxuICAgKiBUaGUgdXNlciB0byB1c2UgZm9yIHRoZSBjb25uZWN0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCByb290XG4gICAqL1xuICByZWFkb25seSB1c2VyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFzc3dvcmQgdG8gdXNlIGZvciB0aGUgY29ubmVjdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHBhc3N3b3JkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWRkcmVzcyBvZiB0aGUgcmVzb3VyY2UgdG8gY29ubmVjdCB0by5cbiAgICovXG4gIHJlYWRvbmx5IGhvc3Q6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBvcnQgdG8gY29ubmVjdCB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgMjJcbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lb3V0IHRvIHdhaXQgZm9yIHRoZSBjb25uZWN0aW9uIHRvIGJlY29tZSBhdmFpbGFibGUuXG4gICAqIFNob3VsZCBiZSBwcm92aWRlZCBhcyBhIHN0cmluZyAoZS5nLiwgXCIzMHNcIiBvciBcIjVtXCIuKVxuICAgKlxuICAgKiBAZGVmYXVsdCA1bVxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggdXNlZCB0byBjb3B5IHNjcmlwdHMgbWVhbnQgZm9yIHJlbW90ZSBleGVjdXRpb24uXG4gICAqIFJlZmVyIHRvIHtAbGluayBodHRwczovL2RldmVsb3Blci5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9sYW5ndWFnZS9yZXNvdXJjZXMvcHJvdmlzaW9uZXJzL2Nvbm5lY3Rpb24jaG93LXByb3Zpc2lvbmVycy1leGVjdXRlLXJlbW90ZS1zY3JpcHRzIEhvdyBQcm92aXNpb25lcnMgRXhlY3V0ZSBSZW1vdGUgU2NyaXB0cyBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzfVxuICAgKi9cbiAgcmVhZG9ubHkgc2NyaXB0UGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNvbnRlbnRzIG9mIGFuIFNTSCBrZXkgdG8gdXNlIGZvciB0aGUgY29ubmVjdGlvbi5cbiAgICogVGhlc2UgY2FuIGJlIGxvYWRlZCBmcm9tIGEgZmlsZSBvbiBkaXNrIHVzaW5nIHRoZSBmaWxlIGZ1bmN0aW9uLlxuICAgKiBUaGlzIHRha2VzIHByZWZlcmVuY2Ugb3ZlciBwYXNzd29yZCBpZiBwcm92aWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHByaXZhdGVLZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50cyBvZiBhIHNpZ25lZCBDQSBDZXJ0aWZpY2F0ZS5cbiAgICogVGhlIGNlcnRpZmljYXRlIGFyZ3VtZW50IG11c3QgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGEgcHJpdmF0ZV9rZXkuXG4gICAqIFRoZXNlIGNhbiBiZSBsb2FkZWQgZnJvbSBhIGZpbGUgb24gZGlzayB1c2luZyB0aGUgdGhlIGZpbGUgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZT86IHN0cmluZztcblxuICAvKipcbiAgICogU2V0IHRvIGZhbHNlIHRvIGRpc2FibGUgdXNpbmcgc3NoLWFnZW50IHRvIGF1dGhlbnRpY2F0ZS5cbiAgICogT24gV2luZG93cyB0aGUgb25seSBzdXBwb3J0ZWQgU1NIIGF1dGhlbnRpY2F0aW9uIGFnZW50IGlzIFBhZ2VhbnQuXG4gICAqL1xuICByZWFkb25seSBhZ2VudD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByZWZlcnJlZCBpZGVudGl0eSBmcm9tIHRoZSBzc2ggYWdlbnQgZm9yIGF1dGhlbnRpY2F0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYWdlbnRJZGVudGl0eT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHB1YmxpYyBrZXkgZnJvbSB0aGUgcmVtb3RlIGhvc3Qgb3IgdGhlIHNpZ25pbmcgQ0EsIHVzZWQgdG8gdmVyaWZ5IHRoZSBjb25uZWN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgaG9zdEtleT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRhcmdldCBwbGF0Zm9ybSB0byBjb25uZWN0IHRvLlxuICAgKiBWYWxpZCB2YWx1ZXMgYXJlIFwid2luZG93c1wiIGFuZCBcInVuaXhcIi5cbiAgICogSWYgdGhlIHBsYXRmb3JtIGlzIHNldCB0byB3aW5kb3dzLCB0aGUgZGVmYXVsdCBzY3JpcHRfcGF0aCBpcyBjOlxcd2luZG93c1xcdGVtcFxcdGVycmFmb3JtXyVSQU5EJS5jbWQsIGFzc3VtaW5nIHRoZSBTU0ggZGVmYXVsdCBzaGVsbCBpcyBjbWQuZXhlLlxuICAgKiBJZiB0aGUgU1NIIGRlZmF1bHQgc2hlbGwgaXMgUG93ZXJTaGVsbCwgc2V0IHNjcmlwdF9wYXRoIHRvIFwiYzovd2luZG93cy90ZW1wL3RlcnJhZm9ybV8lUkFORCUucHMxXCJcbiAgICogQGRlZmF1bHQgdW5peFxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0UGxhdGZvcm0/OiBcInVuaXhcIiB8IFwid2luZG93c1wiO1xuXG4gIC8qKlxuICAgKiBTZXR0aW5nIHRoaXMgZW5hYmxlcyB0aGUgYmFzdGlvbiBIb3N0IGNvbm5lY3Rpb24uXG4gICAqIFRoZSBwcm92aXNpb25lciB3aWxsIGNvbm5lY3QgdG8gYmFzdGlvbl9ob3N0IGZpcnN0LCBhbmQgdGhlbiBjb25uZWN0IGZyb20gdGhlcmUgdG8gaG9zdC5cbiAgICovXG4gIHJlYWRvbmx5IGJhc3Rpb25Ib3N0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcHVibGljIGtleSBmcm9tIHRoZSByZW1vdGUgaG9zdCBvciB0aGUgc2lnbmluZyBDQSwgdXNlZCB0byB2ZXJpZnkgdGhlIGhvc3QgY29ubmVjdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGJhc3Rpb25Ib3N0S2V5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9ydCB0byB1c2UgY29ubmVjdCB0byB0aGUgYmFzdGlvbiBob3N0LlxuICAgKi9cbiAgcmVhZG9ubHkgYmFzdGlvblBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB1c2VyIGZvciB0aGUgY29ubmVjdGlvbiB0byB0aGUgYmFzdGlvbiBob3N0LlxuICAgKi9cbiAgcmVhZG9ubHkgYmFzdGlvblVzZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXNzd29yZCB0byB1c2UgZm9yIHRoZSBiYXN0aW9uIGhvc3QuXG4gICAqL1xuICByZWFkb25seSBiYXN0aW9uUGFzc3dvcmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50cyBvZiBhbiBTU0gga2V5IGZpbGUgdG8gdXNlIGZvciB0aGUgYmFzdGlvbiBob3N0LlxuICAgKiBUaGVzZSBjYW4gYmUgbG9hZGVkIGZyb20gYSBmaWxlIG9uIGRpc2sgdXNpbmcgdGhlIGZpbGUgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBiYXN0aW9uUHJpdmF0ZUtleT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNvbnRlbnRzIG9mIGEgc2lnbmVkIENBIENlcnRpZmljYXRlLlxuICAgKiBUaGUgY2VydGlmaWNhdGUgYXJndW1lbnQgbXVzdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYSBiYXN0aW9uX3ByaXZhdGVfa2V5LlxuICAgKiBUaGVzZSBjYW4gYmUgbG9hZGVkIGZyb20gYSBmaWxlIG9uIGRpc2sgdXNpbmcgdGhlIHRoZSBmaWxlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYmFzdGlvbkNlcnRpZmljYXRlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3NoIGNvbm5lY3Rpb24gYWxzbyBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGZpZWxkcyB0byBmYWNpbGl0YXRlIGNvbm5lY3Rpb25zIGJ5IFNTSCBvdmVyIEhUVFAgcHJveHkuXG4gICAqL1xuICByZWFkb25seSBwcm94eVNjaGVtZT86IFwiaHR0cFwiIHwgXCJodHRwc1wiO1xuXG4gIC8qKlxuICAgKiBTZXR0aW5nIHRoaXMgZW5hYmxlcyB0aGUgU1NIIG92ZXIgSFRUUCBjb25uZWN0aW9uLlxuICAgKiBUaGlzIGhvc3Qgd2lsbCBiZSBjb25uZWN0ZWQgdG8gZmlyc3QsIGFuZCB0aGVuIHRoZSBob3N0IG9yIGJhc3Rpb25faG9zdCBjb25uZWN0aW9uIHdpbGwgYmUgbWFkZSBmcm9tIHRoZXJlLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJveHlIb3N0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9ydCB0byB1c2UgY29ubmVjdCB0byB0aGUgcHJveHkgaG9zdC5cbiAgICovXG4gIHJlYWRvbmx5IHByb3h5UG9ydD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHVzZXJuYW1lIHRvIHVzZSBjb25uZWN0IHRvIHRoZSBwcml2YXRlIHByb3h5IGhvc3QuXG4gICAqIFRoaXMgYXJndW1lbnQgc2hvdWxkIGJlIHNwZWNpZmllZCBvbmx5IGlmIGF1dGhlbnRpY2F0aW9uIGlzIHJlcXVpcmVkIGZvciB0aGUgSFRUUCBQcm94eSBzZXJ2ZXIuXG4gICAqL1xuICByZWFkb25seSBwcm94eVVzZXJOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFzc3dvcmQgdG8gdXNlIGNvbm5lY3QgdG8gdGhlIHByaXZhdGUgcHJveHkgaG9zdC5cbiAgICogVGhpcyBhcmd1bWVudCBzaG91bGQgYmUgc3BlY2lmaWVkIG9ubHkgaWYgYXV0aGVudGljYXRpb24gaXMgcmVxdWlyZWQgZm9yIHRoZSBIVFRQIFByb3h5IHNlcnZlci5cbiAgICovXG4gIHJlYWRvbmx5IHByb3h5VXNlclBhc3N3b3JkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1vc3QgcHJvdmlzaW9uZXJzIHJlcXVpcmUgYWNjZXNzIHRvIHRoZSByZW1vdGUgcmVzb3VyY2UgdmlhIFNTSCBvciBXaW5STSBhbmQgZXhwZWN0IGEgbmVzdGVkIGNvbm5lY3Rpb24gYmxvY2sgd2l0aCBkZXRhaWxzIGFib3V0IGhvdyB0byBjb25uZWN0LlxuICpcbiAqIFNlZSB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIuaGFzaGljb3JwLmNvbS90ZXJyYWZvcm0vbGFuZ3VhZ2UvcmVzb3VyY2VzL3Byb3Zpc2lvbmVycy9jb25uZWN0aW9uIGNvbm5lY3Rpb259XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2lucm1Qcm92aXNpb25lckNvbm5lY3Rpb24ge1xuICAvKipcbiAgICogVGhlIGNvbm5lY3Rpb24gdHlwZS4gVmFsaWQgdmFsdWVzIGFyZSBcInNzaFwiIGFuZCBcIndpbnJtXCIuXG4gICAqIFByb3Zpc2lvbmVycyB0eXBpY2FsbHkgYXNzdW1lIHRoYXQgdGhlIHJlbW90ZSBzeXN0ZW0gcnVucyBNaWNyb3NvZnQgV2luZG93cyB3aGVuIHVzaW5nIFdpblJNLlxuICAgKiBCZWhhdmlvcnMgYmFzZWQgb24gdGhlIFNTSCB0YXJnZXRfcGxhdGZvcm0gd2lsbCBmb3JjZSBXaW5kb3dzLXNwZWNpZmljIGJlaGF2aW9yIGZvciBXaW5STSwgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBcIndpbnJtXCI7XG5cbiAgLyoqXG4gICAqIFRoZSB1c2VyIHRvIHVzZSBmb3IgdGhlIGNvbm5lY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IHJvb3RcbiAgICovXG4gIHJlYWRvbmx5IHVzZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXNzd29yZCB0byB1c2UgZm9yIHRoZSBjb25uZWN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFzc3dvcmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhZGRyZXNzIG9mIHRoZSByZXNvdXJjZSB0byBjb25uZWN0IHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgaG9zdDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9ydCB0byBjb25uZWN0IHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCAyMlxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHRpbWVvdXQgdG8gd2FpdCBmb3IgdGhlIGNvbm5lY3Rpb24gdG8gYmVjb21lIGF2YWlsYWJsZS5cbiAgICogU2hvdWxkIGJlIHByb3ZpZGVkIGFzIGEgc3RyaW5nIChlLmcuLCBcIjMwc1wiIG9yIFwiNW1cIi4pXG4gICAqXG4gICAqIEBkZWZhdWx0IDVtXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB1c2VkIHRvIGNvcHkgc2NyaXB0cyBtZWFudCBmb3IgcmVtb3RlIGV4ZWN1dGlvbi5cbiAgICogUmVmZXIgdG8ge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLmhhc2hpY29ycC5jb20vdGVycmFmb3JtL2xhbmd1YWdlL3Jlc291cmNlcy9wcm92aXNpb25lcnMvY29ubmVjdGlvbiNob3ctcHJvdmlzaW9uZXJzLWV4ZWN1dGUtcmVtb3RlLXNjcmlwdHMgSG93IFByb3Zpc2lvbmVycyBFeGVjdXRlIFJlbW90ZSBTY3JpcHRzIGJlbG93IGZvciBtb3JlIGRldGFpbHN9XG4gICAqL1xuICByZWFkb25seSBzY3JpcHRQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gdHJ1ZSB0byBjb25uZWN0IHVzaW5nIEhUVFBTIGluc3RlYWQgb2YgSFRUUC5cbiAgICovXG4gIHJlYWRvbmx5IGh0dHBzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0IHRvIHRydWUgdG8gc2tpcCB2YWxpZGF0aW5nIHRoZSBIVFRQUyBjZXJ0aWZpY2F0ZSBjaGFpbi5cbiAgICovXG4gIHJlYWRvbmx5IGluc2VjdXJlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0IHRvIHRydWUgdG8gdXNlIE5UTE0gYXV0aGVudGljYXRpb24gcmF0aGVyIHRoYW4gZGVmYXVsdCAoYmFzaWMgYXV0aGVudGljYXRpb24pLCByZW1vdmluZyB0aGUgcmVxdWlyZW1lbnQgZm9yIGJhc2ljIGF1dGhlbnRpY2F0aW9uIHRvIGJlIGVuYWJsZWQgd2l0aGluIHRoZSB0YXJnZXQgZ3Vlc3QuXG4gICAqIFJlZmVyIHRvIEF1dGhlbnRpY2F0aW9uIGZvciBSZW1vdGUgQ29ubmVjdGlvbnMgaW4gdGhlIFdpbmRvd3MgQXBwIERldmVsb3BtZW50IGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlscy5cbiAgICovXG4gIHJlYWRvbmx5IHVzZU50bG0/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgQ0EgY2VydGlmaWNhdGUgdG8gdmFsaWRhdGUgYWdhaW5zdC5cbiAgICovXG4gIHJlYWRvbmx5IGNhY2VydD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgZmlsZSBwcm92aXNpb25lciBjb3BpZXMgZmlsZXMgb3IgZGlyZWN0b3JpZXMgZnJvbSB0aGUgbWFjaGluZSBydW5uaW5nIFRlcnJhZm9ybSB0byB0aGUgbmV3bHkgY3JlYXRlZCByZXNvdXJjZS5cbiAqIFRoZSBmaWxlIHByb3Zpc2lvbmVyIHN1cHBvcnRzIGJvdGggc3NoIGFuZCB3aW5ybSB0eXBlIGNvbm5lY3Rpb25zLlxuICpcbiAqIFNlZSB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIuaGFzaGljb3JwLmNvbS90ZXJyYWZvcm0vbGFuZ3VhZ2UvcmVzb3VyY2VzL3Byb3Zpc2lvbmVycy9maWxlIGZpbGV9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVByb3Zpc2lvbmVyIHtcbiAgcmVhZG9ubHkgdHlwZTogXCJmaWxlXCI7XG4gIC8qKlxuICAgKiBUaGUgc291cmNlIGZpbGUgb3IgZGlyZWN0b3J5LiBTcGVjaWZ5IGl0IGVpdGhlciByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvciBhcyBhbiBhYnNvbHV0ZSBwYXRoLlxuICAgKiBUaGlzIGFyZ3VtZW50IGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIGNvbnRlbnQuXG4gICAqL1xuICByZWFkb25seSBkZXN0aW5hdGlvbjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGRpcmVjdCBjb250ZW50IHRvIGNvcHkgb24gdGhlIGRlc3RpbmF0aW9uLlxuICAgKiBJZiBkZXN0aW5hdGlvbiBpcyBhIGZpbGUsIHRoZSBjb250ZW50IHdpbGwgYmUgd3JpdHRlbiBvbiB0aGF0IGZpbGUuXG4gICAqIEluIGNhc2Ugb2YgYSBkaXJlY3RvcnksIGEgZmlsZSBuYW1lZCB0Zi1maWxlLWNvbnRlbnQgaXMgY3JlYXRlZCBpbnNpZGUgdGhhdCBkaXJlY3RvcnkuXG4gICAqIFdlIHJlY29tbWVuZCB1c2luZyBhIGZpbGUgYXMgdGhlIGRlc3RpbmF0aW9uIHdoZW4gdXNpbmcgY29udGVudC5cbiAgICogVGhpcyBhcmd1bWVudCBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBzb3VyY2UuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZGVzdGluYXRpb24gcGF0aCB0byB3cml0ZSB0byBvbiB0aGUgcmVtb3RlIHN5c3RlbS5cbiAgICogU2VlIERlc3RpbmF0aW9uIFBhdGhzIGJlbG93IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudD86IHN0cmluZztcblxuICAvKipcbiAgICogTW9zdCBwcm92aXNpb25lcnMgcmVxdWlyZSBhY2Nlc3MgdG8gdGhlIHJlbW90ZSByZXNvdXJjZSB2aWEgU1NIIG9yIFdpblJNIGFuZCBleHBlY3QgYSBuZXN0ZWQgY29ubmVjdGlvbiBibG9jayB3aXRoIGRldGFpbHMgYWJvdXQgaG93IHRvIGNvbm5lY3QuXG4gICAqL1xuICByZWFkb25seSBjb25uZWN0aW9uPzogU1NIUHJvdmlzaW9uZXJDb25uZWN0aW9uIHwgV2lucm1Qcm92aXNpb25lckNvbm5lY3Rpb247XG59XG5cbi8qKlxuICogVGhlIGxvY2FsLWV4ZWMgcHJvdmlzaW9uZXIgaW52b2tlcyBhIGxvY2FsIGV4ZWN1dGFibGUgYWZ0ZXIgYSByZXNvdXJjZSBpcyBjcmVhdGVkLlxuICogVGhpcyBpbnZva2VzIGEgcHJvY2VzcyBvbiB0aGUgbWFjaGluZSBydW5uaW5nIFRlcnJhZm9ybSwgbm90IG9uIHRoZSByZXNvdXJjZS5cbiAqXG4gKiBTZWUge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLmhhc2hpY29ycC5jb20vdGVycmFmb3JtL2xhbmd1YWdlL3Jlc291cmNlcy9wcm92aXNpb25lcnMvbG9jYWwtZXhlYyBsb2NhbC1leGVjfVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvY2FsRXhlY1Byb3Zpc2lvbmVyIHtcbiAgcmVhZG9ubHkgdHlwZTogXCJsb2NhbC1leGVjXCI7XG4gIC8qKlxuICAgKiBUaGlzIGlzIHRoZSBjb21tYW5kIHRvIGV4ZWN1dGUuXG4gICAqIEl0IGNhbiBiZSBwcm92aWRlZCBhcyBhIHJlbGF0aXZlIHBhdGggdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb3IgYXMgYW4gYWJzb2x1dGUgcGF0aC5cbiAgICogSXQgaXMgZXZhbHVhdGVkIGluIGEgc2hlbGwsIGFuZCBjYW4gdXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyBvciBUZXJyYWZvcm0gdmFyaWFibGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZDogc3RyaW5nO1xuICAvKipcbiAgICogSWYgcHJvdmlkZWQsIHNwZWNpZmllcyB0aGUgd29ya2luZyBkaXJlY3Rvcnkgd2hlcmUgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkLlxuICAgKiBJdCBjYW4gYmUgcHJvdmlkZWQgYXMgYSByZWxhdGl2ZSBwYXRoIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IG9yIGFzIGFuIGFic29sdXRlIHBhdGguXG4gICAqIFRoZSBkaXJlY3RvcnkgbXVzdCBleGlzdC5cbiAgICovXG4gIHJlYWRvbmx5IHdvcmtpbmdEaXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiBwcm92aWRlZCwgdGhpcyBpcyBhIGxpc3Qgb2YgaW50ZXJwcmV0ZXIgYXJndW1lbnRzIHVzZWQgdG8gZXhlY3V0ZSB0aGUgY29tbWFuZC5cbiAgICogVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBpbnRlcnByZXRlciBpdHNlbGYuXG4gICAqIEl0IGNhbiBiZSBwcm92aWRlZCBhcyBhIHJlbGF0aXZlIHBhdGggdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb3IgYXMgYW4gYWJzb2x1dGUgcGF0aFxuICAgKiBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgYXBwZW5kZWQgcHJpb3IgdG8gdGhlIGNvbW1hbmQuXG4gICAqIFRoaXMgYWxsb3dzIGJ1aWxkaW5nIGNvbW1hbmQgbGluZXMgb2YgdGhlIGZvcm0gXCIvYmluL2Jhc2hcIiwgXCItY1wiLCBcImVjaG8gZm9vXCIuXG4gICAqIElmIGludGVycHJldGVyIGlzIHVuc3BlY2lmaWVkLCBzZW5zaWJsZSBkZWZhdWx0cyB3aWxsIGJlIGNob3NlbiBiYXNlZCBvbiB0aGUgc3lzdGVtIE9TLlxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZXJwcmV0ZXI/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqICBBIHJlY29yZCBvZiBrZXkgdmFsdWUgcGFpcnMgcmVwcmVzZW50aW5nIHRoZSBlbnZpcm9ubWVudCBvZiB0aGUgZXhlY3V0ZWQgY29tbWFuZC5cbiAgICogSXQgaW5oZXJpdHMgdGhlIGN1cnJlbnQgcHJvY2VzcyBlbnZpcm9ubWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqXG4gICAqIElmIHByb3ZpZGVkLCBzcGVjaWZpZXMgd2hlbiBUZXJyYWZvcm0gd2lsbCBleGVjdXRlIHRoZSBjb21tYW5kLlxuICAgKiBGb3IgZXhhbXBsZSwgd2hlbiA9IGRlc3Ryb3kgc3BlY2lmaWVzIHRoYXQgdGhlIHByb3Zpc2lvbmVyIHdpbGwgcnVuIHdoZW4gdGhlIGFzc29jaWF0ZWQgcmVzb3VyY2UgaXMgZGVzdHJveWVkXG4gICAqL1xuICByZWFkb25seSB3aGVuPzogXCJkZXN0cm95XCIgfCBcImNyZWF0ZVwiO1xufVxuXG4vKipcbiAqIFRoZSByZW1vdGUtZXhlYyBwcm92aXNpb25lciBpbnZva2VzIGEgc2NyaXB0IG9uIGEgcmVtb3RlIHJlc291cmNlIGFmdGVyIGl0IGlzIGNyZWF0ZWQuXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIHJ1biBhIGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudCB0b29sLCBib290c3RyYXAgaW50byBhIGNsdXN0ZXIsIGV0Y1xuICogVGhlIHJlbW90ZS1leGVjIHByb3Zpc2lvbmVyIHJlcXVpcmVzIGEgY29ubmVjdGlvbiBhbmQgc3VwcG9ydHMgYm90aCBzc2ggYW5kIHdpbnJtLlxuICpcbiAqIFNlZSB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIuaGFzaGljb3JwLmNvbS90ZXJyYWZvcm0vbGFuZ3VhZ2UvcmVzb3VyY2VzL3Byb3Zpc2lvbmVycy9yZW1vdGUtZXhlYyByZW1vdGUtZXhlY31cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW1vdGVFeGVjUHJvdmlzaW9uZXIge1xuICByZWFkb25seSB0eXBlOiBcInJlbW90ZS1leGVjXCI7XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBsaXN0IG9mIGNvbW1hbmQgc3RyaW5ncy5cbiAgICogVGhleSBhcmUgZXhlY3V0ZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIHByb3ZpZGVkLlxuICAgKiBUaGlzIGNhbm5vdCBiZSBwcm92aWRlZCB3aXRoIHNjcmlwdCBvciBzY3JpcHRzLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5saW5lPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBwYXRoIChyZWxhdGl2ZSBvciBhYnNvbHV0ZSkgdG8gYSBsb2NhbCBzY3JpcHQgdGhhdCB3aWxsIGJlIGNvcGllZCB0byB0aGUgcmVtb3RlIHJlc291cmNlIGFuZCB0aGVuIGV4ZWN1dGVkLlxuICAgKiBUaGlzIGNhbm5vdCBiZSBwcm92aWRlZCB3aXRoIGlubGluZSBvciBzY3JpcHRzLlxuICAgKi9cbiAgcmVhZG9ubHkgc2NyaXB0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgbGlzdCBvZiBwYXRocyAocmVsYXRpdmUgb3IgYWJzb2x1dGUpIHRvIGxvY2FsIHNjcmlwdHMgdGhhdCB3aWxsIGJlIGNvcGllZCB0byB0aGUgcmVtb3RlIHJlc291cmNlIGFuZCB0aGVuIGV4ZWN1dGVkLlxuICAgKiBUaGV5IGFyZSBleGVjdXRlZCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgcHJvdmlkZWQuXG4gICAqIFRoaXMgY2Fubm90IGJlIHByb3ZpZGVkIHdpdGggaW5saW5lIG9yIHNjcmlwdC5cbiAgICovXG4gIHJlYWRvbmx5IHNjcmlwdHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogTW9zdCBwcm92aXNpb25lcnMgcmVxdWlyZSBhY2Nlc3MgdG8gdGhlIHJlbW90ZSByZXNvdXJjZSB2aWEgU1NIIG9yIFdpblJNIGFuZCBleHBlY3QgYSBuZXN0ZWQgY29ubmVjdGlvbiBibG9jayB3aXRoIGRldGFpbHMgYWJvdXQgaG93IHRvIGNvbm5lY3QuXG4gICAqIEEgY29ubmVjdGlvbiBtdXN0IGJlIHByb3ZpZGVkIGhlcmUgb3IgaW4gdGhlIHBhcmVudCByZXNvdXJjZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbm5lY3Rpb24/OiBTU0hQcm92aXNpb25lckNvbm5lY3Rpb24gfCBXaW5ybVByb3Zpc2lvbmVyQ29ubmVjdGlvbjtcbn1cblxuLyoqXG4gKiBFeHByZXNzaW9ucyBpbiBjb25uZWN0aW9uIGJsb2NrcyBjYW5ub3QgcmVmZXIgdG8gdGhlaXIgcGFyZW50IHJlc291cmNlIGJ5IG5hbWUuXG4gKiBSZWZlcmVuY2VzIGNyZWF0ZSBkZXBlbmRlbmNpZXMsIGFuZCByZWZlcnJpbmcgdG8gYSByZXNvdXJjZSBieSBuYW1lIHdpdGhpbiBpdHMgb3duIGJsb2NrIHdvdWxkIGNyZWF0ZSBhIGRlcGVuZGVuY3kgY3ljbGUuXG4gKiBJbnN0ZWFkLCBleHByZXNzaW9ucyBjYW4gdXNlIHRoZSBzZWxmIG9iamVjdCwgd2hpY2ggcmVwcmVzZW50cyB0aGUgY29ubmVjdGlvbidzIHBhcmVudCByZXNvdXJjZSBhbmQgaGFzIGFsbCBvZiB0aGF0IHJlc291cmNlJ3MgYXR0cmlidXRlcy5cbiAqIEZvciBleGFtcGxlLCB1c2Ugc2VsZi5wdWJsaWNfaXAgdG8gcmVmZXJlbmNlIGFuIGF3c19pbnN0YW5jZSdzIHB1YmxpY19pcCBhdHRyaWJ1dGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBUZXJyYWZvcm1TZWxmIHtcbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0SW50ZXJwb2xhdGlvbihrZXk6IHN0cmluZykge1xuICAgIHJldHVybiBgc2VsZi4ke2tleVxuICAgICAgLnNwbGl0KFwiLlwiKVxuICAgICAgLm1hcCgocykgPT4gc25ha2VDYXNlKHMpKVxuICAgICAgLmpvaW4oXCIuXCIpfWA7XG4gIH1cblxuICAvKipcbiAgICogT25seSB1c2FibGUgd2l0aGluIGEgY29ubmVjdGlvbiBibG9jayB0byByZWZlcmVuY2UgdGhlIGNvbm5lY3Rpb25zIHBhcmVudCByZXNvdXJjZS5cbiAgICogQWNjZXNzIGEgcHJvcGVydHkgb24gdGhlIHJlc291cmNlIGxpa2UgdGhpczogYGdldFN0cmluZyhcInB1YmxpY0lwXCIpYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRTdHJpbmcoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyhyZWYoVGVycmFmb3JtU2VsZi5nZXRJbnRlcnBvbGF0aW9uKGtleSkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbmx5IHVzYWJsZSB3aXRoaW4gYSBjb25uZWN0aW9uIGJsb2NrIHRvIHJlZmVyZW5jZSB0aGUgY29ubmVjdGlvbnMgcGFyZW50IHJlc291cmNlLlxuICAgKiBBY2Nlc3MgYSBwcm9wZXJ0eSBvbiB0aGUgcmVzb3VyY2UgbGlrZSB0aGlzOiBgZ2V0TnVtYmVyKFwiaG9zdFBvcnRcIilgXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldE51bWJlcihrZXk6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIFRva2VuLmFzTnVtYmVyKHJlZihUZXJyYWZvcm1TZWxmLmdldEludGVycG9sYXRpb24oa2V5KSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9ubHkgdXNhYmxlIHdpdGhpbiBhIGNvbm5lY3Rpb24gYmxvY2sgdG8gcmVmZXJlbmNlIHRoZSBjb25uZWN0aW9ucyBwYXJlbnQgcmVzb3VyY2UuXG4gICAqIEFjY2VzcyBhIHByb3BlcnR5IG9uIHRoZSByZXNvdXJjZSBsaWtlIHRoaXM6IGBnZXRBbnkoXCJob3N0UG9ydFwiKWBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0QW55KGtleTogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gVG9rZW4uYXNBbnkocmVmKFRlcnJhZm9ybVNlbGYuZ2V0SW50ZXJwb2xhdGlvbihrZXkpKSk7XG4gIH1cbn1cbiJdfQ==
@@ -85,6 +85,6 @@ class TerraformRemoteState extends terraform_element_1.TerraformElement {
85
85
  }
86
86
  exports.TerraformRemoteState = TerraformRemoteState;
87
87
  _a = JSII_RTTI_SYMBOL_1;
88
- TerraformRemoteState[_a] = { fqn: "cdktn.TerraformRemoteState", version: "0.23.1" };
88
+ TerraformRemoteState[_a] = { fqn: "cdktn.TerraformRemoteState", version: "0.23.2" };
89
89
  TerraformRemoteState.tfResourceType = "terraform_remote_state";
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLXJlbW90ZS1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlcnJhZm9ybS1yZW1vdGUtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFHQSwyREFBdUQ7QUFDdkQscUNBQWlDO0FBQ2pDLGlDQUFvRDtBQUNwRCxpREFBcUM7QUFTckMsK0NBQStDO0FBQy9DLE1BQXNCLG9CQUNwQixTQUFRLG9DQUFnQjtJQUt4QixZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDTyxPQUFlLEVBQ2YsTUFBc0M7UUFFdkQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztRQUgvQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsV0FBTSxHQUFOLE1BQU0sQ0FBZ0M7SUFHekQsQ0FBQztJQUVNLFNBQVMsQ0FBQyxNQUFjO1FBQzdCLE9BQU8sY0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU0sU0FBUyxDQUFDLE1BQWM7UUFDN0IsT0FBTyxjQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTSxPQUFPLENBQUMsTUFBYztRQUMzQixPQUFPLGNBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVNLFVBQVUsQ0FBQyxNQUFjO1FBQzlCLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTSxHQUFHLENBQUMsTUFBYztRQUN2QixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU8seUJBQXlCLENBQUMsa0JBQTBCO1FBQzFELE9BQU8sSUFBQSxrQkFBRyxFQUNSLCtCQUErQixJQUFJLENBQUMsZ0JBQWdCLFlBQVksa0JBQWtCLEVBQUUsRUFDcEYsSUFBSSxDQUFDLFVBQVUsQ0FDaEIsQ0FBQztJQUNKLENBQUM7SUFFTyxhQUFhO1FBQ25CLE1BQU0sU0FBUyxHQUFHLElBQUEsc0JBQWUsRUFBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdEQsT0FBTyxTQUFTLENBQUMsU0FBUyxDQUFDO1FBQzNCLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUMxQixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxjQUFjO1FBQ25CLE9BQU87WUFDTCxJQUFJLEVBQUU7Z0JBQ0osc0JBQXNCLEVBQUU7b0JBQ3RCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsSUFBQSxnQkFBUyxFQUNoQzt3QkFDRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87d0JBQ3JCLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVM7d0JBQ2hDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVE7d0JBQzlCLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFO3FCQUM3QixFQUNELElBQUksQ0FBQyxZQUFZLENBQ2xCO2lCQUNGO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNoQixPQUFPO1lBQ0wsSUFBSSxFQUFFO2dCQUNKLHNCQUFzQixFQUFFO29CQUN0QixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUEsZ0JBQVMsRUFDaEM7d0JBQ0UsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO3dCQUNyQixTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTO3dCQUNoQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO3dCQUM5QixNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRTtxQkFDN0IsRUFDRCxJQUFJLENBQUMsWUFBWSxDQUNsQjtpQkFDRjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFDTSxVQUFVO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNDLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELE9BQU87WUFDTCxTQUFTLEVBQUU7Z0JBQ1Qsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO2FBQ3ZEO1NBQ0YsQ0FBQztJQUNKLENBQUM7O0FBcEdILG9EQXFHQzs7O0FBakd3QixtQ0FBYyxHQUFHLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1FbGVtZW50IH0gZnJvbSBcIi4vdGVycmFmb3JtLWVsZW1lbnRcIjtcbmltcG9ydCB7IFRva2VuIH0gZnJvbSBcIi4vdG9rZW5zXCI7XG5pbXBvcnQgeyBkZWVwTWVyZ2UsIGtleXNUb1NuYWtlQ2FzZSB9IGZyb20gXCIuL3V0aWxcIjtcbmltcG9ydCB7IHJlZiB9IGZyb20gXCIuL3RmRXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgSVJlc29sdmFibGUgfSBmcm9tIFwiLi90b2tlbnMvcmVzb2x2YWJsZVwiO1xuaW1wb3J0IHsgSVRlcnJhZm9ybUFkZHJlc3NhYmxlIH0gZnJvbSBcIi4vdGVycmFmb3JtLWFkZHJlc3NhYmxlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVRlcnJhZm9ybVJlbW90ZVN0YXRlQ29uZmlnIHtcbiAgcmVhZG9ubHkgd29ya3NwYWNlPzogc3RyaW5nO1xuICByZWFkb25seSBkZWZhdWx0cz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGVycmFmb3JtUmVtb3RlU3RhdGVcbiAgZXh0ZW5kcyBUZXJyYWZvcm1FbGVtZW50XG4gIGltcGxlbWVudHMgSVRlcnJhZm9ybUFkZHJlc3NhYmxlXG57XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdGZSZXNvdXJjZVR5cGUgPSBcInRlcnJhZm9ybV9yZW1vdGVfc3RhdGVcIjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBiYWNrZW5kOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IERhdGFUZXJyYWZvcm1SZW1vdGVTdGF0ZUNvbmZpZyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBcImRhdGEudGVycmFmb3JtX3JlbW90ZV9zdGF0ZVwiKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTdHJpbmcob3V0cHV0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyh0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUob3V0cHV0KSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TnVtYmVyKG91dHB1dDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gVG9rZW4uYXNOdW1iZXIodGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKG91dHB1dCkpO1xuICB9XG5cbiAgcHVibGljIGdldExpc3Qob3V0cHV0OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFRva2VuLmFzTGlzdCh0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUob3V0cHV0KSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Qm9vbGVhbihvdXRwdXQ6IHN0cmluZyk6IElSZXNvbHZhYmxlIHtcbiAgICByZXR1cm4gdGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKG91dHB1dCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0KG91dHB1dDogc3RyaW5nKTogSVJlc29sdmFibGUge1xuICAgIHJldHVybiB0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUob3V0cHV0KTtcbiAgfVxuXG4gIHByaXZhdGUgaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZyk6IElSZXNvbHZhYmxlIHtcbiAgICByZXR1cm4gcmVmKFxuICAgICAgYGRhdGEudGVycmFmb3JtX3JlbW90ZV9zdGF0ZS4ke3RoaXMuZnJpZW5kbHlVbmlxdWVJZH0ub3V0cHV0cy4ke3RlcnJhZm9ybUF0dHJpYnV0ZX1gLFxuICAgICAgdGhpcy5jZGt0ZlN0YWNrLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RDb25maWcoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIGNvbnN0IGNvbmZpZ09iaiA9IGtleXNUb1NuYWtlQ2FzZSh7IC4uLnRoaXMuY29uZmlnIH0pO1xuICAgIGRlbGV0ZSBjb25maWdPYmoud29ya3NwYWNlO1xuICAgIGRlbGV0ZSBjb25maWdPYmouZGVmYXVsdHM7XG4gICAgcmV0dXJuIGNvbmZpZ09iajtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHRoaXMgcmVzb3VyY2UgdG8gdGhlIHRlcnJhZm9ybSBKU09OIG91dHB1dC5cbiAgICovXG4gIHB1YmxpYyB0b0hjbFRlcnJhZm9ybSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHRlcnJhZm9ybV9yZW1vdGVfc3RhdGU6IHtcbiAgICAgICAgICBbdGhpcy5mcmllbmRseVVuaXF1ZUlkXTogZGVlcE1lcmdlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBiYWNrZW5kOiB0aGlzLmJhY2tlbmQsXG4gICAgICAgICAgICAgIHdvcmtzcGFjZTogdGhpcy5jb25maWcud29ya3NwYWNlLFxuICAgICAgICAgICAgICBkZWZhdWx0czogdGhpcy5jb25maWcuZGVmYXVsdHMsXG4gICAgICAgICAgICAgIGNvbmZpZzogdGhpcy5leHRyYWN0Q29uZmlnKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5yYXdPdmVycmlkZXMsXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHRoaXMgcmVzb3VyY2UgdG8gdGhlIHRlcnJhZm9ybSBKU09OIG91dHB1dC5cbiAgICovXG4gIHB1YmxpYyB0b1RlcnJhZm9ybSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHRlcnJhZm9ybV9yZW1vdGVfc3RhdGU6IHtcbiAgICAgICAgICBbdGhpcy5mcmllbmRseVVuaXF1ZUlkXTogZGVlcE1lcmdlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBiYWNrZW5kOiB0aGlzLmJhY2tlbmQsXG4gICAgICAgICAgICAgIHdvcmtzcGFjZTogdGhpcy5jb25maWcud29ya3NwYWNlLFxuICAgICAgICAgICAgICBkZWZhdWx0czogdGhpcy5jb25maWcuZGVmYXVsdHMsXG4gICAgICAgICAgICAgIGNvbmZpZzogdGhpcy5leHRyYWN0Q29uZmlnKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5yYXdPdmVycmlkZXMsXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuICBwdWJsaWMgdG9NZXRhZGF0YSgpOiBhbnkge1xuICAgIGlmICghT2JqZWN0LmtleXModGhpcy5yYXdPdmVycmlkZXMpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBvdmVycmlkZXM6IHtcbiAgICAgICAgdGVycmFmb3JtX3JlbW90ZV9zdGF0ZTogT2JqZWN0LmtleXModGhpcy5yYXdPdmVycmlkZXMpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXX0=
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLXJlbW90ZS1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXJyYWZvcm0tcmVtb3RlLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsMkRBQXVEO0FBQ3ZELHFDQUFpQztBQUNqQyxpQ0FBb0Q7QUFDcEQsaURBQXFDO0FBU3JDLCtDQUErQztBQUMvQyxNQUFzQixvQkFDcEIsU0FBUSxvQ0FBZ0I7SUFLeEIsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ08sT0FBZSxFQUNmLE1BQXNDO1FBRXZELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFIL0IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFdBQU0sR0FBTixNQUFNLENBQWdDO0lBR3pELENBQUM7SUFFTSxTQUFTLENBQUMsTUFBYztRQUM3QixPQUFPLGNBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVNLFNBQVMsQ0FBQyxNQUFjO1FBQzdCLE9BQU8sY0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU0sT0FBTyxDQUFDLE1BQWM7UUFDM0IsT0FBTyxjQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTSxVQUFVLENBQUMsTUFBYztRQUM5QixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU0sR0FBRyxDQUFDLE1BQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVPLHlCQUF5QixDQUFDLGtCQUEwQjtRQUMxRCxPQUFPLElBQUEsa0JBQUcsRUFDUiwrQkFBK0IsSUFBSSxDQUFDLGdCQUFnQixZQUFZLGtCQUFrQixFQUFFLEVBQ3BGLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUM7SUFDSixDQUFDO0lBRU8sYUFBYTtRQUNuQixNQUFNLFNBQVMsR0FBRyxJQUFBLHNCQUFlLEVBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sU0FBUyxDQUFDLFNBQVMsQ0FBQztRQUMzQixPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDMUIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksY0FBYztRQUNuQixPQUFPO1lBQ0wsSUFBSSxFQUFFO2dCQUNKLHNCQUFzQixFQUFFO29CQUN0QixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUEsZ0JBQVMsRUFDaEM7d0JBQ0UsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO3dCQUNyQixTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTO3dCQUNoQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO3dCQUM5QixNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRTtxQkFDN0IsRUFDRCxJQUFJLENBQUMsWUFBWSxDQUNsQjtpQkFDRjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLFdBQVc7UUFDaEIsT0FBTztZQUNMLElBQUksRUFBRTtnQkFDSixzQkFBc0IsRUFBRTtvQkFDdEIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFBLGdCQUFTLEVBQ2hDO3dCQUNFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzt3QkFDckIsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUzt3QkFDaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTt3QkFDOUIsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUU7cUJBQzdCLEVBQ0QsSUFBSSxDQUFDLFlBQVksQ0FDbEI7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBQ00sVUFBVTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxPQUFPO1lBQ0wsU0FBUyxFQUFFO2dCQUNULHNCQUFzQixFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQzthQUN2RDtTQUNGLENBQUM7SUFDSixDQUFDOztBQXBHSCxvREFxR0M7OztBQWpHd0IsbUNBQWMsR0FBRyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgVGVycmFmb3JtRWxlbWVudCB9IGZyb20gXCIuL3RlcnJhZm9ybS1lbGVtZW50XCI7XG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gXCIuL3Rva2Vuc1wiO1xuaW1wb3J0IHsgZGVlcE1lcmdlLCBrZXlzVG9TbmFrZUNhc2UgfSBmcm9tIFwiLi91dGlsXCI7XG5pbXBvcnQgeyByZWYgfSBmcm9tIFwiLi90ZkV4cHJlc3Npb25cIjtcbmltcG9ydCB7IElSZXNvbHZhYmxlIH0gZnJvbSBcIi4vdG9rZW5zL3Jlc29sdmFibGVcIjtcbmltcG9ydCB7IElUZXJyYWZvcm1BZGRyZXNzYWJsZSB9IGZyb20gXCIuL3RlcnJhZm9ybS1hZGRyZXNzYWJsZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFUZXJyYWZvcm1SZW1vdGVTdGF0ZUNvbmZpZyB7XG4gIHJlYWRvbmx5IHdvcmtzcGFjZT86IHN0cmluZztcbiAgcmVhZG9ubHkgZGVmYXVsdHM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRlcnJhZm9ybVJlbW90ZVN0YXRlXG4gIGV4dGVuZHMgVGVycmFmb3JtRWxlbWVudFxuICBpbXBsZW1lbnRzIElUZXJyYWZvcm1BZGRyZXNzYWJsZVxue1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHRmUmVzb3VyY2VUeXBlID0gXCJ0ZXJyYWZvcm1fcmVtb3RlX3N0YXRlXCI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYmFja2VuZDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBEYXRhVGVycmFmb3JtUmVtb3RlU3RhdGVDb25maWcsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgXCJkYXRhLnRlcnJhZm9ybV9yZW1vdGVfc3RhdGVcIik7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RyaW5nKG91dHB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmcodGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKG91dHB1dCkpO1xuICB9XG5cbiAgcHVibGljIGdldE51bWJlcihvdXRwdXQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIFRva2VuLmFzTnVtYmVyKHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShvdXRwdXQpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMaXN0KG91dHB1dDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBUb2tlbi5hc0xpc3QodGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKG91dHB1dCkpO1xuICB9XG5cbiAgcHVibGljIGdldEJvb2xlYW4ob3V0cHV0OiBzdHJpbmcpOiBJUmVzb2x2YWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShvdXRwdXQpO1xuICB9XG5cbiAgcHVibGljIGdldChvdXRwdXQ6IHN0cmluZyk6IElSZXNvbHZhYmxlIHtcbiAgICByZXR1cm4gdGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKG91dHB1dCk7XG4gIH1cblxuICBwcml2YXRlIGludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpOiBJUmVzb2x2YWJsZSB7XG4gICAgcmV0dXJuIHJlZihcbiAgICAgIGBkYXRhLnRlcnJhZm9ybV9yZW1vdGVfc3RhdGUuJHt0aGlzLmZyaWVuZGx5VW5pcXVlSWR9Lm91dHB1dHMuJHt0ZXJyYWZvcm1BdHRyaWJ1dGV9YCxcbiAgICAgIHRoaXMuY2RrdGZTdGFjayxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0Q29uZmlnKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICBjb25zdCBjb25maWdPYmogPSBrZXlzVG9TbmFrZUNhc2UoeyAuLi50aGlzLmNvbmZpZyB9KTtcbiAgICBkZWxldGUgY29uZmlnT2JqLndvcmtzcGFjZTtcbiAgICBkZWxldGUgY29uZmlnT2JqLmRlZmF1bHRzO1xuICAgIHJldHVybiBjb25maWdPYmo7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyB0aGlzIHJlc291cmNlIHRvIHRoZSB0ZXJyYWZvcm0gSlNPTiBvdXRwdXQuXG4gICAqL1xuICBwdWJsaWMgdG9IY2xUZXJyYWZvcm0oKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YToge1xuICAgICAgICB0ZXJyYWZvcm1fcmVtb3RlX3N0YXRlOiB7XG4gICAgICAgICAgW3RoaXMuZnJpZW5kbHlVbmlxdWVJZF06IGRlZXBNZXJnZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmFja2VuZDogdGhpcy5iYWNrZW5kLFxuICAgICAgICAgICAgICB3b3Jrc3BhY2U6IHRoaXMuY29uZmlnLndvcmtzcGFjZSxcbiAgICAgICAgICAgICAgZGVmYXVsdHM6IHRoaXMuY29uZmlnLmRlZmF1bHRzLFxuICAgICAgICAgICAgICBjb25maWc6IHRoaXMuZXh0cmFjdENvbmZpZygpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMucmF3T3ZlcnJpZGVzLFxuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWRkcyB0aGlzIHJlc291cmNlIHRvIHRoZSB0ZXJyYWZvcm0gSlNPTiBvdXRwdXQuXG4gICAqL1xuICBwdWJsaWMgdG9UZXJyYWZvcm0oKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YToge1xuICAgICAgICB0ZXJyYWZvcm1fcmVtb3RlX3N0YXRlOiB7XG4gICAgICAgICAgW3RoaXMuZnJpZW5kbHlVbmlxdWVJZF06IGRlZXBNZXJnZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmFja2VuZDogdGhpcy5iYWNrZW5kLFxuICAgICAgICAgICAgICB3b3Jrc3BhY2U6IHRoaXMuY29uZmlnLndvcmtzcGFjZSxcbiAgICAgICAgICAgICAgZGVmYXVsdHM6IHRoaXMuY29uZmlnLmRlZmF1bHRzLFxuICAgICAgICAgICAgICBjb25maWc6IHRoaXMuZXh0cmFjdENvbmZpZygpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMucmF3T3ZlcnJpZGVzLFxuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgcHVibGljIHRvTWV0YWRhdGEoKTogYW55IHtcbiAgICBpZiAoIU9iamVjdC5rZXlzKHRoaXMucmF3T3ZlcnJpZGVzKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgb3ZlcnJpZGVzOiB7XG4gICAgICAgIHRlcnJhZm9ybV9yZW1vdGVfc3RhdGU6IE9iamVjdC5rZXlzKHRoaXMucmF3T3ZlcnJpZGVzKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -34,5 +34,5 @@ class TerraformResourceTargets {
34
34
  }
35
35
  exports.TerraformResourceTargets = TerraformResourceTargets;
36
36
  _a = JSII_RTTI_SYMBOL_1;
37
- TerraformResourceTargets[_a] = { fqn: "cdktn.TerraformResourceTargets", version: "0.23.1" };
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLXJlc291cmNlLXRhcmdldHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZXJyYWZvcm0tcmVzb3VyY2UtdGFyZ2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7R0FHRztBQUVILHFDQUFrRTtBQUdsRTs7R0FFRztBQUNILE1BQWEsd0JBQXdCO0lBQXJDO1FBQ1UsdUJBQWtCLEdBQW1DLElBQUksR0FBRyxFQUdqRSxDQUFDO0tBMEJMO0lBeEJTLGtCQUFrQjtRQUN4QixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQ2xELENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsRUFDekUsRUFBRSxDQUNILENBQUM7SUFDSixDQUFDO0lBRU0saUJBQWlCLENBQUMsUUFBMkIsRUFBRSxNQUFjO1FBQ2xFLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sSUFBQSw2QkFBb0IsRUFDeEIsTUFBTSxFQUNOLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsZ0JBQWdCLENBQ3RELENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLG1CQUFtQixDQUFDLE1BQWM7UUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUEseUJBQWdCLEVBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7O0FBN0JILDREQThCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluYy5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4gKi9cblxuaW1wb3J0IHsgbW92ZVRhcmdldEFscmVhZHlTZXQsIG1vdmVUYXJnZXROb3RTZXQgfSBmcm9tIFwiLi9lcnJvcnNcIjtcbmltcG9ydCB7IFRlcnJhZm9ybVJlc291cmNlIH0gZnJvbSBcIi4vdGVycmFmb3JtLXJlc291cmNlXCI7XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIFRlcnJhZm9ybVJlc291cmNlVGFyZ2V0cyB7XG4gIHByaXZhdGUgX3Jlc291cmNlVGFyZ2V0TWFwOiBNYXA8c3RyaW5nLCBUZXJyYWZvcm1SZXNvdXJjZT4gPSBuZXcgTWFwPFxuICAgIHN0cmluZyxcbiAgICBUZXJyYWZvcm1SZXNvdXJjZVxuICA+KCk7XG5cbiAgcHJpdmF0ZSBwcmV0dHlQcmludEVudHJpZXMoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9yZXNvdXJjZVRhcmdldE1hcC5lbnRyaWVzKCldLnJlZHVjZShcbiAgICAgIChhY2N1bSwgY3VycikgPT4gYWNjdW0gKyBcIlxcblwiICsgYCR7Y3VyclswXX06ICR7Y3VyclsxXS5mcmllbmRseVVuaXF1ZUlkfWAsXG4gICAgICBcIlwiLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkUmVzb3VyY2VUYXJnZXQocmVzb3VyY2U6IFRlcnJhZm9ybVJlc291cmNlLCB0YXJnZXQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yZXNvdXJjZVRhcmdldE1hcC5oYXModGFyZ2V0KSkge1xuICAgICAgdGhyb3cgbW92ZVRhcmdldEFscmVhZHlTZXQoXG4gICAgICAgIHRhcmdldCxcbiAgICAgICAgdGhpcy5fcmVzb3VyY2VUYXJnZXRNYXAuZ2V0KHRhcmdldCk/LmZyaWVuZGx5VW5pcXVlSWQsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9yZXNvdXJjZVRhcmdldE1hcC5zZXQodGFyZ2V0LCByZXNvdXJjZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVzb3VyY2VCeVRhcmdldCh0YXJnZXQ6IHN0cmluZyk6IFRlcnJhZm9ybVJlc291cmNlIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9yZXNvdXJjZVRhcmdldE1hcC5nZXQodGFyZ2V0KTtcbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgdGhyb3cgbW92ZVRhcmdldE5vdFNldCh0YXJnZXQsIHRoaXMucHJldHR5UHJpbnRFbnRyaWVzKCkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
37
+ TerraformResourceTargets[_a] = { fqn: "cdktn.TerraformResourceTargets", version: "0.23.2" };
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLXJlc291cmNlLXRhcmdldHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdGVycmFmb3JtLXJlc291cmNlLXRhcmdldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7O0dBR0c7QUFFSCxxQ0FBa0U7QUFHbEU7O0dBRUc7QUFDSCxNQUFhLHdCQUF3QjtJQUFyQztRQUNVLHVCQUFrQixHQUFtQyxJQUFJLEdBQUcsRUFHakUsQ0FBQztLQTBCTDtJQXhCUyxrQkFBa0I7UUFDeEIsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUNsRCxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQ3pFLEVBQUUsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVNLGlCQUFpQixDQUFDLFFBQTJCLEVBQUUsTUFBYztRQUNsRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxNQUFNLElBQUEsNkJBQW9CLEVBQ3hCLE1BQU0sRUFDTixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQixDQUN0RCxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxNQUFjO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFBLHlCQUFnQixFQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOztBQTdCSCw0REE4QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCB7IG1vdmVUYXJnZXRBbHJlYWR5U2V0LCBtb3ZlVGFyZ2V0Tm90U2V0IH0gZnJvbSBcIi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1SZXNvdXJjZSB9IGZyb20gXCIuL3RlcnJhZm9ybS1yZXNvdXJjZVwiO1xuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBUZXJyYWZvcm1SZXNvdXJjZVRhcmdldHMge1xuICBwcml2YXRlIF9yZXNvdXJjZVRhcmdldE1hcDogTWFwPHN0cmluZywgVGVycmFmb3JtUmVzb3VyY2U+ID0gbmV3IE1hcDxcbiAgICBzdHJpbmcsXG4gICAgVGVycmFmb3JtUmVzb3VyY2VcbiAgPigpO1xuXG4gIHByaXZhdGUgcHJldHR5UHJpbnRFbnRyaWVzKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5fcmVzb3VyY2VUYXJnZXRNYXAuZW50cmllcygpXS5yZWR1Y2UoXG4gICAgICAoYWNjdW0sIGN1cnIpID0+IGFjY3VtICsgXCJcXG5cIiArIGAke2N1cnJbMF19OiAke2N1cnJbMV0uZnJpZW5kbHlVbmlxdWVJZH1gLFxuICAgICAgXCJcIixcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZFJlc291cmNlVGFyZ2V0KHJlc291cmNlOiBUZXJyYWZvcm1SZXNvdXJjZSwgdGFyZ2V0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fcmVzb3VyY2VUYXJnZXRNYXAuaGFzKHRhcmdldCkpIHtcbiAgICAgIHRocm93IG1vdmVUYXJnZXRBbHJlYWR5U2V0KFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIHRoaXMuX3Jlc291cmNlVGFyZ2V0TWFwLmdldCh0YXJnZXQpPy5mcmllbmRseVVuaXF1ZUlkLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fcmVzb3VyY2VUYXJnZXRNYXAuc2V0KHRhcmdldCwgcmVzb3VyY2UpO1xuICB9XG5cbiAgcHVibGljIGdldFJlc291cmNlQnlUYXJnZXQodGFyZ2V0OiBzdHJpbmcpOiBUZXJyYWZvcm1SZXNvdXJjZSB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fcmVzb3VyY2VUYXJnZXRNYXAuZ2V0KHRhcmdldCk7XG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHRocm93IG1vdmVUYXJnZXROb3RTZXQodGFyZ2V0LCB0aGlzLnByZXR0eVByaW50RW50cmllcygpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
@@ -335,5 +335,5 @@ class TerraformResource extends terraform_element_1.TerraformElement {
335
335
  }
336
336
  exports.TerraformResource = TerraformResource;
337
337
  _a = JSII_RTTI_SYMBOL_1;
338
- TerraformResource[_a] = { fqn: "cdktn.TerraformResource", version: "0.23.1" };
339
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLXJlc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVycmFmb3JtLXJlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFxRUEsb0RBcUJDOztBQXZGRCxxQ0FBaUM7QUFDakMsMkRBQXVEO0FBRXZELGlDQUtnQjtBQUVoQixpREFBaUQ7QUFLakQsdURBQW1EO0FBS25ELGlFQUFpRTtBQUNqRSxpQ0FBa0M7QUFNbEMseUZBQW9GO0FBQ3BGLHVEQUFtRDtBQUNuRCxxQ0FLa0I7QUFFbEIsTUFBTSx5QkFBeUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUF5QnhFOzs7O0dBSUc7QUFDSCxTQUFnQixvQkFBb0IsQ0FDbEMsU0FBc0M7SUFFdEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2YsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU87UUFDTCxHQUFHLFNBQVM7UUFDWixHQUFHLENBQUMsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE1BQU07WUFDdkMsQ0FBQyxDQUFDO2dCQUNFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDM0QsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQzt3QkFDMUIsT0FBTyxDQUFDLENBQUM7b0JBQ1gsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQztvQkFDZixDQUFDO2dCQUNILENBQUMsQ0FBQzthQUNIO1lBQ0gsQ0FBQyxDQUFDLFNBQVMsQ0FBQztLQUNmLENBQUM7QUFDSixDQUFDO0FBd0NELCtDQUErQztBQUMvQyxNQUFhLGlCQUNYLFNBQVEsb0NBQWdCO0lBc0J4QixZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE1BQStCO1FBQ3ZFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1B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Q2hCLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDNUQsSUFBSSxFQUFFLEVBQUU7U0FDVCxDQUFDO0lBQ0osQ0FBQzs7QUFwWkgsOENBcVpDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gXCIuL3Rva2Vuc1wiO1xuaW1wb3J0IHsgVGVycmFmb3JtRWxlbWVudCB9IGZyb20gXCIuL3RlcnJhZm9ybS1lbGVtZW50XCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1Qcm92aWRlciB9IGZyb20gXCIuL3RlcnJhZm9ybS1wcm92aWRlclwiO1xuaW1wb3J0IHtcbiAga2V5c1RvU25ha2VDYXNlLFxuICBkZWVwTWVyZ2UsXG4gIHByb2Nlc3NEeW5hbWljQXR0cmlidXRlcyxcbiAgcHJvY2Vzc0R5bmFtaWNBdHRyaWJ1dGVzRm9ySGNsLFxufSBmcm9tIFwiLi91dGlsXCI7XG5pbXBvcnQgeyBJVGVycmFmb3JtRGVwZW5kYWJsZSB9IGZyb20gXCIuL3RlcnJhZm9ybS1kZXBlbmRhYmxlXCI7XG5pbXBvcnQgeyByZWYsIGRlcGVuZGFibGUgfSBmcm9tIFwiLi90ZkV4cHJlc3Npb25cIjtcbmltcG9ydCB7IElSZXNvbHZhYmxlIH0gZnJvbSBcIi4vdG9rZW5zL3Jlc29sdmFibGVcIjtcbmltcG9ydCB7IElJbnRlcnBvbGF0aW5nUGFyZW50IH0gZnJvbSBcIi4vdGVycmFmb3JtLWFkZHJlc3NhYmxlXCI7XG5pbXBvcnQgeyBJVGVycmFmb3JtSXRlcmF0b3IgfSBmcm9tIFwiLi90ZXJyYWZvcm0taXRlcmF0b3JcIjtcbmltcG9ydCB7IFByZWNvbmRpdGlvbiwgUG9zdGNvbmRpdGlvbiB9IGZyb20gXCIuL3RlcnJhZm9ybS1jb25kaXRpb25zXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1Db3VudCB9IGZyb20gXCIuL3RlcnJhZm9ybS1jb3VudFwiO1xuaW1wb3J0IHtcbiAgU1NIUHJvdmlzaW9uZXJDb25uZWN0aW9uLFxuICBXaW5ybVByb3Zpc2lvbmVyQ29ubmVjdGlvbixcbn0gZnJvbSBcIi4vdGVycmFmb3JtLXByb3Zpc2lvbmVyXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuaW1wb3J0IGFzc2VydCA9IHJlcXVpcmUoXCJhc3NlcnRcIik7XG5pbXBvcnQge1xuICBGaWxlUHJvdmlzaW9uZXIsXG4gIExvY2FsRXhlY1Byb3Zpc2lvbmVyLFxuICBSZW1vdGVFeGVjUHJvdmlzaW9uZXIsXG59IGZyb20gXCIuL3RlcnJhZm9ybS1wcm92aXNpb25lclwiO1xuaW1wb3J0IHsgVmFsaWRhdGVUZXJyYWZvcm1WZXJzaW9uIH0gZnJvbSBcIi4vdmFsaWRhdGlvbnMvdmFsaWRhdGUtdGVycmFmb3JtLXZlcnNpb25cIjtcbmltcG9ydCB7IFRlcnJhZm9ybVN0YWNrIH0gZnJvbSBcIi4vdGVycmFmb3JtLXN0YWNrXCI7XG5pbXBvcnQge1xuICBtb3ZlZFRvUmVzb3VyY2VPZkRpZmZlcmVudFR5cGUsXG4gIHJlc291cmNlR2l2ZW5Ud29Nb3ZlT3BlcmF0aW9uc0J5SWQsXG4gIHJlc291cmNlR2l2ZW5Ud29Nb3ZlT3BlcmF0aW9uc0J5VGFyZ2V0LFxuICByZXNvdXJjZUdpdmVuVHdvTW92ZU9wZXJhdGlvbnNCeVRhcmdldEFuZElkLFxufSBmcm9tIFwiLi9lcnJvcnNcIjtcblxuY29uc3QgVEVSUkFGT1JNX1JFU09VUkNFX1NZTUJPTCA9IFN5bWJvbC5mb3IoXCJjZGt0Zi9UZXJyYWZvcm1SZXNvdXJjZVwiKTtcblxuZXhwb3J0IGludGVyZmFjZSBJVGVycmFmb3JtUmVzb3VyY2Uge1xuICByZWFkb25seSB0ZXJyYWZvcm1SZXNvdXJjZVR5cGU6IHN0cmluZztcbiAgcmVhZG9ubHkgZnFuOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZyaWVuZGx5VW5pcXVlSWQ6IHN0cmluZztcblxuICBkZXBlbmRzT24/OiBzdHJpbmdbXTtcbiAgY291bnQ/OiBudW1iZXIgfCBUZXJyYWZvcm1Db3VudDtcbiAgcHJvdmlkZXI/OiBUZXJyYWZvcm1Qcm92aWRlcjtcbiAgbGlmZWN5Y2xlPzogVGVycmFmb3JtUmVzb3VyY2VMaWZlY3ljbGU7XG4gIGZvckVhY2g/OiBJVGVycmFmb3JtSXRlcmF0b3I7XG5cbiAgaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZyk6IElSZXNvbHZhYmxlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybVJlc291cmNlTGlmZWN5Y2xlIHtcbiAgcmVhZG9ubHkgY3JlYXRlQmVmb3JlRGVzdHJveT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHByZXZlbnREZXN0cm95PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaWdub3JlQ2hhbmdlcz86IHN0cmluZ1tdIHwgXCJhbGxcIjtcbiAgcmVhZG9ubHkgcmVwbGFjZVRyaWdnZXJlZEJ5PzogQXJyYXk8SVRlcnJhZm9ybURlcGVuZGFibGUgfCBzdHJpbmc+O1xuICByZWFkb25seSBwcmVjb25kaXRpb24/OiBQcmVjb25kaXRpb25bXTtcbiAgcmVhZG9ubHkgcG9zdGNvbmRpdGlvbj86IFBvc3Rjb25kaXRpb25bXTtcbn1cblxuLyoqXG4gKiBwcmVwYXJlcyBhIGxpZmVjeWNsZSBvYmplY3QgZm9yIGJlaW5nIHJlbmRlcmVkIGFzIEpTT05cbiAqIGN1cnJlbnRseSB0aGlzIGZ1bmN0aW9uOlxuICogIC0gY29udmVydHMgYWxsIHJlcGxhY2VUcmlnZ2VyZWRCeSBpdGVtcyB0aGF0IGFyZSBJVGVycmFmb3JtRGVwZW5kYWJsZXMgdG8gc3RyaW5nc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGlmZWN5Y2xlVG9UZXJyYWZvcm0oXG4gIGxpZmVjeWNsZT86IFRlcnJhZm9ybVJlc291cmNlTGlmZWN5Y2xlLFxuKTogVGVycmFmb3JtUmVzb3VyY2VMaWZlY3ljbGUgfCB1bmRlZmluZWQge1xuICBpZiAoIWxpZmVjeWNsZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLmxpZmVjeWNsZSxcbiAgICAuLi4obGlmZWN5Y2xlPy5yZXBsYWNlVHJpZ2dlcmVkQnk/Lmxlbmd0aFxuICAgICAgPyB7XG4gICAgICAgICAgcmVwbGFjZVRyaWdnZXJlZEJ5OiBsaWZlY3ljbGU/LnJlcGxhY2VUcmlnZ2VyZWRCeT8ubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHggPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4geC5mcW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkKSxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1NZXRhQXJndW1lbnRzIHtcbiAgcmVhZG9ubHkgZGVwZW5kc09uPzogSVRlcnJhZm9ybURlcGVuZGFibGVbXTtcbiAgcmVhZG9ubHkgY291bnQ/OiBudW1iZXIgfCBUZXJyYWZvcm1Db3VudDtcbiAgcmVhZG9ubHkgcHJvdmlkZXI/OiBUZXJyYWZvcm1Qcm92aWRlcjtcbiAgcmVhZG9ubHkgbGlmZWN5Y2xlPzogVGVycmFmb3JtUmVzb3VyY2VMaWZlY3ljbGU7XG4gIHJlYWRvbmx5IGZvckVhY2g/OiBJVGVycmFmb3JtSXRlcmF0b3I7XG4gIHJlYWRvbmx5IHByb3Zpc2lvbmVycz86IEFycmF5PFxuICAgIEZpbGVQcm92aXNpb25lciB8IExvY2FsRXhlY1Byb3Zpc2lvbmVyIHwgUmVtb3RlRXhlY1Byb3Zpc2lvbmVyXG4gID47XG4gIHJlYWRvbmx5IGNvbm5lY3Rpb24/OiBTU0hQcm92aXNpb25lckNvbm5lY3Rpb24gfCBXaW5ybVByb3Zpc2lvbmVyQ29ubmVjdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1Qcm92aWRlckdlbmVyYXRvck1ldGFkYXRhIHtcbiAgcmVhZG9ubHkgcHJvdmlkZXJOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByb3ZpZGVyVmVyc2lvbkNvbnN0cmFpbnQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByb3ZpZGVyVmVyc2lvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1SZXNvdXJjZUNvbmZpZyBleHRlbmRzIFRlcnJhZm9ybU1ldGFBcmd1bWVudHMge1xuICByZWFkb25seSB0ZXJyYWZvcm1SZXNvdXJjZVR5cGU6IHN0cmluZztcbiAgcmVhZG9ubHkgdGVycmFmb3JtR2VuZXJhdG9yTWV0YWRhdGE/OiBUZXJyYWZvcm1Qcm92aWRlckdlbmVyYXRvck1ldGFkYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybVJlc291cmNlTW92ZUJ5VGFyZ2V0IHtcbiAgcmVhZG9ubHkgbW92ZVRhcmdldDogc3RyaW5nO1xuICByZWFkb25seSBpbmRleD86IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1SZXNvdXJjZU1vdmVCeUlkIHtcbiAgcmVhZG9ubHkgdG86IHN0cmluZztcbiAgcmVhZG9ubHkgZnJvbTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybVJlc291cmNlSW1wb3J0IHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcHJvdmlkZXI/OiBUZXJyYWZvcm1Qcm92aWRlcjtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBUZXJyYWZvcm1SZXNvdXJjZVxuICBleHRlbmRzIFRlcnJhZm9ybUVsZW1lbnRcbiAgaW1wbGVtZW50cyBJVGVycmFmb3JtUmVzb3VyY2UsIElUZXJyYWZvcm1EZXBlbmRhYmxlLCBJSW50ZXJwb2xhdGluZ1BhcmVudFxue1xuICBwdWJsaWMgcmVhZG9ubHkgdGVycmFmb3JtUmVzb3VyY2VUeXBlOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSB0ZXJyYWZvcm1HZW5lcmF0b3JNZXRhZGF0YT86IFRlcnJhZm9ybVByb3ZpZGVyR2VuZXJhdG9yTWV0YWRhdGE7XG5cbiAgLy8gVGVycmFmb3JtTWV0YUFyZ3VtZW50c1xuXG4gIHB1YmxpYyBkZXBlbmRzT24/OiBzdHJpbmdbXTtcbiAgcHVibGljIGNvdW50PzogbnVtYmVyIHwgVGVycmFmb3JtQ291bnQ7XG4gIHB1YmxpYyBwcm92aWRlcj86IFRlcnJhZm9ybVByb3ZpZGVyO1xuICBwdWJsaWMgbGlmZWN5Y2xlPzogVGVycmFmb3JtUmVzb3VyY2VMaWZlY3ljbGU7XG4gIHB1YmxpYyBmb3JFYWNoPzogSVRlcnJhZm9ybUl0ZXJhdG9yO1xuICBwdWJsaWMgY29ubmVjdGlvbj86IFNTSFByb3Zpc2lvbmVyQ29ubmVjdGlvbiB8IFdpbnJtUHJvdmlzaW9uZXJDb25uZWN0aW9uO1xuICBwdWJsaWMgcHJvdmlzaW9uZXJzPzogQXJyYXk8XG4gICAgRmlsZVByb3Zpc2lvbmVyIHwgTG9jYWxFeGVjUHJvdmlzaW9uZXIgfCBSZW1vdGVFeGVjUHJvdmlzaW9uZXJcbiAgPjtcbiAgcHJpdmF0ZSBfaW1wb3J0ZWQ/OiBUZXJyYWZvcm1SZXNvdXJjZUltcG9ydDtcbiAgcHJpdmF0ZSBfbW92ZWRCeVRhcmdldD86IFRlcnJhZm9ybVJlc291cmNlTW92ZUJ5VGFyZ2V0O1xuICBwcml2YXRlIF9tb3ZlZEJ5SWQ/OiBUZXJyYWZvcm1SZXNvdXJjZU1vdmVCeUlkO1xuICBwcml2YXRlIF9oYXNNb3ZlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGNvbmZpZzogVGVycmFmb3JtUmVzb3VyY2VDb25maWcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIGNvbmZpZy50ZXJyYWZvcm1SZXNvdXJjZVR5cGUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBURVJSQUZPUk1fUkVTT1VSQ0VfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGUgPSBjb25maWcudGVycmFmb3JtUmVzb3VyY2VUeXBlO1xuICAgIHRoaXMudGVycmFmb3JtR2VuZXJhdG9yTWV0YWRhdGEgPSBjb25maWcudGVycmFmb3JtR2VuZXJhdG9yTWV0YWRhdGE7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29uZmlnLmRlcGVuZHNPbikpIHtcbiAgICAgIHRoaXMuZGVwZW5kc09uID0gY29uZmlnLmRlcGVuZHNPbi5tYXAoKGRlcGVuZGVuY3kpID0+XG4gICAgICAgIGRlcGVuZGFibGUoZGVwZW5kZW5jeSksXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmNvdW50ID0gY29uZmlnLmNvdW50O1xuICAgIHRoaXMucHJvdmlkZXIgPSBjb25maWcucHJvdmlkZXI7XG4gICAgdGhpcy5saWZlY3ljbGUgPSBjb25maWcubGlmZWN5Y2xlO1xuICAgIHRoaXMuZm9yRWFjaCA9IGNvbmZpZy5mb3JFYWNoO1xuICAgIHRoaXMucHJvdmlzaW9uZXJzID0gY29uZmlnLnByb3Zpc2lvbmVycztcbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBjb25maWcuY29ubmVjdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNUZXJyYWZvcm1SZXNvdXJjZSh4OiBhbnkpOiB4IGlzIFRlcnJhZm9ybVJlc291cmNlIHtcbiAgICByZXR1cm4gKFxuICAgICAgeCAhPT0gbnVsbCAmJiB0eXBlb2YgeCA9PT0gXCJvYmplY3RcIiAmJiBURVJSQUZPUk1fUkVTT1VSQ0VfU1lNQk9MIGluIHhcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGhhc1Jlc291cmNlTW92ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbW92ZWRCeUlkIHx8IHRoaXMuX21vdmVkQnlUYXJnZXQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RyaW5nQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXROdW1iZXJBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNOdW1iZXIodGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZSkpO1xuICB9XG5cbiAgcHVibGljIGdldExpc3RBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNMaXN0KHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRCb29sZWFuQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGUpO1xuICB9XG5cbiAgcHVibGljIGdldE51bWJlckxpc3RBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNOdW1iZXJMaXN0KFxuICAgICAgdGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTdHJpbmdNYXBBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmdNYXAoXG4gICAgICB0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldE51bWJlck1hcEF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZykge1xuICAgIHJldHVybiBUb2tlbi5hc051bWJlck1hcChcbiAgICAgIHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGUpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Qm9vbGVhbk1hcEF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZykge1xuICAgIHJldHVybiBUb2tlbi5hc0Jvb2xlYW5NYXAoXG4gICAgICB0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldEFueU1hcEF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZykge1xuICAgIHJldHVybiBUb2tlbi5hc0FueU1hcCh0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRlcnJhZm9ybU1ldGFBcmd1bWVudHMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIGFzc2VydChcbiAgICAgICF0aGlzLmZvckVhY2ggfHwgdHlwZW9mIHRoaXMuY291bnQgPT09IFwidW5kZWZpbmVkXCIsXG4gICAgICBgZm9yRWFjaCBhbmQgY291bnQgYXJlIGJvdGggc2V0LCBidXQgdGhleSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiBZb3UgY2FuIG9ubHkgdXNlIGVpdGhlciBvZiB0aGVtLiBDaGVjayB0aGUgcmVzb3VyY2UgYXQgcGF0aDogJHt0aGlzLm5vZGUucGF0aH1gLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGVwZW5kc09uOiB0aGlzLmRlcGVuZHNPbixcbiAgICAgIGNvdW50OiBUZXJyYWZvcm1Db3VudC5pc1RlcnJhZm9ybUNvdW50KHRoaXMuY291bnQpXG4gICAgICAgID8gdGhpcy5jb3VudC50b1RlcnJhZm9ybSgpXG4gICAgICAgIDogdGhpcy5jb3VudCxcbiAgICAgIHByb3ZpZGVyOiB0aGlzLnByb3ZpZGVyPy5mcW4sXG4gICAgICBsaWZlY3ljbGU6IGxpZmVjeWNsZVRvVGVycmFmb3JtKHRoaXMubGlmZWN5Y2xlKSxcbiAgICAgIGZvckVhY2g6IHRoaXMuZm9yRWFjaD8uX2dldEZvckVhY2hFeHByZXNzaW9uKCksXG4gICAgICBjb25uZWN0aW9uOiB0aGlzLmNvbm5lY3Rpb24sXG4gICAgfTtcbiAgfVxuXG4gIC8vIGpzaWkgY2FuJ3QgaGFuZGxlIGFic3RyYWN0IGNsYXNzZXM/XG4gIHByb3RlY3RlZCBzeW50aGVzaXplQXR0cmlidXRlcygpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIHByb3RlY3RlZCBzeW50aGVzaXplSGNsQXR0cmlidXRlcygpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhpcyByZXNvdXJjZSB0byB0aGUgdGVycmFmb3JtIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgcHVibGljIHRvVGVycmFmb3JtKCk6IGFueSB7XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IGRlZXBNZXJnZShcbiAgICAgIHByb2Nlc3NEeW5hbWljQXR0cmlidXRlcyh0aGlzLnN5bnRoZXNpemVBdHRyaWJ1dGVzKCkpLFxuICAgICAga2V5c1RvU25ha2VDYXNlKHRoaXMudGVycmFmb3JtTWV0YUFyZ3VtZW50cyksXG4gICAgICB7XG4gICAgICAgIHByb3Zpc2lvbmVyOiB0aGlzLnByb3Zpc2lvbmVycz8ubWFwKCh7IHR5cGUsIC4uLnByb3BzIH0pID0+ICh7XG4gICAgICAgICAgW3R5cGVdOiBrZXlzVG9TbmFrZUNhc2UocHJvcHMpLFxuICAgICAgICB9KSksXG4gICAgICB9LFxuICAgICAgdGhpcy5yYXdPdmVycmlkZXMsXG4gICAgKTtcblxuICAgIGF0dHJpYnV0ZXNbXCIvL1wiXSA9IHtcbiAgICAgIC4uLihhdHRyaWJ1dGVzW1wiLy9cIl0gPz8ge30pLFxuICAgICAgLi4udGhpcy5jb25zdHJ1Y3ROb2RlTWV0YWRhdGEsXG4gICAgfTtcblxuICAgIGNvbnN0IG1vdmVkQmxvY2sgPSB0aGlzLl9idWlsZE1vdmVkQmxvY2soKTtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzb3VyY2U6IHRoaXMuX2hhc01vdmVkXG4gICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgIDoge1xuICAgICAgICAgICAgW3RoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlXToge1xuICAgICAgICAgICAgICBbdGhpcy5mcmllbmRseVVuaXF1ZUlkXTogYXR0cmlidXRlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgIG1vdmVkOiBtb3ZlZEJsb2NrXG4gICAgICAgID8gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0bzogbW92ZWRCbG9jay50byxcbiAgICAgICAgICAgICAgZnJvbTogbW92ZWRCbG9jay5mcm9tLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgaW1wb3J0OiB0aGlzLl9pbXBvcnRlZFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHJvdmlkZXI6IHRoaXMuX2ltcG9ydGVkLnByb3ZpZGVyPy5mcW4sXG4gICAgICAgICAgICAgIGlkOiB0aGlzLl9pbXBvcnRlZC5pZCxcbiAgICAgICAgICAgICAgdG86IGAke3RoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlfS4ke3RoaXMuZnJpZW5kbHlVbmlxdWVJZH1gLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9IY2xUZXJyYWZvcm0oKTogYW55IHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gZGVlcE1lcmdlKFxuICAgICAgcHJvY2Vzc0R5bmFtaWNBdHRyaWJ1dGVzRm9ySGNsKHRoaXMuc3ludGhlc2l6ZUhjbEF0dHJpYnV0ZXMoKSksXG4gICAgICBrZXlzVG9TbmFrZUNhc2UodGhpcy50ZXJyYWZvcm1NZXRhQXJndW1lbnRzKSxcbiAgICAgIHtcbiAgICAgICAgcHJvdmlzaW9uZXI6IHRoaXMucHJvdmlzaW9uZXJzPy5tYXAoKHsgdHlwZSwgLi4ucHJvcHMgfSkgPT4gKHtcbiAgICAgICAgICBbdHlwZV06IHtcbiAgICAgICAgICAgIGlzQmxvY2s6IHRydWUsXG4gICAgICAgICAgICB0eXBlOiBcImxpc3RcIixcbiAgICAgICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICB2YWx1ZToga2V5c1RvU25ha2VDYXNlKHByb3BzKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSksXG4gICAgICB9LFxuICAgICAgdGhpcy5yYXdPdmVycmlkZXMsXG4gICAgKTtcblxuICAgIGF0dHJpYnV0ZXNbXCIvL1wiXSA9IHtcbiAgICAgIC4uLihhdHRyaWJ1dGVzW1wiLy9cIl0gPz8ge30pLFxuICAgICAgLi4udGhpcy5jb25zdHJ1Y3ROb2RlTWV0YWRhdGEsXG4gICAgfTtcblxuICAgIGNvbnN0IG1vdmVkQmxvY2sgPSB0aGlzLl9idWlsZE1vdmVkQmxvY2soKTtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzb3VyY2U6IHRoaXMuX2hhc01vdmVkXG4gICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgIDoge1xuICAgICAgICAgICAgW3RoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlXToge1xuICAgICAgICAgICAgICBbdGhpcy5mcmllbmRseVVuaXF1ZUlkXTogYXR0cmlidXRlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgIG1vdmVkOiBtb3ZlZEJsb2NrXG4gICAgICAgID8gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0bzoge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBtb3ZlZEJsb2NrLnRvLFxuICAgICAgICAgICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgICAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJyZWZlcmVuY2VcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZnJvbToge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBtb3ZlZEJsb2NrLmZyb20sXG4gICAgICAgICAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInJlZmVyZW5jZVwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgaW1wb3J0OiB0aGlzLl9pbXBvcnRlZFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdG86IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogYCR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGV9LiR7dGhpcy5mcmllbmRseVVuaXF1ZUlkfWAsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInJlZmVyZW5jZVwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBpZDoge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLl9pbXBvcnRlZC5pZCxcbiAgICAgICAgICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICAgICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHByb3ZpZGVyOiB0aGlzLl9pbXBvcnRlZC5wcm92aWRlclxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5faW1wb3J0ZWQucHJvdmlkZXIuZnFuLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICAgICAgICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInJlZmVyZW5jZVwiLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9NZXRhZGF0YSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBvdmVycmlkZXM6IE9iamVjdC5rZXlzKHRoaXMucmF3T3ZlcnJpZGVzKS5sZW5ndGhcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBbdGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGVdOiBPYmplY3Qua2V5cyh0aGlzLnJhd092ZXJyaWRlcyksXG4gICAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGltcG9ydHM6IHRoaXMuX2ltcG9ydGVkXG4gICAgICAgID8ge1xuICAgICAgICAgICAgW3RoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlXTogW3RoaXMuZnJpZW5kbHlVbmlxdWVJZF0sXG4gICAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIG1vdmVkOlxuICAgICAgICB0aGlzLl9tb3ZlZEJ5VGFyZ2V0IHx8IHRoaXMuX21vdmVkQnlJZFxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBbdGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGVdOiBbdGhpcy5mcmllbmRseVVuaXF1ZUlkXSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVmKFxuICAgICAgYCR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGV9LiR7dGhpcy5mcmllbmRseVVuaXF1ZUlkfSR7XG4gICAgICAgIHRoaXMuZm9yRWFjaCA/IFwiLipcIiA6IFwiXCJcbiAgICAgIH0uJHt0ZXJyYWZvcm1BdHRyaWJ1dGV9YCxcbiAgICAgIHRoaXMuY2RrdGZTdGFjayxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGltcG9ydEZyb20oaWQ6IHN0cmluZywgcHJvdmlkZXI/OiBUZXJyYWZvcm1Qcm92aWRlcikge1xuICAgIHRoaXMuX2ltcG9ydGVkID0geyBpZCwgcHJvdmlkZXIgfTtcbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbihcbiAgICAgIG5ldyBWYWxpZGF0ZVRlcnJhZm9ybVZlcnNpb24oXG4gICAgICAgIFwiPj0xLjVcIixcbiAgICAgICAgYEltcG9ydCBibG9ja3MgYXJlIG9ubHkgc3VwcG9ydGVkIGZvciBUZXJyYWZvcm0gPj0xLjUuIFBsZWFzZSB1cGdyYWRlIHlvdXIgVGVycmFmb3JtIHZlcnNpb24uYCxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlc291cmNlVGFyZ2V0KG1vdmVUYXJnZXQ6IHN0cmluZykge1xuICAgIHJldHVybiBUZXJyYWZvcm1TdGFjay5vZih0aGlzKS5tb3ZlVGFyZ2V0cy5nZXRSZXNvdXJjZUJ5VGFyZ2V0KG1vdmVUYXJnZXQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkUmVzb3VyY2VUYXJnZXQobW92ZVRhcmdldDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFRlcnJhZm9ybVN0YWNrLm9mKHRoaXMpLm1vdmVUYXJnZXRzLmFkZFJlc291cmNlVGFyZ2V0KFxuICAgICAgdGhpcyxcbiAgICAgIG1vdmVUYXJnZXQsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2J1aWxkTW92ZWRCbG9ja0J5VGFyZ2V0KFxuICAgIG1vdmVkVGFyZ2V0OiBUZXJyYWZvcm1SZXNvdXJjZU1vdmVCeVRhcmdldCxcbiAgKTogeyB0bzogc3RyaW5nOyBmcm9tOiBzdHJpbmcgfSB7XG4gICAgY29uc3QgeyBtb3ZlVGFyZ2V0LCBpbmRleCB9ID0gbW92ZWRUYXJnZXQ7XG4gICAgY29uc3QgcmVzb3VyY2VUb01vdmVUbyA9IHRoaXMuX2dldFJlc291cmNlVGFyZ2V0KG1vdmVUYXJnZXQpO1xuICAgIGlmICh0aGlzLnRlcnJhZm9ybVJlc291cmNlVHlwZSAhPT0gcmVzb3VyY2VUb01vdmVUby50ZXJyYWZvcm1SZXNvdXJjZVR5cGUpIHtcbiAgICAgIHRocm93IG1vdmVkVG9SZXNvdXJjZU9mRGlmZmVyZW50VHlwZShcbiAgICAgICAgbW92ZVRhcmdldCxcbiAgICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGUsXG4gICAgICAgIHJlc291cmNlVG9Nb3ZlVG8udGVycmFmb3JtUmVzb3VyY2VUeXBlLFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgdG8gPSBpbmRleFxuICAgICAgPyB0eXBlb2YgaW5kZXggPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBgJHt0aGlzLnRlcnJhZm9ybVJlc291cmNlVHlwZX0uJHtyZXNvdXJjZVRvTW92ZVRvLmZyaWVuZGx5VW5pcXVlSWR9W1wiJHtpbmRleH1cIl1gXG4gICAgICAgIDogYCR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGV9LiR7cmVzb3VyY2VUb01vdmVUby5mcmllbmRseVVuaXF1ZUlkfVske2luZGV4fV1gXG4gICAgICA6IGAke3RoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlfS4ke3Jlc291cmNlVG9Nb3ZlVG8uZnJpZW5kbHlVbmlxdWVJZH1gO1xuICAgIGNvbnN0IGZyb20gPSBgJHt0aGlzLnRlcnJhZm9ybVJlc291cmNlVHlwZX0uJHt0aGlzLmZyaWVuZGx5VW5pcXVlSWR9YDtcbiAgICByZXR1cm4geyB0bywgZnJvbSB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfYnVpbGRNb3ZlZEJsb2NrKCk6IHsgdG86IHN0cmluZzsgZnJvbTogc3RyaW5nIH0gfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLl9tb3ZlZEJ5VGFyZ2V0ICYmIHRoaXMuX21vdmVkQnlJZCkge1xuICAgICAgdGhyb3cgcmVzb3VyY2VHaXZlblR3b01vdmVPcGVyYXRpb25zQnlUYXJnZXRBbmRJZChcbiAgICAgICAgdGhpcy5ub2RlLmlkLFxuICAgICAgICB0aGlzLl9tb3ZlZEJ5VGFyZ2V0Lm1vdmVUYXJnZXQsXG4gICAgICAgIHsgdG86IHRoaXMuX21vdmVkQnlJZC50bywgZnJvbTogdGhpcy5fbW92ZWRCeUlkLmZyb20gfSxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9tb3ZlZEJ5VGFyZ2V0KSB7XG4gICAgICBjb25zdCBtb3ZlZEJsb2NrQnlUYXJnZXQgPSB0aGlzLl9idWlsZE1vdmVkQmxvY2tCeVRhcmdldChcbiAgICAgICAgdGhpcy5fbW92ZWRCeVRhcmdldCxcbiAgICAgICk7XG4gICAgICByZXR1cm4geyB0bzogbW92ZWRCbG9ja0J5VGFyZ2V0LnRvLCBmcm9tOiBtb3ZlZEJsb2NrQnlUYXJnZXQuZnJvbSB9O1xuICAgIH0gZWxzZSBpZiAodGhpcy5fbW92ZWRCeUlkKSB7XG4gICAgICByZXR1cm4geyB0bzogdGhpcy5fbW92ZWRCeUlkLnRvLCBmcm9tOiB0aGlzLl9tb3ZlZEJ5SWQuZnJvbSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGlzIHJlc291cmNlIHRvIHRoZSB0YXJnZXQgcmVzb3VyY2UgZ2l2ZW4gYnkgbW92ZVRhcmdldC5cbiAgICogQHBhcmFtIG1vdmVUYXJnZXQgVGhlIHByZXZpb3VzbHkgc2V0IHVzZXIgZGVmaW5lZCBzdHJpbmcgc2V0IGJ5IC5hZGRNb3ZlVGFyZ2V0KCkgY29ycmVzcG9uZGluZyB0byB0aGUgcmVzb3VyY2UgdG8gbW92ZSB0by5cbiAgICogQHBhcmFtIGluZGV4IE9wdGlvbmFsIFRoZSBpbmRleCBjb3JyZXNwb25kaW5nIHRvIHRoZSBrZXkgdGhlIHJlc291cmNlIGlzIHRvIGFwcGVhciBpbiB0aGUgZm9yZWFjaCBvZiBhIHJlc291cmNlIHRvIG1vdmUgdG9cbiAgICovXG4gIHB1YmxpYyBtb3ZlVG8obW92ZVRhcmdldDogc3RyaW5nLCBpbmRleD86IHN0cmluZyB8IG51bWJlcikge1xuICAgIGlmICh0aGlzLl9tb3ZlZEJ5VGFyZ2V0KSB7XG4gICAgICB0aHJvdyByZXNvdXJjZUdpdmVuVHdvTW92ZU9wZXJhdGlvbnNCeVRhcmdldChcbiAgICAgICAgdGhpcy5mcmllbmRseVVuaXF1ZUlkLFxuICAgICAgICB0aGlzLl9tb3ZlZEJ5VGFyZ2V0Lm1vdmVUYXJnZXQsXG4gICAgICAgIG1vdmVUYXJnZXQsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9tb3ZlZEJ5VGFyZ2V0ID0geyBtb3ZlVGFyZ2V0LCBpbmRleCB9O1xuICAgIHRoaXMuX2hhc01vdmVkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgdXNlciBkZWZpbmVkIG1vdmVUYXJnZXQgc3RyaW5nIHRvIHRoaXMgcmVzb3VyY2UgdG8gYmUgbGF0ZXIgdXNlZCBpbiAubW92ZVRvKG1vdmVUYXJnZXQpIHRvIHJlc29sdmUgdGhlIGxvY2F0aW9uIG9mIHRoZSBtb3ZlLlxuICAgKiBAcGFyYW0gbW92ZVRhcmdldCBUaGUgc3RyaW5nIG1vdmUgdGFyZ2V0IHRoYXQgd2lsbCBjb3JyZXNwb25kIHRvIHRoaXMgcmVzb3VyY2VcbiAgICovXG4gIHB1YmxpYyBhZGRNb3ZlVGFyZ2V0KG1vdmVUYXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMuX2FkZFJlc291cmNlVGFyZ2V0KG1vdmVUYXJnZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vdmVzIHRoaXMgcmVzb3VyY2UgdG8gdGhlIHJlc291cmNlIGNvcnJlc3BvbmRpbmcgdG8gXCJpZFwiXG4gICAqIEBwYXJhbSBpZCBGdWxsIGlkIG9mIHJlc291cmNlIHRvIG1vdmUgdG8sIGUuZy4gXCJhd3NfczNfYnVja2V0LmV4YW1wbGVcIlxuICAgKi9cbiAgcHVibGljIG1vdmVUb0lkKGlkOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5fbW92ZWRCeUlkKSB7XG4gICAgICB0aHJvdyByZXNvdXJjZUdpdmVuVHdvTW92ZU9wZXJhdGlvbnNCeUlkKFxuICAgICAgICB0aGlzLm5vZGUuaWQsXG4gICAgICAgIHsgdG86IHRoaXMuX21vdmVkQnlJZC5mcm9tLCBmcm9tOiB0aGlzLl9tb3ZlZEJ5SWQudG8gfSxcbiAgICAgICAge1xuICAgICAgICAgIHRvOiBpZCxcbiAgICAgICAgICBmcm9tOiBgJHt0aGlzLnRlcnJhZm9ybVJlc291cmNlVHlwZX0uJHt0aGlzLmZyaWVuZGx5VW5pcXVlSWR9YCxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fbW92ZWRCeUlkID0ge1xuICAgICAgdG86IGlkLFxuICAgICAgZnJvbTogYCR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGV9LiR7dGhpcy5mcmllbmRseVVuaXF1ZUlkfWAsXG4gICAgfTtcbiAgICB0aGlzLl9oYXNNb3ZlZCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogTW92ZSB0aGUgcmVzb3VyY2UgY29ycmVzcG9uZGluZyB0byBcImlkXCIgdG8gdGhpcyByZXNvdXJjZS4gTm90ZSB0aGF0IHRoZSByZXNvdXJjZSBiZWluZyBtb3ZlZCBmcm9tIG11c3QgYmUgbWFya2VkIGFzIG1vdmVkIHVzaW5nIGl0J3MgaW5zdGFuY2UgZnVuY3Rpb24uXG4gICAqIEBwYXJhbSBpZCBGdWxsIGlkIG9mIHJlc291cmNlIGJlaW5nIG1vdmVkIGZyb20sIGUuZy4gXCJhd3NfczNfYnVja2V0LmV4YW1wbGVcIlxuICAgKi9cbiAgcHVibGljIG1vdmVGcm9tSWQoaWQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLl9tb3ZlZEJ5SWQpIHtcbiAgICAgIHRocm93IHJlc291cmNlR2l2ZW5Ud29Nb3ZlT3BlcmF0aW9uc0J5SWQoXG4gICAgICAgIHRoaXMubm9kZS5pZCxcbiAgICAgICAgeyB0bzogdGhpcy5fbW92ZWRCeUlkLmZyb20sIGZyb206IHRoaXMuX21vdmVkQnlJZC50byB9LFxuICAgICAgICB7XG4gICAgICAgICAgdG86IGlkLFxuICAgICAgICAgIGZyb206IGAke3RoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlfS4ke3RoaXMuZnJpZW5kbHlVbmlxdWVJZH1gLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fbW92ZWRCeUlkID0ge1xuICAgICAgdG86IGAke3RoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlfS4ke3RoaXMuZnJpZW5kbHlVbmlxdWVJZH1gLFxuICAgICAgZnJvbTogaWQsXG4gICAgfTtcbiAgfVxufVxuIl19
338
+ TerraformResource[_a] = { fqn: "cdktn.TerraformResource", version: "0.23.2" };
339
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLXJlc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RlcnJhZm9ybS1yZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBcUVBLG9EQXFCQzs7QUF2RkQscUNBQWlDO0FBQ2pDLDJEQUF1RDtBQUV2RCxpQ0FLZ0I7QUFFaEIsaURBQWlEO0FBS2pELHVEQUFtRDtBQUtuRCxpRUFBaUU7QUFDakUsaUNBQWtDO0FBTWxDLHlGQUFvRjtBQUNwRix1REFBbUQ7QUFDbkQscUNBS2tCO0FBRWxCLE1BQU0seUJBQXlCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBeUJ4RTs7OztHQUlHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQ2xDLFNBQXNDO0lBRXRDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxPQUFPO1FBQ0wsR0FBRyxTQUFTO1FBQ1osR0FBRyxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNO1lBQ3ZDLENBQUMsQ0FBQztnQkFDRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQzNELElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7d0JBQzFCLE9BQU8sQ0FBQyxDQUFDO29CQUNYLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUM7b0JBQ2YsQ0FBQztnQkFDSCxDQUFDLENBQUM7YUFDSDtZQUNILENBQUMsQ0FBQyxTQUFTLENBQUM7S0FDZixDQUFDO0FBQ0osQ0FBQztBQXdDRCwrQ0FBK0M7QUFDL0MsTUFBYSxpQkFDWCxTQUFRLG9DQUFnQjtJQXNCeEIsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxNQUErQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUs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R0FBRztZQUNoQixFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQzVELElBQUksRUFBRSxFQUFFO1NBQ1QsQ0FBQztJQUNKLENBQUM7O0FBcFpILDhDQXFaQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiLi90b2tlbnNcIjtcbmltcG9ydCB7IFRlcnJhZm9ybUVsZW1lbnQgfSBmcm9tIFwiLi90ZXJyYWZvcm0tZWxlbWVudFwiO1xuaW1wb3J0IHsgVGVycmFmb3JtUHJvdmlkZXIgfSBmcm9tIFwiLi90ZXJyYWZvcm0tcHJvdmlkZXJcIjtcbmltcG9ydCB7XG4gIGtleXNUb1NuYWtlQ2FzZSxcbiAgZGVlcE1lcmdlLFxuICBwcm9jZXNzRHluYW1pY0F0dHJpYnV0ZXMsXG4gIHByb2Nlc3NEeW5hbWljQXR0cmlidXRlc0ZvckhjbCxcbn0gZnJvbSBcIi4vdXRpbFwiO1xuaW1wb3J0IHsgSVRlcnJhZm9ybURlcGVuZGFibGUgfSBmcm9tIFwiLi90ZXJyYWZvcm0tZGVwZW5kYWJsZVwiO1xuaW1wb3J0IHsgcmVmLCBkZXBlbmRhYmxlIH0gZnJvbSBcIi4vdGZFeHByZXNzaW9uXCI7XG5pbXBvcnQgeyBJUmVzb2x2YWJsZSB9IGZyb20gXCIuL3Rva2Vucy9yZXNvbHZhYmxlXCI7XG5pbXBvcnQgeyBJSW50ZXJwb2xhdGluZ1BhcmVudCB9IGZyb20gXCIuL3RlcnJhZm9ybS1hZGRyZXNzYWJsZVwiO1xuaW1wb3J0IHsgSVRlcnJhZm9ybUl0ZXJhdG9yIH0gZnJvbSBcIi4vdGVycmFmb3JtLWl0ZXJhdG9yXCI7XG5pbXBvcnQgeyBQcmVjb25kaXRpb24sIFBvc3Rjb25kaXRpb24gfSBmcm9tIFwiLi90ZXJyYWZvcm0tY29uZGl0aW9uc1wiO1xuaW1wb3J0IHsgVGVycmFmb3JtQ291bnQgfSBmcm9tIFwiLi90ZXJyYWZvcm0tY291bnRcIjtcbmltcG9ydCB7XG4gIFNTSFByb3Zpc2lvbmVyQ29ubmVjdGlvbixcbiAgV2lucm1Qcm92aXNpb25lckNvbm5lY3Rpb24sXG59IGZyb20gXCIuL3RlcnJhZm9ybS1wcm92aXNpb25lclwiO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmltcG9ydCBhc3NlcnQgPSByZXF1aXJlKFwiYXNzZXJ0XCIpO1xuaW1wb3J0IHtcbiAgRmlsZVByb3Zpc2lvbmVyLFxuICBMb2NhbEV4ZWNQcm92aXNpb25lcixcbiAgUmVtb3RlRXhlY1Byb3Zpc2lvbmVyLFxufSBmcm9tIFwiLi90ZXJyYWZvcm0tcHJvdmlzaW9uZXJcIjtcbmltcG9ydCB7IFZhbGlkYXRlVGVycmFmb3JtVmVyc2lvbiB9IGZyb20gXCIuL3ZhbGlkYXRpb25zL3ZhbGlkYXRlLXRlcnJhZm9ybS12ZXJzaW9uXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1TdGFjayB9IGZyb20gXCIuL3RlcnJhZm9ybS1zdGFja1wiO1xuaW1wb3J0IHtcbiAgbW92ZWRUb1Jlc291cmNlT2ZEaWZmZXJlbnRUeXBlLFxuICByZXNvdXJjZUdpdmVuVHdvTW92ZU9wZXJhdGlvbnNCeUlkLFxuICByZXNvdXJjZUdpdmVuVHdvTW92ZU9wZXJhdGlvbnNCeVRhcmdldCxcbiAgcmVzb3VyY2VHaXZlblR3b01vdmVPcGVyYXRpb25zQnlUYXJnZXRBbmRJZCxcbn0gZnJvbSBcIi4vZXJyb3JzXCI7XG5cbmNvbnN0IFRFUlJBRk9STV9SRVNPVVJDRV9TWU1CT0wgPSBTeW1ib2wuZm9yKFwiY2RrdGYvVGVycmFmb3JtUmVzb3VyY2VcIik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRlcnJhZm9ybVJlc291cmNlIHtcbiAgcmVhZG9ubHkgdGVycmFmb3JtUmVzb3VyY2VUeXBlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZxbjogc3RyaW5nO1xuICByZWFkb25seSBmcmllbmRseVVuaXF1ZUlkOiBzdHJpbmc7XG5cbiAgZGVwZW5kc09uPzogc3RyaW5nW107XG4gIGNvdW50PzogbnVtYmVyIHwgVGVycmFmb3JtQ291bnQ7XG4gIHByb3ZpZGVyPzogVGVycmFmb3JtUHJvdmlkZXI7XG4gIGxpZmVjeWNsZT86IFRlcnJhZm9ybVJlc291cmNlTGlmZWN5Y2xlO1xuICBmb3JFYWNoPzogSVRlcnJhZm9ybUl0ZXJhdG9yO1xuXG4gIGludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpOiBJUmVzb2x2YWJsZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1SZXNvdXJjZUxpZmVjeWNsZSB7XG4gIHJlYWRvbmx5IGNyZWF0ZUJlZm9yZURlc3Ryb3k/OiBib29sZWFuO1xuICByZWFkb25seSBwcmV2ZW50RGVzdHJveT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGlnbm9yZUNoYW5nZXM/OiBzdHJpbmdbXSB8IFwiYWxsXCI7XG4gIHJlYWRvbmx5IHJlcGxhY2VUcmlnZ2VyZWRCeT86IEFycmF5PElUZXJyYWZvcm1EZXBlbmRhYmxlIHwgc3RyaW5nPjtcbiAgcmVhZG9ubHkgcHJlY29uZGl0aW9uPzogUHJlY29uZGl0aW9uW107XG4gIHJlYWRvbmx5IHBvc3Rjb25kaXRpb24/OiBQb3N0Y29uZGl0aW9uW107XG59XG5cbi8qKlxuICogcHJlcGFyZXMgYSBsaWZlY3ljbGUgb2JqZWN0IGZvciBiZWluZyByZW5kZXJlZCBhcyBKU09OXG4gKiBjdXJyZW50bHkgdGhpcyBmdW5jdGlvbjpcbiAqICAtIGNvbnZlcnRzIGFsbCByZXBsYWNlVHJpZ2dlcmVkQnkgaXRlbXMgdGhhdCBhcmUgSVRlcnJhZm9ybURlcGVuZGFibGVzIHRvIHN0cmluZ3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpZmVjeWNsZVRvVGVycmFmb3JtKFxuICBsaWZlY3ljbGU/OiBUZXJyYWZvcm1SZXNvdXJjZUxpZmVjeWNsZSxcbik6IFRlcnJhZm9ybVJlc291cmNlTGlmZWN5Y2xlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFsaWZlY3ljbGUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5saWZlY3ljbGUsXG4gICAgLi4uKGxpZmVjeWNsZT8ucmVwbGFjZVRyaWdnZXJlZEJ5Py5sZW5ndGhcbiAgICAgID8ge1xuICAgICAgICAgIHJlcGxhY2VUcmlnZ2VyZWRCeTogbGlmZWN5Y2xlPy5yZXBsYWNlVHJpZ2dlcmVkQnk/Lm1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB4ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHguZnFuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICB9XG4gICAgICA6IHVuZGVmaW5lZCksXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVycmFmb3JtTWV0YUFyZ3VtZW50cyB7XG4gIHJlYWRvbmx5IGRlcGVuZHNPbj86IElUZXJyYWZvcm1EZXBlbmRhYmxlW107XG4gIHJlYWRvbmx5IGNvdW50PzogbnVtYmVyIHwgVGVycmFmb3JtQ291bnQ7XG4gIHJlYWRvbmx5IHByb3ZpZGVyPzogVGVycmFmb3JtUHJvdmlkZXI7XG4gIHJlYWRvbmx5IGxpZmVjeWNsZT86IFRlcnJhZm9ybVJlc291cmNlTGlmZWN5Y2xlO1xuICByZWFkb25seSBmb3JFYWNoPzogSVRlcnJhZm9ybUl0ZXJhdG9yO1xuICByZWFkb25seSBwcm92aXNpb25lcnM/OiBBcnJheTxcbiAgICBGaWxlUHJvdmlzaW9uZXIgfCBMb2NhbEV4ZWNQcm92aXNpb25lciB8IFJlbW90ZUV4ZWNQcm92aXNpb25lclxuICA+O1xuICByZWFkb25seSBjb25uZWN0aW9uPzogU1NIUHJvdmlzaW9uZXJDb25uZWN0aW9uIHwgV2lucm1Qcm92aXNpb25lckNvbm5lY3Rpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVycmFmb3JtUHJvdmlkZXJHZW5lcmF0b3JNZXRhZGF0YSB7XG4gIHJlYWRvbmx5IHByb3ZpZGVyTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBwcm92aWRlclZlcnNpb25Db25zdHJhaW50Pzogc3RyaW5nO1xuICByZWFkb25seSBwcm92aWRlclZlcnNpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVycmFmb3JtUmVzb3VyY2VDb25maWcgZXh0ZW5kcyBUZXJyYWZvcm1NZXRhQXJndW1lbnRzIHtcbiAgcmVhZG9ubHkgdGVycmFmb3JtUmVzb3VyY2VUeXBlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRlcnJhZm9ybUdlbmVyYXRvck1ldGFkYXRhPzogVGVycmFmb3JtUHJvdmlkZXJHZW5lcmF0b3JNZXRhZGF0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1SZXNvdXJjZU1vdmVCeVRhcmdldCB7XG4gIHJlYWRvbmx5IG1vdmVUYXJnZXQ6IHN0cmluZztcbiAgcmVhZG9ubHkgaW5kZXg/OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVycmFmb3JtUmVzb3VyY2VNb3ZlQnlJZCB7XG4gIHJlYWRvbmx5IHRvOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZyb206IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1SZXNvdXJjZUltcG9ydCB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByb3ZpZGVyPzogVGVycmFmb3JtUHJvdmlkZXI7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgY2xhc3MgVGVycmFmb3JtUmVzb3VyY2VcbiAgZXh0ZW5kcyBUZXJyYWZvcm1FbGVtZW50XG4gIGltcGxlbWVudHMgSVRlcnJhZm9ybVJlc291cmNlLCBJVGVycmFmb3JtRGVwZW5kYWJsZSwgSUludGVycG9sYXRpbmdQYXJlbnRcbntcbiAgcHVibGljIHJlYWRvbmx5IHRlcnJhZm9ybVJlc291cmNlVHlwZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdGVycmFmb3JtR2VuZXJhdG9yTWV0YWRhdGE/OiBUZXJyYWZvcm1Qcm92aWRlckdlbmVyYXRvck1ldGFkYXRhO1xuXG4gIC8vIFRlcnJhZm9ybU1ldGFBcmd1bWVudHNcblxuICBwdWJsaWMgZGVwZW5kc09uPzogc3RyaW5nW107XG4gIHB1YmxpYyBjb3VudD86IG51bWJlciB8IFRlcnJhZm9ybUNvdW50O1xuICBwdWJsaWMgcHJvdmlkZXI/OiBUZXJyYWZvcm1Qcm92aWRlcjtcbiAgcHVibGljIGxpZmVjeWNsZT86IFRlcnJhZm9ybVJlc291cmNlTGlmZWN5Y2xlO1xuICBwdWJsaWMgZm9yRWFjaD86IElUZXJyYWZvcm1JdGVyYXRvcjtcbiAgcHVibGljIGNvbm5lY3Rpb24/OiBTU0hQcm92aXNpb25lckNvbm5lY3Rpb24gfCBXaW5ybVByb3Zpc2lvbmVyQ29ubmVjdGlvbjtcbiAgcHVibGljIHByb3Zpc2lvbmVycz86IEFycmF5PFxuICAgIEZpbGVQcm92aXNpb25lciB8IExvY2FsRXhlY1Byb3Zpc2lvbmVyIHwgUmVtb3RlRXhlY1Byb3Zpc2lvbmVyXG4gID47XG4gIHByaXZhdGUgX2ltcG9ydGVkPzogVGVycmFmb3JtUmVzb3VyY2VJbXBvcnQ7XG4gIHByaXZhdGUgX21vdmVkQnlUYXJnZXQ/OiBUZXJyYWZvcm1SZXNvdXJjZU1vdmVCeVRhcmdldDtcbiAgcHJpdmF0ZSBfbW92ZWRCeUlkPzogVGVycmFmb3JtUmVzb3VyY2VNb3ZlQnlJZDtcbiAgcHJpdmF0ZSBfaGFzTW92ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBjb25maWc6IFRlcnJhZm9ybVJlc291cmNlQ29uZmlnKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBjb25maWcudGVycmFmb3JtUmVzb3VyY2VUeXBlKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgVEVSUkFGT1JNX1JFU09VUkNFX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlID0gY29uZmlnLnRlcnJhZm9ybVJlc291cmNlVHlwZTtcbiAgICB0aGlzLnRlcnJhZm9ybUdlbmVyYXRvck1ldGFkYXRhID0gY29uZmlnLnRlcnJhZm9ybUdlbmVyYXRvck1ldGFkYXRhO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZy5kZXBlbmRzT24pKSB7XG4gICAgICB0aGlzLmRlcGVuZHNPbiA9IGNvbmZpZy5kZXBlbmRzT24ubWFwKChkZXBlbmRlbmN5KSA9PlxuICAgICAgICBkZXBlbmRhYmxlKGRlcGVuZGVuY3kpLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5jb3VudCA9IGNvbmZpZy5jb3VudDtcbiAgICB0aGlzLnByb3ZpZGVyID0gY29uZmlnLnByb3ZpZGVyO1xuICAgIHRoaXMubGlmZWN5Y2xlID0gY29uZmlnLmxpZmVjeWNsZTtcbiAgICB0aGlzLmZvckVhY2ggPSBjb25maWcuZm9yRWFjaDtcbiAgICB0aGlzLnByb3Zpc2lvbmVycyA9IGNvbmZpZy5wcm92aXNpb25lcnM7XG4gICAgdGhpcy5jb25uZWN0aW9uID0gY29uZmlnLmNvbm5lY3Rpb247XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzVGVycmFmb3JtUmVzb3VyY2UoeDogYW55KTogeCBpcyBUZXJyYWZvcm1SZXNvdXJjZSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09IFwib2JqZWN0XCIgJiYgVEVSUkFGT1JNX1JFU09VUkNFX1NZTUJPTCBpbiB4XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNSZXNvdXJjZU1vdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21vdmVkQnlJZCB8fCB0aGlzLl9tb3ZlZEJ5VGFyZ2V0O1xuICB9XG5cbiAgcHVibGljIGdldFN0cmluZ0F0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZykge1xuICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyh0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TnVtYmVyQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFRva2VuLmFzTnVtYmVyKHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMaXN0QXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFRva2VuLmFzTGlzdCh0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Qm9vbGVhbkF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXROdW1iZXJMaXN0QXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFRva2VuLmFzTnVtYmVyTGlzdChcbiAgICAgIHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGUpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RyaW5nTWFwQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFRva2VuLmFzU3RyaW5nTWFwKFxuICAgICAgdGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXROdW1iZXJNYXBBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNOdW1iZXJNYXAoXG4gICAgICB0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldEJvb2xlYW5NYXBBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNCb29sZWFuTWFwKFxuICAgICAgdGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBbnlNYXBBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNBbnlNYXAodGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZSkpO1xuICB9XG5cbiAgcHVibGljIGdldCB0ZXJyYWZvcm1NZXRhQXJndW1lbnRzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICBhc3NlcnQoXG4gICAgICAhdGhpcy5mb3JFYWNoIHx8IHR5cGVvZiB0aGlzLmNvdW50ID09PSBcInVuZGVmaW5lZFwiLFxuICAgICAgYGZvckVhY2ggYW5kIGNvdW50IGFyZSBib3RoIHNldCwgYnV0IHRoZXkgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gWW91IGNhbiBvbmx5IHVzZSBlaXRoZXIgb2YgdGhlbS4gQ2hlY2sgdGhlIHJlc291cmNlIGF0IHBhdGg6ICR7dGhpcy5ub2RlLnBhdGh9YCxcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRlcGVuZHNPbjogdGhpcy5kZXBlbmRzT24sXG4gICAgICBjb3VudDogVGVycmFmb3JtQ291bnQuaXNUZXJyYWZvcm1Db3VudCh0aGlzLmNvdW50KVxuICAgICAgICA/IHRoaXMuY291bnQudG9UZXJyYWZvcm0oKVxuICAgICAgICA6IHRoaXMuY291bnQsXG4gICAgICBwcm92aWRlcjogdGhpcy5wcm92aWRlcj8uZnFuLFxuICAgICAgbGlmZWN5Y2xlOiBsaWZlY3ljbGVUb1RlcnJhZm9ybSh0aGlzLmxpZmVjeWNsZSksXG4gICAgICBmb3JFYWNoOiB0aGlzLmZvckVhY2g/Ll9nZXRGb3JFYWNoRXhwcmVzc2lvbigpLFxuICAgICAgY29ubmVjdGlvbjogdGhpcy5jb25uZWN0aW9uLFxuICAgIH07XG4gIH1cblxuICAvLyBqc2lpIGNhbid0IGhhbmRsZSBhYnN0cmFjdCBjbGFzc2VzP1xuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUF0dHJpYnV0ZXMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUhjbEF0dHJpYnV0ZXMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHRoaXMgcmVzb3VyY2UgdG8gdGhlIHRlcnJhZm9ybSBKU09OIG91dHB1dC5cbiAgICovXG4gIHB1YmxpYyB0b1RlcnJhZm9ybSgpOiBhbnkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBkZWVwTWVyZ2UoXG4gICAgICBwcm9jZXNzRHluYW1pY0F0dHJpYnV0ZXModGhpcy5zeW50aGVzaXplQXR0cmlidXRlcygpKSxcbiAgICAgIGtleXNUb1NuYWtlQ2FzZSh0aGlzLnRlcnJhZm9ybU1ldGFBcmd1bWVudHMpLFxuICAgICAge1xuICAgICAgICBwcm92aXNpb25lcjogdGhpcy5wcm92aXNpb25lcnM/Lm1hcCgoeyB0eXBlLCAuLi5wcm9wcyB9KSA9PiAoe1xuICAgICAgICAgIFt0eXBlXToga2V5c1RvU25ha2VDYXNlKHByb3BzKSxcbiAgICAgICAgfSkpLFxuICAgICAgfSxcbiAgICAgIHRoaXMucmF3T3ZlcnJpZGVzLFxuICAgICk7XG5cbiAgICBhdHRyaWJ1dGVzW1wiLy9cIl0gPSB7XG4gICAgICAuLi4oYXR0cmlidXRlc1tcIi8vXCJdID8/IHt9KSxcbiAgICAgIC4uLnRoaXMuY29uc3RydWN0Tm9kZU1ldGFkYXRhLFxuICAgIH07XG5cbiAgICBjb25zdCBtb3ZlZEJsb2NrID0gdGhpcy5fYnVpbGRNb3ZlZEJsb2NrKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc291cmNlOiB0aGlzLl9oYXNNb3ZlZFxuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IHtcbiAgICAgICAgICAgIFt0aGlzLnRlcnJhZm9ybVJlc291cmNlVHlwZV06IHtcbiAgICAgICAgICAgICAgW3RoaXMuZnJpZW5kbHlVbmlxdWVJZF06IGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICBtb3ZlZDogbW92ZWRCbG9ja1xuICAgICAgICA/IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdG86IG1vdmVkQmxvY2sudG8sXG4gICAgICAgICAgICAgIGZyb206IG1vdmVkQmxvY2suZnJvbSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGltcG9ydDogdGhpcy5faW1wb3J0ZWRcbiAgICAgICAgPyBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHByb3ZpZGVyOiB0aGlzLl9pbXBvcnRlZC5wcm92aWRlcj8uZnFuLFxuICAgICAgICAgICAgICBpZDogdGhpcy5faW1wb3J0ZWQuaWQsXG4gICAgICAgICAgICAgIHRvOiBgJHt0aGlzLnRlcnJhZm9ybVJlc291cmNlVHlwZX0uJHt0aGlzLmZyaWVuZGx5VW5pcXVlSWR9YCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHRvSGNsVGVycmFmb3JtKCk6IGFueSB7XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IGRlZXBNZXJnZShcbiAgICAgIHByb2Nlc3NEeW5hbWljQXR0cmlidXRlc0ZvckhjbCh0aGlzLnN5bnRoZXNpemVIY2xBdHRyaWJ1dGVzKCkpLFxuICAgICAga2V5c1RvU25ha2VDYXNlKHRoaXMudGVycmFmb3JtTWV0YUFyZ3VtZW50cyksXG4gICAgICB7XG4gICAgICAgIHByb3Zpc2lvbmVyOiB0aGlzLnByb3Zpc2lvbmVycz8ubWFwKCh7IHR5cGUsIC4uLnByb3BzIH0pID0+ICh7XG4gICAgICAgICAgW3R5cGVdOiB7XG4gICAgICAgICAgICBpc0Jsb2NrOiB0cnVlLFxuICAgICAgICAgICAgdHlwZTogXCJsaXN0XCIsXG4gICAgICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgdmFsdWU6IGtleXNUb1NuYWtlQ2FzZShwcm9wcyksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSkpLFxuICAgICAgfSxcbiAgICAgIHRoaXMucmF3T3ZlcnJpZGVzLFxuICAgICk7XG5cbiAgICBhdHRyaWJ1dGVzW1wiLy9cIl0gPSB7XG4gICAgICAuLi4oYXR0cmlidXRlc1tcIi8vXCJdID8/IHt9KSxcbiAgICAgIC4uLnRoaXMuY29uc3RydWN0Tm9kZU1ldGFkYXRhLFxuICAgIH07XG5cbiAgICBjb25zdCBtb3ZlZEJsb2NrID0gdGhpcy5fYnVpbGRNb3ZlZEJsb2NrKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc291cmNlOiB0aGlzLl9oYXNNb3ZlZFxuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IHtcbiAgICAgICAgICAgIFt0aGlzLnRlcnJhZm9ybVJlc291cmNlVHlwZV06IHtcbiAgICAgICAgICAgICAgW3RoaXMuZnJpZW5kbHlVbmlxdWVJZF06IGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICBtb3ZlZDogbW92ZWRCbG9ja1xuICAgICAgICA/IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdG86IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogbW92ZWRCbG9jay50byxcbiAgICAgICAgICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICAgICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwicmVmZXJlbmNlXCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGZyb206IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogbW92ZWRCbG9jay5mcm9tLFxuICAgICAgICAgICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgICAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJyZWZlcmVuY2VcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGltcG9ydDogdGhpcy5faW1wb3J0ZWRcbiAgICAgICAgPyBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRvOiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IGAke3RoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlfS4ke3RoaXMuZnJpZW5kbHlVbmlxdWVJZH1gLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgICAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJyZWZlcmVuY2VcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaWQ6IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5faW1wb3J0ZWQuaWQsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBwcm92aWRlcjogdGhpcy5faW1wb3J0ZWQucHJvdmlkZXJcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuX2ltcG9ydGVkLnByb3ZpZGVyLmZxbixcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgICAgICAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJyZWZlcmVuY2VcIixcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHRvTWV0YWRhdGEoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgb3ZlcnJpZGVzOiBPYmplY3Qua2V5cyh0aGlzLnJhd092ZXJyaWRlcykubGVuZ3RoXG4gICAgICAgID8ge1xuICAgICAgICAgICAgW3RoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlXTogT2JqZWN0LmtleXModGhpcy5yYXdPdmVycmlkZXMpLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBpbXBvcnRzOiB0aGlzLl9pbXBvcnRlZFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIFt0aGlzLnRlcnJhZm9ybVJlc291cmNlVHlwZV06IFt0aGlzLmZyaWVuZGx5VW5pcXVlSWRdLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBtb3ZlZDpcbiAgICAgICAgdGhpcy5fbW92ZWRCeVRhcmdldCB8fCB0aGlzLl9tb3ZlZEJ5SWRcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgW3RoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlXTogW3RoaXMuZnJpZW5kbHlVbmlxdWVJZF0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBpbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHJlZihcbiAgICAgIGAke3RoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlfS4ke3RoaXMuZnJpZW5kbHlVbmlxdWVJZH0ke1xuICAgICAgICB0aGlzLmZvckVhY2ggPyBcIi4qXCIgOiBcIlwiXG4gICAgICB9LiR7dGVycmFmb3JtQXR0cmlidXRlfWAsXG4gICAgICB0aGlzLmNka3RmU3RhY2ssXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBpbXBvcnRGcm9tKGlkOiBzdHJpbmcsIHByb3ZpZGVyPzogVGVycmFmb3JtUHJvdmlkZXIpIHtcbiAgICB0aGlzLl9pbXBvcnRlZCA9IHsgaWQsIHByb3ZpZGVyIH07XG4gICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24oXG4gICAgICBuZXcgVmFsaWRhdGVUZXJyYWZvcm1WZXJzaW9uKFxuICAgICAgICBcIj49MS41XCIsXG4gICAgICAgIGBJbXBvcnQgYmxvY2tzIGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgVGVycmFmb3JtID49MS41LiBQbGVhc2UgdXBncmFkZSB5b3VyIFRlcnJhZm9ybSB2ZXJzaW9uLmAsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZXNvdXJjZVRhcmdldChtb3ZlVGFyZ2V0OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVGVycmFmb3JtU3RhY2sub2YodGhpcykubW92ZVRhcmdldHMuZ2V0UmVzb3VyY2VCeVRhcmdldChtb3ZlVGFyZ2V0KTtcbiAgfVxuXG4gIHByaXZhdGUgX2FkZFJlc291cmNlVGFyZ2V0KG1vdmVUYXJnZXQ6IHN0cmluZykge1xuICAgIHJldHVybiBUZXJyYWZvcm1TdGFjay5vZih0aGlzKS5tb3ZlVGFyZ2V0cy5hZGRSZXNvdXJjZVRhcmdldChcbiAgICAgIHRoaXMsXG4gICAgICBtb3ZlVGFyZ2V0LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9idWlsZE1vdmVkQmxvY2tCeVRhcmdldChcbiAgICBtb3ZlZFRhcmdldDogVGVycmFmb3JtUmVzb3VyY2VNb3ZlQnlUYXJnZXQsXG4gICk6IHsgdG86IHN0cmluZzsgZnJvbTogc3RyaW5nIH0ge1xuICAgIGNvbnN0IHsgbW92ZVRhcmdldCwgaW5kZXggfSA9IG1vdmVkVGFyZ2V0O1xuICAgIGNvbnN0IHJlc291cmNlVG9Nb3ZlVG8gPSB0aGlzLl9nZXRSZXNvdXJjZVRhcmdldChtb3ZlVGFyZ2V0KTtcbiAgICBpZiAodGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGUgIT09IHJlc291cmNlVG9Nb3ZlVG8udGVycmFmb3JtUmVzb3VyY2VUeXBlKSB7XG4gICAgICB0aHJvdyBtb3ZlZFRvUmVzb3VyY2VPZkRpZmZlcmVudFR5cGUoXG4gICAgICAgIG1vdmVUYXJnZXQsXG4gICAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlLFxuICAgICAgICByZXNvdXJjZVRvTW92ZVRvLnRlcnJhZm9ybVJlc291cmNlVHlwZSxcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHRvID0gaW5kZXhcbiAgICAgID8gdHlwZW9mIGluZGV4ID09PSBcInN0cmluZ1wiXG4gICAgICAgID8gYCR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGV9LiR7cmVzb3VyY2VUb01vdmVUby5mcmllbmRseVVuaXF1ZUlkfVtcIiR7aW5kZXh9XCJdYFxuICAgICAgICA6IGAke3RoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlfS4ke3Jlc291cmNlVG9Nb3ZlVG8uZnJpZW5kbHlVbmlxdWVJZH1bJHtpbmRleH1dYFxuICAgICAgOiBgJHt0aGlzLnRlcnJhZm9ybVJlc291cmNlVHlwZX0uJHtyZXNvdXJjZVRvTW92ZVRvLmZyaWVuZGx5VW5pcXVlSWR9YDtcbiAgICBjb25zdCBmcm9tID0gYCR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGV9LiR7dGhpcy5mcmllbmRseVVuaXF1ZUlkfWA7XG4gICAgcmV0dXJuIHsgdG8sIGZyb20gfTtcbiAgfVxuXG4gIHByaXZhdGUgX2J1aWxkTW92ZWRCbG9jaygpOiB7IHRvOiBzdHJpbmc7IGZyb206IHN0cmluZyB9IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5fbW92ZWRCeVRhcmdldCAmJiB0aGlzLl9tb3ZlZEJ5SWQpIHtcbiAgICAgIHRocm93IHJlc291cmNlR2l2ZW5Ud29Nb3ZlT3BlcmF0aW9uc0J5VGFyZ2V0QW5kSWQoXG4gICAgICAgIHRoaXMubm9kZS5pZCxcbiAgICAgICAgdGhpcy5fbW92ZWRCeVRhcmdldC5tb3ZlVGFyZ2V0LFxuICAgICAgICB7IHRvOiB0aGlzLl9tb3ZlZEJ5SWQudG8sIGZyb206IHRoaXMuX21vdmVkQnlJZC5mcm9tIH0sXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fbW92ZWRCeVRhcmdldCkge1xuICAgICAgY29uc3QgbW92ZWRCbG9ja0J5VGFyZ2V0ID0gdGhpcy5fYnVpbGRNb3ZlZEJsb2NrQnlUYXJnZXQoXG4gICAgICAgIHRoaXMuX21vdmVkQnlUYXJnZXQsXG4gICAgICApO1xuICAgICAgcmV0dXJuIHsgdG86IG1vdmVkQmxvY2tCeVRhcmdldC50bywgZnJvbTogbW92ZWRCbG9ja0J5VGFyZ2V0LmZyb20gfTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX21vdmVkQnlJZCkge1xuICAgICAgcmV0dXJuIHsgdG86IHRoaXMuX21vdmVkQnlJZC50bywgZnJvbTogdGhpcy5fbW92ZWRCeUlkLmZyb20gfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTW92ZXMgdGhpcyByZXNvdXJjZSB0byB0aGUgdGFyZ2V0IHJlc291cmNlIGdpdmVuIGJ5IG1vdmVUYXJnZXQuXG4gICAqIEBwYXJhbSBtb3ZlVGFyZ2V0IFRoZSBwcmV2aW91c2x5IHNldCB1c2VyIGRlZmluZWQgc3RyaW5nIHNldCBieSAuYWRkTW92ZVRhcmdldCgpIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHJlc291cmNlIHRvIG1vdmUgdG8uXG4gICAqIEBwYXJhbSBpbmRleCBPcHRpb25hbCBUaGUgaW5kZXggY29ycmVzcG9uZGluZyB0byB0aGUga2V5IHRoZSByZXNvdXJjZSBpcyB0byBhcHBlYXIgaW4gdGhlIGZvcmVhY2ggb2YgYSByZXNvdXJjZSB0byBtb3ZlIHRvXG4gICAqL1xuICBwdWJsaWMgbW92ZVRvKG1vdmVUYXJnZXQ6IHN0cmluZywgaW5kZXg/OiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5fbW92ZWRCeVRhcmdldCkge1xuICAgICAgdGhyb3cgcmVzb3VyY2VHaXZlblR3b01vdmVPcGVyYXRpb25zQnlUYXJnZXQoXG4gICAgICAgIHRoaXMuZnJpZW5kbHlVbmlxdWVJZCxcbiAgICAgICAgdGhpcy5fbW92ZWRCeVRhcmdldC5tb3ZlVGFyZ2V0LFxuICAgICAgICBtb3ZlVGFyZ2V0LFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fbW92ZWRCeVRhcmdldCA9IHsgbW92ZVRhcmdldCwgaW5kZXggfTtcbiAgICB0aGlzLl9oYXNNb3ZlZCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHVzZXIgZGVmaW5lZCBtb3ZlVGFyZ2V0IHN0cmluZyB0byB0aGlzIHJlc291cmNlIHRvIGJlIGxhdGVyIHVzZWQgaW4gLm1vdmVUbyhtb3ZlVGFyZ2V0KSB0byByZXNvbHZlIHRoZSBsb2NhdGlvbiBvZiB0aGUgbW92ZS5cbiAgICogQHBhcmFtIG1vdmVUYXJnZXQgVGhlIHN0cmluZyBtb3ZlIHRhcmdldCB0aGF0IHdpbGwgY29ycmVzcG9uZCB0byB0aGlzIHJlc291cmNlXG4gICAqL1xuICBwdWJsaWMgYWRkTW92ZVRhcmdldChtb3ZlVGFyZ2V0OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9hZGRSZXNvdXJjZVRhcmdldChtb3ZlVGFyZ2V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGlzIHJlc291cmNlIHRvIHRoZSByZXNvdXJjZSBjb3JyZXNwb25kaW5nIHRvIFwiaWRcIlxuICAgKiBAcGFyYW0gaWQgRnVsbCBpZCBvZiByZXNvdXJjZSB0byBtb3ZlIHRvLCBlLmcuIFwiYXdzX3MzX2J1Y2tldC5leGFtcGxlXCJcbiAgICovXG4gIHB1YmxpYyBtb3ZlVG9JZChpZDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuX21vdmVkQnlJZCkge1xuICAgICAgdGhyb3cgcmVzb3VyY2VHaXZlblR3b01vdmVPcGVyYXRpb25zQnlJZChcbiAgICAgICAgdGhpcy5ub2RlLmlkLFxuICAgICAgICB7IHRvOiB0aGlzLl9tb3ZlZEJ5SWQuZnJvbSwgZnJvbTogdGhpcy5fbW92ZWRCeUlkLnRvIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0bzogaWQsXG4gICAgICAgICAgZnJvbTogYCR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZVR5cGV9LiR7dGhpcy5mcmllbmRseVVuaXF1ZUlkfWAsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuX21vdmVkQnlJZCA9IHtcbiAgICAgIHRvOiBpZCxcbiAgICAgIGZyb206IGAke3RoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlfS4ke3RoaXMuZnJpZW5kbHlVbmlxdWVJZH1gLFxuICAgIH07XG4gICAgdGhpcy5faGFzTW92ZWQgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vdmUgdGhlIHJlc291cmNlIGNvcnJlc3BvbmRpbmcgdG8gXCJpZFwiIHRvIHRoaXMgcmVzb3VyY2UuIE5vdGUgdGhhdCB0aGUgcmVzb3VyY2UgYmVpbmcgbW92ZWQgZnJvbSBtdXN0IGJlIG1hcmtlZCBhcyBtb3ZlZCB1c2luZyBpdCdzIGluc3RhbmNlIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0gaWQgRnVsbCBpZCBvZiByZXNvdXJjZSBiZWluZyBtb3ZlZCBmcm9tLCBlLmcuIFwiYXdzX3MzX2J1Y2tldC5leGFtcGxlXCJcbiAgICovXG4gIHB1YmxpYyBtb3ZlRnJvbUlkKGlkOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5fbW92ZWRCeUlkKSB7XG4gICAgICB0aHJvdyByZXNvdXJjZUdpdmVuVHdvTW92ZU9wZXJhdGlvbnNCeUlkKFxuICAgICAgICB0aGlzLm5vZGUuaWQsXG4gICAgICAgIHsgdG86IHRoaXMuX21vdmVkQnlJZC5mcm9tLCBmcm9tOiB0aGlzLl9tb3ZlZEJ5SWQudG8gfSxcbiAgICAgICAge1xuICAgICAgICAgIHRvOiBpZCxcbiAgICAgICAgICBmcm9tOiBgJHt0aGlzLnRlcnJhZm9ybVJlc291cmNlVHlwZX0uJHt0aGlzLmZyaWVuZGx5VW5pcXVlSWR9YCxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuX21vdmVkQnlJZCA9IHtcbiAgICAgIHRvOiBgJHt0aGlzLnRlcnJhZm9ybVJlc291cmNlVHlwZX0uJHt0aGlzLmZyaWVuZGx5VW5pcXVlSWR9YCxcbiAgICAgIGZyb206IGlkLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -340,7 +340,7 @@ class TerraformStack extends constructs_1.Construct {
340
340
  }
341
341
  exports.TerraformStack = TerraformStack;
342
342
  _a = JSII_RTTI_SYMBOL_1;
343
- TerraformStack[_a] = { fqn: "cdktn.TerraformStack", version: "0.23.1" };
343
+ TerraformStack[_a] = { fqn: "cdktn.TerraformStack", version: "0.23.2" };
344
344
  // eslint-disable-next-line jsdoc/require-jsdoc
345
345
  function terraformElements(node, into = []) {
346
346
  if (terraform_element_1.TerraformElement.isTerraformElement(node)) {
@@ -355,4 +355,4 @@ function terraformElements(node, into = []) {
355
355
  }
356
356
  return into;
357
357
  }
358
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVycmFmb3JtLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQywyQ0FBeUQ7QUFDekQsdUNBQW9DO0FBRXBDLDJEQUF1RDtBQUN2RCxpQ0FBbUM7QUFDbkMsNkRBQXlEO0FBQ3pELDREQUF3RDtBQUN4RCxpREFBcUM7QUFDckMseURBQXFEO0FBRXJELDZDQUFnRDtBQUVoRCwwREFBNEQ7QUFFNUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBQ3hELCtDQUF5RDtBQUN6RCwrQkFBNEI7QUFDNUIsMkRBQXVEO0FBQ3ZELDZFQUF3RTtBQUN4RSw2REFBeUQ7QUFDekQseUNBWXNCO0FBQ3RCLHFDQU1rQjtBQWNsQiwrQ0FBK0M7QUFDL0MsU0FBUyx3QkFBd0IsQ0FBQyxHQUFXO0lBQzNDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDbkQsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFBLG9DQUEyQixFQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsK0NBQStDO0FBQy9DLFNBQVMsMkJBQTJCLENBQUMsR0FBVztJQUM5QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNuQixNQUFNLElBQUEsa0NBQXlCLEVBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztBQUNILENBQUM7QUFFRCwrQ0FBK0M7QUFDL0MsTUFB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QztRQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkMsZ0NBQWdDO1FBQ2hDLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xDLFNBQVM7UUFDWCxDQUFDO1FBRUQsaUJBQWlCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgQ29uc3RydWN0LCBJQ29uc3RydWN0LCBOb2RlIH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwiLi9fdG9rZW5zXCI7XG5cbmltcG9ydCB7IFRlcnJhZm9ybUVsZW1lbnQgfSBmcm9tIFwiLi90ZXJyYWZvcm0tZWxlbWVudFwiO1xuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSBcIi4vdXRpbFwiO1xuaW1wb3J0IHsgVGVycmFmb3JtUHJvdmlkZXIgfSBmcm9tIFwiLi90ZXJyYWZvcm0tcHJvdmlkZXJcIjtcbmltcG9ydCB7IExvY2FsQmFja2VuZCB9IGZyb20gXCIuL2JhY2tlbmRzL2xvY2FsLWJhY2tlbmRcIjtcbmltcG9ydCB7IHJlZiB9IGZyb20gXCIuL3RmRXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgVGVycmFmb3JtT3V0cHV0IH0gZnJvbSBcIi4vdGVycmFmb3JtLW91dHB1dFwiO1xuaW1wb3J0IHsgVGVycmFmb3JtUmVtb3RlU3RhdGUgfSBmcm9tIFwiLi90ZXJyYWZvcm0tcmVtb3RlLXN0YXRlXCI7XG5pbXBvcnQgeyBtYWtlVW5pcXVlSWQgfSBmcm9tIFwiLi9wcml2YXRlL3VuaXF1ZVwiO1xuaW1wb3J0IHsgSVN0YWNrU3ludGhlc2l6ZXIgfSBmcm9tIFwiLi9zeW50aGVzaXplL3R5cGVzXCI7XG5pbXBvcnQgeyBTdGFja1N5bnRoZXNpemVyIH0gZnJvbSBcIi4vc3ludGhlc2l6ZS9zeW50aGVzaXplclwiO1xuXG5jb25zdCBTVEFDS19TWU1CT0wgPSBTeW1ib2wuZm9yKFwiY2RrdGYvVGVycmFmb3JtU3RhY2tcIik7XG5pbXBvcnQgeyBWYWxpZGF0ZVByb3ZpZGVyUHJlc2VuY2UgfSBmcm9tIFwiLi92YWxpZGF0aW9uc1wiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4vYXBwXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1CYWNrZW5kIH0gZnJvbSBcIi4vdGVycmFmb3JtLWJhY2tlbmRcIjtcbmltcG9ydCB7IFRlcnJhZm9ybVJlc291cmNlVGFyZ2V0cyB9IGZyb20gXCIuL3RlcnJhZm9ybS1yZXNvdXJjZS10YXJnZXRzXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1SZXNvdXJjZSB9IGZyb20gXCIuL3RlcnJhZm9ybS1yZXNvdXJjZVwiO1xuaW1wb3J0IHtcbiAgcmVuZGVyRGF0YXNvdXJjZSxcbiAgcmVuZGVyTW9kdWxlLFxuICByZW5kZXJNb3ZlZCxcbiAgcmVuZGVyT3V0cHV0LFxuICByZW5kZXJQcm92aWRlcixcbiAgcmVuZGVyUmVzb3VyY2UsXG4gIHJlbmRlclRlcnJhZm9ybSxcbiAgcmVuZGVyTG9jYWxzLFxuICByZW5kZXJWYXJpYWJsZSxcbiAgcmVuZGVySW1wb3J0LFxuICBjbGVhbkZvck1ldGFkYXRhLFxufSBmcm9tIFwiLi9oY2wvcmVuZGVyXCI7XG5pbXBvcnQge1xuICBub1N0YWNrRm9yQ29uc3RydWN0LFxuICBzdGFja0NvbnRhaW5zRGlzYWxsb3dlZENoYXIsXG4gIHN0YWNrSGFzQ2lyY3VsYXJEZXBlbmRlbmN5LFxuICBzdGFja0lkQ29udGFpbnNXaGl0ZXNwYWNlLFxuICBzdGFja1ZhbGlkYXRpb25GYWlsdXJlLFxufSBmcm9tIFwiLi9lcnJvcnNcIjtcblxudHlwZSBTdGFja0lkZW50aWZpZXIgPSBzdHJpbmc7XG50eXBlIE91dHB1dElkTWFwID1cbiAgfCB7IFtjb25zdHJ1Y3RJZDogc3RyaW5nXTogc3RyaW5nIH1cbiAgfCB7IFtzdGFja09yQ29uc3RydWN0SWQ6IHN0cmluZ106IE91dHB1dElkTWFwIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVycmFmb3JtU3RhY2tNZXRhZGF0YSB7XG4gIHJlYWRvbmx5IHN0YWNrTmFtZTogc3RyaW5nO1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGJhY2tlbmQ6IHN0cmluZztcbiAgcmVhZG9ubHkgY2xvdWQ/OiBzdHJpbmc7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5mdW5jdGlvbiB0aHJvd0lmSWRJc0dsb2JDaGFyYWN0ZXIoc3RyOiBzdHJpbmcpOiB2b2lkIHtcbiAgW1wiKlwiLCBcIj9cIiwgXCJbXCIsIFwiXVwiLCBcIntcIiwgXCJ9XCIsIFwiIVwiXS5mb3JFYWNoKChjaGFyKSA9PiB7XG4gICAgaWYgKHN0ci5pbmNsdWRlcyhjaGFyKSkge1xuICAgICAgdGhyb3cgc3RhY2tDb250YWluc0Rpc2FsbG93ZWRDaGFyKHN0ciwgY2hhcik7XG4gICAgfVxuICB9KTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmZ1bmN0aW9uIHRocm93SWZJZENvbnRhaW5zV2hpdGVzcGFjZShzdHI6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoL1xccy8udGVzdChzdHIpKSB7XG4gICAgdGhyb3cgc3RhY2tJZENvbnRhaW5zV2hpdGVzcGFjZShzdHIpO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgY2xhc3MgVGVycmFmb3JtU3RhY2sgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IHJhd092ZXJyaWRlczogYW55ID0ge307XG4gIHByaXZhdGUgcmVhZG9ubHkgY2RrdGZWZXJzaW9uOiBzdHJpbmc7XG4gIHByaXZhdGUgY3Jvc3NTdGFja091dHB1dHM6IFJlY29yZDxTdGFja0lkZW50aWZpZXIsIFRlcnJhZm9ybU91dHB1dD4gPSB7fTtcbiAgcHJpdmF0ZSBjcm9zc1N0YWNrRGF0YVNvdXJjZXM6IFJlY29yZDxTdGFja0lkZW50aWZpZXIsIFRlcnJhZm9ybVJlbW90ZVN0YXRlPiA9XG4gICAge307XG4gIHB1YmxpYyBzeW50aGVzaXplcjogSVN0YWNrU3ludGhlc2l6ZXI7XG4gIHB1YmxpYyBkZXBlbmRlbmNpZXM6IFRlcnJhZm9ybVN0YWNrW10gPSBbXTtcbiAgcHVibGljIG1vdmVUYXJnZXRzOiBUZXJyYWZvcm1SZXNvdXJjZVRhcmdldHMgPSBuZXcgVGVycmFmb3JtUmVzb3VyY2VUYXJnZXRzKCk7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aHJvd0lmSWRJc0dsb2JDaGFyYWN0ZXIoaWQpO1xuICAgIHRocm93SWZJZENvbnRhaW5zV2hpdGVzcGFjZShpZCk7XG4gICAgdGhpcy5jZGt0ZlZlcnNpb24gPSB0aGlzLm5vZGUudHJ5R2V0Q29udGV4dChcImNka3RmVmVyc2lvblwiKTtcbiAgICB0aGlzLnN5bnRoZXNpemVyID0gbmV3IFN0YWNrU3ludGhlc2l6ZXIoXG4gICAgICB0aGlzLFxuICAgICAgcHJvY2Vzcy5lbnYuQ0RLVEZfQ09OVElOVUVfU1lOVEhfT05fRVJST1JfQU5OT1RBVElPTlMgIT09IHVuZGVmaW5lZCxcbiAgICAgIHByb2Nlc3MuZW52LlNZTlRIX0hDTF9PVVRQVVQgPT09IFwidHJ1ZVwiIHx8XG4gICAgICAgIHByb2Nlc3MuZW52LlNZTlRIX0hDTF9PVVRQVVQgPT09IFwiMVwiLFxuICAgICk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIFNUQUNLX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbihuZXcgVmFsaWRhdGVQcm92aWRlclByZXNlbmNlKHRoaXMpKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNTdGFjayh4OiBhbnkpOiB4IGlzIFRlcnJhZm9ybVN0YWNrIHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YgeCA9PT0gXCJvYmplY3RcIiAmJiBTVEFDS19TWU1CT0wgaW4geDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgb2YoY29uc3RydWN0OiBJQ29uc3RydWN0KTogVGVycmFmb3JtU3RhY2sge1xuICAgIHJldHVybiBfbG9va3VwKGNvbnN0cnVjdCk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGZ1bmN0aW9uIF9sb29rdXAoYzogSUNvbnN0cnVjdCk6IFRlcnJhZm9ybVN0YWNrIHtcbiAgICAgIGlmIChUZXJyYWZvcm1TdGFjay5pc1N0YWNrKGMpKSB7XG4gICAgICAgIHJldHVybiBjO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBub2RlID0gYy5ub2RlO1xuXG4gICAgICBpZiAoIW5vZGUuc2NvcGUpIHtcbiAgICAgICAgbGV0IGhpbnQgPSBcIlwiO1xuICAgICAgICBpZiAoY29uc3RydWN0Lm5vZGUuc2NvcGUgPT09IGMgJiYgQXBwLmlzQXBwKGMpKSB7XG4gICAgICAgICAgLy8gdGhlIHNjb3BlIG9mIHRoZSBvcmlnaW5hbGx5IHBhc3NlZCBjb25zdHJ1Y3QgZXF1YWxzIHRoZSBjb25zdHJ1Y3QgY1xuICAgICAgICAgIC8vIHdoaWNoIGhhcyBubyBzY29wZSAoaS5lLiBoYXMgbm8gcGFyZW50IGNvbnN0cnVjdCkgYW5kIGMgaXMgYW4gQXBwXG4gICAgICAgICAgLy8gYW5kIG91ciBjb25zdHJ1Y3QgaXMgYSBCYWNrZW5kXG4gICAgICAgICAgaGludCA9IGAuIFlvdSBzZWVtIHRvIGhhdmUgcGFzc2VkIHlvdXIgcm9vdCBBcHAgYXMgc2NvcGUgdG8gYSBjb25zdHJ1Y3QuIFBhc3MgYSBzdGFjayAoaW5oZXJpdGluZyBmcm9tIFRlcnJhZm9ybVN0YWNrKSBhcyBzY29wZSB0byB5b3VyIGNvbnN0cnVjdCBpbnN0ZWFkLmA7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBub1N0YWNrRm9yQ29uc3RydWN0KGNvbnN0cnVjdC5ub2RlLnBhdGgsIGhpbnQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gX2xvb2t1cChub2RlLnNjb3BlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbmRBbGw8VCBleHRlbmRzIElDb25zdHJ1Y3Q+KFxuICAgIHByZWRpY2F0ZTogKG5vZGU6IHVua25vd24pID0+IG5vZGUgaXMgVCxcbiAgKTogVFtdIHtcbiAgICBjb25zdCBpdGVtczogVFtdID0gW107XG5cbiAgICBjb25zdCB2aXNpdCA9IGFzeW5jIChub2RlOiBJQ29uc3RydWN0KSA9PiB7XG4gICAgICBpZiAocHJlZGljYXRlKG5vZGUpKSB7XG4gICAgICAgIGl0ZW1zLnB1c2gobm9kZSk7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygbm9kZS5ub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIHZpc2l0KGNoaWxkKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmlzaXQodGhpcyk7XG5cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxuICBwdWJsaWMgcHJlcGFyZVN0YWNrKCkge1xuICAgIC8vIEVuc3VyZSB3ZSBoYXZlIGEgYmFja2VuZCBjb25maWd1cmVkXG4gICAgdGhpcy5lbnN1cmVCYWNrZW5kRXhpc3RzKCk7XG4gICAgLy8gQSBwcmVwYXJpbmcgcmVzb2x2ZSBydW4gbWlnaHQgYWRkIG5ldyByZXNvdXJjZXMgdG8gdGhlIHN0YWNrLCBlLmcuIGZvciBjcm9zcyBzdGFjayByZWZlcmVuY2VzLlxuICAgIHRlcnJhZm9ybUVsZW1lbnRzKHRoaXMpLmZvckVhY2goKGUpID0+XG4gICAgICByZXNvbHZlKHRoaXMsIGUudG9UZXJyYWZvcm0oKSwgdHJ1ZSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRPdmVycmlkZShwYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoXCIuXCIpO1xuICAgIGxldCBjdXJyOiBhbnkgPSB0aGlzLnJhd092ZXJyaWRlcztcblxuICAgIHdoaWxlIChwYXJ0cy5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zdCBrZXkgPSBwYXJ0cy5zaGlmdCgpITtcblxuICAgICAgLy8gaWYgd2UgY2FuJ3QgcmVjdXJzZSBmdXJ0aGVyIG9yIHRoZSBwcmV2aW91cyB2YWx1ZSBpcyBub3QgYW5cbiAgICAgIC8vIG9iamVjdCBvdmVyd3JpdGUgaXQgd2l0aCBhbiBvYmplY3QuXG4gICAgICBjb25zdCBpc09iamVjdCA9XG4gICAgICAgIGN1cnJba2V5XSAhPSBudWxsICYmXG4gICAgICAgIHR5cGVvZiBjdXJyW2tleV0gPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgIUFycmF5LmlzQXJyYXkoY3VycltrZXldKTtcbiAgICAgIGlmICghaXNPYmplY3QpIHtcbiAgICAgICAgY3VycltrZXldID0ge307XG4gICAgICB9XG5cbiAgICAgIGN1cnIgPSBjdXJyW2tleV07XG4gICAgfVxuXG4gICAgY29uc3QgbGFzdEtleSA9IHBhcnRzLnNoaWZ0KCkhO1xuICAgIGN1cnJbbGFzdEtleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMb2dpY2FsSWQodGZFbGVtZW50OiBUZXJyYWZvcm1FbGVtZW50IHwgTm9kZSk6IHN0cmluZyB7XG4gICAgLy8gd3JhcCB0aGUgYWxsb2NhdGlvbiBmb3IgZnV0dXJlIHJlbmFtaW5nIHN1cHBvcnRcbiAgICByZXR1cm4gdGhpcy5hbGxvY2F0ZUxvZ2ljYWxJZCh0ZkVsZW1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG5hbWluZyBzY2hlbWUgdXNlZCB0byBhbGxvY2F0ZSBsb2dpY2FsIElEcy4gQnkgZGVmYXVsdCwgdXNlc1xuICAgKiB0aGUgYEhhc2hlZEFkZHJlc3NpbmdTY2hlbWVgIGJ1dCB0aGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbiB0byBjdXN0b21pemVcbiAgICogdGhpcyBiZWhhdmlvci5cbiAgICpcbiAgICogQHBhcmFtIHRmRWxlbWVudCBUaGUgZWxlbWVudCBmb3Igd2hpY2ggdGhlIGxvZ2ljYWwgSUQgaXMgYWxsb2NhdGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFsbG9jYXRlTG9naWNhbElkKHRmRWxlbWVudDogVGVycmFmb3JtRWxlbWVudCB8IE5vZGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vZGUgPSBUZXJyYWZvcm1FbGVtZW50LmlzVGVycmFmb3JtRWxlbWVudCh0ZkVsZW1lbnQpXG4gICAgICA/IHRmRWxlbWVudC5ub2RlXG4gICAgICA6IHRmRWxlbWVudDtcbiAgICBjb25zdCBzdGFjayA9IFRlcnJhZm9ybUVsZW1lbnQuaXNUZXJyYWZvcm1FbGVtZW50KHRmRWxlbWVudClcbiAgICAgID8gdGZFbGVtZW50LmNka3RmU3RhY2tcbiAgICAgIDogdGhpcztcblxuICAgIGNvbnN0IHN0YWNrSW5kZXggPSBub2RlLnNjb3Blcy5pbmRleE9mKHN0YWNrKTtcblxuICAgIGNvbnN0IGNvbXBvbmVudHMgPSBub2RlLnNjb3Blcy5zbGljZShzdGFja0luZGV4ICsgMSkubWFwKChjKSA9PiBjLm5vZGUuaWQpO1xuICAgIHJldHVybiBjb21wb25lbnRzLmxlbmd0aCA+IDAgPyBtYWtlVW5pcXVlSWQoY29tcG9uZW50cykgOiBcIlwiO1xuICB9XG5cbiAgcHVibGljIGFsbFByb3ZpZGVycygpOiBUZXJyYWZvcm1Qcm92aWRlcltdIHtcbiAgICByZXR1cm4gdGhpcy5maW5kQWxsKFRlcnJhZm9ybVByb3ZpZGVyLmlzVGVycmFmb3JtUHJvdmlkZXIpO1xuICB9XG5cbiAgcHVibGljIGVuc3VyZUJhY2tlbmRFeGlzdHMoKTogVGVycmFmb3JtQmFja2VuZCB7XG4gICAgY29uc3QgYmFja2VuZHMgPSB0aGlzLmZpbmRBbGwoVGVycmFmb3JtQmFja2VuZC5pc0JhY2tlbmQpO1xuICAgIHJldHVybiBiYWNrZW5kc1swXSB8fCBuZXcgTG9jYWxCYWNrZW5kKHRoaXMsIHt9KTtcbiAgfVxuXG4gIHB1YmxpYyB0b0hjbFRlcnJhZm9ybSgpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBjb25zdCBtZXRhZGF0YTogVGVycmFmb3JtU3RhY2tNZXRhZGF0YSA9IHtcbiAgICAgIHZlcnNpb246IHRoaXMuY2RrdGZWZXJzaW9uLFxuICAgICAgc3RhY2tOYW1lOiB0aGlzLm5vZGUuaWQsXG4gICAgICBiYWNrZW5kOiBcImxvY2FsXCIsIC8vIG92ZXJ3cml0dGVuIGJ5IGJhY2tlbmQgaW1wbGVtZW50YXRpb25zIGlmIHVzZWRcbiAgICAgIGNsb3VkOiB1bmRlZmluZWQsIC8vIG92ZXJ3cml0dGVuIGJ5IGNsb3VkIGFuZCByZW1vdGUgYmFja2VuZCBpbXBsZW1lbnRhdGlvbnNcbiAgICAgIC4uLihPYmplY3Qua2V5cyh0aGlzLnJhd092ZXJyaWRlcykubGVuZ3RoID4gMFxuICAgICAgICA/IHsgb3ZlcnJpZGVzOiB7IHN0YWNrOiBPYmplY3Qua2V5cyh0aGlzLnJhd092ZXJyaWRlcykgfSB9XG4gICAgICAgIDoge30pLFxuICAgIH07XG5cbiAgICBjb25zdCBlbGVtZW50cyA9IHRlcnJhZm9ybUVsZW1lbnRzKHRoaXMpO1xuXG4gICAgY29uc3QgbWV0YWRhdGFzID0gZWxlbWVudHMubWFwKChlKSA9PiByZXNvbHZlKHRoaXMsIGUudG9NZXRhZGF0YSgpKSk7XG4gICAgZm9yIChjb25zdCBtZXRhIG9mIG1ldGFkYXRhcykge1xuICAgICAgZGVlcE1lcmdlKG1ldGFkYXRhLCBtZXRhKTtcbiAgICB9XG5cbiAgICBjb25zdCBvdXRwdXRzOiBPdXRwdXRJZE1hcCA9IGVsZW1lbnRzLnJlZHVjZSgoY2FycnksIGl0ZW0pID0+IHtcbiAgICAgIGlmICghVGVycmFmb3JtT3V0cHV0LmlzVGVycmFmb3JtT3V0cHV0KGl0ZW0pKSB7XG4gICAgICAgIHJldHVybiBjYXJyeTtcbiAgICAgIH1cblxuICAgICAgZGVlcE1lcmdlKFxuICAgICAgICBjYXJyeSxcbiAgICAgICAgaXRlbS5ub2RlLnBhdGguc3BsaXQoXCIvXCIpLnJlZHVjZVJpZ2h0KChpbm5lckNhcnJ5LCBwYXJ0KSA9PiB7XG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGlubmVyQ2FycnkpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgW3BhcnRdOiBpdGVtLmZyaWVuZGx5VW5pcXVlSWQgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHsgW3BhcnRdOiBpbm5lckNhcnJ5IH07XG4gICAgICAgIH0sIHt9KSxcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBjYXJyeTtcbiAgICB9LCB7fSk7XG5cbiAgICBjb25zdCB0ZiA9IHt9O1xuICAgIGNvbnN0IGZyYWdtZW50cyA9IGVsZW1lbnRzLm1hcCgoZSkgPT4gcmVzb2x2ZSh0aGlzLCBlLnRvSGNsVGVycmFmb3JtKCkpKTtcbiAgICBjb25zdCBsb2NhbHM6IHsgbG9jYWxzPzogYW55IH0gPSB7fTtcblxuICAgIGNvbnN0IHRmTWV0YSA9IHtcbiAgICAgIFwiLy9cIjoge1xuICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgb3V0cHV0cyxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCBoY2xGcmFnbWVudHMgPSBmcmFnbWVudHNcbiAgICAgIC5tYXAoKGZyYWcpID0+IHtcbiAgICAgICAgbGV0IHJlcyA9IFwiXCI7XG4gICAgICAgIGlmIChmcmFnLnJlc291cmNlKSB7XG4gICAgICAgICAgY29uc3QgeyBoY2wsIG1ldGFkYXRhIH0gPSByZW5kZXJSZXNvdXJjZShmcmFnLnJlc291cmNlKTtcbiAgICAgICAgICBkZWVwTWVyZ2UodGZNZXRhLCBtZXRhZGF0YSk7XG4gICAgICAgICAgcmVzID0gW3JlcywgaGNsXS5qb2luKFwiXFxuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZyYWcuZGF0YSkge1xuICAgICAgICAgIGNvbnN0IHsgaGNsLCBtZXRhZGF0YSB9ID0gcmVuZGVyRGF0YXNvdXJjZShmcmFnLmRhdGEpO1xuICAgICAgICAgIGRlZXBNZXJnZSh0Zk1ldGEsIG1ldGFkYXRhKTtcbiAgICAgICAgICByZXMgPSBbcmVzLCBoY2xdLmpvaW4oXCJcXG5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZnJhZy5wcm92aWRlcikge1xuICAgICAgICAgIGRlZXBNZXJnZSh0ZiwgZnJhZyk7XG4gICAgICAgICAgcmVzID0gW3JlcywgcmVuZGVyUHJvdmlkZXIoZnJhZy5wcm92aWRlcildLmpvaW4oXCJcXG5cXG5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZnJhZy50ZXJyYWZvcm0pIHtcbiAgICAgICAgICBkZWVwTWVyZ2UodGYsIGZyYWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZyYWcubW9kdWxlKSB7XG4gICAgICAgICAgY29uc3QgeyBoY2wsIG1ldGFkYXRhIH0gPSByZW5kZXJNb2R1bGUoZnJhZy5tb2R1bGUpO1xuICAgICAgICAgIGRlZXBNZXJnZSh0Zk1ldGEsIG1ldGFkYXRhKTtcbiAgICAgICAgICByZXMgPSBbcmVzLCBoY2xdLmpvaW4oXCJcXG5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZnJhZy5vdXRwdXQpIHtcbiAgICAgICAgICByZXMgPSBbcmVzLCByZW5kZXJPdXRwdXQoZnJhZy5vdXRwdXQpXS5qb2luKFwiXFxuXFxuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZyYWcubW92ZWQpIHtcbiAgICAgICAgICByZXMgPSBbcmVzLCByZW5kZXJNb3ZlZChmcmFnLm1vdmVkKV0uam9pbihcIlxcblxcblwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmcmFnLmltcG9ydCkge1xuICAgICAgICAgIHJlcyA9IFtyZXMsIHJlbmRlckltcG9ydChmcmFnLmltcG9ydCldLmpvaW4oXCJcXG5cXG5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZnJhZy5sb2NhbHMpIHtcbiAgICAgICAgICBkZWVwTWVyZ2UobG9jYWxzLCBmcmFnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmcmFnLnZhcmlhYmxlKSB7XG4gICAgICAgICAgcmVzID0gW3JlcywgcmVuZGVyVmFyaWFibGUoZnJhZy52YXJpYWJsZSldLmpvaW4oXCJcXG5cXG5cIik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKGZyYWcpID0+IGZyYWcgIT09IHVuZGVmaW5lZCk7XG5cbiAgICBkZWVwTWVyZ2UodGYsIHRoaXMucmF3T3ZlcnJpZGVzKTtcbiAgICBjb25zdCB0ZXJyYWZvcm1CbG9jayA9ICh0ZiBhcyBhbnkpPy50ZXJyYWZvcm07XG5cbiAgICBsZXQgdGVycmFmb3JtQmxvY2tIY2wgPSBcIlwiO1xuICAgIGlmICh0ZXJyYWZvcm1CbG9jaykge1xuICAgICAgdGVycmFmb3JtQmxvY2tIY2wgPSByZW5kZXJUZXJyYWZvcm0odGVycmFmb3JtQmxvY2spO1xuICAgICAgZGVlcE1lcmdlKHRmTWV0YSwgeyB0ZXJyYWZvcm06IGNsZWFuRm9yTWV0YWRhdGEodGVycmFmb3JtQmxvY2spIH0pO1xuICAgIH1cblxuICAgIGxldCBsb2NhbHNIY2wgPSBcIlwiO1xuICAgIGlmIChsb2NhbHMpIHtcbiAgICAgIGxvY2Fsc0hjbCA9IHJlbmRlckxvY2Fscyhsb2NhbHMubG9jYWxzKTtcblxuICAgICAgaWYgKGxvY2Fsc0hjbCkge1xuICAgICAgICAvLyBIYWNreSB3YXkgdG8gYWRkIGEgbmV3bGluZSBiZXR3ZWVuIHRoZSB0ZXJyYWZvcm0gYmxvY2sgYW5kIHRoZSBsb2NhbHMgYmxvY2tcbiAgICAgICAgbG9jYWxzSGNsID0gXCJcXG5cXG5cIiArIGxvY2Fsc0hjbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaGNsOiByZXNvbHZlKFxuICAgICAgICB0aGlzLFxuICAgICAgICBbdGVycmFmb3JtQmxvY2tIY2wsIGxvY2Fsc0hjbCwgLi4uaGNsRnJhZ21lbnRzXS5qb2luKFwiXCIpLFxuICAgICAgKSxcbiAgICAgIG1ldGFkYXRhOiByZXNvbHZlKHRoaXMsIHRmTWV0YSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0b1RlcnJhZm9ybSgpOiBhbnkge1xuICAgIGNvbnN0IHRmID0ge307XG5cbiAgICBjb25zdCBtZXRhZGF0YTogVGVycmFmb3JtU3RhY2tNZXRhZGF0YSA9IHtcbiAgICAgIHZlcnNpb246IHRoaXMuY2RrdGZWZXJzaW9uLFxuICAgICAgc3RhY2tOYW1lOiB0aGlzLm5vZGUuaWQsXG4gICAgICBiYWNrZW5kOiBcImxvY2FsXCIsIC8vIG92ZXJ3cml0dGVuIGJ5IGJhY2tlbmQgaW1wbGVtZW50YXRpb25zIGlmIHVzZWRcbiAgICAgIGNsb3VkOiB1bmRlZmluZWQsIC8vIG92ZXJ3cml0dGVuIGJ5IGNsb3VkIGFuZCByZW1vdGUgYmFja2VuZCBpbXBsZW1lbnRhdGlvbnNcbiAgICAgIC4uLihPYmplY3Qua2V5cyh0aGlzLnJhd092ZXJyaWRlcykubGVuZ3RoID4gMFxuICAgICAgICA/IHsgb3ZlcnJpZGVzOiB7IHN0YWNrOiBPYmplY3Qua2V5cyh0aGlzLnJhd092ZXJyaWRlcykgfSB9XG4gICAgICAgIDoge30pLFxuICAgIH07XG5cbiAgICBjb25zdCBlbGVtZW50cyA9IHRlcnJhZm9ybUVsZW1lbnRzKHRoaXMpO1xuXG4gICAgY29uc3QgbWV0YWRhdGFzID0gZWxlbWVudHMubWFwKChlKSA9PiByZXNvbHZlKHRoaXMsIGUudG9NZXRhZGF0YSgpKSk7XG4gICAgZm9yIChjb25zdCBtZXRhIG9mIG1ldGFkYXRhcykge1xuICAgICAgZGVlcE1lcmdlKG1ldGFkYXRhLCBtZXRhKTtcbiAgICB9XG5cbiAgICBjb25zdCBvdXRwdXRzOiBPdXRwdXRJZE1hcCA9IGVsZW1lbnRzLnJlZHVjZSgoY2FycnksIGl0ZW0pID0+IHtcbiAgICAgIGlmICghVGVycmFmb3JtT3V0cHV0LmlzVGVycmFmb3JtT3V0cHV0KGl0ZW0pKSB7XG4gICAgICAgIHJldHVybiBjYXJyeTtcbiAgICAgIH1cblxuICAgICAgZGVlcE1lcmdlKFxuICAgICAgICBjYXJyeSxcbiAgICAgICAgaXRlbS5ub2RlLnBhdGguc3BsaXQoXCIvXCIpLnJlZHVjZVJpZ2h0KChpbm5lckNhcnJ5LCBwYXJ0KSA9PiB7XG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGlubmVyQ2FycnkpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgW3BhcnRdOiBpdGVtLmZyaWVuZGx5VW5pcXVlSWQgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHsgW3BhcnRdOiBpbm5lckNhcnJ5IH07XG4gICAgICAgIH0sIHt9KSxcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBjYXJyeTtcbiAgICB9LCB7fSk7XG5cbiAgICAodGYgYXMgYW55KVtcIi8vXCJdID0geyBtZXRhZGF0YSwgb3V0cHV0cyB9O1xuXG4gICAgY29uc3QgZnJhZ21lbnRzID0gZWxlbWVudHMubWFwKChlKSA9PiByZXNvbHZlKHRoaXMsIGUudG9UZXJyYWZvcm0oKSkpO1xuICAgIGZvciAoY29uc3QgZnJhZ21lbnQgb2YgZnJhZ21lbnRzKSB7XG4gICAgICBkZWVwTWVyZ2UodGYsIGZyYWdtZW50KTtcbiAgICB9XG5cbiAgICBkZWVwTWVyZ2UodGYsIHRoaXMucmF3T3ZlcnJpZGVzKTtcblxuICAgIHJldHVybiByZXNvbHZlKHRoaXMsIHRmKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck91dGdvaW5nQ3Jvc3NTdGFja1JlZmVyZW5jZShpZGVudGlmaWVyOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5jcm9zc1N0YWNrT3V0cHV0c1tpZGVudGlmaWVyXSkge1xuICAgICAgcmV0dXJuIHRoaXMuY3Jvc3NTdGFja091dHB1dHNbaWRlbnRpZmllcl07XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0cHV0ID0gbmV3IFRlcnJhZm9ybU91dHB1dChcbiAgICAgIHRoaXMsXG4gICAgICBgY3Jvc3Mtc3RhY2stb3V0cHV0LSR7aWRlbnRpZmllcn1gLFxuICAgICAge1xuICAgICAgICB2YWx1ZTogcmVmKGlkZW50aWZpZXIsIHRoaXMpLFxuICAgICAgICBzZW5zaXRpdmU6IHRydWUsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLmNyb3NzU3RhY2tPdXRwdXRzW2lkZW50aWZpZXJdID0gb3V0cHV0O1xuICAgIHJldHVybiBvdXRwdXQ7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJJbmNvbWluZ0Nyb3NzU3RhY2tSZWZlcmVuY2UoZnJvbVN0YWNrOiBUZXJyYWZvcm1TdGFjaykge1xuICAgIGlmICh0aGlzLmNyb3NzU3RhY2tEYXRhU291cmNlc1tTdHJpbmcoZnJvbVN0YWNrKV0pIHtcbiAgICAgIHJldHVybiB0aGlzLmNyb3NzU3RhY2tEYXRhU291cmNlc1tTdHJpbmcoZnJvbVN0YWNrKV07XG4gICAgfVxuICAgIGNvbnN0IG9yaWdpbkJhY2tlbmQgPSBmcm9tU3RhY2suZW5zdXJlQmFja2VuZEV4aXN0cygpO1xuICAgIGNvbnN0IG9yaWdpblBhdGggPSBmcm9tU3RhY2subm9kZS5wYXRoO1xuXG4gICAgY29uc3QgcmVtb3RlU3RhdGUgPSBvcmlnaW5CYWNrZW5kLmdldFJlbW90ZVN0YXRlRGF0YVNvdXJjZShcbiAgICAgIHRoaXMsXG4gICAgICBgY3Jvc3Mtc3RhY2stcmVmZXJlbmNlLWlucHV0LSR7b3JpZ2luUGF0aH1gLFxuICAgICAgb3JpZ2luUGF0aCxcbiAgICApO1xuXG4gICAgdGhpcy5jcm9zc1N0YWNrRGF0YVNvdXJjZXNbb3JpZ2luUGF0aF0gPSByZW1vdGVTdGF0ZTtcbiAgICByZXR1cm4gcmVtb3RlU3RhdGU7XG4gIH1cblxuICAvLyBDaGVjayBoZXJlIGZvciBsb29wcyBpbiB0aGUgZGVwZW5kZW5jeSBncmFwaFxuICBwdWJsaWMgZGVwZW5kc09uKHN0YWNrOiBUZXJyYWZvcm1TdGFjayk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmRlcGVuZGVuY2llcy5pbmNsdWRlcyhzdGFjaykgfHxcbiAgICAgIHRoaXMuZGVwZW5kZW5jaWVzLnNvbWUoKGQpID0+IGQuZGVwZW5kc09uKHN0YWNrKSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZERlcGVuZGVuY3koZGVwZW5kZW5jeTogVGVycmFmb3JtU3RhY2spIHtcbiAgICBpZiAoZGVwZW5kZW5jeS5kZXBlbmRzT24odGhpcykpIHtcbiAgICAgIHRocm93IHN0YWNrSGFzQ2lyY3VsYXJEZXBlbmRlbmN5KHRoaXMsIGRlcGVuZGVuY3kpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRlcGVuZGVuY2llcy5pbmNsdWRlcyhkZXBlbmRlbmN5KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZGVwZW5kZW5jaWVzLnB1c2goZGVwZW5kZW5jeSk7XG4gIH1cblxuICAvKipcbiAgICogUnVuIGFsbCB2YWxpZGF0aW9ucyBvbiB0aGUgc3RhY2suXG4gICAqL1xuICBwdWJsaWMgcnVuQWxsVmFsaWRhdGlvbnMoKSB7XG4gICAgY29uc3QgZXJyb3JzOiB7IG1lc3NhZ2U6IHN0cmluZzsgc291cmNlOiBJQ29uc3RydWN0IH1bXSA9IHRoaXMubm9kZVxuICAgICAgLmZpbmRBbGwoKVxuICAgICAgLm1hcCgobm9kZSkgPT5cbiAgICAgICAgbm9kZS5ub2RlLnZhbGlkYXRlKCkubWFwKChlcnJvcikgPT4gKHsgbWVzc2FnZTogZXJyb3IsIHNvdXJjZTogbm9kZSB9KSksXG4gICAgICApXG4gICAgICAucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBbLi4ucHJldiwgLi4uY3Vycl0sIFtdKTtcbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGVycm9yTGlzdCA9IGVycm9yc1xuICAgICAgICAubWFwKChlKSA9PiBgWyR7ZS5zb3VyY2Uubm9kZS5wYXRofV0gJHtlLm1lc3NhZ2V9YClcbiAgICAgICAgLmpvaW4oXCJcXG4gIFwiKTtcbiAgICAgIHRocm93IHN0YWNrVmFsaWRhdGlvbkZhaWx1cmUoZXJyb3JMaXN0KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFzUmVzb3VyY2VNb3ZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0ZXJyYWZvcm1FbGVtZW50cyh0aGlzKS5zb21lKChlKSA9PiB7XG4gICAgICBpZiAoVGVycmFmb3JtUmVzb3VyY2UuaXNUZXJyYWZvcm1SZXNvdXJjZShlKSAmJiBlLmhhc1Jlc291cmNlTW92ZSgpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5mdW5jdGlvbiB0ZXJyYWZvcm1FbGVtZW50cyhcbiAgbm9kZTogSUNvbnN0cnVjdCxcbiAgaW50bzogVGVycmFmb3JtRWxlbWVudFtdID0gW10sXG4pOiBUZXJyYWZvcm1FbGVtZW50W10ge1xuICBpZiAoVGVycmFmb3JtRWxlbWVudC5pc1RlcnJhZm9ybUVsZW1lbnQobm9kZSkpIHtcbiAgICBpbnRvLnB1c2gobm9kZSk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUubm9kZS5jaGlsZHJlbikge1xuICAgIC8vIERvbid0IHJlY3Vyc2UgaW50byBhIHN1YnN0YWNrXG4gICAgaWYgKFRlcnJhZm9ybVN0YWNrLmlzU3RhY2soY2hpbGQpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB0ZXJyYWZvcm1FbGVtZW50cyhjaGlsZCwgaW50byk7XG4gIH1cblxuICByZXR1cm4gaW50bztcbn1cbiJdfQ==
358
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RlcnJhZm9ybS1zdGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsMkNBQXlEO0FBQ3pELHVDQUFvQztBQUVwQywyREFBdUQ7QUFDdkQsaUNBQW1DO0FBQ25DLDZEQUF5RDtBQUN6RCw0REFBd0Q7QUFDeEQsaURBQXFDO0FBQ3JDLHlEQUFxRDtBQUVyRCw2Q0FBZ0Q7QUFFaEQsMERBQTREO0FBRTVELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUN4RCwrQ0FBeUQ7QUFDekQsK0JBQTRCO0FBQzVCLDJEQUF1RDtBQUN2RCw2RUFBd0U7QUFDeEUsNkRBQXlEO0FBQ3pELHlDQVlzQjtBQUN0QixxQ0FNa0I7QUFjbEIsK0NBQStDO0FBQy9DLFNBQVMsd0JBQXdCLENBQUMsR0FBVztJQUMzQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ25ELElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBQSxvQ0FBMkIsRUFBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELCtDQUErQztBQUMvQyxTQUFTLDJCQUEyQixDQUFDLEdBQVc7SUFDOUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbkIsTUFBTSxJQUFBLGtDQUF5QixFQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7QUFDSCxDQUFDO0FBRUQsK0NBQStDO0FB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QUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLGdDQUFnQztRQUNoQyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxTQUFTO1FBQ1gsQ0FBQztRQUVELGlCQUFpQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IENvbnN0cnVjdCwgSUNvbnN0cnVjdCwgTm9kZSB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSBcIi4vX3Rva2Vuc1wiO1xuXG5pbXBvcnQgeyBUZXJyYWZvcm1FbGVtZW50IH0gZnJvbSBcIi4vdGVycmFmb3JtLWVsZW1lbnRcIjtcbmltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gXCIuL3V0aWxcIjtcbmltcG9ydCB7IFRlcnJhZm9ybVByb3ZpZGVyIH0gZnJvbSBcIi4vdGVycmFmb3JtLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBMb2NhbEJhY2tlbmQgfSBmcm9tIFwiLi9iYWNrZW5kcy9sb2NhbC1iYWNrZW5kXCI7XG5pbXBvcnQgeyByZWYgfSBmcm9tIFwiLi90ZkV4cHJlc3Npb25cIjtcbmltcG9ydCB7IFRlcnJhZm9ybU91dHB1dCB9IGZyb20gXCIuL3RlcnJhZm9ybS1vdXRwdXRcIjtcbmltcG9ydCB7IFRlcnJhZm9ybVJlbW90ZVN0YXRlIH0gZnJvbSBcIi4vdGVycmFmb3JtLXJlbW90ZS1zdGF0ZVwiO1xuaW1wb3J0IHsgbWFrZVVuaXF1ZUlkIH0gZnJvbSBcIi4vcHJpdmF0ZS91bmlxdWVcIjtcbmltcG9ydCB7IElTdGFja1N5bnRoZXNpemVyIH0gZnJvbSBcIi4vc3ludGhlc2l6ZS90eXBlc1wiO1xuaW1wb3J0IHsgU3RhY2tTeW50aGVzaXplciB9IGZyb20gXCIuL3N5bnRoZXNpemUvc3ludGhlc2l6ZXJcIjtcblxuY29uc3QgU1RBQ0tfU1lNQk9MID0gU3ltYm9sLmZvcihcImNka3RmL1RlcnJhZm9ybVN0YWNrXCIpO1xuaW1wb3J0IHsgVmFsaWRhdGVQcm92aWRlclByZXNlbmNlIH0gZnJvbSBcIi4vdmFsaWRhdGlvbnNcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuL2FwcFwiO1xuaW1wb3J0IHsgVGVycmFmb3JtQmFja2VuZCB9IGZyb20gXCIuL3RlcnJhZm9ybS1iYWNrZW5kXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1SZXNvdXJjZVRhcmdldHMgfSBmcm9tIFwiLi90ZXJyYWZvcm0tcmVzb3VyY2UtdGFyZ2V0c1wiO1xuaW1wb3J0IHsgVGVycmFmb3JtUmVzb3VyY2UgfSBmcm9tIFwiLi90ZXJyYWZvcm0tcmVzb3VyY2VcIjtcbmltcG9ydCB7XG4gIHJlbmRlckRhdGFzb3VyY2UsXG4gIHJlbmRlck1vZHVsZSxcbiAgcmVuZGVyTW92ZWQsXG4gIHJlbmRlck91dHB1dCxcbiAgcmVuZGVyUHJvdmlkZXIsXG4gIHJlbmRlclJlc291cmNlLFxuICByZW5kZXJUZXJyYWZvcm0sXG4gIHJlbmRlckxvY2FscyxcbiAgcmVuZGVyVmFyaWFibGUsXG4gIHJlbmRlckltcG9ydCxcbiAgY2xlYW5Gb3JNZXRhZGF0YSxcbn0gZnJvbSBcIi4vaGNsL3JlbmRlclwiO1xuaW1wb3J0IHtcbiAgbm9TdGFja0ZvckNvbnN0cnVjdCxcbiAgc3RhY2tDb250YWluc0Rpc2FsbG93ZWRDaGFyLFxuICBzdGFja0hhc0NpcmN1bGFyRGVwZW5kZW5jeSxcbiAgc3RhY2tJZENvbnRhaW5zV2hpdGVzcGFjZSxcbiAgc3RhY2tWYWxpZGF0aW9uRmFpbHVyZSxcbn0gZnJvbSBcIi4vZXJyb3JzXCI7XG5cbnR5cGUgU3RhY2tJZGVudGlmaWVyID0gc3RyaW5nO1xudHlwZSBPdXRwdXRJZE1hcCA9XG4gIHwgeyBbY29uc3RydWN0SWQ6IHN0cmluZ106IHN0cmluZyB9XG4gIHwgeyBbc3RhY2tPckNvbnN0cnVjdElkOiBzdHJpbmddOiBPdXRwdXRJZE1hcCB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybVN0YWNrTWV0YWRhdGEge1xuICByZWFkb25seSBzdGFja05hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuICByZWFkb25seSBiYWNrZW5kOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNsb3VkPzogc3RyaW5nO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZnVuY3Rpb24gdGhyb3dJZklkSXNHbG9iQ2hhcmFjdGVyKHN0cjogc3RyaW5nKTogdm9pZCB7XG4gIFtcIipcIiwgXCI/XCIsIFwiW1wiLCBcIl1cIiwgXCJ7XCIsIFwifVwiLCBcIiFcIl0uZm9yRWFjaCgoY2hhcikgPT4ge1xuICAgIGlmIChzdHIuaW5jbHVkZXMoY2hhcikpIHtcbiAgICAgIHRocm93IHN0YWNrQ29udGFpbnNEaXNhbGxvd2VkQ2hhcihzdHIsIGNoYXIpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5mdW5jdGlvbiB0aHJvd0lmSWRDb250YWluc1doaXRlc3BhY2Uoc3RyOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKC9cXHMvLnRlc3Qoc3RyKSkge1xuICAgIHRocm93IHN0YWNrSWRDb250YWluc1doaXRlc3BhY2Uoc3RyKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGNsYXNzIFRlcnJhZm9ybVN0YWNrIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSByYXdPdmVycmlkZXM6IGFueSA9IHt9O1xuICBwcml2YXRlIHJlYWRvbmx5IGNka3RmVmVyc2lvbjogc3RyaW5nO1xuICBwcml2YXRlIGNyb3NzU3RhY2tPdXRwdXRzOiBSZWNvcmQ8U3RhY2tJZGVudGlmaWVyLCBUZXJyYWZvcm1PdXRwdXQ+ID0ge307XG4gIHByaXZhdGUgY3Jvc3NTdGFja0RhdGFTb3VyY2VzOiBSZWNvcmQ8U3RhY2tJZGVudGlmaWVyLCBUZXJyYWZvcm1SZW1vdGVTdGF0ZT4gPVxuICAgIHt9O1xuICBwdWJsaWMgc3ludGhlc2l6ZXI6IElTdGFja1N5bnRoZXNpemVyO1xuICBwdWJsaWMgZGVwZW5kZW5jaWVzOiBUZXJyYWZvcm1TdGFja1tdID0gW107XG4gIHB1YmxpYyBtb3ZlVGFyZ2V0czogVGVycmFmb3JtUmVzb3VyY2VUYXJnZXRzID0gbmV3IFRlcnJhZm9ybVJlc291cmNlVGFyZ2V0cygpO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhyb3dJZklkSXNHbG9iQ2hhcmFjdGVyKGlkKTtcbiAgICB0aHJvd0lmSWRDb250YWluc1doaXRlc3BhY2UoaWQpO1xuICAgIHRoaXMuY2RrdGZWZXJzaW9uID0gdGhpcy5ub2RlLnRyeUdldENvbnRleHQoXCJjZGt0ZlZlcnNpb25cIik7XG4gICAgdGhpcy5zeW50aGVzaXplciA9IG5ldyBTdGFja1N5bnRoZXNpemVyKFxuICAgICAgdGhpcyxcbiAgICAgIHByb2Nlc3MuZW52LkNES1RGX0NPTlRJTlVFX1NZTlRIX09OX0VSUk9SX0FOTk9UQVRJT05TICE9PSB1bmRlZmluZWQsXG4gICAgICBwcm9jZXNzLmVudi5TWU5USF9IQ0xfT1VUUFVUID09PSBcInRydWVcIiB8fFxuICAgICAgICBwcm9jZXNzLmVudi5TWU5USF9IQ0xfT1VUUFVUID09PSBcIjFcIixcbiAgICApO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBTVEFDS19TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24obmV3IFZhbGlkYXRlUHJvdmlkZXJQcmVzZW5jZSh0aGlzKSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzU3RhY2soeDogYW55KTogeCBpcyBUZXJyYWZvcm1TdGFjayB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09IFwib2JqZWN0XCIgJiYgU1RBQ0tfU1lNQk9MIGluIHg7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG9mKGNvbnN0cnVjdDogSUNvbnN0cnVjdCk6IFRlcnJhZm9ybVN0YWNrIHtcbiAgICByZXR1cm4gX2xvb2t1cChjb25zdHJ1Y3QpO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBmdW5jdGlvbiBfbG9va3VwKGM6IElDb25zdHJ1Y3QpOiBUZXJyYWZvcm1TdGFjayB7XG4gICAgICBpZiAoVGVycmFmb3JtU3RhY2suaXNTdGFjayhjKSkge1xuICAgICAgICByZXR1cm4gYztcbiAgICAgIH1cblxuICAgICAgY29uc3Qgbm9kZSA9IGMubm9kZTtcblxuICAgICAgaWYgKCFub2RlLnNjb3BlKSB7XG4gICAgICAgIGxldCBoaW50ID0gXCJcIjtcbiAgICAgICAgaWYgKGNvbnN0cnVjdC5ub2RlLnNjb3BlID09PSBjICYmIEFwcC5pc0FwcChjKSkge1xuICAgICAgICAgIC8vIHRoZSBzY29wZSBvZiB0aGUgb3JpZ2luYWxseSBwYXNzZWQgY29uc3RydWN0IGVxdWFscyB0aGUgY29uc3RydWN0IGNcbiAgICAgICAgICAvLyB3aGljaCBoYXMgbm8gc2NvcGUgKGkuZS4gaGFzIG5vIHBhcmVudCBjb25zdHJ1Y3QpIGFuZCBjIGlzIGFuIEFwcFxuICAgICAgICAgIC8vIGFuZCBvdXIgY29uc3RydWN0IGlzIGEgQmFja2VuZFxuICAgICAgICAgIGhpbnQgPSBgLiBZb3Ugc2VlbSB0byBoYXZlIHBhc3NlZCB5b3VyIHJvb3QgQXBwIGFzIHNjb3BlIHRvIGEgY29uc3RydWN0LiBQYXNzIGEgc3RhY2sgKGluaGVyaXRpbmcgZnJvbSBUZXJyYWZvcm1TdGFjaykgYXMgc2NvcGUgdG8geW91ciBjb25zdHJ1Y3QgaW5zdGVhZC5gO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbm9TdGFja0ZvckNvbnN0cnVjdChjb25zdHJ1Y3Qubm9kZS5wYXRoLCBoaW50KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIF9sb29rdXAobm9kZS5zY29wZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaW5kQWxsPFQgZXh0ZW5kcyBJQ29uc3RydWN0PihcbiAgICBwcmVkaWNhdGU6IChub2RlOiB1bmtub3duKSA9PiBub2RlIGlzIFQsXG4gICk6IFRbXSB7XG4gICAgY29uc3QgaXRlbXM6IFRbXSA9IFtdO1xuXG4gICAgY29uc3QgdmlzaXQgPSBhc3luYyAobm9kZTogSUNvbnN0cnVjdCkgPT4ge1xuICAgICAgaWYgKHByZWRpY2F0ZShub2RlKSkge1xuICAgICAgICBpdGVtcy5wdXNoKG5vZGUpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUubm9kZS5jaGlsZHJlbikge1xuICAgICAgICB2aXNpdChjaGlsZCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZpc2l0KHRoaXMpO1xuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgcHVibGljIHByZXBhcmVTdGFjaygpIHtcbiAgICAvLyBFbnN1cmUgd2UgaGF2ZSBhIGJhY2tlbmQgY29uZmlndXJlZFxuICAgIHRoaXMuZW5zdXJlQmFja2VuZEV4aXN0cygpO1xuICAgIC8vIEEgcHJlcGFyaW5nIHJlc29sdmUgcnVuIG1pZ2h0IGFkZCBuZXcgcmVzb3VyY2VzIHRvIHRoZSBzdGFjaywgZS5nLiBmb3IgY3Jvc3Mgc3RhY2sgcmVmZXJlbmNlcy5cbiAgICB0ZXJyYWZvcm1FbGVtZW50cyh0aGlzKS5mb3JFYWNoKChlKSA9PlxuICAgICAgcmVzb2x2ZSh0aGlzLCBlLnRvVGVycmFmb3JtKCksIHRydWUpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkT3ZlcnJpZGUocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgcGFydHMgPSBwYXRoLnNwbGl0KFwiLlwiKTtcbiAgICBsZXQgY3VycjogYW55ID0gdGhpcy5yYXdPdmVycmlkZXM7XG5cbiAgICB3aGlsZSAocGFydHMubGVuZ3RoID4gMSkge1xuICAgICAgY29uc3Qga2V5ID0gcGFydHMuc2hpZnQoKSE7XG5cbiAgICAgIC8vIGlmIHdlIGNhbid0IHJlY3Vyc2UgZnVydGhlciBvciB0aGUgcHJldmlvdXMgdmFsdWUgaXMgbm90IGFuXG4gICAgICAvLyBvYmplY3Qgb3ZlcndyaXRlIGl0IHdpdGggYW4gb2JqZWN0LlxuICAgICAgY29uc3QgaXNPYmplY3QgPVxuICAgICAgICBjdXJyW2tleV0gIT0gbnVsbCAmJlxuICAgICAgICB0eXBlb2YgY3VycltrZXldID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICFBcnJheS5pc0FycmF5KGN1cnJba2V5XSk7XG4gICAgICBpZiAoIWlzT2JqZWN0KSB7XG4gICAgICAgIGN1cnJba2V5XSA9IHt9O1xuICAgICAgfVxuXG4gICAgICBjdXJyID0gY3VycltrZXldO1xuICAgIH1cblxuICAgIGNvbnN0IGxhc3RLZXkgPSBwYXJ0cy5zaGlmdCgpITtcbiAgICBjdXJyW2xhc3RLZXldID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0TG9naWNhbElkKHRmRWxlbWVudDogVGVycmFmb3JtRWxlbWVudCB8IE5vZGUpOiBzdHJpbmcge1xuICAgIC8vIHdyYXAgdGhlIGFsbG9jYXRpb24gZm9yIGZ1dHVyZSByZW5hbWluZyBzdXBwb3J0XG4gICAgcmV0dXJuIHRoaXMuYWxsb2NhdGVMb2dpY2FsSWQodGZFbGVtZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBuYW1pbmcgc2NoZW1lIHVzZWQgdG8gYWxsb2NhdGUgbG9naWNhbCBJRHMuIEJ5IGRlZmF1bHQsIHVzZXNcbiAgICogdGhlIGBIYXNoZWRBZGRyZXNzaW5nU2NoZW1lYCBidXQgdGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gdG8gY3VzdG9taXplXG4gICAqIHRoaXMgYmVoYXZpb3IuXG4gICAqXG4gICAqIEBwYXJhbSB0ZkVsZW1lbnQgVGhlIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBsb2dpY2FsIElEIGlzIGFsbG9jYXRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBhbGxvY2F0ZUxvZ2ljYWxJZCh0ZkVsZW1lbnQ6IFRlcnJhZm9ybUVsZW1lbnQgfCBOb2RlKTogc3RyaW5nIHtcbiAgICBjb25zdCBub2RlID0gVGVycmFmb3JtRWxlbWVudC5pc1RlcnJhZm9ybUVsZW1lbnQodGZFbGVtZW50KVxuICAgICAgPyB0ZkVsZW1lbnQubm9kZVxuICAgICAgOiB0ZkVsZW1lbnQ7XG4gICAgY29uc3Qgc3RhY2sgPSBUZXJyYWZvcm1FbGVtZW50LmlzVGVycmFmb3JtRWxlbWVudCh0ZkVsZW1lbnQpXG4gICAgICA/IHRmRWxlbWVudC5jZGt0ZlN0YWNrXG4gICAgICA6IHRoaXM7XG5cbiAgICBjb25zdCBzdGFja0luZGV4ID0gbm9kZS5zY29wZXMuaW5kZXhPZihzdGFjayk7XG5cbiAgICBjb25zdCBjb21wb25lbnRzID0gbm9kZS5zY29wZXMuc2xpY2Uoc3RhY2tJbmRleCArIDEpLm1hcCgoYykgPT4gYy5ub2RlLmlkKTtcbiAgICByZXR1cm4gY29tcG9uZW50cy5sZW5ndGggPiAwID8gbWFrZVVuaXF1ZUlkKGNvbXBvbmVudHMpIDogXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBhbGxQcm92aWRlcnMoKTogVGVycmFmb3JtUHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZEFsbChUZXJyYWZvcm1Qcm92aWRlci5pc1RlcnJhZm9ybVByb3ZpZGVyKTtcbiAgfVxuXG4gIHB1YmxpYyBlbnN1cmVCYWNrZW5kRXhpc3RzKCk6IFRlcnJhZm9ybUJhY2tlbmQge1xuICAgIGNvbnN0IGJhY2tlbmRzID0gdGhpcy5maW5kQWxsKFRlcnJhZm9ybUJhY2tlbmQuaXNCYWNrZW5kKTtcbiAgICByZXR1cm4gYmFja2VuZHNbMF0gfHwgbmV3IExvY2FsQmFja2VuZCh0aGlzLCB7fSk7XG4gIH1cblxuICBwdWJsaWMgdG9IY2xUZXJyYWZvcm0oKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgY29uc3QgbWV0YWRhdGE6IFRlcnJhZm9ybVN0YWNrTWV0YWRhdGEgPSB7XG4gICAgICB2ZXJzaW9uOiB0aGlzLmNka3RmVmVyc2lvbixcbiAgICAgIHN0YWNrTmFtZTogdGhpcy5ub2RlLmlkLFxuICAgICAgYmFja2VuZDogXCJsb2NhbFwiLCAvLyBvdmVyd3JpdHRlbiBieSBiYWNrZW5kIGltcGxlbWVudGF0aW9ucyBpZiB1c2VkXG4gICAgICBjbG91ZDogdW5kZWZpbmVkLCAvLyBvdmVyd3JpdHRlbiBieSBjbG91ZCBhbmQgcmVtb3RlIGJhY2tlbmQgaW1wbGVtZW50YXRpb25zXG4gICAgICAuLi4oT2JqZWN0LmtleXModGhpcy5yYXdPdmVycmlkZXMpLmxlbmd0aCA+IDBcbiAgICAgICAgPyB7IG92ZXJyaWRlczogeyBzdGFjazogT2JqZWN0LmtleXModGhpcy5yYXdPdmVycmlkZXMpIH0gfVxuICAgICAgICA6IHt9KSxcbiAgICB9O1xuXG4gICAgY29uc3QgZWxlbWVudHMgPSB0ZXJyYWZvcm1FbGVtZW50cyh0aGlzKTtcblxuICAgIGNvbnN0IG1ldGFkYXRhcyA9IGVsZW1lbnRzLm1hcCgoZSkgPT4gcmVzb2x2ZSh0aGlzLCBlLnRvTWV0YWRhdGEoKSkpO1xuICAgIGZvciAoY29uc3QgbWV0YSBvZiBtZXRhZGF0YXMpIHtcbiAgICAgIGRlZXBNZXJnZShtZXRhZGF0YSwgbWV0YSk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0cHV0czogT3V0cHV0SWRNYXAgPSBlbGVtZW50cy5yZWR1Y2UoKGNhcnJ5LCBpdGVtKSA9PiB7XG4gICAgICBpZiAoIVRlcnJhZm9ybU91dHB1dC5pc1RlcnJhZm9ybU91dHB1dChpdGVtKSkge1xuICAgICAgICByZXR1cm4gY2Fycnk7XG4gICAgICB9XG5cbiAgICAgIGRlZXBNZXJnZShcbiAgICAgICAgY2FycnksXG4gICAgICAgIGl0ZW0ubm9kZS5wYXRoLnNwbGl0KFwiL1wiKS5yZWR1Y2VSaWdodCgoaW5uZXJDYXJyeSwgcGFydCkgPT4ge1xuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhpbm5lckNhcnJ5KS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB7IFtwYXJ0XTogaXRlbS5mcmllbmRseVVuaXF1ZUlkIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7IFtwYXJ0XTogaW5uZXJDYXJyeSB9O1xuICAgICAgICB9LCB7fSksXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gY2Fycnk7XG4gICAgfSwge30pO1xuXG4gICAgY29uc3QgdGYgPSB7fTtcbiAgICBjb25zdCBmcmFnbWVudHMgPSBlbGVtZW50cy5tYXAoKGUpID0+IHJlc29sdmUodGhpcywgZS50b0hjbFRlcnJhZm9ybSgpKSk7XG4gICAgY29uc3QgbG9jYWxzOiB7IGxvY2Fscz86IGFueSB9ID0ge307XG5cbiAgICBjb25zdCB0Zk1ldGEgPSB7XG4gICAgICBcIi8vXCI6IHtcbiAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgIG91dHB1dHMsXG4gICAgICB9LFxuICAgIH07XG4gICAgY29uc3QgaGNsRnJhZ21lbnRzID0gZnJhZ21lbnRzXG4gICAgICAubWFwKChmcmFnKSA9PiB7XG4gICAgICAgIGxldCByZXMgPSBcIlwiO1xuICAgICAgICBpZiAoZnJhZy5yZXNvdXJjZSkge1xuICAgICAgICAgIGNvbnN0IHsgaGNsLCBtZXRhZGF0YSB9ID0gcmVuZGVyUmVzb3VyY2UoZnJhZy5yZXNvdXJjZSk7XG4gICAgICAgICAgZGVlcE1lcmdlKHRmTWV0YSwgbWV0YWRhdGEpO1xuICAgICAgICAgIHJlcyA9IFtyZXMsIGhjbF0uam9pbihcIlxcblwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmcmFnLmRhdGEpIHtcbiAgICAgICAgICBjb25zdCB7IGhjbCwgbWV0YWRhdGEgfSA9IHJlbmRlckRhdGFzb3VyY2UoZnJhZy5kYXRhKTtcbiAgICAgICAgICBkZWVwTWVyZ2UodGZNZXRhLCBtZXRhZGF0YSk7XG4gICAgICAgICAgcmVzID0gW3JlcywgaGNsXS5qb2luKFwiXFxuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZyYWcucHJvdmlkZXIpIHtcbiAgICAgICAgICBkZWVwTWVyZ2UodGYsIGZyYWcpO1xuICAgICAgICAgIHJlcyA9IFtyZXMsIHJlbmRlclByb3ZpZGVyKGZyYWcucHJvdmlkZXIpXS5qb2luKFwiXFxuXFxuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZyYWcudGVycmFmb3JtKSB7XG4gICAgICAgICAgZGVlcE1lcmdlKHRmLCBmcmFnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmcmFnLm1vZHVsZSkge1xuICAgICAgICAgIGNvbnN0IHsgaGNsLCBtZXRhZGF0YSB9ID0gcmVuZGVyTW9kdWxlKGZyYWcubW9kdWxlKTtcbiAgICAgICAgICBkZWVwTWVyZ2UodGZNZXRhLCBtZXRhZGF0YSk7XG4gICAgICAgICAgcmVzID0gW3JlcywgaGNsXS5qb2luKFwiXFxuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZyYWcub3V0cHV0KSB7XG4gICAgICAgICAgcmVzID0gW3JlcywgcmVuZGVyT3V0cHV0KGZyYWcub3V0cHV0KV0uam9pbihcIlxcblxcblwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmcmFnLm1vdmVkKSB7XG4gICAgICAgICAgcmVzID0gW3JlcywgcmVuZGVyTW92ZWQoZnJhZy5tb3ZlZCldLmpvaW4oXCJcXG5cXG5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZnJhZy5pbXBvcnQpIHtcbiAgICAgICAgICByZXMgPSBbcmVzLCByZW5kZXJJbXBvcnQoZnJhZy5pbXBvcnQpXS5qb2luKFwiXFxuXFxuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZyYWcubG9jYWxzKSB7XG4gICAgICAgICAgZGVlcE1lcmdlKGxvY2FscywgZnJhZyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZnJhZy52YXJpYWJsZSkge1xuICAgICAgICAgIHJlcyA9IFtyZXMsIHJlbmRlclZhcmlhYmxlKGZyYWcudmFyaWFibGUpXS5qb2luKFwiXFxuXFxuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChmcmFnKSA9PiBmcmFnICE9PSB1bmRlZmluZWQpO1xuXG4gICAgZGVlcE1lcmdlKHRmLCB0aGlzLnJhd092ZXJyaWRlcyk7XG4gICAgY29uc3QgdGVycmFmb3JtQmxvY2sgPSAodGYgYXMgYW55KT8udGVycmFmb3JtO1xuXG4gICAgbGV0IHRlcnJhZm9ybUJsb2NrSGNsID0gXCJcIjtcbiAgICBpZiAodGVycmFmb3JtQmxvY2spIHtcbiAgICAgIHRlcnJhZm9ybUJsb2NrSGNsID0gcmVuZGVyVGVycmFmb3JtKHRlcnJhZm9ybUJsb2NrKTtcbiAgICAgIGRlZXBNZXJnZSh0Zk1ldGEsIHsgdGVycmFmb3JtOiBjbGVhbkZvck1ldGFkYXRhKHRlcnJhZm9ybUJsb2NrKSB9KTtcbiAgICB9XG5cbiAgICBsZXQgbG9jYWxzSGNsID0gXCJcIjtcbiAgICBpZiAobG9jYWxzKSB7XG4gICAgICBsb2NhbHNIY2wgPSByZW5kZXJMb2NhbHMobG9jYWxzLmxvY2Fscyk7XG5cbiAgICAgIGlmIChsb2NhbHNIY2wpIHtcbiAgICAgICAgLy8gSGFja3kgd2F5IHRvIGFkZCBhIG5ld2xpbmUgYmV0d2VlbiB0aGUgdGVycmFmb3JtIGJsb2NrIGFuZCB0aGUgbG9jYWxzIGJsb2NrXG4gICAgICAgIGxvY2Fsc0hjbCA9IFwiXFxuXFxuXCIgKyBsb2NhbHNIY2w7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGhjbDogcmVzb2x2ZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgW3RlcnJhZm9ybUJsb2NrSGNsLCBsb2NhbHNIY2wsIC4uLmhjbEZyYWdtZW50c10uam9pbihcIlwiKSxcbiAgICAgICksXG4gICAgICBtZXRhZGF0YTogcmVzb2x2ZSh0aGlzLCB0Zk1ldGEpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9UZXJyYWZvcm0oKTogYW55IHtcbiAgICBjb25zdCB0ZiA9IHt9O1xuXG4gICAgY29uc3QgbWV0YWRhdGE6IFRlcnJhZm9ybVN0YWNrTWV0YWRhdGEgPSB7XG4gICAgICB2ZXJzaW9uOiB0aGlzLmNka3RmVmVyc2lvbixcbiAgICAgIHN0YWNrTmFtZTogdGhpcy5ub2RlLmlkLFxuICAgICAgYmFja2VuZDogXCJsb2NhbFwiLCAvLyBvdmVyd3JpdHRlbiBieSBiYWNrZW5kIGltcGxlbWVudGF0aW9ucyBpZiB1c2VkXG4gICAgICBjbG91ZDogdW5kZWZpbmVkLCAvLyBvdmVyd3JpdHRlbiBieSBjbG91ZCBhbmQgcmVtb3RlIGJhY2tlbmQgaW1wbGVtZW50YXRpb25zXG4gICAgICAuLi4oT2JqZWN0LmtleXModGhpcy5yYXdPdmVycmlkZXMpLmxlbmd0aCA+IDBcbiAgICAgICAgPyB7IG92ZXJyaWRlczogeyBzdGFjazogT2JqZWN0LmtleXModGhpcy5yYXdPdmVycmlkZXMpIH0gfVxuICAgICAgICA6IHt9KSxcbiAgICB9O1xuXG4gICAgY29uc3QgZWxlbWVudHMgPSB0ZXJyYWZvcm1FbGVtZW50cyh0aGlzKTtcblxuICAgIGNvbnN0IG1ldGFkYXRhcyA9IGVsZW1lbnRzLm1hcCgoZSkgPT4gcmVzb2x2ZSh0aGlzLCBlLnRvTWV0YWRhdGEoKSkpO1xuICAgIGZvciAoY29uc3QgbWV0YSBvZiBtZXRhZGF0YXMpIHtcbiAgICAgIGRlZXBNZXJnZShtZXRhZGF0YSwgbWV0YSk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0cHV0czogT3V0cHV0SWRNYXAgPSBlbGVtZW50cy5yZWR1Y2UoKGNhcnJ5LCBpdGVtKSA9PiB7XG4gICAgICBpZiAoIVRlcnJhZm9ybU91dHB1dC5pc1RlcnJhZm9ybU91dHB1dChpdGVtKSkge1xuICAgICAgICByZXR1cm4gY2Fycnk7XG4gICAgICB9XG5cbiAgICAgIGRlZXBNZXJnZShcbiAgICAgICAgY2FycnksXG4gICAgICAgIGl0ZW0ubm9kZS5wYXRoLnNwbGl0KFwiL1wiKS5yZWR1Y2VSaWdodCgoaW5uZXJDYXJyeSwgcGFydCkgPT4ge1xuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhpbm5lckNhcnJ5KS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB7IFtwYXJ0XTogaXRlbS5mcmllbmRseVVuaXF1ZUlkIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7IFtwYXJ0XTogaW5uZXJDYXJyeSB9O1xuICAgICAgICB9LCB7fSksXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gY2Fycnk7XG4gICAgfSwge30pO1xuXG4gICAgKHRmIGFzIGFueSlbXCIvL1wiXSA9IHsgbWV0YWRhdGEsIG91dHB1dHMgfTtcblxuICAgIGNvbnN0IGZyYWdtZW50cyA9IGVsZW1lbnRzLm1hcCgoZSkgPT4gcmVzb2x2ZSh0aGlzLCBlLnRvVGVycmFmb3JtKCkpKTtcbiAgICBmb3IgKGNvbnN0IGZyYWdtZW50IG9mIGZyYWdtZW50cykge1xuICAgICAgZGVlcE1lcmdlKHRmLCBmcmFnbWVudCk7XG4gICAgfVxuXG4gICAgZGVlcE1lcmdlKHRmLCB0aGlzLnJhd092ZXJyaWRlcyk7XG5cbiAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLCB0Zik7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPdXRnb2luZ0Nyb3NzU3RhY2tSZWZlcmVuY2UoaWRlbnRpZmllcjogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuY3Jvc3NTdGFja091dHB1dHNbaWRlbnRpZmllcl0pIHtcbiAgICAgIHJldHVybiB0aGlzLmNyb3NzU3RhY2tPdXRwdXRzW2lkZW50aWZpZXJdO1xuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dCA9IG5ldyBUZXJyYWZvcm1PdXRwdXQoXG4gICAgICB0aGlzLFxuICAgICAgYGNyb3NzLXN0YWNrLW91dHB1dC0ke2lkZW50aWZpZXJ9YCxcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IHJlZihpZGVudGlmaWVyLCB0aGlzKSxcbiAgICAgICAgc2Vuc2l0aXZlOiB0cnVlLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy5jcm9zc1N0YWNrT3V0cHV0c1tpZGVudGlmaWVyXSA9IG91dHB1dDtcbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVySW5jb21pbmdDcm9zc1N0YWNrUmVmZXJlbmNlKGZyb21TdGFjazogVGVycmFmb3JtU3RhY2spIHtcbiAgICBpZiAodGhpcy5jcm9zc1N0YWNrRGF0YVNvdXJjZXNbU3RyaW5nKGZyb21TdGFjayldKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcm9zc1N0YWNrRGF0YVNvdXJjZXNbU3RyaW5nKGZyb21TdGFjayldO1xuICAgIH1cbiAgICBjb25zdCBvcmlnaW5CYWNrZW5kID0gZnJvbVN0YWNrLmVuc3VyZUJhY2tlbmRFeGlzdHMoKTtcbiAgICBjb25zdCBvcmlnaW5QYXRoID0gZnJvbVN0YWNrLm5vZGUucGF0aDtcblxuICAgIGNvbnN0IHJlbW90ZVN0YXRlID0gb3JpZ2luQmFja2VuZC5nZXRSZW1vdGVTdGF0ZURhdGFTb3VyY2UoXG4gICAgICB0aGlzLFxuICAgICAgYGNyb3NzLXN0YWNrLXJlZmVyZW5jZS1pbnB1dC0ke29yaWdpblBhdGh9YCxcbiAgICAgIG9yaWdpblBhdGgsXG4gICAgKTtcblxuICAgIHRoaXMuY3Jvc3NTdGFja0RhdGFTb3VyY2VzW29yaWdpblBhdGhdID0gcmVtb3RlU3RhdGU7XG4gICAgcmV0dXJuIHJlbW90ZVN0YXRlO1xuICB9XG5cbiAgLy8gQ2hlY2sgaGVyZSBmb3IgbG9vcHMgaW4gdGhlIGRlcGVuZGVuY3kgZ3JhcGhcbiAgcHVibGljIGRlcGVuZHNPbihzdGFjazogVGVycmFmb3JtU3RhY2spOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5kZXBlbmRlbmNpZXMuaW5jbHVkZXMoc3RhY2spIHx8XG4gICAgICB0aGlzLmRlcGVuZGVuY2llcy5zb21lKChkKSA9PiBkLmRlcGVuZHNPbihzdGFjaykpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGREZXBlbmRlbmN5KGRlcGVuZGVuY3k6IFRlcnJhZm9ybVN0YWNrKSB7XG4gICAgaWYgKGRlcGVuZGVuY3kuZGVwZW5kc09uKHRoaXMpKSB7XG4gICAgICB0aHJvdyBzdGFja0hhc0NpcmN1bGFyRGVwZW5kZW5jeSh0aGlzLCBkZXBlbmRlbmN5KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZXBlbmRlbmNpZXMuaW5jbHVkZXMoZGVwZW5kZW5jeSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRlcGVuZGVuY2llcy5wdXNoKGRlcGVuZGVuY3kpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biBhbGwgdmFsaWRhdGlvbnMgb24gdGhlIHN0YWNrLlxuICAgKi9cbiAgcHVibGljIHJ1bkFsbFZhbGlkYXRpb25zKCkge1xuICAgIGNvbnN0IGVycm9yczogeyBtZXNzYWdlOiBzdHJpbmc7IHNvdXJjZTogSUNvbnN0cnVjdCB9W10gPSB0aGlzLm5vZGVcbiAgICAgIC5maW5kQWxsKClcbiAgICAgIC5tYXAoKG5vZGUpID0+XG4gICAgICAgIG5vZGUubm9kZS52YWxpZGF0ZSgpLm1hcCgoZXJyb3IpID0+ICh7IG1lc3NhZ2U6IGVycm9yLCBzb3VyY2U6IG5vZGUgfSkpLFxuICAgICAgKVxuICAgICAgLnJlZHVjZSgocHJldiwgY3VycikgPT4gWy4uLnByZXYsIC4uLmN1cnJdLCBbXSk7XG4gICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBlcnJvckxpc3QgPSBlcnJvcnNcbiAgICAgICAgLm1hcCgoZSkgPT4gYFske2Uuc291cmNlLm5vZGUucGF0aH1dICR7ZS5tZXNzYWdlfWApXG4gICAgICAgIC5qb2luKFwiXFxuICBcIik7XG4gICAgICB0aHJvdyBzdGFja1ZhbGlkYXRpb25GYWlsdXJlKGVycm9yTGlzdCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhc1Jlc291cmNlTW92ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGVycmFmb3JtRWxlbWVudHModGhpcykuc29tZSgoZSkgPT4ge1xuICAgICAgaWYgKFRlcnJhZm9ybVJlc291cmNlLmlzVGVycmFmb3JtUmVzb3VyY2UoZSkgJiYgZS5oYXNSZXNvdXJjZU1vdmUoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZnVuY3Rpb24gdGVycmFmb3JtRWxlbWVudHMoXG4gIG5vZGU6IElDb25zdHJ1Y3QsXG4gIGludG86IFRlcnJhZm9ybUVsZW1lbnRbXSA9IFtdLFxuKTogVGVycmFmb3JtRWxlbWVudFtdIHtcbiAgaWYgKFRlcnJhZm9ybUVsZW1lbnQuaXNUZXJyYWZvcm1FbGVtZW50KG5vZGUpKSB7XG4gICAgaW50by5wdXNoKG5vZGUpO1xuICB9XG5cbiAgZm9yIChjb25zdCBjaGlsZCBvZiBub2RlLm5vZGUuY2hpbGRyZW4pIHtcbiAgICAvLyBEb24ndCByZWN1cnNlIGludG8gYSBzdWJzdGFja1xuICAgIGlmIChUZXJyYWZvcm1TdGFjay5pc1N0YWNrKGNoaWxkKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdGVycmFmb3JtRWxlbWVudHMoY2hpbGQsIGludG8pO1xuICB9XG5cbiAgcmV0dXJuIGludG87XG59XG4iXX0=