terraconstructs 0.2.4 → 0.2.6

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 (412) hide show
  1. package/.jsii +3099 -2917
  2. package/CLAUDE.md +6 -6
  3. package/README.md +1 -1
  4. package/lib/asset-staging.js +3 -3
  5. package/lib/aws/arn.js +5 -5
  6. package/lib/aws/aws-asset-manager.js +9 -9
  7. package/lib/aws/aws-construct.js +1 -1
  8. package/lib/aws/aws-stack.d.ts +19 -4
  9. package/lib/aws/aws-stack.js +43 -18
  10. package/lib/aws/aws-tags.d.ts +1 -1
  11. package/lib/aws/aws-tags.js +5 -5
  12. package/lib/aws/cloudwatch/actions/appscaling.js +1 -1
  13. package/lib/aws/cloudwatch/actions/ec2.js +1 -1
  14. package/lib/aws/cloudwatch/actions/lambda.js +2 -2
  15. package/lib/aws/cloudwatch/actions/sns.js +1 -1
  16. package/lib/aws/cloudwatch/actions/ssm.js +2 -2
  17. package/lib/aws/cloudwatch/alarm-base.js +1 -1
  18. package/lib/aws/cloudwatch/alarm-rule.js +1 -1
  19. package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
  20. package/lib/aws/cloudwatch/alarm.d.ts +1 -1
  21. package/lib/aws/cloudwatch/alarm.js +10 -10
  22. package/lib/aws/cloudwatch/composite-alarm.d.ts +1 -1
  23. package/lib/aws/cloudwatch/composite-alarm.js +7 -7
  24. package/lib/aws/cloudwatch/dashboard.d.ts +1 -1
  25. package/lib/aws/cloudwatch/dashboard.js +7 -7
  26. package/lib/aws/cloudwatch/data-protection-policy.d.ts +1 -1
  27. package/lib/aws/cloudwatch/data-protection-policy.js +5 -5
  28. package/lib/aws/cloudwatch/graph.js +8 -8
  29. package/lib/aws/cloudwatch/layout.js +3 -3
  30. package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
  31. package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
  32. package/lib/aws/cloudwatch/log-group.d.ts +1 -1
  33. package/lib/aws/cloudwatch/log-group.js +7 -7
  34. package/lib/aws/cloudwatch/log-query.js +1 -1
  35. package/lib/aws/cloudwatch/log-stream.d.ts +1 -1
  36. package/lib/aws/cloudwatch/log-stream.js +3 -3
  37. package/lib/aws/cloudwatch/metric-filter.d.ts +1 -1
  38. package/lib/aws/cloudwatch/metric-filter.js +3 -3
  39. package/lib/aws/cloudwatch/metric.js +6 -6
  40. package/lib/aws/cloudwatch/pattern.js +3 -3
  41. package/lib/aws/cloudwatch/policy.d.ts +1 -1
  42. package/lib/aws/cloudwatch/policy.js +3 -3
  43. package/lib/aws/cloudwatch/private/drop-empty-object-at-the-end-of-an-array-token.d.ts +1 -1
  44. package/lib/aws/cloudwatch/private/drop-empty-object-at-the-end-of-an-array-token.js +1 -1
  45. package/lib/aws/cloudwatch/private/env-tokens.js +6 -6
  46. package/lib/aws/cloudwatch/query-definition.d.ts +1 -1
  47. package/lib/aws/cloudwatch/query-definition.js +4 -4
  48. package/lib/aws/cloudwatch/stats.js +1 -1
  49. package/lib/aws/cloudwatch/subscription-filter.d.ts +1 -1
  50. package/lib/aws/cloudwatch/subscription-filter.js +6 -6
  51. package/lib/aws/cloudwatch/text.js +1 -1
  52. package/lib/aws/cloudwatch/variable.js +3 -3
  53. package/lib/aws/cloudwatch/widget.js +1 -1
  54. package/lib/aws/compute/access-log.d.ts +1 -1
  55. package/lib/aws/compute/access-log.js +5 -5
  56. package/lib/aws/compute/activity.d.ts +1 -1
  57. package/lib/aws/compute/activity.js +5 -5
  58. package/lib/aws/compute/alb/application-listener-action.d.ts +1 -1
  59. package/lib/aws/compute/alb/application-listener-action.js +5 -5
  60. package/lib/aws/compute/alb/application-listener-certificate.js +3 -3
  61. package/lib/aws/compute/alb/application-listener-rule.js +9 -9
  62. package/lib/aws/compute/alb/application-listener.js +5 -5
  63. package/lib/aws/compute/alb/application-load-balancer.js +8 -8
  64. package/lib/aws/compute/alb/application-target-group.js +7 -7
  65. package/lib/aws/compute/alb/conditions.js +3 -3
  66. package/lib/aws/compute/alb/trust-store-revocation.js +3 -3
  67. package/lib/aws/compute/alb/trust-store.js +7 -7
  68. package/lib/aws/compute/api-definition.js +9 -9
  69. package/lib/aws/compute/api-key.js +6 -6
  70. package/lib/aws/compute/architecture.js +1 -1
  71. package/lib/aws/compute/aspects/require-imdsv2-aspect.d.ts +1 -1
  72. package/lib/aws/compute/aspects/require-imdsv2-aspect.js +6 -6
  73. package/lib/aws/compute/authorizer.js +1 -1
  74. package/lib/aws/compute/authorizers/identity-source.js +1 -1
  75. package/lib/aws/compute/authorizers/lambda.d.ts +1 -1
  76. package/lib/aws/compute/authorizers/lambda.js +6 -6
  77. package/lib/aws/compute/base-path-mapping.js +5 -5
  78. package/lib/aws/compute/base-scalable-attribute.js +1 -1
  79. package/lib/aws/compute/bastion-host.js +4 -4
  80. package/lib/aws/compute/chain.js +1 -1
  81. package/lib/aws/compute/client-vpn-authorization-rule.js +3 -3
  82. package/lib/aws/compute/client-vpn-endpoint.d.ts +1 -1
  83. package/lib/aws/compute/client-vpn-endpoint.js +9 -9
  84. package/lib/aws/compute/client-vpn-route.d.ts +1 -1
  85. package/lib/aws/compute/client-vpn-route.js +4 -4
  86. package/lib/aws/compute/code.d.ts +3 -3
  87. package/lib/aws/compute/code.js +15 -15
  88. package/lib/aws/compute/condition.js +1 -1
  89. package/lib/aws/compute/connections.js +1 -1
  90. package/lib/aws/compute/cors.js +1 -1
  91. package/lib/aws/compute/deployment.js +5 -5
  92. package/lib/aws/compute/domain-name.js +5 -5
  93. package/lib/aws/compute/event-invoke-config.d.ts +1 -1
  94. package/lib/aws/compute/event-invoke-config.js +3 -3
  95. package/lib/aws/compute/event-source-filter.js +2 -2
  96. package/lib/aws/compute/event-source-mapping.js +7 -7
  97. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
  98. package/lib/aws/compute/event-sources/s3.js +1 -1
  99. package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
  100. package/lib/aws/compute/event-sources/sqs.js +5 -5
  101. package/lib/aws/compute/fields.d.ts +1 -1
  102. package/lib/aws/compute/fields.js +12 -12
  103. package/lib/aws/compute/function-alias.d.ts +1 -1
  104. package/lib/aws/compute/function-alias.js +3 -3
  105. package/lib/aws/compute/function-base.d.ts +1 -1
  106. package/lib/aws/compute/function-base.js +10 -9
  107. package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
  108. package/lib/aws/compute/function-destinations/function.js +1 -1
  109. package/lib/aws/compute/function-destinations/sqs.js +1 -1
  110. package/lib/aws/compute/function-nodejs/bundling.js +6 -6
  111. package/lib/aws/compute/function-nodejs/function.js +4 -4
  112. package/lib/aws/compute/function-url.d.ts +1 -1
  113. package/lib/aws/compute/function-url.js +3 -3
  114. package/lib/aws/compute/function-vpc-config.generated.d.ts +5 -5
  115. package/lib/aws/compute/function-vpc-config.generated.js +1 -1
  116. package/lib/aws/compute/function.d.ts +2 -2
  117. package/lib/aws/compute/function.js +9 -9
  118. package/lib/aws/compute/gateway-response.d.ts +1 -1
  119. package/lib/aws/compute/gateway-response.js +4 -4
  120. package/lib/aws/compute/handler.js +1 -1
  121. package/lib/aws/compute/instance-types.js +1 -1
  122. package/lib/aws/compute/instance.d.ts +1 -1
  123. package/lib/aws/compute/instance.js +9 -9
  124. package/lib/aws/compute/integration.js +4 -4
  125. package/lib/aws/compute/integrations/aws.js +3 -3
  126. package/lib/aws/compute/integrations/http.js +1 -1
  127. package/lib/aws/compute/integrations/lambda.js +5 -5
  128. package/lib/aws/compute/integrations/mock.js +1 -1
  129. package/lib/aws/compute/integrations/stepfunctions.js +4 -4
  130. package/lib/aws/compute/ip-addresses.d.ts +1 -1
  131. package/lib/aws/compute/ip-addresses.js +10 -10
  132. package/lib/aws/compute/ipam.d.ts +1 -1
  133. package/lib/aws/compute/ipam.js +5 -5
  134. package/lib/aws/compute/key-pair.d.ts +1 -1
  135. package/lib/aws/compute/key-pair.js +6 -6
  136. package/lib/aws/compute/lambda-api.js +1 -1
  137. package/lib/aws/compute/launch-template.d.ts +1 -1
  138. package/lib/aws/compute/launch-template.js +12 -12
  139. package/lib/aws/compute/lb-shared/base-listener.js +9 -9
  140. package/lib/aws/compute/lb-shared/base-load-balancer.d.ts +2 -2
  141. package/lib/aws/compute/lb-shared/base-load-balancer.js +12 -12
  142. package/lib/aws/compute/lb-shared/base-target-group.d.ts +1 -1
  143. package/lib/aws/compute/lb-shared/base-target-group.js +15 -15
  144. package/lib/aws/compute/lb-shared/lb-listener-config.generated.d.ts +34 -34
  145. package/lib/aws/compute/lb-shared/lb-listener-config.generated.js +1 -1
  146. package/lib/aws/compute/lb-shared/lb-target-group-attachment-config.generated.d.ts +11 -6
  147. package/lib/aws/compute/lb-shared/lb-target-group-attachment-config.generated.js +1 -1
  148. package/lib/aws/compute/lb-shared/listener-action.d.ts +1 -1
  149. package/lib/aws/compute/lb-shared/listener-action.js +1 -1
  150. package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
  151. package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
  152. package/lib/aws/compute/lb-shared/util.js +5 -5
  153. package/lib/aws/compute/lb-targets/alb-target.js +3 -3
  154. package/lib/aws/compute/lb-targets/instance-target.js +2 -2
  155. package/lib/aws/compute/lb-targets/ip-target.js +1 -1
  156. package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
  157. package/lib/aws/compute/load-balancer.d.ts +1 -1
  158. package/lib/aws/compute/load-balancer.js +8 -8
  159. package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
  160. package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
  161. package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
  162. package/lib/aws/compute/machine-image/common.js +1 -1
  163. package/lib/aws/compute/machine-image/machine-image.js +10 -10
  164. package/lib/aws/compute/method.js +6 -6
  165. package/lib/aws/compute/model.js +5 -5
  166. package/lib/aws/compute/nat.js +10 -10
  167. package/lib/aws/compute/network-acl-types.js +2 -2
  168. package/lib/aws/compute/network-acl.d.ts +1 -1
  169. package/lib/aws/compute/network-acl.js +5 -5
  170. package/lib/aws/compute/nlb/network-listener-action.d.ts +1 -1
  171. package/lib/aws/compute/nlb/network-listener-action.js +2 -2
  172. package/lib/aws/compute/nlb/network-listener-certificate.js +2 -2
  173. package/lib/aws/compute/nlb/network-listener.js +5 -5
  174. package/lib/aws/compute/nlb/network-load-balancer.js +6 -6
  175. package/lib/aws/compute/nlb/network-target-group.js +4 -4
  176. package/lib/aws/compute/peer.js +7 -7
  177. package/lib/aws/compute/placement-group.d.ts +1 -1
  178. package/lib/aws/compute/placement-group.js +3 -3
  179. package/lib/aws/compute/port.js +5 -5
  180. package/lib/aws/compute/prefix-list.d.ts +1 -1
  181. package/lib/aws/compute/prefix-list.js +5 -5
  182. package/lib/aws/compute/private/context-stub.js +7 -7
  183. package/lib/aws/compute/private/ebs-util.d.ts +1 -1
  184. package/lib/aws/compute/private/ebs-util.js +3 -3
  185. package/lib/aws/compute/private/json-path.d.ts +1 -1
  186. package/lib/aws/compute/private/json-path.js +8 -8
  187. package/lib/aws/compute/requestvalidator.js +3 -3
  188. package/lib/aws/compute/resource.js +5 -5
  189. package/lib/aws/compute/restapi.d.ts +1 -1
  190. package/lib/aws/compute/restapi.js +11 -11
  191. package/lib/aws/compute/route.d.ts +1 -1
  192. package/lib/aws/compute/route.js +12 -12
  193. package/lib/aws/compute/runtime.js +3 -3
  194. package/lib/aws/compute/scalable-target.d.ts +1 -1
  195. package/lib/aws/compute/scalable-target.js +3 -3
  196. package/lib/aws/compute/schedule.js +4 -4
  197. package/lib/aws/compute/security-group.js +12 -12
  198. package/lib/aws/compute/stage.d.ts +1 -1
  199. package/lib/aws/compute/stage.js +6 -6
  200. package/lib/aws/compute/state-graph.js +1 -1
  201. package/lib/aws/compute/state-machine-fragment.js +1 -1
  202. package/lib/aws/compute/state-machine.d.ts +2 -2
  203. package/lib/aws/compute/state-machine.js +8 -8
  204. package/lib/aws/compute/states/choice.js +1 -1
  205. package/lib/aws/compute/states/custom-state.js +5 -5
  206. package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
  207. package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
  208. package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
  209. package/lib/aws/compute/states/distributed-map.js +4 -4
  210. package/lib/aws/compute/states/fail.js +4 -4
  211. package/lib/aws/compute/states/map-base.js +4 -4
  212. package/lib/aws/compute/states/map.js +1 -1
  213. package/lib/aws/compute/states/parallel.js +1 -1
  214. package/lib/aws/compute/states/pass.js +2 -2
  215. package/lib/aws/compute/states/state.js +4 -4
  216. package/lib/aws/compute/states/succeed.js +1 -1
  217. package/lib/aws/compute/states/task-base.js +2 -2
  218. package/lib/aws/compute/states/task.js +1 -1
  219. package/lib/aws/compute/states/wait.js +2 -2
  220. package/lib/aws/compute/step-scaling-action.js +5 -5
  221. package/lib/aws/compute/step-scaling-policy.js +7 -7
  222. package/lib/aws/compute/stepfunctions-api.js +2 -2
  223. package/lib/aws/compute/subnet-v2.d.ts +1 -1
  224. package/lib/aws/compute/subnet-v2.js +5 -5
  225. package/lib/aws/compute/subnet.js +4 -4
  226. package/lib/aws/compute/target-tracking-scaling-policy.js +3 -3
  227. package/lib/aws/compute/task-credentials.js +1 -1
  228. package/lib/aws/compute/task-input.js +1 -1
  229. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +5 -5
  230. package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
  231. package/lib/aws/compute/tasks/http/invoke.js +1 -1
  232. package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
  233. package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
  234. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
  235. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
  236. package/lib/aws/compute/types.js +1 -1
  237. package/lib/aws/compute/usage-plan.js +5 -5
  238. package/lib/aws/compute/user-data.d.ts +2 -2
  239. package/lib/aws/compute/user-data.js +10 -10
  240. package/lib/aws/compute/volume.d.ts +1 -1
  241. package/lib/aws/compute/volume.js +7 -7
  242. package/lib/aws/compute/vpc-endpoint-service.js +3 -3
  243. package/lib/aws/compute/vpc-endpoint.d.ts +1 -1
  244. package/lib/aws/compute/vpc-endpoint.js +13 -13
  245. package/lib/aws/compute/vpc-flow-logs.d.ts +1 -1
  246. package/lib/aws/compute/vpc-flow-logs.js +8 -8
  247. package/lib/aws/compute/vpc-link.js +5 -5
  248. package/lib/aws/compute/vpc-v2-base.js +6 -6
  249. package/lib/aws/compute/vpc-v2.d.ts +2 -2
  250. package/lib/aws/compute/vpc-v2.js +4 -4
  251. package/lib/aws/compute/vpc.d.ts +1 -1
  252. package/lib/aws/compute/vpc.js +24 -22
  253. package/lib/aws/compute/vpn.js +8 -8
  254. package/lib/aws/context-provider.js +4 -4
  255. package/lib/aws/edge/certificate.d.ts +1 -1
  256. package/lib/aws/edge/certificate.js +6 -6
  257. package/lib/aws/edge/distribution.d.ts +1 -1
  258. package/lib/aws/edge/distribution.js +9 -9
  259. package/lib/aws/edge/dns-alias-record-targets.d.ts +1 -1
  260. package/lib/aws/edge/dns-alias-record-targets.js +7 -7
  261. package/lib/aws/edge/dns-record.d.ts +1 -1
  262. package/lib/aws/edge/dns-record.js +19 -19
  263. package/lib/aws/edge/dns-zone.d.ts +2 -2
  264. package/lib/aws/edge/dns-zone.js +5 -5
  265. package/lib/aws/edge/function.d.ts +1 -1
  266. package/lib/aws/edge/function.js +4 -4
  267. package/lib/aws/edge/key-value-store.d.ts +1 -1
  268. package/lib/aws/edge/key-value-store.js +6 -6
  269. package/lib/aws/edge/origin.d.ts +1 -1
  270. package/lib/aws/edge/origin.js +6 -6
  271. package/lib/aws/edge/response-headers-policy.d.ts +1 -1
  272. package/lib/aws/edge/response-headers-policy.js +6 -6
  273. package/lib/aws/encryption/alias.d.ts +1 -1
  274. package/lib/aws/encryption/alias.js +8 -8
  275. package/lib/aws/encryption/key.d.ts +1 -1
  276. package/lib/aws/encryption/key.js +6 -6
  277. package/lib/aws/encryption/via-service-principal.js +1 -1
  278. package/lib/aws/iam/grant.js +3 -3
  279. package/lib/aws/iam/group.js +5 -5
  280. package/lib/aws/iam/instance-profile.d.ts +1 -1
  281. package/lib/aws/iam/instance-profile.js +3 -3
  282. package/lib/aws/iam/managed-policy.d.ts +1 -1
  283. package/lib/aws/iam/managed-policy.js +3 -3
  284. package/lib/aws/iam/oidc-provider.d.ts +1 -1
  285. package/lib/aws/iam/oidc-provider.js +3 -3
  286. package/lib/aws/iam/policy-document-config.generated.d.ts +9 -9
  287. package/lib/aws/iam/policy-document-config.generated.js +1 -1
  288. package/lib/aws/iam/policy-document.d.ts +1 -1
  289. package/lib/aws/iam/policy-document.js +5 -5
  290. package/lib/aws/iam/policy-statement-props.generated.d.ts +8 -8
  291. package/lib/aws/iam/policy-statement-props.generated.js +1 -1
  292. package/lib/aws/iam/policy-statement.d.ts +1 -1
  293. package/lib/aws/iam/policy-statement.js +8 -8
  294. package/lib/aws/iam/policy.js +3 -3
  295. package/lib/aws/iam/principals.js +25 -25
  296. package/lib/aws/iam/private/imported-role.js +3 -3
  297. package/lib/aws/iam/private/postprocess-policy-document.d.ts +1 -1
  298. package/lib/aws/iam/private/postprocess-policy-document.js +1 -1
  299. package/lib/aws/iam/private/util.d.ts +1 -1
  300. package/lib/aws/iam/private/util.js +5 -5
  301. package/lib/aws/iam/role.d.ts +1 -1
  302. package/lib/aws/iam/role.js +6 -6
  303. package/lib/aws/iam/saml-provider.d.ts +1 -1
  304. package/lib/aws/iam/saml-provider.js +6 -6
  305. package/lib/aws/iam/unknown-principal.js +4 -4
  306. package/lib/aws/iam/user.js +3 -3
  307. package/lib/aws/network/network.d.ts +1 -1
  308. package/lib/aws/network/network.js +1 -1
  309. package/lib/aws/network/simple-ipv4-vpc.js +12 -12
  310. package/lib/aws/network/subnet-group.d.ts +1 -1
  311. package/lib/aws/network/subnet-group.js +5 -5
  312. package/lib/aws/network/subnet.d.ts +1 -1
  313. package/lib/aws/network/subnet.js +6 -6
  314. package/lib/aws/notify/archive.d.ts +1 -1
  315. package/lib/aws/notify/archive.js +3 -3
  316. package/lib/aws/notify/connection.d.ts +1 -1
  317. package/lib/aws/notify/connection.js +5 -5
  318. package/lib/aws/notify/event-bus.d.ts +1 -1
  319. package/lib/aws/notify/event-bus.js +10 -10
  320. package/lib/aws/notify/event-pattern.d.ts +1 -1
  321. package/lib/aws/notify/event-pattern.js +5 -5
  322. package/lib/aws/notify/input.d.ts +1 -1
  323. package/lib/aws/notify/input.js +12 -12
  324. package/lib/aws/notify/kinesis-stream.d.ts +1 -1
  325. package/lib/aws/notify/kinesis-stream.js +7 -7
  326. package/lib/aws/notify/notification-rule.js +8 -8
  327. package/lib/aws/notify/policy.js +3 -3
  328. package/lib/aws/notify/queue-base.js +1 -1
  329. package/lib/aws/notify/queue-policy.js +3 -3
  330. package/lib/aws/notify/queue.d.ts +1 -1
  331. package/lib/aws/notify/queue.js +8 -8
  332. package/lib/aws/notify/resource-policy.js +3 -3
  333. package/lib/aws/notify/rule.d.ts +1 -1
  334. package/lib/aws/notify/rule.js +6 -6
  335. package/lib/aws/notify/schedule.js +4 -4
  336. package/lib/aws/notify/sns-grants.generated.js +1 -1
  337. package/lib/aws/notify/sqs-grants.generated.js +1 -1
  338. package/lib/aws/notify/subscription-filter.js +1 -1
  339. package/lib/aws/notify/subscription.js +6 -6
  340. package/lib/aws/notify/subscriptions/email.js +1 -1
  341. package/lib/aws/notify/subscriptions/lambda.js +4 -4
  342. package/lib/aws/notify/subscriptions/sms.js +1 -1
  343. package/lib/aws/notify/subscriptions/sqs.js +4 -4
  344. package/lib/aws/notify/subscriptions/url.js +4 -4
  345. package/lib/aws/notify/target.d.ts +1 -1
  346. package/lib/aws/notify/target.js +1 -1
  347. package/lib/aws/notify/targets/event-bus.js +1 -1
  348. package/lib/aws/notify/targets/function.js +1 -1
  349. package/lib/aws/notify/targets/log-group.js +2 -2
  350. package/lib/aws/notify/targets/sqs.js +1 -1
  351. package/lib/aws/notify/targets/state-machine.js +1 -1
  352. package/lib/aws/notify/targets/util.js +3 -3
  353. package/lib/aws/notify/topic-base.js +4 -4
  354. package/lib/aws/notify/topic.js +7 -7
  355. package/lib/aws/provider-config.generated.d.ts +42 -36
  356. package/lib/aws/provider-config.generated.js +1 -1
  357. package/lib/aws/region-lookup.js +4 -4
  358. package/lib/aws/storage/assets/image-asset.js +8 -8
  359. package/lib/aws/storage/assets/s3.js +1 -1
  360. package/lib/aws/storage/auth-token.js +2 -2
  361. package/lib/aws/storage/billing.js +1 -1
  362. package/lib/aws/storage/bucket-notifications.d.ts +1 -1
  363. package/lib/aws/storage/bucket-notifications.js +8 -8
  364. package/lib/aws/storage/bucket-policy.d.ts +1 -1
  365. package/lib/aws/storage/bucket-policy.js +3 -3
  366. package/lib/aws/storage/bucket-source.d.ts +1 -1
  367. package/lib/aws/storage/bucket-source.js +7 -7
  368. package/lib/aws/storage/bucket.d.ts +1 -1
  369. package/lib/aws/storage/bucket.js +8 -8
  370. package/lib/aws/storage/capacity.js +1 -1
  371. package/lib/aws/storage/cors-config.generated.d.ts +5 -5
  372. package/lib/aws/storage/cors-config.generated.js +1 -1
  373. package/lib/aws/storage/cors-rule-config.generated.d.ts +5 -5
  374. package/lib/aws/storage/cors-rule-config.generated.js +1 -1
  375. package/lib/aws/storage/ecr-repository.js +11 -11
  376. package/lib/aws/storage/encryption.d.ts +1 -1
  377. package/lib/aws/storage/encryption.js +5 -5
  378. package/lib/aws/storage/lifecycle-config.generated.d.ts +9 -9
  379. package/lib/aws/storage/lifecycle-config.generated.js +1 -1
  380. package/lib/aws/storage/notification-targets/function.js +2 -2
  381. package/lib/aws/storage/notification-targets/queue.js +4 -4
  382. package/lib/aws/storage/origin-access-identity.d.ts +2 -2
  383. package/lib/aws/storage/origin-access-identity.js +3 -3
  384. package/lib/aws/storage/parameter-util.js +5 -5
  385. package/lib/aws/storage/parameter.d.ts +2 -2
  386. package/lib/aws/storage/parameter.js +16 -16
  387. package/lib/aws/storage/stream-grants.js +1 -1
  388. package/lib/aws/storage/table-grants.js +1 -1
  389. package/lib/aws/storage/table.d.ts +1 -1
  390. package/lib/aws/storage/table.js +10 -10
  391. package/lib/aws/storage/website-config.generated.d.ts +8 -8
  392. package/lib/aws/storage/website-config.generated.js +1 -1
  393. package/lib/bundling.js +5 -5
  394. package/lib/construct-base.d.ts +1 -1
  395. package/lib/construct-base.js +10 -10
  396. package/lib/duration.js +9 -9
  397. package/lib/errors.js +1 -1
  398. package/lib/expiration.js +1 -1
  399. package/lib/fs/ignore.js +4 -4
  400. package/lib/fs/index.js +1 -1
  401. package/lib/private/terraform-dependables-aspect.d.ts +1 -1
  402. package/lib/private/terraform-dependables-aspect.js +6 -6
  403. package/lib/private/unique-resource-name.js +3 -3
  404. package/lib/size.js +6 -6
  405. package/lib/stack-base.d.ts +2 -2
  406. package/lib/stack-base.js +16 -16
  407. package/lib/terra-func.d.ts +1 -1
  408. package/lib/terra-func.js +18 -18
  409. package/lib/time-zone.js +1 -1
  410. package/lib/token.js +5 -5
  411. package/package.json +17 -17
  412. package/setup.js +2 -2
