terraconstructs 0.1.9 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/.jsii +1693 -955
  2. package/lib/asset-staging.js +1 -1
  3. package/lib/aws/arn.js +4 -3
  4. package/lib/aws/aws-asset-manager.js +1 -1
  5. package/lib/aws/aws-construct.js +1 -1
  6. package/lib/aws/aws-stack.d.ts +28 -4
  7. package/lib/aws/aws-stack.js +80 -22
  8. package/lib/aws/aws-tags.js +2 -2
  9. package/lib/aws/cloudwatch/actions/appscaling.js +1 -1
  10. package/lib/aws/cloudwatch/actions/ec2.js +1 -1
  11. package/lib/aws/cloudwatch/actions/lambda.js +1 -1
  12. package/lib/aws/cloudwatch/actions/sns.js +1 -1
  13. package/lib/aws/cloudwatch/actions/ssm.js +2 -2
  14. package/lib/aws/cloudwatch/alarm-base.js +1 -1
  15. package/lib/aws/cloudwatch/alarm-rule.js +1 -1
  16. package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
  17. package/lib/aws/cloudwatch/alarm.js +1 -1
  18. package/lib/aws/cloudwatch/composite-alarm.js +1 -1
  19. package/lib/aws/cloudwatch/dashboard.js +1 -1
  20. package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
  21. package/lib/aws/cloudwatch/graph.js +8 -8
  22. package/lib/aws/cloudwatch/layout.js +3 -3
  23. package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
  24. package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
  25. package/lib/aws/cloudwatch/log-group.js +1 -1
  26. package/lib/aws/cloudwatch/log-query.js +1 -1
  27. package/lib/aws/cloudwatch/log-stream.js +1 -1
  28. package/lib/aws/cloudwatch/metric-filter.js +1 -1
  29. package/lib/aws/cloudwatch/metric.js +2 -2
  30. package/lib/aws/cloudwatch/pattern.js +3 -3
  31. package/lib/aws/cloudwatch/policy.js +1 -1
  32. package/lib/aws/cloudwatch/query-definition.js +2 -2
  33. package/lib/aws/cloudwatch/stats.js +1 -1
  34. package/lib/aws/cloudwatch/subscription-filter.js +1 -1
  35. package/lib/aws/cloudwatch/text.js +1 -1
  36. package/lib/aws/cloudwatch/variable.js +3 -3
  37. package/lib/aws/cloudwatch/widget.js +1 -1
  38. package/lib/aws/compute/access-log.js +4 -4
  39. package/lib/aws/compute/activity.js +1 -1
  40. package/lib/aws/compute/alb/application-listener-action.js +1 -1
  41. package/lib/aws/compute/alb/application-listener-certificate.js +1 -1
  42. package/lib/aws/compute/alb/application-listener-rule.js +1 -1
  43. package/lib/aws/compute/alb/application-listener.js +1 -1
  44. package/lib/aws/compute/alb/application-load-balancer.js +1 -1
  45. package/lib/aws/compute/alb/application-target-group.js +1 -1
  46. package/lib/aws/compute/alb/conditions.js +1 -1
  47. package/lib/aws/compute/alb/trust-store-revocation.js +1 -1
  48. package/lib/aws/compute/alb/trust-store.js +1 -1
  49. package/lib/aws/compute/api-definition.js +3 -3
  50. package/lib/aws/compute/api-key.js +2 -2
  51. package/lib/aws/compute/architecture.js +1 -1
  52. package/lib/aws/compute/aspects/require-imdsv2-aspect.js +2 -2
  53. package/lib/aws/compute/authorizer.js +1 -1
  54. package/lib/aws/compute/authorizers/identity-source.js +1 -1
  55. package/lib/aws/compute/authorizers/lambda.js +2 -2
  56. package/lib/aws/compute/base-path-mapping.js +1 -1
  57. package/lib/aws/compute/base-scalable-attribute.js +1 -1
  58. package/lib/aws/compute/bastion-host.js +1 -1
  59. package/lib/aws/compute/chain.js +1 -1
  60. package/lib/aws/compute/client-vpn-authorization-rule.js +1 -1
  61. package/lib/aws/compute/client-vpn-endpoint.js +2 -2
  62. package/lib/aws/compute/client-vpn-route.js +2 -2
  63. package/lib/aws/compute/code.js +8 -8
  64. package/lib/aws/compute/condition.js +1 -1
  65. package/lib/aws/compute/connections.js +1 -1
  66. package/lib/aws/compute/cors.js +1 -1
  67. package/lib/aws/compute/deployment.js +1 -1
  68. package/lib/aws/compute/domain-name.js +1 -1
  69. package/lib/aws/compute/event-invoke-config.js +1 -1
  70. package/lib/aws/compute/event-source-filter.js +2 -2
  71. package/lib/aws/compute/event-source-mapping.d.ts +10 -0
  72. package/lib/aws/compute/event-source-mapping.js +20 -23
  73. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
  74. package/lib/aws/compute/event-sources/s3.js +1 -1
  75. package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
  76. package/lib/aws/compute/event-sources/sqs.d.ts +10 -0
  77. package/lib/aws/compute/event-sources/sqs.js +3 -3
  78. package/lib/aws/compute/fields.js +4 -4
  79. package/lib/aws/compute/function-alias.js +1 -1
  80. package/lib/aws/compute/function-base.js +2 -2
  81. package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
  82. package/lib/aws/compute/function-destinations/function.js +1 -1
  83. package/lib/aws/compute/function-destinations/sqs.js +1 -1
  84. package/lib/aws/compute/function-nodejs/function.js +1 -1
  85. package/lib/aws/compute/function-url.js +1 -1
  86. package/lib/aws/compute/function.js +3 -3
  87. package/lib/aws/compute/gateway-response.js +2 -2
  88. package/lib/aws/compute/handler.js +1 -1
  89. package/lib/aws/compute/instance-types.js +1 -1
  90. package/lib/aws/compute/instance.js +1 -1
  91. package/lib/aws/compute/integration.js +1 -1
  92. package/lib/aws/compute/integrations/aws.js +1 -1
  93. package/lib/aws/compute/integrations/http.js +1 -1
  94. package/lib/aws/compute/integrations/lambda.js +1 -1
  95. package/lib/aws/compute/integrations/mock.js +1 -1
  96. package/lib/aws/compute/integrations/stepfunctions.js +1 -1
  97. package/lib/aws/compute/ip-addresses.js +2 -2
  98. package/lib/aws/compute/ipam.js +1 -1
  99. package/lib/aws/compute/key-pair.js +1 -1
  100. package/lib/aws/compute/lambda-api.js +1 -1
  101. package/lib/aws/compute/launch-template.js +2 -2
  102. package/lib/aws/compute/lb-shared/base-listener.js +1 -1
  103. package/lib/aws/compute/lb-shared/base-load-balancer.js +5 -7
  104. package/lib/aws/compute/lb-shared/base-target-group.js +1 -1
  105. package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
  106. package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
  107. package/lib/aws/compute/lb-targets/alb-target.js +3 -3
  108. package/lib/aws/compute/lb-targets/instance-target.js +2 -2
  109. package/lib/aws/compute/lb-targets/ip-target.js +1 -1
  110. package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
  111. package/lib/aws/compute/load-balancer.js +3 -3
  112. package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
  113. package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
  114. package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
  115. package/lib/aws/compute/machine-image/common.js +1 -1
  116. package/lib/aws/compute/machine-image/machine-image.js +8 -8
  117. package/lib/aws/compute/method.js +1 -1
  118. package/lib/aws/compute/model.js +3 -3
  119. package/lib/aws/compute/nat.js +5 -5
  120. package/lib/aws/compute/network-acl-types.js +2 -2
  121. package/lib/aws/compute/network-acl.js +3 -3
  122. package/lib/aws/compute/nlb/network-listener-action.js +1 -1
  123. package/lib/aws/compute/nlb/network-listener.js +1 -1
  124. package/lib/aws/compute/nlb/network-load-balancer.js +1 -1
  125. package/lib/aws/compute/nlb/network-target-group.js +1 -1
  126. package/lib/aws/compute/peer.js +1 -1
  127. package/lib/aws/compute/placement-group.js +1 -1
  128. package/lib/aws/compute/port.js +1 -1
  129. package/lib/aws/compute/prefix-list.js +1 -1
  130. package/lib/aws/compute/requestvalidator.js +1 -1
  131. package/lib/aws/compute/resource.js +3 -3
  132. package/lib/aws/compute/restapi.js +3 -3
  133. package/lib/aws/compute/route.js +8 -8
  134. package/lib/aws/compute/runtime.d.ts +0 -1
  135. package/lib/aws/compute/runtime.js +5 -36
  136. package/lib/aws/compute/scalable-target.js +1 -1
  137. package/lib/aws/compute/schedule.js +1 -1
  138. package/lib/aws/compute/security-group.js +1 -1
  139. package/lib/aws/compute/stage.js +2 -2
  140. package/lib/aws/compute/state-graph.js +1 -1
  141. package/lib/aws/compute/state-machine-fragment.js +1 -1
  142. package/lib/aws/compute/state-machine.js +4 -4
  143. package/lib/aws/compute/states/choice.js +1 -1
  144. package/lib/aws/compute/states/custom-state.js +1 -1
  145. package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
  146. package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
  147. package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
  148. package/lib/aws/compute/states/distributed-map.js +1 -1
  149. package/lib/aws/compute/states/fail.js +1 -1
  150. package/lib/aws/compute/states/map-base.js +1 -1
  151. package/lib/aws/compute/states/map.js +1 -1
  152. package/lib/aws/compute/states/parallel.js +1 -1
  153. package/lib/aws/compute/states/pass.js +2 -2
  154. package/lib/aws/compute/states/state.js +1 -1
  155. package/lib/aws/compute/states/succeed.js +1 -1
  156. package/lib/aws/compute/states/task-base.js +2 -2
  157. package/lib/aws/compute/states/task.js +1 -1
  158. package/lib/aws/compute/states/wait.js +2 -2
  159. package/lib/aws/compute/step-scaling-action.js +1 -1
  160. package/lib/aws/compute/step-scaling-policy.js +1 -1
  161. package/lib/aws/compute/stepfunctions-api.js +1 -1
  162. package/lib/aws/compute/subnet-v2.js +2 -2
  163. package/lib/aws/compute/subnet.js +1 -1
  164. package/lib/aws/compute/target-tracking-scaling-policy.js +1 -1
  165. package/lib/aws/compute/task-credentials.js +1 -1
  166. package/lib/aws/compute/task-input.js +1 -1
  167. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
  168. package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
  169. package/lib/aws/compute/tasks/http/invoke.js +1 -1
  170. package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
  171. package/lib/aws/compute/tasks/sqs/send-message.js +10 -13
  172. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
  173. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
  174. package/lib/aws/compute/types.js +1 -1
  175. package/lib/aws/compute/usage-plan.js +1 -1
  176. package/lib/aws/compute/user-data.js +3 -3
  177. package/lib/aws/compute/volume.js +2 -2
  178. package/lib/aws/compute/vpc-endpoint-service.js +1 -1
  179. package/lib/aws/compute/vpc-endpoint.js +6 -6
  180. package/lib/aws/compute/vpc-flow-logs.js +4 -4
  181. package/lib/aws/compute/vpc-link.js +1 -1
  182. package/lib/aws/compute/vpc-v2-base.js +1 -1
  183. package/lib/aws/compute/vpc-v2.js +2 -2
  184. package/lib/aws/compute/vpc.js +4 -4
  185. package/lib/aws/compute/vpn.js +3 -3
  186. package/lib/aws/cx-api.d.ts +1 -0
  187. package/lib/aws/cx-api.js +6 -0
  188. package/lib/aws/edge/certificate.js +1 -1
  189. package/lib/aws/edge/distribution.js +3 -3
  190. package/lib/aws/edge/dns-alias-record-targets.js +6 -6
  191. package/lib/aws/edge/dns-record.js +13 -13
  192. package/lib/aws/edge/dns-zone.js +1 -1
  193. package/lib/aws/edge/function.js +2 -2
  194. package/lib/aws/edge/key-value-store.js +4 -4
  195. package/lib/aws/edge/origin.js +3 -3
  196. package/lib/aws/edge/response-headers-policy.js +1 -1
  197. package/lib/aws/encryption/alias.js +1 -1
  198. package/lib/aws/encryption/key.js +1 -1
  199. package/lib/aws/encryption/via-service-principal.js +1 -1
  200. package/lib/aws/environment-aware.d.ts +41 -0
  201. package/lib/aws/environment-aware.js +3 -0
  202. package/lib/aws/iam/grant.d.ts +34 -0
  203. package/lib/aws/iam/grant.js +27 -6
  204. package/lib/aws/iam/group.js +1 -1
  205. package/lib/aws/iam/instance-profile.js +1 -1
  206. package/lib/aws/iam/managed-policy.js +1 -1
  207. package/lib/aws/iam/oidc-provider.js +1 -1
  208. package/lib/aws/iam/policy-document.js +1 -1
  209. package/lib/aws/iam/policy-statement.js +1 -1
  210. package/lib/aws/iam/policy.js +1 -1
  211. package/lib/aws/iam/principals.js +20 -20
  212. package/lib/aws/iam/role.js +1 -1
  213. package/lib/aws/iam/saml-provider.js +2 -2
  214. package/lib/aws/iam/unknown-principal.js +1 -1
  215. package/lib/aws/iam/user.js +1 -1
  216. package/lib/aws/index.d.ts +1 -0
  217. package/lib/aws/index.js +2 -1
  218. package/lib/aws/network/simple-ipv4-vpc.js +1 -1
  219. package/lib/aws/network/subnet-group.js +3 -3
  220. package/lib/aws/network/subnet.js +4 -4
  221. package/lib/aws/notify/archive.js +1 -1
  222. package/lib/aws/notify/connection.js +3 -3
  223. package/lib/aws/notify/event-bus.d.ts +1 -1
  224. package/lib/aws/notify/event-bus.js +4 -4
  225. package/lib/aws/notify/event-pattern.js +1 -1
  226. package/lib/aws/notify/index.d.ts +3 -1
  227. package/lib/aws/notify/index.js +5 -5
  228. package/lib/aws/notify/input.js +2 -2
  229. package/lib/aws/notify/kinesis-stream.js +1 -1
  230. package/lib/aws/notify/notification-rule.js +1 -1
  231. package/lib/aws/notify/policy.js +1 -1
  232. package/lib/aws/notify/queue-base.d.ts +241 -0
  233. package/lib/aws/notify/queue-base.js +161 -0
  234. package/lib/aws/notify/queue-policy.js +1 -1
  235. package/lib/aws/notify/queue.d.ts +157 -190
  236. package/lib/aws/notify/queue.js +239 -186
  237. package/lib/aws/notify/resource-policy.js +1 -1
  238. package/lib/aws/notify/rule.js +1 -1
  239. package/lib/aws/notify/schedule.js +1 -1
  240. package/lib/aws/notify/sqs-augmentations.generated.d.ts +3 -3
  241. package/lib/aws/notify/sqs-augmentations.generated.js +23 -26
  242. package/lib/aws/notify/sqs-grants.generated.d.ts +72 -0
  243. package/lib/aws/notify/sqs-grants.generated.js +139 -0
  244. package/lib/aws/notify/subscription-filter.js +1 -1
  245. package/lib/aws/notify/subscription.js +4 -4
  246. package/lib/aws/notify/subscriptions/email.js +1 -1
  247. package/lib/aws/notify/subscriptions/lambda.js +1 -1
  248. package/lib/aws/notify/subscriptions/sms.js +1 -1
  249. package/lib/aws/notify/subscriptions/sqs.js +30 -27
  250. package/lib/aws/notify/subscriptions/subscription.d.ts +1 -1
  251. package/lib/aws/notify/subscriptions/subscription.js +1 -1
  252. package/lib/aws/notify/subscriptions/url.js +1 -1
  253. package/lib/aws/notify/targets/event-bus.d.ts +1 -1
  254. package/lib/aws/notify/targets/event-bus.js +2 -2
  255. package/lib/aws/notify/targets/function.js +1 -1
  256. package/lib/aws/notify/targets/log-group.js +2 -2
  257. package/lib/aws/notify/targets/sqs.js +12 -14
  258. package/lib/aws/notify/targets/state-machine.js +1 -1
  259. package/lib/aws/notify/topic-base.js +1 -1
  260. package/lib/aws/notify/topic.js +1 -1
  261. package/lib/aws/region-lookup.d.ts +8 -0
  262. package/lib/aws/region-lookup.js +104 -0
  263. package/lib/aws/storage/assets/image-asset.js +3 -3
  264. package/lib/aws/storage/assets/s3.js +1 -1
  265. package/lib/aws/storage/auth-token.js +2 -2
  266. package/lib/aws/storage/billing.js +1 -1
  267. package/lib/aws/storage/bucket-notifications.js +1 -1
  268. package/lib/aws/storage/bucket-policy.js +1 -1
  269. package/lib/aws/storage/bucket-source.js +1 -1
  270. package/lib/aws/storage/bucket.js +27 -24
  271. package/lib/aws/storage/capacity.js +1 -1
  272. package/lib/aws/storage/ecr-repository.js +3 -3
  273. package/lib/aws/storage/encryption.js +1 -1
  274. package/lib/aws/storage/notification-targets/function.js +1 -1
  275. package/lib/aws/storage/notification-targets/queue.js +17 -21
  276. package/lib/aws/storage/origin-access-identity.js +1 -1
  277. package/lib/aws/storage/parameter.js +2 -2
  278. package/lib/aws/storage/table.js +3 -3
  279. package/lib/aws/storage/util.d.ts +0 -10
  280. package/lib/aws/storage/util.js +4 -91
  281. package/lib/bundling.js +3 -3
  282. package/lib/construct-base.js +2 -2
  283. package/lib/duration.js +1 -1
  284. package/lib/errors.js +1 -1
  285. package/lib/expiration.js +1 -1
  286. package/lib/fs/ignore.js +4 -4
  287. package/lib/fs/index.js +1 -1
  288. package/lib/helpers-internal/index.d.ts +1 -0
  289. package/lib/helpers-internal/index.js +16 -1
  290. package/lib/helpers-internal/validate-all-props.d.ts +29 -0
  291. package/lib/helpers-internal/validate-all-props.js +23 -0
  292. package/lib/size.js +1 -1
  293. package/lib/stack-base.d.ts +21 -5
  294. package/lib/stack-base.js +68 -5
  295. package/lib/terra-func.js +1 -1
  296. package/lib/time-zone.js +1 -1
  297. package/package.json +3 -1
  298. package/lib/aws/compute/lb-shared/access-logs-accounts.d.ts +0 -7
  299. package/lib/aws/compute/lb-shared/access-logs-accounts.js +0 -46
  300. package/lib/aws/notify/queue-config.generated.d.ts +0 -98
  301. package/lib/aws/notify/queue-config.generated.js +0 -3
  302. package/lib/aws/partition.d.ts +0 -21
  303. package/lib/aws/partition.js +0 -42
@@ -356,5 +356,5 @@ class NetworkLoadBalancer extends base_load_balancer_1.BaseLoadBalancer {
356
356
  }
357
357
  exports.NetworkLoadBalancer = NetworkLoadBalancer;
358
358
  _a = JSII_RTTI_SYMBOL_1;
359
- NetworkLoadBalancer[_a] = { fqn: "terraconstructs.aws.compute.NetworkLoadBalancer", version: "0.1.9" };
359
+ NetworkLoadBalancer[_a] = { fqn: "terraconstructs.aws.compute.NetworkLoadBalancer", version: "0.2.0" };
360
360
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay1sb2FkLWJhbGFuY2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9jb21wdXRlL25sYi9uZXR3b3JrLWxvYWQtYmFsYW5jZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnSUFBZ0k7QUFFaEksc0RBQWdEO0FBQ2hELGlDQUE2QjtBQUU3Qix5REFBK0U7QUFDL0UsdURBQTBFO0FBQzFFLCtDQUErQztBQUMvQyxnREFBMkQ7QUFDM0QsV0FBVztBQUNYLHNCQUFzQjtBQUN0QixrQ0FBa0M7QUFDbEMsMkNBQTJDO0FBQzNDLHdIQUF1RjtBQUN2Rix3RUFNeUM7QUFDekMsOENBQStEO0FBQy9ELDRDQUE4RDtBQUM5RCxzREFBa0U7QUFRbEU7Ozs7R0FJRztBQUNILElBQVksbUJBYVg7QUFiRCxXQUFZLG1CQUFtQjtJQUM3Qjs7T0FFRztJQUNILGdGQUF5RCxDQUFBO0lBQ3pEOztPQUVHO0lBQ0gsZ0dBQXlFLENBQUE7SUFDekU7O09BRUc7SUFDSCxzRUFBK0MsQ0FBQTtBQUNqRCxDQUFDLEVBYlcsbUJBQW1CLG1DQUFuQixtQkFBbUIsUUFhOUI7QUF5R0Q7O0dBRUc7QUFDSCxNQUFNLDBCQUEwQjtJQUk5QixZQUFZLEtBQWdCLEVBQUUsb0JBQTRCO1FBQ3hELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztJQUNuRCxDQUFDO0lBRU0sTUFBTSxDQUNYLFVBQWtCLEVBQ2xCLEtBQWdDO1FBRWhDLE9BQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQzNCLFNBQVMsRUFBRSxnQkFBZ0I7WUFDM0IsVUFBVTtZQUNWLGFBQWEsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDMUQsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxD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QUNwQixHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSx3QkFBd0IsQ0FBQyxLQUFnQztRQUM5RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUU7WUFDdkMsU0FBUyxFQUFFLFNBQVM7WUFDcEIsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksa0JBQWtCLENBQUMsS0FBZ0M7UUFDeEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxvQkFBb0IsQ0FBQyxLQUFnQztRQUMxRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0kseUJBQXlCLENBQUMsS0FBZ0M7UUFDL0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLHNCQUFzQixDQUFDLEtBQWdDO1FBQzVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLHlCQUF5QixDQUFDLEtBQWdDO1FBQy9ELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDOztBQWxWSCxrREFtVkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNzUuMS9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi9saWIvbmxiL25ldHdvcmstbG9hZC1iYWxhbmNlci50c1xuXG5pbXBvcnQgeyBkYXRhQXdzTGIgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgTGF6eSB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEJhc2VOZXR3b3JrTGlzdGVuZXJQcm9wcywgTmV0d29ya0xpc3RlbmVyIH0gZnJvbSBcIi4vbmV0d29yay1saXN0ZW5lclwiO1xuaW1wb3J0IHsgQXdzQ29uc3RydWN0QmFzZSwgQXdzQ29uc3RydWN0UHJvcHMgfSBmcm9tIFwiLi4vLi4vYXdzLWNvbnN0cnVjdFwiO1xuaW1wb3J0ICogYXMgY2xvdWR3YXRjaCBmcm9tIFwiLi4vLi4vY2xvdWR3YXRjaFwiO1xuaW1wb3J0IHsgQ29ubmVjdGlvbnMsIElDb25uZWN0YWJsZSB9IGZyb20gXCIuLi9jb25uZWN0aW9uc1wiO1xuLy8gaW1wb3J0IHtcbi8vICAgTG9hZEJhbGFuY2VyVHlwZSxcbi8vICAgTG9hZEJhbGFuY2VyTGlzdGVuZXJQcm90b2NvbCxcbi8vIH0gZnJvbSBcIi4uL2xiLXNoYXJlZC9ncmlkLWxvb2t1cC10eXBlc1wiO1xuaW1wb3J0IHsgTmV0d29ya0VMQk1ldHJpY3MgfSBmcm9tIFwiLi4vZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi1jYW5uZWQtbWV0cmljcy5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7XG4gIEJhc2VMb2FkQmFsYW5jZXIsXG4gIEJhc2VMb2FkQmFsYW5jZXJMb29rdXBPcHRpb25zLFxuICBCYXNlTG9hZEJhbGFuY2VyUHJvcHMsXG4gIElMb2FkQmFsYW5jZXJWMixcbiAgTG9hZEJhbGFuY2VyVjJPdXRwdXRzLFxufSBmcm9tIFwiLi4vbGItc2hhcmVkL2Jhc2UtbG9hZC1iYWxhbmNlclwiO1xuaW1wb3J0IHsgSXBBZGRyZXNzVHlwZSwgTGJQcm90b2NvbCB9IGZyb20gXCIuLi9sYi1zaGFyZWQvZW51bXNcIjtcbmltcG9ydCB7IHBhcnNlTG9hZEJhbGFuY2VyRnVsbE5hbWUgfSBmcm9tIFwiLi4vbGItc2hhcmVkL3V0aWxcIjtcbmltcG9ydCB7IElTZWN1cml0eUdyb3VwLCBTZWN1cml0eUdyb3VwIH0gZnJvbSBcIi4uL3NlY3VyaXR5LWdyb3VwXCI7XG5pbXBvcnQge1xuICBJVnBjLFxuICAvLyBUT0RPOiBBZGQgR3JpZCBMb29rdXAgc3VwcG9ydFxuICAvLyBWcGMsXG59IGZyb20gXCIuLi92cGNcIjtcbmltcG9ydCB7IElWcGNFbmRwb2ludFNlcnZpY2VMb2FkQmFsYW5jZXIgfSBmcm9tIFwiLi4vdnBjLWVuZHBvaW50LXNlcnZpY2VcIjtcblxuLyoqXG4gKiBJbmRpY2F0ZXMgaG93IHRyYWZmaWMgaXMgZGlzdHJpYnV0ZWQgYW1vbmcgdGhlIGxvYWQgYmFsYW5jZXIgQXZhaWxhYmlsaXR5IFpvbmVzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VsYXN0aWNsb2FkYmFsYW5jaW5nL2xhdGVzdC9uZXR3b3JrL25ldHdvcmstbG9hZC1iYWxhbmNlcnMuaHRtbCN6b25hbC1kbnMtYWZmaW5pdHlcbiAqL1xuZXhwb3J0IGVudW0gQ2xpZW50Um91dGluZ1BvbGljeSB7XG4gIC8qKlxuICAgKiAxMDAgcGVyY2VudCB6b25hbCBhZmZpbml0eVxuICAgKi9cbiAgQVZBSUxBQklMSVRZX1pPTkVfQUZGSU5JVFkgPSBcImF2YWlsYWJpbGl0eV96b25lX2FmZmluaXR5XCIsXG4gIC8qKlxuICAgKiA4NSBwZXJjZW50IHpvbmFsIGFmZmluaXR5XG4gICAqL1xuICBQQVJUSUFMX0FWQUlMQUJJTElUWV9aT05FX0FGRklOSVRZID0gXCJwYXJ0aWFsX2F2YWlsYWJpbGl0eV96b25lX2FmZmluaXR5XCIsXG4gIC8qKlxuICAgKiBObyB6b25hbCBhZmZpbml0eVxuICAgKi9cbiAgQU5ZX0FWQUlMQUJJTElUWV9aT05FID0gXCJhbnlfYXZhaWxhYmlsaXR5X3pvbmVcIixcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIG5ldHdvcmsgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtMb2FkQmFsYW5jZXJQcm9wcyBleHRlbmRzIEJhc2VMb2FkQmFsYW5jZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cHMgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBsb2FkIGJhbGFuY2VyXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gc2VjdXJpdHkgZ3JvdXBzIGFzc29jaWF0ZWQgd2l0aCB0aGUgbG9hZCBiYWxhbmNlci5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogSVNlY3VyaXR5R3JvdXBbXTtcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgSVAgYWRkcmVzc2VzIHRvIHVzZVxuICAgKlxuICAgKiBJZiB5b3Ugd2FudCB0byBhZGQgYSBVRFAgb3IgVENQX1VEUCBsaXN0ZW5lciB0byB0aGUgbG9hZCBiYWxhbmNlcixcbiAgICogeW91IG11c3QgY2hvb3NlIElQdjQuXG4gICAqXG4gICAqIEBkZWZhdWx0IElwQWRkcmVzc1R5cGUuSVBWNFxuICAgKi9cbiAgcmVhZG9ubHkgaXBBZGRyZXNzVHlwZT86IElwQWRkcmVzc1R5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBBWiBhZmZpbml0eSByb3V0aW5nIHBvbGljeVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lbGFzdGljbG9hZGJhbGFuY2luZy9sYXRlc3QvbmV0d29yay9uZXR3b3JrLWxvYWQtYmFsYW5jZXJzLmh0bWwjem9uYWwtZG5zLWFmZmluaXR5XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQVogYWZmaW5pdHkgaXMgZGlzYWJsZWQuXG4gICAqL1xuICByZWFkb25seSBjbGllbnRSb3V0aW5nUG9saWN5PzogQ2xpZW50Um91dGluZ1BvbGljeTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gZXZhbHVhdGUgaW5ib3VuZCBzZWN1cml0eSBncm91cCBydWxlcyBmb3IgdHJhZmZpYyBzZW50IHRvIGEgTmV0d29yayBMb2FkIEJhbGFuY2VyIHRocm91Z2ggQVdTIFByaXZhdGVMaW5rLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmZvcmNlU2VjdXJpdHlHcm91cEluYm91bmRSdWxlc09uUHJpdmF0ZUxpbmtUcmFmZmljPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgem9uYWwgc2hpZnQgaXMgZW5hYmxlZFxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lbGFzdGljbG9hZGJhbGFuY2luZy9sYXRlc3QvbmV0d29yay96b25hbC1zaGlmdC5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB6b25hbFNoaWZ0PzogYm9vbGVhbjtcblxuICAvLyBUT0RPOiBNaXNzaW5nIGluIHByb3ZpZGVyLWF3c1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1wcm92aWRlci1hd3MvaXNzdWVzLzQwMzc5XG4gIC8vIC8qKlxuICAvLyAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byB1c2UgYW4gSVB2NiBwcmVmaXggZnJvbSBlYWNoIHN1Ym5ldCBmb3Igc291cmNlIE5BVC5cbiAgLy8gICpcbiAgLy8gICogVGhlIElQIGFkZHJlc3MgdHlwZSBtdXN0IGJlIElwQWRkcmVzc1R5cGUuRFVBTFNUQUNLLlxuICAvLyAgKlxuICAvLyAgKiBAZGVmYXVsdCB1bmRlZmluZWQgLSBOTEIgZGVmYXVsdCBiZWhhdmlvciBpcyBmYWxzZVxuICAvLyAgKi9cbiAgLy8gcmVhZG9ubHkgZW5hYmxlUHJlZml4Rm9ySXB2NlNvdXJjZU5hdD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUHJvcGVydGllcyB0byByZWZlcmVuY2UgYW4gZXhpc3RpbmcgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtMb2FkQmFsYW5jZXJBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIEFSTiBvZiB0aGUgbG9hZCBiYWxhbmNlclxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjYW5vbmljYWwgaG9zdGVkIHpvbmUgSUQgb2YgdGhpcyBsb2FkIGJhbGFuY2VyXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVG9rZW4gdmlhIGRhdGEgc291cmNlIGZyb20gbG9hZEJhbGFuY2VyQXJuLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyQ2Fub25pY2FsSG9zdGVkWm9uZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgRE5TIG5hbWUgb2YgdGhpcyBsb2FkIGJhbGFuY2VyXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVG9rZW4gdmlhIGRhdGEgc291cmNlIGZyb20gbG9hZEJhbGFuY2VyQXJuLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyRG5zTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFZQQyB0byBhc3NvY2lhdGUgd2l0aCB0aGUgbG9hZCBiYWxhbmNlci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBXaGVuIG5vdCBwcm92aWRlZCwgbGlzdGVuZXJzIGNhbm5vdCBiZSBjcmVhdGVkIG9uIGltcG9ydGVkIGxvYWRcbiAgICogYmFsYW5jZXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogSVZwYztcblxuICAvKipcbiAgICogU2VjdXJpdHkgZ3JvdXBzIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgbG9hZCBiYWxhbmNlclxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHNlY3VyaXR5IGdyb3VwcyBhc3NvY2lhdGVkIHdpdGggdGhlIGxvYWQgYmFsYW5jZXIuXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXJTZWN1cml0eUdyb3Vwcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGxvb2tpbmcgdXAgYW4gTmV0d29ya0xvYWRCYWxhbmNlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtMb2FkQmFsYW5jZXJMb29rdXBPcHRpb25zXG4gIGV4dGVuZHMgQmFzZUxvYWRCYWxhbmNlckxvb2t1cE9wdGlvbnMge31cblxuLyoqXG4gKiBUaGUgbWV0cmljcyBmb3IgYSBuZXR3b3JrIGxvYWQgYmFsYW5jZXIuXG4gKi9cbmNsYXNzIE5ldHdvcmtMb2FkQmFsYW5jZXJNZXRyaWNzIGltcGxlbWVudHMgSU5ldHdvcmtMb2FkQmFsYW5jZXJNZXRyaWNzIHtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2FkQmFsYW5jZXJGdWxsTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHNjb3BlOiBDb25zdHJ1Y3Q7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgbG9hZEJhbGFuY2VyRnVsbE5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcbiAgICB0aGlzLmxvYWRCYWxhbmNlckZ1bGxOYW1lID0gbG9hZEJhbGFuY2VyRnVsbE5hbWU7XG4gIH1cblxuICBwdWJsaWMgY3VzdG9tKFxuICAgIG1ldHJpY05hbWU6IHN0cmluZyxcbiAgICBwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyxcbiAgKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgbmFtZXNwYWNlOiBcIkFXUy9OZXR3b3JrRUxCXCIsXG4gICAgICBtZXRyaWNOYW1lLFxuICAgICAgZGltZW5zaW9uc01hcDogeyBMb2FkQmFsYW5jZXI6IHRoaXMubG9hZEJhbGFuY2VyRnVsbE5hbWUgfSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pLmF0dGFjaFRvKHRoaXMuc2NvcGUpO1xuICB9XG5cbiAgcHVibGljIGFjdGl2ZUZsb3dDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmNhbm5lZE1ldHJpYyhOZXR3b3JrRUxCTWV0cmljcy5hY3RpdmVGbG93Q291bnRBdmVyYWdlLCBwcm9wcyk7XG4gIH1cblxuICBwdWJsaWMgY29uc3VtZWRMQ1VzKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FubmVkTWV0cmljKE5ldHdvcmtFTEJNZXRyaWNzLmNvbnN1bWVkTGNVc0F2ZXJhZ2UsIHtcbiAgICAgIHN0YXRpc3RpYzogXCJTdW1cIixcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5ld0Zsb3dDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmNhbm5lZE1ldHJpYyhOZXR3b3JrRUxCTWV0cmljcy5uZXdGbG93Q291bnRTdW0sIHByb3BzKTtcbiAgfVxuXG4gIHB1YmxpYyBwcm9jZXNzZWRCeXRlcyhwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmNhbm5lZE1ldHJpYyhOZXR3b3JrRUxCTWV0cmljcy5wcm9jZXNzZWRCeXRlc1N1bSwgcHJvcHMpO1xuICB9XG5cbiAgcHVibGljIHRjcENsaWVudFJlc2V0Q291bnQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5jYW5uZWRNZXRyaWMoTmV0d29ya0VMQk1ldHJpY3MudGNwQ2xpZW50UmVzZXRDb3VudFN1bSwgcHJvcHMpO1xuICB9XG4gIHB1YmxpYyB0Y3BFbGJSZXNldENvdW50KHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FubmVkTWV0cmljKE5ldHdvcmtFTEJNZXRyaWNzLnRjcEVsYlJlc2V0Q291bnRTdW0sIHByb3BzKTtcbiAgfVxuICBwdWJsaWMgdGNwVGFyZ2V0UmVzZXRDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmNhbm5lZE1ldHJpYyhOZXR3b3JrRUxCTWV0cmljcy50Y3BUYXJnZXRSZXNldENvdW50U3VtLCBwcm9wcyk7XG4gIH1cblxuICBwcml2YXRlIGNhbm5lZE1ldHJpYyhcbiAgICBmbjogKGRpbXM6IHsgTG9hZEJhbGFuY2VyOiBzdHJpbmcgfSkgPT4gY2xvdWR3YXRjaC5NZXRyaWNQcm9wcyxcbiAgICBwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyxcbiAgKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgLi4uZm4oeyBMb2FkQmFsYW5jZXI6IHRoaXMubG9hZEJhbGFuY2VyRnVsbE5hbWUgfSksXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KS5hdHRhY2hUbyh0aGlzLnNjb3BlKTtcbiAgfVxufVxuXG4vKipcbiAqIERlZmluZSBhIG5ldyBuZXR3b3JrIGxvYWQgYmFsYW5jZXJcbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpFbGFzdGljTG9hZEJhbGFuY2luZ1YyOjpMb2FkQmFsYW5jZXJcbiAqL1xuZXhwb3J0IGNsYXNzIE5ldHdvcmtMb2FkQmFsYW5jZXJcbiAgZXh0ZW5kcyBCYXNlTG9hZEJhbGFuY2VyXG4gIGltcGxlbWVudHMgSU5ldHdvcmtMb2FkQmFsYW5jZXJcbntcbiAgLy8gVE9ETzogQWRkIEdyaWQgbG9va3VwIHN1cHBvcnRcbiAgLy8gLyoqXG4gIC8vICAqIExvb2tzIHVwIHRoZSBuZXR3b3JrIGxvYWQgYmFsYW5jZXIuXG4gIC8vICAqL1xuICAvLyBwdWJsaWMgc3RhdGljIGZyb21Mb29rdXAoXG4gIC8vICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgLy8gICBpZDogc3RyaW5nLFxuICAvLyAgIG9wdGlvbnM6IE5ldHdvcmtMb2FkQmFsYW5jZXJMb29rdXBPcHRpb25zLFxuICAvLyApOiBJTmV0d29ya0xvYWRCYWxhbmNlciB7XG4gIC8vICAgY29uc3QgcHJvcHMgPSBCYXNlTG9hZEJhbGFuY2VyLl9xdWVyeUNvbnRleHRQcm92aWRlcihzY29wZSwge1xuICAvLyAgICAgdXNlck9wdGlvbnM6IG9wdGlvbnMsXG4gIC8vICAgICBsb2FkQmFsYW5jZXJUeXBlOiBMb2FkQmFsYW5jZXJUeXBlLk5FVFdPUkssXG4gIC8vICAgfSk7XG5cbiAgLy8gICByZXR1cm4gbmV3IExvb2tlZFVwTmV0d29ya0xvYWRCYWxhbmNlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgLy8gfVxuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbU5ldHdvcmtMb2FkQmFsYW5jZXJBdHRyaWJ1dGVzKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBhdHRyczogTmV0d29ya0xvYWRCYWxhbmNlckF0dHJpYnV0ZXMsXG4gICk6IElOZXR3b3JrTG9hZEJhbGFuY2VyIHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSU5ldHdvcmtMb2FkQmFsYW5jZXIge1xuICAgICAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucyA9IG5ldyBDb25uZWN0aW9ucyh7XG4gICAgICAgIHNlY3VyaXR5R3JvdXBzOiBhdHRycy5sb2FkQmFsYW5jZXJTZWN1cml0eUdyb3Vwcz8ubWFwKFxuICAgICAgICAgIChzZWN1cml0eUdyb3VwSWQsIGluZGV4KSA9PlxuICAgICAgICAgICAgU2VjdXJpdHlHcm91cC5mcm9tU2VjdXJpdHlHcm91cElkKFxuICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICBgU2VjdXJpdHlHcm91cC0ke2luZGV4fWAsXG4gICAgICAgICAgICAgIHNlY3VyaXR5R3JvdXBJZCxcbiAgICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICB9KTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBsb2FkQmFsYW5jZXJBcm4gPSBhdHRycy5sb2FkQmFsYW5jZXJBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdnBjPzogSVZwYyA9IGF0dHJzLnZwYztcbiAgICAgIHB1YmxpYyByZWFkb25seSBtZXRyaWNzOiBJTmV0d29ya0xvYWRCYWxhbmNlck1ldHJpY3MgPVxuICAgICAgICBuZXcgTmV0d29ya0xvYWRCYWxhbmNlck1ldHJpY3MoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwYXJzZUxvYWRCYWxhbmNlckZ1bGxOYW1lKGF0dHJzLmxvYWRCYWxhbmNlckFybiksXG4gICAgICAgICk7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlHcm91cHM/OiBzdHJpbmdbXSA9XG4gICAgICAgIGF0dHJzLmxvYWRCYWxhbmNlclNlY3VyaXR5R3JvdXBzO1xuXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IGRhdGFBd3NMYi5EYXRhQXdzTGI7XG4gICAgICBjb25zdHJ1Y3Rvcihwcm9wczogQXdzQ29uc3RydWN0UHJvcHMpIHtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgZGF0YUF3c0xiLkRhdGFBd3NMYih0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgICAgICBhcm46IGF0dHJzLmxvYWRCYWxhbmNlckFybixcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHB1YmxpYyBhZGRMaXN0ZW5lcihcbiAgICAgICAgbGlkOiBzdHJpbmcsXG4gICAgICAgIHByb3BzOiBCYXNlTmV0d29ya0xpc3RlbmVyUHJvcHMsXG4gICAgICApOiBOZXR3b3JrTGlzdGVuZXIge1xuICAgICAgICByZXR1cm4gbmV3IE5ldHdvcmtMaXN0ZW5lcih0aGlzLCBsaWQsIHtcbiAgICAgICAgICBsb2FkQmFsYW5jZXI6IHRoaXMsXG4gICAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBwdWJsaWMgZ2V0IGxvYWRCYWxhbmNlckNhbm9uaWNhbEhvc3RlZFpvbmVJZCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAoYXR0cnMubG9hZEJhbGFuY2VyQ2Fub25pY2FsSG9zdGVkWm9uZUlkKSB7XG4gICAgICAgICAgcmV0dXJuIGF0dHJzLmxvYWRCYWxhbmNlckNhbm9uaWNhbEhvc3RlZFpvbmVJZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS56b25lSWQ7XG4gICAgICAgIC8vIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgIC8vIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgLy8gICBgJ2xvYWRCYWxhbmNlckNhbm9uaWNhbEhvc3RlZFpvbmVJZCcgd2FzIG5vdCBwcm92aWRlZCB3aGVuIGNvbnN0cnVjdGluZyBOZXR3b3JrIExvYWQgQmFsYW5jZXIgJHt0aGlzLm5vZGUucGF0aH0gZnJvbSBhdHRyaWJ1dGVzYCxcbiAgICAgICAgLy8gKTtcbiAgICAgIH1cblxuICAgICAgcHVibGljIGdldCBsb2FkQmFsYW5jZXJEbnNOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChhdHRycy5sb2FkQmFsYW5jZXJEbnNOYW1lKSB7XG4gICAgICAgICAgcmV0dXJuIGF0dHJzLmxvYWRCYWxhbmNlckRuc05hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb3VyY2UuZG5zTmFtZTtcbiAgICAgICAgLy8gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgLy8gdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAvLyAgIGAnbG9hZEJhbGFuY2VyRG5zTmFtZScgd2FzIG5vdCBwcm92aWRlZCB3aGVuIGNvbnN0cnVjdGluZyBOZXR3b3JrIExvYWQgQmFsYW5jZXIgJHt0aGlzLm5vZGUucGF0aH0gZnJvbSBhdHRyaWJ1dGVzYCxcbiAgICAgICAgLy8gKTtcbiAgICAgIH1cblxuICAgICAgcHVibGljIGdldCBsb2FkQmFsYW5jZXJWMk91dHB1dHMoKTogTG9hZEJhbGFuY2VyVjJPdXRwdXRzIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsb2FkQmFsYW5jZXJDYW5vbmljYWxIb3N0ZWRab25lSWQ6XG4gICAgICAgICAgICB0aGlzLmxvYWRCYWxhbmNlckNhbm9uaWNhbEhvc3RlZFpvbmVJZCxcbiAgICAgICAgICBsb2FkQmFsYW5jZXJEbnNOYW1lOiB0aGlzLmxvYWRCYWxhbmNlckRuc05hbWUsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRCYWxhbmNlclYyT3V0cHV0cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydCh7IGVudmlyb25tZW50RnJvbUFybjogYXR0cnMubG9hZEJhbGFuY2VyQXJuIH0pO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IG1ldHJpY3M6IElOZXR3b3JrTG9hZEJhbGFuY2VyTWV0cmljcztcbiAgcHVibGljIHJlYWRvbmx5IGlwQWRkcmVzc1R5cGU/OiBJcEFkZHJlc3NUeXBlO1xuICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdGlvbnM6IENvbm5lY3Rpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IGlzU2VjdXJpdHlHcm91cHNQcm9wZXJ0eURlZmluZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VuZm9yY2VTZWN1cml0eUdyb3VwSW5ib3VuZFJ1bGVzT25Qcml2YXRlTGlua1RyYWZmaWM/OiBib29sZWFuO1xuICAvLyBUT0RPOiBNaXNzaW5nIGluIHByb3ZpZGVyLWF3c1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1wcm92aWRlci1hd3MvaXNzdWVzLzQwMzc5XG4gIC8vIHByaXZhdGUgZW5hYmxlUHJlZml4Rm9ySXB2NlNvdXJjZU5hdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFmdGVyIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgSUNvbm5lY3RhYmxlYCAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9wdWxsLzI4NDk0KSwgdGhlIGRlZmF1bHRcbiAgICogdmFsdWUgZm9yIGBzZWN1cml0eUdyb3Vwc2DCoGlzIHNldCBieSB0aGUgYENvbm5lY3Rpb25zYMKgY29uc3RydWN0b3IgdG8gYW4gZW1wdHkgYXJyYXkuXG4gICAqIFRvIGtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSAoYHNlY3VyaXR5R3JvdXBzYMKgaXMgYHVuZGVmaW5lZGDCoGlmIHRoZSByZWxhdGVkIHByb3BlcnR5IGlzIG5vdCBzcGVjaWZpZWQpXG4gICAqIGEgZ2V0dGVyIGhhcyBiZWVuIGFkZGVkLlxuICAgKi9cbiAgcHVibGljIGdldCBzZWN1cml0eUdyb3VwcygpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuaXNTZWN1cml0eUdyb3Vwc1Byb3BlcnR5RGVmaW5lZCB8fFxuICAgICAgdGhpcy5jb25uZWN0aW9ucy5zZWN1cml0eUdyb3Vwcy5sZW5ndGhcbiAgICAgID8gdGhpcy5jb25uZWN0aW9ucy5zZWN1cml0eUdyb3Vwcy5tYXAoKHNnKSA9PiBzZy5zZWN1cml0eUdyb3VwSWQpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOZXR3b3JrTG9hZEJhbGFuY2VyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzLCB7XG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBcIm5ldHdvcmtcIixcbiAgICAgIHNlY3VyaXR5R3JvdXBzOiBMYXp5Lmxpc3RWYWx1ZSh7IHByb2R1Y2U6ICgpID0+IHRoaXMuc2VjdXJpdHlHcm91cHMgfSksXG4gICAgICBpcEFkZHJlc3NUeXBlOiBwcm9wcy5pcEFkZHJlc3NUeXBlLFxuICAgICAgZW5mb3JjZVNlY3VyaXR5R3JvdXBJbmJvdW5kUnVsZXNPblByaXZhdGVMaW5rVHJhZmZpYzogTGF6eS5zdHJpbmdWYWx1ZSh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgdGhpcy5lbmZvcmNlU2VjdXJpdHlHcm91cEluYm91bmRSdWxlc09uUHJpdmF0ZUxpbmtUcmFmZmljLFxuICAgICAgfSksXG4gICAgICAvLyBUT0RPOiBNaXNzaW5nIGluIHByb3ZpZGVyLWF3c1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tcHJvdmlkZXItYXdzL2lzc3Vlcy80MDM3OVxuICAgICAgLy8gZW5hYmxlUHJlZml4Rm9ySXB2NlNvdXJjZU5hdDpcbiAgICAgIC8vICAgcHJvcHMuZW5hYmxlUHJlZml4Rm9ySXB2NlNvdXJjZU5hdCA9PT0gdHJ1ZVxuICAgICAgLy8gICAgID8gXCJvblwiXG4gICAgICAvLyAgICAgOiBwcm9wcy5lbmFibGVQcmVmaXhGb3JJcHY2U291cmNlTmF0ID09PSBmYWxzZVxuICAgICAgLy8gICAgICAgPyBcIm9mZlwiXG4gICAgICAvLyAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIC8vIHRoaXMuZW5hYmxlUHJlZml4Rm9ySXB2NlNvdXJjZU5hdCA9IHByb3BzLmVuYWJsZVByZWZpeEZvcklwdjZTb3VyY2VOYXQ7XG4gICAgdGhpcy5tZXRyaWNzID0gbmV3IE5ldHdvcmtMb2FkQmFsYW5jZXJNZXRyaWNzKFxuICAgICAgdGhpcyxcbiAgICAgIHRoaXMubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgKTtcbiAgICB0aGlzLmlzU2VjdXJpdHlHcm91cHNQcm9wZXJ0eURlZmluZWQgPSAhIXByb3BzLnNlY3VyaXR5R3JvdXBzO1xuICAgIHRoaXMuY29ubmVjdGlvbnMgPSBuZXcgQ29ubmVjdGlvbnMoe1xuICAgICAgc2VjdXJpdHlHcm91cHM6IHByb3BzLnNlY3VyaXR5R3JvdXBzLFxuICAgIH0pO1xuICAgIHRoaXMuaXBBZGRyZXNzVHlwZSA9IHByb3BzLmlwQWRkcmVzc1R5cGUgPz8gSXBBZGRyZXNzVHlwZS5JUFY0O1xuICAgIGlmIChwcm9wcy5jbGllbnRSb3V0aW5nUG9saWN5KSB7XG4gICAgICB0aGlzLnNldEF0dHJpYnV0ZShcbiAgICAgICAgXCJkbnNfcmVjb3JkLmNsaWVudF9yb3V0aW5nX3BvbGljeVwiLFxuICAgICAgICBwcm9wcy5jbGllbnRSb3V0aW5nUG9saWN5LFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHByb3BzLnpvbmFsU2hpZnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoXG4gICAgICAgIFwiem9uYWxfc2hpZnQuY29uZmlnLmVuYWJsZWRcIixcbiAgICAgICAgcHJvcHMuem9uYWxTaGlmdCA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fZW5mb3JjZVNlY3VyaXR5R3JvdXBJbmJvdW5kUnVsZXNPblByaXZhdGVMaW5rVHJhZmZpYyA9XG4gICAgICBwcm9wcy5lbmZvcmNlU2VjdXJpdHlHcm91cEluYm91bmRSdWxlc09uUHJpdmF0ZUxpbmtUcmFmZmljO1xuICB9XG5cbiAgcHVibGljIGdldCBlbmZvcmNlU2VjdXJpdHlHcm91cEluYm91bmRSdWxlc09uUHJpdmF0ZUxpbmtUcmFmZmljKCk6XG4gICAgfCBzdHJpbmdcbiAgICB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5fZW5mb3JjZVNlY3VyaXR5R3JvdXBJbmJvdW5kUnVsZXNPblByaXZhdGVMaW5rVHJhZmZpYyA9PT0gdW5kZWZpbmVkXG4gICAgKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5fZW5mb3JjZVNlY3VyaXR5R3JvdXBJbmJvdW5kUnVsZXNPblByaXZhdGVMaW5rVHJhZmZpY1xuICAgICAgPyBcIm9uXCJcbiAgICAgIDogXCJvZmZcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBsaXN0ZW5lciB0byB0aGlzIGxvYWQgYmFsYW5jZXJcbiAgICpcbiAgICogQHJldHVybnMgVGhlIG5ld2x5IGNyZWF0ZWQgbGlzdGVuZXJcbiAgICovXG4gIHB1YmxpYyBhZGRMaXN0ZW5lcihcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBCYXNlTmV0d29ya0xpc3RlbmVyUHJvcHMsXG4gICk6IE5ldHdvcmtMaXN0ZW5lciB7XG4gICAgLy8gVURQIGxpc3RlbmVyIHdpdGggZHVhbCBzdGFjayBOTEIgcmVxdWlyZXMgcHJlZml4IElQdjYgc291cmNlIE5BVCB0byBiZSBlbmFibGVkXG4gICAgaWYgKFxuICAgICAgKHByb3BzLnByb3RvY29sID09PSBMYlByb3RvY29sLlVEUCB8fFxuICAgICAgICBwcm9wcy5wcm90b2NvbCA9PT0gTGJQcm90b2NvbC5UQ1BfVURQKSAmJlxuICAgICAgKHRoaXMuaXBBZGRyZXNzVHlwZSA9PT0gSXBBZGRyZXNzVHlwZS5EVUFMX1NUQUNLIHx8XG4gICAgICAgIHRoaXMuaXBBZGRyZXNzVHlwZSA9PT0gSXBBZGRyZXNzVHlwZS5EVUFMX1NUQUNLX1dJVEhPVVRfUFVCTElDX0lQVjQpIC8vICYmXG4gICAgICAvLyB0aGlzLmVuYWJsZVByZWZpeEZvcklwdjZTb3VyY2VOYXQgIT09IHRydWVcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJUbyBhZGQgYSBsaXN0ZW5lciB3aXRoIFVEUCBwcm90b2NvbCB0byBhIGR1YWwgc3RhY2sgTkxCLCBtaXNzaW5nIGluIHRlcnJhZm9ybSBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLXByb3ZpZGVyLWF3cy9pc3N1ZXMvNDAzNzkuXCIsXG4gICAgICApO1xuICAgICAgLy8gdGhyb3cgbmV3IEVycm9yKFxuICAgICAgLy8gICBcIlRvIGFkZCBhIGxpc3RlbmVyIHdpdGggVURQIHByb3RvY29sIHRvIGEgZHVhbCBzdGFjayBOTEIsICdlbmFibGVQcmVmaXhGb3JJcHY2U291cmNlTmF0JyBtdXN0IGJlIHNldCB0byB0cnVlLlwiLFxuICAgICAgLy8gKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBOZXR3b3JrTGlzdGVuZXIodGhpcywgaWQsIHtcbiAgICAgIGxvYWRCYWxhbmNlcjogdGhpcyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHNlY3VyaXR5IGdyb3VwIHRvIHRoaXMgbG9hZCBiYWxhbmNlclxuICAgKi9cbiAgcHVibGljIGFkZFNlY3VyaXR5R3JvdXAoc2VjdXJpdHlHcm91cDogSVNlY3VyaXR5R3JvdXApIHtcbiAgICB0aGlzLmNvbm5lY3Rpb25zLmFkZFNlY3VyaXR5R3JvdXAoc2VjdXJpdHlHcm91cCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBnaXZlbiBuYW1lZCBtZXRyaWMgZm9yIHRoaXMgTmV0d29yayBMb2FkIEJhbGFuY2VyXG4gICAqXG4gICAqIEBkZWZhdWx0IEF2ZXJhZ2Ugb3ZlciA1IG1pbnV0ZXNcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBgTmV0d29ya0xvYWRCYWxhbmNlci5tZXRyaWNzLmN1c3RvbWBgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBtZXRyaWMoXG4gICAgbWV0cmljTmFtZTogc3RyaW5nLFxuICAgIHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zLFxuICApOiBjbG91ZHdhdGNoLk1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICBuYW1lc3BhY2U6IFwiQVdTL05ldHdvcmtFTEJcIixcbiAgICAgIG1ldHJpY05hbWUsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IExvYWRCYWxhbmNlcjogdGhpcy5sb2FkQmFsYW5jZXJGdWxsTmFtZSB9LFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSkuYXR0YWNoVG8odGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiBjb25jdXJyZW50IFRDUCBmbG93cyAob3IgY29ubmVjdGlvbnMpIGZyb20gY2xpZW50cyB0byB0YXJnZXRzLlxuICAgKlxuICAgKiBUaGlzIG1ldHJpYyBpbmNsdWRlcyBjb25uZWN0aW9ucyBpbiB0aGUgU1lOX1NFTlQgYW5kIEVTVEFCTElTSEVEIHN0YXRlcy5cbiAgICogVENQIGNvbm5lY3Rpb25zIGFyZSBub3QgdGVybWluYXRlZCBhdCB0aGUgbG9hZCBiYWxhbmNlciwgc28gYSBjbGllbnRcbiAgICogb3BlbmluZyBhIFRDUCBjb25uZWN0aW9uIHRvIGEgdGFyZ2V0IGNvdW50cyBhcyBhIHNpbmdsZSBmbG93LlxuICAgKlxuICAgKiBAZGVmYXVsdCBBdmVyYWdlIG92ZXIgNSBtaW51dGVzXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgYE5ldHdvcmtMb2FkQmFsYW5jZXIubWV0cmljcy5hY3RpdmVGbG93Q291bnRgYCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgbWV0cmljQWN0aXZlRmxvd0NvdW50KHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljcy5hY3RpdmVGbG93Q291bnQocHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgbG9hZCBiYWxhbmNlciBjYXBhY2l0eSB1bml0cyAoTENVKSB1c2VkIGJ5IHlvdXIgbG9hZCBiYWxhbmNlci5cbiAgICpcbiAgICogQGRlZmF1bHQgU3VtIG92ZXIgNSBtaW51dGVzXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgYE5ldHdvcmtMb2FkQmFsYW5jZXIubWV0cmljcy5hY3RpdmVGbG93Q291bnRgYCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgbWV0cmljQ29uc3VtZWRMQ1VzKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljcy5jb25zdW1lZExDVXMocHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgdGFyZ2V0cyB0aGF0IGFyZSBjb25zaWRlcmVkIGhlYWx0aHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IEF2ZXJhZ2Ugb3ZlciA1IG1pbnV0ZXNcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBgTmV0d29ya1RhcmdldEdyb3VwLm1ldHJpY0hlYWx0aHlIb3N0Q291bnRgYCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgbWV0cmljSGVhbHRoeUhvc3RDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYyhcIkhlYWx0aHlIb3N0Q291bnRcIiwge1xuICAgICAgc3RhdGlzdGljOiBcIkF2ZXJhZ2VcIixcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgdGFyZ2V0cyB0aGF0IGFyZSBjb25zaWRlcmVkIHVuaGVhbHRoeS5cbiAgICpcbiAgICogQGRlZmF1bHQgQXZlcmFnZSBvdmVyIDUgbWludXRlc1xuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGBOZXR3b3JrVGFyZ2V0R3JvdXAubWV0cmljVW5IZWFsdGh5SG9zdENvdW50YGAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIG1ldHJpY1VuSGVhbHRoeUhvc3RDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYyhcIlVuSGVhbHRoeUhvc3RDb3VudFwiLCB7XG4gICAgICBzdGF0aXN0aWM6IFwiQXZlcmFnZVwiLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiBuZXcgVENQIGZsb3dzIChvciBjb25uZWN0aW9ucykgZXN0YWJsaXNoZWQgZnJvbSBjbGllbnRzIHRvIHRhcmdldHMgaW4gdGhlIHRpbWUgcGVyaW9kLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTdW0gb3ZlciA1IG1pbnV0ZXNcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBgTmV0d29ya0xvYWRCYWxhbmNlci5tZXRyaWNzLm5ld0Zsb3dDb3VudGBgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBtZXRyaWNOZXdGbG93Q291bnQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNzLm5ld0Zsb3dDb3VudChwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBwcm9jZXNzZWQgYnkgdGhlIGxvYWQgYmFsYW5jZXIsIGluY2x1ZGluZyBUQ1AvSVAgaGVhZGVycy5cbiAgICpcbiAgICogQGRlZmF1bHQgU3VtIG92ZXIgNSBtaW51dGVzXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgYE5ldHdvcmtMb2FkQmFsYW5jZXIubWV0cmljcy5wcm9jZXNzZWRCeXRlc2BgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBtZXRyaWNQcm9jZXNzZWRCeXRlcyhwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY3MucHJvY2Vzc2VkQnl0ZXMocHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2YgcmVzZXQgKFJTVCkgcGFja2V0cyBzZW50IGZyb20gYSBjbGllbnQgdG8gYSB0YXJnZXQuXG4gICAqXG4gICAqIFRoZXNlIHJlc2V0cyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBjbGllbnQgYW5kIGZvcndhcmRlZCBieSB0aGUgbG9hZCBiYWxhbmNlci5cbiAgICpcbiAgICogQGRlZmF1bHQgU3VtIG92ZXIgNSBtaW51dGVzXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgYE5ldHdvcmtMb2FkQmFsYW5jZXIubWV0cmljcy50Y3BDbGllbnRSZXNldENvdW50YGAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIG1ldHJpY1RjcENsaWVudFJlc2V0Q291bnQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNzLnRjcENsaWVudFJlc2V0Q291bnQocHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2YgcmVzZXQgKFJTVCkgcGFja2V0cyBnZW5lcmF0ZWQgYnkgdGhlIGxvYWQgYmFsYW5jZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IFN1bSBvdmVyIDUgbWludXRlc1xuICAgKiBAZGVwcmVjYXRlZCBVc2UgYGBOZXR3b3JrTG9hZEJhbGFuY2VyLm1ldHJpY3MudGNwRWxiUmVzZXRDb3VudGBgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBtZXRyaWNUY3BFbGJSZXNldENvdW50KHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljcy50Y3BFbGJSZXNldENvdW50KHByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIHJlc2V0IChSU1QpIHBhY2tldHMgc2VudCBmcm9tIGEgdGFyZ2V0IHRvIGEgY2xpZW50LlxuICAgKlxuICAgKiBUaGVzZSByZXNldHMgYXJlIGdlbmVyYXRlZCBieSB0aGUgdGFyZ2V0IGFuZCBmb3J3YXJkZWQgYnkgdGhlIGxvYWQgYmFsYW5jZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IFN1bSBvdmVyIDUgbWludXRlc1xuICAgKiBAZGVwcmVjYXRlZCBVc2UgYGBOZXR3b3JrTG9hZEJhbGFuY2VyLm1ldHJpY3MudGNwVGFyZ2V0UmVzZXRDb3VudGBgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBtZXRyaWNUY3BUYXJnZXRSZXNldENvdW50KHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljcy50Y3BUYXJnZXRSZXNldENvdW50KHByb3BzKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnRhaW5zIGFsbCBtZXRyaWNzIGZvciBhIE5ldHdvcmsgTG9hZCBCYWxhbmNlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTmV0d29ya0xvYWRCYWxhbmNlck1ldHJpY3Mge1xuICAvKipcbiAgICogUmV0dXJuIHRoZSBnaXZlbiBuYW1lZCBtZXRyaWMgZm9yIHRoaXMgTmV0d29yayBMb2FkIEJhbGFuY2VyXG4gICAqXG4gICAqIEBkZWZhdWx0IEF2ZXJhZ2Ugb3ZlciA1IG1pbnV0ZXNcbiAgICovXG4gIGN1c3RvbShcbiAgICBtZXRyaWNOYW1lOiBzdHJpbmcsXG4gICAgcHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMsXG4gICk6IGNsb3Vkd2F0Y2guTWV0cmljO1xuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIGNvbmN1cnJlbnQgVENQIGZsb3dzIChvciBjb25uZWN0aW9ucykgZnJvbSBjbGllbnRzIHRvIHRhcmdldHMuXG4gICAqXG4gICAqIFRoaXMgbWV0cmljIGluY2x1ZGVzIGNvbm5lY3Rpb25zIGluIHRoZSBTWU5fU0VOVCBhbmQgRVNUQUJMSVNIRUQgc3RhdGVzLlxuICAgKiBUQ1AgY29ubmVjdGlvbnMgYXJlIG5vdCB0ZXJtaW5hdGVkIGF0IHRoZSBsb2FkIGJhbGFuY2VyLCBzbyBhIGNsaWVudFxuICAgKiBvcGVuaW5nIGEgVENQIGNvbm5lY3Rpb24gdG8gYSB0YXJnZXQgY291bnRzIGFzIGEgc2luZ2xlIGZsb3cuXG4gICAqXG4gICAqIEBkZWZhdWx0IEF2ZXJhZ2Ugb3ZlciA1IG1pbnV0ZXNcbiAgICovXG4gIGFjdGl2ZUZsb3dDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGxvYWQgYmFsYW5jZXIgY2FwYWNpdHkgdW5pdHMgKExDVSkgdXNlZCBieSB5b3VyIGxvYWQgYmFsYW5jZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IFN1bSBvdmVyIDUgbWludXRlc1xuICAgKi9cbiAgY29uc3VtZWRMQ1VzKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWM7XG5cbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2YgbmV3IFRDUCBmbG93cyAob3IgY29ubmVjdGlvbnMpIGVzdGFibGlzaGVkIGZyb20gY2xpZW50cyB0byB0YXJnZXRzIGluIHRoZSB0aW1lIHBlcmlvZC5cbiAgICpcbiAgICogQGRlZmF1bHQgU3VtIG92ZXIgNSBtaW51dGVzXG4gICAqL1xuICBuZXdGbG93Q291bnQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYztcblxuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBwcm9jZXNzZWQgYnkgdGhlIGxvYWQgYmFsYW5jZXIsIGluY2x1ZGluZyBUQ1AvSVAgaGVhZGVycy5cbiAgICpcbiAgICogQGRlZmF1bHQgU3VtIG92ZXIgNSBtaW51dGVzXG4gICAqL1xuICBwcm9jZXNzZWRCeXRlcyhwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljO1xuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIHJlc2V0IChSU1QpIHBhY2tldHMgc2VudCBmcm9tIGEgY2xpZW50IHRvIGEgdGFyZ2V0LlxuICAgKlxuICAgKiBUaGVzZSByZXNldHMgYXJlIGdlbmVyYXRlZCBieSB0aGUgY2xpZW50IGFuZCBmb3J3YXJkZWQgYnkgdGhlIGxvYWQgYmFsYW5jZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IFN1bSBvdmVyIDUgbWludXRlc1xuICAgKi9cbiAgdGNwQ2xpZW50UmVzZXRDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljO1xuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIHJlc2V0IChSU1QpIHBhY2tldHMgZ2VuZXJhdGVkIGJ5IHRoZSBsb2FkIGJhbGFuY2VyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTdW0gb3ZlciA1IG1pbnV0ZXNcbiAgICovXG4gIHRjcEVsYlJlc2V0Q291bnQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYztcblxuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiByZXNldCAoUlNUKSBwYWNrZXRzIHNlbnQgZnJvbSBhIHRhcmdldCB0byBhIGNsaWVudC5cbiAgICpcbiAgICogVGhlc2UgcmVzZXRzIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIHRhcmdldCBhbmQgZm9yd2FyZGVkIGJ5IHRoZSBsb2FkIGJhbGFuY2VyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTdW0gb3ZlciA1IG1pbnV0ZXNcbiAgICovXG4gIHRjcFRhcmdldFJlc2V0Q291bnQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYztcbn1cblxuLyoqXG4gKiBBIG5ldHdvcmsgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIElOZXR3b3JrTG9hZEJhbGFuY2VyXG4gIGV4dGVuZHMgSUxvYWRCYWxhbmNlclYyLFxuICAgIElWcGNFbmRwb2ludFNlcnZpY2VMb2FkQmFsYW5jZXIsXG4gICAgSUNvbm5lY3RhYmxlIHtcbiAgLyoqXG4gICAqIFRoZSBWUEMgdGhpcyBsb2FkIGJhbGFuY2VyIGhhcyBiZWVuIGNyZWF0ZWQgaW4gKGlmIGF2YWlsYWJsZSlcbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IElWcGM7XG5cbiAgLyoqXG4gICAqIEFsbCBtZXRyaWNzIGF2YWlsYWJsZSBmb3IgdGhpcyBsb2FkIGJhbGFuY2VyXG4gICAqL1xuICByZWFkb25seSBtZXRyaWNzOiBJTmV0d29ya0xvYWRCYWxhbmNlck1ldHJpY3M7XG5cbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBsb2FkIGJhbGFuY2VyXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3Vwcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBJUCBhZGRyZXNzZXMgdG8gdXNlXG4gICAqXG4gICAqIEBkZWZhdWx0IElwQWRkcmVzc1R5cGUuSVBWNFxuICAgKi9cbiAgcmVhZG9ubHkgaXBBZGRyZXNzVHlwZT86IElwQWRkcmVzc1R5cGU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGV2YWx1YXRlIGluYm91bmQgc2VjdXJpdHkgZ3JvdXAgcnVsZXMgZm9yIHRyYWZmaWMgc2VudCB0byBhIE5ldHdvcmsgTG9hZCBCYWxhbmNlciB0aHJvdWdoIEFXUyBQcml2YXRlTGlua1xuICAgKlxuICAgKiBAZGVmYXVsdCBvblxuICAgKi9cbiAgcmVhZG9ubHkgZW5mb3JjZVNlY3VyaXR5R3JvdXBJbmJvdW5kUnVsZXNPblByaXZhdGVMaW5rVHJhZmZpYz86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkIGEgbGlzdGVuZXIgdG8gdGhpcyBsb2FkIGJhbGFuY2VyXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBuZXdseSBjcmVhdGVkIGxpc3RlbmVyXG4gICAqL1xuICBhZGRMaXN0ZW5lcihpZDogc3RyaW5nLCBwcm9wczogQmFzZU5ldHdvcmtMaXN0ZW5lclByb3BzKTogTmV0d29ya0xpc3RlbmVyO1xufVxuXG4vLyBUT0RPOiBBZGQgR3JpZCBMb29rdXAgc3VwcG9ydFxuLy8gY2xhc3MgTG9va2VkVXBOZXR3b3JrTG9hZEJhbGFuY2VyXG4vLyAgIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZVxuLy8gICBpbXBsZW1lbnRzIElOZXR3b3JrTG9hZEJhbGFuY2VyXG4vLyB7XG4vLyAgIHB1YmxpYyByZWFkb25seSBsb2FkQmFsYW5jZXJDYW5vbmljYWxIb3N0ZWRab25lSWQ6IHN0cmluZztcbi8vICAgcHVibGljIHJlYWRvbmx5IGxvYWRCYWxhbmNlckRuc05hbWU6IHN0cmluZztcbi8vICAgcHVibGljIHJlYWRvbmx5IGxvYWRCYWxhbmNlckFybjogc3RyaW5nO1xuLy8gICBwdWJsaWMgcmVhZG9ubHkgdnBjPzogSVZwYztcbi8vICAgcHVibGljIHJlYWRvbmx5IG1ldHJpY3M6IElOZXR3b3JrTG9hZEJhbGFuY2VyTWV0cmljcztcbi8vICAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogc3RyaW5nW107XG4vLyAgIHB1YmxpYyByZWFkb25seSBpcEFkZHJlc3NUeXBlPzogSXBBZGRyZXNzVHlwZTtcbi8vICAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcblxuLy8gICBjb25zdHJ1Y3Rvcihcbi8vICAgICBzY29wZTogQ29uc3RydWN0LFxuLy8gICAgIGlkOiBzdHJpbmcsXG4vLyAgICAgcHJvcHM6IGN4YXBpLkxvYWRCYWxhbmNlckNvbnRleHRSZXNwb25zZSxcbi8vICAgKSB7XG4vLyAgICAgc3VwZXIoc2NvcGUsIGlkLCB7IGVudmlyb25tZW50RnJvbUFybjogcHJvcHMubG9hZEJhbGFuY2VyQXJuIH0pO1xuXG4vLyAgICAgdGhpcy5sb2FkQmFsYW5jZXJBcm4gPSBwcm9wcy5sb2FkQmFsYW5jZXJBcm47XG4vLyAgICAgdGhpcy5sb2FkQmFsYW5jZXJDYW5vbmljYWxIb3N0ZWRab25lSWQgPVxuLy8gICAgICAgcHJvcHMubG9hZEJhbGFuY2VyQ2Fub25pY2FsSG9zdGVkWm9uZUlkO1xuLy8gICAgIHRoaXMubG9hZEJhbGFuY2VyRG5zTmFtZSA9IHByb3BzLmxvYWRCYWxhbmNlckRuc05hbWU7XG4vLyAgICAgdGhpcy5tZXRyaWNzID0gbmV3IE5ldHdvcmtMb2FkQmFsYW5jZXJNZXRyaWNzKFxuLy8gICAgICAgdGhpcyxcbi8vICAgICAgIHBhcnNlTG9hZEJhbGFuY2VyRnVsbE5hbWUocHJvcHMubG9hZEJhbGFuY2VyQXJuKSxcbi8vICAgICApO1xuLy8gICAgIHRoaXMuc2VjdXJpdHlHcm91cHMgPSBwcm9wcy5zZWN1cml0eUdyb3VwSWRzO1xuLy8gICAgIHRoaXMuY29ubmVjdGlvbnMgPSBuZXcgQ29ubmVjdGlvbnMoe1xuLy8gICAgICAgc2VjdXJpdHlHcm91cHM6IHByb3BzLnNlY3VyaXR5R3JvdXBJZHMubWFwKChzZWN1cml0eUdyb3VwSWQsIGluZGV4KSA9PlxuLy8gICAgICAgICBTZWN1cml0eUdyb3VwLmZyb21Mb29rdXBCeUlkKFxuLy8gICAgICAgICAgIHRoaXMsXG4vLyAgICAgICAgICAgYFNlY3VyaXR5R3JvdXAtJHtpbmRleH1gLFxuLy8gICAgICAgICAgIHNlY3VyaXR5R3JvdXBJZCxcbi8vICAgICAgICAgKSxcbi8vICAgICAgICksXG4vLyAgICAgfSk7XG5cbi8vICAgICBpZiAocHJvcHMuaXBBZGRyZXNzVHlwZSA9PT0gY3hhcGkuTG9hZEJhbGFuY2VySXBBZGRyZXNzVHlwZS5JUFY0KSB7XG4vLyAgICAgICB0aGlzLmlwQWRkcmVzc1R5cGUgPSBJcEFkZHJlc3NUeXBlLklQVjQ7XG4vLyAgICAgfSBlbHNlIGlmIChcbi8vICAgICAgIHByb3BzLmlwQWRkcmVzc1R5cGUgPT09IGN4YXBpLkxvYWRCYWxhbmNlcklwQWRkcmVzc1R5cGUuRFVBTF9TVEFDS1xuLy8gICAgICkge1xuLy8gICAgICAgdGhpcy5pcEFkZHJlc3NUeXBlID0gSXBBZGRyZXNzVHlwZS5EVUFMX1NUQUNLO1xuLy8gICAgIH1cblxuLy8gICAgIHRoaXMudnBjID0gVnBjLmZyb21Mb29rdXAodGhpcywgXCJWcGNcIiwge1xuLy8gICAgICAgdnBjSWQ6IHByb3BzLnZwY0lkLFxuLy8gICAgIH0pO1xuLy8gICB9XG5cbi8vICAgcHVibGljIGFkZExpc3RlbmVyKFxuLy8gICAgIGxpZDogc3RyaW5nLFxuLy8gICAgIHByb3BzOiBCYXNlTmV0d29ya0xpc3RlbmVyUHJvcHMsXG4vLyAgICk6IE5ldHdvcmtMaXN0ZW5lciB7XG4vLyAgICAgcmV0dXJuIG5ldyBOZXR3b3JrTGlzdGVuZXIodGhpcywgbGlkLCB7XG4vLyAgICAgICBsb2FkQmFsYW5jZXI6IHRoaXMsXG4vLyAgICAgICAuLi5wcm9wcyxcbi8vICAgICB9KTtcbi8vICAgfVxuLy8gfVxuIl19
@@ -182,7 +182,7 @@ class NetworkTargetGroup extends base_target_group_1.TargetGroupBase {
182
182
  }