package/lib/stack-base.js CHANGED
@@ -4,12 +4,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.StackBase = void 0;
5
5
  exports.rootPathTo = rootPathTo;
6
6
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
7
- const provider_archive_1 = require("@cdktf/provider-archive");
8
- const cdktf_1 = require("cdktf");
7
+ const provider_archive_1 = require("@cdktn/provider-archive");
8
+ const cdktn_1 = require("cdktn");
9
9
  const constructs_1 = require("constructs");
10
10
  const errors_1 = require("./errors");
11
11
  const private_1 = require("./private");
12
- const TOKEN_RESOLVER = new cdktf_1.DefaultTokenResolver(new cdktf_1.StringConcat());
12
+ const TOKEN_RESOLVER = new cdktn_1.DefaultTokenResolver(new cdktn_1.StringConcat());
13
13
  const TERRASTACK_SYMBOL = Symbol.for("terraconstructs/lib.Stack");
14
14
  const VALID_GRID_UUID_REGEX = /^[A-Za-z0-9-]*$/;
15
15
  /**
@@ -17,7 +17,7 @@ const VALID_GRID_UUID_REGEX = /^[A-Za-z0-9-]*$/;
17
17
  *
18
18
  * Provides a reference to the grid UUID and environment name
19
19
  */
20
- class StackBase extends cdktf_1.TerraformStack {
20
+ class StackBase extends cdktn_1.TerraformStack {
21
21
  /**
22
22
  * Return whether the given object is a Stack.
23
23
  *
@@ -31,7 +31,7 @@ class StackBase extends cdktf_1.TerraformStack {
31
31
  * @param construct The construct to start the search from.
32
32
  */
33
33
  static ofTerraConstruct(construct) {
34
- const s = cdktf_1.TerraformStack.of(construct);
34
+ const s = cdktn_1.TerraformStack.of(construct);
35
35
  if (StackBase.isTerraStack(s)) {
36
36
  return s;
37
37
  }
@@ -49,7 +49,7 @@ class StackBase extends cdktf_1.TerraformStack {
49
49
  const node = constructs_1.Construct.isConstruct(construct) ? construct.node : construct;
50
50
  const stack = node.scopes
51
51
  .reverse()
52
- .find((component) => cdktf_1.TerraformStack.isStack(component));
52
+ .find((component) => cdktn_1.TerraformStack.isStack(component));
53
53
  if (!stack) {
54
54
  throw new Error("Unable to calculate a unique id without a stack in the construct path");
55
55
  }
@@ -72,7 +72,7 @@ class StackBase extends cdktf_1.TerraformStack {
72
72
  constructor(scope, id, props = {}) {
73
73
  // For unit test scope and id are optional for stacks, but we still want an App
74
74
  // as the parent because apps implement much of the synthesis logic.
75
- scope = scope ?? new cdktf_1.App();
75
+ scope = scope ?? new cdktn_1.App();
76
76
  // "Default" is a "hidden id" from a `node.uniqueId` perspective
77
77
  id = id ?? "Default";
78
78
  super(scope, id);
@@ -83,14 +83,14 @@ class StackBase extends cdktf_1.TerraformStack {
83
83
  }
84
84
  Object.defineProperty(this, TERRASTACK_SYMBOL, { value: true });
85
85
  if (props.gridBackendConfig) {
86
- this.gridBackend = new cdktf_1.HttpBackend(this, props.gridBackendConfig);
86
+ this.gridBackend = new cdktn_1.HttpBackend(this, props.gridBackendConfig);
87
87
  }
88
88
  if (!VALID_GRID_UUID_REGEX.test(this.gridUUID)) {
89
89
  throw new errors_1.ValidationError(`GridUUID must match the regular expression: ${VALID_GRID_UUID_REGEX.toString()}, got '${this.gridUUID}'`, this);
90
90
  }
91
91
  // Map construct tree dependencies to ITerraformDependables
92
92
  // ref: https://github.com/hashicorp/terraform-cdk/issues/2727#issuecomment-1473321075
93
- cdktf_1.Aspects.of(this).add(new private_1.TerraformDependencyAspect());
93
+ cdktn_1.Aspects.of(this).add(new private_1.TerraformDependencyAspect());
94
94
  // Aspects are invoked in synth after stack has been prepared
95
95
  // this should ensure any resources added during `prepareStack()` are included in the dependency tree
96
96
  // ref: https://github.com/hashicorp/terraform-cdk/blob/v0.20.9/packages/cdktf/lib/synthesize/synthesizer.ts#L121
@@ -117,7 +117,7 @@ class StackBase extends cdktf_1.TerraformStack {
117
117
  */
118
118
  uniqueResourceName(tfElement, options = {}) {
119
119
  const node = constructs_1.Construct.isConstruct(tfElement) ? tfElement.node : tfElement;
120
- const stack = cdktf_1.TerraformElement.isTerraformElement(tfElement)
120
+ const stack = cdktn_1.TerraformElement.isTerraformElement(tfElement)
121
121
  ? tfElement.cdktfStack
122
122
  : this;
123
123
  const stackIndex = node.scopes.indexOf(stack);
@@ -144,7 +144,7 @@ class StackBase extends cdktf_1.TerraformStack {
144
144
  */
145
145
  uniqueResourceNamePrefix(tfElement, options = {}) {
146
146
  const node = constructs_1.Construct.isConstruct(tfElement) ? tfElement.node : tfElement;
147
- const stack = cdktf_1.TerraformElement.isTerraformElement(tfElement)
147
+ const stack = cdktn_1.TerraformElement.isTerraformElement(tfElement)
148
148
  ? tfElement.cdktfStack
149
149
  : this;
150
150
  const stackIndex = node.scopes.indexOf(stack);
@@ -155,7 +155,7 @@ class StackBase extends cdktf_1.TerraformStack {
155
155
  }
156
156
  /** Resolve IResolvable in scope of this AwsStack */
157
157
  resolve(obj, preparing = false) {
158
- return cdktf_1.Tokenization.resolve(obj, {
158
+ return cdktn_1.Tokenization.resolve(obj, {
159
159
  scope: this,
160
160
  preparing,
161
161
  resolver: TOKEN_RESOLVER,
@@ -165,7 +165,7 @@ class StackBase extends cdktf_1.TerraformStack {
165
165
  * Convert an object, potentially containing tokens, to a JSON string
166
166
  */
167
167
  toJsonString(obj, space) {
168
- return cdktf_1.Lazy.stringValue({
168
+ return cdktn_1.Lazy.stringValue({
169
169
  produce: (ctx) => {
170
170
  // First resolve Token objects with string concat... then JSON.stringify the resulting object
171
171
  //
@@ -173,7 +173,7 @@ class StackBase extends cdktf_1.TerraformStack {
173
173
  // https://github.com/aws/aws-cdk/blob/8dca5079e1893122057f9e2c54c0da0ba644926e/packages/%40aws-cdk/core/lib/private/cloudformation-lang.ts#L73
174
174
  // intrinsic wrapper without cross stack ref
175
175
  // https://github.com/aws/aws-cdk/blob/14e4bc91ed5f0f8cb7c8ac9ee8a6de4da54e6585/packages/%40aws-cdk/core/lib/private/cloudformation-lang.ts#L50
176
- const resolved = cdktf_1.Tokenization.resolve(obj, {
176
+ const resolved = cdktn_1.Tokenization.resolve(obj, {
177
177
  preparing: ctx.preparing,
178
178
  scope: ctx.scope,
179
179
  resolver: TOKEN_RESOLVER,
@@ -198,7 +198,7 @@ class StackBase extends cdktf_1.TerraformStack {
198
198
  }
199
199
  exports.StackBase = StackBase;
200
200
  _a = JSII_RTTI_SYMBOL_1;
201
- StackBase[_a] = { fqn: "terraconstructs.StackBase", version: "0.2.4" };
201
+ StackBase[_a] = { fqn: "terraconstructs.StackBase", version: "0.2.6" };
202
202
  /**
203
203
  * Return the construct root path of the given construct relative to the given ancestor
204
204
  *
@@ -229,4 +229,4 @@ function makeGridUuid(components, prefix = "") {
229
229
  }
230
230
  return (0, private_1.makeUniqueResourceName)(components, { maxLength: 36, prefix: prefix });
231
231
  }
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGFjay1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFrWkEsZ0NBV0M7O0FBN1pELDhEQUFzRTtBQUN0RSxpQ0FZZTtBQUNmLDJDQUF5RDtBQUN6RCxxQ0FBMkM7QUFDM0MsdUNBSW1CO0FBRW5CLE1BQU0sY0FBYyxHQUFHLElBQUksNEJBQW9CLENBQUMsSUFBSSxvQkFBWSxFQUFFLENBQUMsQ0FBQztBQUVwRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUVsRSxNQUFNLHFCQUFxQixHQUFHLGlCQUFpQixDQUFDO0FBMkhoRDs7OztHQUlHO0FBQ0gsTUFBc0IsU0FBVSxTQUFRLHNCQUFjO0lBQ3BEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQU07UUFDL0IsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxpQkFBaUIsSUFBSSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFxQjtRQUNsRCxNQUFNLENBQUMsR0FBRyxzQkFBYyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QyxJQUFJLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLGFBQWEsU0FBUyxDQUFDLFdBQVcsRUFBRSxJQUFJLFNBQVMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLGdGQUFnRixDQUNySixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQTRCO1FBQ2pELE1BQU0sSUFBSSxHQUFHLHNCQUFTLENBQUMs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Ozs7O0dBTUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxVQUFvQixFQUFFLFNBQWlCLEVBQUU7SUFDN0QsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzVCLE1BQU0sUUFBUSxHQUFHLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQzFCLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxJQUFBLGdDQUFzQixFQUFDLFVBQVUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDL0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb3ZpZGVyIGFzIGFyY2hpdmVQcm92aWRlciB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXJjaGl2ZVwiO1xuaW1wb3J0IHtcbiAgVGVycmFmb3JtU3RhY2ssXG4gIFRlcnJhZm9ybUVsZW1lbnQsXG4gIEh0dHBCYWNrZW5kQ29uZmlnLFxuICBIdHRwQmFja2VuZCxcbiAgVG9rZW5pemF0aW9uLFxuICBEZWZhdWx0VG9rZW5SZXNvbHZlciwgLy8gaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tY2RrL2Jsb2IvdjAuMjAuOS9wYWNrYWdlcy9jZGt0Zi9saWIvdG9rZW5zL3Jlc29sdmFibGUudHMjTDE3NlxuICBTdHJpbmdDb25jYXQsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLWNkay9ibG9iL3YwLjIwLjkvcGFja2FnZXMvY2RrdGYvbGliL3Rva2Vucy9yZXNvbHZhYmxlLnRzI0wxNTZcbiAgQXNwZWN0cyxcbiAgSVJlc29sdmVDb250ZXh0LFxuICBMYXp5LFxuICBBcHAsXG59IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBJQ29uc3RydWN0LCBOb2RlIH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuaW1wb3J0IHtcbiAgbWFrZVVuaXF1ZVJlc291cmNlTmFtZSxcbiAgbWFrZVVuaXF1ZVJlc291cmNlTmFtZVByZWZpeCxcbiAgVGVycmFmb3JtRGVwZW5kZW5jeUFzcGVjdCxcbn0gZnJvbSBcIi4vcHJpdmF0ZVwiO1xuXG5jb25zdCBUT0tFTl9SRVNPTFZFUiA9IG5ldyBEZWZhdWx0VG9rZW5SZXNvbHZlcihuZXcgU3RyaW5nQ29uY2F0KCkpO1xuXG5jb25zdCBURVJSQVNUQUNLX1NZTUJPTCA9IFN5bWJvbC5mb3IoXCJ0ZXJyYWNvbnN0cnVjdHMvbGliLlN0YWNrXCIpO1xuXG5jb25zdCBWQUxJRF9HUklEX1VVSURfUkVHRVggPSAvXltBLVphLXowLTktXSokLztcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTU2LjAvcGFja2FnZXMvYXdzLWNkay1saWIvY29yZS9saWIvbmFtZXMudHNcblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyBhIHVuaXF1ZSByZXNvdXJjZSBuYW1lX3ByZWZpeC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmlxdWVSZXNvdXJjZU5hbWVQcmVmaXhPcHRpb25zXG4gIGV4dGVuZHMgVW5pcXVlUmVzb3VyY2VOYW1lT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBMZW5ndGggb2YgdGhlIHJhbmRvbSBnZW5lcmF0ZWQgc3VmZml4IGFkZGVkIGJ5IHNvbWUgVGVycmFmb3JtIHByb3ZpZGVycy5cbiAgICpcbiAgICogTk9URTogaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tcHJvdmlkZXItYXdzL2lzc3Vlcy82MjVcbiAgICogQGRlZmF1bHQgLSAyNlxuICAgKi9cbiAgcmVhZG9ubHkgc3VmZml4TGVuZ3RoPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgdW5pcXVlIHJlc291cmNlIG5hbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5pcXVlUmVzb3VyY2VOYW1lT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBsZW5ndGggb2YgdGhlIHVuaXF1ZSByZXNvdXJjZSBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIDI1NlxuICAgKi9cbiAgcmVhZG9ubHkgbWF4TGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VwYXJhdG9yIHVzZWQgYmV0d2VlbiB0aGUgcGF0aCBjb21wb25lbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHNlcGFyYXRvcj86IHN0cmluZztcblxuICAvKipcbiAgICogTm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFsbG93ZWQgaW4gdGhlIHVuaXF1ZSByZXNvdXJjZSBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRTcGVjaWFsQ2hhcmFjdGVycz86IHN0cmluZztcblxuICAvKipcbiAgICogUHJlZml4IHRvIGJlIGFkZGVkIGludG8gdGhlIHN0YWNrIG5hbWVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBwcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY29udmVydCB0aGUgcmVzb3VyY2UgbmFtZSB0byBsb3dlcmNhc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGxvd2VyQ2FzZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tCYXNlUHJvcHMge1xuICAvKipcbiAgICogVGVycmFDb25zdHJ1Y3QgVVVJRCB3aXRoaW4gdGhlIGdyaWQuXG4gICAqXG4gICAqIFVVSUQgaXMgZ2VuZXJhdGVkIGJ5IHRoZSBDTEkgYW5kIGVuc3VyZXMgcmVzb3VyY2UgSWRlbnRpdHlcbiAgICogaXMgZGVjb3VwbGVkIGZyb20gcmVzb3VyY2UgdGFnZ2luZyBmb3IgY29uc2lzdGVuY3kuXG4gICAqXG4gICAqIFVVSUQgbWF5IGJlIHVzZXIgcHJvdmlkZWQgZm9yIGltcG9ydGVkIHJlc291cmNlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkXG4gICAqL1xuICByZWFkb25seSBncmlkVVVJRD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IG5hbWUgcGFzc2VkIGluIGZyb20gdGhlIENMSVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogU3RvcmVzIHRoZSBzdGF0ZSB1c2luZyBhIHNpbXBsZSBSRVNUIGNsaWVudC5cbiAgICpcbiAgICogU3RhdGUgd2lsbCBiZSBmZXRjaGVkIHZpYSBHRVQsIHVwZGF0ZWQgdmlhIFBPU1QsIGFuZCBwdXJnZWQgd2l0aCBERUxFVEUuXG4gICAqIFRoZSBtZXRob2QgdXNlZCBmb3IgdXBkYXRpbmcgaXMgY29uZmlndXJhYmxlLlxuICAgKlxuICAgKiBUaGlzIGJhY2tlbmQgb3B0aW9uYWxseSBzdXBwb3J0cyBzdGF0ZSBsb2NraW5nLlxuICAgKiBXaGVuIGxvY2tpbmcgc3VwcG9ydCBpcyBlbmFibGVkIGl0IHdpbGwgdXNlIExPQ0sgYW5kIFVOTE9DSyByZXF1ZXN0cyBwcm92aWRpbmcgdGhlIGxvY2sgaW5mbyBpbiB0aGUgYm9keS5cbiAgICogVGhlIGVuZHBvaW50IHNob3VsZCByZXR1cm4gYSA0MjM6IExvY2tlZCBvciA0MDk6IENvbmZsaWN0IHdpdGggdGhlIGhvbGRpbmcgbG9jayBpbmZvIHdoZW5cbiAgICogaXQncyBhbHJlYWR5IHRha2VuLCAyMDA6IE9LIGZvciBzdWNjZXNzLiBBbnkgb3RoZXIgc3RhdHVzIHdpbGwgYmUgY29uc2lkZXJlZCBhbiBlcnJvci5cbiAgICogVGhlIElEIG9mIHRoZSBob2xkaW5nIGxvY2sgaW5mbyB3aWxsIGJlIGFkZGVkIGFzIGEgcXVlcnkgcGFyYW1ldGVyIHRvIHN0YXRlIHVwZGF0ZXMgcmVxdWVzdHMuXG4gICAqXG4gICAqIFJlYWQgbW9yZSBhYm91dCB0aGlzIGJhY2tlbmQgaW4gdGhlIFRlcnJhZm9ybSBkb2NzOlxuICAgKiBodHRwczovL2RldmVsb3Blci5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9sYW5ndWFnZS9zZXR0aW5ncy9iYWNrZW5kcy9odHRwXG4gICAqL1xuICByZWFkb25seSBncmlkQmFja2VuZENvbmZpZz86IEh0dHBCYWNrZW5kQ29uZmlnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdGFjayBleHRlbmRzIElDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogRW52aXJvbm1lbnQgTmFtZSBwYXNzZWQgaW4gZnJvbSB0aGUgQ0xJXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZ3JpZFVVSUQ6IHN0cmluZztcbiAgcmVhZG9ubHkgZ3JpZEJhY2tlbmQ/OiBIdHRwQmFja2VuZDtcblxuICAvKipcbiAgICogQSBzaW5nbGV0b24gQXJjaGl2ZSBQcm92aWRlciB1c2VkIHRvIGFyY2hpdmUgYXNzZXRzLlxuICAgKiBUaGlzIGlzIHVzZWQgZm9yIGV4YW1wbGUgZm9yIGlubGluZSBDb2RlIGNvbnRlbnQgaW4gYXdzIExhbWJkYSBGdW5jdGlvbnMuXG4gICAqXG4gICAqIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tcHJvdmlkZXItYXdzL2lzc3Vlcy85Nzc0I2lzc3VlY29tbWVudC02NjkzNTY3ODZcbiAgICovXG4gIHJlYWRvbmx5IGFyY2hpdmVQcm92aWRlcjogYXJjaGl2ZVByb3ZpZGVyLkFyY2hpdmVQcm92aWRlcjtcbiAgcmVzb2x2ZShvYmo6IGFueSwgcHJlcGFyaW5nPzogYm9vbGVhbik6IGFueTtcbiAgdW5pcXVlUmVzb3VyY2VOYW1lKFxuICAgIHRmRWxlbWVudDogVGVycmFmb3JtRWxlbWVudCB8IE5vZGUsXG4gICAgb3B0aW9ucz86IFVuaXF1ZVJlc291cmNlTmFtZU9wdGlvbnMsXG4gICk6IHN0cmluZztcbiAgdW5pcXVlUmVzb3VyY2VOYW1lUHJlZml4KFxuICAgIHRmRWxlbWVudDogVGVycmFmb3JtRWxlbWVudCB8IE5vZGUsXG4gICAgb3B0aW9ucz86IFVuaXF1ZVJlc291cmNlTmFtZVByZWZpeE9wdGlvbnMsXG4gICk6IHN0cmluZztcbiAgLy8gdG9Kc29uU3RyaW5nKG9iajogYW55LCBzcGFjZT86IG51bWJlcik6IHN0cmluZztcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBhbGwgVGVycmFDb25zdHJ1Y3RzIHN0YWNrc1xuICpcbiAqIFByb3ZpZGVzIGEgcmVmZXJlbmNlIHRvIHRoZSBncmlkIFVVSUQgYW5kIGVudmlyb25tZW50IG5hbWVcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFN0YWNrQmFzZSBleHRlbmRzIFRlcnJhZm9ybVN0YWNrIGltcGxlbWVudHMgSVN0YWNrIHtcbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBTdGFjay5cbiAgICpcbiAgICogYXR0cmlidXRlIGRldGVjdGlvbiBzaW5jZSBhcyAnaW5zdGFuY2VvZicgcG90ZW50aWFsbHkgZmFpbHMgYWNyb3NzIExpYnJhcnkgcmVsZWFzZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzVGVycmFTdGFjayh4OiBhbnkpOiB4IGlzIElTdGFjayB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09IFwib2JqZWN0XCIgJiYgVEVSUkFTVEFDS19TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb29rcyB1cCB0aGUgZmlyc3Qgc3RhY2sgc2NvcGUgaW4gd2hpY2ggYGNvbnN0cnVjdGAgaXMgZGVmaW5lZC4gRmFpbHMgaWYgdGhlcmUgaXMgbm8gc3RhY2sgdXAgdGhlIHRyZWUgb3IgdGhlIHN0YWNrIGlzIG5vdCBhbiBJU3RhY2suXG4gICAqIEBwYXJhbSBjb25zdHJ1Y3QgVGhlIGNvbnN0cnVjdCB0byBzdGFydCB0aGUgc2VhcmNoIGZyb20uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mVGVycmFDb25zdHJ1Y3QoY29uc3RydWN0OiBJQ29uc3RydWN0KTogSVN0YWNrIHtcbiAgICBjb25zdCBzID0gVGVycmFmb3JtU3RhY2sub2YoY29uc3RydWN0KTtcbiAgICBpZiAoU3RhY2tCYXNlLmlzVGVycmFTdGFjayhzKSkge1xuICAgICAgcmV0dXJuIHM7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBSZXNvdXJjZSAnJHtjb25zdHJ1Y3QuY29uc3RydWN0b3I/Lm5hbWV9JyBhdCAnJHtjb25zdHJ1Y3Qubm9kZS5wYXRofScgc2hvdWxkIGJlIGNyZWF0ZWQgaW4gdGhlIHNjb3BlIG9mIFRlcnJhQ29uc3RydWN0IElTdGFjaywgYnV0IG5vIElTdGFjayBmb3VuZGAsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGEgY29uc3RydWN0IGJhc2VkIG9uIGl0cyBwYXRoIHdpdGhpblxuICAgKiBhIFRlcnJhZm9ybVN0YWNrLiBzZWUgdW5pcXVlUmVzb3VyY2VOYW1lLCBidXQgd2l0aCBubyBzZXBhcmF0b3IsIG1heGltdW0gbGVuZ3RoIDI1NSBhbmQgYWxsb3dzXG4gICAqICBcIl9cIiBhbmQgXCItXCIgb24gdG9wIG9mIGFscGhhbnVtZXJpY2FsIGNoYXJhY3RlcnMuXG4gICAqXG4gICAqIEBwYXJhbSBjb25zdHJ1Y3QgVGhlIGNvbnN0cnVjdFxuICAgKiBAcmV0dXJucyBhIHVuaXF1ZSByZXNvdXJjZSBuYW1lIGJhc2VkIG9uIHRoZSBjb25zdHJ1Y3QgcGF0aFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1bmlxdWVJZChjb25zdHJ1Y3Q6IElDb25zdHJ1Y3QgfCBOb2RlKSB7XG4gICAgY29uc3Qgbm9kZSA9IENvbnN0cnVjdC5pc0NvbnN0cnVjdChjb25zdHJ1Y3QpID8gY29uc3RydWN0Lm5vZGUgOiBjb25zdHJ1Y3Q7XG4gICAgY29uc3Qgc3RhY2sgPSBub2RlLnNjb3Blc1xuICAgICAgLnJldmVyc2UoKVxuICAgICAgLmZpbmQoKGNvbXBvbmVudCkgPT4gVGVycmFmb3JtU3RhY2suaXNTdGFjayhjb21wb25lbnQpKTtcblxuICAgIGlmICghc3RhY2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJVbmFibGUgdG8gY2FsY3VsYXRlIGEgdW5pcXVlIGlkIHdpdGhvdXQgYSBzdGFjayBpbiB0aGUgY29uc3RydWN0IHBhdGhcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3BlY0luZGV4ID0gbm9kZS5zY29wZXMuaW5kZXhPZihzdGFjayk7XG4gICAgY29uc3QgY29tcG9uZW50c1BhdGggPSBub2RlLnNjb3Blc1xuICAgICAgLnNsaWNlKHNwZWNJbmRleClcbiAgICAgIC5tYXAoKGNvbXBvbmVudCkgPT4gY29tcG9uZW50Lm5vZGUuaWQpO1xuXG4gICAgcmV0dXJuIG1ha2VVbmlxdWVSZXNvdXJjZU5hbWUoY29tcG9uZW50c1BhdGgsIHtcbiAgICAgIG1heExlbmd0aDogMjU1LFxuICAgICAgLy8gYXZvaWQgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy82NDIxXG4gICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6IFwiXy1cIixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFjayB1bmlxdWUgZ3JpZCBpZGVudGlmaWVyXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9ncmlkVVVJRDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCBOYW1lIHBhc3NlZCBpbiBmcm9tIHRoZSBDTElcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Vudmlyb25tZW50TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZ3JpZCBwcm92aWRlZCBiYWNrZW5kIGZvciBzdGF0ZSBzdG9yYWdlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JpZEJhY2tlbmQ/OiBIdHRwQmFja2VuZDtcblxuICBwcml2YXRlIGFyY2hpdmVQcm92aWRlclNpbmdsZXRvbj86IGFyY2hpdmVQcm92aWRlci5BcmNoaXZlUHJvdmlkZXI7XG4gIHB1YmxpYyBnZXQgYXJjaGl2ZVByb3ZpZGVyKCk6IGFyY2hpdmVQcm92aWRlci5BcmNoaXZlUHJvdmlkZXIge1xuICAgIGlmICghdGhpcy5hcmNoaXZlUHJvdmlkZXJTaW5nbGV0b24pIHtcbiAgICAgIHRoaXMuYXJjaGl2ZVByb3ZpZGVyU2luZ2xldG9uID0gbmV3IGFyY2hpdmVQcm92aWRlci5BcmNoaXZlUHJvdmlkZXIoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiQXJjaGl2ZVByb3ZpZGVyXCIsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hcmNoaXZlUHJvdmlkZXJTaW5nbGV0b247XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzY29wZT86IENvbnN0cnVjdCwgaWQ/OiBzdHJpbmcsIHByb3BzOiBTdGFja0Jhc2VQcm9wcyA9IHt9KSB7XG4gICAgLy8gRm9yIHVuaXQgdGVzdCBzY29wZSBhbmQgaWQgYXJlIG9wdGlvbmFsIGZvciBzdGFja3MsIGJ1dCB3ZSBzdGlsbCB3YW50IGFuIEFwcFxuICAgIC8vIGFzIHRoZSBwYXJlbnQgYmVjYXVzZSBhcHBzIGltcGxlbWVudCBtdWNoIG9mIHRoZSBzeW50aGVzaXMgbG9naWMuXG4gICAgc2NvcGUgPSBzY29wZSA/PyBuZXcgQXBwKCk7XG5cbiAgICAvLyBcIkRlZmF1bHRcIiBpcyBhIFwiaGlkZGVuIGlkXCIgZnJvbSBhIGBub2RlLnVuaXF1ZUlkYCBwZXJzcGVjdGl2ZVxuICAgIGlkID0gaWQgPz8gXCJEZWZhdWx0XCI7XG5cbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuX2Vudmlyb25tZW50TmFtZSA9IHByb3BzLmVudmlyb25tZW50TmFtZSA/PyBcIkRlZmF1bHRcIjtcbiAgICB0aGlzLl9ncmlkVVVJRCA9IHByb3BzLmdyaWRVVUlEID8/IHRoaXMuZ2VuZXJhdGVHcmlkVXVpZCh0aGlzLCBcImdcIik7XG4gICAgaWYgKHRoaXMuZ3JpZFVVSUQubGVuZ3RoID4gMzYpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIGBHcmlkVVVJRCBtdXN0IGJlIDw9IDM2IGNoYXJhY3RlcnMuIEdyaWRVVUlEOiAnJHt0aGlzLmdyaWRVVUlEfSdgLFxuICAgICAgICB0aGlzLFxuICAgICAgKTtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIFRFUlJBU1RBQ0tfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuICAgIGlmIChwcm9wcy5ncmlkQmFja2VuZENvbmZpZykge1xuICAgICAgdGhpcy5ncmlkQmFja2VuZCA9IG5ldyBIdHRwQmFja2VuZCh0aGlzLCBwcm9wcy5ncmlkQmFja2VuZENvbmZpZyk7XG4gICAgfVxuXG4gICAgaWYgKCFWQUxJRF9HUklEX1VVSURfUkVHRVgudGVzdCh0aGlzLmdyaWRVVUlEKSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgYEdyaWRVVUlEIG11c3QgbWF0Y2ggdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbjogJHtWQUxJRF9HUklEX1VVSURfUkVHRVgudG9TdHJpbmcoKX0sIGdvdCAnJHt0aGlzLmdyaWRVVUlEfSdgLFxuICAgICAgICB0aGlzLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBNYXAgY29uc3RydWN0IHRyZWUgZGVwZW5kZW5jaWVzIHRvIElUZXJyYWZvcm1EZXBlbmRhYmxlc1xuICAgIC8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tY2RrL2lzc3Vlcy8yNzI3I2lzc3VlY29tbWVudC0xNDczMzIxMDc1XG4gICAgQXNwZWN0cy5vZih0aGlzKS5hZGQobmV3IFRlcnJhZm9ybURlcGVuZGVuY3lBc3BlY3QoKSk7XG4gICAgLy8gQXNwZWN0cyBhcmUgaW52b2tlZCBpbiBzeW50aCBhZnRlciBzdGFjayBoYXMgYmVlbiBwcmVwYXJlZFxuICAgIC8vIHRoaXMgc2hvdWxkIGVuc3VyZSBhbnkgcmVzb3VyY2VzIGFkZGVkIGR1cmluZyBgcHJlcGFyZVN0YWNrKClgIGFyZSBpbmNsdWRlZCBpbiB0aGUgZGVwZW5kZW5jeSB0cmVlXG4gICAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1jZGsvYmxvYi92MC4yMC45L3BhY2thZ2VzL2Nka3RmL2xpYi9zeW50aGVzaXplL3N5bnRoZXNpemVyLnRzI0wxMjFcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZ3JpZFVVSUQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZ3JpZFVVSUQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVudmlyb25tZW50TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudE5hbWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIFRlcnJhZm9ybS1jb21wYXRpYmxlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIFRlcnJhZm9ybSBFbGVtZW50IGJhc2VkXG4gICAqIG9uIGl0cyBwYXRoLiBUaGlzIGZ1bmN0aW9uIGZpbmRzIHRoZSBzdGFja05hbWUgb2YgdGhlIHBhcmVudCBzdGFjayAobm9uLW5lc3RlZClcbiAgICogdG8gdGhlIGNvbnN0cnVjdCwgYW5kIHRoZSBpZHMgb2YgdGhlIGNvbXBvbmVudHMgaW4gdGhlIGNvbnN0cnVjdCBwYXRoLlxuICAgKlxuICAgKiBUaGUgdXNlciBjYW4gZGVmaW5lIGFsbG93ZWQgc3BlY2lhbCBjaGFyYWN0ZXJzLCBhIHNlcGFyYXRvciBiZXR3ZWVuIHRoZSBlbGVtZW50cyxcbiAgICogYW5kIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiB0aGUgcmVzb3VyY2UgbmFtZS4gVGhlIG5hbWUgaW5jbHVkZXMgYSBodW1hbiByZWFkYWJsZSBwb3J0aW9uIHJlbmRlcmVkXG4gICAqIGZyb20gdGhlIHBhdGggY29tcG9uZW50cywgd2l0aCBvciB3aXRob3V0IHVzZXIgZGVmaW5lZCBzZXBhcmF0b3JzLCBhbmQgYSBoYXNoIHN1ZmZpeC5cbiAgICogSWYgdGhlIHJlc291cmNlIG5hbWUgaXMgbG9uZ2VyIHRoYW4gdGhlIG1heGltdW0gbGVuZ3RoLCBpdCBpcyB0cmltbWVkIGluIHRoZSBtaWRkbGUuXG4gICAqXG4gICAqIEBwYXJhbSB0ZkVsZW1lbnQgVGhlIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBkZWZpbmluZyB0aGUgdW5pcXVlIHJlc291cmNlIG5hbWVcbiAgICogQHJldHVybnMgYSB1bmlxdWUgcmVzb3VyY2UgbmFtZSBiYXNlZCBvbiB0aGUgY29uc3RydWN0IHBhdGhcbiAgICovXG4gIHB1YmxpYyB1bmlxdWVSZXNvdXJjZU5hbWUoXG4gICAgdGZFbGVtZW50OiBUZXJyYWZvcm1FbGVtZW50IHwgTm9kZSxcbiAgICBvcHRpb25zOiBVbmlxdWVSZXNvdXJjZU5hbWVPcHRpb25zID0ge30sXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm9kZSA9IENvbnN0cnVjdC5pc0NvbnN0cnVjdCh0ZkVsZW1lbnQpID8gdGZFbGVtZW50Lm5vZGUgOiB0ZkVsZW1lbnQ7XG4gICAgY29uc3Qgc3RhY2sgPSBUZXJyYWZvcm1FbGVtZW50LmlzVGVycmFmb3JtRWxlbWVudCh0ZkVsZW1lbnQpXG4gICAgICA/IHRmRWxlbWVudC5jZGt0ZlN0YWNrXG4gICAgICA6IHRoaXM7XG4gICAgY29uc3Qgc3RhY2tJbmRleCA9IG5vZGUuc2NvcGVzLmluZGV4T2Yoc3RhY2spO1xuICAgIGNvbnN0IGNvbXBvbmVudHNQYXRoID0gbm9kZS5zY29wZXNcbiAgICAgIC5zbGljZShzdGFja0luZGV4KVxuICAgICAgLm1hcCgoY29tcG9uZW50KSA9PiBjb21wb25lbnQubm9kZS5pZCk7XG5cbiAgICByZXR1cm4gbWFrZVVuaXF1ZVJlc291cmNlTmFtZShjb21wb25lbnRzUGF0aCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIFRlcnJhZm9ybS1jb21wYXRpYmxlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIFRlcnJhZm9ybSBFbGVtZW50IGJhc2VkXG4gICAqIG9uIGl0cyBwYXRoLiBUaGlzIGZ1bmN0aW9uIGZpbmRzIHRoZSBzdGFja05hbWUgb2YgdGhlIHBhcmVudCBzdGFjayAobm9uLW5lc3RlZClcbiAgICogdG8gdGhlIGNvbnN0cnVjdCwgYW5kIHRoZSBpZHMgb2YgdGhlIGNvbXBvbmVudHMgaW4gdGhlIGNvbnN0cnVjdCBwYXRoLlxuICAgKlxuICAgKiBUaGUgdXNlciBjYW4gZGVmaW5lIGFsbG93ZWQgc3BlY2lhbCBjaGFyYWN0ZXJzLCBhIHNlcGFyYXRvciBiZXR3ZWVuIHRoZSBlbGVtZW50cyxcbiAgICogYW5kIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiB0aGUgcmVzb3VyY2UgbmFtZS4gVGhlIG5hbWUgaW5jbHVkZXMgYSBodW1hbiByZWFkYWJsZSBwb3J0aW9uIHJlbmRlcmVkXG4gICAqIGZyb20gdGhlIHBhdGggY29tcG9uZW50cywgd2l0aCBvciB3aXRob3V0IHVzZXIgZGVmaW5lZCBzZXBhcmF0b3JzLCBhbmQgZGVwZW5kcyBvbiB0aGVcbiAgICogcmVzb3VyY2UgcHJvdmlkZXIgdG8gZ2VuZXJhdGUgdGhlIHJhbmRvbSBzdWZmaXguXG4gICAqXG4gICAqIElmIHRoZSByZXNvdXJjZSBuYW1lIGlzIGxvbmdlciB0aGFuIHRoZSBtYXhpbXVtIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgaXQgaXMgdHJpbW1lZCBpbiB0aGUgbWlkZGxlLlxuICAgKlxuICAgKiBAcGFyYW0gdGZFbGVtZW50IFRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgZGVmaW5pbmcgdGhlIHVuaXF1ZSByZXNvdXJjZSBuYW1lXG4gICAqIEByZXR1cm5zIGEgdW5pcXVlIHJlc291cmNlIG5hbWUgYmFzZWQgb24gdGhlIGNvbnN0cnVjdCBwYXRoXG4gICAqL1xuICBwdWJsaWMgdW5pcXVlUmVzb3VyY2VOYW1lUHJlZml4KFxuICAgIHRmRWxlbWVudDogVGVycmFmb3JtRWxlbWVudCB8IE5vZGUsXG4gICAgb3B0aW9uczogVW5pcXVlUmVzb3VyY2VOYW1lUHJlZml4T3B0aW9ucyA9IHt9LFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vZGUgPSBDb25zdHJ1Y3QuaXNDb25zdHJ1Y3QodGZFbGVtZW50KSA/IHRmRWxlbWVudC5ub2RlIDogdGZFbGVtZW50O1xuICAgIGNvbnN0IHN0YWNrID0gVGVycmFmb3JtRWxlbWVudC5pc1RlcnJhZm9ybUVsZW1lbnQodGZFbGVtZW50KVxuICAgICAgPyB0ZkVsZW1lbnQuY2RrdGZTdGFja1xuICAgICAgOiB0aGlzO1xuICAgIGNvbnN0IHN0YWNrSW5kZXggPSBub2RlLnNjb3Blcy5pbmRleE9mKHN0YWNrKTtcbiAgICBjb25zdCBjb21wb25lbnRzUGF0aCA9IG5vZGUuc2NvcGVzXG4gICAgICAuc2xpY2Uoc3RhY2tJbmRleClcbiAgICAgIC5tYXAoKGNvbXBvbmVudCkgPT4gY29tcG9uZW50Lm5vZGUuaWQpO1xuXG4gICAgcmV0dXJuIG1ha2VVbmlxdWVSZXNvdXJjZU5hbWVQcmVmaXgoY29tcG9uZW50c1BhdGgsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqIFJlc29sdmUgSVJlc29sdmFibGUgaW4gc2NvcGUgb2YgdGhpcyBBd3NTdGFjayAqL1xuICBwdWJsaWMgcmVzb2x2ZShvYmo6IGFueSwgcHJlcGFyaW5nID0gZmFsc2UpOiBhbnkge1xuICAgIHJldHVybiBUb2tlbml6YXRpb24ucmVzb2x2ZShvYmosIHtcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgcHJlcGFyaW5nLFxuICAgICAgcmVzb2x2ZXI6IFRPS0VOX1JFU09MVkVSLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYW4gb2JqZWN0LCBwb3RlbnRpYWxseSBjb250YWluaW5nIHRva2VucywgdG8gYSBKU09OIHN0cmluZ1xuICAgKi9cbiAgcHVibGljIHRvSnNvblN0cmluZyhvYmo6IGFueSwgc3BhY2U/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBMYXp5LnN0cmluZ1ZhbHVlKHtcbiAgICAgIHByb2R1Y2U6IChjdHg6IElSZXNvbHZlQ29udGV4dCkgPT4ge1xuICAgICAgICAvLyBGaXJzdCByZXNvbHZlIFRva2VuIG9iamVjdHMgd2l0aCBzdHJpbmcgY29uY2F0Li4uIHRoZW4gSlNPTi5zdHJpbmdpZnkgdGhlIHJlc3VsdGluZyBvYmplY3RcbiAgICAgICAgLy9cbiAgICAgICAgLy8gdW5saWtlIGNsb3VkZm9ybWF0aW9uLCBUZXJyYWZvcm0gZG9lcyBub3QgbmVlZCBhbiBpbnRyaW5zaWMgd3JhcHBlcj9cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvOGRjYTUwNzllMTg5MzEyMjA1N2Y5ZTJjNTRjMGRhMGJhNjQ0OTI2ZS9wYWNrYWdlcy8lNDBhd3MtY2RrL2NvcmUvbGliL3ByaXZhdGUvY2xvdWRmb3JtYXRpb24tbGFuZy50cyNMNzNcbiAgICAgICAgLy8gaW50cmluc2ljIHdyYXBwZXIgd2l0aG91dCBjcm9zcyBzdGFjayByZWZcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvMTRlNGJjOTFlZDVmMGY4Y2I3YzhhYzllZThhNmRlNGRhNTRlNjU4NS9wYWNrYWdlcy8lNDBhd3MtY2RrL2NvcmUvbGliL3ByaXZhdGUvY2xvdWRmb3JtYXRpb24tbGFuZy50cyNMNTBcbiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSBUb2tlbml6YXRpb24ucmVzb2x2ZShvYmosIHtcbiAgICAgICAgICBwcmVwYXJpbmc6IGN0eC5wcmVwYXJpbmcsXG4gICAgICAgICAgc2NvcGU6IGN0eC5zY29wZSxcbiAgICAgICAgICByZXNvbHZlcjogVE9LRU5fUkVTT0xWRVIsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocmVzb2x2ZWQsIHVuZGVmaW5lZCwgc3BhY2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhbiBJRCB3aXRoIHJlc3BlY3QgdG8gdGhlIGdpdmVuIGNvbnRhaW5lciBjb25zdHJ1Y3QuXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlR3JpZFV1aWQoXG4gICAgY29udGFpbmVyOiBJQ29uc3RydWN0IHwgdW5kZWZpbmVkLFxuICAgIHByZWZpeDogc3RyaW5nID0gXCJcIixcbiAgKSB7XG4gICAgY29uc3Qgcm9vdFBhdGggPSByb290UGF0aFRvKHRoaXMsIGNvbnRhaW5lcik7XG4gICAgY29uc3QgaWRzID0gcm9vdFBhdGgubWFwKChjKSA9PiBjLm5vZGUuaWQpO1xuXG4gICAgLy8gSW4gdW5pdCB0ZXN0cyBvdXIgU3RhY2sgKHdoaWNoIGlzIHRoZSBvbmx5IGNvbXBvbmVudCkgbWF5IG5vdCBoYXZlIGFuXG4gICAgLy8gaWQsIHNvIGluIHRoYXQgY2FzZSBqdXN0IHByZXRlbmQgaXQncyBcIlN0YWNrXCIuXG4gICAgaWYgKGlkcy5sZW5ndGggPT09IDEgJiYgIWlkc1swXSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgXCJ1bmV4cGVjdGVkOiBzdGFjayBpZCBtdXN0IGFsd2F5cyBiZSBkZWZpbmVkXCIsXG4gICAgICAgIHRoaXMsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBtYWtlR3JpZFV1aWQoaWRzLCBwcmVmaXgpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBjb25zdHJ1Y3Qgcm9vdCBwYXRoIG9mIHRoZSBnaXZlbiBjb25zdHJ1Y3QgcmVsYXRpdmUgdG8gdGhlIGdpdmVuIGFuY2VzdG9yXG4gKlxuICogSWYgbm8gYW5jZXN0b3IgaXMgZ2l2ZW4gb3IgdGhlIGFuY2VzdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJuIHRoZSBlbnRpcmUgcm9vdCBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcm9vdFBhdGhUbyhcbiAgY29uc3RydWN0OiBJQ29uc3RydWN0LFxuICBhbmNlc3Rvcj86IElDb25zdHJ1Y3QsXG4pOiBJQ29uc3RydWN0W10ge1xuICBjb25zdCBzY29wZXMgPSBjb25zdHJ1Y3Qubm9kZS5zY29wZXM7XG4gIGZvciAobGV0IGkgPSBzY29wZXMubGVuZ3RoIC0gMjsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoc2NvcGVzW2ldID09PSBhbmNlc3Rvcikge1xuICAgICAgcmV0dXJuIHNjb3Blcy5zbGljZShpICsgMSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzY29wZXM7XG59XG5cbi8qKlxuICogbWFrZVVuaXF1ZUlkLCBzcGVjaWFsaXplZCBmb3IgR3JpZCBVVUlEXG4gKlxuICogR3JpZCBVVUlEIG1heSBjb250YWluICctJywgc28gd2UgYWxsb3cgdGhhdCBjaGFyYWN0ZXIgaWYgdGhlIHN0YWNrIG5hbWVcbiAqIGhhcyBvbmx5IG9uZSBjb21wb25lbnQuIE90aGVyd2lzZSB3ZSBmYWxsIGJhY2sgdG8gdGhlIHJlZ3VsYXIgXCJtYWtlVW5pcXVlSWRcIlxuICogYmVoYXZpb3IuXG4gKi9cbmZ1bmN0aW9uIG1ha2VHcmlkVXVpZChjb21wb25lbnRzOiBzdHJpbmdbXSwgcHJlZml4OiBzdHJpbmcgPSBcIlwiKSB7XG4gIGlmIChjb21wb25lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIGNvbnN0IGdyaWRVdWlkID0gcHJlZml4ICsgY29tcG9uZW50c1swXTtcbiAgICBpZiAoZ3JpZFV1aWQubGVuZ3RoIDw9IDM2KSB7XG4gICAgICByZXR1cm4gZ3JpZFV1aWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBtYWtlVW5pcXVlUmVzb3VyY2VOYW1lKGNvbXBvbmVudHMsIHsgbWF4TGVuZ3RoOiAzNiwgcHJlZml4OiBwcmVmaXggfSk7XG59XG4iXX0=
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGFjay1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFrWkEsZ0NBV0M7O0FBN1pELDhEQUFzRTtBQUN0RSxpQ0FZZTtBQUNmLDJDQUF5RDtBQUN6RCxxQ0FBMkM7QUFDM0MsdUNBSW1CO0FBRW5CLE1BQU0sY0FBYyxHQUFHLElBQUksNEJBQW9CLENBQUMsSUFBSSxvQkFBWSxFQUFFLENBQUMsQ0FBQztBQUVwRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUVsRSxNQUFNLHFCQUFxQixHQUFHLGlCQUFpQixDQUFDO0FBMkhoRDs7OztHQUlHO0FBQ0gsTUFBc0IsU0FBVSxTQUFRLHNCQUFjO0lBQ3BEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQU07UUFDL0IsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxpQkFBaUIsSUFBSSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFxQjtRQUNsRCxNQUFNLENBQUMsR0FBRyxzQkFBYyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QyxJQUFJLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLGFBQWEsU0FBUyxDQUFDLFdBQVcsRUFBRSxJQUFJLFNBQVMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLGdGQUFnRixDQUNySixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQTRCO1FBQ2pELE1BQU0sSUFBSSxHQUFHLHNCQUFTLENBQUMs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Ozs7O0dBTUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxVQUFvQixFQUFFLFNBQWlCLEVBQUU7SUFDN0QsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzVCLE1BQU0sUUFBUSxHQUFHLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQzFCLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxJQUFBLGdDQUFzQixFQUFDLFVBQVUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDL0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb3ZpZGVyIGFzIGFyY2hpdmVQcm92aWRlciB9IGZyb20gXCJAY2RrdG4vcHJvdmlkZXItYXJjaGl2ZVwiO1xuaW1wb3J0IHtcbiAgVGVycmFmb3JtU3RhY2ssXG4gIFRlcnJhZm9ybUVsZW1lbnQsXG4gIEh0dHBCYWNrZW5kQ29uZmlnLFxuICBIdHRwQmFja2VuZCxcbiAgVG9rZW5pemF0aW9uLFxuICBEZWZhdWx0VG9rZW5SZXNvbHZlciwgLy8gaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tY2RrL2Jsb2IvdjAuMjAuOS9wYWNrYWdlcy9jZGt0Zi9saWIvdG9rZW5zL3Jlc29sdmFibGUudHMjTDE3NlxuICBTdHJpbmdDb25jYXQsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLWNkay9ibG9iL3YwLjIwLjkvcGFja2FnZXMvY2RrdGYvbGliL3Rva2Vucy9yZXNvbHZhYmxlLnRzI0wxNTZcbiAgQXNwZWN0cyxcbiAgSVJlc29sdmVDb250ZXh0LFxuICBMYXp5LFxuICBBcHAsXG59IGZyb20gXCJjZGt0blwiO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBJQ29uc3RydWN0LCBOb2RlIH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuaW1wb3J0IHtcbiAgbWFrZVVuaXF1ZVJlc291cmNlTmFtZSxcbiAgbWFrZVVuaXF1ZVJlc291cmNlTmFtZVByZWZpeCxcbiAgVGVycmFmb3JtRGVwZW5kZW5jeUFzcGVjdCxcbn0gZnJvbSBcIi4vcHJpdmF0ZVwiO1xuXG5jb25zdCBUT0tFTl9SRVNPTFZFUiA9IG5ldyBEZWZhdWx0VG9rZW5SZXNvbHZlcihuZXcgU3RyaW5nQ29uY2F0KCkpO1xuXG5jb25zdCBURVJSQVNUQUNLX1NZTUJPTCA9IFN5bWJvbC5mb3IoXCJ0ZXJyYWNvbnN0cnVjdHMvbGliLlN0YWNrXCIpO1xuXG5jb25zdCBWQUxJRF9HUklEX1VVSURfUkVHRVggPSAvXltBLVphLXowLTktXSokLztcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTU2LjAvcGFja2FnZXMvYXdzLWNkay1saWIvY29yZS9saWIvbmFtZXMudHNcblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyBhIHVuaXF1ZSByZXNvdXJjZSBuYW1lX3ByZWZpeC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmlxdWVSZXNvdXJjZU5hbWVQcmVmaXhPcHRpb25zXG4gIGV4dGVuZHMgVW5pcXVlUmVzb3VyY2VOYW1lT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBMZW5ndGggb2YgdGhlIHJhbmRvbSBnZW5lcmF0ZWQgc3VmZml4IGFkZGVkIGJ5IHNvbWUgVGVycmFmb3JtIHByb3ZpZGVycy5cbiAgICpcbiAgICogTk9URTogaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tcHJvdmlkZXItYXdzL2lzc3Vlcy82MjVcbiAgICogQGRlZmF1bHQgLSAyNlxuICAgKi9cbiAgcmVhZG9ubHkgc3VmZml4TGVuZ3RoPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgdW5pcXVlIHJlc291cmNlIG5hbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5pcXVlUmVzb3VyY2VOYW1lT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBsZW5ndGggb2YgdGhlIHVuaXF1ZSByZXNvdXJjZSBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIDI1NlxuICAgKi9cbiAgcmVhZG9ubHkgbWF4TGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VwYXJhdG9yIHVzZWQgYmV0d2VlbiB0aGUgcGF0aCBjb21wb25lbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHNlcGFyYXRvcj86IHN0cmluZztcblxuICAvKipcbiAgICogTm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFsbG93ZWQgaW4gdGhlIHVuaXF1ZSByZXNvdXJjZSBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRTcGVjaWFsQ2hhcmFjdGVycz86IHN0cmluZztcblxuICAvKipcbiAgICogUHJlZml4IHRvIGJlIGFkZGVkIGludG8gdGhlIHN0YWNrIG5hbWVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBwcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY29udmVydCB0aGUgcmVzb3VyY2UgbmFtZSB0byBsb3dlcmNhc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGxvd2VyQ2FzZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tCYXNlUHJvcHMge1xuICAvKipcbiAgICogVGVycmFDb25zdHJ1Y3QgVVVJRCB3aXRoaW4gdGhlIGdyaWQuXG4gICAqXG4gICAqIFVVSUQgaXMgZ2VuZXJhdGVkIGJ5IHRoZSBDTEkgYW5kIGVuc3VyZXMgcmVzb3VyY2UgSWRlbnRpdHlcbiAgICogaXMgZGVjb3VwbGVkIGZyb20gcmVzb3VyY2UgdGFnZ2luZyBmb3IgY29uc2lzdGVuY3kuXG4gICAqXG4gICAqIFVVSUQgbWF5IGJlIHVzZXIgcHJvdmlkZWQgZm9yIGltcG9ydGVkIHJlc291cmNlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkXG4gICAqL1xuICByZWFkb25seSBncmlkVVVJRD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IG5hbWUgcGFzc2VkIGluIGZyb20gdGhlIENMSVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogU3RvcmVzIHRoZSBzdGF0ZSB1c2luZyBhIHNpbXBsZSBSRVNUIGNsaWVudC5cbiAgICpcbiAgICogU3RhdGUgd2lsbCBiZSBmZXRjaGVkIHZpYSBHRVQsIHVwZGF0ZWQgdmlhIFBPU1QsIGFuZCBwdXJnZWQgd2l0aCBERUxFVEUuXG4gICAqIFRoZSBtZXRob2QgdXNlZCBmb3IgdXBkYXRpbmcgaXMgY29uZmlndXJhYmxlLlxuICAgKlxuICAgKiBUaGlzIGJhY2tlbmQgb3B0aW9uYWxseSBzdXBwb3J0cyBzdGF0ZSBsb2NraW5nLlxuICAgKiBXaGVuIGxvY2tpbmcgc3VwcG9ydCBpcyBlbmFibGVkIGl0IHdpbGwgdXNlIExPQ0sgYW5kIFVOTE9DSyByZXF1ZXN0cyBwcm92aWRpbmcgdGhlIGxvY2sgaW5mbyBpbiB0aGUgYm9keS5cbiAgICogVGhlIGVuZHBvaW50IHNob3VsZCByZXR1cm4gYSA0MjM6IExvY2tlZCBvciA0MDk6IENvbmZsaWN0IHdpdGggdGhlIGhvbGRpbmcgbG9jayBpbmZvIHdoZW5cbiAgICogaXQncyBhbHJlYWR5IHRha2VuLCAyMDA6IE9LIGZvciBzdWNjZXNzLiBBbnkgb3RoZXIgc3RhdHVzIHdpbGwgYmUgY29uc2lkZXJlZCBhbiBlcnJvci5cbiAgICogVGhlIElEIG9mIHRoZSBob2xkaW5nIGxvY2sgaW5mbyB3aWxsIGJlIGFkZGVkIGFzIGEgcXVlcnkgcGFyYW1ldGVyIHRvIHN0YXRlIHVwZGF0ZXMgcmVxdWVzdHMuXG4gICAqXG4gICAqIFJlYWQgbW9yZSBhYm91dCB0aGlzIGJhY2tlbmQgaW4gdGhlIFRlcnJhZm9ybSBkb2NzOlxuICAgKiBodHRwczovL2RldmVsb3Blci5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9sYW5ndWFnZS9zZXR0aW5ncy9iYWNrZW5kcy9odHRwXG4gICAqL1xuICByZWFkb25seSBncmlkQmFja2VuZENvbmZpZz86IEh0dHBCYWNrZW5kQ29uZmlnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdGFjayBleHRlbmRzIElDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogRW52aXJvbm1lbnQgTmFtZSBwYXNzZWQgaW4gZnJvbSB0aGUgQ0xJXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZ3JpZFVVSUQ6IHN0cmluZztcbiAgcmVhZG9ubHkgZ3JpZEJhY2tlbmQ/OiBIdHRwQmFja2VuZDtcblxuICAvKipcbiAgICogQSBzaW5nbGV0b24gQXJjaGl2ZSBQcm92aWRlciB1c2VkIHRvIGFyY2hpdmUgYXNzZXRzLlxuICAgKiBUaGlzIGlzIHVzZWQgZm9yIGV4YW1wbGUgZm9yIGlubGluZSBDb2RlIGNvbnRlbnQgaW4gYXdzIExhbWJkYSBGdW5jdGlvbnMuXG4gICAqXG4gICAqIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tcHJvdmlkZXItYXdzL2lzc3Vlcy85Nzc0I2lzc3VlY29tbWVudC02NjkzNTY3ODZcbiAgICovXG4gIHJlYWRvbmx5IGFyY2hpdmVQcm92aWRlcjogYXJjaGl2ZVByb3ZpZGVyLkFyY2hpdmVQcm92aWRlcjtcbiAgcmVzb2x2ZShvYmo6IGFueSwgcHJlcGFyaW5nPzogYm9vbGVhbik6IGFueTtcbiAgdW5pcXVlUmVzb3VyY2VOYW1lKFxuICAgIHRmRWxlbWVudDogVGVycmFmb3JtRWxlbWVudCB8IE5vZGUsXG4gICAgb3B0aW9ucz86IFVuaXF1ZVJlc291cmNlTmFtZU9wdGlvbnMsXG4gICk6IHN0cmluZztcbiAgdW5pcXVlUmVzb3VyY2VOYW1lUHJlZml4KFxuICAgIHRmRWxlbWVudDogVGVycmFmb3JtRWxlbWVudCB8IE5vZGUsXG4gICAgb3B0aW9ucz86IFVuaXF1ZVJlc291cmNlTmFtZVByZWZpeE9wdGlvbnMsXG4gICk6IHN0cmluZztcbiAgLy8gdG9Kc29uU3RyaW5nKG9iajogYW55LCBzcGFjZT86IG51bWJlcik6IHN0cmluZztcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBhbGwgVGVycmFDb25zdHJ1Y3RzIHN0YWNrc1xuICpcbiAqIFByb3ZpZGVzIGEgcmVmZXJlbmNlIHRvIHRoZSBncmlkIFVVSUQgYW5kIGVudmlyb25tZW50IG5hbWVcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFN0YWNrQmFzZSBleHRlbmRzIFRlcnJhZm9ybVN0YWNrIGltcGxlbWVudHMgSVN0YWNrIHtcbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBTdGFjay5cbiAgICpcbiAgICogYXR0cmlidXRlIGRldGVjdGlvbiBzaW5jZSBhcyAnaW5zdGFuY2VvZicgcG90ZW50aWFsbHkgZmFpbHMgYWNyb3NzIExpYnJhcnkgcmVsZWFzZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzVGVycmFTdGFjayh4OiBhbnkpOiB4IGlzIElTdGFjayB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09IFwib2JqZWN0XCIgJiYgVEVSUkFTVEFDS19TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb29rcyB1cCB0aGUgZmlyc3Qgc3RhY2sgc2NvcGUgaW4gd2hpY2ggYGNvbnN0cnVjdGAgaXMgZGVmaW5lZC4gRmFpbHMgaWYgdGhlcmUgaXMgbm8gc3RhY2sgdXAgdGhlIHRyZWUgb3IgdGhlIHN0YWNrIGlzIG5vdCBhbiBJU3RhY2suXG4gICAqIEBwYXJhbSBjb25zdHJ1Y3QgVGhlIGNvbnN0cnVjdCB0byBzdGFydCB0aGUgc2VhcmNoIGZyb20uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mVGVycmFDb25zdHJ1Y3QoY29uc3RydWN0OiBJQ29uc3RydWN0KTogSVN0YWNrIHtcbiAgICBjb25zdCBzID0gVGVycmFmb3JtU3RhY2sub2YoY29uc3RydWN0KTtcbiAgICBpZiAoU3RhY2tCYXNlLmlzVGVycmFTdGFjayhzKSkge1xuICAgICAgcmV0dXJuIHM7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBSZXNvdXJjZSAnJHtjb25zdHJ1Y3QuY29uc3RydWN0b3I/Lm5hbWV9JyBhdCAnJHtjb25zdHJ1Y3Qubm9kZS5wYXRofScgc2hvdWxkIGJlIGNyZWF0ZWQgaW4gdGhlIHNjb3BlIG9mIFRlcnJhQ29uc3RydWN0IElTdGFjaywgYnV0IG5vIElTdGFjayBmb3VuZGAsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGEgY29uc3RydWN0IGJhc2VkIG9uIGl0cyBwYXRoIHdpdGhpblxuICAgKiBhIFRlcnJhZm9ybVN0YWNrLiBzZWUgdW5pcXVlUmVzb3VyY2VOYW1lLCBidXQgd2l0aCBubyBzZXBhcmF0b3IsIG1heGltdW0gbGVuZ3RoIDI1NSBhbmQgYWxsb3dzXG4gICAqICBcIl9cIiBhbmQgXCItXCIgb24gdG9wIG9mIGFscGhhbnVtZXJpY2FsIGNoYXJhY3RlcnMuXG4gICAqXG4gICAqIEBwYXJhbSBjb25zdHJ1Y3QgVGhlIGNvbnN0cnVjdFxuICAgKiBAcmV0dXJucyBhIHVuaXF1ZSByZXNvdXJjZSBuYW1lIGJhc2VkIG9uIHRoZSBjb25zdHJ1Y3QgcGF0aFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1bmlxdWVJZChjb25zdHJ1Y3Q6IElDb25zdHJ1Y3QgfCBOb2RlKSB7XG4gICAgY29uc3Qgbm9kZSA9IENvbnN0cnVjdC5pc0NvbnN0cnVjdChjb25zdHJ1Y3QpID8gY29uc3RydWN0Lm5vZGUgOiBjb25zdHJ1Y3Q7XG4gICAgY29uc3Qgc3RhY2sgPSBub2RlLnNjb3Blc1xuICAgICAgLnJldmVyc2UoKVxuICAgICAgLmZpbmQoKGNvbXBvbmVudCkgPT4gVGVycmFmb3JtU3RhY2suaXNTdGFjayhjb21wb25lbnQpKTtcblxuICAgIGlmICghc3RhY2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJVbmFibGUgdG8gY2FsY3VsYXRlIGEgdW5pcXVlIGlkIHdpdGhvdXQgYSBzdGFjayBpbiB0aGUgY29uc3RydWN0IHBhdGhcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3BlY0luZGV4ID0gbm9kZS5zY29wZXMuaW5kZXhPZihzdGFjayk7XG4gICAgY29uc3QgY29tcG9uZW50c1BhdGggPSBub2RlLnNjb3Blc1xuICAgICAgLnNsaWNlKHNwZWNJbmRleClcbiAgICAgIC5tYXAoKGNvbXBvbmVudCkgPT4gY29tcG9uZW50Lm5vZGUuaWQpO1xuXG4gICAgcmV0dXJuIG1ha2VVbmlxdWVSZXNvdXJjZU5hbWUoY29tcG9uZW50c1BhdGgsIHtcbiAgICAgIG1heExlbmd0aDogMjU1LFxuICAgICAgLy8gYXZvaWQgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy82NDIxXG4gICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6IFwiXy1cIixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFjayB1bmlxdWUgZ3JpZCBpZGVudGlmaWVyXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9ncmlkVVVJRDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCBOYW1lIHBhc3NlZCBpbiBmcm9tIHRoZSBDTElcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Vudmlyb25tZW50TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZ3JpZCBwcm92aWRlZCBiYWNrZW5kIGZvciBzdGF0ZSBzdG9yYWdlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JpZEJhY2tlbmQ/OiBIdHRwQmFja2VuZDtcblxuICBwcml2YXRlIGFyY2hpdmVQcm92aWRlclNpbmdsZXRvbj86IGFyY2hpdmVQcm92aWRlci5BcmNoaXZlUHJvdmlkZXI7XG4gIHB1YmxpYyBnZXQgYXJjaGl2ZVByb3ZpZGVyKCk6IGFyY2hpdmVQcm92aWRlci5BcmNoaXZlUHJvdmlkZXIge1xuICAgIGlmICghdGhpcy5hcmNoaXZlUHJvdmlkZXJTaW5nbGV0b24pIHtcbiAgICAgIHRoaXMuYXJjaGl2ZVByb3ZpZGVyU2luZ2xldG9uID0gbmV3IGFyY2hpdmVQcm92aWRlci5BcmNoaXZlUHJvdmlkZXIoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiQXJjaGl2ZVByb3ZpZGVyXCIsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hcmNoaXZlUHJvdmlkZXJTaW5nbGV0b247XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzY29wZT86IENvbnN0cnVjdCwgaWQ/OiBzdHJpbmcsIHByb3BzOiBTdGFja0Jhc2VQcm9wcyA9IHt9KSB7XG4gICAgLy8gRm9yIHVuaXQgdGVzdCBzY29wZSBhbmQgaWQgYXJlIG9wdGlvbmFsIGZvciBzdGFja3MsIGJ1dCB3ZSBzdGlsbCB3YW50IGFuIEFwcFxuICAgIC8vIGFzIHRoZSBwYXJlbnQgYmVjYXVzZSBhcHBzIGltcGxlbWVudCBtdWNoIG9mIHRoZSBzeW50aGVzaXMgbG9naWMuXG4gICAgc2NvcGUgPSBzY29wZSA/PyBuZXcgQXBwKCk7XG5cbiAgICAvLyBcIkRlZmF1bHRcIiBpcyBhIFwiaGlkZGVuIGlkXCIgZnJvbSBhIGBub2RlLnVuaXF1ZUlkYCBwZXJzcGVjdGl2ZVxuICAgIGlkID0gaWQgPz8gXCJEZWZhdWx0XCI7XG5cbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuX2Vudmlyb25tZW50TmFtZSA9IHByb3BzLmVudmlyb25tZW50TmFtZSA/PyBcIkRlZmF1bHRcIjtcbiAgICB0aGlzLl9ncmlkVVVJRCA9IHByb3BzLmdyaWRVVUlEID8/IHRoaXMuZ2VuZXJhdGVHcmlkVXVpZCh0aGlzLCBcImdcIik7XG4gICAgaWYgKHRoaXMuZ3JpZFVVSUQubGVuZ3RoID4gMzYpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIGBHcmlkVVVJRCBtdXN0IGJlIDw9IDM2IGNoYXJhY3RlcnMuIEdyaWRVVUlEOiAnJHt0aGlzLmdyaWRVVUlEfSdgLFxuICAgICAgICB0aGlzLFxuICAgICAgKTtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIFRFUlJBU1RBQ0tfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuICAgIGlmIChwcm9wcy5ncmlkQmFja2VuZENvbmZpZykge1xuICAgICAgdGhpcy5ncmlkQmFja2VuZCA9IG5ldyBIdHRwQmFja2VuZCh0aGlzLCBwcm9wcy5ncmlkQmFja2VuZENvbmZpZyk7XG4gICAgfVxuXG4gICAgaWYgKCFWQUxJRF9HUklEX1VVSURfUkVHRVgudGVzdCh0aGlzLmdyaWRVVUlEKSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgYEdyaWRVVUlEIG11c3QgbWF0Y2ggdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbjogJHtWQUxJRF9HUklEX1VVSURfUkVHRVgudG9TdHJpbmcoKX0sIGdvdCAnJHt0aGlzLmdyaWRVVUlEfSdgLFxuICAgICAgICB0aGlzLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBNYXAgY29uc3RydWN0IHRyZWUgZGVwZW5kZW5jaWVzIHRvIElUZXJyYWZvcm1EZXBlbmRhYmxlc1xuICAgIC8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tY2RrL2lzc3Vlcy8yNzI3I2lzc3VlY29tbWVudC0xNDczMzIxMDc1XG4gICAgQXNwZWN0cy5vZih0aGlzKS5hZGQobmV3IFRlcnJhZm9ybURlcGVuZGVuY3lBc3BlY3QoKSk7XG4gICAgLy8gQXNwZWN0cyBhcmUgaW52b2tlZCBpbiBzeW50aCBhZnRlciBzdGFjayBoYXMgYmVlbiBwcmVwYXJlZFxuICAgIC8vIHRoaXMgc2hvdWxkIGVuc3VyZSBhbnkgcmVzb3VyY2VzIGFkZGVkIGR1cmluZyBgcHJlcGFyZVN0YWNrKClgIGFyZSBpbmNsdWRlZCBpbiB0aGUgZGVwZW5kZW5jeSB0cmVlXG4gICAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1jZGsvYmxvYi92MC4yMC45L3BhY2thZ2VzL2Nka3RmL2xpYi9zeW50aGVzaXplL3N5bnRoZXNpemVyLnRzI0wxMjFcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZ3JpZFVVSUQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZ3JpZFVVSUQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVudmlyb25tZW50TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudE5hbWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIFRlcnJhZm9ybS1jb21wYXRpYmxlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIFRlcnJhZm9ybSBFbGVtZW50IGJhc2VkXG4gICAqIG9uIGl0cyBwYXRoLiBUaGlzIGZ1bmN0aW9uIGZpbmRzIHRoZSBzdGFja05hbWUgb2YgdGhlIHBhcmVudCBzdGFjayAobm9uLW5lc3RlZClcbiAgICogdG8gdGhlIGNvbnN0cnVjdCwgYW5kIHRoZSBpZHMgb2YgdGhlIGNvbXBvbmVudHMgaW4gdGhlIGNvbnN0cnVjdCBwYXRoLlxuICAgKlxuICAgKiBUaGUgdXNlciBjYW4gZGVmaW5lIGFsbG93ZWQgc3BlY2lhbCBjaGFyYWN0ZXJzLCBhIHNlcGFyYXRvciBiZXR3ZWVuIHRoZSBlbGVtZW50cyxcbiAgICogYW5kIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiB0aGUgcmVzb3VyY2UgbmFtZS4gVGhlIG5hbWUgaW5jbHVkZXMgYSBodW1hbiByZWFkYWJsZSBwb3J0aW9uIHJlbmRlcmVkXG4gICAqIGZyb20gdGhlIHBhdGggY29tcG9uZW50cywgd2l0aCBvciB3aXRob3V0IHVzZXIgZGVmaW5lZCBzZXBhcmF0b3JzLCBhbmQgYSBoYXNoIHN1ZmZpeC5cbiAgICogSWYgdGhlIHJlc291cmNlIG5hbWUgaXMgbG9uZ2VyIHRoYW4gdGhlIG1heGltdW0gbGVuZ3RoLCBpdCBpcyB0cmltbWVkIGluIHRoZSBtaWRkbGUuXG4gICAqXG4gICAqIEBwYXJhbSB0ZkVsZW1lbnQgVGhlIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBkZWZpbmluZyB0aGUgdW5pcXVlIHJlc291cmNlIG5hbWVcbiAgICogQHJldHVybnMgYSB1bmlxdWUgcmVzb3VyY2UgbmFtZSBiYXNlZCBvbiB0aGUgY29uc3RydWN0IHBhdGhcbiAgICovXG4gIHB1YmxpYyB1bmlxdWVSZXNvdXJjZU5hbWUoXG4gICAgdGZFbGVtZW50OiBUZXJyYWZvcm1FbGVtZW50IHwgTm9kZSxcbiAgICBvcHRpb25zOiBVbmlxdWVSZXNvdXJjZU5hbWVPcHRpb25zID0ge30sXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm9kZSA9IENvbnN0cnVjdC5pc0NvbnN0cnVjdCh0ZkVsZW1lbnQpID8gdGZFbGVtZW50Lm5vZGUgOiB0ZkVsZW1lbnQ7XG4gICAgY29uc3Qgc3RhY2sgPSBUZXJyYWZvcm1FbGVtZW50LmlzVGVycmFmb3JtRWxlbWVudCh0ZkVsZW1lbnQpXG4gICAgICA/IHRmRWxlbWVudC5jZGt0ZlN0YWNrXG4gICAgICA6IHRoaXM7XG4gICAgY29uc3Qgc3RhY2tJbmRleCA9IG5vZGUuc2NvcGVzLmluZGV4T2Yoc3RhY2spO1xuICAgIGNvbnN0IGNvbXBvbmVudHNQYXRoID0gbm9kZS5zY29wZXNcbiAgICAgIC5zbGljZShzdGFja0luZGV4KVxuICAgICAgLm1hcCgoY29tcG9uZW50KSA9PiBjb21wb25lbnQubm9kZS5pZCk7XG5cbiAgICByZXR1cm4gbWFrZVVuaXF1ZVJlc291cmNlTmFtZShjb21wb25lbnRzUGF0aCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIFRlcnJhZm9ybS1jb21wYXRpYmxlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIFRlcnJhZm9ybSBFbGVtZW50IGJhc2VkXG4gICAqIG9uIGl0cyBwYXRoLiBUaGlzIGZ1bmN0aW9uIGZpbmRzIHRoZSBzdGFja05hbWUgb2YgdGhlIHBhcmVudCBzdGFjayAobm9uLW5lc3RlZClcbiAgICogdG8gdGhlIGNvbnN0cnVjdCwgYW5kIHRoZSBpZHMgb2YgdGhlIGNvbXBvbmVudHMgaW4gdGhlIGNvbnN0cnVjdCBwYXRoLlxuICAgKlxuICAgKiBUaGUgdXNlciBjYW4gZGVmaW5lIGFsbG93ZWQgc3BlY2lhbCBjaGFyYWN0ZXJzLCBhIHNlcGFyYXRvciBiZXR3ZWVuIHRoZSBlbGVtZW50cyxcbiAgICogYW5kIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiB0aGUgcmVzb3VyY2UgbmFtZS4gVGhlIG5hbWUgaW5jbHVkZXMgYSBodW1hbiByZWFkYWJsZSBwb3J0aW9uIHJlbmRlcmVkXG4gICAqIGZyb20gdGhlIHBhdGggY29tcG9uZW50cywgd2l0aCBvciB3aXRob3V0IHVzZXIgZGVmaW5lZCBzZXBhcmF0b3JzLCBhbmQgZGVwZW5kcyBvbiB0aGVcbiAgICogcmVzb3VyY2UgcHJvdmlkZXIgdG8gZ2VuZXJhdGUgdGhlIHJhbmRvbSBzdWZmaXguXG4gICAqXG4gICAqIElmIHRoZSByZXNvdXJjZSBuYW1lIGlzIGxvbmdlciB0aGFuIHRoZSBtYXhpbXVtIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgaXQgaXMgdHJpbW1lZCBpbiB0aGUgbWlkZGxlLlxuICAgKlxuICAgKiBAcGFyYW0gdGZFbGVtZW50IFRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgZGVmaW5pbmcgdGhlIHVuaXF1ZSByZXNvdXJjZSBuYW1lXG4gICAqIEByZXR1cm5zIGEgdW5pcXVlIHJlc291cmNlIG5hbWUgYmFzZWQgb24gdGhlIGNvbnN0cnVjdCBwYXRoXG4gICAqL1xuICBwdWJsaWMgdW5pcXVlUmVzb3VyY2VOYW1lUHJlZml4KFxuICAgIHRmRWxlbWVudDogVGVycmFmb3JtRWxlbWVudCB8IE5vZGUsXG4gICAgb3B0aW9uczogVW5pcXVlUmVzb3VyY2VOYW1lUHJlZml4T3B0aW9ucyA9IHt9LFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vZGUgPSBDb25zdHJ1Y3QuaXNDb25zdHJ1Y3QodGZFbGVtZW50KSA/IHRmRWxlbWVudC5ub2RlIDogdGZFbGVtZW50O1xuICAgIGNvbnN0IHN0YWNrID0gVGVycmFmb3JtRWxlbWVudC5pc1RlcnJhZm9ybUVsZW1lbnQodGZFbGVtZW50KVxuICAgICAgPyB0ZkVsZW1lbnQuY2RrdGZTdGFja1xuICAgICAgOiB0aGlzO1xuICAgIGNvbnN0IHN0YWNrSW5kZXggPSBub2RlLnNjb3Blcy5pbmRleE9mKHN0YWNrKTtcbiAgICBjb25zdCBjb21wb25lbnRzUGF0aCA9IG5vZGUuc2NvcGVzXG4gICAgICAuc2xpY2Uoc3RhY2tJbmRleClcbiAgICAgIC5tYXAoKGNvbXBvbmVudCkgPT4gY29tcG9uZW50Lm5vZGUuaWQpO1xuXG4gICAgcmV0dXJuIG1ha2VVbmlxdWVSZXNvdXJjZU5hbWVQcmVmaXgoY29tcG9uZW50c1BhdGgsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqIFJlc29sdmUgSVJlc29sdmFibGUgaW4gc2NvcGUgb2YgdGhpcyBBd3NTdGFjayAqL1xuICBwdWJsaWMgcmVzb2x2ZShvYmo6IGFueSwgcHJlcGFyaW5nID0gZmFsc2UpOiBhbnkge1xuICAgIHJldHVybiBUb2tlbml6YXRpb24ucmVzb2x2ZShvYmosIHtcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgcHJlcGFyaW5nLFxuICAgICAgcmVzb2x2ZXI6IFRPS0VOX1JFU09MVkVSLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYW4gb2JqZWN0LCBwb3RlbnRpYWxseSBjb250YWluaW5nIHRva2VucywgdG8gYSBKU09OIHN0cmluZ1xuICAgKi9cbiAgcHVibGljIHRvSnNvblN0cmluZyhvYmo6IGFueSwgc3BhY2U/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBMYXp5LnN0cmluZ1ZhbHVlKHtcbiAgICAgIHByb2R1Y2U6IChjdHg6IElSZXNvbHZlQ29udGV4dCkgPT4ge1xuICAgICAgICAvLyBGaXJzdCByZXNvbHZlIFRva2VuIG9iamVjdHMgd2l0aCBzdHJpbmcgY29uY2F0Li4uIHRoZW4gSlNPTi5zdHJpbmdpZnkgdGhlIHJlc3VsdGluZyBvYmplY3RcbiAgICAgICAgLy9cbiAgICAgICAgLy8gdW5saWtlIGNsb3VkZm9ybWF0aW9uLCBUZXJyYWZvcm0gZG9lcyBub3QgbmVlZCBhbiBpbnRyaW5zaWMgd3JhcHBlcj9cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvOGRjYTUwNzllMTg5MzEyMjA1N2Y5ZTJjNTRjMGRhMGJhNjQ0OTI2ZS9wYWNrYWdlcy8lNDBhd3MtY2RrL2NvcmUvbGliL3ByaXZhdGUvY2xvdWRmb3JtYXRpb24tbGFuZy50cyNMNzNcbiAgICAgICAgLy8gaW50cmluc2ljIHdyYXBwZXIgd2l0aG91dCBjcm9zcyBzdGFjayByZWZcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvMTRlNGJjOTFlZDVmMGY4Y2I3YzhhYzllZThhNmRlNGRhNTRlNjU4NS9wYWNrYWdlcy8lNDBhd3MtY2RrL2NvcmUvbGliL3ByaXZhdGUvY2xvdWRmb3JtYXRpb24tbGFuZy50cyNMNTBcbiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSBUb2tlbml6YXRpb24ucmVzb2x2ZShvYmosIHtcbiAgICAgICAgICBwcmVwYXJpbmc6IGN0eC5wcmVwYXJpbmcsXG4gICAgICAgICAgc2NvcGU6IGN0eC5zY29wZSxcbiAgICAgICAgICByZXNvbHZlcjogVE9LRU5fUkVTT0xWRVIsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocmVzb2x2ZWQsIHVuZGVmaW5lZCwgc3BhY2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhbiBJRCB3aXRoIHJlc3BlY3QgdG8gdGhlIGdpdmVuIGNvbnRhaW5lciBjb25zdHJ1Y3QuXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlR3JpZFV1aWQoXG4gICAgY29udGFpbmVyOiBJQ29uc3RydWN0IHwgdW5kZWZpbmVkLFxuICAgIHByZWZpeDogc3RyaW5nID0gXCJcIixcbiAgKSB7XG4gICAgY29uc3Qgcm9vdFBhdGggPSByb290UGF0aFRvKHRoaXMsIGNvbnRhaW5lcik7XG4gICAgY29uc3QgaWRzID0gcm9vdFBhdGgubWFwKChjKSA9PiBjLm5vZGUuaWQpO1xuXG4gICAgLy8gSW4gdW5pdCB0ZXN0cyBvdXIgU3RhY2sgKHdoaWNoIGlzIHRoZSBvbmx5IGNvbXBvbmVudCkgbWF5IG5vdCBoYXZlIGFuXG4gICAgLy8gaWQsIHNvIGluIHRoYXQgY2FzZSBqdXN0IHByZXRlbmQgaXQncyBcIlN0YWNrXCIuXG4gICAgaWYgKGlkcy5sZW5ndGggPT09IDEgJiYgIWlkc1swXSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgXCJ1bmV4cGVjdGVkOiBzdGFjayBpZCBtdXN0IGFsd2F5cyBiZSBkZWZpbmVkXCIsXG4gICAgICAgIHRoaXMsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBtYWtlR3JpZFV1aWQoaWRzLCBwcmVmaXgpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBjb25zdHJ1Y3Qgcm9vdCBwYXRoIG9mIHRoZSBnaXZlbiBjb25zdHJ1Y3QgcmVsYXRpdmUgdG8gdGhlIGdpdmVuIGFuY2VzdG9yXG4gKlxuICogSWYgbm8gYW5jZXN0b3IgaXMgZ2l2ZW4gb3IgdGhlIGFuY2VzdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJuIHRoZSBlbnRpcmUgcm9vdCBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcm9vdFBhdGhUbyhcbiAgY29uc3RydWN0OiBJQ29uc3RydWN0LFxuICBhbmNlc3Rvcj86IElDb25zdHJ1Y3QsXG4pOiBJQ29uc3RydWN0W10ge1xuICBjb25zdCBzY29wZXMgPSBjb25zdHJ1Y3Qubm9kZS5zY29wZXM7XG4gIGZvciAobGV0IGkgPSBzY29wZXMubGVuZ3RoIC0gMjsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoc2NvcGVzW2ldID09PSBhbmNlc3Rvcikge1xuICAgICAgcmV0dXJuIHNjb3Blcy5zbGljZShpICsgMSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzY29wZXM7XG59XG5cbi8qKlxuICogbWFrZVVuaXF1ZUlkLCBzcGVjaWFsaXplZCBmb3IgR3JpZCBVVUlEXG4gKlxuICogR3JpZCBVVUlEIG1heSBjb250YWluICctJywgc28gd2UgYWxsb3cgdGhhdCBjaGFyYWN0ZXIgaWYgdGhlIHN0YWNrIG5hbWVcbiAqIGhhcyBvbmx5IG9uZSBjb21wb25lbnQuIE90aGVyd2lzZSB3ZSBmYWxsIGJhY2sgdG8gdGhlIHJlZ3VsYXIgXCJtYWtlVW5pcXVlSWRcIlxuICogYmVoYXZpb3IuXG4gKi9cbmZ1bmN0aW9uIG1ha2VHcmlkVXVpZChjb21wb25lbnRzOiBzdHJpbmdbXSwgcHJlZml4OiBzdHJpbmcgPSBcIlwiKSB7XG4gIGlmIChjb21wb25lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIGNvbnN0IGdyaWRVdWlkID0gcHJlZml4ICsgY29tcG9uZW50c1swXTtcbiAgICBpZiAoZ3JpZFV1aWQubGVuZ3RoIDw9IDM2KSB7XG4gICAgICByZXR1cm4gZ3JpZFV1aWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBtYWtlVW5pcXVlUmVzb3VyY2VOYW1lKGNvbXBvbmVudHMsIHsgbWF4TGVuZ3RoOiAzNiwgcHJlZml4OiBwcmVmaXggfSk7XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { TerraformVariableConfig, Fn as tfFn } from "cdktf";
1
+ import { TerraformVariableConfig, Fn as tfFn } from "cdktn";
2
2
  import { Construct } from "constructs";
3
3
  /**
4
4
  * TerraConstructs helper functions.
package/lib/terra-func.js CHANGED
@@ -4,11 +4,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.Fn = void 0;
5
5
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  // https://github.com/aws/aws-cdk/blob/v/packages/aws-cdk-lib/core/lib/cfn-fn.ts
7
- const cdktf_1 = require("cdktf");
7
+ const cdktn_1 = require("cdktn");
8
8
  /**
9
9
  * TerraConstructs helper functions.
10
10
  */
11
- class Fn extends cdktf_1.Fn {
11
+ class Fn extends cdktn_1.Fn {
12
12
  /**
13
13
  * Split a string token into a token list of string values.
14
14
  *
@@ -54,20 +54,20 @@ class Fn extends cdktf_1.Fn {
54
54
  */
55
55
  static splitv2(delimiter, source, assumedLength) {
56
56
  // short-circuit if source is not a token
57
- if (!cdktf_1.Token.isUnresolved(source)) {
57
+ if (!cdktn_1.Token.isUnresolved(source)) {
58
58
  return source.split(delimiter);
59
59
  }
60
- if (cdktf_1.Token.isUnresolved(delimiter)) {
60
+ if (cdktn_1.Token.isUnresolved(delimiter)) {
61
61
  throw new Error("Fn.splitv2: 'delimiter' may not be a token value");
62
62
  }
63
- const split = cdktf_1.Token.asList(cdktf_1.Fn.split(delimiter, source));
63
+ const split = cdktn_1.Token.asList(cdktn_1.Fn.split(delimiter, source));
64
64
  if (assumedLength === undefined) {
65
65
  return split;
66
66
  }
67
- if (cdktf_1.Token.isUnresolved(assumedLength)) {
67
+ if (cdktn_1.Token.isUnresolved(assumedLength)) {
68
68
  throw new Error("Fn.split: 'assumedLength' may not be a token value");
69
69
  }
70
- return range(assumedLength).map((i) => cdktf_1.Fn.element(split, i));
70
+ return range(assumedLength).map((i) => cdktn_1.Fn.element(split, i));
71
71
  }
72
72
  /**
73
73
  * Similar to Fn.element, but with a shortcut if list is not unresolved
@@ -79,12 +79,12 @@ class Fn extends cdktf_1.Fn {
79
79
  */
80
80
  static select(index, array) {
81
81
  // short-circuit if source is not a token
82
- if (!cdktf_1.Token.isUnresolved(index) &&
83
- !cdktf_1.Token.isUnresolved(array) &&
84
- !array.some(cdktf_1.Token.isUnresolved)) {
82
+ if (!cdktn_1.Token.isUnresolved(index) &&
83
+ !cdktn_1.Token.isUnresolved(array) &&
84
+ !array.some(cdktn_1.Token.isUnresolved)) {
85
85
  return array[index];
86
86
  }
87
- return cdktf_1.Fn.element(array, index);
87
+ return cdktn_1.Fn.element(array, index);
88
88
  }
89
89
  /**
90
90
  * Given an url, parse the domain name
@@ -104,7 +104,7 @@ class Fn extends cdktf_1.Fn {
104
104
  */
105
105
  static importValue(scope, id, options = {}) {
106
106
  // TODO: This should be a terraform remote state data source instead
107
- const importVariable = new cdktf_1.TerraformVariable(scope, id, options);
107
+ const importVariable = new cdktn_1.TerraformVariable(scope, id, options);
108
108
  return importVariable.stringValue;
109
109
  }
110
110
  /**
@@ -129,13 +129,13 @@ class Fn extends cdktf_1.Fn {
129
129
  */
130
130
  static len(array) {
131
131
  // short-circuit if array is not a token
132
- if (!cdktf_1.Token.isUnresolved(array)) {
132
+ if (!cdktn_1.Token.isUnresolved(array)) {
133
133
  if (!Array.isArray(array)) {
134
134
  throw new Error("Fn.length() needs an array");
135
135
  }
136
136
  return array.length;
137
137
  }
138
- return cdktf_1.Fn.lengthOf(array);
138
+ return cdktn_1.Fn.lengthOf(array);
139
139
  }
140
140
  /**
141
141
  * {@link https://developer.hashicorp.com/terraform/language/functions/join join} produces a string by concatenating together all elements of a given list of strings with the given delimiter.
@@ -147,9 +147,9 @@ class Fn extends cdktf_1.Fn {
147
147
  * @param {Array<string>} values
148
148
  */
149
149
  static join(delimiter, values) {
150
- if (cdktf_1.Token.isUnresolved(values)) {
150
+ if (cdktn_1.Token.isUnresolved(values)) {
151
151
  // This is a list token, don't try to do smart things with it.
152
- return cdktf_1.Fn.join(delimiter, values);
152
+ return cdktn_1.Fn.join(delimiter, values);
153
153
  }
154
154
  if (values.length === 1) {
155
155
  return values[0];
@@ -159,7 +159,7 @@ class Fn extends cdktf_1.Fn {
159
159
  }
160
160
  exports.Fn = Fn;
161
161
  _a = JSII_RTTI_SYMBOL_1;
162
- Fn[_a] = { fqn: "terraconstructs.Fn", version: "0.2.4" };
162
+ Fn[_a] = { fqn: "terraconstructs.Fn", version: "0.2.6" };
163
163
  function range(n) {
164
164
  const ret = [];
165
165
  for (let i = 0; i < n; i++) {
@@ -167,4 +167,4 @@ function range(n) {
167
167
  }
168
168
  return ret;
169
169
  }
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmEtZnVuYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXJyYS1mdW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0ZBQWdGO0FBRWhGLGlDQUtlO0FBR2Y7O0dBRUc7QUFDSCxNQUFhLEVBQUcsU0FBUSxVQUFJO0lBQzFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0EwQ0c7SUFDSSxNQUFNLENBQUMsT0FBTyxDQUNuQixTQUFpQixFQUNqQixNQUFjLEVBQ2QsYUFBc0I7UUFFdEIseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxhQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDaEMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxJQUFJLGFBQUssQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLGFBQUssQ0FBQyxNQUFNLENBQUMsVUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMxRCxJQUFJLGFBQWEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxJQUFJLGFBQUssQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBQ0Q7Ozs7Ozs7T0FPRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBYSxFQUFFLEtBQWU7UUFDakQseUNBQXlDO1FBQ3pDLElBQ0UsQ0FBQyxhQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUMxQixDQUFDLGFBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1lBQzFCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFLLENBQUMsWUFBWSxDQUFDLEVBQy9CLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixDQUFDO1FBRUQsT0FBTyxVQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFXO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEQsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FDdkIsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLFVBQW1DLEVBQUU7UUFFckMsb0VBQW9FO1FBQ3BFLE1BQU0sY0FBYyxHQUFHLElBQUkseUJBQWlCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqRSxPQUFPLGNBQWMsQ0FBQyxXQUFXLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUMzQixLQUFnQixFQUNoQixtQkFBMkIsRUFDM0IsYUFBcUIsRUFDckIsU0FBUyxHQUFHLEdBQUc7UUFFZixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQ2YsU0FBUyxFQUNULEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLG1CQUFtQixDQUFDLEVBQzFDLGFBQWEsQ0FDZCxDQUFDO0lBQ0osQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFVO1FBQzFCLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsYUFBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUNoRCxDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxPQUFPLFVBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFpQixFQUFFLE1BQWdCO1FBQ3BELElBQUksYUFBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQy9CLDhEQUE4RDtZQUM5RCxPQUFPLFVBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoQyxDQUFDOztBQS9LSCxnQkFnTEM7OztBQUVELFNBQVMsS0FBSyxDQUFDLENBQVM7SUFDdEIsTUFBTSxHQUFHLEdBQWEsRUFBRSxDQUFDO0lBQ3pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMzQixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YvcGFja2FnZXMvYXdzLWNkay1saWIvY29yZS9saWIvY2ZuLWZuLnRzXG5cbmltcG9ydCB7XG4gIFRlcnJhZm9ybVZhcmlhYmxlLFxuICBUZXJyYWZvcm1WYXJpYWJsZUNvbmZpZyxcbiAgVG9rZW4sXG4gIEZuIGFzIHRmRm4sXG59IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuLyoqXG4gKiBUZXJyYUNvbnN0cnVjdHMgaGVscGVyIGZ1bmN0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEZuIGV4dGVuZHMgdGZGbiB7XG4gIC8qKlxuICAgKiBTcGxpdCBhIHN0cmluZyB0b2tlbiBpbnRvIGEgdG9rZW4gbGlzdCBvZiBzdHJpbmcgdmFsdWVzLlxuICAgKlxuICAgKiBTcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiBzcGxpdHMgd2l0aCBhIGRlbGltaXRlciBzdWNoIGFzICcsJyAoYSBjb21tYSkuXG4gICAqIFJlbmRlcnMgdG8gdGhlIGBzcGxpdGAgaW50cmluc2ljIHRlcnJhZm9ybSBmdW5jdGlvbi5cbiAgICpcbiAgICogTGlzdHMgd2l0aCB1bmtub3duIGxlbmd0aHMgKGRlZmF1bHQpXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICpcbiAgICogU2luY2UgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHdvcmsgd2l0aCBkZXBsb3ktdGltZSB2YWx1ZXMsIGlmIGBhc3N1bWVkTGVuZ3RoYFxuICAgKiBpcyBub3QgZ2l2ZW4gdGhlIENESyBjYW5ub3Qga25vdyB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgbGlzdCBhdCBzeW50aGVzaXMgdGltZS5cbiAgICogVGhpcyBicmluZ3MgdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6XG4gICAqXG4gICAqIC0gWW91IG11c3QgdXNlIGBGbi5lbGVtZW50KGxpc3QsIGkpYCB0byBwaWNrIGVsZW1lbnRzIG91dCBvZiB0aGUgbGlzdCAoeW91IG11c3Qgbm90IHVzZVxuICAgKiAgIGBsaXN0W2ldYCkuXG4gICAqIC0gWW91IGNhbm5vdCBhZGQgZWxlbWVudHMgdG8gdGhlIGxpc3QsIHJlbW92ZSBlbGVtZW50cyBmcm9tIHRoZSBsaXN0LFxuICAgKiAgIGNvbWJpbmUgdHdvIHN1Y2ggbGlzdHMgdG9nZXRoZXIsIG9yIHRha2UgYSBzbGljZSBvZiB0aGUgbGlzdC5cbiAgICogLSBZb3UgY2Fubm90IHBhc3MgdGhlIGxpc3QgdG8gY29uc3RydWN0cyB0aGF0IGRvIGFueSBvZiB0aGUgYWJvdmUuXG4gICAqXG4gICAqIFRoZSBvbmx5IHZhbGlkIG9wZXJhdGlvbiB3aXRoIHN1Y2ggYSB0b2tlbml6ZWQgbGlzdCBpcyB0byBwYXNzIGl0IHVubW9kaWZpZWQgdG8gYVxuICAgKiBUZXJyYWZvcm0gUmVzb3VyY2UgY29uc3RydWN0LlxuICAgKlxuICAgKiBMaXN0cyB3aXRoIGFzc3VtZWQgbGVuZ3Roc1xuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKlxuICAgKiBQYXNzIGBhc3N1bWVkTGVuZ3RoYCBpZiB5b3Uga25vdyB0aGUgbGVuZ3RoIG9mIHRoZSBsaXN0IHRoYXQgd2lsbCBiZVxuICAgKiBwcm9kdWNlZCBieSBzcGxpdHRpbmcuIFRoZSBhY3R1YWwgbGlzdCBsZW5ndGggYXQgZGVwbG95IHRpbWUgbWF5IGJlXG4gICAqICpsb25nZXIqIHRoYW4gdGhlIG51bWJlciB5b3UgcGFzcywgYnV0IG5vdCAqc2hvcnRlciouXG4gICAqXG4gICAqIFRoZSByZXR1cm5lZCBsaXN0IHdpbGwgbG9vayBsaWtlOlxuICAgKlxuICAgKiBgYGBcbiAgICogW0ZuLmVsZW1lbnQoc3BsaXQsIDApLCBGbi5lbGVtZW50KHNwbGl0LCAxKSwgRm4uZWxlbWVudChzcGxpdCwgMiksIC4uLl1cbiAgICogYGBgXG4gICAqXG4gICAqIFRoZSByZXN0cmljdGlvbnMgZnJvbSB0aGUgc2VjdGlvbiBcIkxpc3RzIHdpdGggdW5rbm93biBsZW5ndGhzXCIgd2lsbCBub3cgYmUgbGlmdGVkLFxuICAgKiBhdCB0aGUgZXhwZW5zZSBvZiBoYXZpbmcgdG8ga25vdyBhbmQgZml4IHRoZSBsZW5ndGggb2YgdGhlIGxpc3QuXG4gICAqXG4gICAqIEBwYXJhbSBkZWxpbWl0ZXIgQSBzdHJpbmcgdmFsdWUgdGhhdCBkZXRlcm1pbmVzIHdoZXJlIHRoZSBzb3VyY2Ugc3RyaW5nIGlzIGRpdmlkZWQuXG4gICAqIEBwYXJhbSBzb3VyY2UgVGhlIHN0cmluZyB2YWx1ZSB0aGF0IHlvdSB3YW50IHRvIHNwbGl0LlxuICAgKiBAcGFyYW0gYXNzdW1lZExlbmd0aCBUaGUgbGVuZ3RoIG9mIHRoZSBsaXN0IHRoYXQgd2lsbCBiZSBwcm9kdWNlZCBieSBzcGxpdHRpbmdcbiAgICogQHJldHVybnMgYSB0b2tlbiByZXByZXNlbnRlZCBhcyBhIHN0cmluZyBhcnJheVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzcGxpdHYyKFxuICAgIGRlbGltaXRlcjogc3RyaW5nLFxuICAgIHNvdXJjZTogc3RyaW5nLFxuICAgIGFzc3VtZWRMZW5ndGg/OiBudW1iZXIsXG4gICk6IHN0cmluZ1tdIHtcbiAgICAvLyBzaG9ydC1jaXJjdWl0IGlmIHNvdXJjZSBpcyBub3QgYSB0b2tlblxuICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiBzb3VyY2Uuc3BsaXQoZGVsaW1pdGVyKTtcbiAgICB9XG5cbiAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKGRlbGltaXRlcikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkZuLnNwbGl0djI6ICdkZWxpbWl0ZXInIG1heSBub3QgYmUgYSB0b2tlbiB2YWx1ZVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBzcGxpdCA9IFRva2VuLmFzTGlzdCh0ZkZuLnNwbGl0KGRlbGltaXRlciwgc291cmNlKSk7XG4gICAgaWYgKGFzc3VtZWRMZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHNwbGl0O1xuICAgIH1cblxuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQoYXNzdW1lZExlbmd0aCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkZuLnNwbGl0OiAnYXNzdW1lZExlbmd0aCcgbWF5IG5vdCBiZSBhIHRva2VuIHZhbHVlXCIpO1xuICAgIH1cblxuICAgIHJldHVybiByYW5nZShhc3N1bWVkTGVuZ3RoKS5tYXAoKGkpID0+IHRmRm4uZWxlbWVudChzcGxpdCwgaSkpO1xuICB9XG4gIC8qKlxuICAgKiBTaW1pbGFyIHRvIEZuLmVsZW1lbnQsIGJ1dCB3aXRoIGEgc2hvcnRjdXQgaWYgbGlzdCBpcyBub3QgdW5yZXNvbHZlZFxuICAgKlxuICAgKiBUaGUgaW50cmluc2ljIGZ1bmN0aW9uIGBgZWxlbWVudGBgIHJldHVybnMgYSBzaW5nbGUgb2JqZWN0IGZyb20gYSBsaXN0IG9mIG9iamVjdHMgYnkgaW5kZXguXG4gICAqIEBwYXJhbSBpbmRleCBUaGUgaW5kZXggb2YgdGhlIG9iamVjdCB0byByZXRyaWV2ZS4gVGhpcyBtdXN0IGJlIGEgdmFsdWUgZnJvbSB6ZXJvIHRvIE4tMSwgd2hlcmUgTiByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGFycmF5LlxuICAgKiBAcGFyYW0gYXJyYXkgVGhlIGxpc3Qgb2Ygb2JqZWN0cyB0byBzZWxlY3QgZnJvbS4gVGhpcyBsaXN0IG11c3Qgbm90IGJlIG51bGwsIG5vciBjYW4gaXQgaGF2ZSBudWxsIGVudHJpZXMuXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50ZWQgYXMgYSBzdHJpbmdcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0KGluZGV4OiBudW1iZXIsIGFycmF5OiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgLy8gc2hvcnQtY2lyY3VpdCBpZiBzb3VyY2UgaXMgbm90IGEgdG9rZW5cbiAgICBpZiAoXG4gICAgICAhVG9rZW4uaXNVbnJlc29sdmVkKGluZGV4KSAmJlxuICAgICAgIVRva2VuLmlzVW5yZXNvbHZlZChhcnJheSkgJiZcbiAgICAgICFhcnJheS5zb21lKFRva2VuLmlzVW5yZXNvbHZlZClcbiAgICApIHtcbiAgICAgIHJldHVybiBhcnJheVtpbmRleF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRmRm4uZWxlbWVudChhcnJheSwgaW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGFuIHVybCwgcGFyc2UgdGhlIGRvbWFpbiBuYW1lXG4gICAqIEBwYXJhbSB1cmwgdGhlIHVybCB0byBwYXJzZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBwYXJzZURvbWFpbk5hbWUodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vSHR0cHMgPSBGbi5zZWxlY3QoMSwgRm4uc3BsaXQoXCIvL1wiLCB1cmwpKTtcbiAgICByZXR1cm4gRm4uc2VsZWN0KDAsIEZuLnNwbGl0KFwiL1wiLCBub0h0dHBzKSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGludHJpbnNpYyBmdW5jdGlvbiBgYEZuOjpJbXBvcnRWYWx1ZWBgIHJldHVybnMgdGhlIHZhbHVlIG9mIGFuIG91dHB1dFxuICAgKiBleHBvcnRlZCBieSBhbm90aGVyIHN0YWNrLiBZb3UgdHlwaWNhbGx5IHVzZSB0aGlzIGZ1bmN0aW9uIHRvIGNyZWF0ZVxuICAgKiBjcm9zcy1zdGFjayByZWZlcmVuY2VzLiBJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUgdGVtcGxhdGUgc25pcHBldHMsIFN0YWNrIEFcbiAgICogZXhwb3J0cyBWUEMgc2VjdXJpdHkgZ3JvdXAgdmFsdWVzIGFuZCBTdGFjayBCIGltcG9ydHMgdGhlbS5cbiAgICogQHBhcmFtIGlkIFRoZSBzdGFjayBvdXRwdXQgdmFsdWUgdGhhdCB5b3Ugd2FudCB0byBpbXBvcnQuXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50ZWQgYXMgYSBzdHJpbmdcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaW1wb3J0VmFsdWUoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFRlcnJhZm9ybVZhcmlhYmxlQ29uZmlnID0ge30sXG4gICk6IHN0cmluZyB7XG4gICAgLy8gVE9ETzogVGhpcyBzaG91bGQgYmUgYSB0ZXJyYWZvcm0gcmVtb3RlIHN0YXRlIGRhdGEgc291cmNlIGluc3RlYWRcbiAgICBjb25zdCBpbXBvcnRWYXJpYWJsZSA9IG5ldyBUZXJyYWZvcm1WYXJpYWJsZShzY29wZSwgaWQsIG9wdGlvbnMpO1xuICAgIHJldHVybiBpbXBvcnRWYXJpYWJsZS5zdHJpbmdWYWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaWtlIGBGbi5pbXBvcnRWYWx1ZWAsIGJ1dCBpbXBvcnQgYSBsaXN0IHdpdGggYSBrbm93biBsZW5ndGhcbiAgICpcbiAgICogSWYgeW91IGV4cGxpY2l0bHkgd2FudCBhIGxpc3Qgd2l0aCBhbiB1bmtub3duIGxlbmd0aCwgY2FsbCBgRm4uc3BsaXR2MignLCcsXG4gICAqIEZuLmltcG9ydFZhbHVlKHNjb3BlLCBleHBvcnROYW1lKSlgLiBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgYEZuLnNwbGl0djJgIHRvIHJlYWRcbiAgICogbW9yZSBhYm91dCB0aGUgbGltaXRhdGlvbnMgb2YgdXNpbmcgbGlzdHMgb2YgdW5rbm93biBsZW5ndGguXG4gICAqXG4gICAqIGBGbi5pbXBvcnRMaXN0VmFsdWUoc2NvcGUsIGV4cG9ydE5hbWUsIGFzc3VtZWRMZW5ndGgpYCBpcyB0aGUgc2FtZSBhc1xuICAgKiBgRm4uc3BsaXQoJywnLCBGbi5pbXBvcnRWYWx1ZShzY29wZSwgZXhwb3J0TmFtZSksIGFzc3VtZWRMZW5ndGgpYCxcbiAgICogYnV0IGVhc2llciB0byByZWFkIGFuZCBpbXBvc3NpYmxlIHRvIGZvcmdldCB0byBwYXNzIGBhc3N1bWVkTGVuZ3RoYC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaW1wb3J0TGlzdFZhbHVlKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgc2hhcmVkVmFsdWVUb0ltcG9ydDogc3RyaW5nLFxuICAgIGFzc3VtZWRMZW5ndGg6IG51bWJlcixcbiAgICBkZWxpbWl0ZXIgPSBcIixcIixcbiAgKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBGbi5zcGxpdHYyKFxuICAgICAgZGVsaW1pdGVyLFxuICAgICAgRm4uaW1wb3J0VmFsdWUoc2NvcGUsIHNoYXJlZFZhbHVlVG9JbXBvcnQpLFxuICAgICAgYXNzdW1lZExlbmd0aCxcbiAgICApO1xuICB9XG4gIC8qKlxuICAgKiBUaGUgaW50cmluc2ljIGZ1bmN0aW9uIGBGbjo6TGVuZ3RoYCByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgd2l0aGluIGFuIGFycmF5XG4gICAqIG9yIGFuIGludHJpbnNpYyBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwYXJhbSBhcnJheSBUaGUgYXJyYXkgeW91IHdhbnQgdG8gcmV0dXJuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZnJvbVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsZW4oYXJyYXk6IGFueSk6IG51bWJlciB7XG4gICAgLy8gc2hvcnQtY2lyY3VpdCBpZiBhcnJheSBpcyBub3QgYSB0b2tlblxuICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKGFycmF5KSkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFycmF5KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGbi5sZW5ndGgoKSBuZWVkcyBhbiBhcnJheVwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheS5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiB0ZkZuLmxlbmd0aE9mKGFycmF5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIuaGFzaGljb3JwLmNvbS90ZXJyYWZvcm0vbGFuZ3VhZ2UvZnVuY3Rpb25zL2pvaW4gam9pbn0gcHJvZHVjZXMgYSBzdHJpbmcgYnkgY29uY2F0ZW5hdGluZyB0b2dldGhlciBhbGwgZWxlbWVudHMgb2YgYSBnaXZlbiBsaXN0IG9mIHN0cmluZ3Mgd2l0aCB0aGUgZ2l2ZW4gZGVsaW1pdGVyLlxuICAgKlxuICAgKiBJZiBhbnkgb2YgdGhlIHZhbHVlcyBhcmUgdW5yZXNvbHZlZCwgdGhlIGludHJpbnNpYyBmdW5jdGlvbiB3aWxsIGJlIHVzZWQuXG4gICAqIGlmIHRoZSBsaXN0IGhhcyBvbmx5IG9uZSBlbGVtZW50LCB0aGUgZWxlbWVudCB3aWxsIGJlIHJldHVybmVkLlxuICAgKiBpZiB0aGUgbGlzdCBoYXMgbW9yZSB0aGFuIG9uZSBlbGVtZW50LCB0aGUgZWxlbWVudHMgd2lsbCBiZSBqb2luZWQgd2l0aCB0aGUgZGVsaW1pdGVyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGVsaW1pdGVyXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gdmFsdWVzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGpvaW4oZGVsaW1pdGVyOiBzdHJpbmcsIHZhbHVlczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQodmFsdWVzKSkge1xuICAgICAgLy8gVGhpcyBpcyBhIGxpc3QgdG9rZW4sIGRvbid0IHRyeSB0byBkbyBzbWFydCB0aGluZ3Mgd2l0aCBpdC5cbiAgICAgIHJldHVybiB0ZkZuLmpvaW4oZGVsaW1pdGVyLCB2YWx1ZXMpO1xuICAgIH1cbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHZhbHVlc1swXTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlcy5qb2luKGRlbGltaXRlcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmFuZ2UobjogbnVtYmVyKTogbnVtYmVyW10ge1xuICBjb25zdCByZXQ6IG51bWJlcltdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgcmV0LnB1c2goaSk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cbiJdfQ==
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmEtZnVuYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXJyYS1mdW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0ZBQWdGO0FBRWhGLGlDQUtlO0FBR2Y7O0dBRUc7QUFDSCxNQUFhLEVBQUcsU0FBUSxVQUFJO0lBQzFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0EwQ0c7SUFDSSxNQUFNLENBQUMsT0FBTyxDQUNuQixTQUFpQixFQUNqQixNQUFjLEVBQ2QsYUFBc0I7UUFFdEIseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxhQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDaEMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxJQUFJLGFBQUssQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLGFBQUssQ0FBQyxNQUFNLENBQUMsVUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMxRCxJQUFJLGFBQWEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxJQUFJLGFBQUssQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRSxD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QUMzQixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YvcGFja2FnZXMvYXdzLWNkay1saWIvY29yZS9saWIvY2ZuLWZuLnRzXG5cbmltcG9ydCB7XG4gIFRlcnJhZm9ybVZhcmlhYmxlLFxuICBUZXJyYWZvcm1WYXJpYWJsZUNvbmZpZyxcbiAgVG9rZW4sXG4gIEZuIGFzIHRmRm4sXG59IGZyb20gXCJjZGt0blwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuLyoqXG4gKiBUZXJyYUNvbnN0cnVjdHMgaGVscGVyIGZ1bmN0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEZuIGV4dGVuZHMgdGZGbiB7XG4gIC8qKlxuICAgKiBTcGxpdCBhIHN0cmluZyB0b2tlbiBpbnRvIGEgdG9rZW4gbGlzdCBvZiBzdHJpbmcgdmFsdWVzLlxuICAgKlxuICAgKiBTcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiBzcGxpdHMgd2l0aCBhIGRlbGltaXRlciBzdWNoIGFzICcsJyAoYSBjb21tYSkuXG4gICAqIFJlbmRlcnMgdG8gdGhlIGBzcGxpdGAgaW50cmluc2ljIHRlcnJhZm9ybSBmdW5jdGlvbi5cbiAgICpcbiAgICogTGlzdHMgd2l0aCB1bmtub3duIGxlbmd0aHMgKGRlZmF1bHQpXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICpcbiAgICogU2luY2UgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHdvcmsgd2l0aCBkZXBsb3ktdGltZSB2YWx1ZXMsIGlmIGBhc3N1bWVkTGVuZ3RoYFxuICAgKiBpcyBub3QgZ2l2ZW4gdGhlIENESyBjYW5ub3Qga25vdyB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgbGlzdCBhdCBzeW50aGVzaXMgdGltZS5cbiAgICogVGhpcyBicmluZ3MgdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6XG4gICAqXG4gICAqIC0gWW91IG11c3QgdXNlIGBGbi5lbGVtZW50KGxpc3QsIGkpYCB0byBwaWNrIGVsZW1lbnRzIG91dCBvZiB0aGUgbGlzdCAoeW91IG11c3Qgbm90IHVzZVxuICAgKiAgIGBsaXN0W2ldYCkuXG4gICAqIC0gWW91IGNhbm5vdCBhZGQgZWxlbWVudHMgdG8gdGhlIGxpc3QsIHJlbW92ZSBlbGVtZW50cyBmcm9tIHRoZSBsaXN0LFxuICAgKiAgIGNvbWJpbmUgdHdvIHN1Y2ggbGlzdHMgdG9nZXRoZXIsIG9yIHRha2UgYSBzbGljZSBvZiB0aGUgbGlzdC5cbiAgICogLSBZb3UgY2Fubm90IHBhc3MgdGhlIGxpc3QgdG8gY29uc3RydWN0cyB0aGF0IGRvIGFueSBvZiB0aGUgYWJvdmUuXG4gICAqXG4gICAqIFRoZSBvbmx5IHZhbGlkIG9wZXJhdGlvbiB3aXRoIHN1Y2ggYSB0b2tlbml6ZWQgbGlzdCBpcyB0byBwYXNzIGl0IHVubW9kaWZpZWQgdG8gYVxuICAgKiBUZXJyYWZvcm0gUmVzb3VyY2UgY29uc3RydWN0LlxuICAgKlxuICAgKiBMaXN0cyB3aXRoIGFzc3VtZWQgbGVuZ3Roc1xuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKlxuICAgKiBQYXNzIGBhc3N1bWVkTGVuZ3RoYCBpZiB5b3Uga25vdyB0aGUgbGVuZ3RoIG9mIHRoZSBsaXN0IHRoYXQgd2lsbCBiZVxuICAgKiBwcm9kdWNlZCBieSBzcGxpdHRpbmcuIFRoZSBhY3R1YWwgbGlzdCBsZW5ndGggYXQgZGVwbG95IHRpbWUgbWF5IGJlXG4gICAqICpsb25nZXIqIHRoYW4gdGhlIG51bWJlciB5b3UgcGFzcywgYnV0IG5vdCAqc2hvcnRlciouXG4gICAqXG4gICAqIFRoZSByZXR1cm5lZCBsaXN0IHdpbGwgbG9vayBsaWtlOlxuICAgKlxuICAgKiBgYGBcbiAgICogW0ZuLmVsZW1lbnQoc3BsaXQsIDApLCBGbi5lbGVtZW50KHNwbGl0LCAxKSwgRm4uZWxlbWVudChzcGxpdCwgMiksIC4uLl1cbiAgICogYGBgXG4gICAqXG4gICAqIFRoZSByZXN0cmljdGlvbnMgZnJvbSB0aGUgc2VjdGlvbiBcIkxpc3RzIHdpdGggdW5rbm93biBsZW5ndGhzXCIgd2lsbCBub3cgYmUgbGlmdGVkLFxuICAgKiBhdCB0aGUgZXhwZW5zZSBvZiBoYXZpbmcgdG8ga25vdyBhbmQgZml4IHRoZSBsZW5ndGggb2YgdGhlIGxpc3QuXG4gICAqXG4gICAqIEBwYXJhbSBkZWxpbWl0ZXIgQSBzdHJpbmcgdmFsdWUgdGhhdCBkZXRlcm1pbmVzIHdoZXJlIHRoZSBzb3VyY2Ugc3RyaW5nIGlzIGRpdmlkZWQuXG4gICAqIEBwYXJhbSBzb3VyY2UgVGhlIHN0cmluZyB2YWx1ZSB0aGF0IHlvdSB3YW50IHRvIHNwbGl0LlxuICAgKiBAcGFyYW0gYXNzdW1lZExlbmd0aCBUaGUgbGVuZ3RoIG9mIHRoZSBsaXN0IHRoYXQgd2lsbCBiZSBwcm9kdWNlZCBieSBzcGxpdHRpbmdcbiAgICogQHJldHVybnMgYSB0b2tlbiByZXByZXNlbnRlZCBhcyBhIHN0cmluZyBhcnJheVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzcGxpdHYyKFxuICAgIGRlbGltaXRlcjogc3RyaW5nLFxuICAgIHNvdXJjZTogc3RyaW5nLFxuICAgIGFzc3VtZWRMZW5ndGg/OiBudW1iZXIsXG4gICk6IHN0cmluZ1tdIHtcbiAgICAvLyBzaG9ydC1jaXJjdWl0IGlmIHNvdXJjZSBpcyBub3QgYSB0b2tlblxuICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiBzb3VyY2Uuc3BsaXQoZGVsaW1pdGVyKTtcbiAgICB9XG5cbiAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKGRlbGltaXRlcikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkZuLnNwbGl0djI6ICdkZWxpbWl0ZXInIG1heSBub3QgYmUgYSB0b2tlbiB2YWx1ZVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBzcGxpdCA9IFRva2VuLmFzTGlzdCh0ZkZuLnNwbGl0KGRlbGltaXRlciwgc291cmNlKSk7XG4gICAgaWYgKGFzc3VtZWRMZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHNwbGl0O1xuICAgIH1cblxuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQoYXNzdW1lZExlbmd0aCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkZuLnNwbGl0OiAnYXNzdW1lZExlbmd0aCcgbWF5IG5vdCBiZSBhIHRva2VuIHZhbHVlXCIpO1xuICAgIH1cblxuICAgIHJldHVybiByYW5nZShhc3N1bWVkTGVuZ3RoKS5tYXAoKGkpID0+IHRmRm4uZWxlbWVudChzcGxpdCwgaSkpO1xuICB9XG4gIC8qKlxuICAgKiBTaW1pbGFyIHRvIEZuLmVsZW1lbnQsIGJ1dCB3aXRoIGEgc2hvcnRjdXQgaWYgbGlzdCBpcyBub3QgdW5yZXNvbHZlZFxuICAgKlxuICAgKiBUaGUgaW50cmluc2ljIGZ1bmN0aW9uIGBgZWxlbWVudGBgIHJldHVybnMgYSBzaW5nbGUgb2JqZWN0IGZyb20gYSBsaXN0IG9mIG9iamVjdHMgYnkgaW5kZXguXG4gICAqIEBwYXJhbSBpbmRleCBUaGUgaW5kZXggb2YgdGhlIG9iamVjdCB0byByZXRyaWV2ZS4gVGhpcyBtdXN0IGJlIGEgdmFsdWUgZnJvbSB6ZXJvIHRvIE4tMSwgd2hlcmUgTiByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGFycmF5LlxuICAgKiBAcGFyYW0gYXJyYXkgVGhlIGxpc3Qgb2Ygb2JqZWN0cyB0byBzZWxlY3QgZnJvbS4gVGhpcyBsaXN0IG11c3Qgbm90IGJlIG51bGwsIG5vciBjYW4gaXQgaGF2ZSBudWxsIGVudHJpZXMuXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50ZWQgYXMgYSBzdHJpbmdcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0KGluZGV4OiBudW1iZXIsIGFycmF5OiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgLy8gc2hvcnQtY2lyY3VpdCBpZiBzb3VyY2UgaXMgbm90IGEgdG9rZW5cbiAgICBpZiAoXG4gICAgICAhVG9rZW4uaXNVbnJlc29sdmVkKGluZGV4KSAmJlxuICAgICAgIVRva2VuLmlzVW5yZXNvbHZlZChhcnJheSkgJiZcbiAgICAgICFhcnJheS5zb21lKFRva2VuLmlzVW5yZXNvbHZlZClcbiAgICApIHtcbiAgICAgIHJldHVybiBhcnJheVtpbmRleF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRmRm4uZWxlbWVudChhcnJheSwgaW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGFuIHVybCwgcGFyc2UgdGhlIGRvbWFpbiBuYW1lXG4gICAqIEBwYXJhbSB1cmwgdGhlIHVybCB0byBwYXJzZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBwYXJzZURvbWFpbk5hbWUodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vSHR0cHMgPSBGbi5zZWxlY3QoMSwgRm4uc3BsaXQoXCIvL1wiLCB1cmwpKTtcbiAgICByZXR1cm4gRm4uc2VsZWN0KDAsIEZuLnNwbGl0KFwiL1wiLCBub0h0dHBzKSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGludHJpbnNpYyBmdW5jdGlvbiBgYEZuOjpJbXBvcnRWYWx1ZWBgIHJldHVybnMgdGhlIHZhbHVlIG9mIGFuIG91dHB1dFxuICAgKiBleHBvcnRlZCBieSBhbm90aGVyIHN0YWNrLiBZb3UgdHlwaWNhbGx5IHVzZSB0aGlzIGZ1bmN0aW9uIHRvIGNyZWF0ZVxuICAgKiBjcm9zcy1zdGFjayByZWZlcmVuY2VzLiBJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUgdGVtcGxhdGUgc25pcHBldHMsIFN0YWNrIEFcbiAgICogZXhwb3J0cyBWUEMgc2VjdXJpdHkgZ3JvdXAgdmFsdWVzIGFuZCBTdGFjayBCIGltcG9ydHMgdGhlbS5cbiAgICogQHBhcmFtIGlkIFRoZSBzdGFjayBvdXRwdXQgdmFsdWUgdGhhdCB5b3Ugd2FudCB0byBpbXBvcnQuXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50ZWQgYXMgYSBzdHJpbmdcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaW1wb3J0VmFsdWUoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFRlcnJhZm9ybVZhcmlhYmxlQ29uZmlnID0ge30sXG4gICk6IHN0cmluZyB7XG4gICAgLy8gVE9ETzogVGhpcyBzaG91bGQgYmUgYSB0ZXJyYWZvcm0gcmVtb3RlIHN0YXRlIGRhdGEgc291cmNlIGluc3RlYWRcbiAgICBjb25zdCBpbXBvcnRWYXJpYWJsZSA9IG5ldyBUZXJyYWZvcm1WYXJpYWJsZShzY29wZSwgaWQsIG9wdGlvbnMpO1xuICAgIHJldHVybiBpbXBvcnRWYXJpYWJsZS5zdHJpbmdWYWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaWtlIGBGbi5pbXBvcnRWYWx1ZWAsIGJ1dCBpbXBvcnQgYSBsaXN0IHdpdGggYSBrbm93biBsZW5ndGhcbiAgICpcbiAgICogSWYgeW91IGV4cGxpY2l0bHkgd2FudCBhIGxpc3Qgd2l0aCBhbiB1bmtub3duIGxlbmd0aCwgY2FsbCBgRm4uc3BsaXR2MignLCcsXG4gICAqIEZuLmltcG9ydFZhbHVlKHNjb3BlLCBleHBvcnROYW1lKSlgLiBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgYEZuLnNwbGl0djJgIHRvIHJlYWRcbiAgICogbW9yZSBhYm91dCB0aGUgbGltaXRhdGlvbnMgb2YgdXNpbmcgbGlzdHMgb2YgdW5rbm93biBsZW5ndGguXG4gICAqXG4gICAqIGBGbi5pbXBvcnRMaXN0VmFsdWUoc2NvcGUsIGV4cG9ydE5hbWUsIGFzc3VtZWRMZW5ndGgpYCBpcyB0aGUgc2FtZSBhc1xuICAgKiBgRm4uc3BsaXQoJywnLCBGbi5pbXBvcnRWYWx1ZShzY29wZSwgZXhwb3J0TmFtZSksIGFzc3VtZWRMZW5ndGgpYCxcbiAgICogYnV0IGVhc2llciB0byByZWFkIGFuZCBpbXBvc3NpYmxlIHRvIGZvcmdldCB0byBwYXNzIGBhc3N1bWVkTGVuZ3RoYC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaW1wb3J0TGlzdFZhbHVlKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgc2hhcmVkVmFsdWVUb0ltcG9ydDogc3RyaW5nLFxuICAgIGFzc3VtZWRMZW5ndGg6IG51bWJlcixcbiAgICBkZWxpbWl0ZXIgPSBcIixcIixcbiAgKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBGbi5zcGxpdHYyKFxuICAgICAgZGVsaW1pdGVyLFxuICAgICAgRm4uaW1wb3J0VmFsdWUoc2NvcGUsIHNoYXJlZFZhbHVlVG9JbXBvcnQpLFxuICAgICAgYXNzdW1lZExlbmd0aCxcbiAgICApO1xuICB9XG4gIC8qKlxuICAgKiBUaGUgaW50cmluc2ljIGZ1bmN0aW9uIGBGbjo6TGVuZ3RoYCByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgd2l0aGluIGFuIGFycmF5XG4gICAqIG9yIGFuIGludHJpbnNpYyBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwYXJhbSBhcnJheSBUaGUgYXJyYXkgeW91IHdhbnQgdG8gcmV0dXJuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZnJvbVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsZW4oYXJyYXk6IGFueSk6IG51bWJlciB7XG4gICAgLy8gc2hvcnQtY2lyY3VpdCBpZiBhcnJheSBpcyBub3QgYSB0b2tlblxuICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKGFycmF5KSkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFycmF5KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGbi5sZW5ndGgoKSBuZWVkcyBhbiBhcnJheVwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheS5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiB0ZkZuLmxlbmd0aE9mKGFycmF5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIuaGFzaGljb3JwLmNvbS90ZXJyYWZvcm0vbGFuZ3VhZ2UvZnVuY3Rpb25zL2pvaW4gam9pbn0gcHJvZHVjZXMgYSBzdHJpbmcgYnkgY29uY2F0ZW5hdGluZyB0b2dldGhlciBhbGwgZWxlbWVudHMgb2YgYSBnaXZlbiBsaXN0IG9mIHN0cmluZ3Mgd2l0aCB0aGUgZ2l2ZW4gZGVsaW1pdGVyLlxuICAgKlxuICAgKiBJZiBhbnkgb2YgdGhlIHZhbHVlcyBhcmUgdW5yZXNvbHZlZCwgdGhlIGludHJpbnNpYyBmdW5jdGlvbiB3aWxsIGJlIHVzZWQuXG4gICAqIGlmIHRoZSBsaXN0IGhhcyBvbmx5IG9uZSBlbGVtZW50LCB0aGUgZWxlbWVudCB3aWxsIGJlIHJldHVybmVkLlxuICAgKiBpZiB0aGUgbGlzdCBoYXMgbW9yZSB0aGFuIG9uZSBlbGVtZW50LCB0aGUgZWxlbWVudHMgd2lsbCBiZSBqb2luZWQgd2l0aCB0aGUgZGVsaW1pdGVyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGVsaW1pdGVyXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gdmFsdWVzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGpvaW4oZGVsaW1pdGVyOiBzdHJpbmcsIHZhbHVlczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQodmFsdWVzKSkge1xuICAgICAgLy8gVGhpcyBpcyBhIGxpc3QgdG9rZW4sIGRvbid0IHRyeSB0byBkbyBzbWFydCB0aGluZ3Mgd2l0aCBpdC5cbiAgICAgIHJldHVybiB0ZkZuLmpvaW4oZGVsaW1pdGVyLCB2YWx1ZXMpO1xuICAgIH1cbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHZhbHVlc1swXTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlcy5qb2luKGRlbGltaXRlcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmFuZ2UobjogbnVtYmVyKTogbnVtYmVyW10ge1xuICBjb25zdCByZXQ6IG51bWJlcltdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgcmV0LnB1c2goaSk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cbiJdfQ==
package/lib/time-zone.js CHANGED
@@ -29,7 +29,7 @@ class TimeZone {
29
29
  }
30
30
  exports.TimeZone = TimeZone;
31
31
  _a = JSII_RTTI_SYMBOL_1;
32
- TimeZone[_a] = { fqn: "terraconstructs.TimeZone", version: "0.2.4" };
32
+ TimeZone[_a] = { fqn: "terraconstructs.TimeZone", version: "0.2.6" };
33
33
  /** IANA Time Zone database entry for Africa/Abidjan. UTC offset +00:00/+00:00. */
34
34
  TimeZone.AFRICA_ABIDJAN = new TimeZone("Africa/Abidjan");
35
35
  /** IANA Time Zone database entry for Africa/Algiers. UTC offset +01:00/+01:00. */
package/lib/token.js CHANGED
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.TokenComparison = void 0;
5
5
  exports.tokenCompareStrings = tokenCompareStrings;
6
6
  exports.withResolved = withResolved;
7
- const cdktf_1 = require("cdktf");
7
+ const cdktn_1 = require("cdktn");
8
8
  /**
9
9
  * An enum-like class that represents the result of comparing two Tokens.
10
10
  * The return type of `Token.compareStrings`.
@@ -29,8 +29,8 @@ TokenComparison.ONE_UNRESOLVED = new TokenComparison();
29
29
  TokenComparison.BOTH_UNRESOLVED = new TokenComparison();
30
30
  /** Compare two strings that might contain Tokens with each other. */
31
31
  function tokenCompareStrings(possibleToken1, possibleToken2) {
32
- const firstIsUnresolved = cdktf_1.Token.isUnresolved(possibleToken1);
33
- const secondIsUnresolved = cdktf_1.Token.isUnresolved(possibleToken2);
32
+ const firstIsUnresolved = cdktn_1.Token.isUnresolved(possibleToken1);
33
+ const secondIsUnresolved = cdktn_1.Token.isUnresolved(possibleToken2);
34
34
  if (firstIsUnresolved && secondIsUnresolved) {
35
35
  return TokenComparison.BOTH_UNRESOLVED;
36
36
  }
@@ -46,9 +46,9 @@ function withResolved(...args) {
46
46
  return;
47
47
  }
48
48
  const argArray = args.slice(0, args.length - 1);
49
- if (argArray.some(cdktf_1.Token.isUnresolved)) {
49
+ if (argArray.some(cdktn_1.Token.isUnresolved)) {
50
50
  return;
51
51
  }
52
52
  args[args.length - 1].apply(arguments, argArray);
53
53
  }
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHNGQUFzRjs7O0FBK0J0RixrREFpQkM7QUFnQkQsb0NBU0M7QUF2RUQsaUNBQThCO0FBRTlCOzs7R0FHRztBQUNILE1BQWEsZUFBZTtJQW1CMUIsZ0JBQXVCLENBQUM7O0FBbkIxQiwwQ0FvQkM7QUFuQkM7OztHQUdHO0FBQ29CLG9CQUFJLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztBQUVwRDs7O0dBR0c7QUFDb0IseUJBQVMsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO0FBRXpELDJEQUEyRDtBQUNwQyw4QkFBYyxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7QUFFOUQsNkNBQTZDO0FBQ3RCLCtCQUFlLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztBQUtqRSxxRUFBcUU7QUFDckUsU0FBZ0IsbUJBQW1CLENBQ2pDLGNBQXNCLEVBQ3RCLGNBQXNCO0lBRXRCLE1BQU0saUJBQWlCLEdBQUcsYUFBSyxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM3RCxNQUFNLGtCQUFrQixHQUFHLGFBQUssQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFOUQsSUFBSSxpQkFBaUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQzVDLE9BQU8sZUFBZSxDQUFDLGVBQWUsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsSUFBSSxpQkFBaUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQzVDLE9BQU8sZUFBZSxDQUFDLGNBQWMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsT0FBTyxjQUFjLEtBQUssY0FBYztRQUN0QyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUk7UUFDdEIsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7QUFDaEMsQ0FBQztBQWdCRCxTQUFnQixZQUFZLENBQUMsR0FBRyxJQUFXO0lBQ3pDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNwQixPQUFPO0lBQ1QsQ0FBQztJQUNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEQsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQ3RDLE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNuRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTUwLjAvcGFja2FnZXMvYXdzLWNkay1saWIvY29yZS9saWIvdG9rZW4udHNcblxuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiY2RrdGZcIjtcblxuLyoqXG4gKiBBbiBlbnVtLWxpa2UgY2xhc3MgdGhhdCByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgY29tcGFyaW5nIHR3byBUb2tlbnMuXG4gKiBUaGUgcmV0dXJuIHR5cGUgb2YgYFRva2VuLmNvbXBhcmVTdHJpbmdzYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRva2VuQ29tcGFyaXNvbiB7XG4gIC8qKlxuICAgKiBUaGlzIG1lYW5zIHdlJ3JlIGNlcnRhaW4gdGhlIHR3byBjb21wb25lbnRzIGFyZSBOT1RcbiAgICogVG9rZW5zLCBhbmQgaWRlbnRpY2FsLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTQU1FID0gbmV3IFRva2VuQ29tcGFyaXNvbigpO1xuXG4gIC8qKlxuICAgKiBUaGlzIG1lYW5zIHdlJ3JlIGNlcnRhaW4gdGhlIHR3byBjb21wb25lbnRzIGFyZSBOT1RcbiAgICogVG9rZW5zLCBhbmQgZGlmZmVyZW50LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBESUZGRVJFTlQgPSBuZXcgVG9rZW5Db21wYXJpc29uKCk7XG5cbiAgLyoqIFRoaXMgbWVhbnMgZXhhY3RseSBvbmUgb2YgdGhlIGNvbXBvbmVudHMgaXMgYSBUb2tlbi4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBPTkVfVU5SRVNPTFZFRCA9IG5ldyBUb2tlbkNvbXBhcmlzb24oKTtcblxuICAvKiogVGhpcyBtZWFucyBib3RoIGNvbXBvbmVudHMgYXJlIFRva2Vucy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBCT1RIX1VOUkVTT0xWRUQgPSBuZXcgVG9rZW5Db21wYXJpc29uKCk7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbi8qKiBDb21wYXJlIHR3byBzdHJpbmdzIHRoYXQgbWlnaHQgY29udGFpbiBUb2tlbnMgd2l0aCBlYWNoIG90aGVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuQ29tcGFyZVN0cmluZ3MoXG4gIHBvc3NpYmxlVG9rZW4xOiBzdHJpbmcsXG4gIHBvc3NpYmxlVG9rZW4yOiBzdHJpbmcsXG4pOiBUb2tlbkNvbXBhcmlzb24ge1xuICBjb25zdCBmaXJzdElzVW5yZXNvbHZlZCA9IFRva2VuLmlzVW5yZXNvbHZlZChwb3NzaWJsZVRva2VuMSk7XG4gIGNvbnN0IHNlY29uZElzVW5yZXNvbHZlZCA9IFRva2VuLmlzVW5yZXNvbHZlZChwb3NzaWJsZVRva2VuMik7XG5cbiAgaWYgKGZpcnN0SXNVbnJlc29sdmVkICYmIHNlY29uZElzVW5yZXNvbHZlZCkge1xuICAgIHJldHVybiBUb2tlbkNvbXBhcmlzb24uQk9USF9VTlJFU09MVkVEO1xuICB9XG4gIGlmIChmaXJzdElzVW5yZXNvbHZlZCB8fCBzZWNvbmRJc1VucmVzb2x2ZWQpIHtcbiAgICByZXR1cm4gVG9rZW5Db21wYXJpc29uLk9ORV9VTlJFU09MVkVEO1xuICB9XG5cbiAgcmV0dXJuIHBvc3NpYmxlVG9rZW4xID09PSBwb3NzaWJsZVRva2VuMlxuICAgID8gVG9rZW5Db21wYXJpc29uLlNBTUVcbiAgICA6IFRva2VuQ29tcGFyaXNvbi5ESUZGRVJFTlQ7XG59XG5cbi8qKlxuICogQ2FsbCB0aGUgZ2l2ZW4gZnVuY3Rpb24gb25seSBpZiBhbGwgZ2l2ZW4gdmFsdWVzIGFyZSByZXNvbHZlZFxuICpcbiAqIEV4cG9ydGVkIGFzIGEgZnVuY3Rpb24gc2luY2UgaXQgd2lsbCBiZSB1c2VkIGJ5IFR5cGVTY3JpcHQgbW9kdWxlcywgYnV0XG4gKiBjYW4ndCBiZSBleHBvc2VkIHZpYSBKU0lJIGJlY2F1c2Ugb2YgdGhlIGdlbmVyaWNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aFJlc29sdmVkPEE+KGE6IEEsIGZuOiAoYTogQSkgPT4gdm9pZCk6IHZvaWQ7XG5leHBvcnQgZnVuY3Rpb24gd2l0aFJlc29sdmVkPEEsIEI+KGE6IEEsIGI6IEIsIGZuOiAoYTogQSwgYjogQikgPT4gdm9pZCk6IHZvaWQ7XG5leHBvcnQgZnVuY3Rpb24gd2l0aFJlc29sdmVkPEEsIEIsIEM+KFxuICBhOiBBLFxuICBiOiBCLFxuICBjOiBDLFxuICBmbjogKGE6IEEsIGI6IEIsIGM6IEMpID0+IHZvaWQsXG4pOiB2b2lkO1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhSZXNvbHZlZCguLi5hcmdzOiBhbnlbXSkge1xuICBpZiAoYXJncy5sZW5ndGggPCAyKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGFyZ0FycmF5ID0gYXJncy5zbGljZSgwLCBhcmdzLmxlbmd0aCAtIDEpO1xuICBpZiAoYXJnQXJyYXkuc29tZShUb2tlbi5pc1VucmVzb2x2ZWQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGFyZ3NbYXJncy5sZW5ndGggLSAxXS5hcHBseShhcmd1bWVudHMsIGFyZ0FycmF5KTtcbn1cbiJdfQ==
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHNGQUFzRjs7O0FBK0J0RixrREFpQkM7QUFnQkQsb0NBU0M7QUF2RUQsaUNBQThCO0FBRTlCOzs7R0FHRztBQUNILE1BQWEsZUFBZTtJQW1CMUIsZ0JBQXVCLENBQUM7O0FBbkIxQiwwQ0FvQkM7QUFuQkM7OztHQUdHO0FBQ29CLG9CQUFJLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztBQUVwRDs7O0dBR0c7QUFDb0IseUJBQVMsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO0FBRXpELDJEQUEyRDtBQUNwQyw4QkFBYyxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7QUFFOUQsNkNBQTZDO0FBQ3RCLCtCQUFlLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztBQUtqRSxxRUFBcUU7QUFDckUsU0FBZ0IsbUJBQW1CLENBQ2pDLGNBQXNCLEVBQ3RCLGNBQXNCO0lBRXRCLE1BQU0saUJBQWlCLEdBQUcsYUFBSyxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM3RCxNQUFNLGtCQUFrQixHQUFHLGFBQUssQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFOUQsSUFBSSxpQkFBaUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQzVDLE9BQU8sZUFBZSxDQUFDLGVBQWUsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsSUFBSSxpQkFBaUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQzVDLE9BQU8sZUFBZSxDQUFDLGNBQWMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsT0FBTyxjQUFjLEtBQUssY0FBYztRQUN0QyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUk7UUFDdEIsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7QUFDaEMsQ0FBQztBQWdCRCxTQUFnQixZQUFZLENBQUMsR0FBRyxJQUFXO0lBQ3pDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNwQixPQUFPO0lBQ1QsQ0FBQztJQUNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEQsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQ3RDLE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNuRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTUwLjAvcGFja2FnZXMvYXdzLWNkay1saWIvY29yZS9saWIvdG9rZW4udHNcblxuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiY2RrdG5cIjtcblxuLyoqXG4gKiBBbiBlbnVtLWxpa2UgY2xhc3MgdGhhdCByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgY29tcGFyaW5nIHR3byBUb2tlbnMuXG4gKiBUaGUgcmV0dXJuIHR5cGUgb2YgYFRva2VuLmNvbXBhcmVTdHJpbmdzYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRva2VuQ29tcGFyaXNvbiB7XG4gIC8qKlxuICAgKiBUaGlzIG1lYW5zIHdlJ3JlIGNlcnRhaW4gdGhlIHR3byBjb21wb25lbnRzIGFyZSBOT1RcbiAgICogVG9rZW5zLCBhbmQgaWRlbnRpY2FsLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTQU1FID0gbmV3IFRva2VuQ29tcGFyaXNvbigpO1xuXG4gIC8qKlxuICAgKiBUaGlzIG1lYW5zIHdlJ3JlIGNlcnRhaW4gdGhlIHR3byBjb21wb25lbnRzIGFyZSBOT1RcbiAgICogVG9rZW5zLCBhbmQgZGlmZmVyZW50LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBESUZGRVJFTlQgPSBuZXcgVG9rZW5Db21wYXJpc29uKCk7XG5cbiAgLyoqIFRoaXMgbWVhbnMgZXhhY3RseSBvbmUgb2YgdGhlIGNvbXBvbmVudHMgaXMgYSBUb2tlbi4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBPTkVfVU5SRVNPTFZFRCA9IG5ldyBUb2tlbkNvbXBhcmlzb24oKTtcblxuICAvKiogVGhpcyBtZWFucyBib3RoIGNvbXBvbmVudHMgYXJlIFRva2Vucy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBCT1RIX1VOUkVTT0xWRUQgPSBuZXcgVG9rZW5Db21wYXJpc29uKCk7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbi8qKiBDb21wYXJlIHR3byBzdHJpbmdzIHRoYXQgbWlnaHQgY29udGFpbiBUb2tlbnMgd2l0aCBlYWNoIG90aGVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuQ29tcGFyZVN0cmluZ3MoXG4gIHBvc3NpYmxlVG9rZW4xOiBzdHJpbmcsXG4gIHBvc3NpYmxlVG9rZW4yOiBzdHJpbmcsXG4pOiBUb2tlbkNvbXBhcmlzb24ge1xuICBjb25zdCBmaXJzdElzVW5yZXNvbHZlZCA9IFRva2VuLmlzVW5yZXNvbHZlZChwb3NzaWJsZVRva2VuMSk7XG4gIGNvbnN0IHNlY29uZElzVW5yZXNvbHZlZCA9IFRva2VuLmlzVW5yZXNvbHZlZChwb3NzaWJsZVRva2VuMik7XG5cbiAgaWYgKGZpcnN0SXNVbnJlc29sdmVkICYmIHNlY29uZElzVW5yZXNvbHZlZCkge1xuICAgIHJldHVybiBUb2tlbkNvbXBhcmlzb24uQk9USF9VTlJFU09MVkVEO1xuICB9XG4gIGlmIChmaXJzdElzVW5yZXNvbHZlZCB8fCBzZWNvbmRJc1VucmVzb2x2ZWQpIHtcbiAgICByZXR1cm4gVG9rZW5Db21wYXJpc29uLk9ORV9VTlJFU09MVkVEO1xuICB9XG5cbiAgcmV0dXJuIHBvc3NpYmxlVG9rZW4xID09PSBwb3NzaWJsZVRva2VuMlxuICAgID8gVG9rZW5Db21wYXJpc29uLlNBTUVcbiAgICA6IFRva2VuQ29tcGFyaXNvbi5ESUZGRVJFTlQ7XG59XG5cbi8qKlxuICogQ2FsbCB0aGUgZ2l2ZW4gZnVuY3Rpb24gb25seSBpZiBhbGwgZ2l2ZW4gdmFsdWVzIGFyZSByZXNvbHZlZFxuICpcbiAqIEV4cG9ydGVkIGFzIGEgZnVuY3Rpb24gc2luY2UgaXQgd2lsbCBiZSB1c2VkIGJ5IFR5cGVTY3JpcHQgbW9kdWxlcywgYnV0XG4gKiBjYW4ndCBiZSBleHBvc2VkIHZpYSBKU0lJIGJlY2F1c2Ugb2YgdGhlIGdlbmVyaWNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aFJlc29sdmVkPEE+KGE6IEEsIGZuOiAoYTogQSkgPT4gdm9pZCk6IHZvaWQ7XG5leHBvcnQgZnVuY3Rpb24gd2l0aFJlc29sdmVkPEEsIEI+KGE6IEEsIGI6IEIsIGZuOiAoYTogQSwgYjogQikgPT4gdm9pZCk6IHZvaWQ7XG5leHBvcnQgZnVuY3Rpb24gd2l0aFJlc29sdmVkPEEsIEIsIEM+KFxuICBhOiBBLFxuICBiOiBCLFxuICBjOiBDLFxuICBmbjogKGE6IEEsIGI6IEIsIGM6IEMpID0+IHZvaWQsXG4pOiB2b2lkO1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhSZXNvbHZlZCguLi5hcmdzOiBhbnlbXSkge1xuICBpZiAoYXJncy5sZW5ndGggPCAyKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGFyZ0FycmF5ID0gYXJncy5zbGljZSgwLCBhcmdzLmxlbmd0aCAtIDEpO1xuICBpZiAoYXJnQXJyYXkuc29tZShUb2tlbi5pc1VucmVzb2x2ZWQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGFyZ3NbYXJncy5sZW5ndGggLSAxXS5hcHBseShhcmd1bWVudHMsIGFyZ0FycmF5KTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -12,12 +12,12 @@
12
12
  "devDependencies": {
13
13
  "@aws-cdk/cloud-assembly-schema": "49.4.0",
14
14
  "@aws-cdk/region-info": "2.233.0",
15
- "@cdktf/provider-archive": "11.0.0",
16
- "@cdktf/provider-aws": "21.22.0",
17
- "@cdktf/provider-cloudinit": "11.0.0",
18
- "@cdktf/provider-docker": "12.0.2",
19
- "@cdktf/provider-time": "11.0.0",
20
- "@cdktf/provider-tls": "11.0.0",
15
+ "@cdktn/provider-archive": "13.1.0",
16
+ "@cdktn/provider-aws": "24.8.0",
17
+ "@cdktn/provider-cloudinit": "13.1.0",
18
+ "@cdktn/provider-docker": "15.3.0",
19
+ "@cdktn/provider-time": "13.1.0",
20
+ "@cdktn/provider-tls": "13.1.0",
21
21
  "@jsii/spec": "^1.102.0",
22
22
  "@mrgrain/jsii-struct-builder": "^0.7.64",
23
23
  "@types/jest": "^29.5.14",
@@ -25,9 +25,9 @@
25
25
  "@types/node": "ts5.9",
26
26
  "@typescript-eslint/eslint-plugin": "^8",
27
27
  "@typescript-eslint/parser": "^8",
28
- "cdktf": "0.21.0",
28
+ "cdktn": "0.23.0",
29
29
  "commit-and-tag-version": "^12",
30
- "constructs": "10.4.2",
30
+ "constructs": "10.6.0",
31
31
  "delay": "^5.0.0",
32
32
  "eslint": "^9",
33
33
  "eslint-config-prettier": "^9.1.2",
@@ -50,14 +50,14 @@
50
50
  "peerDependencies": {
51
51
  "@aws-cdk/cloud-assembly-schema": "^49.4.0",
52
52
  "@aws-cdk/region-info": "^2.233.0",
53
- "@cdktf/provider-archive": "^11.0.0",
54
- "@cdktf/provider-aws": "^21.22.0",
55
- "@cdktf/provider-cloudinit": "^11.0.0",
56
- "@cdktf/provider-docker": "^12.0.2",
57
- "@cdktf/provider-time": "^11.0.0",
58
- "@cdktf/provider-tls": "^11.0.0",
59
- "cdktf": "^0.21.0",
60
- "constructs": "^10.4.2"
53
+ "@cdktn/provider-archive": "^13.1.0",
54
+ "@cdktn/provider-aws": "^24.8.0",
55
+ "@cdktn/provider-cloudinit": "^13.1.0",
56
+ "@cdktn/provider-docker": "^15.3.0",
57
+ "@cdktn/provider-time": "^13.1.0",
58
+ "@cdktn/provider-tls": "^13.1.0",
59
+ "cdktn": "^0.23.0",
60
+ "constructs": "^10.6.0"
61
61
  },
62
62
  "dependencies": {
63
63
  "@balena/dockerignore": "^1.0.2",
@@ -86,7 +86,7 @@
86
86
  "publishConfig": {
87
87
  "access": "public"
88
88
  },
89
- "version": "0.2.4",
89
+ "version": "0.2.6",
90
90
  "jest": {
91
91
  "coverageProvider": "v8",
92
92
  "setupFilesAfterEnv": [
package/setup.js CHANGED
@@ -1,2 +1,2 @@
1
- const cdktf = require("cdktf");
2
- cdktf.Testing.setupJest();
1
+ const cdktn = require("cdktn");
2
+ cdktn.Testing.setupJest();