183
183
  exports.NetworkTargetGroup = NetworkTargetGroup;
184
184
  _a = JSII_RTTI_SYMBOL_1;
185
- NetworkTargetGroup[_a] = { fqn: "terraconstructs.aws.compute.NetworkTargetGroup", version: "0.1.9" };
185
+ NetworkTargetGroup[_a] = { fqn: "terraconstructs.aws.compute.NetworkTargetGroup", version: "0.2.0" };
186
186
  /**
187
187
  * An imported network target group
188
188
  */
@@ -62,7 +62,7 @@ class Peer {
62
62
  }
63
63
  exports.Peer = Peer;
64
64
  _a = JSII_RTTI_SYMBOL_1;
65
- Peer[_a] = { fqn: "terraconstructs.aws.compute.Peer", version: "0.1.9" };
65
+ Peer[_a] = { fqn: "terraconstructs.aws.compute.Peer", version: "0.2.0" };
66
66
  /**
67
67
  * A connection to and from a given IP range
68
68
  */
@@ -129,5 +129,5 @@ class PlacementGroup extends aws_construct_1.AwsConstructBase {
129
129
  }
130
130
  exports.PlacementGroup = PlacementGroup;
131
131
  _a = JSII_RTTI_SYMBOL_1;
132
- PlacementGroup[_a] = { fqn: "terraconstructs.aws.compute.PlacementGroup", version: "0.1.9" };
132
+ PlacementGroup[_a] = { fqn: "terraconstructs.aws.compute.PlacementGroup", version: "0.2.0" };
133
133
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2VtZW50LWdyb3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9jb21wdXRlL3BsYWNlbWVudC1ncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1HQUFtRztBQUVuRyxzREFBcUQ7QUFFckQsb0RBSTBCO0FBMkcxQjs7R0FFRztBQUNILElBQVkseUJBZ0JYO0FBaEJELFdBQVkseUJBQXlCO0lBQ25DOzs7OztPQUtHO0lBQ0gsMENBQWEsQ0FBQTtJQUViOzs7OztPQUtHO0lBQ0gsMENBQWEsQ0FBQTtBQUNmLENBQUMsRUFoQlcseUJBQXlCLHlDQUF6Qix5QkFBeUIsUUFnQnBDO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLHNCQXdCWDtBQXhCRCxXQUFZLHNCQUFzQjtJQUNoQzs7Ozs7T0FLRztJQUNILDZDQUFtQixDQUFBO0lBRW5COzs7Ozs7O09BT0c7SUFDSCxpREFBdUIsQ0FBQTtJQUV2Qjs7O09BR0c7SUFDSCwyQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBeEJXLHNCQUFzQixzQ0FBdEIsc0JBQXNCLFFBd0JqQztBQUVEOzs7R0FHRztBQUNILE1BQWEsY0FDWCxTQUFRLGdDQUFnQjtJQUd4Qjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxzQkFBc0IsQ0FDbEMsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLGtCQUEwQjtRQUUxQixNQUFNLE1BQU8sU0FBUSxnQ0FBZ0I7WUFBckM7O2dCQVNrQix1QkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztZQUMxRCxDQUFDO1lBVEMsSUFBVyxxQkFBcUI7Z0JBQzlCLE9BQU87b0JBQ0wsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtpQkFDNUMsQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFXLE9BQU87Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO1lBQ3BDLENBQUM7U0FFRjtRQUVELE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFPRCxJQUFXLHFCQUFxQjtRQUM5QixPQUFPO1lBQ0wsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtTQUM1QyxDQUFDO0lBQ0osQ0FBQztJQUNELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDO0lBSUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUE2QixFQUFFO1FBQ3ZFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sa0JBQWtCLEdBQ3RCLEtBQUssQ0FBQyxrQkFBa0I7WUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUTthQUN0QixDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxFQUFFLFFBQVEsQ0FBQztRQUVoQyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RDLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDeEQsTUFBTSxJQUFJLEtBQUssQ0FDYixtQkFBbUIsRUFBRSwrREFBK0QsQ0FDckYsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsc0JBQXNCLENBQUMsU0FBUyxDQUFDO1FBQ25ELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQztZQUNoRCxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNwRCxNQUFNLElBQUksS0FBSyxDQUNiLG1CQUFtQixFQUFFLDZEQUE2RCxDQUNuRixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksNkJBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNsRSxJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLGNBQWMsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMvQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksc0JBQXNCLENBQUMsT0FBTztTQUMxRCxDQUFDLENBQUM7UUFFSCx3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzNDLDhIQUE4SDtRQUM5SCxxREFBcUQ7UUFDckQsc0JBQXNCO1FBQ3RCLHFDQUFxQztRQUNyQyxxQ0FBcUM7UUFDckMsTUFBTTtJQUNSLENBQUM7O0FBM0ZILHdDQTRGQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE3NS4xL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1lYzIvbGliL3BsYWNlbWVudC1ncm91cC50c1xuXG5pbXBvcnQgeyBwbGFjZW1lbnRHcm91cCB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5cbi8qKlxuICogT3V0cHV0cyB3aGljaCBtYXkgYmUgcmVnaXN0ZXJlZCBmb3Igb3V0cHV0IHZpYSB0aGUgR3JpZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbGFjZW1lbnRHcm91cE91dHB1dHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhpcyBwbGFjZW1lbnQgZ3JvdXBcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcGxhY2VtZW50R3JvdXBOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGVyZSB5b3VyIGluc3RhbmNlcyBhcmUgcGxhY2VkIG9uIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIFBsYWNlbWVudEdyb3VwU3RyYXRlZ3lcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9wbGFjZW1lbnQtZ3JvdXBzLmh0bWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUGxhY2VtZW50R3JvdXAgZXh0ZW5kcyBJQXdzQ29uc3RydWN0IHtcbiAgLyoqIFN0cm9uZ2x5IHR5cGVkIG91dHB1dHMgKi9cbiAgcmVhZG9ubHkgcGxhY2VtZW50R3JvdXBPdXRwdXRzOiBQbGFjZW1lbnRHcm91cE91dHB1dHM7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoaXMgcGxhY2VtZW50IGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHBsYWNlbWVudEdyb3VwTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHBhcnRpdGlvbnMuIFZhbGlkIG9ubHkgd2hlbiBTdHJhdGVneSBpcyBzZXQgdG8gUEFSVElUSU9OLlxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICByZWFkb25seSBwYXJ0aXRpb25zPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBQbGFjZXMgaW5zdGFuY2VzIG9uIGRpc3RpbmN0IGhhcmR3YXJlLiBTcHJlYWQgcGxhY2VtZW50IGdyb3VwcyBhcmUgcmVjb21tZW5kZWQgZm9yIGFwcGxpY2F0aW9uc1xuICAgKiB0aGF0IGhhdmUgYSBzbWFsbCBudW1iZXIgb2YgY3JpdGljYWwgaW5zdGFuY2VzIHRoYXQgc2hvdWxkIGJlIGtlcHQgc2VwYXJhdGUgZnJvbSBlYWNoIG90aGVyLlxuICAgKiBMYXVuY2hpbmcgaW5zdGFuY2VzIGluIGEgc3ByZWFkIGxldmVsIHBsYWNlbWVudCBncm91cCByZWR1Y2VzIHRoZSByaXNrIG9mIHNpbXVsdGFuZW91cyBmYWlsdXJlc1xuICAgKiB0aGF0IG1pZ2h0IG9jY3VyIHdoZW4gaW5zdGFuY2VzIHNoYXJlIHRoZSBzYW1lIGVxdWlwbWVudC5cbiAgICogU3ByZWFkIGxldmVsIHBsYWNlbWVudCBncm91cHMgcHJvdmlkZSBhY2Nlc3MgdG8gZGlzdGluY3QgaGFyZHdhcmUsXG4gICAqIGFuZCBhcmUgdGhlcmVmb3JlIHN1aXRhYmxlIGZvciBtaXhpbmcgaW5zdGFuY2UgdHlwZXMgb3IgbGF1bmNoaW5nIGluc3RhbmNlcyBvdmVyIHRpbWUuXG4gICAqIElmIHlvdSBzdGFydCBvciBsYXVuY2ggYW4gaW5zdGFuY2UgaW4gYSBzcHJlYWQgcGxhY2VtZW50IGdyb3VwIGFuZCB0aGVyZSBpcyBpbnN1ZmZpY2llbnRcbiAgICogdW5pcXVlIGhhcmR3YXJlIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3QsIHRoZSByZXF1ZXN0IGZhaWxzLiBBbWF6b24gRUMyIG1ha2VzIG1vcmUgZGlzdGluY3QgaGFyZHdhcmVcbiAgICogYXZhaWxhYmxlIG92ZXIgdGltZSwgc28geW91IGNhbiB0cnkgeW91ciByZXF1ZXN0IGFnYWluIGxhdGVyLlxuICAgKiBQbGFjZW1lbnQgZ3JvdXBzIGNhbiBzcHJlYWQgaW5zdGFuY2VzIGFjcm9zcyByYWNrcyBvciBob3N0cy5cbiAgICogWW91IGNhbiB1c2UgaG9zdCBsZXZlbCBzcHJlYWQgcGxhY2VtZW50IGdyb3VwcyBvbmx5IHdpdGggQVdTIE91dHBvc3RzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHNwcmVhZCBsZXZlbFxuICAgKi9cbiAgcmVhZG9ubHkgc3ByZWFkTGV2ZWw/OiBQbGFjZW1lbnRHcm91cFNwcmVhZExldmVsO1xuXG4gIC8qKlxuICAgKiBXaGljaCBzdHJhdGVneSB0byB1c2Ugd2hlbiBsYXVuY2hpbmcgaW5zdGFuY2VzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYFBsYWNlbWVudEdyb3VwU3RyYXRlZ3kuUEFSVElUSU9OYCBpZiBgcGFydGl0aW9uc2AgaXMgZGVmaW5lZCwgYENMVVNURVJgIG90aGVyd2lzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RyYXRlZ3k/OiBQbGFjZW1lbnRHcm91cFN0cmF0ZWd5O1xufVxuXG4vKipcbiAqIFByb3BzIGZvciBhIFBsYWNlbWVudEdyb3VwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxhY2VtZW50R3JvdXBQcm9wcyBleHRlbmRzIEF3c0NvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIHRoZSBuYW1lIG9mIHRoaXMgcGxhY2VtZW50IGdyb3VwXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZ2VuZXJhdGVkIGJ5IENGTlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBwbGFjZW1lbnRHcm91cE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcGFydGl0aW9ucy4gVmFsaWQgb25seSB3aGVuIFN0cmF0ZWd5IGlzIHNldCB0byBwYXJ0aXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IHBhcnRpdGlvbnM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFBsYWNlcyBpbnN0YW5jZXMgb24gZGlzdGluY3QgaGFyZHdhcmUuIFNwcmVhZCBwbGFjZW1lbnQgZ3JvdXBzIGFyZSByZWNvbW1lbmRlZCBmb3IgYXBwbGljYXRpb25zXG4gICAqIHRoYXQgaGF2ZSBhIHNtYWxsIG51bWJlciBvZiBjcml0aWNhbCBpbnN0YW5jZXMgdGhhdCBzaG91bGQgYmUga2VwdCBzZXBhcmF0ZSBmcm9tIGVhY2ggb3RoZXIuXG4gICAqIExhdW5jaGluZyBpbnN0YW5jZXMgaW4gYSBzcHJlYWQgbGV2ZWwgcGxhY2VtZW50IGdyb3VwIHJlZHVjZXMgdGhlIHJpc2sgb2Ygc2ltdWx0YW5lb3VzIGZhaWx1cmVzXG4gICAqIHRoYXQgbWlnaHQgb2NjdXIgd2hlbiBpbnN0YW5jZXMgc2hhcmUgdGhlIHNhbWUgZXF1aXBtZW50LlxuICAgKiBTcHJlYWQgbGV2ZWwgcGxhY2VtZW50IGdyb3VwcyBwcm92aWRlIGFjY2VzcyB0byBkaXN0aW5jdCBoYXJkd2FyZSxcbiAgICogYW5kIGFyZSB0aGVyZWZvcmUgc3VpdGFibGUgZm9yIG1peGluZyBpbnN0YW5jZSB0eXBlcyBvciBsYXVuY2hpbmcgaW5zdGFuY2VzIG92ZXIgdGltZS5cbiAgICogSWYgeW91IHN0YXJ0IG9yIGxhdW5jaCBhbiBpbnN0YW5jZSBpbiBhIHNwcmVhZCBwbGFjZW1lbnQgZ3JvdXAgYW5kIHRoZXJlIGlzIGluc3VmZmljaWVudFxuICAgKiB1bmlxdWUgaGFyZHdhcmUgdG8gZnVsZmlsbCB0aGUgcmVxdWVzdCwgdGhlIHJlcXVlc3QgZmFpbHMuIEFtYXpvbiBFQzIgbWFrZXMgbW9yZSBkaXN0aW5jdCBoYXJkd2FyZVxuICAgKiBhdmFpbGFibGUgb3ZlciB0aW1lLCBzbyB5b3UgY2FuIHRyeSB5b3VyIHJlcXVlc3QgYWdhaW4gbGF0ZXIuXG4gICAqIFBsYWNlbWVudCBncm91cHMgY2FuIHNwcmVhZCBpbnN0YW5jZXMgYWNyb3NzIHJhY2tzIG9yIGhvc3RzLlxuICAgKiBZb3UgY2FuIHVzZSBob3N0IGxldmVsIHNwcmVhZCBwbGFjZW1lbnQgZ3JvdXBzIG9ubHkgd2l0aCBBV1MgT3V0cG9zdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc3ByZWFkIGxldmVsXG4gICAqL1xuICByZWFkb25seSBzcHJlYWRMZXZlbD86IFBsYWNlbWVudEdyb3VwU3ByZWFkTGV2ZWw7XG5cbiAgLyoqXG4gICAqIFdoaWNoIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIGxhdW5jaGluZyBpbnN0YW5jZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBgUGxhY2VtZW50R3JvdXBTdHJhdGVneS5QQVJUSVRJT05gIGlmIGBwYXJ0aXRpb25zYCBpcyBkZWZpbmVkLCBgQ0xVU1RFUmAgb3RoZXJ3aXNlXG4gICAqL1xuICByZWFkb25seSBzdHJhdGVneT86IFBsYWNlbWVudEdyb3VwU3RyYXRlZ3k7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBob3cgdGhpcyBwbGFjZW1lbnQgZ3JvdXAgc3ByZWFkcyBpbnN0YW5jZXNcbiAqL1xuZXhwb3J0IGVudW0gUGxhY2VtZW50R3JvdXBTcHJlYWRMZXZlbCB7XG4gIC8qKlxuICAgKiBIb3N0IHNwcmVhZCBsZXZlbCBwbGFjZW1lbnQgZ3JvdXBzIGFyZSBvbmx5IGF2YWlsYWJsZSB3aXRoIEFXUyBPdXRwb3N0cy5cbiAgICogRm9yIGhvc3Qgc3ByZWFkIGxldmVsIHBsYWNlbWVudCBncm91cHMsIHRoZXJlIGFyZSBubyByZXN0cmljdGlvbnMgZm9yIHJ1bm5pbmcgaW5zdGFuY2VzIHBlciBPdXRwb3N0cy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvcGxhY2VtZW50LWdyb3Vwcy1vdXRwb3N0Lmh0bWxcbiAgICovXG4gIEhPU1QgPSBcImhvc3RcIixcblxuICAvKipcbiAgICogRWFjaCBpbnN0YW5jZSBpcyBsYXVuY2hlZCBvbiBhIHNlcGFyYXRlIHJhY2suXG4gICAqIEVhY2ggaGFzIGl0cyBvd24gbmV0d29yayBhbmQgcG93ZXIgc291cmNlLlxuICAgKiBBIHJhY2sgc3ByZWFkIHBsYWNlbWVudCBncm91cCBjYW4gc3BhbiBtdWx0aXBsZSBBdmFpbGFiaWxpdHkgWm9uZXMgaW4gdGhlIHNhbWUgUmVnaW9uLlxuICAgKiBGb3IgcmFjayBzcHJlYWQgbGV2ZWwgcGxhY2VtZW50IGdyb3VwcywgeW91IGNhbiBoYXZlIGEgbWF4aW11bSBvZiBzZXZlbiBydW5uaW5nIGluc3RhbmNlcyBwZXIgQXZhaWxhYmlsaXR5IFpvbmUgcGVyIGdyb3VwLlxuICAgKi9cbiAgUkFDSyA9IFwicmFja1wiLFxufVxuXG4vKipcbiAqIFdoaWNoIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIGxhdW5jaGluZyBpbnN0YW5jZXNcbiAqL1xuZXhwb3J0IGVudW0gUGxhY2VtZW50R3JvdXBTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBQYWNrcyBpbnN0YW5jZXMgY2xvc2UgdG9nZXRoZXIgaW5zaWRlIGFuIEF2YWlsYWJpbGl0eSBab25lLlxuICAgKiBUaGlzIHN0cmF0ZWd5IGVuYWJsZXMgd29ya2xvYWRzIHRvIGFjaGlldmUgdGhlIGxvdy1sYXRlbmN5IG5ldHdvcmtcbiAgICogcGVyZm9ybWFuY2UgbmVjZXNzYXJ5IGZvciB0aWdodGx5LWNvdXBsZWQgbm9kZS10by1ub2RlIGNvbW11bmljYXRpb24gdGhhdFxuICAgKiBpcyB0eXBpY2FsIG9mIGhpZ2gtcGVyZm9ybWFuY2UgY29tcHV0aW5nIChIUEMpIGFwcGxpY2F0aW9ucy5cbiAgICovXG4gIENMVVNURVIgPSBcImNsdXN0ZXJcIixcblxuICAvKipcbiAgICogU3ByZWFkcyB5b3VyIGluc3RhbmNlcyBhY3Jvc3MgbG9naWNhbCBwYXJ0aXRpb25zIHN1Y2ggdGhhdCBncm91cHMgb2YgaW5zdGFuY2VzXG4gICAqIGluIG9uZSBwYXJ0aXRpb24gZG8gbm90IHNoYXJlIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIHdpdGggZ3JvdXBzIG9mIGluc3RhbmNlc1xuICAgKiBpbiBkaWZmZXJlbnQgcGFydGl0aW9ucy5cbiAgICpcbiAgICogVGhpcyBzdHJhdGVneSBpcyB0eXBpY2FsbHkgdXNlZCBieSBsYXJnZSBkaXN0cmlidXRlZCBhbmQgcmVwbGljYXRlZCB3b3JrbG9hZHMsXG4gICAqIHN1Y2ggYXMgSGFkb29wLCBDYXNzYW5kcmEsIGFuZCBLYWZrYS5cbiAgICovXG4gIFBBUlRJVElPTiA9IFwicGFydGl0aW9uXCIsXG5cbiAgLyoqXG4gICAqIFN0cmljdGx5IHBsYWNlcyBhIHNtYWxsIGdyb3VwIG9mIGluc3RhbmNlcyBhY3Jvc3MgZGlzdGluY3QgdW5kZXJseWluZyBoYXJkd2FyZVxuICAgKiB0byByZWR1Y2UgY29ycmVsYXRlZCBmYWlsdXJlcy5cbiAgICovXG4gIFNQUkVBRCA9IFwic3ByZWFkXCIsXG59XG5cbi8qKlxuICogRGVmaW5lcyBhIHBsYWNlbWVudCBncm91cC4gUGxhY2VtZW50IGdyb3VwcyBnaXZlIHlvdSBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyXG4gKiB3aGVyZSB5b3VyIGluc3RhbmNlcyBhcmUgcHJvdmlzaW9uZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBQbGFjZW1lbnRHcm91cFxuICBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2VcbiAgaW1wbGVtZW50cyBJUGxhY2VtZW50R3JvdXBcbntcbiAgLyoqXG4gICAqIEltcG9ydCBhIFBsYWNlbWVudEdyb3VwIGJ5IGl0cyBhcm5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVBsYWNlbWVudEdyb3VwTmFtZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcGxhY2VtZW50R3JvdXBOYW1lOiBzdHJpbmcsXG4gICk6IElQbGFjZW1lbnRHcm91cCB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElQbGFjZW1lbnRHcm91cCB7XG4gICAgICBwdWJsaWMgZ2V0IHBsYWNlbWVudEdyb3VwT3V0cHV0cygpOiBQbGFjZW1lbnRHcm91cE91dHB1dHMge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudEdyb3VwTmFtZTogdGhpcy5wbGFjZW1lbnRHcm91cE5hbWUsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYWNlbWVudEdyb3VwT3V0cHV0cztcbiAgICAgIH1cbiAgICAgIHB1YmxpYyByZWFkb25seSBwbGFjZW1lbnRHcm91cE5hbWUgPSBwbGFjZW1lbnRHcm91cE5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogcGxhY2VtZW50R3JvdXAuUGxhY2VtZW50R3JvdXA7XG5cbiAgcHVibGljIHJlYWRvbmx5IHBhcnRpdGlvbnM/OiBudW1iZXI7XG4gIHB1YmxpYyByZWFkb25seSBzcHJlYWRMZXZlbD86IFBsYWNlbWVudEdyb3VwU3ByZWFkTGV2ZWw7XG4gIHB1YmxpYyByZWFkb25seSBzdHJhdGVneT86IFBsYWNlbWVudEdyb3VwU3RyYXRlZ3k7XG4gIHB1YmxpYyBnZXQgcGxhY2VtZW50R3JvdXBPdXRwdXRzKCk6IFBsYWNlbWVudEdyb3VwT3V0cHV0cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBsYWNlbWVudEdyb3VwTmFtZTogdGhpcy5wbGFjZW1lbnRHcm91cE5hbWUsXG4gICAgfTtcbiAgfVxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMucGxhY2VtZW50R3JvdXBPdXRwdXRzO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IHBsYWNlbWVudEdyb3VwTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQbGFjZW1lbnRHcm91cFByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgICBjb25zdCBwbGFjZW1lbnRHcm91cE5hbWUgPVxuICAgICAgcHJvcHMucGxhY2VtZW50R3JvdXBOYW1lIHx8XG4gICAgICB0aGlzLnN0YWNrLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgIHByZWZpeDogdGhpcy5ncmlkVVVJRCxcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5wYXJ0aXRpb25zID0gcHJvcHMucGFydGl0aW9ucztcbiAgICB0aGlzLnNwcmVhZExldmVsID0gcHJvcHMuc3ByZWFkTGV2ZWw7XG4gICAgdGhpcy5zdHJhdGVneSA9IHByb3BzPy5zdHJhdGVneTtcblxuICAgIGlmICh0aGlzLnBhcnRpdGlvbnMgJiYgcHJvcHMuc3RyYXRlZ3kpIHtcbiAgICAgIGlmIChwcm9wcy5zdHJhdGVneSAhPT0gUGxhY2VtZW50R3JvdXBTdHJhdGVneS5QQVJUSVRJT04pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBQbGFjZW1lbnRHcm91cCAnJHtpZH0nIGNhbiBvbmx5IHNwZWNpZnkgJ3BhcnRpdGlvbnMnIHdpdGggdGhlICdQQVJUSVRJT04nIHN0cmF0ZWd5YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucGFydGl0aW9ucyAmJiAhcHJvcHMuc3RyYXRlZ3kpIHtcbiAgICAgIHRoaXMuc3RyYXRlZ3kgPSBQbGFjZW1lbnRHcm91cFN0cmF0ZWd5LlBBUlRJVElPTjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zcHJlYWRMZXZlbCkge1xuICAgICAgaWYgKCFwcm9wcy5zdHJhdGVneSkge1xuICAgICAgICB0aGlzLnN0cmF0ZWd5ID0gUGxhY2VtZW50R3JvdXBTdHJhdGVneS5TUFJFQUQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zdHJhdGVneSAhPT0gUGxhY2VtZW50R3JvdXBTdHJhdGVneS5TUFJFQUQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBQbGFjZW1lbnRHcm91cCAnJHtpZH0nIGNhbiBvbmx5IHNwZWNpZnkgJ3NwcmVhZExldmVsJyB3aXRoIHRoZSAnU1BSRUFEJyBzdHJhdGVneWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBwbGFjZW1lbnRHcm91cC5QbGFjZW1lbnRHcm91cCh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIG5hbWU6IHBsYWNlbWVudEdyb3VwTmFtZSxcbiAgICAgIHBhcnRpdGlvbkNvdW50OiB0aGlzLnBhcnRpdGlvbnMsXG4gICAgICBzcHJlYWRMZXZlbDogdGhpcy5zcHJlYWRMZXZlbCxcbiAgICAgIHN0cmF0ZWd5OiB0aGlzLnN0cmF0ZWd5ID8/IFBsYWNlbWVudEdyb3VwU3RyYXRlZ3kuQ0xVU1RFUixcbiAgICB9KTtcblxuICAgIC8vIFRPRE86IHVzZSBlbnZpcm9ubWVudC1zZW5zaXRpdmUgdG9rZW4gZm9yIHJlc291cmNlJ3MgXCJBUk5cIiBhdHRyaWJ1dGU/XG4gICAgdGhpcy5wbGFjZW1lbnRHcm91cE5hbWUgPSB0aGlzLnJlc291cmNlLmlkO1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL2EyYzYzM2YxZTY5ODI0OTQ5NmYxMTMzODMxMmFiNDJiZDdiMWU0ZjAvcGFja2FnZXMvYXdzLWNkay1saWIvY29yZS9saWIvcmVzb3VyY2UudHMjTDI4OFxuICAgIC8vIHRoaXMuZ2V0UmVzb3VyY2VBcm5BdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5uYW1lLCB7XG4gICAgLy8gICBzZXJ2aWNlOiBcImJhdGNoXCIsXG4gICAgLy8gICByZXNvdXJjZTogXCJjb21wdXRlLWVudmlyb25tZW50XCIsXG4gICAgLy8gICByZXNvdXJjZU5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgIC8vIH0pO1xuICB9XG59XG4iXX0=
@@ -349,7 +349,7 @@ class Port {
349
349
  }
350
350
  exports.Port = Port;
351
351
  _a = JSII_RTTI_SYMBOL_1;
352
- Port[_a] = { fqn: "terraconstructs.aws.compute.Port", version: "0.1.9" };
352
+ Port[_a] = { fqn: "terraconstructs.aws.compute.Port", version: "0.2.0" };
353
353
  /** Well-known SSH port (TCP 22) */
354
354
  Port.SSH = Port.tcp(22);
355
355
  /** Well-known SMTP port (TCP 25) */
@@ -110,5 +110,5 @@ class PrefixList extends PrefixListBase {
110
110
  }
111
111
  exports.PrefixList = PrefixList;
112
112
  _a = JSII_RTTI_SYMBOL_1;
113
- PrefixList[_a] = { fqn: "terraconstructs.aws.compute.PrefixList", version: "0.1.9" };
113
+ PrefixList[_a] = { fqn: "terraconstructs.aws.compute.PrefixList", version: "0.2.0" };
114
114
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZml4LWxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvcHJlZml4LWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrRkFBK0Y7QUFFL0Ysc0RBQTJEO0FBQzNELGlDQUE2QjtBQUU3QixvREFJMEI7QUE0QjFCOztHQUVHO0FBQ0gsSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLCtCQUFjLENBQUE7SUFDZCwrQkFBYyxDQUFBO0FBQ2hCLENBQUMsRUFIVyxhQUFhLDZCQUFiLGFBQWEsUUFHeEI7QUEyQ0Q7O0dBRUc7QUFDSCxNQUFlLGNBQWUsU0FBUSxnQ0FBZ0I7SUFDcEQsSUFBVyxpQkFBaUI7UUFDMUIsT0FBTztZQUNMLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtTQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUNELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0NBT0Y7QUFFRDs7O0dBR0c7QUFDSCxNQUFhLFVBQVcsU0FBUSxjQUFjO0lBQzVDOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDNUIsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLFlBQW9CO1FBRXBCLE1BQU0sTUFBTyxTQUFRLGdDQUFnQjtZQUFyQzs7Z0JBU2tCLGlCQUFZLEdBQUcsWUFBWSxDQUFDO1lBQzlDLENBQUM7WUFUQyxJQUFXLGlCQUFpQjtnQkFDMUIsT0FBTztvQkFDTCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7aUJBQ2hDLENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBVyxPQUFPO2dCQUNoQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUNoQyxDQUFDO1NBRUY7UUFDRCxPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBMENELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEIsTUFBTSxjQUFjLEdBQ2xCLEtBQUssRUFBRSxjQUFjO1lBQ3JCLFlBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ2YsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFO29CQUNsQyxTQUFTLEVBQUUsR0FBRztvQkFDZCx3QkFBd0IsRUFBRSxLQUFLO2lCQUNoQyxDQUFDO2FBQ0wsQ0FBQyxDQUFDO1FBRUwsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztnQkFDL0MsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1lBQ2pFLENBQUM7WUFDRCxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztZQUNyRSxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBRXJDLElBQUksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLElBQUksS0FBSyxFQUFFLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQzlCLG9EQUFvRDtZQUNwRCxJQUFJLEtBQUssRUFBRSxhQUFhLEtBQUssYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNqRCxNQUFNLFNBQVMsR0FDYixvaUNBQW9pQyxDQUFDO2dCQUN2aUMsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUMvRCxDQUFDO2dCQUNILENBQUM7Z0JBQ0Qsb0RBQW9EO1lBQ3RELENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLFNBQVMsR0FDYiw4REFBOEQsQ0FBQztnQkFDakUsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUMvRCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBRUQsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDM0MsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxtQ0FBb0IsQ0FBQyxvQkFBb0IsQ0FDM0QsSUFBSSxFQUNKLFVBQVUsRUFDVjtZQUNFLGFBQWEsRUFBRSxLQUFLLEVBQUUsYUFBYSxJQUFJLGFBQWEsQ0FBQyxLQUFLO1lBQzFELFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxJQUFJLGlCQUFpQjtZQUNsRCxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDekIsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLElBQUksRUFBRTtTQUM1QixDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFDdkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7SUFDbkQsQ0FBQzs7QUFqSUgsZ0NBa0lDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTc1LjEvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWVjMi9saWIvcHJlZml4LWxpc3QudHNcblxuaW1wb3J0IHsgZWMyTWFuYWdlZFByZWZpeExpc3QgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgTGF6eSB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIElBd3NDb25zdHJ1Y3QsXG4gIEF3c0NvbnN0cnVjdEJhc2UsXG4gIEF3c0NvbnN0cnVjdFByb3BzLFxufSBmcm9tIFwiLi4vYXdzLWNvbnN0cnVjdFwiO1xuXG4vKipcbiAqIE91dHB1dHMgd2hpY2ggbWF5IGJlIHJlZ2lzdGVyZWQgZm9yIG91dHB1dCB2aWEgdGhlIEdyaWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZml4TGlzdE91dHB1dHMge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBwcmVmaXggbGlzdFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBwcmVmaXhMaXN0SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHByZWZpeCBsaXN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVByZWZpeExpc3QgZXh0ZW5kcyBJQXdzQ29uc3RydWN0IHtcbiAgLyoqIHN0cm9uZ2x5IHR5cGVkIG91dHB1dHMgKi9cbiAgcmVhZG9ubHkgcHJlZml4TGlzdE91dHB1dHM6IFByZWZpeExpc3RPdXRwdXRzO1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBwcmVmaXggbGlzdFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBwcmVmaXhMaXN0SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgSVAgYWRkcmVzcyB0eXBlLlxuICovXG5leHBvcnQgZW51bSBBZGRyZXNzRmFtaWx5IHtcbiAgSVBfVjQgPSBcIklQdjRcIixcbiAgSVBfVjYgPSBcIklQdjZcIixcbn1cblxuLyoqXG4gKiBPcHRpb25zIHRvIGFkZCBhIHByZWZpeCBsaXN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZml4TGlzdE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgZm9yIHRoZSBwcmVmaXggbGlzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgQXV0b21hdGljYWxseS1jYWxjdWxhdGVkXG4gICAqL1xuICByZWFkb25seSBtYXhFbnRyaWVzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgcHJlZml4IGxpc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZml4TGlzdFByb3BzIGV4dGVuZHMgUHJlZml4TGlzdE9wdGlvbnMsIEF3c0NvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBhZGRyZXNzIGZhbWlseSBvZiB0aGUgcHJlZml4IGxpc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IEFkZHJlc3NGYW1pbHkuSVBfVjRcbiAgICovXG4gIHJlYWRvbmx5IGFkZHJlc3NGYW1pbHk/OiBBZGRyZXNzRmFtaWx5O1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcHJlZml4IGxpc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSBhbiBleHBsaWNpdCBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZml4TGlzdE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIGVudHJpZXMgZm9yIHRoZSBwcmVmaXggbGlzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IGVudHJpZXM/OiBlYzJNYW5hZ2VkUHJlZml4TGlzdC5FYzJNYW5hZ2VkUHJlZml4TGlzdEVudHJ5W107XG59XG5cbi8qKlxuICogVGhlIGJhc2UgY2xhc3MgZm9yIGEgcHJlZml4IGxpc3RcbiAqL1xuYWJzdHJhY3QgY2xhc3MgUHJlZml4TGlzdEJhc2UgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSVByZWZpeExpc3Qge1xuICBwdWJsaWMgZ2V0IHByZWZpeExpc3RPdXRwdXRzKCk6IFByZWZpeExpc3RPdXRwdXRzIHtcbiAgICByZXR1cm4ge1xuICAgICAgcHJlZml4TGlzdElkOiB0aGlzLnByZWZpeExpc3RJZCxcbiAgICB9O1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wcmVmaXhMaXN0T3V0cHV0cztcbiAgfVxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBwcmVmaXggbGlzdFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgcHJlZml4TGlzdElkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBtYW5hZ2VkIHByZWZpeCBsaXN0LlxuICogQHJlc291cmNlIEFXUzo6RUMyOjpQcmVmaXhMaXN0XG4gKi9cbmV4cG9ydCBjbGFzcyBQcmVmaXhMaXN0IGV4dGVuZHMgUHJlZml4TGlzdEJhc2Uge1xuICAvKipcbiAgICogTG9vayB1cCBwcmVmaXggbGlzdCBieSBpZC5cbiAgICpcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVByZWZpeExpc3RJZChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJlZml4TGlzdElkOiBzdHJpbmcsXG4gICk6IElQcmVmaXhMaXN0IHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSVByZWZpeExpc3Qge1xuICAgICAgcHVibGljIGdldCBwcmVmaXhMaXN0T3V0cHV0cygpOiBQcmVmaXhMaXN0T3V0cHV0cyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcHJlZml4TGlzdElkOiB0aGlzLnByZWZpeExpc3RJZCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJlZml4TGlzdE91dHB1dHM7XG4gICAgICB9XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcHJlZml4TGlzdElkID0gcHJlZml4TGlzdElkO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHByZWZpeCBsaXN0XG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcmVmaXhMaXN0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHByZWZpeCBsaXN0XG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcmVmaXhMaXN0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBwcmVmaXggbGlzdFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJlZml4TGlzdEFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgb3duZXIgSUQgb2YgdGhlIHByZWZpeCBsaXN0XG4gICAqXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb3duZXJJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgcHJlZml4IGxpc3RcbiAgICpcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2ZXJzaW9uOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBhZGRyZXNzIGZhbWlseSBvZiB0aGUgcHJlZml4IGxpc3RcbiAgICpcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhZGRyZXNzRmFtaWx5OiBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBlYzJNYW5hZ2VkUHJlZml4TGlzdC5FYzJNYW5hZ2VkUHJlZml4TGlzdDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFByZWZpeExpc3RQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIGNvbnN0IHByZWZpeExpc3ROYW1lID1cbiAgICAgIHByb3BzPy5wcmVmaXhMaXN0TmFtZSA/P1xuICAgICAgTGF6eS5zdHJpbmdWYWx1ZSh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgdGhpcy5zdGFjay51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge1xuICAgICAgICAgICAgbWF4TGVuZ3RoOiAyNTUsXG4gICAgICAgICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6IFwiLi1fXCIsXG4gICAgICAgICAgfSksXG4gICAgICB9KTtcblxuICAgIGlmIChwcmVmaXhMaXN0TmFtZSkge1xuICAgICAgaWYgKHByZWZpeExpc3ROYW1lLnN0YXJ0c1dpdGgoXCJjb20uYW1hem9uYXdzXCIpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSBuYW1lIGNhbm5vdCBzdGFydCB3aXRoICdjb20uYW1hem9uYXdzLidcIik7XG4gICAgICB9XG4gICAgICBpZiAocHJlZml4TGlzdE5hbWUubGVuZ3RoID4gMjU1KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxlbmd0aHMgZXhjZWVkaW5nIDI1NSBjaGFyYWN0ZXJzIGNhbm5vdCBiZSBzZXQuXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucHJlZml4TGlzdE5hbWUgPSBwcmVmaXhMaXN0TmFtZTtcblxuICAgIGxldCBkZWZhdWx0TWF4RW50cmllcyA9IDE7XG4gICAgaWYgKHByb3BzPy5lbnRyaWVzICYmIHByb3BzLmVudHJpZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZW50cmllcyA9IHByb3BzLmVudHJpZXM7XG4gICAgICAvLyBSZWd1bGFyIGV4cHJlc3Npb25zIGZvciB2YWxpZGF0aW5nIElQdjYgYWRkcmVzc2VzXG4gICAgICBpZiAocHJvcHM/LmFkZHJlc3NGYW1pbHkgPT09IEFkZHJlc3NGYW1pbHkuSVBfVjYpIHtcbiAgICAgICAgY29uc3QgaXB2NlJlZ2V4ID1cbiAgICAgICAgICAvXnMqKCgoWzAtOUEtRmEtZl17MSw0fTopezd9KFswLTlBLUZhLWZdezEsNH18OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezZ9KDpbMC05QS1GYS1mXXsxLDR9fCgoMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSguKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkpezN9KXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7NX0oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSwyfSl8OigoMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSguKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkpezN9KXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7NH0oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSwzfSl8KCg6WzAtOUEtRmEtZl17MSw0fSk/OigoMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSguKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkpezN9KSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezN9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsNH0pfCgoOlswLTlBLUZhLWZdezEsNH0pezAsMn06KCgyNVswLTVdfDJbMC00XWR8MWRkfFsxLTldP2QpKC4oMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSl7M30pKXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7Mn0oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSw1fSl8KCg6WzAtOUEtRmEtZl17MSw0fSl7MCwzfTooKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkoLigyNVswLTVdfDJbMC00XWR8MWRkfFsxLTldP2QpKXszfSkpfDopKXwoKFswLTlBLUZhLWZdezEsNH06KXsxfSgoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDZ9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDR9OigoMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSguKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkpezN9KSl8OikpfCg6KCgoOlswLTlBLUZhLWZdezEsNH0pezEsN30pfCgoOlswLTlBLUZhLWZdezEsNH0pezAsNX06KCgyNVswLTVdfDJbMC00XWR8MWRkfFsxLTldP2QpKC4oMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSl7M30pKXw6KSkpKCUuKyk/cyooXFwvKFswLTldfFsxLTldWzAtOV18MVswLTFdWzAtOV18MTJbMC04XSkpPyQvaTtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgaWYgKCFpcHY2UmVnZXgudGVzdChlbnRyeS5jaWRyKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIElQdjYgYWRkcmVzcyByYW5nZTogJHtlbnRyeS5jaWRyfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBSZWd1bGFyIGV4cHJlc3Npb25zIGZvciB2YWxpZGF0aW5nIElQdjQgYWRkcmVzc2VzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpcHY0UmVnZXggPVxuICAgICAgICAgIC9eKFswLTldezEsM31cXC4pezN9WzAtOV17MSwzfShcXC8oWzAtOV18WzEtMl1bMC05XXwzWzAtMl0pKT8kL2k7XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgIGlmICghaXB2NFJlZ2V4LnRlc3QoZW50cnkuY2lkcikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBJUHY0IGFkZHJlc3MgcmFuZ2U6ICR7ZW50cnkuY2lkcn1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZGVmYXVsdE1heEVudHJpZXMgPSBwcm9wcy5lbnRyaWVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IGVjMk1hbmFnZWRQcmVmaXhMaXN0LkVjMk1hbmFnZWRQcmVmaXhMaXN0KFxuICAgICAgdGhpcyxcbiAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzc0ZhbWlseTogcHJvcHM/LmFkZHJlc3NGYW1pbHkgfHwgQWRkcmVzc0ZhbWlseS5JUF9WNCxcbiAgICAgICAgbWF4RW50cmllczogcHJvcHM/Lm1heEVudHJpZXMgfHwgZGVmYXVsdE1heEVudHJpZXMsXG4gICAgICAgIG5hbWU6IHRoaXMucHJlZml4TGlzdE5hbWUsXG4gICAgICAgIGVudHJ5OiBwcm9wcz8uZW50cmllcyB8fCBbXSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHRoaXMucHJlZml4TGlzdElkID0gdGhpcy5yZXNvdXJjZS5pZDtcbiAgICB0aGlzLnByZWZpeExpc3RBcm4gPSB0aGlzLnJlc291cmNlLmFybjtcbiAgICB0aGlzLm93bmVySWQgPSB0aGlzLnJlc291cmNlLm93bmVySWQ7XG4gICAgdGhpcy52ZXJzaW9uID0gdGhpcy5yZXNvdXJjZS52ZXJzaW9uO1xuICAgIHRoaXMuYWRkcmVzc0ZhbWlseSA9IHRoaXMucmVzb3VyY2UuYWRkcmVzc0ZhbWlseTtcbiAgfVxufVxuIl19
@@ -55,5 +55,5 @@ class RequestValidator extends aws_construct_1.AwsConstructBase {
55
55
  }
56
56
  exports.RequestValidator = RequestValidator;
57
57
  _a = JSII_RTTI_SYMBOL_1;
58
- RequestValidator[_a] = { fqn: "terraconstructs.aws.compute.RequestValidator", version: "0.1.9" };
58
+ RequestValidator[_a] = { fqn: "terraconstructs.aws.compute.RequestValidator", version: "0.2.0" };
59
59
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdHZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9yZXF1ZXN0dmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0RBQWlFO0FBRWpFLHVDQUE4QztBQUM5Qyx5Q0FBeUM7QUFDekMsb0RBSTBCO0FBNEMxQixNQUFNLHdCQUNKLFNBQVEsZ0NBQWdCO0lBS3hCLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLGtCQUEwQixFQUMxQixLQUF5QjtRQUV6QixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPO1lBQ0wsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtTQUM1QyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBRUQsTUFBYSxnQkFDWCxTQUFRLGdDQUFnQjtJQUdqQixNQUFNLENBQUMsc0JBQXNCLENBQ2xDLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixrQkFBMEI7UUFFMUIsaUVBQWlFO1FBQ2pFLHVEQUF1RDtRQUN2RCxPQUFPLElBQUksd0JBQXdCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFXRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTRCO1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLE1BQU0sYUFBYSxHQUNqQixLQUFLLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRSxNQUFNLGNBQWMsR0FDbEI7WUFDRSxJQUFJLEVBQUUsYUFBYTtZQUNuQixTQUFTLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTO1lBQ2xDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxtQkFBbUI7WUFDOUMseUJBQXlCLEVBQUUsS0FBSyxDQUFDLHlCQUF5QjtTQUMzRCxDQUFDO1FBRUosSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHlDQUEwQixDQUFDLDBCQUEwQixDQUN2RSxJQUFJLEVBQ0osVUFBVSxFQUNWLGNBQWMsQ0FDZixDQUFDO1FBRUYsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBRTNDLDhFQUE4RTtRQUM5RSwrREFBK0Q7UUFDL0QsTUFBTSxVQUFVLEdBQ2QsS0FBSyxDQUFDLE9BQU8sWUFBWSxpQkFBTztZQUM5QixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0I7WUFDaEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNoQixJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdDLHFFQUFxRTtZQUNyRSxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFDeEQsNERBQTREO1FBQzlELENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU87WUFDTCxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1NBQzVDLENBQUM7SUFDSixDQUFDOztBQTlESCw0Q0ErREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhcGlHYXRld2F5UmVxdWVzdFZhbGlkYXRvciB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgSVJlc3RBcGksIFJlc3RBcGkgfSBmcm9tIFwiLi9yZXN0YXBpXCI7XG4vLyBpbXBvcnQgeyBGbiB9IGZyb20gXCIuLi8uLi90ZXJyYS1mdW5jXCI7XG5pbXBvcnQge1xuICBBd3NDb25zdHJ1Y3RCYXNlLFxuICBBd3NDb25zdHJ1Y3RQcm9wcyxcbiAgSUF3c0NvbnN0cnVjdCxcbn0gZnJvbSBcIi4uL2F3cy1jb25zdHJ1Y3RcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJUmVxdWVzdFZhbGlkYXRvciBleHRlbmRzIElBd3NDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogSUQgb2YgdGhlIHJlcXVlc3QgdmFsaWRhdG9yLCBzdWNoIGFzIGFiYzEyM1xuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSByZXF1ZXN0VmFsaWRhdG9ySWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0VmFsaWRhdG9yT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGlzIHJlcXVlc3QgdmFsaWRhdG9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBmcmllbmRseSBuYW1lIG9mIHRoZSBjb25zdHJ1Y3QuXG4gICAqL1xuICByZWFkb25seSByZXF1ZXN0VmFsaWRhdG9yTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gdmFsaWRhdGUgdGhlIHJlcXVlc3QgYm9keSBhY2NvcmRpbmcgdG9cbiAgICogdGhlIGNvbmZpZ3VyZWQgc2NoZW1hIGZvciB0aGUgdGFyZ2V0ZWQgQVBJIGFuZCBtZXRob2QuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0ZVJlcXVlc3RCb2R5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gdmFsaWRhdGUgcmVxdWVzdCBwYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGVSZXF1ZXN0UGFyYW1ldGVycz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdFZhbGlkYXRvclByb3BzXG4gIGV4dGVuZHMgUmVxdWVzdFZhbGlkYXRvck9wdGlvbnMsXG4gICAgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIHJlc3QgQVBJIHRoYXQgdGhpcyBtb2RlbCBpcyBwYXJ0IG9mLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzdEFwaTogSVJlc3RBcGk7XG59XG5cbmNsYXNzIEltcG9ydGVkUmVxdWVzdFZhbGlkYXRvclxuICBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2VcbiAgaW1wbGVtZW50cyBJUmVxdWVzdFZhbGlkYXRvclxue1xuICBwdWJsaWMgcmVhZG9ubHkgcmVxdWVzdFZhbGlkYXRvcklkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHJlcXVlc3RWYWxpZGF0b3JJZDogc3RyaW5nLFxuICAgIHByb3BzPzogQXdzQ29uc3RydWN0UHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIHRoaXMucmVxdWVzdFZhbGlkYXRvcklkID0gcmVxdWVzdFZhbGlkYXRvcklkO1xuICB9XG5cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB7XG4gICAgICByZXF1ZXN0VmFsaWRhdG9ySWQ6IHRoaXMucmVxdWVzdFZhbGlkYXRvcklkLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlcXVlc3RWYWxpZGF0b3JcbiAgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlXG4gIGltcGxlbWVudHMgSVJlcXVlc3RWYWxpZGF0b3JcbntcbiAgcHVibGljIHN0YXRpYyBmcm9tUmVxdWVzdFZhbGlkYXRvcklkKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICByZXF1ZXN0VmFsaWRhdG9ySWQ6IHN0cmluZyxcbiAgKTogSVJlcXVlc3RWYWxpZGF0b3Ige1xuICAgIC8vIE5vdGU6IEZvciBhIGZ1bGwgQ0RLVEYgaW1wb3J0LCByZXN0QXBpSWQgd291bGQgYWxzbyBiZSBuZWVkZWQuXG4gICAgLy8gVGhpcyBtaXJyb3JzIHRoZSBDREsncyBsaW1pdGVkIGltcG9ydCBmdW5jdGlvbmFsaXR5LlxuICAgIHJldHVybiBuZXcgSW1wb3J0ZWRSZXF1ZXN0VmFsaWRhdG9yKHNjb3BlLCBpZCwgcmVxdWVzdFZhbGlkYXRvcklkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJRCBvZiB0aGUgcmVxdWVzdCB2YWxpZGF0b3IsIHN1Y2ggYXMgYWJjMTIzXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXF1ZXN0VmFsaWRhdG9ySWQ6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlOiBhcGlHYXRld2F5UmVxdWVzdFZhbGlkYXRvci5BcGlHYXRld2F5UmVxdWVzdFZhbGlkYXRvcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmVxdWVzdFZhbGlkYXRvclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBjb25zdCB2YWxpZGF0b3JOYW1lID1cbiAgICAgIHByb3BzLnJlcXVlc3RWYWxpZGF0b3JOYW1lID8/IHRoaXMuc3RhY2sudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMpO1xuICAgIGNvbnN0IHZhbGlkYXRvclByb3BzOiBhcGlHYXRld2F5UmVxdWVzdFZhbGlkYXRvci5BcGlHYXRld2F5UmVxdWVzdFZhbGlkYXRvckNvbmZpZyA9XG4gICAgICB7XG4gICAgICAgIG5hbWU6IHZhbGlkYXRvck5hbWUsXG4gICAgICAgIHJlc3RBcGlJZDogcHJvcHMucmVzdEFwaS5yZXN0QXBpSWQsXG4gICAgICAgIHZhbGlkYXRlUmVxdWVzdEJvZHk6IHByb3BzLnZhbGlkYXRlUmVxdWVzdEJvZHksXG4gICAgICAgIHZhbGlkYXRlUmVxdWVzdFBhcmFtZXRlcnM6IHByb3BzLnZhbGlkYXRlUmVxdWVzdFBhcmFtZXRlcnMsXG4gICAgICB9O1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBhcGlHYXRld2F5UmVxdWVzdFZhbGlkYXRvci5BcGlHYXRld2F5UmVxdWVzdFZhbGlkYXRvcihcbiAgICAgIHRoaXMsXG4gICAgICBcIlJlc291cmNlXCIsXG4gICAgICB2YWxpZGF0b3JQcm9wcyxcbiAgICApO1xuXG4gICAgdGhpcy5yZXF1ZXN0VmFsaWRhdG9ySWQgPSB0aGlzLnJlc291cmNlLmlkO1xuXG4gICAgLy8gVGhlIENESyB2ZXJzaW9uIG9mIFJlcXVlc3RWYWxpZGF0b3IgaW50ZXJhY3RzIHdpdGggdGhlIFJlc3RBcGkncyBkZXBsb3ltZW50XG4gICAgLy8gdG8gZW5zdXJlIGNoYW5nZXMgdG8gdGhlIHZhbGlkYXRvciB0cmlnZ2VyIGEgbmV3IGRlcGxveW1lbnQuXG4gICAgY29uc3QgZGVwbG95bWVudCA9XG4gICAgICBwcm9wcy5yZXN0QXBpIGluc3RhbmNlb2YgUmVzdEFwaVxuICAgICAgICA/IHByb3BzLnJlc3RBcGkubGF0ZXN0RGVwbG95bWVudFxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBpZiAoZGVwbG95bWVudCkge1xuICAgICAgZGVwbG95bWVudC5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy5yZXNvdXJjZSk7XG4gICAgICAvLyBGbi5zaGExKEZuLmpzb25lbmNvZGUoKSkgY2F1c2VzIG5lc3RlZCBUb2tlbnMgYW5kIFJlc29sdmVyIGVycm9ycz9cbiAgICAgIGRlcGxveW1lbnQuYWRkVG9UcmlnZ2Vycyh7IHZhbGlkYXRvcjogdmFsaWRhdG9yUHJvcHMgfSk7XG4gICAgICAvLyBkZXBsb3ltZW50LmFkZFRvTG9naWNhbElkKHsgdmFsaWRhdG9yOiB2YWxpZGF0b3JQcm9wcyB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcXVlc3RWYWxpZGF0b3JJZDogdGhpcy5yZXF1ZXN0VmFsaWRhdG9ySWQsXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -171,7 +171,7 @@ class ResourceBase extends aws_construct_1.AwsConstructBase {
171
171
  }
172
172
  exports.ResourceBase = ResourceBase;
173
173
  _a = JSII_RTTI_SYMBOL_1;
174
- ResourceBase[_a] = { fqn: "terraconstructs.aws.compute.ResourceBase", version: "0.1.9" };
174
+ ResourceBase[_a] = { fqn: "terraconstructs.aws.compute.ResourceBase", version: "0.2.0" };
175
175
  class Resource extends ResourceBase {
176
176
  /**
177
177
  * Import an existing resource
@@ -258,7 +258,7 @@ class Resource extends ResourceBase {
258
258
  }
259
259
  exports.Resource = Resource;
260
260
  _b = JSII_RTTI_SYMBOL_1;
261
- Resource[_b] = { fqn: "terraconstructs.aws.compute.Resource", version: "0.1.9" };
261
+ Resource[_b] = { fqn: "terraconstructs.aws.compute.Resource", version: "0.2.0" };
262
262
  /**
263
263
  * Defines a {proxy+} greedy resource and an ANY method on a route.
264
264
  * @see https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-set-up-simple-proxy.html
@@ -291,7 +291,7 @@ class ProxyResource extends Resource {
291
291
  }
292
292
  exports.ProxyResource = ProxyResource;
293
293
  _c = JSII_RTTI_SYMBOL_1;
294
- ProxyResource[_c] = { fqn: "terraconstructs.aws.compute.ProxyResource", version: "0.1.9" };
294
+ ProxyResource[_c] = { fqn: "terraconstructs.aws.compute.ProxyResource", version: "0.2.0" };
295
295
  function validateResourcePathPart(part, scope) {
296
296
  // strip {} which indicate this is a parameter
297
297
  let validatedPart = part;
@@ -352,7 +352,7 @@ class RestApiBase extends aws_construct_1.AwsConstructBase {
352
352
  }
353
353
  exports.RestApiBase = RestApiBase;
354
354
  _a = JSII_RTTI_SYMBOL_1;
355
- RestApiBase[_a] = { fqn: "terraconstructs.aws.compute.RestApiBase", version: "0.1.9" };
355
+ RestApiBase[_a] = { fqn: "terraconstructs.aws.compute.RestApiBase", version: "0.2.0" };
356
356
  /**
357
357
  * Represents a REST API in Amazon API Gateway, created with an OpenAPI specification.
358
358
  *
@@ -415,7 +415,7 @@ class SpecRestApi extends RestApiBase {
415
415
  }
416
416
  exports.SpecRestApi = SpecRestApi;
417
417
  _b = JSII_RTTI_SYMBOL_1;
418
- SpecRestApi[_b] = { fqn: "terraconstructs.aws.compute.SpecRestApi", version: "0.1.9" };
418
+ SpecRestApi[_b] = { fqn: "terraconstructs.aws.compute.SpecRestApi", version: "0.2.0" };
419
419
  /**
420
420
  * Represents a REST API in Amazon API Gateway.
421
421
  *
@@ -585,7 +585,7 @@ class RestApi extends RestApiBase {
585
585
  }
586
586
  exports.RestApi = RestApi;
587
587
  _c = JSII_RTTI_SYMBOL_1;
588
- RestApi[_c] = { fqn: "terraconstructs.aws.compute.RestApi", version: "0.1.9" };
588
+ RestApi[_c] = { fqn: "terraconstructs.aws.compute.RestApi", version: "0.2.0" };
589
589
  var ApiKeySourceType;
590
590
  (function (ApiKeySourceType) {
591
591
  ApiKeySourceType["HEADER"] = "HEADER";
@@ -63,7 +63,7 @@ class EgressOnlyInternetGateway extends aws_construct_1.AwsConstructBase {
63
63
  }
64
64
  exports.EgressOnlyInternetGateway = EgressOnlyInternetGateway;
65
65
  _a = JSII_RTTI_SYMBOL_1;
66
- EgressOnlyInternetGateway[_a] = { fqn: "terraconstructs.aws.compute.alpha.EgressOnlyInternetGateway", version: "0.1.9" };
66
+ EgressOnlyInternetGateway[_a] = { fqn: "terraconstructs.aws.compute.alpha.EgressOnlyInternetGateway", version: "0.2.0" };
67
67
  /**
68
68
  * Creates an internet gateway
69
69
  * @resource AWS::EC2::InternetGateway
@@ -96,7 +96,7 @@ class InternetGateway extends aws_construct_1.AwsConstructBase {
96
96
  }
97
97
  exports.InternetGateway = InternetGateway;
98
98
  _b = JSII_RTTI_SYMBOL_1;
99
- InternetGateway[_b] = { fqn: "terraconstructs.aws.compute.alpha.InternetGateway", version: "0.1.9" };
99
+ InternetGateway[_b] = { fqn: "terraconstructs.aws.compute.alpha.InternetGateway", version: "0.2.0" };
100
100
  /**
101
101
  * Creates a virtual private gateway
102
102
  * @resource AWS::EC2::VPNGateway
@@ -162,7 +162,7 @@ class VPNGatewayV2 extends aws_construct_1.AwsConstructBase {
162
162
  }
163
163
  exports.VPNGatewayV2 = VPNGatewayV2;
164
164
  _c = JSII_RTTI_SYMBOL_1;
165
- VPNGatewayV2[_c] = { fqn: "terraconstructs.aws.compute.alpha.VPNGatewayV2", version: "0.1.9" };
165
+ VPNGatewayV2[_c] = { fqn: "terraconstructs.aws.compute.alpha.VPNGatewayV2", version: "0.2.0" };
166
166
  /**
167
167
  * Creates a network address translation (NAT) gateway
168
168
  * @resource AWS::EC2::NatGateway
@@ -231,7 +231,7 @@ class NatGateway extends aws_construct_1.AwsConstructBase {
231
231
  }
232
232
  exports.NatGateway = NatGateway;
233
233
  _d = JSII_RTTI_SYMBOL_1;
234
- NatGateway[_d] = { fqn: "terraconstructs.aws.compute.alpha.NatGateway", version: "0.1.9" };
234
+ NatGateway[_d] = { fqn: "terraconstructs.aws.compute.alpha.NatGateway", version: "0.2.0" };
235
235
  /**
236
236
  * Creates a peering connection between two VPCs
237
237
  * @resource AWS::EC2::VPCPeeringConnection
@@ -319,7 +319,7 @@ class VPCPeeringConnection extends aws_construct_1.AwsConstructBase {
319
319
  }
320
320
  exports.VPCPeeringConnection = VPCPeeringConnection;
321
321
  _e = JSII_RTTI_SYMBOL_1;
322
- VPCPeeringConnection[_e] = { fqn: "terraconstructs.aws.compute.alpha.VPCPeeringConnection", version: "0.1.9" };
322
+ VPCPeeringConnection[_e] = { fqn: "terraconstructs.aws.compute.alpha.VPCPeeringConnection", version: "0.2.0" };
323
323
  /**
324
324
  * The gateway or endpoint targeted by the route.
325
325
  */
@@ -337,7 +337,7 @@ class RouteTargetType {
337
337
  }
338
338
  exports.RouteTargetType = RouteTargetType;
339
339
  _f = JSII_RTTI_SYMBOL_1;
340
- RouteTargetType[_f] = { fqn: "terraconstructs.aws.compute.alpha.RouteTargetType", version: "0.1.9" };
340
+ RouteTargetType[_f] = { fqn: "terraconstructs.aws.compute.alpha.RouteTargetType", version: "0.2.0" };
341
341
  /**
342
342
  * Creates a new route with added functionality.
343
343
  * @resource AWS::EC2::Route
@@ -401,7 +401,7 @@ class Route extends aws_construct_1.AwsConstructBase {
401
401
  }
402
402
  exports.Route = Route;
403
403
  _g = JSII_RTTI_SYMBOL_1;
404
- Route[_g] = { fqn: "terraconstructs.aws.compute.alpha.Route", version: "0.1.9" };
404
+ Route[_g] = { fqn: "terraconstructs.aws.compute.alpha.Route", version: "0.2.0" };
405
405
  /**
406
406
  * Creates a route table for the specified VPC
407
407
  * @resource aws_route_table
@@ -444,7 +444,7 @@ class RouteTable extends aws_construct_1.AwsConstructBase {
444
444
  }
445
445
  exports.RouteTable = RouteTable;
446
446
  _h = JSII_RTTI_SYMBOL_1;
447
- RouteTable[_h] = { fqn: "terraconstructs.aws.compute.alpha.RouteTable", version: "0.1.9" };
447
+ RouteTable[_h] = { fqn: "terraconstructs.aws.compute.alpha.RouteTable", version: "0.2.0" };
448
448
  /**
449
449
  * inverse of
450
450
  * https://github.com/hashicorp/terraform-provider-aws/blob/v5.87.0/internal/service/ec2/vpc_route.go#L219-L239
@@ -287,4 +287,3 @@ export declare class Runtime {
287
287
  * The latest Lambda node runtime available by AWS region.
288
288
  */
289
289
  export declare function determineLatestNodeRuntime(scope: Construct): Runtime;
290
- export declare function runtimeLookup(region: string, defaultValue?: string): string;
@@ -3,13 +3,11 @@ var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.Runtime = exports.RuntimeFamily = void 0;
5
5
  exports.determineLatestNodeRuntime = determineLatestNodeRuntime;
6
- exports.runtimeLookup = runtimeLookup;
7
6
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
8
- const cdktf_1 = require("cdktf");
7
+ const region_info_1 = require("@aws-cdk/region-info");
9
8
  // TODO: use @cdktf/provider-docker for bundling
10
9
  const bundling_1 = require("../../bundling");
11
10
  const aws_stack_1 = require("../aws-stack");
12
- const partition_1 = require("../partition");
13
11
  var RuntimeFamily;
14
12
  (function (RuntimeFamily) {
15
13
  RuntimeFamily[RuntimeFamily["NODEJS"] = 0] = "NODEJS";
@@ -49,7 +47,7 @@ class Runtime {
49
47
  }
50
48
  exports.Runtime = Runtime;
51
49
  _a = JSII_RTTI_SYMBOL_1;
52
- Runtime[_a] = { fqn: "terraconstructs.aws.compute.Runtime", version: "0.1.9" };
50
+ Runtime[_a] = { fqn: "terraconstructs.aws.compute.Runtime", version: "0.2.0" };
53
51
  /** A list of all known `Runtime`'s. */
54
52
  Runtime.ALL = new Array();
55
53
  /**
@@ -106,8 +104,7 @@ Runtime.NODEJS_20_X = new Runtime("nodejs20.x", RuntimeFamily.NODEJS, { supports
106
104
  * The latest NodeJS version currently available in ALL regions (not necessarily the latest NodeJS version
107
105
  * available in YOUR region).
108
106
  */
109
- Runtime.NODEJS_LATEST = new Runtime("nodejs22.x", // TODO: review this
110
- RuntimeFamily.NODEJS, { supportsInlineCode: true, isVariable: true });
107
+ Runtime.NODEJS_LATEST = new Runtime("nodejs22.x", RuntimeFamily.NODEJS, { supportsInlineCode: true, isVariable: true });
111
108
  /**
112
109
  * The NodeJS 22.x runtime (nodejs22.x)
113
110
  */
@@ -313,38 +310,10 @@ Runtime.FROM_IMAGE = new Runtime("FROM_IMAGE");
313
310
  function determineLatestNodeRuntime(scope) {
314
311
  // Runtime regional fact should always return a known runtime string that Runtime can index off, but for type
315
312
  // safety we also default it here.
316
- const runtimeName = runtimeLookup(aws_stack_1.AwsStack.ofAwsConstruct(scope).region, Runtime.NODEJS_18_X.name);
313
+ const runtimeName = aws_stack_1.AwsStack.ofAwsConstruct(scope).regionalFact(region_info_1.FactName.LATEST_NODE_RUNTIME, Runtime.NODEJS_22_X.name);
317
314
  return new Runtime(runtimeName, RuntimeFamily.NODEJS, {
318
315
  supportsInlineCode: true,
319
316
  isVariable: true,
320
317
  });
321
318
  }
322
- // Fact Table Mock functions
323
- // https://github.com/aws/aws-cdk/blob/main/packages/aws-cdk-lib/region-info/build-tools/fact-tables.ts
324
- function runtimeLookup(region, defaultValue) {
325
- if (cdktf_1.Token.isUnresolved(region)) {
326
- throw new Error("Cannot determine region partition for unresolved region");
327
- }
328
- const { partition } = (0, partition_1.partitionLookup)(region);
329
- const runtime = LATEST_NODE_RUNTIME_MAP[partition] ?? defaultValue;
330
- if (!runtime) {
331
- throw new Error(`No runtime found for partition ${partition} in region ${region}.`);
332
- }
333
- return runtime;
334
- }
335
- var RuntimeFact;
336
- (function (RuntimeFact) {
337
- RuntimeFact["NODE_18"] = "nodejs18.x";
338
- RuntimeFact["NODE_20"] = "nodejs20.x";
339
- RuntimeFact["NODE_22"] = "nodejs22.x";
340
- })(RuntimeFact || (RuntimeFact = {}));
341
- const LATEST_NODE_RUNTIME_MAP = {
342
- [partition_1.Partition.Default]: RuntimeFact.NODE_22,
343
- [partition_1.Partition.Cn]: RuntimeFact.NODE_22,
344
- [partition_1.Partition.UsGov]: RuntimeFact.NODE_22,
345
- [partition_1.Partition.UsIso]: RuntimeFact.NODE_22,
346
- [partition_1.Partition.UsIsoB]: RuntimeFact.NODE_22,
347
- [partition_1.Partition.UsIsoF]: RuntimeFact.NODE_22,
348
- [partition_1.Partition.EuIsoE]: RuntimeFact.NODE_22,
349
- };
350
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUEwaUJBLGdFQVdDO0FBS0Qsc0NBWUM7O0FBdGtCRCxpQ0FBOEI7QUFFOUIsZ0RBQWdEO0FBQ2hELDZDQUE2QztBQUM3Qyw0Q0FBd0M7QUFDeEMsNENBQTBEO0FBbUMxRCxJQUFZLGFBUVg7QUFSRCxXQUFZLGFBQWE7SUFDdkIscURBQU0sQ0FBQTtJQUNOLGlEQUFJLENBQUE7SUFDSixxREFBTSxDQUFBO0lBQ04sK0RBQVcsQ0FBQTtJQUNYLDZDQUFFLENBQUE7SUFDRixpREFBSSxDQUFBO0lBQ0osbURBQUssQ0FBQTtBQUNQLENBQUMsRUFSVyxhQUFhLDZCQUFiLGFBQWEsUUFReEI7QUFFRDs7Ozs7R0FLRztBQUNILE1BQWEsT0FBTztJQStjbEIsWUFDRSxJQUFZLEVBQ1osTUFBc0IsRUFDdEIsUUFBNEIsRUFBRTtRQUU5QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztRQUNyRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBRXJDLE1BQU0sU0FBUyxHQUNiLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSw0QkFBNEIsSUFBSSxFQUFFLENBQUM7UUFDbEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxzQkFBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDLHlCQUF5QixJQUFJLEtBQUssQ0FBQztRQUMxRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixJQUFJLEtB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Q25DLENBQUMscUJBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxXQUFXLENBQUMsT0FBTztJQUN0QyxDQUFDLHFCQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxDQUFDLE9BQU87SUFDdEMsQ0FBQyxxQkFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFdBQVcsQ0FBQyxPQUFPO0lBQ3ZDLENBQUMscUJBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFXLENBQUMsT0FBTztJQUN2QyxDQUFDLHFCQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsV0FBVyxDQUFDLE9BQU87Q0FDeEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRva2VuIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuLy8gVE9ETzogdXNlIEBjZGt0Zi9wcm92aWRlci1kb2NrZXIgZm9yIGJ1bmRsaW5nXG5pbXBvcnQgeyBEb2NrZXJJbWFnZSB9IGZyb20gXCIuLi8uLi9idW5kbGluZ1wiO1xuaW1wb3J0IHsgQXdzU3RhY2sgfSBmcm9tIFwiLi4vYXdzLXN0YWNrXCI7XG5pbXBvcnQgeyBQYXJ0aXRpb24sIHBhcnRpdGlvbkxvb2t1cCB9IGZyb20gXCIuLi9wYXJ0aXRpb25cIjtcbi8vIGltcG9ydCB7IEZhY3ROYW1lIH0gZnJvbSAnLi4vLi4vcmVnaW9uLWluZm8nO1xuXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYVJ1bnRpbWVQcm9wcyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBgYFppcEZpbGVgYCAoYWthIGlubGluZSBjb2RlKSBwcm9wZXJ0eSBjYW4gYmUgdXNlZCB3aXRoIHRoaXMgcnVudGltZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHN1cHBvcnRzSW5saW5lQ29kZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJ1bnRpbWUgZW51bSBpcyBtZWFudCB0byBjaGFuZ2Ugb3ZlciB0aW1lLCBJRSBOT0RFSlNfTEFURVNULlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaXNWYXJpYWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBEb2NrZXIgaW1hZ2UgbmFtZSB0byBiZSB1c2VkIGZvciBidW5kbGluZyBpbiB0aGlzIHJ1bnRpbWUuXG4gICAqIEBkZWZhdWx0IC0gdGhlIGxhdGVzdCBkb2NrZXIgaW1hZ2UgXCJhbWF6b24vcHVibGljLmVjci5hd3Mvc2FtL2J1aWxkLTxydW50aW1lPlwiIGZyb20gaHR0cHM6Ly9nYWxsZXJ5LmVjci5hd3NcbiAgICovXG4gIHJlYWRvbmx5IGJ1bmRsaW5nRG9ja2VySW1hZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBydW50aW1lIGlzIGludGVncmF0ZWQgd2l0aCBhbmQgc3VwcG9ydGVkIGZvciBwcm9maWxpbmcgdXNpbmcgQW1hem9uIENvZGVHdXJ1IFByb2ZpbGVyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VwcG9ydHNDb2RlR3VydVByb2ZpbGluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBydW50aW1lIHN1cHBvcnRzIFNuYXBTdGFydC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHN1cHBvcnRzU25hcFN0YXJ0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGVudW0gUnVudGltZUZhbWlseSB7XG4gIE5PREVKUyxcbiAgSkFWQSxcbiAgUFlUSE9OLFxuICBET1RORVRfQ09SRSxcbiAgR08sXG4gIFJVQlksXG4gIE9USEVSLFxufVxuXG4vKipcbiAqIExhbWJkYSBmdW5jdGlvbiBydW50aW1lIGVudmlyb25tZW50LlxuICpcbiAqIElmIHlvdSBuZWVkIHRvIHVzZSBhIHJ1bnRpbWUgbmFtZSB0aGF0IGRvZXNuJ3QgZXhpc3QgYXMgYSBzdGF0aWMgbWVtYmVyLCB5b3VcbiAqIGNhbiBpbnN0YW50aWF0ZSBhIGBSdW50aW1lYCBvYmplY3QsIGUuZzogYG5ldyBSdW50aW1lKCdub2RlanM5OS45OScpYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFJ1bnRpbWUge1xuICAvKiogQSBsaXN0IG9mIGFsbCBrbm93biBgUnVudGltZWAncy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBTEwgPSBuZXcgQXJyYXk8UnVudGltZT4oKTtcblxuICAvKipcbiAgICogVGhlIE5vZGVKUyBydW50aW1lIChub2RlanMpXG4gICAqIEBkZXByZWNhdGVkIExlZ2FjeSBydW50aW1lIG5vIGxvbmdlciBzdXBwb3J0ZWQgYnkgQVdTIExhbWJkYS4gTWlncmF0ZSB0byB0aGUgbGF0ZXN0IE5vZGVKUyBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT0RFSlMgPSBuZXcgUnVudGltZShcIm5vZGVqc1wiLCBSdW50aW1lRmFtaWx5Lk5PREVKUywge1xuICAgIHN1cHBvcnRzSW5saW5lQ29kZTogdHJ1ZSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFRoZSBOb2RlSlMgNC4zIHJ1bnRpbWUgKG5vZGVqczQuMylcbiAgICogQGRlcHJlY2F0ZWQgTGVnYWN5IHJ1bnRpbWUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSBBV1MgTGFtYmRhLiBNaWdyYXRlIHRvIHRoZSBsYXRlc3QgTm9kZUpTIHJ1bnRpbWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PREVKU180XzMgPSBuZXcgUnVudGltZShcbiAgICBcIm5vZGVqczQuM1wiLFxuICAgIFJ1bnRpbWVGYW1pbHkuTk9ERUpTLFxuICAgIHsgc3VwcG9ydHNJbmxpbmVDb2RlOiB0cnVlIH0sXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSBOb2RlSlMgNi4xMCBydW50aW1lIChub2RlanM2LjEwKVxuICAgKiBAZGVwcmVjYXRlZCBMZWdhY3kgcnVudGltZSBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IEFXUyBMYW1iZGEuIE1pZ3JhdGUgdG8gdGhlIGxhdGVzdCBOb2RlSlMgcnVudGltZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ERUpTXzZfMTAgPSBuZXcgUnVudGltZShcbiAgICBcIm5vZGVqczYuMTBcIixcbiAgICBSdW50aW1lRmFtaWx5Lk5PREVKUyxcbiAgICB7IHN1cHBvcnRzSW5saW5lQ29kZTogdHJ1ZSB9LFxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgTm9kZUpTIDguMTAgcnVudGltZSAobm9kZWpzOC4xMClcbiAgICogQGRlcHJlY2F0ZWQgTGVnYWN5IHJ1bnRpbWUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSBBV1MgTGFtYmRhLiBNaWdyYXRlIHRvIHRoZSBsYXRlc3QgTm9kZUpTIHJ1bnRpbWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PREVKU184XzEwID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJub2RlanM4LjEwXCIsXG4gICAgUnVudGltZUZhbWlseS5OT0RFSlMsXG4gICAgeyBzdXBwb3J0c0lubGluZUNvZGU6IHRydWUgfSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIE5vZGVKUyAxMC54IHJ1bnRpbWUgKG5vZGVqczEwLngpXG4gICAqIEBkZXByZWNhdGVkIExlZ2FjeSBydW50aW1lIG5vIGxvbmdlciBzdXBwb3J0ZWQgYnkgQVdTIExhbWJkYS4gTWlncmF0ZSB0byB0aGUgbGF0ZXN0IE5vZGVKUyBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT0RFSlNfMTBfWCA9IG5ldyBSdW50aW1lKFxuICAgIFwibm9kZWpzMTAueFwiLFxuICAgIFJ1bnRpbWVGYW1pbHkuTk9ERUpTLFxuICAgIHsgc3VwcG9ydHNJbmxpbmVDb2RlOiB0cnVlIH0sXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSBOb2RlSlMgMTIueCBydW50aW1lIChub2RlanMxMi54KVxuICAgKiBAZGVwcmVjYXRlZCBMZWdhY3kgcnVudGltZSBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IEFXUyBMYW1iZGEuIE1pZ3JhdGUgdG8gdGhlIGxhdGVzdCBOb2RlSlMgcnVudGltZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ERUpTXzEyX1ggPSBuZXcgUnVudGltZShcbiAgICBcIm5vZGVqczEyLnhcIixcbiAgICBSdW50aW1lRmFtaWx5Lk5PREVKUyxcbiAgICB7IHN1cHBvcnRzSW5saW5lQ29kZTogdHJ1ZSB9LFxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgTm9kZUpTIDE0LnggcnVudGltZSAobm9kZWpzMTQueClcbiAgICogQGRlcHJlY2F0ZWQgTGVnYWN5IHJ1bnRpbWUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSBBV1MgTGFtYmRhLiBNaWdyYXRlIHRvIHRoZSBsYXRlc3QgTm9kZUpTIHJ1bnRpbWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PREVKU18xNF9YID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJub2RlanMxNC54XCIsXG4gICAgUnVudGltZUZhbWlseS5OT0RFSlMsXG4gICAgeyBzdXBwb3J0c0lubGluZUNvZGU6IHRydWUgfSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIE5vZGVKUyAxNi54IHJ1bnRpbWUgKG5vZGVqczE2LngpXG4gICAqIEBkZXByZWNhdGVkIExlZ2FjeSBydW50aW1lIG5vIGxvbmdlciBzdXBwb3J0ZWQgYnkgQVdTIExhbWJkYS4gTWlncmF0ZSB0byB0aGUgbGF0ZXN0IE5vZGVKUyBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT0RFSlNfMTZfWCA9IG5ldyBSdW50aW1lKFxuICAgIFwibm9kZWpzMTYueFwiLFxuICAgIFJ1bnRpbWVGYW1pbHkuTk9ERUpTLFxuICAgIHsgc3VwcG9ydHNJbmxpbmVDb2RlOiB0cnVlIH0sXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSBOb2RlSlMgMTgueCBydW50aW1lIChub2RlanMxOC54KVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT0RFSlNfMThfWCA9IG5ldyBSdW50aW1lKFxuICAgIFwibm9kZWpzMTgueFwiLFxuICAgIFJ1bnRpbWVGYW1pbHkuTk9ERUpTLFxuICAgIHsgc3VwcG9ydHNJbmxpbmVDb2RlOiB0cnVlIH0sXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSBOb2RlSlMgMjAueCBydW50aW1lIChub2RlanMyMC54KVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT0RFSlNfMjBfWCA9IG5ldyBSdW50aW1lKFxuICAgIFwibm9kZWpzMjAueFwiLFxuICAgIFJ1bnRpbWVGYW1pbHkuTk9ERUpTLFxuICAgIHsgc3VwcG9ydHNJbmxpbmVDb2RlOiB0cnVlIH0sXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSBsYXRlc3QgTm9kZUpTIHZlcnNpb24gY3VycmVudGx5IGF2YWlsYWJsZSBpbiBBTEwgcmVnaW9ucyAobm90IG5lY2Vzc2FyaWx5IHRoZSBsYXRlc3QgTm9kZUpTIHZlcnNpb25cbiAgICogYXZhaWxhYmxlIGluIFlPVVIgcmVnaW9uKS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ERUpTX0xBVEVTVCA9IG5ldyBSdW50aW1lKFxuICAgIFwibm9kZWpzMjIueFwiLCAvLyBUT0RPOiByZXZpZXcgdGhpc1xuICAgIFJ1bnRpbWVGYW1pbHkuTk9ERUpTLFxuICAgIHsgc3VwcG9ydHNJbmxpbmVDb2RlOiB0cnVlLCBpc1ZhcmlhYmxlOiB0cnVlIH0sXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSBOb2RlSlMgMjIueCBydW50aW1lIChub2RlanMyMi54KVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT0RFSlNfMjJfWCA9IG5ldyBSdW50aW1lKFxuICAgIFwibm9kZWpzMjIueFwiLFxuICAgIFJ1bnRpbWVGYW1pbHkuTk9ERUpTLFxuICAgIHsgc3VwcG9ydHNJbmxpbmVDb2RlOiB0cnVlIH0sXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSBOb2RlSlMgMjQueCBydW50aW1lIChub2RlanMyNC54KVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT0RFSlNfMjRfWCA9IG5ldyBSdW50aW1lKFxuICAgIFwibm9kZWpzMjQueFwiLFxuICAgIFJ1bnRpbWVGYW1pbHkuTk9ERUpTLFxuICAgIHsgc3VwcG9ydHNJbmxpbmVDb2RlOiB0cnVlIH0sXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSBQeXRob24gMi43IHJ1bnRpbWUgKHB5dGhvbjIuNylcbiAgICogQGRlcHJlY2F0ZWQgTGVnYWN5IHJ1bnRpbWUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSBBV1MgTGFtYmRhLiBNaWdyYXRlIHRvIHRoZSBsYXRlc3QgUHl0aG9uIHJ1bnRpbWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBZVEhPTl8yXzcgPSBuZXcgUnVudGltZShcbiAgICBcInB5dGhvbjIuN1wiLFxuICAgIFJ1bnRpbWVGYW1pbHkuUFlUSE9OLFxuICAgIHsgc3VwcG9ydHNJbmxpbmVDb2RlOiB0cnVlIH0sXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSBQeXRob24gMy42IHJ1bnRpbWUgKHB5dGhvbjMuNikgKG5vdCByZWNvbW1lbmRlZClcbiAgICpcbiAgICogVGhlIFB5dGhvbiAzLjYgcnVudGltZSBpcyBkZXByZWNhdGVkIGFzIG9mIEp1bHkgMjAyMi5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgTGVnYWN5IHJ1bnRpbWUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSBBV1MgTGFtYmRhLiBNaWdyYXRlIHRvIHRoZSBsYXRlc3QgUHl0aG9uIHJ1bnRpbWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBZVEhPTl8zXzYgPSBuZXcgUnVudGltZShcbiAgICBcInB5dGhvbjMuNlwiLFxuICAgIFJ1bnRpbWVGYW1pbHkuUFlUSE9OLFxuICAgIHtcbiAgICAgIHN1cHBvcnRzSW5saW5lQ29kZTogdHJ1ZSxcbiAgICAgIHN1cHBvcnRzQ29kZUd1cnVQcm9maWxpbmc6IHRydWUsXG4gICAgfSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIFB5dGhvbiAzLjcgcnVudGltZSAocHl0aG9uMy43KVxuICAgKiBAZGVwcmVjYXRlZCBMZWdhY3kgcnVudGltZSBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IEFXUyBMYW1iZGEuIE1pZ3JhdGUgdG8gdGhlIGxhdGVzdCBQeXRob24gcnVudGltZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFlUSE9OXzNfNyA9IG5ldyBSdW50aW1lKFxuICAgIFwicHl0aG9uMy43XCIsXG4gICAgUnVudGltZUZhbWlseS5QWVRIT04sXG4gICAge1xuICAgICAgc3VwcG9ydHNJbmxpbmVDb2RlOiB0cnVlLFxuICAgICAgc3VwcG9ydHNDb2RlR3VydVByb2ZpbGluZzogdHJ1ZSxcbiAgICB9LFxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgUHl0aG9uIDMuOCBydW50aW1lIChweXRob24zLjgpXG4gICAqIEBkZXByZWNhdGVkIExlZ2FjeSBydW50aW1lIG5vIGxvbmdlciBzdXBwb3J0ZWQgYnkgQVdTIExhbWJkYS4gTWlncmF0ZSB0byB0aGUgbGF0ZXN0IFB5dGhvbiBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQWVRIT05fM184ID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJweXRob24zLjhcIixcbiAgICBSdW50aW1lRmFtaWx5LlBZVEhPTixcbiAgICB7XG4gICAgICBzdXBwb3J0c0lubGluZUNvZGU6IHRydWUsXG4gICAgICBzdXBwb3J0c0NvZGVHdXJ1UHJvZmlsaW5nOiB0cnVlLFxuICAgIH0sXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSBQeXRob24gMy45IHJ1bnRpbWUgKHB5dGhvbjMuOSlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFlUSE9OXzNfOSA9IG5ldyBSdW50aW1lKFxuICAgIFwicHl0aG9uMy45XCIsXG4gICAgUnVudGltZUZhbWlseS5QWVRIT04sXG4gICAge1xuICAgICAgc3VwcG9ydHNJbmxpbmVDb2RlOiB0cnVlLFxuICAgICAgc3VwcG9ydHNDb2RlR3VydVByb2ZpbGluZzogdHJ1ZSxcbiAgICB9LFxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgUHl0aG9uIDMuMTAgcnVudGltZSAocHl0aG9uMy4xMClcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFlUSE9OXzNfMTAgPSBuZXcgUnVudGltZShcbiAgICBcInB5dGhvbjMuMTBcIixcbiAgICBSdW50aW1lRmFtaWx5LlBZVEhPTixcbiAgICB7XG4gICAgICBzdXBwb3J0c0lubGluZUNvZGU6IHRydWUsXG4gICAgICBzdXBwb3J0c0NvZGVHdXJ1UHJvZmlsaW5nOiB0cnVlLFxuICAgIH0sXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSBQeXRob24gMy4xMSBydW50aW1lIChweXRob24zLjExKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQWVRIT05fM18xMSA9IG5ldyBSdW50aW1lKFxuICAgIFwicHl0aG9uMy4xMVwiLFxuICAgIFJ1bnRpbWVGYW1pbHkuUFlUSE9OLFxuICAgIHtcbiAgICAgIHN1cHBvcnRzSW5saW5lQ29kZTogdHJ1ZSxcbiAgICAgIHN1cHBvcnRzQ29kZUd1cnVQcm9maWxpbmc6IHRydWUsXG4gICAgfSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIFB5dGhvbiAzLjEyIHJ1bnRpbWUgKHB5dGhvbjMuMTIpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBZVEhPTl8zXzEyID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJweXRob24zLjEyXCIsXG4gICAgUnVudGltZUZhbWlseS5QWVRIT04sXG4gICAge1xuICAgICAgc3VwcG9ydHNJbmxpbmVDb2RlOiB0cnVlLFxuICAgICAgc3VwcG9ydHNDb2RlR3VydVByb2ZpbGluZzogdHJ1ZSxcbiAgICAgIHN1cHBvcnRzU25hcFN0YXJ0OiB0cnVlLFxuICAgIH0sXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSBQeXRob24gMy4xMyBydW50aW1lIChweXRob24zLjEzKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQWVRIT05fM18xMyA9IG5ldyBSdW50aW1lKFxuICAgIFwicHl0aG9uMy4xM1wiLFxuICAgIFJ1bnRpbWVGYW1pbHkuUFlUSE9OLFxuICAgIHtcbiAgICAgIHN1cHBvcnRzSW5saW5lQ29kZTogdHJ1ZSxcbiAgICAgIHN1cHBvcnRzQ29kZUd1cnVQcm9maWxpbmc6IHRydWUsXG4gICAgICBzdXBwb3J0c1NuYXBTdGFydDogdHJ1ZSxcbiAgICB9LFxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgUHl0aG9uIDMuMTQgcnVudGltZSAocHl0aG9uMy4xNClcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFlUSE9OXzNfMTQgPSBuZXcgUnVudGltZShcbiAgICBcInB5dGhvbjMuMTRcIixcbiAgICBSdW50aW1lRmFtaWx5LlBZVEhPTixcbiAgICB7XG4gICAgICBzdXBwb3J0c0lubGluZUNvZGU6IHRydWUsXG4gICAgICBzdXBwb3J0c0NvZGVHdXJ1UHJvZmlsaW5nOiB0cnVlLFxuICAgICAgc3VwcG9ydHNTbmFwU3RhcnQ6IHRydWUsXG4gICAgfSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIEphdmEgOCBydW50aW1lIChqYXZhOClcbiAgICogQGRlcHJlY2F0ZWQgTGVnYWN5IHJ1bnRpbWUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSBBV1MgTGFtYmRhLiBNaWdyYXRlIHRvIHRoZSBsYXRlc3QgSmF2YSBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBKQVZBXzggPSBuZXcgUnVudGltZShcImphdmE4XCIsIFJ1bnRpbWVGYW1pbHkuSkFWQSwge1xuICAgIHN1cHBvcnRzQ29kZUd1cnVQcm9maWxpbmc6IHRydWUsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBUaGUgSmF2YSA4IENvcnJldHRvIHJ1bnRpbWUgKGphdmE4LmFsMilcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSkFWQV84X0NPUlJFVFRPID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJqYXZhOC5hbDJcIixcbiAgICBSdW50aW1lRmFtaWx5LkpBVkEsXG4gICAge1xuICAgICAgc3VwcG9ydHNDb2RlR3VydVByb2ZpbGluZzogdHJ1ZSxcbiAgICB9LFxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgSmF2YSAxMSBydW50aW1lIChqYXZhMTEpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEpBVkFfMTEgPSBuZXcgUnVudGltZShcImphdmExMVwiLCBSdW50aW1lRmFtaWx5LkpBVkEsIHtcbiAgICBzdXBwb3J0c0NvZGVHdXJ1UHJvZmlsaW5nOiB0cnVlLFxuICAgIHN1cHBvcnRzU25hcFN0YXJ0OiB0cnVlLFxuICB9KTtcblxuICAvKipcbiAgICogVGhlIEphdmEgMTcgcnVudGltZSAoamF2YTE3KVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBKQVZBXzE3ID0gbmV3IFJ1bnRpbWUoXCJqYXZhMTdcIiwgUnVudGltZUZhbWlseS5KQVZBLCB7XG4gICAgc3VwcG9ydHNDb2RlR3VydVByb2ZpbGluZzogdHJ1ZSxcbiAgICBzdXBwb3J0c1NuYXBTdGFydDogdHJ1ZSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFRoZSBKYXZhIDIxIHJ1bnRpbWUgKGphdmEyMSlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSkFWQV8yMSA9IG5ldyBSdW50aW1lKFwiamF2YTIxXCIsIFJ1bnRpbWVGYW1pbHkuSkFWQSwge1xuICAgIHN1cHBvcnRzQ29kZUd1cnVQcm9maWxpbmc6IHRydWUsXG4gICAgc3VwcG9ydHNTbmFwU3RhcnQ6IHRydWUsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBUaGUgLk5FVCA2IHJ1bnRpbWUgKGRvdG5ldDYpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERPVE5FVF82ID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJkb3RuZXQ2XCIsXG4gICAgUnVudGltZUZhbWlseS5ET1RORVRfQ09SRSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIC5ORVQgOCBydW50aW1lIChkb3RuZXQ4KVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBET1RORVRfOCA9IG5ldyBSdW50aW1lKFxuICAgIFwiZG90bmV0OFwiLFxuICAgIFJ1bnRpbWVGYW1pbHkuRE9UTkVUX0NPUkUsXG4gICAge1xuICAgICAgc3VwcG9ydHNTbmFwU3RhcnQ6IHRydWUsXG4gICAgfSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIC5ORVQgOSBydW50aW1lIChkb3RuZXQ5KVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBET1RORVRfOSA9IG5ldyBSdW50aW1lKFxuICAgIFwiZG90bmV0OVwiLFxuICAgIFJ1bnRpbWVGYW1pbHkuRE9UTkVUX0NPUkUsXG4gICAge1xuICAgICAgc3VwcG9ydHNTbmFwU3RhcnQ6IHRydWUsXG4gICAgfSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIC5ORVQgQ29yZSAxLjAgcnVudGltZSAoZG90bmV0Y29yZTEuMClcbiAgICogQGRlcHJlY2F0ZWQgTGVnYWN5IHJ1bnRpbWUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSBBV1MgTGFtYmRhLiBNaWdyYXRlIHRvIHRoZSBsYXRlc3QgLk5FVCBDb3JlIHJ1bnRpbWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERPVE5FVF9DT1JFXzEgPSBuZXcgUnVudGltZShcbiAgICBcImRvdG5ldGNvcmUxLjBcIixcbiAgICBSdW50aW1lRmFtaWx5LkRPVE5FVF9DT1JFLFxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgLk5FVCBDb3JlIDIuMCBydW50aW1lIChkb3RuZXRjb3JlMi4wKVxuICAgKiBAZGVwcmVjYXRlZCBMZWdhY3kgcnVudGltZSBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IEFXUyBMYW1iZGEuIE1pZ3JhdGUgdG8gdGhlIGxhdGVzdCAuTkVUIENvcmUgcnVudGltZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRE9UTkVUX0NPUkVfMiA9IG5ldyBSdW50aW1lKFxuICAgIFwiZG90bmV0Y29yZTIuMFwiLFxuICAgIFJ1bnRpbWVGYW1pbHkuRE9UTkVUX0NPUkUsXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSAuTkVUIENvcmUgMi4xIHJ1bnRpbWUgKGRvdG5ldGNvcmUyLjEpXG4gICAqIEBkZXByZWNhdGVkIExlZ2FjeSBydW50aW1lIG5vIGxvbmdlciBzdXBwb3J0ZWQgYnkgQVdTIExhbWJkYS4gTWlncmF0ZSB0byB0aGUgbGF0ZXN0IC5ORVQgQ29yZSBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBET1RORVRfQ09SRV8yXzEgPSBuZXcgUnVudGltZShcbiAgICBcImRvdG5ldGNvcmUyLjFcIixcbiAgICBSdW50aW1lRmFtaWx5LkRPVE5FVF9DT1JFLFxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgLk5FVCBDb3JlIDMuMSBydW50aW1lIChkb3RuZXRjb3JlMy4xKVxuICAgKiBAZGVwcmVjYXRlZCBMZWdhY3kgcnVudGltZSBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IEFXUyBMYW1iZGEuIE1pZ3JhdGUgdG8gdGhlIGxhdGVzdCAuTkVUIENvcmUgcnVudGltZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRE9UTkVUX0NPUkVfM18xID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJkb3RuZXRjb3JlMy4xXCIsXG4gICAgUnVudGltZUZhbWlseS5ET1RORVRfQ09SRSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIEdvIDEueCBydW50aW1lIChnbzEueClcbiAgICogQGRlcHJlY2F0ZWQgTGVnYWN5IHJ1bnRpbWUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSBBV1MgTGFtYmRhLiBNaWdyYXRlIHRvIHRoZSBQUk9WSURFRF9BTDIwMjMgcnVudGltZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR09fMV9YID0gbmV3IFJ1bnRpbWUoXCJnbzEueFwiLCBSdW50aW1lRmFtaWx5LkdPKTtcblxuICAvKipcbiAgICogVGhlIFJ1YnkgMi41IHJ1bnRpbWUgKHJ1YnkyLjUpXG4gICAqIEBkZXByZWNhdGVkIExlZ2FjeSBydW50aW1lIG5vIGxvbmdlciBzdXBwb3J0ZWQgYnkgQVdTIExhbWJkYS4gTWlncmF0ZSB0byB0aGUgbGF0ZXN0IFJ1YnkgcnVudGltZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUlVCWV8yXzUgPSBuZXcgUnVudGltZShcInJ1YnkyLjVcIiwgUnVudGltZUZhbWlseS5SVUJZKTtcblxuICAvKipcbiAgICogVGhlIFJ1YnkgMi43IHJ1bnRpbWUgKHJ1YnkyLjcpXG4gICAqIEBkZXByZWNhdGVkIExlZ2FjeSBydW50aW1lIG5vIGxvbmdlciBzdXBwb3J0ZWQgYnkgQVdTIExhbWJkYS4gTWlncmF0ZSB0byB0aGUgbGF0ZXN0IFJ1YnkgcnVudGltZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUlVCWV8yXzcgPSBuZXcgUnVudGltZShcInJ1YnkyLjdcIiwgUnVudGltZUZhbWlseS5SVUJZKTtcblxuICAvKipcbiAgICogVGhlIFJ1YnkgMy4yIHJ1bnRpbWUgKHJ1YnkzLjIpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFJVQllfM18yID0gbmV3IFJ1bnRpbWUoXCJydWJ5My4yXCIsIFJ1bnRpbWVGYW1pbHkuUlVCWSk7XG5cbiAgLyoqXG4gICAqIFRoZSBSdWJ5IDMuMyBydW50aW1lIChydWJ5My4zKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBSVUJZXzNfMyA9IG5ldyBSdW50aW1lKFwicnVieTMuM1wiLCBSdW50aW1lRmFtaWx5LlJVQlkpO1xuXG4gIC8qKlxuICAgKiBUaGUgUnVieSAzLjQgcnVudGltZSAocnVieTMuNClcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUlVCWV8zXzQgPSBuZXcgUnVudGltZShcInJ1YnkzLjRcIiwgUnVudGltZUZhbWlseS5SVUJZKTtcblxuICAvKipcbiAgICogVGhlIGN1c3RvbSBwcm92aWRlZCBydW50aW1lIChwcm92aWRlZClcbiAgICogQGRlcHJlY2F0ZWQgTGVnYWN5IHJ1bnRpbWUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSBBV1MgTGFtYmRhLiBNaWdyYXRlIHRvIHRoZSBsYXRlc3QgcHJvdmlkZWQuYWwyMDIzIHJ1bnRpbWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1ZJREVEID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJwcm92aWRlZFwiLFxuICAgIFJ1bnRpbWVGYW1pbHkuT1RIRVIsXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXN0b20gcHJvdmlkZWQgcnVudGltZSB3aXRoIEFtYXpvbiBMaW51eCAyIChwcm92aWRlZC5hbDIpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1ZJREVEX0FMMiA9IG5ldyBSdW50aW1lKFxuICAgIFwicHJvdmlkZWQuYWwyXCIsXG4gICAgUnVudGltZUZhbWlseS5PVEhFUixcbiAgKTtcblxuICAvKipcbiAgICogVGhlIGN1c3RvbSBwcm92aWRlZCBydW50aW1lIHdpdGggQW1hem9uIExpbnV4IDIwMjMgKHByb3ZpZGVkLmFsMjAyMylcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPVklERURfQUwyMDIzID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJwcm92aWRlZC5hbDIwMjNcIixcbiAgICBSdW50aW1lRmFtaWx5Lk9USEVSLFxuICApO1xuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWwgcnVudGltZSBlbnRyeSB0byBiZSB1c2VkIHdoZW4gZnVuY3Rpb24gaXMgdXNpbmcgYSBkb2NrZXIgaW1hZ2UuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZST01fSU1BR0UgPSBuZXcgUnVudGltZShcIkZST01fSU1BR0VcIik7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoaXMgcnVudGltZSwgYXMgZXhwZWN0ZWQgYnkgdGhlIExhbWJkYSByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGBgWmlwRmlsZWBgIChha2EgaW5saW5lIGNvZGUpIHByb3BlcnR5IGNhbiBiZSB1c2VkIHdpdGggdGhpc1xuICAgKiBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN1cHBvcnRzSW5saW5lQ29kZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHJ1bnRpbWUgaXMgaW50ZWdyYXRlZCB3aXRoIGFuZCBzdXBwb3J0ZWQgZm9yIHByb2ZpbGluZyB1c2luZyBBbWF6b24gQ29kZUd1cnUgUHJvZmlsZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3VwcG9ydHNDb2RlR3VydVByb2ZpbGluZzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHJ1bnRpbWUgc3VwcG9ydHMgc25hcHN0YXJ0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN1cHBvcnRzU25hcFN0YXJ0OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcnVudGltZSBmYW1pbHkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmFtaWx5PzogUnVudGltZUZhbWlseTtcblxuICAvKipcbiAgICogVGhlIGJ1bmRsaW5nIERvY2tlciBpbWFnZSBmb3IgdGhpcyBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJ1bmRsaW5nSW1hZ2U6IERvY2tlckltYWdlO1xuXG4gIC8qKlxuICAgKiBFbmFibGVkIGZvciBydW50aW1lIGVudW1zIHRoYXQgYWx3YXlzIHRhcmdldCB0aGUgbGF0ZXN0IGF2YWlsYWJsZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc1ZhcmlhYmxlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBmYW1pbHk/OiBSdW50aW1lRmFtaWx5LFxuICAgIHByb3BzOiBMYW1iZGFSdW50aW1lUHJvcHMgPSB7fSxcbiAgKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnN1cHBvcnRzSW5saW5lQ29kZSA9ICEhcHJvcHMuc3VwcG9ydHNJbmxpbmVDb2RlO1xuICAgIHRoaXMuZmFtaWx5ID0gZmFtaWx5O1xuICAgIHRoaXMuaXNWYXJpYWJsZSA9ICEhcHJvcHMuaXNWYXJpYWJsZTtcblxuICAgIGNvbnN0IGltYWdlTmFtZSA9XG4gICAgICBwcm9wcy5idW5kbGluZ0RvY2tlckltYWdlID8/IGBwdWJsaWMuZWNyLmF3cy9zYW0vYnVpbGQtJHtuYW1lfWA7XG4gICAgdGhpcy5idW5kbGluZ0ltYWdlID0gRG9ja2VySW1hZ2UuZnJvbVJlZ2lzdHJ5KGltYWdlTmFtZSk7XG4gICAgdGhpcy5zdXBwb3J0c0NvZGVHdXJ1UHJvZmlsaW5nID0gcHJvcHMuc3VwcG9ydHNDb2RlR3VydVByb2ZpbGluZyA/PyBmYWxzZTtcbiAgICB0aGlzLnN1cHBvcnRzU25hcFN0YXJ0ID0gcHJvcHMuc3VwcG9ydHNTbmFwU3RhcnQgPz8gZmFsc2U7XG5cbiAgICBSdW50aW1lLkFMTC5wdXNoKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBydW50aW1lRXF1YWxzKG90aGVyOiBSdW50aW1lKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIG90aGVyLm5hbWUgPT09IHRoaXMubmFtZSAmJlxuICAgICAgb3RoZXIuZmFtaWx5ID09PSB0aGlzLmZhbWlseSAmJlxuICAgICAgb3RoZXIuc3VwcG9ydHNJbmxpbmVDb2RlID09PSB0aGlzLnN1cHBvcnRzSW5saW5lQ29kZVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgbGF0ZXN0IExhbWJkYSBub2RlIHJ1bnRpbWUgYXZhaWxhYmxlIGJ5IEFXUyByZWdpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXRlcm1pbmVMYXRlc3ROb2RlUnVudGltZShzY29wZTogQ29uc3RydWN0KTogUnVudGltZSB7XG4gIC8vIFJ1bnRpbWUgcmVnaW9uYWwgZmFjdCBzaG91bGQgYWx3YXlzIHJldHVybiBhIGtub3duIHJ1bnRpbWUgc3RyaW5nIHRoYXQgUnVudGltZSBjYW4gaW5kZXggb2ZmLCBidXQgZm9yIHR5cGVcbiAgLy8gc2FmZXR5IHdlIGFsc28gZGVmYXVsdCBpdCBoZXJlLlxuICBjb25zdCBydW50aW1lTmFtZSA9IHJ1bnRpbWVMb29rdXAoXG4gICAgQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3Qoc2NvcGUpLnJlZ2lvbixcbiAgICBSdW50aW1lLk5PREVKU18xOF9YLm5hbWUsXG4gICk7XG4gIHJldHVybiBuZXcgUnVudGltZShydW50aW1lTmFtZSwgUnVudGltZUZhbWlseS5OT0RFSlMsIHtcbiAgICBzdXBwb3J0c0lubGluZUNvZGU6IHRydWUsXG4gICAgaXNWYXJpYWJsZTogdHJ1ZSxcbiAgfSk7XG59XG5cbi8vIEZhY3QgVGFibGUgTW9jayBmdW5jdGlvbnNcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL21haW4vcGFja2FnZXMvYXdzLWNkay1saWIvcmVnaW9uLWluZm8vYnVpbGQtdG9vbHMvZmFjdC10YWJsZXMudHNcblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bnRpbWVMb29rdXAocmVnaW9uOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQocmVnaW9uKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBkZXRlcm1pbmUgcmVnaW9uIHBhcnRpdGlvbiBmb3IgdW5yZXNvbHZlZCByZWdpb25cIik7XG4gIH1cbiAgY29uc3QgeyBwYXJ0aXRpb24gfSA9IHBhcnRpdGlvbkxvb2t1cChyZWdpb24pO1xuICBjb25zdCBydW50aW1lID0gTEFURVNUX05PREVfUlVOVElNRV9NQVBbcGFydGl0aW9uXSA/PyBkZWZhdWx0VmFsdWU7XG4gIGlmICghcnVudGltZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBObyBydW50aW1lIGZvdW5kIGZvciBwYXJ0aXRpb24gJHtwYXJ0aXRpb259IGluIHJlZ2lvbiAke3JlZ2lvbn0uYCxcbiAgICApO1xuICB9XG4gIHJldHVybiBydW50aW1lO1xufVxuXG5lbnVtIFJ1bnRpbWVGYWN0IHtcbiAgTk9ERV8xOCA9IFwibm9kZWpzMTgueFwiLFxuICBOT0RFXzIwID0gXCJub2RlanMyMC54XCIsXG4gIE5PREVfMjIgPSBcIm5vZGVqczIyLnhcIixcbn1cblxuY29uc3QgTEFURVNUX05PREVfUlVOVElNRV9NQVA6IFJlY29yZDxQYXJ0aXRpb24sIHN0cmluZz4gPSB7XG4gIFtQYXJ0aXRpb24uRGVmYXVsdF06IFJ1bnRpbWVGYWN0Lk5PREVfMjIsXG4gIFtQYXJ0aXRpb24uQ25dOiBSdW50aW1lRmFjdC5OT0RFXzIyLFxuICBbUGFydGl0aW9uLlVzR292XTogUnVudGltZUZhY3QuTk9ERV8yMixcbiAgW1BhcnRpdGlvbi5Vc0lzb106IFJ1bnRpbWVGYWN0Lk5PREVfMjIsXG4gIFtQYXJ0aXRpb24uVXNJc29CXTogUnVudGltZUZhY3QuTk9ERV8yMixcbiAgW1BhcnRpdGlvbi5Vc0lzb0ZdOiBSdW50aW1lRmFjdC5OT0RFXzIyLFxuICBbUGFydGl0aW9uLkV1SXNvRV06IFJ1bnRpbWVGYWN0Lk5PREVfMjIsXG59O1xuIl19
319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUF3aUJBLGdFQVdDOztBQW5qQkQsc0RBQWdEO0FBRWhELGdEQUFnRDtBQUNoRCw2Q0FBNkM7QUFDN0MsNENBQXdDO0FBa0N4QyxJQUFZLGFBUVg7QUFSRCxXQUFZLGFBQWE7SUFDdkIscURBQU0sQ0FBQTtJQUNOLGlEQUFJLENBQUE7SUFDSixxREFBTSxDQUFBO0lBQ04sK0RBQVcsQ0FBQTtJQUNYLDZDQUFFLENBQUE7SUFDRixpREFBSSxDQUFBO0lBQ0osbURBQUssQ0FBQTtBQUNQLENBQUMsRUFSVyxhQUFhLDZCQUFiLGFBQWEsUUFReEI7QUFFRDs7Ozs7R0FLRztBQUNILE1BQWEsT0FBTztJQStjbEIsWUFDRSxJQUFZLEVBQ1osTUFBc0IsRUFDdEIsUUFBNEIsRUFBRTtRQUU5QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztRQUNyRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBRXJDLE1BQU0sU0FBUyxHQUNiLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSw0QkFBNEIsSUFBSSxFQUFFLENBQUM7UUFDbEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxzQkFBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDLHlCQUF5QixJQUFJLEtBQUssQ0FBQztRQUMxRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixJQUFJLEtBQUssQ0FBQztRQUUxRCxPQUFPLENBQUMs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Q0FBQyxDQUFDLFlBQVksQ0FDN0Qsc0JBQVEsQ0FBQyxtQkFBbUIsRUFDNUIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQ3pCLENBQUM7SUFDRixPQUFPLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsTUFBTSxFQUFFO1FBQ3BELGtCQUFrQixFQUFFLElBQUk7UUFDeEIsVUFBVSxFQUFFLElBQUk7S0FDakIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhY3ROYW1lIH0gZnJvbSBcIkBhd3MtY2RrL3JlZ2lvbi1pbmZvXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuLy8gVE9ETzogdXNlIEBjZGt0Zi9wcm92aWRlci1kb2NrZXIgZm9yIGJ1bmRsaW5nXG5pbXBvcnQgeyBEb2NrZXJJbWFnZSB9IGZyb20gXCIuLi8uLi9idW5kbGluZ1wiO1xuaW1wb3J0IHsgQXdzU3RhY2sgfSBmcm9tIFwiLi4vYXdzLXN0YWNrXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhUnVudGltZVByb3BzIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGBgWmlwRmlsZWBgIChha2EgaW5saW5lIGNvZGUpIHByb3BlcnR5IGNhbiBiZSB1c2VkIHdpdGggdGhpcyBydW50aW1lLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VwcG9ydHNJbmxpbmVDb2RlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcnVudGltZSBlbnVtIGlzIG1lYW50IHRvIGNoYW5nZSBvdmVyIHRpbWUsIElFIE5PREVKU19MQVRFU1QuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpc1ZhcmlhYmxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIERvY2tlciBpbWFnZSBuYW1lIHRvIGJlIHVzZWQgZm9yIGJ1bmRsaW5nIGluIHRoaXMgcnVudGltZS5cbiAgICogQGRlZmF1bHQgLSB0aGUgbGF0ZXN0IGRvY2tlciBpbWFnZSBcImFtYXpvbi9wdWJsaWMuZWNyLmF3cy9zYW0vYnVpbGQtPHJ1bnRpbWU+XCIgZnJvbSBodHRwczovL2dhbGxlcnkuZWNyLmF3c1xuICAgKi9cbiAgcmVhZG9ubHkgYnVuZGxpbmdEb2NrZXJJbWFnZT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHJ1bnRpbWUgaXMgaW50ZWdyYXRlZCB3aXRoIGFuZCBzdXBwb3J0ZWQgZm9yIHByb2ZpbGluZyB1c2luZyBBbWF6b24gQ29kZUd1cnUgUHJvZmlsZXIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzdXBwb3J0c0NvZGVHdXJ1UHJvZmlsaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHJ1bnRpbWUgc3VwcG9ydHMgU25hcFN0YXJ0LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VwcG9ydHNTbmFwU3RhcnQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZW51bSBSdW50aW1lRmFtaWx5IHtcbiAgTk9ERUpTLFxuICBKQVZBLFxuICBQWVRIT04sXG4gIERPVE5FVF9DT1JFLFxuICBHTyxcbiAgUlVCWSxcbiAgT1RIRVIsXG59XG5cbi8qKlxuICogTGFtYmRhIGZ1bmN0aW9uIHJ1bnRpbWUgZW52aXJvbm1lbnQuXG4gKlxuICogSWYgeW91IG5lZWQgdG8gdXNlIGEgcnVudGltZSBuYW1lIHRoYXQgZG9lc24ndCBleGlzdCBhcyBhIHN0YXRpYyBtZW1iZXIsIHlvdVxuICogY2FuIGluc3RhbnRpYXRlIGEgYFJ1bnRpbWVgIG9iamVjdCwgZS5nOiBgbmV3IFJ1bnRpbWUoJ25vZGVqczk5Ljk5JylgLlxuICovXG5leHBvcnQgY2xhc3MgUnVudGltZSB7XG4gIC8qKiBBIGxpc3Qgb2YgYWxsIGtub3duIGBSdW50aW1lYCdzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFMTCA9IG5ldyBBcnJheTxSdW50aW1lPigpO1xuXG4gIC8qKlxuICAgKiBUaGUgTm9kZUpTIHJ1bnRpbWUgKG5vZGVqcylcbiAgICogQGRlcHJlY2F0ZWQgTGVnYWN5IHJ1bnRpbWUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSBBV1MgTGFtYmRhLiBNaWdyYXRlIHRvIHRoZSBsYXRlc3QgTm9kZUpTIHJ1bnRpbWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PREVKUyA9IG5ldyBSdW50aW1lKFwibm9kZWpzXCIsIFJ1bnRpbWVGYW1pbHkuTk9ERUpTLCB7XG4gICAgc3VwcG9ydHNJbmxpbmVDb2RlOiB0cnVlLFxuICB9KTtcblxuICAvKipcbiAgICogVGhlIE5vZGVKUyA0LjMgcnVudGltZSAobm9kZWpzNC4zKVxuICAgKiBAZGVwcmVjYXRlZCBMZWdhY3kgcnVudGltZSBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IEFXUyBMYW1iZGEuIE1pZ3JhdGUgdG8gdGhlIGxhdGVzdCBOb2RlSlMgcnVudGltZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ERUpTXzRfMyA9IG5ldyBSdW50aW1lKFxuICAgIFwibm9kZWpzNC4zXCIsXG4gICAgUnVudGltZUZhbWlseS5OT0RFSlMsXG4gICAgeyBzdXBwb3J0c0lubGluZUNvZGU6IHRydWUgfSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIE5vZGVKUyA2LjEwIHJ1bnRpbWUgKG5vZGVqczYuMTApXG4gICAqIEBkZXByZWNhdGVkIExlZ2FjeSBydW50aW1lIG5vIGxvbmdlciBzdXBwb3J0ZWQgYnkgQVdTIExhbWJkYS4gTWlncmF0ZSB0byB0aGUgbGF0ZXN0IE5vZGVKUyBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT0RFSlNfNl8xMCA9IG5ldyBSdW50aW1lKFxuICAgIFwibm9kZWpzNi4xMFwiLFxuICAgIFJ1bnRpbWVGYW1pbHkuTk9ERUpTLFxuICAgIHsgc3VwcG9ydHNJbmxpbmVDb2RlOiB0cnVlIH0sXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSBOb2RlSlMgOC4xMCBydW50aW1lIChub2RlanM4LjEwKVxuICAgKiBAZGVwcmVjYXRlZCBMZWdhY3kgcnVudGltZSBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IEFXUyBMYW1iZGEuIE1pZ3JhdGUgdG8gdGhlIGxhdGVzdCBOb2RlSlMgcnVudGltZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ERUpTXzhfMTAgPSBuZXcgUnVudGltZShcbiAgICBcIm5vZGVqczguMTBcIixcbiAgICBSdW50aW1lRmFtaWx5Lk5PREVKUyxcbiAgICB7IHN1cHBvcnRzSW5saW5lQ29kZTogdHJ1ZSB9LFxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgTm9kZUpTIDEwLnggcnVudGltZSAobm9kZWpzMTAueClcbiAgICogQGRlcHJlY2F0ZWQgTGVnYWN5IHJ1bnRpbWUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSBBV1MgTGFtYmRhLiBNaWdyYXRlIHRvIHRoZSBsYXRlc3QgTm9kZUpTIHJ1bnRpbWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PREVKU18xMF9YID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJub2RlanMxMC54XCIsXG4gICAgUnVudGltZUZhbWlseS5OT0RFSlMsXG4gICAgeyBzdXBwb3J0c0lubGluZUNvZGU6IHRydWUgfSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIE5vZGVKUyAxMi54IHJ1bnRpbWUgKG5vZGVqczEyLngpXG4gICAqIEBkZXByZWNhdGVkIExlZ2FjeSBydW50aW1lIG5vIGxvbmdlciBzdXBwb3J0ZWQgYnkgQVdTIExhbWJkYS4gTWlncmF0ZSB0byB0aGUgbGF0ZXN0IE5vZGVKUyBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT0RFSlNfMTJfWCA9IG5ldyBSdW50aW1lKFxuICAgIFwibm9kZWpzMTIueFwiLFxuICAgIFJ1bnRpbWVGYW1pbHkuTk9ERUpTLFxuICAgIHsgc3VwcG9ydHNJbmxpbmVDb2RlOiB0cnVlIH0sXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSBOb2RlSlMgMTQueCBydW50aW1lIChub2RlanMxNC54KVxuICAgKiBAZGVwcmVjYXRlZCBMZWdhY3kgcnVudGltZSBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IEFXUyBMYW1iZGEuIE1pZ3JhdGUgdG8gdGhlIGxhdGVzdCBOb2RlSlMgcnVudGltZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ERUpTXzE0X1ggPSBuZXcgUnVudGltZShcbiAgICBcIm5vZGVqczE0LnhcIixcbiAgICBSdW50aW1lRmFtaWx5Lk5PREVKUyxcbiAgICB7IHN1cHBvcnRzSW5saW5lQ29kZTogdHJ1ZSB9LFxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgTm9kZUpTIDE2LnggcnVudGltZSAobm9kZWpzMTYueClcbiAgICogQGRlcHJlY2F0ZWQgTGVnYWN5IHJ1bnRpbWUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSBBV1MgTGFtYmRhLiBNaWdyYXRlIHRvIHRoZSBsYXRlc3QgTm9kZUpTIHJ1bnRpbWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PREVKU18xNl9YID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJub2RlanMxNi54XCIsXG4gICAgUnVudGltZUZhbWlseS5OT0RFSlMsXG4gICAgeyBzdXBwb3J0c0lubGluZUNvZGU6IHRydWUgfSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIE5vZGVKUyAxOC54IHJ1bnRpbWUgKG5vZGVqczE4LngpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PREVKU18xOF9YID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJub2RlanMxOC54XCIsXG4gICAgUnVudGltZUZhbWlseS5OT0RFSlMsXG4gICAgeyBzdXBwb3J0c0lubGluZUNvZGU6IHRydWUgfSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIE5vZGVKUyAyMC54IHJ1bnRpbWUgKG5vZGVqczIwLngpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PREVKU18yMF9YID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJub2RlanMyMC54XCIsXG4gICAgUnVudGltZUZhbWlseS5OT0RFSlMsXG4gICAgeyBzdXBwb3J0c0lubGluZUNvZGU6IHRydWUgfSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIGxhdGVzdCBOb2RlSlMgdmVyc2lvbiBjdXJyZW50bHkgYXZhaWxhYmxlIGluIEFMTCByZWdpb25zIChub3QgbmVjZXNzYXJpbHkgdGhlIGxhdGVzdCBOb2RlSlMgdmVyc2lvblxuICAgKiBhdmFpbGFibGUgaW4gWU9VUiByZWdpb24pLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT0RFSlNfTEFURVNUID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJub2RlanMyMi54XCIsXG4gICAgUnVudGltZUZhbWlseS5OT0RFSlMsXG4gICAgeyBzdXBwb3J0c0lubGluZUNvZGU6IHRydWUsIGlzVmFyaWFibGU6IHRydWUgfSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIE5vZGVKUyAyMi54IHJ1bnRpbWUgKG5vZGVqczIyLngpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PREVKU18yMl9YID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJub2RlanMyMi54XCIsXG4gICAgUnVudGltZUZhbWlseS5OT0RFSlMsXG4gICAgeyBzdXBwb3J0c0lubGluZUNvZGU6IHRydWUgfSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIE5vZGVKUyAyNC54IHJ1bnRpbWUgKG5vZGVqczI0LngpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PREVKU18yNF9YID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJub2RlanMyNC54XCIsXG4gICAgUnVudGltZUZhbWlseS5OT0RFSlMsXG4gICAgeyBzdXBwb3J0c0lubGluZUNvZGU6IHRydWUgfSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIFB5dGhvbiAyLjcgcnVudGltZSAocHl0aG9uMi43KVxuICAgKiBAZGVwcmVjYXRlZCBMZWdhY3kgcnVudGltZSBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IEFXUyBMYW1iZGEuIE1pZ3JhdGUgdG8gdGhlIGxhdGVzdCBQeXRob24gcnVudGltZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFlUSE9OXzJfNyA9IG5ldyBSdW50aW1lKFxuICAgIFwicHl0aG9uMi43XCIsXG4gICAgUnVudGltZUZhbWlseS5QWVRIT04sXG4gICAgeyBzdXBwb3J0c0lubGluZUNvZGU6IHRydWUgfSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIFB5dGhvbiAzLjYgcnVudGltZSAocHl0aG9uMy42KSAobm90IHJlY29tbWVuZGVkKVxuICAgKlxuICAgKiBUaGUgUHl0aG9uIDMuNiBydW50aW1lIGlzIGRlcHJlY2F0ZWQgYXMgb2YgSnVseSAyMDIyLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBMZWdhY3kgcnVudGltZSBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IEFXUyBMYW1iZGEuIE1pZ3JhdGUgdG8gdGhlIGxhdGVzdCBQeXRob24gcnVudGltZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFlUSE9OXzNfNiA9IG5ldyBSdW50aW1lKFxuICAgIFwicHl0aG9uMy42XCIsXG4gICAgUnVudGltZUZhbWlseS5QWVRIT04sXG4gICAge1xuICAgICAgc3VwcG9ydHNJbmxpbmVDb2RlOiB0cnVlLFxuICAgICAgc3VwcG9ydHNDb2RlR3VydVByb2ZpbGluZzogdHJ1ZSxcbiAgICB9LFxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgUHl0aG9uIDMuNyBydW50aW1lIChweXRob24zLjcpXG4gICAqIEBkZXByZWNhdGVkIExlZ2FjeSBydW50aW1lIG5vIGxvbmdlciBzdXBwb3J0ZWQgYnkgQVdTIExhbWJkYS4gTWlncmF0ZSB0byB0aGUgbGF0ZXN0IFB5dGhvbiBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQWVRIT05fM183ID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJweXRob24zLjdcIixcbiAgICBSdW50aW1lRmFtaWx5LlBZVEhPTixcbiAgICB7XG4gICAgICBzdXBwb3J0c0lubGluZUNvZGU6IHRydWUsXG4gICAgICBzdXBwb3J0c0NvZGVHdXJ1UHJvZmlsaW5nOiB0cnVlLFxuICAgIH0sXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSBQeXRob24gMy44IHJ1bnRpbWUgKHB5dGhvbjMuOClcbiAgICogQGRlcHJlY2F0ZWQgTGVnYWN5IHJ1bnRpbWUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSBBV1MgTGFtYmRhLiBNaWdyYXRlIHRvIHRoZSBsYXRlc3QgUHl0aG9uIHJ1bnRpbWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBZVEhPTl8zXzggPSBuZXcgUnVudGltZShcbiAgICBcInB5dGhvbjMuOFwiLFxuICAgIFJ1bnRpbWVGYW1pbHkuUFlUSE9OLFxuICAgIHtcbiAgICAgIHN1cHBvcnRzSW5saW5lQ29kZTogdHJ1ZSxcbiAgICAgIHN1cHBvcnRzQ29kZUd1cnVQcm9maWxpbmc6IHRydWUsXG4gICAgfSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIFB5dGhvbiAzLjkgcnVudGltZSAocHl0aG9uMy45KVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQWVRIT05fM185ID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJweXRob24zLjlcIixcbiAgICBSdW50aW1lRmFtaWx5LlBZVEhPTixcbiAgICB7XG4gICAgICBzdXBwb3J0c0lubGluZUNvZGU6IHRydWUsXG4gICAgICBzdXBwb3J0c0NvZGVHdXJ1UHJvZmlsaW5nOiB0cnVlLFxuICAgIH0sXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSBQeXRob24gMy4xMCBydW50aW1lIChweXRob24zLjEwKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQWVRIT05fM18xMCA9IG5ldyBSdW50aW1lKFxuICAgIFwicHl0aG9uMy4xMFwiLFxuICAgIFJ1bnRpbWVGYW1pbHkuUFlUSE9OLFxuICAgIHtcbiAgICAgIHN1cHBvcnRzSW5saW5lQ29kZTogdHJ1ZSxcbiAgICAgIHN1cHBvcnRzQ29kZUd1cnVQcm9maWxpbmc6IHRydWUsXG4gICAgfSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIFB5dGhvbiAzLjExIHJ1bnRpbWUgKHB5dGhvbjMuMTEpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBZVEhPTl8zXzExID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJweXRob24zLjExXCIsXG4gICAgUnVudGltZUZhbWlseS5QWVRIT04sXG4gICAge1xuICAgICAgc3VwcG9ydHNJbmxpbmVDb2RlOiB0cnVlLFxuICAgICAgc3VwcG9ydHNDb2RlR3VydVByb2ZpbGluZzogdHJ1ZSxcbiAgICB9LFxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgUHl0aG9uIDMuMTIgcnVudGltZSAocHl0aG9uMy4xMilcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFlUSE9OXzNfMTIgPSBuZXcgUnVudGltZShcbiAgICBcInB5dGhvbjMuMTJcIixcbiAgICBSdW50aW1lRmFtaWx5LlBZVEhPTixcbiAgICB7XG4gICAgICBzdXBwb3J0c0lubGluZUNvZGU6IHRydWUsXG4gICAgICBzdXBwb3J0c0NvZGVHdXJ1UHJvZmlsaW5nOiB0cnVlLFxuICAgICAgc3VwcG9ydHNTbmFwU3RhcnQ6IHRydWUsXG4gICAgfSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIFB5dGhvbiAzLjEzIHJ1bnRpbWUgKHB5dGhvbjMuMTMpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBZVEhPTl8zXzEzID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJweXRob24zLjEzXCIsXG4gICAgUnVudGltZUZhbWlseS5QWVRIT04sXG4gICAge1xuICAgICAgc3VwcG9ydHNJbmxpbmVDb2RlOiB0cnVlLFxuICAgICAgc3VwcG9ydHNDb2RlR3VydVByb2ZpbGluZzogdHJ1ZSxcbiAgICAgIHN1cHBvcnRzU25hcFN0YXJ0OiB0cnVlLFxuICAgIH0sXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSBQeXRob24gMy4xNCBydW50aW1lIChweXRob24zLjE0KVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQWVRIT05fM18xNCA9IG5ldyBSdW50aW1lKFxuICAgIFwicHl0aG9uMy4xNFwiLFxuICAgIFJ1bnRpbWVGYW1pbHkuUFlUSE9OLFxuICAgIHtcbiAgICAgIHN1cHBvcnRzSW5saW5lQ29kZTogdHJ1ZSxcbiAgICAgIHN1cHBvcnRzQ29kZUd1cnVQcm9maWxpbmc6IHRydWUsXG4gICAgICBzdXBwb3J0c1NuYXBTdGFydDogdHJ1ZSxcbiAgICB9LFxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgSmF2YSA4IHJ1bnRpbWUgKGphdmE4KVxuICAgKiBAZGVwcmVjYXRlZCBMZWdhY3kgcnVudGltZSBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IEFXUyBMYW1iZGEuIE1pZ3JhdGUgdG8gdGhlIGxhdGVzdCBKYXZhIHJ1bnRpbWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEpBVkFfOCA9IG5ldyBSdW50aW1lKFwiamF2YThcIiwgUnVudGltZUZhbWlseS5KQVZBLCB7XG4gICAgc3VwcG9ydHNDb2RlR3VydVByb2ZpbGluZzogdHJ1ZSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFRoZSBKYXZhIDggQ29ycmV0dG8gcnVudGltZSAoamF2YTguYWwyKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBKQVZBXzhfQ09SUkVUVE8gPSBuZXcgUnVudGltZShcbiAgICBcImphdmE4LmFsMlwiLFxuICAgIFJ1bnRpbWVGYW1pbHkuSkFWQSxcbiAgICB7XG4gICAgICBzdXBwb3J0c0NvZGVHdXJ1UHJvZmlsaW5nOiB0cnVlLFxuICAgIH0sXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSBKYXZhIDExIHJ1bnRpbWUgKGphdmExMSlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSkFWQV8xMSA9IG5ldyBSdW50aW1lKFwiamF2YTExXCIsIFJ1bnRpbWVGYW1pbHkuSkFWQSwge1xuICAgIHN1cHBvcnRzQ29kZUd1cnVQcm9maWxpbmc6IHRydWUsXG4gICAgc3VwcG9ydHNTbmFwU3RhcnQ6IHRydWUsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBUaGUgSmF2YSAxNyBydW50aW1lIChqYXZhMTcpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEpBVkFfMTcgPSBuZXcgUnVudGltZShcImphdmExN1wiLCBSdW50aW1lRmFtaWx5LkpBVkEsIHtcbiAgICBzdXBwb3J0c0NvZGVHdXJ1UHJvZmlsaW5nOiB0cnVlLFxuICAgIHN1cHBvcnRzU25hcFN0YXJ0OiB0cnVlLFxuICB9KTtcblxuICAvKipcbiAgICogVGhlIEphdmEgMjEgcnVudGltZSAoamF2YTIxKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBKQVZBXzIxID0gbmV3IFJ1bnRpbWUoXCJqYXZhMjFcIiwgUnVudGltZUZhbWlseS5KQVZBLCB7XG4gICAgc3VwcG9ydHNDb2RlR3VydVByb2ZpbGluZzogdHJ1ZSxcbiAgICBzdXBwb3J0c1NuYXBTdGFydDogdHJ1ZSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFRoZSAuTkVUIDYgcnVudGltZSAoZG90bmV0NilcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRE9UTkVUXzYgPSBuZXcgUnVudGltZShcbiAgICBcImRvdG5ldDZcIixcbiAgICBSdW50aW1lRmFtaWx5LkRPVE5FVF9DT1JFLFxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgLk5FVCA4IHJ1bnRpbWUgKGRvdG5ldDgpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERPVE5FVF84ID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJkb3RuZXQ4XCIsXG4gICAgUnVudGltZUZhbWlseS5ET1RORVRfQ09SRSxcbiAgICB7XG4gICAgICBzdXBwb3J0c1NuYXBTdGFydDogdHJ1ZSxcbiAgICB9LFxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgLk5FVCA5IHJ1bnRpbWUgKGRvdG5ldDkpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERPVE5FVF85ID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJkb3RuZXQ5XCIsXG4gICAgUnVudGltZUZhbWlseS5ET1RORVRfQ09SRSxcbiAgICB7XG4gICAgICBzdXBwb3J0c1NuYXBTdGFydDogdHJ1ZSxcbiAgICB9LFxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgLk5FVCBDb3JlIDEuMCBydW50aW1lIChkb3RuZXRjb3JlMS4wKVxuICAgKiBAZGVwcmVjYXRlZCBMZWdhY3kgcnVudGltZSBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IEFXUyBMYW1iZGEuIE1pZ3JhdGUgdG8gdGhlIGxhdGVzdCAuTkVUIENvcmUgcnVudGltZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRE9UTkVUX0NPUkVfMSA9IG5ldyBSdW50aW1lKFxuICAgIFwiZG90bmV0Y29yZTEuMFwiLFxuICAgIFJ1bnRpbWVGYW1pbHkuRE9UTkVUX0NPUkUsXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSAuTkVUIENvcmUgMi4wIHJ1bnRpbWUgKGRvdG5ldGNvcmUyLjApXG4gICAqIEBkZXByZWNhdGVkIExlZ2FjeSBydW50aW1lIG5vIGxvbmdlciBzdXBwb3J0ZWQgYnkgQVdTIExhbWJkYS4gTWlncmF0ZSB0byB0aGUgbGF0ZXN0IC5ORVQgQ29yZSBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBET1RORVRfQ09SRV8yID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJkb3RuZXRjb3JlMi4wXCIsXG4gICAgUnVudGltZUZhbWlseS5ET1RORVRfQ09SRSxcbiAgKTtcblxuICAvKipcbiAgICogVGhlIC5ORVQgQ29yZSAyLjEgcnVudGltZSAoZG90bmV0Y29yZTIuMSlcbiAgICogQGRlcHJlY2F0ZWQgTGVnYWN5IHJ1bnRpbWUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSBBV1MgTGFtYmRhLiBNaWdyYXRlIHRvIHRoZSBsYXRlc3QgLk5FVCBDb3JlIHJ1bnRpbWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERPVE5FVF9DT1JFXzJfMSA9IG5ldyBSdW50aW1lKFxuICAgIFwiZG90bmV0Y29yZTIuMVwiLFxuICAgIFJ1bnRpbWVGYW1pbHkuRE9UTkVUX0NPUkUsXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSAuTkVUIENvcmUgMy4xIHJ1bnRpbWUgKGRvdG5ldGNvcmUzLjEpXG4gICAqIEBkZXByZWNhdGVkIExlZ2FjeSBydW50aW1lIG5vIGxvbmdlciBzdXBwb3J0ZWQgYnkgQVdTIExhbWJkYS4gTWlncmF0ZSB0byB0aGUgbGF0ZXN0IC5ORVQgQ29yZSBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBET1RORVRfQ09SRV8zXzEgPSBuZXcgUnVudGltZShcbiAgICBcImRvdG5ldGNvcmUzLjFcIixcbiAgICBSdW50aW1lRmFtaWx5LkRPVE5FVF9DT1JFLFxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgR28gMS54IHJ1bnRpbWUgKGdvMS54KVxuICAgKiBAZGVwcmVjYXRlZCBMZWdhY3kgcnVudGltZSBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IEFXUyBMYW1iZGEuIE1pZ3JhdGUgdG8gdGhlIFBST1ZJREVEX0FMMjAyMyBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBHT18xX1ggPSBuZXcgUnVudGltZShcImdvMS54XCIsIFJ1bnRpbWVGYW1pbHkuR08pO1xuXG4gIC8qKlxuICAgKiBUaGUgUnVieSAyLjUgcnVudGltZSAocnVieTIuNSlcbiAgICogQGRlcHJlY2F0ZWQgTGVnYWN5IHJ1bnRpbWUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSBBV1MgTGFtYmRhLiBNaWdyYXRlIHRvIHRoZSBsYXRlc3QgUnVieSBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBSVUJZXzJfNSA9IG5ldyBSdW50aW1lKFwicnVieTIuNVwiLCBSdW50aW1lRmFtaWx5LlJVQlkpO1xuXG4gIC8qKlxuICAgKiBUaGUgUnVieSAyLjcgcnVudGltZSAocnVieTIuNylcbiAgICogQGRlcHJlY2F0ZWQgTGVnYWN5IHJ1bnRpbWUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSBBV1MgTGFtYmRhLiBNaWdyYXRlIHRvIHRoZSBsYXRlc3QgUnVieSBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBSVUJZXzJfNyA9IG5ldyBSdW50aW1lKFwicnVieTIuN1wiLCBSdW50aW1lRmFtaWx5LlJVQlkpO1xuXG4gIC8qKlxuICAgKiBUaGUgUnVieSAzLjIgcnVudGltZSAocnVieTMuMilcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUlVCWV8zXzIgPSBuZXcgUnVudGltZShcInJ1YnkzLjJcIiwgUnVudGltZUZhbWlseS5SVUJZKTtcblxuICAvKipcbiAgICogVGhlIFJ1YnkgMy4zIHJ1bnRpbWUgKHJ1YnkzLjMpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFJVQllfM18zID0gbmV3IFJ1bnRpbWUoXCJydWJ5My4zXCIsIFJ1bnRpbWVGYW1pbHkuUlVCWSk7XG5cbiAgLyoqXG4gICAqIFRoZSBSdWJ5IDMuNCBydW50aW1lIChydWJ5My40KVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBSVUJZXzNfNCA9IG5ldyBSdW50aW1lKFwicnVieTMuNFwiLCBSdW50aW1lRmFtaWx5LlJVQlkpO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VzdG9tIHByb3ZpZGVkIHJ1bnRpbWUgKHByb3ZpZGVkKVxuICAgKiBAZGVwcmVjYXRlZCBMZWdhY3kgcnVudGltZSBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IEFXUyBMYW1iZGEuIE1pZ3JhdGUgdG8gdGhlIGxhdGVzdCBwcm92aWRlZC5hbDIwMjMgcnVudGltZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPVklERUQgPSBuZXcgUnVudGltZShcbiAgICBcInByb3ZpZGVkXCIsXG4gICAgUnVudGltZUZhbWlseS5PVEhFUixcbiAgKTtcblxuICAvKipcbiAgICogVGhlIGN1c3RvbSBwcm92aWRlZCBydW50aW1lIHdpdGggQW1hem9uIExpbnV4IDIgKHByb3ZpZGVkLmFsMilcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPVklERURfQUwyID0gbmV3IFJ1bnRpbWUoXG4gICAgXCJwcm92aWRlZC5hbDJcIixcbiAgICBSdW50aW1lRmFtaWx5Lk9USEVSLFxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VzdG9tIHByb3ZpZGVkIHJ1bnRpbWUgd2l0aCBBbWF6b24gTGludXggMjAyMyAocHJvdmlkZWQuYWwyMDIzKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9WSURFRF9BTDIwMjMgPSBuZXcgUnVudGltZShcbiAgICBcInByb3ZpZGVkLmFsMjAyM1wiLFxuICAgIFJ1bnRpbWVGYW1pbHkuT1RIRVIsXG4gICk7XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbCBydW50aW1lIGVudHJ5IHRvIGJlIHVzZWQgd2hlbiBmdW5jdGlvbiBpcyB1c2luZyBhIGRvY2tlciBpbWFnZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRlJPTV9JTUFHRSA9IG5ldyBSdW50aW1lKFwiRlJPTV9JTUFHRVwiKTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhpcyBydW50aW1lLCBhcyBleHBlY3RlZCBieSB0aGUgTGFtYmRhIHJlc291cmNlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYGBaaXBGaWxlYGAgKGFrYSBpbmxpbmUgY29kZSkgcHJvcGVydHkgY2FuIGJlIHVzZWQgd2l0aCB0aGlzXG4gICAqIHJ1bnRpbWUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3VwcG9ydHNJbmxpbmVDb2RlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcnVudGltZSBpcyBpbnRlZ3JhdGVkIHdpdGggYW5kIHN1cHBvcnRlZCBmb3IgcHJvZmlsaW5nIHVzaW5nIEFtYXpvbiBDb2RlR3VydSBQcm9maWxlci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdXBwb3J0c0NvZGVHdXJ1UHJvZmlsaW5nOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcnVudGltZSBzdXBwb3J0cyBzbmFwc3RhcnQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3VwcG9ydHNTbmFwU3RhcnQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBydW50aW1lIGZhbWlseS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmYW1pbHk/OiBSdW50aW1lRmFtaWx5O1xuXG4gIC8qKlxuICAgKiBUaGUgYnVuZGxpbmcgRG9ja2VyIGltYWdlIGZvciB0aGlzIHJ1bnRpbWUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYnVuZGxpbmdJbWFnZTogRG9ja2VySW1hZ2U7XG5cbiAgLyoqXG4gICAqIEVuYWJsZWQgZm9yIHJ1bnRpbWUgZW51bXMgdGhhdCBhbHdheXMgdGFyZ2V0IHRoZSBsYXRlc3QgYXZhaWxhYmxlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlzVmFyaWFibGU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGZhbWlseT86IFJ1bnRpbWVGYW1pbHksXG4gICAgcHJvcHM6IExhbWJkYVJ1bnRpbWVQcm9wcyA9IHt9LFxuICApIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMuc3VwcG9ydHNJbmxpbmVDb2RlID0gISFwcm9wcy5zdXBwb3J0c0lubGluZUNvZGU7XG4gICAgdGhpcy5mYW1pbHkgPSBmYW1pbHk7XG4gICAgdGhpcy5pc1ZhcmlhYmxlID0gISFwcm9wcy5pc1ZhcmlhYmxlO1xuXG4gICAgY29uc3QgaW1hZ2VOYW1lID1cbiAgICAgIHByb3BzLmJ1bmRsaW5nRG9ja2VySW1hZ2UgPz8gYHB1YmxpYy5lY3IuYXdzL3NhbS9idWlsZC0ke25hbWV9YDtcbiAgICB0aGlzLmJ1bmRsaW5nSW1hZ2UgPSBEb2NrZXJJbWFnZS5mcm9tUmVnaXN0cnkoaW1hZ2VOYW1lKTtcbiAgICB0aGlzLnN1cHBvcnRzQ29kZUd1cnVQcm9maWxpbmcgPSBwcm9wcy5zdXBwb3J0c0NvZGVHdXJ1UHJvZmlsaW5nID8/IGZhbHNlO1xuICAgIHRoaXMuc3VwcG9ydHNTbmFwU3RhcnQgPSBwcm9wcy5zdXBwb3J0c1NuYXBTdGFydCA/PyBmYWxzZTtcblxuICAgIFJ1bnRpbWUuQUxMLnB1c2godGhpcyk7XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgcHVibGljIHJ1bnRpbWVFcXVhbHMob3RoZXI6IFJ1bnRpbWUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgb3RoZXIubmFtZSA9PT0gdGhpcy5uYW1lICYmXG4gICAgICBvdGhlci5mYW1pbHkgPT09IHRoaXMuZmFtaWx5ICYmXG4gICAgICBvdGhlci5zdXBwb3J0c0lubGluZUNvZGUgPT09IHRoaXMuc3VwcG9ydHNJbmxpbmVDb2RlXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBsYXRlc3QgTGFtYmRhIG5vZGUgcnVudGltZSBhdmFpbGFibGUgYnkgQVdTIHJlZ2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGVybWluZUxhdGVzdE5vZGVSdW50aW1lKHNjb3BlOiBDb25zdHJ1Y3QpOiBSdW50aW1lIHtcbiAgLy8gUnVudGltZSByZWdpb25hbCBmYWN0IHNob3VsZCBhbHdheXMgcmV0dXJuIGEga25vd24gcnVudGltZSBzdHJpbmcgdGhhdCBSdW50aW1lIGNhbiBpbmRleCBvZmYsIGJ1dCBmb3IgdHlwZVxuICAvLyBzYWZldHkgd2UgYWxzbyBkZWZhdWx0IGl0IGhlcmUuXG4gIGNvbnN0IHJ1bnRpbWVOYW1lID0gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3Qoc2NvcGUpLnJlZ2lvbmFsRmFjdChcbiAgICBGYWN0TmFtZS5MQVRFU1RfTk9ERV9SVU5USU1FLFxuICAgIFJ1bnRpbWUuTk9ERUpTXzIyX1gubmFtZSxcbiAgKTtcbiAgcmV0dXJuIG5ldyBSdW50aW1lKHJ1bnRpbWVOYW1lLCBSdW50aW1lRmFtaWx5Lk5PREVKUywge1xuICAgIHN1cHBvcnRzSW5saW5lQ29kZTogdHJ1ZSxcbiAgICBpc1ZhcmlhYmxlOiB0cnVlLFxuICB9KTtcbn1cbiJdfQ==
@@ -143,7 +143,7 @@ class ScalableTarget extends aws_construct_1.AwsConstructBase {
143
143
  }
144
144
  exports.ScalableTarget = ScalableTarget;
145
145
  _a = JSII_RTTI_SYMBOL_1;
146
- ScalableTarget[_a] = { fqn: "terraconstructs.aws.compute.ScalableTarget", version: "0.1.9" };
146
+ ScalableTarget[_a] = { fqn: "terraconstructs.aws.compute.ScalableTarget", version: "0.2.0" };
147
147
  /**
148
148
  * The service that supports Application AutoScaling
149
149
  */
@@ -86,7 +86,7 @@ class Schedule {
86
86
  }
87
87
  exports.Schedule = Schedule;
88
88
  _a = JSII_RTTI_SYMBOL_1;
89
- Schedule[_a] = { fqn: "terraconstructs.aws.compute.Schedule", version: "0.1.9" };
89
+ Schedule[_a] = { fqn: "terraconstructs.aws.compute.Schedule", version: "0.2.0" };
90
90
  class LiteralSchedule extends Schedule {
91
91
  constructor(expressionString) {
92
92
  super();
@@ -469,7 +469,7 @@ class SecurityGroup extends SecurityGroupBase {
469
469
  }
470
470
  exports.SecurityGroup = SecurityGroup;
471
471
  _a = JSII_RTTI_SYMBOL_1;
472
- SecurityGroup[_a] = { fqn: "terraconstructs.aws.compute.SecurityGroup", version: "0.1.9" };
472
+ SecurityGroup[_a] = { fqn: "terraconstructs.aws.compute.SecurityGroup", version: "0.2.0" };
473
473
  /**
474
474
  * Fix up a direct rule to have fromPort/toPort defined
475
475
  */