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
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.ManagedOriginRequestPolicy = exports.ManagedCachePolicy = exports.ViewerProtocolPolicy = exports.CachedMethods = exports.AllowedMethods = exports.SecurityPolicyProtocol = exports.SSLMethod = exports.PriceClass = exports.HttpVersion = exports.GeoRestrictionType = exports.Distribution = void 0;
5
5
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  // https://github.com/aws/aws-cdk/blob/64a0e2cf5bb07f6debfc4b169bb3e1852ce668aa/packages/aws-cdk-lib/aws-cloudfront/lib/distribution.ts
7
- const provider_aws_1 = require("@cdktf/provider-aws");
8
- const cdktf_1 = require("cdktf");
7
+ const provider_aws_1 = require("@cdktn/provider-aws");
8
+ const cdktn_1 = require("cdktn");
9
9
  const arn_1 = require("../arn");
10
10
  const aws_construct_1 = require("../aws-construct");
11
11
  const aws_stack_1 = require("../aws-stack");
@@ -28,7 +28,7 @@ class Distribution extends aws_construct_1.AwsConstructBase {
28
28
  this.additionalBehaviors = [];
29
29
  if (props.certificate) {
30
30
  const certificateRegion = aws_stack_1.AwsStack.ofAwsConstruct(this).splitArn(props.certificate.certificateArn, arn_1.ArnFormat.SLASH_RESOURCE_NAME).region;
31
- if (!cdktf_1.Token.isUnresolved(certificateRegion) &&
31
+ if (!cdktn_1.Token.isUnresolved(certificateRegion) &&
32
32
  certificateRegion !== "us-east-1") {
33
33
  throw new Error(`Distribution certificates must be in the us-east-1 region and the certificate you provided is in ${certificateRegion}.`);
34
34
  }
@@ -47,7 +47,7 @@ class Distribution extends aws_construct_1.AwsConstructBase {
47
47
  : props.comment;
48
48
  this.resource = new provider_aws_1.cloudfrontDistribution.CloudfrontDistribution(this, "Resource", {
49
49
  enabled: props.enabled ?? true,
50
- origin: cdktf_1.Lazy.anyValue({
50
+ origin: cdktn_1.Lazy.anyValue({
51
51
  produce: () => this._origins.map((o) =>
52
52
  // Lazy producers need additional xxxToTerraform wrap
53
53
  provider_aws_1.cloudfrontDistribution.cloudfrontDistributionOriginToTerraform(o.origin.render(o.id))),
@@ -57,7 +57,7 @@ class Distribution extends aws_construct_1.AwsConstructBase {
57
57
  targetOriginId: defaultOriginId,
58
58
  ...props.defaultBehavior,
59
59
  }),
60
- orderedCacheBehavior: cdktf_1.Lazy.anyValue({
60
+ orderedCacheBehavior: cdktn_1.Lazy.anyValue({
61
61
  produce: () => this.additionalBehaviors.map((b) =>
62
62
  // Lazy producers need additional xxxToTerraform wrap
63
63
  provider_aws_1.cloudfrontDistribution.cloudfrontDistributionOrderedCacheBehaviorToTerraform({
@@ -242,7 +242,7 @@ class Distribution extends aws_construct_1.AwsConstructBase {
242
242
  }
243
243
  exports.Distribution = Distribution;
244
244
  _a = JSII_RTTI_SYMBOL_1;
245
- Distribution[_a] = { fqn: "terraconstructs.aws.edge.Distribution", version: "0.2.4" };
245
+ Distribution[_a] = { fqn: "terraconstructs.aws.edge.Distribution", version: "0.2.6" };
246
246
  var GeoRestrictionType;
247
247
  (function (GeoRestrictionType) {
248
248
  GeoRestrictionType["NONE"] = "none";
@@ -320,7 +320,7 @@ class AllowedMethods {
320
320
  }
321
321
  exports.AllowedMethods = AllowedMethods;
322
322
  _b = JSII_RTTI_SYMBOL_1;
323
- AllowedMethods[_b] = { fqn: "terraconstructs.aws.edge.AllowedMethods", version: "0.2.4" };
323
+ AllowedMethods[_b] = { fqn: "terraconstructs.aws.edge.AllowedMethods", version: "0.2.6" };
324
324
  /** HEAD and GET */
325
325
  AllowedMethods.ALLOW_GET_HEAD = new AllowedMethods(["GET", "HEAD"]);
326
326
  /** HEAD, GET, and OPTIONS */
@@ -349,7 +349,7 @@ class CachedMethods {
349
349
  }
350
350
  exports.CachedMethods = CachedMethods;
351
351
  _c = JSII_RTTI_SYMBOL_1;
352
- CachedMethods[_c] = { fqn: "terraconstructs.aws.edge.CachedMethods", version: "0.2.4" };
352
+ CachedMethods[_c] = { fqn: "terraconstructs.aws.edge.CachedMethods", version: "0.2.6" };
353
353
  /** HEAD and GET */
354
354
  CachedMethods.CACHE_GET_HEAD = new CachedMethods(["GET", "HEAD"]);
355
355
  /** HEAD, GET, and OPTIONS */
@@ -430,4 +430,4 @@ var ManagedOriginRequestPolicy;
430
430
  /** This policy includes all values (query strings, and cookies) except the header in the viewer request. */
431
431
  ManagedOriginRequestPolicy["ALL_VIEWER_EXCEPT_HOST_HEADER"] = "Managed-AllViewerExceptHostHeader";
432
432
  })(ManagedOriginRequestPolicy || (exports.ManagedOriginRequestPolicy = ManagedOriginRequestPolicy = {}));
433
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdHJpYnV0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9lZGdlL2Rpc3RyaWJ1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHVJQUF1STtBQUN2SSxzREFLNkI7QUFDN0IsaUNBQWlEO0FBSWpELGdDQUFtQztBQUNuQyxvREFJMEI7QUFDMUIsNENBQXdDO0FBME14Qzs7R0FFRztBQUNILE1BQWEsWUFBYSxTQUFRLGdDQUFnQjtJQUtoRCxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBVUQsWUFBWSxLQUFnQixFQUFFLElBQVksRUFBRSxLQUF3QjtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQVJYLGFBQVEsR0FBRyxJQUFJLEtBQUssRUFBZSxDQUFDO1FBRXBDLHdCQUFtQixHQUFvQixFQUFFLENBQUM7UUFRekQsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsTUFBTSxpQkFBaUIsR0FBRyxvQkFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQzlELEtBQUssQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUNoQyxlQUFTLENBQUMsbUJBQW1CLENBQzlCLENBQUMsTUFBTSxDQUFDO1lBQ1QsSUFDRSxDQUFDLGFBQUssQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3RDLGlCQUFpQixLQUFLLFdBQVcsRUFDakMsQ0FBQztnQkFDRCxNQUFNLElBQUksS0FBSyxDQUNiLG9HQUFvRyxpQkFBaUIsR0FBRyxDQUN6SCxDQUFDO1lBQ0osQ0FB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LCtDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFQVyxvQkFBb0Isb0NBQXBCLG9CQUFvQixRQU8vQjtBQUVEOzs7Ozs7R0FNRztBQUNILElBQVksa0JBNEJYO0FBNUJELFdBQVksa0JBQWtCO0lBQzVCOztPQUVHO0lBQ0gsaURBQTJCLENBQUE7SUFDM0I7OztPQUdHO0lBQ0gsb0VBQThDLENBQUE7SUFDOUM7Ozs7T0FJRztJQUNILG1IQUE2RixDQUFBO0lBQzdGLDJHQUEyRztJQUMzRyxrRUFBNEMsQ0FBQTtJQUM1QyxzRkFBc0Y7SUFDdEYsZ0ZBQTBELENBQUE7SUFDMUQ7O09BRUc7SUFDSCwrRkFBeUUsQ0FBQTtJQUN6RTs7T0FFRztJQUNILDBIQUFvRyxDQUFBO0FBQ3RHLENBQUMsRUE1Qlcsa0JBQWtCLGtDQUFsQixrQkFBa0IsUUE0QjdCO0FBRUQ7Ozs7O0dBS0c7QUFDSCxJQUFZLDBCQWVYO0FBZkQsV0FBWSwwQkFBMEI7SUFDcEMscUhBQXFIO0lBQ3JILDRGQUE4RCxDQUFBO0lBQzlELHFJQUFxSTtJQUNySSw4RUFBZ0QsQ0FBQTtJQUNoRCx5SUFBeUk7SUFDekksc0VBQXdDLENBQUE7SUFDeEMsbUdBQW1HO0lBQ25HLDhEQUFnQyxDQUFBO0lBQ2hDLG9HQUFvRztJQUNwRyw0R0FBOEUsQ0FBQTtJQUM5RSxtT0FBbU87SUFDbk8sOEdBQWdGLENBQUE7SUFDaEYsNEdBQTRHO0lBQzVHLGlHQUFtRSxDQUFBO0FBQ3JFLENBQUMsRUFmVywwQkFBMEIsMENBQTFCLDBCQUEwQixRQWVyQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iLzY0YTBlMmNmNWJiMDdmNmRlYmZjNGIxNjliYjNlMTg1MmNlNjY4YWEvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQvbGliL2Rpc3RyaWJ1dGlvbi50c1xuaW1wb3J0IHtcbiAgY2xvdWRmcm9udERpc3RyaWJ1dGlvbixcbiAgZGF0YUF3c0Nsb3VkZnJvbnRDYWNoZVBvbGljeSxcbiAgZGF0YUF3c0Nsb3VkZnJvbnRPcmlnaW5SZXF1ZXN0UG9saWN5LFxuICBkYXRhQXdzQ2xvdWRmcm9udFJlc3BvbnNlSGVhZGVyc1BvbGljeSxcbn0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7IElSZXNvbHZhYmxlLCBUb2tlbiwgTGF6eSB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IElDZXJ0aWZpY2F0ZSwgSU9yaWdpbiwgRnVuY3Rpb25Bc3NvY2lhdGlvbiB9IGZyb20gXCIuXCI7XG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gXCIuLi8uLi9kdXJhdGlvblwiO1xuaW1wb3J0IHsgQXJuRm9ybWF0IH0gZnJvbSBcIi4uL2FyblwiO1xuaW1wb3J0IHtcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBBd3NTdGFjayB9IGZyb20gXCIuLi9hd3Mtc3RhY2tcIjtcbmltcG9ydCB7XG4gIElSZXNwb25zZUhlYWRlcnNQb2xpY3ksXG4gIE1hbmFnZWRSZXNwb25zZUhlYWRlcnNQb2xpY3ksXG59IGZyb20gXCIuL3Jlc3BvbnNlLWhlYWRlcnMtcG9saWN5XCI7XG5cbi8vIFRPRE86IFJlLWFkZCBpbnZhbGlkYXRpb24gc3VwcG9ydFxuLy8gVE9ETzogUmUtYWRkIG9yaWdpbiBncm91cCAoZmFpbG92ZXIpIHN1cHBvcnRcbi8vIFRPRE86IFJlLWFkZCBrZXkgZ3JvdXAgc3VwcG9ydFxuLy8gVE9ETzogUmUtYWRkIFdBRiBzdXBwb3J0XG4vLyBUT0RPOiBSZS1hZGQgbG9nZ2luZyBzdXBwb3J0XG4vLyBUT0RPOiBSZS1hZGQgY3VzdG9tIGNhY2hlLCBvcmlnaW5SZXF1ZXN0IHBvbGljeSBzdXBwb3J0P1xuXG4vKipcbiAqIE91dHB1dHMgd2hpY2ggbWF5IGJlIHJlZ2lzdGVyZWQgZm9yIG91dHB1dCB2aWEgdGhlIEdyaWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlzdHJpYnV0aW9uT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIGZvciB0aGUgZGlzdHJpYnV0aW9uLiBGb3IgZXhhbXBsZTogYEVERkRWQkQ2MzJCSERTNWAuXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDbG91ZEZyb250IFJvdXRlIDUzIHpvbmUgSUQgdGhhdCBjYW4gYmUgdXNlZCB0b1xuICAgKiByb3V0ZSBhbiBBbGlhcyBSZXNvdXJjZSBSZWNvcmQgU2V0IHRvLlxuICAgKlxuICAgKiBUaGlzIGF0dHJpYnV0ZSBpcyBzaW1wbHkgYW4gYWxpYXMgZm9yIHRoZSB6b25lIElEXG4gICAqL1xuICByZWFkb25seSBob3N0ZWRab25lSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ3VycmVudCBzdGF0dXMgb2YgdGhlIGRpc3RyaWJ1dGlvbi5cbiAgICpcbiAgICogYERlcGxveWVkYCBpZiB0aGUgZGlzdHJpYnV0aW9uJ3MgaW5mb3JtYXRpb24gaXMgZnVsbHkgcHJvcGFnYXRlZFxuICAgKiB0aHJvdWdob3V0IHRoZSBBbWF6b24gQ2xvdWRGcm9udCBzeXN0ZW0uXG4gICAqL1xuICByZWFkb25seSBzdGF0dXM6IHN0cmluZztcblxuICAvKipcbiAgICogQVJOIGZvciB0aGUgZGlzdHJpYnV0aW9uXG4gICAqL1xuICByZWFkb25seSBhcm46IHN0cmluZztcblxuICAvKipcbiAgICogRG9tYWluIG5hbWUgY29ycmVzcG9uZGluZyB0byB0aGUgZGlzdHJpYnV0aW9uLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZTogYGQ2MDQ3MjFmeGFhcXk5LmNsb3VkZnJvbnQubmV0YFxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEltcG9ydGVkIG9yIGNyZWF0ZWQgRE5TIHpvbmUgYXR0cmlidXRlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElEaXN0cmlidXRpb24gZXh0ZW5kcyBJQXdzQ29uc3RydWN0IHtcbiAgLyoqIFN0cm9uZ2x5IHR5cGVkIG91dHB1dHNcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uT3V0cHV0czogRGlzdHJpYnV0aW9uT3V0cHV0cztcblxuICAvKipcbiAgICogRG9tYWluIG5hbWUgY29ycmVzcG9uZGluZyB0byB0aGUgZGlzdHJpYnV0aW9uLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqIEZvciBleGFtcGxlOiBgZDYwNDcyMWZ4YWFxeTkuY2xvdWRmcm9udC5uZXRgXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENsb3VkRnJvbnQgUm91dGUgNTMgem9uZSBJRCB0aGF0IGNhbiBiZSB1c2VkIHRvXG4gICAqIHJvdXRlIGFuIEFsaWFzIFJlc291cmNlIFJlY29yZCBTZXQgdG8uXG4gICAqXG4gICAqIFRoaXMgYXR0cmlidXRlIGlzIHNpbXBseSBhbiBhbGlhcyBmb3IgdGhlIHpvbmUgSURcbiAgICovXG4gIHJlYWRvbmx5IGhvc3RlZFpvbmVJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGEgRGlzdHJpYnV0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlzdHJpYnV0aW9uUHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBFeHRyYSBDTkFNRXMgKGFsdGVybmF0ZSBkb21haW4gbmFtZXMpLCBpZiBhbnksIGZvciB0aGlzIGRpc3RyaWJ1dGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGFsaWFzZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGlzdHJpYnV0aW9uIGlzIGVuYWJsZWQgdG8gYWNjZXB0IGVuZCB1c2VyIHJlcXVlc3RzIGZvciBjb250ZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbiB8IElSZXNvbHZhYmxlO1xuXG4gIC8qKlxuICAgKiBJZiBlbmFibGVkLCB0aGUgcmVzb3VyY2Ugd2lsbCB3YWl0IGZvciB0aGUgZGlzdHJpYnV0aW9uIHN0YXR1cyB0byBjaGFuZ2VcbiAgICogZnJvbSBJblByb2dyZXNzIHRvIERlcGxveWVkLlxuICAgKlxuICAgKiBTZXR0aW5nIHRoaXMgdG9mYWxzZSB3aWxsIHNraXAgdGhlIHByb2Nlc3MuXG4gICAqXG4gICAqIEBkZWZhdWx0OiB0cnVlLlxuICAgKi9cbiAgcmVhZG9ubHkgd2FpdEZvckRlcGxveW1lbnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgdGhlIGRpc3RyaWJ1dGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRCZWhhdmlvcjogQmVoYXZpb3JPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGJlaGF2aW9ycyBmb3IgdGhlIGRpc3RyaWJ1dGlvbiwgbWFwcGVkIGJ5IHRoZSBwYXRoUGF0dGVybiB0aGF0IHNwZWNpZmllcyB3aGljaCByZXF1ZXN0cyB0byBhcHBseSB0aGUgYmVoYXZpb3IgdG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gYWRkaXRpb25hbCBiZWhhdmlvcnMgYXJlIGFkZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbEJlaGF2aW9ycz86IFJlY29yZDxzdHJpbmcsIEJlaGF2aW9yT3B0aW9ucz47XG5cbiAgLyoqXG4gICAqIEEgY2VydGlmaWNhdGUgdG8gYXNzb2NpYXRlIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gVGhlIGNlcnRpZmljYXRlIG11c3QgYmUgbG9jYXRlZCBpbiBOLiBWaXJnaW5pYSAodXMtZWFzdC0xKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgQ2xvdWRGcm9udCB3aWxkY2FyZCBjZXJ0aWZpY2F0ZSAoKi5jbG91ZGZyb250Lm5ldCkgd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgY2VydGlmaWNhdGU/OiBJQ2VydGlmaWNhdGU7XG5cbiAgLyoqXG4gICAqIEFueSBjb21tZW50cyB5b3Ugd2FudCB0byBpbmNsdWRlIGFib3V0IHRoZSBkaXN0cmlidXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gY29tbWVudFxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWVudD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG9iamVjdCB0aGF0IHlvdSB3YW50IENsb3VkRnJvbnQgdG8gcmVxdWVzdCBmcm9tIHlvdXIgb3JpZ2luIChmb3IgZXhhbXBsZSwgaW5kZXguaHRtbClcbiAgICogd2hlbiBhIHZpZXdlciByZXF1ZXN0cyB0aGUgcm9vdCBVUkwgZm9yIHlvdXIgZGlzdHJpYnV0aW9uLiBJZiBubyBkZWZhdWx0IG9iamVjdCBpcyBzZXQsIHRoZVxuICAgKiByZXF1ZXN0IGdvZXMgdG8gdGhlIG9yaWdpbidzIHJvb3QgKGUuZy4sIGV4YW1wbGUuY29tLykuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZGVmYXVsdCByb290IG9iamVjdFxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdFJvb3RPYmplY3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSBjb3VudHJpZXMgaW4gd2hpY2ggeW91ciBjb250ZW50IGlzIGRpc3RyaWJ1dGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGdlb2dyYXBoaWMgcmVzdHJpY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBnZW9SZXN0cmljdGlvbj86IEdlb1Jlc3RyaWN0aW9uO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBtYXhpbXVtIEhUVFAgdmVyc2lvbiB0aGF0IHlvdSB3YW50IHZpZXdlcnMgdG8gdXNlIHRvIGNvbW11bmljYXRlIHdpdGggQ2xvdWRGcm9udC5cbiAgICpcbiAgICogRm9yIHZpZXdlcnMgYW5kIENsb3VkRnJvbnQgdG8gdXNlIEhUVFAvMiwgdmlld2VycyBtdXN0IHN1cHBvcnQgVExTIDEuMiBvciBsYXRlciwgYW5kIG11c3Qgc3VwcG9ydCBzZXJ2ZXIgbmFtZSBpZGVudGlmaWNhdGlvbiAoU05JKS5cbiAgICpcbiAgICogQGRlZmF1bHQgSHR0cFZlcnNpb24uSFRUUDJcbiAgICovXG4gIHJlYWRvbmx5IGh0dHBWZXJzaW9uPzogSHR0cFZlcnNpb247XG5cbiAgLyoqXG4gICAqIFRoZSBwcmljZSBjbGFzcyB0aGF0IGNvcnJlc3BvbmRzIHdpdGggdGhlIG1heGltdW0gcHJpY2UgdGhhdCB5b3Ugd2FudCB0byBwYXkgZm9yIENsb3VkRnJvbnQgc2VydmljZS5cbiAgICogSWYgeW91IHNwZWNpZnkgUHJpY2VDbGFzc19BbGwsIENsb3VkRnJvbnQgcmVzcG9uZHMgdG8gcmVxdWVzdHMgZm9yIHlvdXIgb2JqZWN0cyBmcm9tIGFsbCBDbG91ZEZyb250IGVkZ2UgbG9jYXRpb25zLlxuICAgKiBJZiB5b3Ugc3BlY2lmeSBhIHByaWNlIGNsYXNzIG90aGVyIHRoYW4gUHJpY2VDbGFzc19BbGwsIENsb3VkRnJvbnQgc2VydmVzIHlvdXIgb2JqZWN0cyBmcm9tIHRoZSBDbG91ZEZyb250IGVkZ2UgbG9jYXRpb25cbiAgICogdGhhdCBoYXMgdGhlIGxvd2VzdCBsYXRlbmN5IGFtb25nIHRoZSBlZGdlIGxvY2F0aW9ucyBpbiB5b3VyIHByaWNlIGNsYXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBQcmljZUNsYXNzLlBSSUNFX0NMQVNTX0FMTFxuICAgKi9cbiAgcmVhZG9ubHkgcHJpY2VDbGFzcz86IFByaWNlQ2xhc3M7XG5cbiAgLyoqXG4gICAqIEhvdyBDbG91ZEZyb250IHNob3VsZCBoYW5kbGUgcmVxdWVzdHMgdGhhdCBhcmUgbm90IHN1Y2Nlc3NmdWwgKGUuZy4sIFBhZ2VOb3RGb3VuZCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gY3VzdG9tIGVycm9yIHJlc3BvbnNlcy5cbiAgICovXG4gIHJlYWRvbmx5IGVycm9yUmVzcG9uc2VzPzogRXJyb3JSZXNwb25zZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSB2ZXJzaW9uIG9mIHRoZSBTU0wgcHJvdG9jb2wgdGhhdCB5b3Ugd2FudCBDbG91ZEZyb250IHRvIHVzZSBmb3IgSFRUUFMgY29ubmVjdGlvbnMuXG4gICAqXG4gICAqIENsb3VkRnJvbnQgc2VydmVzIHlvdXIgb2JqZWN0cyBvbmx5IHRvIGJyb3dzZXJzIG9yIGRldmljZXMgdGhhdCBzdXBwb3J0IGF0XG4gICAqIGxlYXN0IHRoZSBTU0wgdmVyc2lvbiB0aGF0IHlvdSBzcGVjaWZ5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFNlY3VyaXR5UG9saWN5UHJvdG9jb2wuVExTX1YxXzJfMjAyMS5cbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1Qcm90b2NvbFZlcnNpb24/OiBTZWN1cml0eVBvbGljeVByb3RvY29sO1xuXG4gIC8qKlxuICAgKiBUaGUgU1NMIG1ldGhvZCBDbG91ZEZyb250IHdpbGwgdXNlIGZvciB5b3VyIGRpc3RyaWJ1dGlvbi5cbiAgICpcbiAgICogU2VydmVyIE5hbWUgSW5kaWNhdGlvbiAoU05JKSAtIGlzIGFuIGV4dGVuc2lvbiB0byB0aGUgVExTIGNvbXB1dGVyIG5ldHdvcmtpbmcgcHJvdG9jb2wgYnkgd2hpY2ggYSBjbGllbnQgaW5kaWNhdGVzXG4gICAqIHdoaWNoIGhvc3RuYW1lIGl0IGlzIGF0dGVtcHRpbmcgdG8gY29ubmVjdCB0byBhdCB0aGUgc3RhcnQgb2YgdGhlIGhhbmRzaGFraW5nIHByb2Nlc3MuIFRoaXMgYWxsb3dzIGEgc2VydmVyIHRvIHByZXNlbnRcbiAgICogbXVsdGlwbGUgY2VydGlmaWNhdGVzIG9uIHRoZSBzYW1lIElQIGFkZHJlc3MgYW5kIFRDUCBwb3J0IG51bWJlciBhbmQgaGVuY2UgYWxsb3dzIG11bHRpcGxlIHNlY3VyZSAoSFRUUFMpIHdlYnNpdGVzXG4gICAqIChvciBhbnkgb3RoZXIgc2VydmljZSBvdmVyIFRMUykgdG8gYmUgc2VydmVkIGJ5IHRoZSBzYW1lIElQIGFkZHJlc3Mgd2l0aG91dCByZXF1aXJpbmcgYWxsIHRob3NlIHNpdGVzIHRvIHVzZSB0aGUgc2FtZSBjZXJ0aWZpY2F0ZS5cbiAgICpcbiAgICogQ2xvdWRGcm9udCBjYW4gdXNlIFNOSSB0byBob3N0IG11bHRpcGxlIGRpc3RyaWJ1dGlvbnMgb24gdGhlIHNhbWUgSVAgLSB3aGljaCBhIGxhcmdlIG1ham9yaXR5IG9mIGNsaWVudHMgd2lsbCBzdXBwb3J0LlxuICAgKlxuICAgKiBJZiB5b3VyIGNsaWVudHMgY2Fubm90IHN1cHBvcnQgU05JIGhvd2V2ZXIgLSBDbG91ZEZyb250IGNhbiB1c2UgZGVkaWNhdGVkIElQcyBmb3IgeW91ciBkaXN0cmlidXRpb24gLSBidXQgdGhlcmUgaXMgYSBwcm9yYXRlZCBtb250aGx5IGNoYXJnZSBmb3JcbiAgICogdXNpbmcgdGhpcyBmZWF0dXJlLiBCeSBkZWZhdWx0LCB3ZSB1c2UgU05JIC0gYnV0IHlvdSBjYW4gb3B0aW9uYWxseSBlbmFibGUgZGVkaWNhdGVkIElQcyAoVklQKS5cbiAgICpcbiAgICogU2VlIHRoZSBDbG91ZEZyb250IFNTTCBmb3IgbW9yZSBkZXRhaWxzIGFib3V0IHByaWNpbmcgOiBodHRwczovL2F3cy5hbWF6b24uY29tL2Nsb3VkZnJvbnQvY3VzdG9tLXNzbC1kb21haW5zL1xuICAgKlxuICAgKiBAZGVmYXVsdCBTU0xNZXRob2QuU05JXG4gICAqL1xuICByZWFkb25seSBzc2xTdXBwb3J0TWV0aG9kPzogU1NMTWV0aG9kO1xufVxuXG4vKipcbiAqIEFtYXpvbiBDbG91ZGZyb250IERpc3RyaWJ1dGlvblxuICovXG5leHBvcnQgY2xhc3MgRGlzdHJpYnV0aW9uIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElEaXN0cmlidXRpb24ge1xuICAvLyBUT0RPOiBBZGQgc3RhdGljIGZyb21Mb29rdXA/XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2U6IGNsb3VkZnJvbnREaXN0cmlidXRpb24uQ2xvdWRmcm9udERpc3RyaWJ1dGlvbjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vdXRwdXRzOiBEaXN0cmlidXRpb25PdXRwdXRzO1xuICBwdWJsaWMgZ2V0IGRpc3RyaWJ1dGlvbk91dHB1dHMoKTogRGlzdHJpYnV0aW9uT3V0cHV0cyB7XG4gICAgcmV0dXJuIHRoaXMuX291dHB1dHM7XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLmRpc3RyaWJ1dGlvbk91dHB1dHM7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfZG9tYWluTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IGRvbWFpbk5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZG9tYWluTmFtZTtcbiAgfVxuICBwdWJsaWMgcmVhZG9ubHkgaG9zdGVkWm9uZUlkOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3JpZ2lucyA9IG5ldyBBcnJheTxPcmlnaW5JbmRleD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGFkZGl0aW9uYWxCZWhhdmlvcnM6IENhY2hlQmVoYXZpb3JbXSA9IFtdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JSZXNwb25zZXM6IEVycm9yUmVzcG9uc2VbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBjZXJ0aWZpY2F0ZT86IElDZXJ0aWZpY2F0ZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBEaXN0cmlidXRpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBuYW1lLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMuY2VydGlmaWNhdGUpIHtcbiAgICAgIGNvbnN0IGNlcnRpZmljYXRlUmVnaW9uID0gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3QodGhpcykuc3BsaXRBcm4oXG4gICAgICAgIHByb3BzLmNlcnRpZmljYXRlLmNlcnRpZmljYXRlQXJuLFxuICAgICAgICBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICAgICkucmVnaW9uO1xuICAgICAgaWYgKFxuICAgICAgICAhVG9rZW4uaXNVbnJlc29sdmVkKGNlcnRpZmljYXRlUmVnaW9uKSAmJlxuICAgICAgICBjZXJ0aWZpY2F0ZVJlZ2lvbiAhPT0gXCJ1cy1lYXN0LTFcIlxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgRGlzdHJpYnV0aW9uIGNlcnRpZmljYXRlcyBtdXN0IGJlIGluIHRoZSB1cy1lYXN0LTEgcmVnaW9uIGFuZCB0aGUgY2VydGlmaWNhdGUgeW91IHByb3ZpZGVkIGlzIGluICR7Y2VydGlmaWNhdGVSZWdpb259LmAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2VydGlmaWNhdGUgPSBwcm9wcy5jZXJ0aWZpY2F0ZTtcbiAgICB0aGlzLmVycm9yUmVzcG9uc2VzID0gcHJvcHMuZXJyb3JSZXNwb25zZXMgPz8gW107XG5cbiAgICBjb25zdCBkZWZhdWx0T3JpZ2luSWQgPSB0aGlzLmFkZE9yaWdpbihwcm9wcy5kZWZhdWx0QmVoYXZpb3Iub3JpZ2luKTtcbiAgICBpZiAocHJvcHMuYWRkaXRpb25hbEJlaGF2aW9ycykge1xuICAgICAgT2JqZWN0LmVudHJpZXMocHJvcHMuYWRkaXRpb25hbEJlaGF2aW9ycykuZm9yRWFjaChcbiAgICAgICAgKFtwYXRoUGF0dGVybiwgYmVoYXZpb3JPcHRpb25zXSkgPT4ge1xuICAgICAgICAgIHRoaXMuYWRkQmVoYXZpb3IoXG4gICAgICAgICAgICBwYXRoUGF0dGVybixcbiAgICAgICAgICAgIGJlaGF2aW9yT3B0aW9ucy5vcmlnaW4sXG4gICAgICAgICAgICBiZWhhdmlvck9wdGlvbnMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQ29tbWVudHMgaGF2ZSBhbiB1bmRvY3VtZW50ZWQgbGltaXQgb2YgMTI4IGNoYXJhY3RlcnNcbiAgICBjb25zdCB0cmltbWVkQ29tbWVudCA9XG4gICAgICBwcm9wcy5jb21tZW50ICYmIHByb3BzLmNvbW1lbnQubGVuZ3RoID4gMTI4XG4gICAgICAgID8gYCR7cHJvcHMuY29tbWVudC5zbGljZSgwLCAxMjggLSAzKX0uLi5gXG4gICAgICAgIDogcHJvcHMuY29tbWVudDtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgY2xvdWRmcm9udERpc3RyaWJ1dGlvbi5DbG91ZGZyb250RGlzdHJpYnV0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgIHtcbiAgICAgICAgZW5hYmxlZDogcHJvcHMuZW5hYmxlZCA/PyB0cnVlLFxuICAgICAgICBvcmlnaW46IExhenkuYW55VmFsdWUoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgICB0aGlzLl9vcmlnaW5zLm1hcCgobykgPT5cbiAgICAgICAgICAgICAgLy8gTGF6eSBwcm9kdWNlcnMgbmVlZCBhZGRpdGlvbmFsIHh4eFRvVGVycmFmb3JtIHdyYXBcbiAgICAgICAgICAgICAgY2xvdWRmcm9udERpc3RyaWJ1dGlvbi5jbG91ZGZyb250RGlzdHJpYnV0aW9uT3JpZ2luVG9UZXJyYWZvcm0oXG4gICAgICAgICAgICAgICAgby5vcmlnaW4ucmVuZGVyKG8uaWQpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSksXG4gICAgICAgIGRlZmF1bHRDYWNoZUJlaGF2aW9yOiB0aGlzLl9yZW5kZXJEZWZhdWx0Q2FjaGVCZWhhdmlvcih7XG4gICAgICAgICAgcGF0aFBhdHRlcm46IFwiKlwiLCAvLyBpZ25vcmVkIGZvciBEZWZhdWx0IENhY2hlIEJlaGF2aW9yXG4gICAgICAgICAgdGFyZ2V0T3JpZ2luSWQ6IGRlZmF1bHRPcmlnaW5JZCxcbiAgICAgICAgICAuLi5wcm9wcy5kZWZhdWx0QmVoYXZpb3IsXG4gICAgICAgIH0pLFxuICAgICAgICBvcmRlcmVkQ2FjaGVCZWhhdmlvcjogTGF6eS5hbnlWYWx1ZShcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxCZWhhdmlvcnMubWFwKChiKSA9PlxuICAgICAgICAgICAgICAgIC8vIExhenkgcHJvZHVjZXJzIG5lZWQgYWRkaXRpb25hbCB4eHhUb1RlcnJhZm9ybSB3cmFwXG4gICAgICAgICAgICAgICAgY2xvdWRmcm9udERpc3RyaWJ1dGlvbi5jbG91ZGZyb250RGlzdHJpYnV0aW9uT3JkZXJlZENhY2hlQmVoYXZpb3JUb1RlcnJhZm9ybShcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aFBhdHRlcm46IGIucGF0aFBhdHRlcm4sXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX3JlbmRlckRlZmF1bHRDYWNoZUJlaGF2aW9yKGIpLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBvbWl0RW1wdHlBcnJheTogdHJ1ZSB9LFxuICAgICAgICApLFxuICAgICAgICBhbGlhc2VzOiBwcm9wcy5hbGlhc2VzLFxuICAgICAgICBjb21tZW50OiB0cmltbWVkQ29tbWVudCxcbiAgICAgICAgY3VzdG9tRXJyb3JSZXNwb25zZTogdGhpcy5yZW5kZXJFcnJvclJlc3BvbnNlcygpLFxuICAgICAgICBkZWZhdWx0Um9vdE9iamVjdDogcHJvcHMuZGVmYXVsdFJvb3RPYmplY3QsXG4gICAgICAgIGh0dHBWZXJzaW9uOiBwcm9wcy5odHRwVmVyc2lvbiA/PyBIdHRwVmVyc2lvbi5IVFRQMixcbiAgICAgICAgcHJpY2VDbGFzczogcHJvcHMucHJpY2VDbGFzcyA/PyB1bmRlZmluZWQsXG4gICAgICAgIHJlc3RyaWN0aW9uczogdGhpcy5yZW5kZXJSZXN0cmljdGlvbnMocHJvcHMuZ2VvUmVzdHJpY3Rpb24pLFxuICAgICAgICB2aWV3ZXJDZXJ0aWZpY2F0ZTogdGhpcy5yZW5kZXJWaWV3ZXJDZXJ0aWZpY2F0ZShcbiAgICAgICAgICB0aGlzLmNlcnRpZmljYXRlLFxuICAgICAgICAgIHByb3BzLm1pbmltdW1Qcm90b2NvbFZlcnNpb24sXG4gICAgICAgICAgcHJvcHMuc3NsU3VwcG9ydE1ldGhvZCxcbiAgICAgICAgKSxcbiAgICAgICAgd2FpdEZvckRlcGxveW1lbnQ6IHByb3BzLndhaXRGb3JEZXBsb3ltZW50LFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy5fZG9tYWluTmFtZSA9IHRoaXMucmVzb3VyY2UuZG9tYWluTmFtZTtcbiAgICB0aGlzLmhvc3RlZFpvbmVJZCA9IHRoaXMucmVzb3VyY2UuaG9zdGVkWm9uZUlkO1xuICAgIHRoaXMuX291dHB1dHMgPSB7XG4gICAgICBpZDogdGhpcy5yZXNvdXJjZS5pZCxcbiAgICAgIGhvc3RlZFpvbmVJZDogdGhpcy5yZXNvdXJjZS5ob3N0ZWRab25lSWQsXG4gICAgICBzdGF0dXM6IHRoaXMucmVzb3VyY2Uuc3RhdHVzLFxuICAgICAgYXJuOiB0aGlzLnJlc291cmNlLmFybixcbiAgICAgIGRvbWFpbk5hbWU6IHRoaXMuX2RvbWFpbk5hbWUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gT3JpZ2luIHRvIHRoaXMgRGlzdHJpYnV0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gb3JpZ2luIFRoZSBPcmlnaW4gdG8gYWRkLlxuICAgKiBAcGFyYW0gb3JpZ2luSWQgQW4gb3B0aW9uYWwgaWQgdG8gdXNlIGZvciB0aGUgT3JpZ2luIG9yIG9uZSB3aWxsIGJlIGdlbmVyYXRlZC5cbiAgICovXG4gIHB1YmxpYyBhZGRPcmlnaW4ob3JpZ2luOiBJT3JpZ2luLCBvcmlnaW5JZD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgaW5kZXhlZE9yaWdpbiA9IHRoaXMuX29yaWdpbnMuZmluZChcbiAgICAgIChvcmlnaW5JbmRleCkgPT4gb3JpZ2luSW5kZXgub3JpZ2luID09PSBvcmlnaW4sXG4gICAgKTtcbiAgICBpZiAoaW5kZXhlZE9yaWdpbikge1xuICAgICAgaWYgKG9yaWdpbklkICYmIG9yaWdpbklkICE9PSBpbmRleGVkT3JpZ2luLmlkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgRHVwbGljYXRlIG9yaWdpbiBmb3IgJHtpbmRleGVkT3JpZ2luLmlkfSBhbmQgJHtvcmlnaW5JZH0uYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbmRleGVkT3JpZ2luLmlkO1xuICAgIH1cbiAgICBjb25zdCBuZXh0SW5kZXggPSB0aGlzLl9vcmlnaW5zLmxlbmd0aDtcbiAgICBjb25zdCBpZCA9IG9yaWdpbklkID8/IGBvcmlnaW4tJHtuZXh0SW5kZXh9YDtcbiAgICAvLyBlbnN1cmUgaWQgKGlmIHByb3ZpZGVkKSBpcyB1bmlxdWUgd2l0aGluIERpc3RyaWJ1dGlvblxuICAgIGlmICh0aGlzLl9vcmlnaW5zLnNvbWUoKG9yaWdpbkluZGV4KSA9PiBvcmlnaW5JbmRleC5pZCA9PT0gaWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBEdXBsaWNhdGUgb3JpZ2luIGlkICR7aWR9LiBPcmlnaW5JZHMgbXVzdCBiZSB1bmlxdWUgd2l0aGluIGEgZGlzdHJpYnV0aW9uYCxcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuX29yaWdpbnMucHVzaCh7IG9yaWdpbiwgaWQgfSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJFcnJvclJlc3BvbnNlcygpOlxuICAgIHwgY2xvdWRmcm9udERpc3RyaWJ1dGlvbi5DbG91ZGZyb250RGlzdHJpYnV0aW9uQ3VzdG9tRXJyb3JSZXNwb25zZVtdXG4gICAgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLmVycm9yUmVzcG9uc2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlcy5tYXAoKGVycm9yQ29uZmlnKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICFlcnJvckNvbmZpZy5yZXNwb25zZUh0dHBTdGF0dXMgJiZcbiAgICAgICAgIWVycm9yQ29uZmlnLnR0bCAmJlxuICAgICAgICAhZXJyb3JDb25maWcucmVzcG9uc2VQYWdlUGF0aFxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcIkEgY3VzdG9tIGVycm9yIHJlc3BvbnNlIHdpdGhvdXQgZWl0aGVyIGEgJ3Jlc3BvbnNlSHR0cFN0YXR1cycsICd0dGwnIG9yICdyZXNwb25zZVBhZ2VQYXRoJyBpcyBub3QgdmFsaWQuXCIsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVycm9yQ2FjaGluZ01pblR0bDogZXJyb3JDb25maWcudHRsPy50b1NlY29uZHMoKSxcbiAgICAgICAgZXJyb3JDb2RlOiBlcnJvckNvbmZpZy5odHRwU3RhdHVzLFxuICAgICAgICByZXNwb25zZUNvZGU6IGVycm9yQ29uZmlnLnJlc3BvbnNlUGFnZVBhdGhcbiAgICAgICAgICA/IChlcnJvckNvbmZpZy5yZXNwb25zZUh0dHBTdGF0dXMgPz8gZXJyb3JDb25maWcuaHR0cFN0YXR1cylcbiAgICAgICAgICA6IGVycm9yQ29uZmlnLnJlc3BvbnNlSHR0cFN0YXR1cyxcbiAgICAgICAgcmVzcG9uc2VQYWdlUGF0aDogZXJyb3JDb25maWcucmVzcG9uc2VQYWdlUGF0aCxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBiZWhhdmlvciB0byB0aGlzIGRpc3RyaWJ1dGlvbiBmb3IgdGhlIGdpdmVuIHBhdGhQYXR0ZXJuLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aFBhdHRlcm4gdGhlIHBhdGggcGF0dGVybiAoZS5nLiwgJ2ltYWdlcy8qJykgdGhhdCBzcGVjaWZpZXMgd2hpY2ggcmVxdWVzdHMgdG8gYXBwbHkgdGhlIGJlaGF2aW9yIHRvLlxuICAgKiBAcGFyYW0gb3JpZ2luIHRoZSBvcmlnaW4gdG8gdXNlIGZvciB0aGlzIGJlaGF2aW9yXG4gICAqIEBwYXJhbSBiZWhhdmlvck9wdGlvbnMgdGhlIG9wdGlvbnMgZm9yIHRoZSBiZWhhdmlvciBhdCB0aGlzIHBhdGguXG4gICAqL1xuICBwdWJsaWMgYWRkQmVoYXZpb3IoXG4gICAgcGF0aFBhdHRlcm46IHN0cmluZyxcbiAgICBvcmlnaW46IElPcmlnaW4sXG4gICAgYmVoYXZpb3JPcHRpb25zOiBBZGRCZWhhdmlvck9wdGlvbnMgPSB7fSxcbiAgKSB7XG4gICAgaWYgKHBhdGhQYXR0ZXJuID09PSBcIipcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIk9ubHkgdGhlIGRlZmF1bHQgYmVoYXZpb3IgY2FuIGhhdmUgYSBwYXRoIHBhdHRlcm4gb2YgJyonXCIsXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCB0YXJnZXRPcmlnaW5JZCA9IHRoaXMuYWRkT3JpZ2luKG9yaWdpbik7XG4gICAgdGhpcy5hZGRpdGlvbmFsQmVoYXZpb3JzLnB1c2goe1xuICAgICAgcGF0aFBhdHRlcm4sXG4gICAgICBvcmlnaW4sXG4gICAgICB0YXJnZXRPcmlnaW5JZCxcbiAgICAgIC4uLmJlaGF2aW9yT3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuZCByZXR1cm5zIHRoZSBUZXJyYWZvcm0gcmVwcmVzZW50YXRpb24gb2YgdGhpcyBiZWhhdmlvci5cbiAgICogVGhpcyByZW5kZXJzIGFzIGEgXCJDbG91ZGZyb250RGlzdHJpYnV0aW9uRGVmYXVsdENhY2hlQmVoYXZpb3JcIlxuICAgKiByZWdhcmRsZXNzIGlmIHRoaXMgaXMgYSBkZWZhdWx0IGNhY2hlIGJlaGF2aW9yIG9yIG5vdCwgYXMgdGhlIHR3b1xuICAgKiBhcmUgaWRlbnRpY2FsIGV4Y2VwdCB0aGUgYHBhdGhQYXR0ZXJuYCBpcyBvbWl0dGVkIGZvciB0aGUgZGVmYXVsdFxuICAgKiBjYWNoZSBiZWhhdmlvci5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIF9yZW5kZXJEZWZhdWx0Q2FjaGVCZWhhdmlvcihcbiAgICBwcm9wczogQ2FjaGVCZWhhdmlvcixcbiAgKTogY2xvdWRmcm9udERpc3RyaWJ1dGlvbi5DbG91ZGZyb250RGlzdHJpYnV0aW9uRGVmYXVsdENhY2hlQmVoYXZpb3Ige1xuICAgIC8vIFRPRE86IHNob3VsZCBpdCBiZSBwb3NzaWJsZSB0byBsZWF2ZSBjYWNoZVBvbGljeSBiZSB1bmRlZmluZWQ/XG4gICAgY29uc3QgbWFuYWdlZENhY2hlUG9saWN5TmFtZSA9XG4gICAgICBwcm9wcy5jYWNoZVBvbGljeSA/PyBNYW5hZ2VkQ2FjaGVQb2xpY3kuQ0FDSElOR19PUFRJTUlaRUQ7XG4gICAgY29uc3QgY2FjaGVQb2xpY3kgPSB0aGlzLmRhdGFMb29rdXAoXG4gICAgICBtYW5hZ2VkQ2FjaGVQb2xpY3lOYW1lLFxuICAgICAgZGF0YUF3c0Nsb3VkZnJvbnRDYWNoZVBvbGljeS5EYXRhQXdzQ2xvdWRmcm9udENhY2hlUG9saWN5LFxuICAgICAgeyBuYW1lOiBtYW5hZ2VkQ2FjaGVQb2xpY3lOYW1lIH0sXG4gICAgKTtcbiAgICBjb25zdCBvcmlnaW5SZXF1ZXN0UG9saWN5ID0gdGhpcy5kYXRhTG9va3VwKFxuICAgICAgcHJvcHMub3JpZ2luUmVxdWVzdFBvbGljeSxcbiAgICAgIGRhdGFBd3NDbG91ZGZyb250T3JpZ2luUmVxdWVzdFBvbGljeS5EYXRhQXdzQ2xvdWRmcm9udE9yaWdpblJlcXVlc3RQb2xpY3ksXG4gICAgICB7IG5hbWU6IHByb3BzLm9yaWdpblJlcXVlc3RQb2xpY3kgfSxcbiAgICApO1xuICAgIGxldCByZXNwb25zZUhlYWRlcnNQb2xpY3lJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmICh0eXBlb2YgcHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5ID09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IG1hbmFnZWRQb2xpY3kgPSB0aGlzLmRhdGFMb29rdXAoXG4gICAgICAgIHByb3BzLnJlc3BvbnNlSGVhZGVyc1BvbGljeSxcbiAgICAgICAgZGF0YUF3c0Nsb3VkZnJvbnRSZXNwb25zZUhlYWRlcnNQb2xpY3kuRGF0YUF3c0Nsb3VkZnJvbnRSZXNwb25zZUhlYWRlcnNQb2xpY3ksXG4gICAgICAgIHsgbmFtZTogcHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5IH0sXG4gICAgICApO1xuICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5SWQgPSBtYW5hZ2VkUG9saWN5Py5pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5SWQgPVxuICAgICAgICBwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3k/LnJlc3BvbnNlSGVhZGVyc1BvbGljeUlkO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXRPcmlnaW5JZDogcHJvcHMudGFyZ2V0T3JpZ2luSWQsXG4gICAgICBhbGxvd2VkTWV0aG9kczpcbiAgICAgICAgcHJvcHMuYWxsb3dlZE1ldGhvZHM/Lm1ldGhvZHMgPz8gQWxsb3dlZE1ldGhvZHMuQUxMT1dfR0VUX0hFQUQubWV0aG9kcyxcbiAgICAgIGNhY2hlZE1ldGhvZHM6XG4gICAgICAgIHByb3BzLmNhY2hlZE1ldGhvZHM/Lm1ldGhvZHMgPz8gQ2FjaGVkTWV0aG9kcy5DQUNIRV9HRVRfSEVBRC5tZXRob2RzLFxuICAgICAgY2FjaGVQb2xpY3lJZDogY2FjaGVQb2xpY3k/LmlkLFxuICAgICAgY29tcHJlc3M6IHByb3BzLmNvbXByZXNzID8/IHRydWUsXG4gICAgICBvcmlnaW5SZXF1ZXN0UG9saWN5SWQ6IG9yaWdpblJlcXVlc3RQb2xpY3k/LmlkLFxuICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5SWQsXG4gICAgICBzbW9vdGhTdHJlYW1pbmc6IHByb3BzLnNtb290aFN0cmVhbWluZyxcbiAgICAgIHZpZXdlclByb3RvY29sUG9saWN5OlxuICAgICAgICBwcm9wcy52aWV3ZXJQcm90b2NvbFBvbGljeSA/PyBWaWV3ZXJQcm90b2NvbFBvbGljeS5BTExPV19BTEwsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyUmVzdHJpY3Rpb25zKGdlb1Jlc3RyaWN0aW9uPzogR2VvUmVzdHJpY3Rpb24pIHtcbiAgICByZXR1cm4gZ2VvUmVzdHJpY3Rpb25cbiAgICAgID8ge1xuICAgICAgICAgIGdlb1Jlc3RyaWN0aW9uOiB7XG4gICAgICAgICAgICByZXN0cmljdGlvblR5cGU6IGdlb1Jlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVHlwZSxcbiAgICAgICAgICAgIGxvY2F0aW9uczpcbiAgICAgICAgICAgICAgZ2VvUmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UeXBlICE9PSBHZW9SZXN0cmljdGlvblR5cGUuTk9ORVxuICAgICAgICAgICAgICAgID8gdGhpcy52YWxpZGF0ZUxvY2F0aW9ucyhnZW9SZXN0cmljdGlvbi5sb2NhdGlvbnMpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgICAgZ2VvUmVzdHJpY3Rpb246IHtcbiAgICAgICAgICAgIHJlc3RyaWN0aW9uVHlwZTogR2VvUmVzdHJpY3Rpb25UeXBlLk5PTkUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVMb2NhdGlvbnMobG9jYXRpb25zOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IExPQ0FUSU9OX1JFR0VYID0gL15bQS1aXXsyfSQvO1xuICAgIGlmIChsb2NhdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTaG91bGQgcHJvdmlkZSBhdCBsZWFzdCAxIGxvY2F0aW9uXCIpO1xuICAgIH1cbiAgICBsb2NhdGlvbnMuZm9yRWFjaCgobG9jYXRpb24pID0+IHtcbiAgICAgIGlmICghTE9DQVRJT05fUkVHRVgudGVzdChsb2NhdGlvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIGxvY2F0aW9uIGZvcm1hdCBmb3IgbG9jYXRpb246ICR7bG9jYXRpb259LCBsb2NhdGlvbiBzaG91bGQgYmUgdHdvLWxldHRlciBhbmQgdXBwZXJjYXNlIGNvdW50cnkgSVNPIDMxNjYtMS1hbHBoYS0yIGNvZGVgLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBsb2NhdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclZpZXdlckNlcnRpZmljYXRlKFxuICAgIGNlcnRpZmljYXRlPzogSUNlcnRpZmljYXRlLFxuICAgIG1pbmltdW1Qcm90b2NvbFZlcnNpb25Qcm9wPzogU2VjdXJpdHlQb2xpY3lQcm90b2NvbCxcbiAgICBzc2xTdXBwb3J0TWV0aG9kUHJvcD86IFNTTE1ldGhvZCxcbiAgKTogY2xvdWRmcm9udERpc3RyaWJ1dGlvbi5DbG91ZGZyb250RGlzdHJpYnV0aW9uVmlld2VyQ2VydGlmaWNhdGUge1xuICAgIGNvbnN0IG1pbmltdW1Qcm90b2NvbFZlcnNpb24gPVxuICAgICAgbWluaW11bVByb3RvY29sVmVyc2lvblByb3AgPz8gU2VjdXJpdHlQb2xpY3lQcm90b2NvbC5UTFNfVjFfMl8yMDIxO1xuICAgIGNvbnN0IHNzbFN1cHBvcnRNZXRob2QgPSBzc2xTdXBwb3J0TWV0aG9kUHJvcCA/PyBTU0xNZXRob2QuU05JO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLihjZXJ0aWZpY2F0ZVxuICAgICAgICA/IHsgYWNtQ2VydGlmaWNhdGVBcm46IGNlcnRpZmljYXRlLmNlcnRpZmljYXRlQXJuIH1cbiAgICAgICAgOiB7IGNsb3VkZnJvbnREZWZhdWx0Q2VydGlmaWNhdGU6IHRydWUgfSksXG4gICAgICBtaW5pbXVtUHJvdG9jb2xWZXJzaW9uOiBtaW5pbXVtUHJvdG9jb2xWZXJzaW9uLFxuICAgICAgc3NsU3VwcG9ydE1ldGhvZDogc3NsU3VwcG9ydE1ldGhvZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbmRpdGlvbmFsbHkgbG9va3VwIG9yIGNyZWF0ZSBhIGNoaWxkIGJhc2VkIG9uIHRoZSBpZCBwcm92aWRlZC5cbiAgICogSWYgdGhlIGlkIGlzIHVuZGVmaW5lZCwgaXQgd2lsbCByZXR1cm4gdW5kZWZpbmVkLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgdGhlIGlkIG9mIHRoZSBjaGlsZCB0byBsb29rdXAgb3IgY3JlYXRlXG4gICAqIEBwYXJhbSBjb25zdHJ1Y3RUeXBlIHRoZSB0eXBlIG9mIHRoZSBjaGlsZCB0byBjcmVhdGVcbiAgICogQHBhcmFtIGNvbmZpZyB0aGUgY29uZmlndXJhdGlvbiB0byBwYXNzIHRvIHRoZSBjaGlsZFxuICAgKi9cbiAgcHJpdmF0ZSBkYXRhTG9va3VwPFRDb25zdHJ1Y3QgZXh0ZW5kcyBDb25zdHJ1Y3Q+KFxuICAgIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgY29uc3RydWN0VHlwZTogbmV3IChcbiAgICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgICBpZElucHV0OiBzdHJpbmcsXG4gICAgICBjb25maWc6IGFueSxcbiAgICApID0+IFRDb25zdHJ1Y3QsXG4gICAgY29uZmlnPzogYW55LFxuICApOiBUQ29uc3RydWN0IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIWlkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBsZXQgY2hpbGQgPSB0aGlzLm5vZGUudHJ5RmluZENoaWxkKGlkKSBhcyBUQ29uc3RydWN0IHwgdW5kZWZpbmVkO1xuICAgIGlmICghY2hpbGQpIHtcbiAgICAgIGNoaWxkID0gbmV3IGNvbnN0cnVjdFR5cGUodGhpcywgaWQsIGNvbmZpZyk7XG4gICAgfVxuICAgIHJldHVybiBjaGlsZDtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlb1Jlc3RyaWN0aW9uIHtcbiAgcmVhZG9ubHkgbG9jYXRpb25zOiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgcmVzdHJpY3Rpb25UeXBlOiBHZW9SZXN0cmljdGlvblR5cGU7XG59XG5cbmV4cG9ydCBlbnVtIEdlb1Jlc3RyaWN0aW9uVHlwZSB7XG4gIE5PTkUgPSBcIm5vbmVcIixcbiAgV0hJVEVMSVNUID0gXCJ3aGl0ZWxpc3RcIixcbiAgQkxBQ0tMSVNUID0gXCJibGFja2xpc3RcIixcbn1cblxuLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNTYuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udC9saWIvZGlzdHJpYnV0aW9uLnRzXG5cbi8qKiBNYXhpbXVtIEhUVFAgdmVyc2lvbiB0byBzdXBwb3J0ICovXG5leHBvcnQgZW51bSBIdHRwVmVyc2lvbiB7XG4gIC8qKiBIVFRQIDEuMSAqL1xuICBIVFRQMV8xID0gXCJodHRwMS4xXCIsXG4gIC8qKiBIVFRQIDIgKi9cbiAgSFRUUDIgPSBcImh0dHAyXCIsXG4gIC8qKiBIVFRQIDIgYW5kIEhUVFAgMyAqL1xuICBIVFRQMl9BTkRfMyA9IFwiaHR0cDJhbmQzXCIsXG4gIC8qKiBIVFRQIDMgKi9cbiAgSFRUUDMgPSBcImh0dHAzXCIsXG59XG5cbi8qKlxuICogVGhlIHByaWNlIGNsYXNzIGRldGVybWluZXMgaG93IG1hbnkgZWRnZSBsb2NhdGlvbnMgQ2xvdWRGcm9udCB3aWxsIHVzZSBmb3IgeW91ciBkaXN0cmlidXRpb24uXG4gKiBTZWUgaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9jbG91ZGZyb250L3ByaWNpbmcvIGZvciBmdWxsIGxpc3Qgb2Ygc3VwcG9ydGVkIHJlZ2lvbnMuXG4gKi9cbmV4cG9ydCBlbnVtIFByaWNlQ2xhc3Mge1xuICAvKiogVVNBLCBDYW5hZGEsIEV1cm9wZSwgJiBJc3JhZWwgKi9cbiAgUFJJQ0VfQ0xBU1NfMTAwID0gXCJQcmljZUNsYXNzXzEwMFwiLFxuICAvKiogUFJJQ0VfQ0xBU1NfMTAwICsgU291dGggQWZyaWNhLCBLZW55YSwgTWlkZGxlIEVhc3QsIEphcGFuLCBTaW5nYXBvcmUsIFNvdXRoIEtvcmVhLCBUYWl3YW4sIEhvbmcgS29uZywgJiBQaGlsaXBwaW5lcyAqL1xuICBQUklDRV9DTEFTU18yMDAgPSBcIlByaWNlQ2xhc3NfMjAwXCIsXG4gIC8qKiBBbGwgbG9jYXRpb25zICovXG4gIFBSSUNFX0NMQVNTX0FMTCA9IFwiUHJpY2VDbGFzc19BbGxcIixcbn1cblxuLyoqXG4gKiBUaGUgU1NMIG1ldGhvZCBDbG91ZEZyb250IHdpbGwgdXNlIGZvciB5b3VyIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiBTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uIChTTkkpIC0gaXMgYW4gZXh0ZW5zaW9uIHRvIHRoZSBUTFMgY29tcHV0ZXIgbmV0d29ya2luZyBwcm90b2NvbCBieSB3aGljaCBhIGNsaWVudCBpbmRpY2F0ZXNcbiAqICB3aGljaCBob3N0bmFtZSBpdCBpcyBhdHRlbXB0aW5nIHRvIGNvbm5lY3QgdG8gYXQgdGhlIHN0YXJ0IG9mIHRoZSBoYW5kc2hha2luZyBwcm9jZXNzLiBUaGlzIGFsbG93cyBhIHNlcnZlciB0byBwcmVzZW50XG4gKiAgbXVsdGlwbGUgY2VydGlmaWNhdGVzIG9uIHRoZSBzYW1lIElQIGFkZHJlc3MgYW5kIFRDUCBwb3J0IG51bWJlciBhbmQgaGVuY2UgYWxsb3dzIG11bHRpcGxlIHNlY3VyZSAoSFRUUFMpIHdlYnNpdGVzXG4gKiAob3IgYW55IG90aGVyIHNlcnZpY2Ugb3ZlciBUTFMpIHRvIGJlIHNlcnZlZCBieSB0aGUgc2FtZSBJUCBhZGRyZXNzIHdpdGhvdXQgcmVxdWlyaW5nIGFsbCB0aG9zZSBzaXRlcyB0byB1c2UgdGhlIHNhbWUgY2VydGlmaWNhdGUuXG4gKlxuICogQ2xvdWRGcm9udCBjYW4gdXNlIFNOSSB0byBob3N0IG11bHRpcGxlIGRpc3RyaWJ1dGlvbnMgb24gdGhlIHNhbWUgSVAgLSB3aGljaCBhIGxhcmdlIG1ham9yaXR5IG9mIGNsaWVudHMgd2lsbCBzdXBwb3J0LlxuICpcbiAqIElmIHlvdXIgY2xpZW50cyBjYW5ub3Qgc3VwcG9ydCBTTkkgaG93ZXZlciAtIENsb3VkRnJvbnQgY2FuIHVzZSBkZWRpY2F0ZWQgSVBzIGZvciB5b3VyIGRpc3RyaWJ1dGlvbiAtIGJ1dCB0aGVyZSBpcyBhIHByb3JhdGVkIG1vbnRobHkgY2hhcmdlIGZvclxuICogdXNpbmcgdGhpcyBmZWF0dXJlLiBCeSBkZWZhdWx0LCB3ZSB1c2UgU05JIC0gYnV0IHlvdSBjYW4gb3B0aW9uYWxseSBlbmFibGUgZGVkaWNhdGVkIElQcyAoVklQKS5cbiAqXG4gKiBTZWUgdGhlIENsb3VkRnJvbnQgU1NMIGZvciBtb3JlIGRldGFpbHMgYWJvdXQgcHJpY2luZyA6IGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vY2xvdWRmcm9udC9jdXN0b20tc3NsLWRvbWFpbnMvXG4gKlxuICovXG5leHBvcnQgZW51bSBTU0xNZXRob2Qge1xuICBTTkkgPSBcInNuaS1vbmx5XCIsXG4gIFZJUCA9IFwidmlwXCIsXG59XG5cbi8qKlxuICogVGhlIG1pbmltdW0gdmVyc2lvbiBvZiB0aGUgU1NMIHByb3RvY29sIHRoYXQgeW91IHdhbnQgQ2xvdWRGcm9udCB0byB1c2UgZm9yIEhUVFBTIGNvbm5lY3Rpb25zLlxuICogQ2xvdWRGcm9udCBzZXJ2ZXMgeW91ciBvYmplY3RzIG9ubHkgdG8gYnJvd3NlcnMgb3IgZGV2aWNlcyB0aGF0IHN1cHBvcnQgYXQgbGVhc3QgdGhlIFNTTCB2ZXJzaW9uIHRoYXQgeW91IHNwZWNpZnkuXG4gKi9cbmV4cG9ydCBlbnVtIFNlY3VyaXR5UG9saWN5UHJvdG9jb2wge1xuICBTU0xfVjMgPSBcIlNTTHYzXCIsXG4gIFRMU19WMSA9IFwiVExTdjFcIixcbiAgVExTX1YxXzIwMTYgPSBcIlRMU3YxXzIwMTZcIixcbiAgVExTX1YxXzFfMjAxNiA9IFwiVExTdjEuMV8yMDE2XCIsXG4gIFRMU19WMV8yXzIwMTggPSBcIlRMU3YxLjJfMjAxOFwiLFxuICBUTFNfVjFfMl8yMDE5ID0gXCJUTFN2MS4yXzIwMTlcIixcbiAgVExTX1YxXzJfMjAyMSA9IFwiVExTdjEuMl8yMDIxXCIsXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29uZmlndXJpbmcgY3VzdG9tIGVycm9yIHJlc3BvbnNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFcnJvclJlc3BvbnNlIHtcbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIGFtb3VudCBvZiB0aW1lLCBpbiBzZWNvbmRzLCB0aGF0IHlvdSB3YW50IENsb3VkRnJvbnQgdG8gY2FjaGUgdGhlIEhUVFAgc3RhdHVzIGNvZGUgc3BlY2lmaWVkIGluIEVycm9yQ29kZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgZGVmYXVsdCBjYWNoaW5nIFRUTCBiZWhhdmlvciBhcHBsaWVzXG4gICAqL1xuICByZWFkb25seSB0dGw/OiBEdXJhdGlvbjtcbiAgLyoqXG4gICAqIFRoZSBIVFRQIHN0YXR1cyBjb2RlIGZvciB3aGljaCB5b3Ugd2FudCB0byBzcGVjaWZ5IGEgY3VzdG9tIGVycm9yIHBhZ2UgYW5kL29yIGEgY2FjaGluZyBkdXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGh0dHBTdGF0dXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBIVFRQIHN0YXR1cyBjb2RlIHRoYXQgeW91IHdhbnQgQ2xvdWRGcm9udCB0byByZXR1cm4gdG8gdGhlIHZpZXdlciBhbG9uZyB3aXRoIHRoZSBjdXN0b20gZXJyb3IgcGFnZS5cbiAgICpcbiAgICogSWYgeW91IHNwZWNpZnkgYSB2YWx1ZSBmb3IgYHJlc3BvbnNlSHR0cFN0YXR1c2AsIHlvdSBtdXN0IGFsc28gc3BlY2lmeSBhIHZhbHVlIGZvciBgcmVzcG9uc2VQYWdlUGF0aGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGVycm9yIGNvZGUgd2lsbCBiZSByZXR1cm5lZCBhcyB0aGUgcmVzcG9uc2UgY29kZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc3BvbnNlSHR0cFN0YXR1cz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHRoZSBjdXN0b20gZXJyb3IgcGFnZSB0aGF0IHlvdSB3YW50IENsb3VkRnJvbnQgdG8gcmV0dXJuIHRvIGEgdmlld2VyIHdoZW4geW91ciBvcmlnaW4gcmV0dXJucyB0aGVcbiAgICogYGh0dHBTdGF0dXNgLCBmb3IgZXhhbXBsZSwgLzR4eC1lcnJvcnMvNDAzLWZvcmJpZGRlbi5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGRlZmF1bHQgQ2xvdWRGcm9udCByZXNwb25zZSBpcyBzaG93bi5cbiAgICovXG4gIHJlYWRvbmx5IHJlc3BvbnNlUGFnZVBhdGg/OiBzdHJpbmc7XG59XG5cbi8vIHByaXZhdGUgaW50ZXJmYWNlIHRvIGtlZXAgdHJhY2sgb2YgQ2FjaGVCZWhhdmlvcnNcbmludGVyZmFjZSBDYWNoZUJlaGF2aW9yIGV4dGVuZHMgQmVoYXZpb3JPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBwYXR0ZXJuIChlLmcuLCBgaW1hZ2VzLyouanBnYCkgdGhhdCBzcGVjaWZpZXMgd2hpY2ggcmVxdWVzdHMgdG8gYXBwbHkgdGhlIGJlaGF2aW9yIHRvLlxuICAgKiBUaGVyZSBtdXN0IGJlIGV4YWN0bHkgb25lIGJlaGF2aW9yIGFzc29jaWF0ZWQgd2l0aCBlYWNoIGBEaXN0cmlidXRpb25gIHRoYXQgaGFzIGEgcGF0aCBwYXR0ZXJuXG4gICAqIG9mICcqJywgd2hpY2ggYWN0cyBhcyB0aGUgY2F0Y2gtYWxsIGRlZmF1bHQgYmVoYXZpb3IuXG4gICAqL1xuICByZWFkb25seSBwYXRoUGF0dGVybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWYWx1ZSBvZiBJRCBmb3IgdGhlIG9yaWdpbiB0aGF0IHlvdSB3YW50IENsb3VkRnJvbnQgdG8gcm91dGUgcmVxdWVzdHMgdG8gd2hlbiBhIHJlcXVlc3QgbWF0Y2hlc1xuICAgKiB0aGUgcGF0aCBwYXR0ZXJuIGVpdGhlciBmb3IgYSBjYWNoZSBiZWhhdmlvciBvciBmb3IgdGhlIGRlZmF1bHQgY2FjaGUgYmVoYXZpb3IuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRPcmlnaW5JZDogc3RyaW5nO1xufVxuXG4vLyBwcml2YXRlIGludGVyZmFjZSB0byBpbmRleCBvcmlnaW5zIGJ5IGlkXG5pbnRlcmZhY2UgT3JpZ2luSW5kZXgge1xuICBvcmlnaW46IElPcmlnaW47XG4gIGlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY3JlYXRpbmcgYSBuZXcgYmVoYXZpb3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmVoYXZpb3JPcHRpb25zIGV4dGVuZHMgQWRkQmVoYXZpb3JPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBvcmlnaW4gdGhhdCB5b3Ugd2FudCBDbG91ZEZyb250IHRvIHJvdXRlIHJlcXVlc3RzIHRvIHdoZW4gdGhleSBtYXRjaCB0aGlzIGJlaGF2aW9yLlxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luOiBJT3JpZ2luO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGFkZGluZyBhIG5ldyBiZWhhdmlvciB0byBhIERpc3RyaWJ1dGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGRCZWhhdmlvck9wdGlvbnMge1xuICAvKipcbiAgICogSFRUUCBtZXRob2RzIHRvIGFsbG93IGZvciB0aGlzIGJlaGF2aW9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCBBbGxvd2VkTWV0aG9kcy5BTExPV19HRVRfSEVBRFxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZE1ldGhvZHM/OiBBbGxvd2VkTWV0aG9kcztcblxuICAvKipcbiAgICogSFRUUCBtZXRob2RzIHRvIGNhY2hlIGZvciB0aGlzIGJlaGF2aW9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCBDYWNoZWRNZXRob2RzLkNBQ0hFX0dFVF9IRUFEXG4gICAqL1xuICByZWFkb25seSBjYWNoZWRNZXRob2RzPzogQ2FjaGVkTWV0aG9kcztcblxuICAvKipcbiAgICogVGhlIGNhY2hlIHBvbGljeSBmb3IgdGhpcyBiZWhhdmlvci4gVGhlIGNhY2hlIHBvbGljeSBkZXRlcm1pbmVzIHdoYXQgdmFsdWVzIGFyZSBpbmNsdWRlZCBpbiB0aGUgY2FjaGUga2V5LFxuICAgKiBhbmQgdGhlIHRpbWUtdG8tbGl2ZSAoVFRMKSB2YWx1ZXMgZm9yIHRoZSBjYWNoZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRGcm9udC9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvY29udHJvbGxpbmctdGhlLWNhY2hlLWtleS5odG1sLlxuICAgKiBAZGVmYXVsdCBNYW5hZ2VkQ2FjaGVQb2xpY3kuQ0FDSElOR19PUFRJTUlaRURcbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlUG9saWN5PzogTWFuYWdlZENhY2hlUG9saWN5OyAvL1RPRE86IHN1cHBvcnQgY3VzdG9tIGNhY2hlIHBvbGljaWVzXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgeW91IHdhbnQgQ2xvdWRGcm9udCB0byBhdXRvbWF0aWNhbGx5IGNvbXByZXNzIGNlcnRhaW4gZmlsZXMgZm9yIHRoaXMgY2FjaGUgYmVoYXZpb3IuXG4gICAqIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRGcm9udC9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvU2VydmluZ0NvbXByZXNzZWRGaWxlcy5odG1sI2NvbXByZXNzZWQtY29udGVudC1jbG91ZGZyb250LWZpbGUtdHlwZXNcbiAgICogZm9yIGZpbGUgdHlwZXMgQ2xvdWRGcm9udCB3aWxsIGNvbXByZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjb21wcmVzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBvcmlnaW4gcmVxdWVzdCBwb2xpY3kgZm9yIHRoaXMgYmVoYXZpb3IuIFRoZSBvcmlnaW4gcmVxdWVzdCBwb2xpY3kgZGV0ZXJtaW5lcyB3aGljaCB2YWx1ZXMgKGUuZy4sIGhlYWRlcnMsIGNvb2tpZXMpXG4gICAqIGFyZSBpbmNsdWRlZCBpbiByZXF1ZXN0cyB0aGF0IENsb3VkRnJvbnQgc2VuZHMgdG8gdGhlIG9yaWdpbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5SZXF1ZXN0UG9saWN5PzogTWFuYWdlZE9yaWdpblJlcXVlc3RQb2xpY3k7IC8vVE9ETzogc3VwcG9ydCBjdXN0b20gb3JpZ2luIHJlcXVlc3QgcG9saWNpZXNcblxuICAvKipcbiAgICogVGhlIHJlc3BvbnNlIGhlYWRlcnMgcG9saWN5IGZvciB0aGlzIGJlaGF2aW9yLiBUaGUgcmVzcG9uc2UgaGVhZGVycyBwb2xpY3kgZGV0ZXJtaW5lcyB3aGljaCBoZWFkZXJzIGFyZSBpbmNsdWRlZCBpbiByZXNwb25zZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSByZXNwb25zZUhlYWRlcnNQb2xpY3k/OlxuICAgIHwgTWFuYWdlZFJlc3BvbnNlSGVhZGVyc1BvbGljeVxuICAgIHwgSVJlc3BvbnNlSGVhZGVyc1BvbGljeTtcblxuICAvKipcbiAgICogU2V0IHRoaXMgdG8gdHJ1ZSB0byBpbmRpY2F0ZSB5b3Ugd2FudCB0byBkaXN0cmlidXRlIG1lZGlhIGZpbGVzIGluIHRoZSBNaWNyb3NvZnQgU21vb3RoIFN0cmVhbWluZyBmb3JtYXQgdXNpbmcgdGhpcyBiZWhhdmlvci5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNtb290aFN0cmVhbWluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwcm90b2NvbCB0aGF0IHZpZXdlcnMgY2FuIHVzZSB0byBhY2Nlc3MgdGhlIGZpbGVzIGNvbnRyb2xsZWQgYnkgdGhpcyBiZWhhdmlvci5cbiAgICpcbiAgICogQGRlZmF1bHQgVmlld2VyUHJvdG9jb2xQb2xpY3kuQUxMT1dfQUxMXG4gICAqL1xuICByZWFkb25seSB2aWV3ZXJQcm90b2NvbFBvbGljeT86IFZpZXdlclByb3RvY29sUG9saWN5O1xuXG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGcm9udCBmdW5jdGlvbnMgdG8gaW52b2tlIGJlZm9yZSBzZXJ2aW5nIHRoZSBjb250ZW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBmdW5jdGlvbnMgd2lsbCBiZSBpbnZva2VkXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbkFzc29jaWF0aW9ucz86IEZ1bmN0aW9uQXNzb2NpYXRpb25bXTtcbn1cblxuLyoqXG4gKiBUaGUgSFRUUCBtZXRob2RzIHRoYXQgdGhlIEJlaGF2aW9yIHdpbGwgYWNjZXB0IHJlcXVlc3RzIG9uLlxuICovXG5leHBvcnQgY2xhc3MgQWxsb3dlZE1ldGhvZHMge1xuICAvKiogSEVBRCBhbmQgR0VUICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUxMT1dfR0VUX0hFQUQgPSBuZXcgQWxsb3dlZE1ldGhvZHMoW1wiR0VUXCIsIFwiSEVBRFwiXSk7XG4gIC8qKiBIRUFELCBHRVQsIGFuZCBPUFRJT05TICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUxMT1dfR0VUX0hFQURfT1BUSU9OUyA9IG5ldyBBbGxvd2VkTWV0aG9kcyhbXG4gICAgXCJHRVRcIixcbiAgICBcIkhFQURcIixcbiAgICBcIk9QVElPTlNcIixcbiAgXSk7XG4gIC8qKiBBbGwgc3VwcG9ydGVkIEhUVFAgbWV0aG9kcyAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFMTE9XX0FMTCA9IG5ldyBBbGxvd2VkTWV0aG9kcyhbXG4gICAgXCJHRVRcIixcbiAgICBcIkhFQURcIixcbiAgICBcIk9QVElPTlNcIixcbiAgICBcIlBVVFwiLFxuICAgIFwiUEFUQ0hcIixcbiAgICBcIlBPU1RcIixcbiAgICBcIkRFTEVURVwiLFxuICBdKTtcblxuICAvKiogSFRUUCBtZXRob2RzIHN1cHBvcnRlZCAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWV0aG9kczogc3RyaW5nW107XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihtZXRob2RzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMubWV0aG9kcyA9IG1ldGhvZHM7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgSFRUUCBtZXRob2RzIHRoYXQgdGhlIEJlaGF2aW9yIHdpbGwgY2FjaGUgcmVxdWVzdHMgb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBDYWNoZWRNZXRob2RzIHtcbiAgLyoqIEhFQUQgYW5kIEdFVCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENBQ0hFX0dFVF9IRUFEID0gbmV3IENhY2hlZE1ldGhvZHMoW1wiR0VUXCIsIFwiSEVBRFwiXSk7XG4gIC8qKiBIRUFELCBHRVQsIGFuZCBPUFRJT05TICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0FDSEVfR0VUX0hFQURfT1BUSU9OUyA9IG5ldyBDYWNoZWRNZXRob2RzKFtcbiAgICBcIkdFVFwiLFxuICAgIFwiSEVBRFwiLFxuICAgIFwiT1BUSU9OU1wiLFxuICBdKTtcblxuICAvKiogSFRUUCBtZXRob2RzIHN1cHBvcnRlZCAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWV0aG9kczogc3RyaW5nW107XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihtZXRob2RzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMubWV0aG9kcyA9IG1ldGhvZHM7XG4gIH1cbn1cblxuLyoqXG4gKiBIb3cgSFRUUHMgc2hvdWxkIGJlIGhhbmRsZWQgd2l0aCB5b3VyIGRpc3RyaWJ1dGlvbi5cbiAqL1xuZXhwb3J0IGVudW0gVmlld2VyUHJvdG9jb2xQb2xpY3kge1xuICAvKiogSFRUUFMgb25seSAqL1xuICBIVFRQU19PTkxZID0gXCJodHRwcy1vbmx5XCIsXG4gIC8qKiBXaWxsIHJlZGlyZWN0IEhUVFAgcmVxdWVzdHMgdG8gSFRUUFMgKi9cbiAgUkVESVJFQ1RfVE9fSFRUUFMgPSBcInJlZGlyZWN0LXRvLWh0dHBzXCIsXG4gIC8qKiBCb3RoIEhUVFAgYW5kIEhUVFBTIHN1cHBvcnRlZCAqL1xuICBBTExPV19BTEwgPSBcImFsbG93LWFsbFwiLFxufVxuXG4vKipcbiAqIENsb3VkRnJvbnQgcHJvdmlkZXMgYSBzZXQgb2YgbWFuYWdlZCBjYWNoZSBwb2xpY2llcyB0aGF0IHlvdSBjYW4gYXR0YWNoIHRvIGFueSBvZiB5b3VyIGRpc3RyaWJ1dGlvbidzIGNhY2hlIGJlaGF2aW9ycy5cbiAqIFdpdGggYSBtYW5hZ2VkIGNhY2hlIHBvbGljeSwgeW91IGRvbid0IG5lZWQgdG8gd3JpdGUgb3IgbWFpbnRhaW4geW91ciBvd24gY2FjaGUgcG9saWN5LiBUaGUgbWFuYWdlZCBwb2xpY2llcyB1c2Ugc2V0dGluZ3MgdGhhdCBhcmUgb3B0aW1pemVkIGZvciBzcGVjaWZpYyB1c2UgY2FzZXMuXG4gKlxuICogQGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkRnJvbnQvbGF0ZXN0L0RldmVsb3Blckd1aWRlL3VzaW5nLW1hbmFnZWQtY2FjaGUtcG9saWNpZXMuaHRtbFxuICogQGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS42MC4wL2RvY3MvZGF0YS1zb3VyY2VzL2Nsb3VkZnJvbnRfY2FjaGVfcG9saWN5I2F3cy1tYW5hZ2VkLXBvbGljaWVzXG4gKi9cbmV4cG9ydCBlbnVtIE1hbmFnZWRDYWNoZVBvbGljeSB7XG4gIC8qKlxuICAgKiBUaGlzIHBvbGljeSBpcyBkZXNpZ25lZCBmb3IgdXNlIHdpdGggYW4gb3JpZ2luIHRoYXQgaXMgYW4gQVdTIEFtcGxpZnkgd2ViIGFwcC5cbiAgICovXG4gIEFNUExJRlkgPSBcIk1hbmFnZWQtQW1wbGlmeVwiLFxuICAvKipcbiAgICogT3B0aW1pemUgY2FjaGUgZWZmaWNpZW5jeSBieSBtaW5pbWl6aW5nIHRoZSB2YWx1ZXMgdGhhdCBDbG91ZEZyb250IGluY2x1ZGVzIGluIHRoZSBjYWNoZSBrZXkuXG4gICAqIFF1ZXJ5IHN0cmluZ3MgYW5kIGNvb2tpZXMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgY2FjaGUga2V5LCBhbmQgb25seSB0aGUgbm9ybWFsaXplZCAnQWNjZXB0LUVuY29kaW5nJyBoZWFkZXIgaXMgaW5jbHVkZWQuXG4gICAqL1xuICBDQUNISU5HX09QVElNSVpFRCA9IFwiTWFuYWdlZC1DYWNoaW5nT3B0aW1pemVkXCIsXG4gIC8qKlxuICAgKiBPcHRpbWl6ZSBjYWNoZSBlZmZpY2llbmN5IGJ5IG1pbmltaXppbmcgdGhlIHZhbHVlcyB0aGF0IENsb3VkRnJvbnQgaW5jbHVkZXMgaW4gdGhlIGNhY2hlIGtleS5cbiAgICogUXVlcnkgc3RyaW5ncyBhbmQgY29va2llcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBjYWNoZSBrZXksIGFuZCBvbmx5IHRoZSBub3JtYWxpemVkICdBY2NlcHQtRW5jb2RpbmcnIGhlYWRlciBpcyBpbmNsdWRlZC5cbiAgICogRGlzYWJsZXMgY2FjaGUgY29tcHJlc3Npb24uXG4gICAqL1xuICBDQUNISU5HX09QVElNSVpFRF9GT1JfVU5DT01QUkVTU0VEX09CSkVDVFMgPSBcIk1hbmFnZWQtQ2FjaGluZ09wdGltaXplZEZvclVuY29tcHJlc3NlZE9iamVjdHNcIixcbiAgLyoqIERpc2FibGVzIGNhY2hpbmcuIFRoaXMgcG9saWN5IGlzIHVzZWZ1bCBmb3IgZHluYW1pYyBjb250ZW50IGFuZCBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgbm90IGNhY2hlYWJsZS4gKi9cbiAgQ0FDSElOR19ESVNBQkxFRCA9IFwiTWFuYWdlZC1DYWNoaW5nRGlzYWJsZWRcIixcbiAgLyoqIERlc2lnbmVkIGZvciB1c2Ugd2l0aCBhbiBvcmlnaW4gdGhhdCBpcyBhbiBBV1MgRWxlbWVudGFsIE1lZGlhUGFja2FnZSBlbmRwb2ludC4gKi9cbiAgRUxFTUVOVEFMX01FRElBX1BBQ0tBR0UgPSBcIk1hbmFnZWQtRWxlbWVudGFsLU1lZGlhUGFja2FnZVwiLFxuICAvKipcbiAgICogRGVzaWduZWQgZm9yIHVzZSB3aXRoIGFuIG9yaWdpbiB0aGF0IHJldHVybnMgQ2FjaGUtQ29udHJvbCBIVFRQIHJlc3BvbnNlIGhlYWRlcnMgYW5kIGRvZXMgbm90IHNlcnZlIGRpZmZlcmVudCBjb250ZW50IGJhc2VkIG9uIHZhbHVlcyBwcmVzZW50IGluIHRoZSBxdWVyeSBzdHJpbmcuXG4gICAqL1xuICBVU0VfT1JJR0lOX0NBQ0hFX0NPTlRST0xfSEVBREVSUyA9IFwiTWFuYWdlZC1Vc2VPcmlnaW5DYWNoZUNvbnRyb2xIZWFkZXJzXCIsXG4gIC8qKlxuICAgKiBEZXNpZ25lZCBmb3IgdXNlIHdpdGggYW4gb3JpZ2luIHRoYXQgcmV0dXJucyBDYWNoZS1Db250cm9sIEhUVFAgcmVzcG9uc2UgaGVhZGVycyBhbmQgc2VydmVzIGRpZmZlcmVudCBjb250ZW50IGJhc2VkIG9uIHZhbHVlcyBwcmVzZW50IGluIHRoZSBxdWVyeSBzdHJpbmcuXG4gICAqL1xuICBVU0VfT1JJR0lOX0NBQ0hFX0NPTlRST0xfSEVBREVSU19RVUVSWV9TVFJJTkdTID0gXCJNYW5hZ2VkLVVzZU9yaWdpbkNhY2hlQ29udHJvbEhlYWRlcnMtUXVlcnlTdHJpbmdzXCIsXG59XG5cbi8qKlxuICogT3JpZ2luIFJlcXVlc3QgUG9saWN5IGNvbmZpZ3VyYXRpb24uXG4gKlxuICogQGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkRnJvbnQvbGF0ZXN0L0RldmVsb3Blckd1aWRlL3VzaW5nLW1hbmFnZWQtb3JpZ2luLXJlcXVlc3QtcG9saWNpZXMuaHRtbFxuICogQGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS42MC4wL2RvY3MvZGF0YS1zb3VyY2VzL2Nsb3VkZnJvbnRfb3JpZ2luX3JlcXVlc3RfcG9saWN5I2F3cy1tYW5hZ2VkLXBvbGljaWVzXG4gKi9cbmV4cG9ydCBlbnVtIE1hbmFnZWRPcmlnaW5SZXF1ZXN0UG9saWN5IHtcbiAgLyoqIFRoaXMgcG9saWN5IGluY2x1ZGVzIG9ubHkgdGhlIFVzZXItQWdlbnQgYW5kIFJlZmVyZXIgaGVhZGVycy4gSXQgZG9lc27igJl0IGluY2x1ZGUgYW55IHF1ZXJ5IHN0cmluZ3Mgb3IgY29va2llcy4gKi9cbiAgVVNFUl9BR0VOVF9SRUZFUkVSX0hFQURFUlMgPSBcIk1hbmFnZWQtVXNlckFnZW50UmVmZXJlckhlYWRlcnNcIixcbiAgLyoqIFRoaXMgcG9saWN5IGluY2x1ZGVzIHRoZSBoZWFkZXIgdGhhdCBlbmFibGVzIGNyb3NzLW9yaWdpbiByZXNvdXJjZSBzaGFyaW5nIChDT1JTKSByZXF1ZXN0cyB3aGVuIHRoZSBvcmlnaW4gaXMgYSBjdXN0b20gb3JpZ2luLiAqL1xuICBDT1JTX0NVU1RPTV9PUklHSU4gPSBcIk1hbmFnZWQtQ09SUy1DdXN0b21PcmlnaW5cIixcbiAgLyoqIFRoaXMgcG9saWN5IGluY2x1ZGVzIHRoZSBoZWFkZXJzIHRoYXQgZW5hYmxlIGNyb3NzLW9yaWdpbiByZXNvdXJjZSBzaGFyaW5nIChDT1JTKSByZXF1ZXN0cyB3aGVuIHRoZSBvcmlnaW4gaXMgYW4gQW1hem9uIFMzIGJ1Y2tldC4gKi9cbiAgQ09SU19TM19PUklHSU4gPSBcIk1hbmFnZWQtQ09SUy1TM09yaWdpblwiLFxuICAvKiogVGhpcyBwb2xpY3kgaW5jbHVkZXMgYWxsIHZhbHVlcyAocXVlcnkgc3RyaW5ncywgaGVhZGVycywgYW5kIGNvb2tpZXMpIGluIHRoZSB2aWV3ZXIgcmVxdWVzdC4gKi9cbiAgQUxMX1ZJRVdFUiA9IFwiTWFuYWdlZC1BbGxWaWV3ZXJcIixcbiAgLyoqIFRoaXMgcG9saWN5IGlzIGRlc2lnbmVkIGZvciB1c2Ugd2l0aCBhbiBvcmlnaW4gdGhhdCBpcyBhbiBBV1MgRWxlbWVudGFsIE1lZGlhVGFpbG9yIGVuZHBvaW50LiAqL1xuICBFTEVNRU5UQUxfTUVESUFfVEFJTE9SID0gXCJNYW5hZ2VkLUVsZW1lbnRhbC1NZWRpYVRhaWxvci1QZXJzb25hbGl6ZWRNYW5pZmVzdHNcIixcbiAgLyoqIFRoaXMgcG9saWN5IGluY2x1ZGVzIGFsbCB2YWx1ZXMgKGhlYWRlcnMsIGNvb2tpZXMsIGFuZCBxdWVyeSBzdHJpbmdzKSBpbiB0aGUgdmlld2VyIHJlcXVlc3QsIGFuZCBhbGwgQ2xvdWRGcm9udCBoZWFkZXJzIHRoYXQgd2VyZSByZWxlYXNlZCB0aHJvdWdoIEp1bmUgMjAyMiAoQ2xvdWRGcm9udCBoZWFkZXJzIHJlbGVhc2VkIGFmdGVyIEp1bmUgMjAyMiBhcmUgbm90IGluY2x1ZGVkKS4gKi9cbiAgQUxMX1ZJRVdFUl9BTkRfQ0xPVURGUk9OVF8yMDIyID0gXCJNYW5hZ2VkLUFsbFZpZXdlckFuZENsb3VkRnJvbnRIZWFkZXJzLTIwMjItMDZcIixcbiAgLyoqIFRoaXMgcG9saWN5IGluY2x1ZGVzIGFsbCB2YWx1ZXMgKHF1ZXJ5IHN0cmluZ3MsIGFuZCBjb29raWVzKSBleGNlcHQgdGhlIGhlYWRlciBpbiB0aGUgdmlld2VyIHJlcXVlc3QuICovXG4gIEFMTF9WSUVXRVJfRVhDRVBUX0hPU1RfSEVBREVSID0gXCJNYW5hZ2VkLUFsbFZpZXdlckV4Y2VwdEhvc3RIZWFkZXJcIixcbn1cbiJdfQ==
433
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdHJpYnV0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9lZGdlL2Rpc3RyaWJ1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHVJQUF1STtBQUN2SSxzREFLNkI7QUFDN0IsaUNBQWlEO0FBSWpELGdDQUFtQztBQUNuQyxvREFJMEI7QUFDMUIsNENBQXdDO0FBME14Qzs7R0FFRztBQUNILE1BQWEsWUFBYSxTQUFRLGdDQUFnQjtJQUtoRCxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBVUQsWUFBWSxLQUFnQixFQUFFLElBQVksRUFBRSxLQUF3QjtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQVJYLGFBQVEsR0FBRyxJQUFJLEtBQUssRUFBZSxDQUFDO1FBRXBDLHdCQUFtQixHQUFvQixFQUFFLENBQUM7UUFRekQsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsTUFBTSxpQkFBaUIsR0FBRyxvQkFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQzlELEtBQUssQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUNoQyxlQUFTLENBQUMsbUJBQW1CLENBQzlCLENBQUMsTUFBTSxDQUFDO1lBQ1QsSUFDRSxDQUFDLGFBQUssQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3RDLGlCQUFpQixLQUFLLFdBQVcsRUFDakMsQ0FBQztnQkFDRCxNQUFNLElBQUksS0FBSyxDQUNiLG9HQUFvRyxpQkFBaUIsR0FBRyxDQUN6SCxDQUFDO1lBQ0osQ0FB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LCtDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFQVyxvQkFBb0Isb0NBQXBCLG9CQUFvQixRQU8vQjtBQUVEOzs7Ozs7R0FNRztBQUNILElBQVksa0JBNEJYO0FBNUJELFdBQVksa0JBQWtCO0lBQzVCOztPQUVHO0lBQ0gsaURBQTJCLENBQUE7SUFDM0I7OztPQUdHO0lBQ0gsb0VBQThDLENBQUE7SUFDOUM7Ozs7T0FJRztJQUNILG1IQUE2RixDQUFBO0lBQzdGLDJHQUEyRztJQUMzRyxrRUFBNEMsQ0FBQTtJQUM1QyxzRkFBc0Y7SUFDdEYsZ0ZBQTBELENBQUE7SUFDMUQ7O09BRUc7SUFDSCwrRkFBeUUsQ0FBQTtJQUN6RTs7T0FFRztJQUNILDBIQUFvRyxDQUFBO0FBQ3RHLENBQUMsRUE1Qlcsa0JBQWtCLGtDQUFsQixrQkFBa0IsUUE0QjdCO0FBRUQ7Ozs7O0dBS0c7QUFDSCxJQUFZLDBCQWVYO0FBZkQsV0FBWSwwQkFBMEI7SUFDcEMscUhBQXFIO0lBQ3JILDRGQUE4RCxDQUFBO0lBQzlELHFJQUFxSTtJQUNySSw4RUFBZ0QsQ0FBQTtJQUNoRCx5SUFBeUk7SUFDekksc0VBQXdDLENBQUE7SUFDeEMsbUdBQW1HO0lBQ25HLDhEQUFnQyxDQUFBO0lBQ2hDLG9HQUFvRztJQUNwRyw0R0FBOEUsQ0FBQTtJQUM5RSxtT0FBbU87SUFDbk8sOEdBQWdGLENBQUE7SUFDaEYsNEdBQTRHO0lBQzVHLGlHQUFtRSxDQUFBO0FBQ3JFLENBQUMsRUFmVywwQkFBMEIsMENBQTFCLDBCQUEwQixRQWVyQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iLzY0YTBlMmNmNWJiMDdmNmRlYmZjNGIxNjliYjNlMTg1MmNlNjY4YWEvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQvbGliL2Rpc3RyaWJ1dGlvbi50c1xuaW1wb3J0IHtcbiAgY2xvdWRmcm9udERpc3RyaWJ1dGlvbixcbiAgZGF0YUF3c0Nsb3VkZnJvbnRDYWNoZVBvbGljeSxcbiAgZGF0YUF3c0Nsb3VkZnJvbnRPcmlnaW5SZXF1ZXN0UG9saWN5LFxuICBkYXRhQXdzQ2xvdWRmcm9udFJlc3BvbnNlSGVhZGVyc1BvbGljeSxcbn0gZnJvbSBcIkBjZGt0bi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7IElSZXNvbHZhYmxlLCBUb2tlbiwgTGF6eSB9IGZyb20gXCJjZGt0blwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IElDZXJ0aWZpY2F0ZSwgSU9yaWdpbiwgRnVuY3Rpb25Bc3NvY2lhdGlvbiB9IGZyb20gXCIuXCI7XG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gXCIuLi8uLi9kdXJhdGlvblwiO1xuaW1wb3J0IHsgQXJuRm9ybWF0IH0gZnJvbSBcIi4uL2FyblwiO1xuaW1wb3J0IHtcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBBd3NTdGFjayB9IGZyb20gXCIuLi9hd3Mtc3RhY2tcIjtcbmltcG9ydCB7XG4gIElSZXNwb25zZUhlYWRlcnNQb2xpY3ksXG4gIE1hbmFnZWRSZXNwb25zZUhlYWRlcnNQb2xpY3ksXG59IGZyb20gXCIuL3Jlc3BvbnNlLWhlYWRlcnMtcG9saWN5XCI7XG5cbi8vIFRPRE86IFJlLWFkZCBpbnZhbGlkYXRpb24gc3VwcG9ydFxuLy8gVE9ETzogUmUtYWRkIG9yaWdpbiBncm91cCAoZmFpbG92ZXIpIHN1cHBvcnRcbi8vIFRPRE86IFJlLWFkZCBrZXkgZ3JvdXAgc3VwcG9ydFxuLy8gVE9ETzogUmUtYWRkIFdBRiBzdXBwb3J0XG4vLyBUT0RPOiBSZS1hZGQgbG9nZ2luZyBzdXBwb3J0XG4vLyBUT0RPOiBSZS1hZGQgY3VzdG9tIGNhY2hlLCBvcmlnaW5SZXF1ZXN0IHBvbGljeSBzdXBwb3J0P1xuXG4vKipcbiAqIE91dHB1dHMgd2hpY2ggbWF5IGJlIHJlZ2lzdGVyZWQgZm9yIG91dHB1dCB2aWEgdGhlIEdyaWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlzdHJpYnV0aW9uT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIGZvciB0aGUgZGlzdHJpYnV0aW9uLiBGb3IgZXhhbXBsZTogYEVERkRWQkQ2MzJCSERTNWAuXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDbG91ZEZyb250IFJvdXRlIDUzIHpvbmUgSUQgdGhhdCBjYW4gYmUgdXNlZCB0b1xuICAgKiByb3V0ZSBhbiBBbGlhcyBSZXNvdXJjZSBSZWNvcmQgU2V0IHRvLlxuICAgKlxuICAgKiBUaGlzIGF0dHJpYnV0ZSBpcyBzaW1wbHkgYW4gYWxpYXMgZm9yIHRoZSB6b25lIElEXG4gICAqL1xuICByZWFkb25seSBob3N0ZWRab25lSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ3VycmVudCBzdGF0dXMgb2YgdGhlIGRpc3RyaWJ1dGlvbi5cbiAgICpcbiAgICogYERlcGxveWVkYCBpZiB0aGUgZGlzdHJpYnV0aW9uJ3MgaW5mb3JtYXRpb24gaXMgZnVsbHkgcHJvcGFnYXRlZFxuICAgKiB0aHJvdWdob3V0IHRoZSBBbWF6b24gQ2xvdWRGcm9udCBzeXN0ZW0uXG4gICAqL1xuICByZWFkb25seSBzdGF0dXM6IHN0cmluZztcblxuICAvKipcbiAgICogQVJOIGZvciB0aGUgZGlzdHJpYnV0aW9uXG4gICAqL1xuICByZWFkb25seSBhcm46IHN0cmluZztcblxuICAvKipcbiAgICogRG9tYWluIG5hbWUgY29ycmVzcG9uZGluZyB0byB0aGUgZGlzdHJpYnV0aW9uLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZTogYGQ2MDQ3MjFmeGFhcXk5LmNsb3VkZnJvbnQubmV0YFxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEltcG9ydGVkIG9yIGNyZWF0ZWQgRE5TIHpvbmUgYXR0cmlidXRlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElEaXN0cmlidXRpb24gZXh0ZW5kcyBJQXdzQ29uc3RydWN0IHtcbiAgLyoqIFN0cm9uZ2x5IHR5cGVkIG91dHB1dHNcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uT3V0cHV0czogRGlzdHJpYnV0aW9uT3V0cHV0cztcblxuICAvKipcbiAgICogRG9tYWluIG5hbWUgY29ycmVzcG9uZGluZyB0byB0aGUgZGlzdHJpYnV0aW9uLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqIEZvciBleGFtcGxlOiBgZDYwNDcyMWZ4YWFxeTkuY2xvdWRmcm9udC5uZXRgXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENsb3VkRnJvbnQgUm91dGUgNTMgem9uZSBJRCB0aGF0IGNhbiBiZSB1c2VkIHRvXG4gICAqIHJvdXRlIGFuIEFsaWFzIFJlc291cmNlIFJlY29yZCBTZXQgdG8uXG4gICAqXG4gICAqIFRoaXMgYXR0cmlidXRlIGlzIHNpbXBseSBhbiBhbGlhcyBmb3IgdGhlIHpvbmUgSURcbiAgICovXG4gIHJlYWRvbmx5IGhvc3RlZFpvbmVJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGEgRGlzdHJpYnV0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlzdHJpYnV0aW9uUHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBFeHRyYSBDTkFNRXMgKGFsdGVybmF0ZSBkb21haW4gbmFtZXMpLCBpZiBhbnksIGZvciB0aGlzIGRpc3RyaWJ1dGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGFsaWFzZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGlzdHJpYnV0aW9uIGlzIGVuYWJsZWQgdG8gYWNjZXB0IGVuZCB1c2VyIHJlcXVlc3RzIGZvciBjb250ZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbiB8IElSZXNvbHZhYmxlO1xuXG4gIC8qKlxuICAgKiBJZiBlbmFibGVkLCB0aGUgcmVzb3VyY2Ugd2lsbCB3YWl0IGZvciB0aGUgZGlzdHJpYnV0aW9uIHN0YXR1cyB0byBjaGFuZ2VcbiAgICogZnJvbSBJblByb2dyZXNzIHRvIERlcGxveWVkLlxuICAgKlxuICAgKiBTZXR0aW5nIHRoaXMgdG9mYWxzZSB3aWxsIHNraXAgdGhlIHByb2Nlc3MuXG4gICAqXG4gICAqIEBkZWZhdWx0OiB0cnVlLlxuICAgKi9cbiAgcmVhZG9ubHkgd2FpdEZvckRlcGxveW1lbnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgdGhlIGRpc3RyaWJ1dGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRCZWhhdmlvcjogQmVoYXZpb3JPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGJlaGF2aW9ycyBmb3IgdGhlIGRpc3RyaWJ1dGlvbiwgbWFwcGVkIGJ5IHRoZSBwYXRoUGF0dGVybiB0aGF0IHNwZWNpZmllcyB3aGljaCByZXF1ZXN0cyB0byBhcHBseSB0aGUgYmVoYXZpb3IgdG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gYWRkaXRpb25hbCBiZWhhdmlvcnMgYXJlIGFkZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbEJlaGF2aW9ycz86IFJlY29yZDxzdHJpbmcsIEJlaGF2aW9yT3B0aW9ucz47XG5cbiAgLyoqXG4gICAqIEEgY2VydGlmaWNhdGUgdG8gYXNzb2NpYXRlIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gVGhlIGNlcnRpZmljYXRlIG11c3QgYmUgbG9jYXRlZCBpbiBOLiBWaXJnaW5pYSAodXMtZWFzdC0xKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgQ2xvdWRGcm9udCB3aWxkY2FyZCBjZXJ0aWZpY2F0ZSAoKi5jbG91ZGZyb250Lm5ldCkgd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgY2VydGlmaWNhdGU/OiBJQ2VydGlmaWNhdGU7XG5cbiAgLyoqXG4gICAqIEFueSBjb21tZW50cyB5b3Ugd2FudCB0byBpbmNsdWRlIGFib3V0IHRoZSBkaXN0cmlidXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gY29tbWVudFxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWVudD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG9iamVjdCB0aGF0IHlvdSB3YW50IENsb3VkRnJvbnQgdG8gcmVxdWVzdCBmcm9tIHlvdXIgb3JpZ2luIChmb3IgZXhhbXBsZSwgaW5kZXguaHRtbClcbiAgICogd2hlbiBhIHZpZXdlciByZXF1ZXN0cyB0aGUgcm9vdCBVUkwgZm9yIHlvdXIgZGlzdHJpYnV0aW9uLiBJZiBubyBkZWZhdWx0IG9iamVjdCBpcyBzZXQsIHRoZVxuICAgKiByZXF1ZXN0IGdvZXMgdG8gdGhlIG9yaWdpbidzIHJvb3QgKGUuZy4sIGV4YW1wbGUuY29tLykuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZGVmYXVsdCByb290IG9iamVjdFxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdFJvb3RPYmplY3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSBjb3VudHJpZXMgaW4gd2hpY2ggeW91ciBjb250ZW50IGlzIGRpc3RyaWJ1dGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGdlb2dyYXBoaWMgcmVzdHJpY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBnZW9SZXN0cmljdGlvbj86IEdlb1Jlc3RyaWN0aW9uO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBtYXhpbXVtIEhUVFAgdmVyc2lvbiB0aGF0IHlvdSB3YW50IHZpZXdlcnMgdG8gdXNlIHRvIGNvbW11bmljYXRlIHdpdGggQ2xvdWRGcm9udC5cbiAgICpcbiAgICogRm9yIHZpZXdlcnMgYW5kIENsb3VkRnJvbnQgdG8gdXNlIEhUVFAvMiwgdmlld2VycyBtdXN0IHN1cHBvcnQgVExTIDEuMiBvciBsYXRlciwgYW5kIG11c3Qgc3VwcG9ydCBzZXJ2ZXIgbmFtZSBpZGVudGlmaWNhdGlvbiAoU05JKS5cbiAgICpcbiAgICogQGRlZmF1bHQgSHR0cFZlcnNpb24uSFRUUDJcbiAgICovXG4gIHJlYWRvbmx5IGh0dHBWZXJzaW9uPzogSHR0cFZlcnNpb247XG5cbiAgLyoqXG4gICAqIFRoZSBwcmljZSBjbGFzcyB0aGF0IGNvcnJlc3BvbmRzIHdpdGggdGhlIG1heGltdW0gcHJpY2UgdGhhdCB5b3Ugd2FudCB0byBwYXkgZm9yIENsb3VkRnJvbnQgc2VydmljZS5cbiAgICogSWYgeW91IHNwZWNpZnkgUHJpY2VDbGFzc19BbGwsIENsb3VkRnJvbnQgcmVzcG9uZHMgdG8gcmVxdWVzdHMgZm9yIHlvdXIgb2JqZWN0cyBmcm9tIGFsbCBDbG91ZEZyb250IGVkZ2UgbG9jYXRpb25zLlxuICAgKiBJZiB5b3Ugc3BlY2lmeSBhIHByaWNlIGNsYXNzIG90aGVyIHRoYW4gUHJpY2VDbGFzc19BbGwsIENsb3VkRnJvbnQgc2VydmVzIHlvdXIgb2JqZWN0cyBmcm9tIHRoZSBDbG91ZEZyb250IGVkZ2UgbG9jYXRpb25cbiAgICogdGhhdCBoYXMgdGhlIGxvd2VzdCBsYXRlbmN5IGFtb25nIHRoZSBlZGdlIGxvY2F0aW9ucyBpbiB5b3VyIHByaWNlIGNsYXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBQcmljZUNsYXNzLlBSSUNFX0NMQVNTX0FMTFxuICAgKi9cbiAgcmVhZG9ubHkgcHJpY2VDbGFzcz86IFByaWNlQ2xhc3M7XG5cbiAgLyoqXG4gICAqIEhvdyBDbG91ZEZyb250IHNob3VsZCBoYW5kbGUgcmVxdWVzdHMgdGhhdCBhcmUgbm90IHN1Y2Nlc3NmdWwgKGUuZy4sIFBhZ2VOb3RGb3VuZCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gY3VzdG9tIGVycm9yIHJlc3BvbnNlcy5cbiAgICovXG4gIHJlYWRvbmx5IGVycm9yUmVzcG9uc2VzPzogRXJyb3JSZXNwb25zZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSB2ZXJzaW9uIG9mIHRoZSBTU0wgcHJvdG9jb2wgdGhhdCB5b3Ugd2FudCBDbG91ZEZyb250IHRvIHVzZSBmb3IgSFRUUFMgY29ubmVjdGlvbnMuXG4gICAqXG4gICAqIENsb3VkRnJvbnQgc2VydmVzIHlvdXIgb2JqZWN0cyBvbmx5IHRvIGJyb3dzZXJzIG9yIGRldmljZXMgdGhhdCBzdXBwb3J0IGF0XG4gICAqIGxlYXN0IHRoZSBTU0wgdmVyc2lvbiB0aGF0IHlvdSBzcGVjaWZ5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFNlY3VyaXR5UG9saWN5UHJvdG9jb2wuVExTX1YxXzJfMjAyMS5cbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1Qcm90b2NvbFZlcnNpb24/OiBTZWN1cml0eVBvbGljeVByb3RvY29sO1xuXG4gIC8qKlxuICAgKiBUaGUgU1NMIG1ldGhvZCBDbG91ZEZyb250IHdpbGwgdXNlIGZvciB5b3VyIGRpc3RyaWJ1dGlvbi5cbiAgICpcbiAgICogU2VydmVyIE5hbWUgSW5kaWNhdGlvbiAoU05JKSAtIGlzIGFuIGV4dGVuc2lvbiB0byB0aGUgVExTIGNvbXB1dGVyIG5ldHdvcmtpbmcgcHJvdG9jb2wgYnkgd2hpY2ggYSBjbGllbnQgaW5kaWNhdGVzXG4gICAqIHdoaWNoIGhvc3RuYW1lIGl0IGlzIGF0dGVtcHRpbmcgdG8gY29ubmVjdCB0byBhdCB0aGUgc3RhcnQgb2YgdGhlIGhhbmRzaGFraW5nIHByb2Nlc3MuIFRoaXMgYWxsb3dzIGEgc2VydmVyIHRvIHByZXNlbnRcbiAgICogbXVsdGlwbGUgY2VydGlmaWNhdGVzIG9uIHRoZSBzYW1lIElQIGFkZHJlc3MgYW5kIFRDUCBwb3J0IG51bWJlciBhbmQgaGVuY2UgYWxsb3dzIG11bHRpcGxlIHNlY3VyZSAoSFRUUFMpIHdlYnNpdGVzXG4gICAqIChvciBhbnkgb3RoZXIgc2VydmljZSBvdmVyIFRMUykgdG8gYmUgc2VydmVkIGJ5IHRoZSBzYW1lIElQIGFkZHJlc3Mgd2l0aG91dCByZXF1aXJpbmcgYWxsIHRob3NlIHNpdGVzIHRvIHVzZSB0aGUgc2FtZSBjZXJ0aWZpY2F0ZS5cbiAgICpcbiAgICogQ2xvdWRGcm9udCBjYW4gdXNlIFNOSSB0byBob3N0IG11bHRpcGxlIGRpc3RyaWJ1dGlvbnMgb24gdGhlIHNhbWUgSVAgLSB3aGljaCBhIGxhcmdlIG1ham9yaXR5IG9mIGNsaWVudHMgd2lsbCBzdXBwb3J0LlxuICAgKlxuICAgKiBJZiB5b3VyIGNsaWVudHMgY2Fubm90IHN1cHBvcnQgU05JIGhvd2V2ZXIgLSBDbG91ZEZyb250IGNhbiB1c2UgZGVkaWNhdGVkIElQcyBmb3IgeW91ciBkaXN0cmlidXRpb24gLSBidXQgdGhlcmUgaXMgYSBwcm9yYXRlZCBtb250aGx5IGNoYXJnZSBmb3JcbiAgICogdXNpbmcgdGhpcyBmZWF0dXJlLiBCeSBkZWZhdWx0LCB3ZSB1c2UgU05JIC0gYnV0IHlvdSBjYW4gb3B0aW9uYWxseSBlbmFibGUgZGVkaWNhdGVkIElQcyAoVklQKS5cbiAgICpcbiAgICogU2VlIHRoZSBDbG91ZEZyb250IFNTTCBmb3IgbW9yZSBkZXRhaWxzIGFib3V0IHByaWNpbmcgOiBodHRwczovL2F3cy5hbWF6b24uY29tL2Nsb3VkZnJvbnQvY3VzdG9tLXNzbC1kb21haW5zL1xuICAgKlxuICAgKiBAZGVmYXVsdCBTU0xNZXRob2QuU05JXG4gICAqL1xuICByZWFkb25seSBzc2xTdXBwb3J0TWV0aG9kPzogU1NMTWV0aG9kO1xufVxuXG4vKipcbiAqIEFtYXpvbiBDbG91ZGZyb250IERpc3RyaWJ1dGlvblxuICovXG5leHBvcnQgY2xhc3MgRGlzdHJpYnV0aW9uIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElEaXN0cmlidXRpb24ge1xuICAvLyBUT0RPOiBBZGQgc3RhdGljIGZyb21Mb29rdXA/XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2U6IGNsb3VkZnJvbnREaXN0cmlidXRpb24uQ2xvdWRmcm9udERpc3RyaWJ1dGlvbjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vdXRwdXRzOiBEaXN0cmlidXRpb25PdXRwdXRzO1xuICBwdWJsaWMgZ2V0IGRpc3RyaWJ1dGlvbk91dHB1dHMoKTogRGlzdHJpYnV0aW9uT3V0cHV0cyB7XG4gICAgcmV0dXJuIHRoaXMuX291dHB1dHM7XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLmRpc3RyaWJ1dGlvbk91dHB1dHM7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfZG9tYWluTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IGRvbWFpbk5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZG9tYWluTmFtZTtcbiAgfVxuICBwdWJsaWMgcmVhZG9ubHkgaG9zdGVkWm9uZUlkOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3JpZ2lucyA9IG5ldyBBcnJheTxPcmlnaW5JbmRleD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGFkZGl0aW9uYWxCZWhhdmlvcnM6IENhY2hlQmVoYXZpb3JbXSA9IFtdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JSZXNwb25zZXM6IEVycm9yUmVzcG9uc2VbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBjZXJ0aWZpY2F0ZT86IElDZXJ0aWZpY2F0ZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBEaXN0cmlidXRpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBuYW1lLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMuY2VydGlmaWNhdGUpIHtcbiAgICAgIGNvbnN0IGNlcnRpZmljYXRlUmVnaW9uID0gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3QodGhpcykuc3BsaXRBcm4oXG4gICAgICAgIHByb3BzLmNlcnRpZmljYXRlLmNlcnRpZmljYXRlQXJuLFxuICAgICAgICBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICAgICkucmVnaW9uO1xuICAgICAgaWYgKFxuICAgICAgICAhVG9rZW4uaXNVbnJlc29sdmVkKGNlcnRpZmljYXRlUmVnaW9uKSAmJlxuICAgICAgICBjZXJ0aWZpY2F0ZVJlZ2lvbiAhPT0gXCJ1cy1lYXN0LTFcIlxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgRGlzdHJpYnV0aW9uIGNlcnRpZmljYXRlcyBtdXN0IGJlIGluIHRoZSB1cy1lYXN0LTEgcmVnaW9uIGFuZCB0aGUgY2VydGlmaWNhdGUgeW91IHByb3ZpZGVkIGlzIGluICR7Y2VydGlmaWNhdGVSZWdpb259LmAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2VydGlmaWNhdGUgPSBwcm9wcy5jZXJ0aWZpY2F0ZTtcbiAgICB0aGlzLmVycm9yUmVzcG9uc2VzID0gcHJvcHMuZXJyb3JSZXNwb25zZXMgPz8gW107XG5cbiAgICBjb25zdCBkZWZhdWx0T3JpZ2luSWQgPSB0aGlzLmFkZE9yaWdpbihwcm9wcy5kZWZhdWx0QmVoYXZpb3Iub3JpZ2luKTtcbiAgICBpZiAocHJvcHMuYWRkaXRpb25hbEJlaGF2aW9ycykge1xuICAgICAgT2JqZWN0LmVudHJpZXMocHJvcHMuYWRkaXRpb25hbEJlaGF2aW9ycykuZm9yRWFjaChcbiAgICAgICAgKFtwYXRoUGF0dGVybiwgYmVoYXZpb3JPcHRpb25zXSkgPT4ge1xuICAgICAgICAgIHRoaXMuYWRkQmVoYXZpb3IoXG4gICAgICAgICAgICBwYXRoUGF0dGVybixcbiAgICAgICAgICAgIGJlaGF2aW9yT3B0aW9ucy5vcmlnaW4sXG4gICAgICAgICAgICBiZWhhdmlvck9wdGlvbnMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQ29tbWVudHMgaGF2ZSBhbiB1bmRvY3VtZW50ZWQgbGltaXQgb2YgMTI4IGNoYXJhY3RlcnNcbiAgICBjb25zdCB0cmltbWVkQ29tbWVudCA9XG4gICAgICBwcm9wcy5jb21tZW50ICYmIHByb3BzLmNvbW1lbnQubGVuZ3RoID4gMTI4XG4gICAgICAgID8gYCR7cHJvcHMuY29tbWVudC5zbGljZSgwLCAxMjggLSAzKX0uLi5gXG4gICAgICAgIDogcHJvcHMuY29tbWVudDtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgY2xvdWRmcm9udERpc3RyaWJ1dGlvbi5DbG91ZGZyb250RGlzdHJpYnV0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgIHtcbiAgICAgICAgZW5hYmxlZDogcHJvcHMuZW5hYmxlZCA/PyB0cnVlLFxuICAgICAgICBvcmlnaW46IExhenkuYW55VmFsdWUoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgICB0aGlzLl9vcmlnaW5zLm1hcCgobykgPT5cbiAgICAgICAgICAgICAgLy8gTGF6eSBwcm9kdWNlcnMgbmVlZCBhZGRpdGlvbmFsIHh4eFRvVGVycmFmb3JtIHdyYXBcbiAgICAgICAgICAgICAgY2xvdWRmcm9udERpc3RyaWJ1dGlvbi5jbG91ZGZyb250RGlzdHJpYnV0aW9uT3JpZ2luVG9UZXJyYWZvcm0oXG4gICAgICAgICAgICAgICAgby5vcmlnaW4ucmVuZGVyKG8uaWQpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSksXG4gICAgICAgIGRlZmF1bHRDYWNoZUJlaGF2aW9yOiB0aGlzLl9yZW5kZXJEZWZhdWx0Q2FjaGVCZWhhdmlvcih7XG4gICAgICAgICAgcGF0aFBhdHRlcm46IFwiKlwiLCAvLyBpZ25vcmVkIGZvciBEZWZhdWx0IENhY2hlIEJlaGF2aW9yXG4gICAgICAgICAgdGFyZ2V0T3JpZ2luSWQ6IGRlZmF1bHRPcmlnaW5JZCxcbiAgICAgICAgICAuLi5wcm9wcy5kZWZhdWx0QmVoYXZpb3IsXG4gICAgICAgIH0pLFxuICAgICAgICBvcmRlcmVkQ2FjaGVCZWhhdmlvcjogTGF6eS5hbnlWYWx1ZShcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxCZWhhdmlvcnMubWFwKChiKSA9PlxuICAgICAgICAgICAgICAgIC8vIExhenkgcHJvZHVjZXJzIG5lZWQgYWRkaXRpb25hbCB4eHhUb1RlcnJhZm9ybSB3cmFwXG4gICAgICAgICAgICAgICAgY2xvdWRmcm9udERpc3RyaWJ1dGlvbi5jbG91ZGZyb250RGlzdHJpYnV0aW9uT3JkZXJlZENhY2hlQmVoYXZpb3JUb1RlcnJhZm9ybShcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aFBhdHRlcm46IGIucGF0aFBhdHRlcm4sXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX3JlbmRlckRlZmF1bHRDYWNoZUJlaGF2aW9yKGIpLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBvbWl0RW1wdHlBcnJheTogdHJ1ZSB9LFxuICAgICAgICApLFxuICAgICAgICBhbGlhc2VzOiBwcm9wcy5hbGlhc2VzLFxuICAgICAgICBjb21tZW50OiB0cmltbWVkQ29tbWVudCxcbiAgICAgICAgY3VzdG9tRXJyb3JSZXNwb25zZTogdGhpcy5yZW5kZXJFcnJvclJlc3BvbnNlcygpLFxuICAgICAgICBkZWZhdWx0Um9vdE9iamVjdDogcHJvcHMuZGVmYXVsdFJvb3RPYmplY3QsXG4gICAgICAgIGh0dHBWZXJzaW9uOiBwcm9wcy5odHRwVmVyc2lvbiA/PyBIdHRwVmVyc2lvbi5IVFRQMixcbiAgICAgICAgcHJpY2VDbGFzczogcHJvcHMucHJpY2VDbGFzcyA/PyB1bmRlZmluZWQsXG4gICAgICAgIHJlc3RyaWN0aW9uczogdGhpcy5yZW5kZXJSZXN0cmljdGlvbnMocHJvcHMuZ2VvUmVzdHJpY3Rpb24pLFxuICAgICAgICB2aWV3ZXJDZXJ0aWZpY2F0ZTogdGhpcy5yZW5kZXJWaWV3ZXJDZXJ0aWZpY2F0ZShcbiAgICAgICAgICB0aGlzLmNlcnRpZmljYXRlLFxuICAgICAgICAgIHByb3BzLm1pbmltdW1Qcm90b2NvbFZlcnNpb24sXG4gICAgICAgICAgcHJvcHMuc3NsU3VwcG9ydE1ldGhvZCxcbiAgICAgICAgKSxcbiAgICAgICAgd2FpdEZvckRlcGxveW1lbnQ6IHByb3BzLndhaXRGb3JEZXBsb3ltZW50LFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy5fZG9tYWluTmFtZSA9IHRoaXMucmVzb3VyY2UuZG9tYWluTmFtZTtcbiAgICB0aGlzLmhvc3RlZFpvbmVJZCA9IHRoaXMucmVzb3VyY2UuaG9zdGVkWm9uZUlkO1xuICAgIHRoaXMuX291dHB1dHMgPSB7XG4gICAgICBpZDogdGhpcy5yZXNvdXJjZS5pZCxcbiAgICAgIGhvc3RlZFpvbmVJZDogdGhpcy5yZXNvdXJjZS5ob3N0ZWRab25lSWQsXG4gICAgICBzdGF0dXM6IHRoaXMucmVzb3VyY2Uuc3RhdHVzLFxuICAgICAgYXJuOiB0aGlzLnJlc291cmNlLmFybixcbiAgICAgIGRvbWFpbk5hbWU6IHRoaXMuX2RvbWFpbk5hbWUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gT3JpZ2luIHRvIHRoaXMgRGlzdHJpYnV0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gb3JpZ2luIFRoZSBPcmlnaW4gdG8gYWRkLlxuICAgKiBAcGFyYW0gb3JpZ2luSWQgQW4gb3B0aW9uYWwgaWQgdG8gdXNlIGZvciB0aGUgT3JpZ2luIG9yIG9uZSB3aWxsIGJlIGdlbmVyYXRlZC5cbiAgICovXG4gIHB1YmxpYyBhZGRPcmlnaW4ob3JpZ2luOiBJT3JpZ2luLCBvcmlnaW5JZD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgaW5kZXhlZE9yaWdpbiA9IHRoaXMuX29yaWdpbnMuZmluZChcbiAgICAgIChvcmlnaW5JbmRleCkgPT4gb3JpZ2luSW5kZXgub3JpZ2luID09PSBvcmlnaW4sXG4gICAgKTtcbiAgICBpZiAoaW5kZXhlZE9yaWdpbikge1xuICAgICAgaWYgKG9yaWdpbklkICYmIG9yaWdpbklkICE9PSBpbmRleGVkT3JpZ2luLmlkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgRHVwbGljYXRlIG9yaWdpbiBmb3IgJHtpbmRleGVkT3JpZ2luLmlkfSBhbmQgJHtvcmlnaW5JZH0uYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbmRleGVkT3JpZ2luLmlkO1xuICAgIH1cbiAgICBjb25zdCBuZXh0SW5kZXggPSB0aGlzLl9vcmlnaW5zLmxlbmd0aDtcbiAgICBjb25zdCBpZCA9IG9yaWdpbklkID8/IGBvcmlnaW4tJHtuZXh0SW5kZXh9YDtcbiAgICAvLyBlbnN1cmUgaWQgKGlmIHByb3ZpZGVkKSBpcyB1bmlxdWUgd2l0aGluIERpc3RyaWJ1dGlvblxuICAgIGlmICh0aGlzLl9vcmlnaW5zLnNvbWUoKG9yaWdpbkluZGV4KSA9PiBvcmlnaW5JbmRleC5pZCA9PT0gaWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBEdXBsaWNhdGUgb3JpZ2luIGlkICR7aWR9LiBPcmlnaW5JZHMgbXVzdCBiZSB1bmlxdWUgd2l0aGluIGEgZGlzdHJpYnV0aW9uYCxcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuX29yaWdpbnMucHVzaCh7IG9yaWdpbiwgaWQgfSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJFcnJvclJlc3BvbnNlcygpOlxuICAgIHwgY2xvdWRmcm9udERpc3RyaWJ1dGlvbi5DbG91ZGZyb250RGlzdHJpYnV0aW9uQ3VzdG9tRXJyb3JSZXNwb25zZVtdXG4gICAgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLmVycm9yUmVzcG9uc2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlcy5tYXAoKGVycm9yQ29uZmlnKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICFlcnJvckNvbmZpZy5yZXNwb25zZUh0dHBTdGF0dXMgJiZcbiAgICAgICAgIWVycm9yQ29uZmlnLnR0bCAmJlxuICAgICAgICAhZXJyb3JDb25maWcucmVzcG9uc2VQYWdlUGF0aFxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcIkEgY3VzdG9tIGVycm9yIHJlc3BvbnNlIHdpdGhvdXQgZWl0aGVyIGEgJ3Jlc3BvbnNlSHR0cFN0YXR1cycsICd0dGwnIG9yICdyZXNwb25zZVBhZ2VQYXRoJyBpcyBub3QgdmFsaWQuXCIsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVycm9yQ2FjaGluZ01pblR0bDogZXJyb3JDb25maWcudHRsPy50b1NlY29uZHMoKSxcbiAgICAgICAgZXJyb3JDb2RlOiBlcnJvckNvbmZpZy5odHRwU3RhdHVzLFxuICAgICAgICByZXNwb25zZUNvZGU6IGVycm9yQ29uZmlnLnJlc3BvbnNlUGFnZVBhdGhcbiAgICAgICAgICA/IChlcnJvckNvbmZpZy5yZXNwb25zZUh0dHBTdGF0dXMgPz8gZXJyb3JDb25maWcuaHR0cFN0YXR1cylcbiAgICAgICAgICA6IGVycm9yQ29uZmlnLnJlc3BvbnNlSHR0cFN0YXR1cyxcbiAgICAgICAgcmVzcG9uc2VQYWdlUGF0aDogZXJyb3JDb25maWcucmVzcG9uc2VQYWdlUGF0aCxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBiZWhhdmlvciB0byB0aGlzIGRpc3RyaWJ1dGlvbiBmb3IgdGhlIGdpdmVuIHBhdGhQYXR0ZXJuLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aFBhdHRlcm4gdGhlIHBhdGggcGF0dGVybiAoZS5nLiwgJ2ltYWdlcy8qJykgdGhhdCBzcGVjaWZpZXMgd2hpY2ggcmVxdWVzdHMgdG8gYXBwbHkgdGhlIGJlaGF2aW9yIHRvLlxuICAgKiBAcGFyYW0gb3JpZ2luIHRoZSBvcmlnaW4gdG8gdXNlIGZvciB0aGlzIGJlaGF2aW9yXG4gICAqIEBwYXJhbSBiZWhhdmlvck9wdGlvbnMgdGhlIG9wdGlvbnMgZm9yIHRoZSBiZWhhdmlvciBhdCB0aGlzIHBhdGguXG4gICAqL1xuICBwdWJsaWMgYWRkQmVoYXZpb3IoXG4gICAgcGF0aFBhdHRlcm46IHN0cmluZyxcbiAgICBvcmlnaW46IElPcmlnaW4sXG4gICAgYmVoYXZpb3JPcHRpb25zOiBBZGRCZWhhdmlvck9wdGlvbnMgPSB7fSxcbiAgKSB7XG4gICAgaWYgKHBhdGhQYXR0ZXJuID09PSBcIipcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIk9ubHkgdGhlIGRlZmF1bHQgYmVoYXZpb3IgY2FuIGhhdmUgYSBwYXRoIHBhdHRlcm4gb2YgJyonXCIsXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCB0YXJnZXRPcmlnaW5JZCA9IHRoaXMuYWRkT3JpZ2luKG9yaWdpbik7XG4gICAgdGhpcy5hZGRpdGlvbmFsQmVoYXZpb3JzLnB1c2goe1xuICAgICAgcGF0aFBhdHRlcm4sXG4gICAgICBvcmlnaW4sXG4gICAgICB0YXJnZXRPcmlnaW5JZCxcbiAgICAgIC4uLmJlaGF2aW9yT3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuZCByZXR1cm5zIHRoZSBUZXJyYWZvcm0gcmVwcmVzZW50YXRpb24gb2YgdGhpcyBiZWhhdmlvci5cbiAgICogVGhpcyByZW5kZXJzIGFzIGEgXCJDbG91ZGZyb250RGlzdHJpYnV0aW9uRGVmYXVsdENhY2hlQmVoYXZpb3JcIlxuICAgKiByZWdhcmRsZXNzIGlmIHRoaXMgaXMgYSBkZWZhdWx0IGNhY2hlIGJlaGF2aW9yIG9yIG5vdCwgYXMgdGhlIHR3b1xuICAgKiBhcmUgaWRlbnRpY2FsIGV4Y2VwdCB0aGUgYHBhdGhQYXR0ZXJuYCBpcyBvbWl0dGVkIGZvciB0aGUgZGVmYXVsdFxuICAgKiBjYWNoZSBiZWhhdmlvci5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIF9yZW5kZXJEZWZhdWx0Q2FjaGVCZWhhdmlvcihcbiAgICBwcm9wczogQ2FjaGVCZWhhdmlvcixcbiAgKTogY2xvdWRmcm9udERpc3RyaWJ1dGlvbi5DbG91ZGZyb250RGlzdHJpYnV0aW9uRGVmYXVsdENhY2hlQmVoYXZpb3Ige1xuICAgIC8vIFRPRE86IHNob3VsZCBpdCBiZSBwb3NzaWJsZSB0byBsZWF2ZSBjYWNoZVBvbGljeSBiZSB1bmRlZmluZWQ/XG4gICAgY29uc3QgbWFuYWdlZENhY2hlUG9saWN5TmFtZSA9XG4gICAgICBwcm9wcy5jYWNoZVBvbGljeSA/PyBNYW5hZ2VkQ2FjaGVQb2xpY3kuQ0FDSElOR19PUFRJTUlaRUQ7XG4gICAgY29uc3QgY2FjaGVQb2xpY3kgPSB0aGlzLmRhdGFMb29rdXAoXG4gICAgICBtYW5hZ2VkQ2FjaGVQb2xpY3lOYW1lLFxuICAgICAgZGF0YUF3c0Nsb3VkZnJvbnRDYWNoZVBvbGljeS5EYXRhQXdzQ2xvdWRmcm9udENhY2hlUG9saWN5LFxuICAgICAgeyBuYW1lOiBtYW5hZ2VkQ2FjaGVQb2xpY3lOYW1lIH0sXG4gICAgKTtcbiAgICBjb25zdCBvcmlnaW5SZXF1ZXN0UG9saWN5ID0gdGhpcy5kYXRhTG9va3VwKFxuICAgICAgcHJvcHMub3JpZ2luUmVxdWVzdFBvbGljeSxcbiAgICAgIGRhdGFBd3NDbG91ZGZyb250T3JpZ2luUmVxdWVzdFBvbGljeS5EYXRhQXdzQ2xvdWRmcm9udE9yaWdpblJlcXVlc3RQb2xpY3ksXG4gICAgICB7IG5hbWU6IHByb3BzLm9yaWdpblJlcXVlc3RQb2xpY3kgfSxcbiAgICApO1xuICAgIGxldCByZXNwb25zZUhlYWRlcnNQb2xpY3lJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmICh0eXBlb2YgcHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5ID09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IG1hbmFnZWRQb2xpY3kgPSB0aGlzLmRhdGFMb29rdXAoXG4gICAgICAgIHByb3BzLnJlc3BvbnNlSGVhZGVyc1BvbGljeSxcbiAgICAgICAgZGF0YUF3c0Nsb3VkZnJvbnRSZXNwb25zZUhlYWRlcnNQb2xpY3kuRGF0YUF3c0Nsb3VkZnJvbnRSZXNwb25zZUhlYWRlcnNQb2xpY3ksXG4gICAgICAgIHsgbmFtZTogcHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5IH0sXG4gICAgICApO1xuICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5SWQgPSBtYW5hZ2VkUG9saWN5Py5pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5SWQgPVxuICAgICAgICBwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3k/LnJlc3BvbnNlSGVhZGVyc1BvbGljeUlkO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXRPcmlnaW5JZDogcHJvcHMudGFyZ2V0T3JpZ2luSWQsXG4gICAgICBhbGxvd2VkTWV0aG9kczpcbiAgICAgICAgcHJvcHMuYWxsb3dlZE1ldGhvZHM/Lm1ldGhvZHMgPz8gQWxsb3dlZE1ldGhvZHMuQUxMT1dfR0VUX0hFQUQubWV0aG9kcyxcbiAgICAgIGNhY2hlZE1ldGhvZHM6XG4gICAgICAgIHByb3BzLmNhY2hlZE1ldGhvZHM/Lm1ldGhvZHMgPz8gQ2FjaGVkTWV0aG9kcy5DQUNIRV9HRVRfSEVBRC5tZXRob2RzLFxuICAgICAgY2FjaGVQb2xpY3lJZDogY2FjaGVQb2xpY3k/LmlkLFxuICAgICAgY29tcHJlc3M6IHByb3BzLmNvbXByZXNzID8/IHRydWUsXG4gICAgICBvcmlnaW5SZXF1ZXN0UG9saWN5SWQ6IG9yaWdpblJlcXVlc3RQb2xpY3k/LmlkLFxuICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5SWQsXG4gICAgICBzbW9vdGhTdHJlYW1pbmc6IHByb3BzLnNtb290aFN0cmVhbWluZyxcbiAgICAgIHZpZXdlclByb3RvY29sUG9saWN5OlxuICAgICAgICBwcm9wcy52aWV3ZXJQcm90b2NvbFBvbGljeSA/PyBWaWV3ZXJQcm90b2NvbFBvbGljeS5BTExPV19BTEwsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyUmVzdHJpY3Rpb25zKGdlb1Jlc3RyaWN0aW9uPzogR2VvUmVzdHJpY3Rpb24pIHtcbiAgICByZXR1cm4gZ2VvUmVzdHJpY3Rpb25cbiAgICAgID8ge1xuICAgICAgICAgIGdlb1Jlc3RyaWN0aW9uOiB7XG4gICAgICAgICAgICByZXN0cmljdGlvblR5cGU6IGdlb1Jlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVHlwZSxcbiAgICAgICAgICAgIGxvY2F0aW9uczpcbiAgICAgICAgICAgICAgZ2VvUmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UeXBlICE9PSBHZW9SZXN0cmljdGlvblR5cGUuTk9ORVxuICAgICAgICAgICAgICAgID8gdGhpcy52YWxpZGF0ZUxvY2F0aW9ucyhnZW9SZXN0cmljdGlvbi5sb2NhdGlvbnMpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgICAgZ2VvUmVzdHJpY3Rpb246IHtcbiAgICAgICAgICAgIHJlc3RyaWN0aW9uVHlwZTogR2VvUmVzdHJpY3Rpb25UeXBlLk5PTkUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVMb2NhdGlvbnMobG9jYXRpb25zOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IExPQ0FUSU9OX1JFR0VYID0gL15bQS1aXXsyfSQvO1xuICAgIGlmIChsb2NhdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTaG91bGQgcHJvdmlkZSBhdCBsZWFzdCAxIGxvY2F0aW9uXCIpO1xuICAgIH1cbiAgICBsb2NhdGlvbnMuZm9yRWFjaCgobG9jYXRpb24pID0+IHtcbiAgICAgIGlmICghTE9DQVRJT05fUkVHRVgudGVzdChsb2NhdGlvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIGxvY2F0aW9uIGZvcm1hdCBmb3IgbG9jYXRpb246ICR7bG9jYXRpb259LCBsb2NhdGlvbiBzaG91bGQgYmUgdHdvLWxldHRlciBhbmQgdXBwZXJjYXNlIGNvdW50cnkgSVNPIDMxNjYtMS1hbHBoYS0yIGNvZGVgLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBsb2NhdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclZpZXdlckNlcnRpZmljYXRlKFxuICAgIGNlcnRpZmljYXRlPzogSUNlcnRpZmljYXRlLFxuICAgIG1pbmltdW1Qcm90b2NvbFZlcnNpb25Qcm9wPzogU2VjdXJpdHlQb2xpY3lQcm90b2NvbCxcbiAgICBzc2xTdXBwb3J0TWV0aG9kUHJvcD86IFNTTE1ldGhvZCxcbiAgKTogY2xvdWRmcm9udERpc3RyaWJ1dGlvbi5DbG91ZGZyb250RGlzdHJpYnV0aW9uVmlld2VyQ2VydGlmaWNhdGUge1xuICAgIGNvbnN0IG1pbmltdW1Qcm90b2NvbFZlcnNpb24gPVxuICAgICAgbWluaW11bVByb3RvY29sVmVyc2lvblByb3AgPz8gU2VjdXJpdHlQb2xpY3lQcm90b2NvbC5UTFNfVjFfMl8yMDIxO1xuICAgIGNvbnN0IHNzbFN1cHBvcnRNZXRob2QgPSBzc2xTdXBwb3J0TWV0aG9kUHJvcCA/PyBTU0xNZXRob2QuU05JO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLihjZXJ0aWZpY2F0ZVxuICAgICAgICA/IHsgYWNtQ2VydGlmaWNhdGVBcm46IGNlcnRpZmljYXRlLmNlcnRpZmljYXRlQXJuIH1cbiAgICAgICAgOiB7IGNsb3VkZnJvbnREZWZhdWx0Q2VydGlmaWNhdGU6IHRydWUgfSksXG4gICAgICBtaW5pbXVtUHJvdG9jb2xWZXJzaW9uOiBtaW5pbXVtUHJvdG9jb2xWZXJzaW9uLFxuICAgICAgc3NsU3VwcG9ydE1ldGhvZDogc3NsU3VwcG9ydE1ldGhvZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbmRpdGlvbmFsbHkgbG9va3VwIG9yIGNyZWF0ZSBhIGNoaWxkIGJhc2VkIG9uIHRoZSBpZCBwcm92aWRlZC5cbiAgICogSWYgdGhlIGlkIGlzIHVuZGVmaW5lZCwgaXQgd2lsbCByZXR1cm4gdW5kZWZpbmVkLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgdGhlIGlkIG9mIHRoZSBjaGlsZCB0byBsb29rdXAgb3IgY3JlYXRlXG4gICAqIEBwYXJhbSBjb25zdHJ1Y3RUeXBlIHRoZSB0eXBlIG9mIHRoZSBjaGlsZCB0byBjcmVhdGVcbiAgICogQHBhcmFtIGNvbmZpZyB0aGUgY29uZmlndXJhdGlvbiB0byBwYXNzIHRvIHRoZSBjaGlsZFxuICAgKi9cbiAgcHJpdmF0ZSBkYXRhTG9va3VwPFRDb25zdHJ1Y3QgZXh0ZW5kcyBDb25zdHJ1Y3Q+KFxuICAgIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgY29uc3RydWN0VHlwZTogbmV3IChcbiAgICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgICBpZElucHV0OiBzdHJpbmcsXG4gICAgICBjb25maWc6IGFueSxcbiAgICApID0+IFRDb25zdHJ1Y3QsXG4gICAgY29uZmlnPzogYW55LFxuICApOiBUQ29uc3RydWN0IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIWlkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBsZXQgY2hpbGQgPSB0aGlzLm5vZGUudHJ5RmluZENoaWxkKGlkKSBhcyBUQ29uc3RydWN0IHwgdW5kZWZpbmVkO1xuICAgIGlmICghY2hpbGQpIHtcbiAgICAgIGNoaWxkID0gbmV3IGNvbnN0cnVjdFR5cGUodGhpcywgaWQsIGNvbmZpZyk7XG4gICAgfVxuICAgIHJldHVybiBjaGlsZDtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlb1Jlc3RyaWN0aW9uIHtcbiAgcmVhZG9ubHkgbG9jYXRpb25zOiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgcmVzdHJpY3Rpb25UeXBlOiBHZW9SZXN0cmljdGlvblR5cGU7XG59XG5cbmV4cG9ydCBlbnVtIEdlb1Jlc3RyaWN0aW9uVHlwZSB7XG4gIE5PTkUgPSBcIm5vbmVcIixcbiAgV0hJVEVMSVNUID0gXCJ3aGl0ZWxpc3RcIixcbiAgQkxBQ0tMSVNUID0gXCJibGFja2xpc3RcIixcbn1cblxuLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNTYuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udC9saWIvZGlzdHJpYnV0aW9uLnRzXG5cbi8qKiBNYXhpbXVtIEhUVFAgdmVyc2lvbiB0byBzdXBwb3J0ICovXG5leHBvcnQgZW51bSBIdHRwVmVyc2lvbiB7XG4gIC8qKiBIVFRQIDEuMSAqL1xuICBIVFRQMV8xID0gXCJodHRwMS4xXCIsXG4gIC8qKiBIVFRQIDIgKi9cbiAgSFRUUDIgPSBcImh0dHAyXCIsXG4gIC8qKiBIVFRQIDIgYW5kIEhUVFAgMyAqL1xuICBIVFRQMl9BTkRfMyA9IFwiaHR0cDJhbmQzXCIsXG4gIC8qKiBIVFRQIDMgKi9cbiAgSFRUUDMgPSBcImh0dHAzXCIsXG59XG5cbi8qKlxuICogVGhlIHByaWNlIGNsYXNzIGRldGVybWluZXMgaG93IG1hbnkgZWRnZSBsb2NhdGlvbnMgQ2xvdWRGcm9udCB3aWxsIHVzZSBmb3IgeW91ciBkaXN0cmlidXRpb24uXG4gKiBTZWUgaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9jbG91ZGZyb250L3ByaWNpbmcvIGZvciBmdWxsIGxpc3Qgb2Ygc3VwcG9ydGVkIHJlZ2lvbnMuXG4gKi9cbmV4cG9ydCBlbnVtIFByaWNlQ2xhc3Mge1xuICAvKiogVVNBLCBDYW5hZGEsIEV1cm9wZSwgJiBJc3JhZWwgKi9cbiAgUFJJQ0VfQ0xBU1NfMTAwID0gXCJQcmljZUNsYXNzXzEwMFwiLFxuICAvKiogUFJJQ0VfQ0xBU1NfMTAwICsgU291dGggQWZyaWNhLCBLZW55YSwgTWlkZGxlIEVhc3QsIEphcGFuLCBTaW5nYXBvcmUsIFNvdXRoIEtvcmVhLCBUYWl3YW4sIEhvbmcgS29uZywgJiBQaGlsaXBwaW5lcyAqL1xuICBQUklDRV9DTEFTU18yMDAgPSBcIlByaWNlQ2xhc3NfMjAwXCIsXG4gIC8qKiBBbGwgbG9jYXRpb25zICovXG4gIFBSSUNFX0NMQVNTX0FMTCA9IFwiUHJpY2VDbGFzc19BbGxcIixcbn1cblxuLyoqXG4gKiBUaGUgU1NMIG1ldGhvZCBDbG91ZEZyb250IHdpbGwgdXNlIGZvciB5b3VyIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiBTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uIChTTkkpIC0gaXMgYW4gZXh0ZW5zaW9uIHRvIHRoZSBUTFMgY29tcHV0ZXIgbmV0d29ya2luZyBwcm90b2NvbCBieSB3aGljaCBhIGNsaWVudCBpbmRpY2F0ZXNcbiAqICB3aGljaCBob3N0bmFtZSBpdCBpcyBhdHRlbXB0aW5nIHRvIGNvbm5lY3QgdG8gYXQgdGhlIHN0YXJ0IG9mIHRoZSBoYW5kc2hha2luZyBwcm9jZXNzLiBUaGlzIGFsbG93cyBhIHNlcnZlciB0byBwcmVzZW50XG4gKiAgbXVsdGlwbGUgY2VydGlmaWNhdGVzIG9uIHRoZSBzYW1lIElQIGFkZHJlc3MgYW5kIFRDUCBwb3J0IG51bWJlciBhbmQgaGVuY2UgYWxsb3dzIG11bHRpcGxlIHNlY3VyZSAoSFRUUFMpIHdlYnNpdGVzXG4gKiAob3IgYW55IG90aGVyIHNlcnZpY2Ugb3ZlciBUTFMpIHRvIGJlIHNlcnZlZCBieSB0aGUgc2FtZSBJUCBhZGRyZXNzIHdpdGhvdXQgcmVxdWlyaW5nIGFsbCB0aG9zZSBzaXRlcyB0byB1c2UgdGhlIHNhbWUgY2VydGlmaWNhdGUuXG4gKlxuICogQ2xvdWRGcm9udCBjYW4gdXNlIFNOSSB0byBob3N0IG11bHRpcGxlIGRpc3RyaWJ1dGlvbnMgb24gdGhlIHNhbWUgSVAgLSB3aGljaCBhIGxhcmdlIG1ham9yaXR5IG9mIGNsaWVudHMgd2lsbCBzdXBwb3J0LlxuICpcbiAqIElmIHlvdXIgY2xpZW50cyBjYW5ub3Qgc3VwcG9ydCBTTkkgaG93ZXZlciAtIENsb3VkRnJvbnQgY2FuIHVzZSBkZWRpY2F0ZWQgSVBzIGZvciB5b3VyIGRpc3RyaWJ1dGlvbiAtIGJ1dCB0aGVyZSBpcyBhIHByb3JhdGVkIG1vbnRobHkgY2hhcmdlIGZvclxuICogdXNpbmcgdGhpcyBmZWF0dXJlLiBCeSBkZWZhdWx0LCB3ZSB1c2UgU05JIC0gYnV0IHlvdSBjYW4gb3B0aW9uYWxseSBlbmFibGUgZGVkaWNhdGVkIElQcyAoVklQKS5cbiAqXG4gKiBTZWUgdGhlIENsb3VkRnJvbnQgU1NMIGZvciBtb3JlIGRldGFpbHMgYWJvdXQgcHJpY2luZyA6IGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vY2xvdWRmcm9udC9jdXN0b20tc3NsLWRvbWFpbnMvXG4gKlxuICovXG5leHBvcnQgZW51bSBTU0xNZXRob2Qge1xuICBTTkkgPSBcInNuaS1vbmx5XCIsXG4gIFZJUCA9IFwidmlwXCIsXG59XG5cbi8qKlxuICogVGhlIG1pbmltdW0gdmVyc2lvbiBvZiB0aGUgU1NMIHByb3RvY29sIHRoYXQgeW91IHdhbnQgQ2xvdWRGcm9udCB0byB1c2UgZm9yIEhUVFBTIGNvbm5lY3Rpb25zLlxuICogQ2xvdWRGcm9udCBzZXJ2ZXMgeW91ciBvYmplY3RzIG9ubHkgdG8gYnJvd3NlcnMgb3IgZGV2aWNlcyB0aGF0IHN1cHBvcnQgYXQgbGVhc3QgdGhlIFNTTCB2ZXJzaW9uIHRoYXQgeW91IHNwZWNpZnkuXG4gKi9cbmV4cG9ydCBlbnVtIFNlY3VyaXR5UG9saWN5UHJvdG9jb2wge1xuICBTU0xfVjMgPSBcIlNTTHYzXCIsXG4gIFRMU19WMSA9IFwiVExTdjFcIixcbiAgVExTX1YxXzIwMTYgPSBcIlRMU3YxXzIwMTZcIixcbiAgVExTX1YxXzFfMjAxNiA9IFwiVExTdjEuMV8yMDE2XCIsXG4gIFRMU19WMV8yXzIwMTggPSBcIlRMU3YxLjJfMjAxOFwiLFxuICBUTFNfVjFfMl8yMDE5ID0gXCJUTFN2MS4yXzIwMTlcIixcbiAgVExTX1YxXzJfMjAyMSA9IFwiVExTdjEuMl8yMDIxXCIsXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29uZmlndXJpbmcgY3VzdG9tIGVycm9yIHJlc3BvbnNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFcnJvclJlc3BvbnNlIHtcbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIGFtb3VudCBvZiB0aW1lLCBpbiBzZWNvbmRzLCB0aGF0IHlvdSB3YW50IENsb3VkRnJvbnQgdG8gY2FjaGUgdGhlIEhUVFAgc3RhdHVzIGNvZGUgc3BlY2lmaWVkIGluIEVycm9yQ29kZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgZGVmYXVsdCBjYWNoaW5nIFRUTCBiZWhhdmlvciBhcHBsaWVzXG4gICAqL1xuICByZWFkb25seSB0dGw/OiBEdXJhdGlvbjtcbiAgLyoqXG4gICAqIFRoZSBIVFRQIHN0YXR1cyBjb2RlIGZvciB3aGljaCB5b3Ugd2FudCB0byBzcGVjaWZ5IGEgY3VzdG9tIGVycm9yIHBhZ2UgYW5kL29yIGEgY2FjaGluZyBkdXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGh0dHBTdGF0dXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBIVFRQIHN0YXR1cyBjb2RlIHRoYXQgeW91IHdhbnQgQ2xvdWRGcm9udCB0byByZXR1cm4gdG8gdGhlIHZpZXdlciBhbG9uZyB3aXRoIHRoZSBjdXN0b20gZXJyb3IgcGFnZS5cbiAgICpcbiAgICogSWYgeW91IHNwZWNpZnkgYSB2YWx1ZSBmb3IgYHJlc3BvbnNlSHR0cFN0YXR1c2AsIHlvdSBtdXN0IGFsc28gc3BlY2lmeSBhIHZhbHVlIGZvciBgcmVzcG9uc2VQYWdlUGF0aGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGVycm9yIGNvZGUgd2lsbCBiZSByZXR1cm5lZCBhcyB0aGUgcmVzcG9uc2UgY29kZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc3BvbnNlSHR0cFN0YXR1cz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHRoZSBjdXN0b20gZXJyb3IgcGFnZSB0aGF0IHlvdSB3YW50IENsb3VkRnJvbnQgdG8gcmV0dXJuIHRvIGEgdmlld2VyIHdoZW4geW91ciBvcmlnaW4gcmV0dXJucyB0aGVcbiAgICogYGh0dHBTdGF0dXNgLCBmb3IgZXhhbXBsZSwgLzR4eC1lcnJvcnMvNDAzLWZvcmJpZGRlbi5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGRlZmF1bHQgQ2xvdWRGcm9udCByZXNwb25zZSBpcyBzaG93bi5cbiAgICovXG4gIHJlYWRvbmx5IHJlc3BvbnNlUGFnZVBhdGg/OiBzdHJpbmc7XG59XG5cbi8vIHByaXZhdGUgaW50ZXJmYWNlIHRvIGtlZXAgdHJhY2sgb2YgQ2FjaGVCZWhhdmlvcnNcbmludGVyZmFjZSBDYWNoZUJlaGF2aW9yIGV4dGVuZHMgQmVoYXZpb3JPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBwYXR0ZXJuIChlLmcuLCBgaW1hZ2VzLyouanBnYCkgdGhhdCBzcGVjaWZpZXMgd2hpY2ggcmVxdWVzdHMgdG8gYXBwbHkgdGhlIGJlaGF2aW9yIHRvLlxuICAgKiBUaGVyZSBtdXN0IGJlIGV4YWN0bHkgb25lIGJlaGF2aW9yIGFzc29jaWF0ZWQgd2l0aCBlYWNoIGBEaXN0cmlidXRpb25gIHRoYXQgaGFzIGEgcGF0aCBwYXR0ZXJuXG4gICAqIG9mICcqJywgd2hpY2ggYWN0cyBhcyB0aGUgY2F0Y2gtYWxsIGRlZmF1bHQgYmVoYXZpb3IuXG4gICAqL1xuICByZWFkb25seSBwYXRoUGF0dGVybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWYWx1ZSBvZiBJRCBmb3IgdGhlIG9yaWdpbiB0aGF0IHlvdSB3YW50IENsb3VkRnJvbnQgdG8gcm91dGUgcmVxdWVzdHMgdG8gd2hlbiBhIHJlcXVlc3QgbWF0Y2hlc1xuICAgKiB0aGUgcGF0aCBwYXR0ZXJuIGVpdGhlciBmb3IgYSBjYWNoZSBiZWhhdmlvciBvciBmb3IgdGhlIGRlZmF1bHQgY2FjaGUgYmVoYXZpb3IuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRPcmlnaW5JZDogc3RyaW5nO1xufVxuXG4vLyBwcml2YXRlIGludGVyZmFjZSB0byBpbmRleCBvcmlnaW5zIGJ5IGlkXG5pbnRlcmZhY2UgT3JpZ2luSW5kZXgge1xuICBvcmlnaW46IElPcmlnaW47XG4gIGlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY3JlYXRpbmcgYSBuZXcgYmVoYXZpb3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmVoYXZpb3JPcHRpb25zIGV4dGVuZHMgQWRkQmVoYXZpb3JPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBvcmlnaW4gdGhhdCB5b3Ugd2FudCBDbG91ZEZyb250IHRvIHJvdXRlIHJlcXVlc3RzIHRvIHdoZW4gdGhleSBtYXRjaCB0aGlzIGJlaGF2aW9yLlxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luOiBJT3JpZ2luO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGFkZGluZyBhIG5ldyBiZWhhdmlvciB0byBhIERpc3RyaWJ1dGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGRCZWhhdmlvck9wdGlvbnMge1xuICAvKipcbiAgICogSFRUUCBtZXRob2RzIHRvIGFsbG93IGZvciB0aGlzIGJlaGF2aW9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCBBbGxvd2VkTWV0aG9kcy5BTExPV19HRVRfSEVBRFxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZE1ldGhvZHM/OiBBbGxvd2VkTWV0aG9kcztcblxuICAvKipcbiAgICogSFRUUCBtZXRob2RzIHRvIGNhY2hlIGZvciB0aGlzIGJlaGF2aW9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCBDYWNoZWRNZXRob2RzLkNBQ0hFX0dFVF9IRUFEXG4gICAqL1xuICByZWFkb25seSBjYWNoZWRNZXRob2RzPzogQ2FjaGVkTWV0aG9kcztcblxuICAvKipcbiAgICogVGhlIGNhY2hlIHBvbGljeSBmb3IgdGhpcyBiZWhhdmlvci4gVGhlIGNhY2hlIHBvbGljeSBkZXRlcm1pbmVzIHdoYXQgdmFsdWVzIGFyZSBpbmNsdWRlZCBpbiB0aGUgY2FjaGUga2V5LFxuICAgKiBhbmQgdGhlIHRpbWUtdG8tbGl2ZSAoVFRMKSB2YWx1ZXMgZm9yIHRoZSBjYWNoZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRGcm9udC9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvY29udHJvbGxpbmctdGhlLWNhY2hlLWtleS5odG1sLlxuICAgKiBAZGVmYXVsdCBNYW5hZ2VkQ2FjaGVQb2xpY3kuQ0FDSElOR19PUFRJTUlaRURcbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlUG9saWN5PzogTWFuYWdlZENhY2hlUG9saWN5OyAvL1RPRE86IHN1cHBvcnQgY3VzdG9tIGNhY2hlIHBvbGljaWVzXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgeW91IHdhbnQgQ2xvdWRGcm9udCB0byBhdXRvbWF0aWNhbGx5IGNvbXByZXNzIGNlcnRhaW4gZmlsZXMgZm9yIHRoaXMgY2FjaGUgYmVoYXZpb3IuXG4gICAqIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRGcm9udC9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvU2VydmluZ0NvbXByZXNzZWRGaWxlcy5odG1sI2NvbXByZXNzZWQtY29udGVudC1jbG91ZGZyb250LWZpbGUtdHlwZXNcbiAgICogZm9yIGZpbGUgdHlwZXMgQ2xvdWRGcm9udCB3aWxsIGNvbXByZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjb21wcmVzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBvcmlnaW4gcmVxdWVzdCBwb2xpY3kgZm9yIHRoaXMgYmVoYXZpb3IuIFRoZSBvcmlnaW4gcmVxdWVzdCBwb2xpY3kgZGV0ZXJtaW5lcyB3aGljaCB2YWx1ZXMgKGUuZy4sIGhlYWRlcnMsIGNvb2tpZXMpXG4gICAqIGFyZSBpbmNsdWRlZCBpbiByZXF1ZXN0cyB0aGF0IENsb3VkRnJvbnQgc2VuZHMgdG8gdGhlIG9yaWdpbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5SZXF1ZXN0UG9saWN5PzogTWFuYWdlZE9yaWdpblJlcXVlc3RQb2xpY3k7IC8vVE9ETzogc3VwcG9ydCBjdXN0b20gb3JpZ2luIHJlcXVlc3QgcG9saWNpZXNcblxuICAvKipcbiAgICogVGhlIHJlc3BvbnNlIGhlYWRlcnMgcG9saWN5IGZvciB0aGlzIGJlaGF2aW9yLiBUaGUgcmVzcG9uc2UgaGVhZGVycyBwb2xpY3kgZGV0ZXJtaW5lcyB3aGljaCBoZWFkZXJzIGFyZSBpbmNsdWRlZCBpbiByZXNwb25zZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSByZXNwb25zZUhlYWRlcnNQb2xpY3k/OlxuICAgIHwgTWFuYWdlZFJlc3BvbnNlSGVhZGVyc1BvbGljeVxuICAgIHwgSVJlc3BvbnNlSGVhZGVyc1BvbGljeTtcblxuICAvKipcbiAgICogU2V0IHRoaXMgdG8gdHJ1ZSB0byBpbmRpY2F0ZSB5b3Ugd2FudCB0byBkaXN0cmlidXRlIG1lZGlhIGZpbGVzIGluIHRoZSBNaWNyb3NvZnQgU21vb3RoIFN0cmVhbWluZyBmb3JtYXQgdXNpbmcgdGhpcyBiZWhhdmlvci5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNtb290aFN0cmVhbWluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwcm90b2NvbCB0aGF0IHZpZXdlcnMgY2FuIHVzZSB0byBhY2Nlc3MgdGhlIGZpbGVzIGNvbnRyb2xsZWQgYnkgdGhpcyBiZWhhdmlvci5cbiAgICpcbiAgICogQGRlZmF1bHQgVmlld2VyUHJvdG9jb2xQb2xpY3kuQUxMT1dfQUxMXG4gICAqL1xuICByZWFkb25seSB2aWV3ZXJQcm90b2NvbFBvbGljeT86IFZpZXdlclByb3RvY29sUG9saWN5O1xuXG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGcm9udCBmdW5jdGlvbnMgdG8gaW52b2tlIGJlZm9yZSBzZXJ2aW5nIHRoZSBjb250ZW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBmdW5jdGlvbnMgd2lsbCBiZSBpbnZva2VkXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbkFzc29jaWF0aW9ucz86IEZ1bmN0aW9uQXNzb2NpYXRpb25bXTtcbn1cblxuLyoqXG4gKiBUaGUgSFRUUCBtZXRob2RzIHRoYXQgdGhlIEJlaGF2aW9yIHdpbGwgYWNjZXB0IHJlcXVlc3RzIG9uLlxuICovXG5leHBvcnQgY2xhc3MgQWxsb3dlZE1ldGhvZHMge1xuICAvKiogSEVBRCBhbmQgR0VUICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUxMT1dfR0VUX0hFQUQgPSBuZXcgQWxsb3dlZE1ldGhvZHMoW1wiR0VUXCIsIFwiSEVBRFwiXSk7XG4gIC8qKiBIRUFELCBHRVQsIGFuZCBPUFRJT05TICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUxMT1dfR0VUX0hFQURfT1BUSU9OUyA9IG5ldyBBbGxvd2VkTWV0aG9kcyhbXG4gICAgXCJHRVRcIixcbiAgICBcIkhFQURcIixcbiAgICBcIk9QVElPTlNcIixcbiAgXSk7XG4gIC8qKiBBbGwgc3VwcG9ydGVkIEhUVFAgbWV0aG9kcyAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFMTE9XX0FMTCA9IG5ldyBBbGxvd2VkTWV0aG9kcyhbXG4gICAgXCJHRVRcIixcbiAgICBcIkhFQURcIixcbiAgICBcIk9QVElPTlNcIixcbiAgICBcIlBVVFwiLFxuICAgIFwiUEFUQ0hcIixcbiAgICBcIlBPU1RcIixcbiAgICBcIkRFTEVURVwiLFxuICBdKTtcblxuICAvKiogSFRUUCBtZXRob2RzIHN1cHBvcnRlZCAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWV0aG9kczogc3RyaW5nW107XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihtZXRob2RzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMubWV0aG9kcyA9IG1ldGhvZHM7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgSFRUUCBtZXRob2RzIHRoYXQgdGhlIEJlaGF2aW9yIHdpbGwgY2FjaGUgcmVxdWVzdHMgb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBDYWNoZWRNZXRob2RzIHtcbiAgLyoqIEhFQUQgYW5kIEdFVCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENBQ0hFX0dFVF9IRUFEID0gbmV3IENhY2hlZE1ldGhvZHMoW1wiR0VUXCIsIFwiSEVBRFwiXSk7XG4gIC8qKiBIRUFELCBHRVQsIGFuZCBPUFRJT05TICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0FDSEVfR0VUX0hFQURfT1BUSU9OUyA9IG5ldyBDYWNoZWRNZXRob2RzKFtcbiAgICBcIkdFVFwiLFxuICAgIFwiSEVBRFwiLFxuICAgIFwiT1BUSU9OU1wiLFxuICBdKTtcblxuICAvKiogSFRUUCBtZXRob2RzIHN1cHBvcnRlZCAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWV0aG9kczogc3RyaW5nW107XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihtZXRob2RzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMubWV0aG9kcyA9IG1ldGhvZHM7XG4gIH1cbn1cblxuLyoqXG4gKiBIb3cgSFRUUHMgc2hvdWxkIGJlIGhhbmRsZWQgd2l0aCB5b3VyIGRpc3RyaWJ1dGlvbi5cbiAqL1xuZXhwb3J0IGVudW0gVmlld2VyUHJvdG9jb2xQb2xpY3kge1xuICAvKiogSFRUUFMgb25seSAqL1xuICBIVFRQU19PTkxZID0gXCJodHRwcy1vbmx5XCIsXG4gIC8qKiBXaWxsIHJlZGlyZWN0IEhUVFAgcmVxdWVzdHMgdG8gSFRUUFMgKi9cbiAgUkVESVJFQ1RfVE9fSFRUUFMgPSBcInJlZGlyZWN0LXRvLWh0dHBzXCIsXG4gIC8qKiBCb3RoIEhUVFAgYW5kIEhUVFBTIHN1cHBvcnRlZCAqL1xuICBBTExPV19BTEwgPSBcImFsbG93LWFsbFwiLFxufVxuXG4vKipcbiAqIENsb3VkRnJvbnQgcHJvdmlkZXMgYSBzZXQgb2YgbWFuYWdlZCBjYWNoZSBwb2xpY2llcyB0aGF0IHlvdSBjYW4gYXR0YWNoIHRvIGFueSBvZiB5b3VyIGRpc3RyaWJ1dGlvbidzIGNhY2hlIGJlaGF2aW9ycy5cbiAqIFdpdGggYSBtYW5hZ2VkIGNhY2hlIHBvbGljeSwgeW91IGRvbid0IG5lZWQgdG8gd3JpdGUgb3IgbWFpbnRhaW4geW91ciBvd24gY2FjaGUgcG9saWN5LiBUaGUgbWFuYWdlZCBwb2xpY2llcyB1c2Ugc2V0dGluZ3MgdGhhdCBhcmUgb3B0aW1pemVkIGZvciBzcGVjaWZpYyB1c2UgY2FzZXMuXG4gKlxuICogQGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkRnJvbnQvbGF0ZXN0L0RldmVsb3Blckd1aWRlL3VzaW5nLW1hbmFnZWQtY2FjaGUtcG9saWNpZXMuaHRtbFxuICogQGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS42MC4wL2RvY3MvZGF0YS1zb3VyY2VzL2Nsb3VkZnJvbnRfY2FjaGVfcG9saWN5I2F3cy1tYW5hZ2VkLXBvbGljaWVzXG4gKi9cbmV4cG9ydCBlbnVtIE1hbmFnZWRDYWNoZVBvbGljeSB7XG4gIC8qKlxuICAgKiBUaGlzIHBvbGljeSBpcyBkZXNpZ25lZCBmb3IgdXNlIHdpdGggYW4gb3JpZ2luIHRoYXQgaXMgYW4gQVdTIEFtcGxpZnkgd2ViIGFwcC5cbiAgICovXG4gIEFNUExJRlkgPSBcIk1hbmFnZWQtQW1wbGlmeVwiLFxuICAvKipcbiAgICogT3B0aW1pemUgY2FjaGUgZWZmaWNpZW5jeSBieSBtaW5pbWl6aW5nIHRoZSB2YWx1ZXMgdGhhdCBDbG91ZEZyb250IGluY2x1ZGVzIGluIHRoZSBjYWNoZSBrZXkuXG4gICAqIFF1ZXJ5IHN0cmluZ3MgYW5kIGNvb2tpZXMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgY2FjaGUga2V5LCBhbmQgb25seSB0aGUgbm9ybWFsaXplZCAnQWNjZXB0LUVuY29kaW5nJyBoZWFkZXIgaXMgaW5jbHVkZWQuXG4gICAqL1xuICBDQUNISU5HX09QVElNSVpFRCA9IFwiTWFuYWdlZC1DYWNoaW5nT3B0aW1pemVkXCIsXG4gIC8qKlxuICAgKiBPcHRpbWl6ZSBjYWNoZSBlZmZpY2llbmN5IGJ5IG1pbmltaXppbmcgdGhlIHZhbHVlcyB0aGF0IENsb3VkRnJvbnQgaW5jbHVkZXMgaW4gdGhlIGNhY2hlIGtleS5cbiAgICogUXVlcnkgc3RyaW5ncyBhbmQgY29va2llcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBjYWNoZSBrZXksIGFuZCBvbmx5IHRoZSBub3JtYWxpemVkICdBY2NlcHQtRW5jb2RpbmcnIGhlYWRlciBpcyBpbmNsdWRlZC5cbiAgICogRGlzYWJsZXMgY2FjaGUgY29tcHJlc3Npb24uXG4gICAqL1xuICBDQUNISU5HX09QVElNSVpFRF9GT1JfVU5DT01QUkVTU0VEX09CSkVDVFMgPSBcIk1hbmFnZWQtQ2FjaGluZ09wdGltaXplZEZvclVuY29tcHJlc3NlZE9iamVjdHNcIixcbiAgLyoqIERpc2FibGVzIGNhY2hpbmcuIFRoaXMgcG9saWN5IGlzIHVzZWZ1bCBmb3IgZHluYW1pYyBjb250ZW50IGFuZCBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgbm90IGNhY2hlYWJsZS4gKi9cbiAgQ0FDSElOR19ESVNBQkxFRCA9IFwiTWFuYWdlZC1DYWNoaW5nRGlzYWJsZWRcIixcbiAgLyoqIERlc2lnbmVkIGZvciB1c2Ugd2l0aCBhbiBvcmlnaW4gdGhhdCBpcyBhbiBBV1MgRWxlbWVudGFsIE1lZGlhUGFja2FnZSBlbmRwb2ludC4gKi9cbiAgRUxFTUVOVEFMX01FRElBX1BBQ0tBR0UgPSBcIk1hbmFnZWQtRWxlbWVudGFsLU1lZGlhUGFja2FnZVwiLFxuICAvKipcbiAgICogRGVzaWduZWQgZm9yIHVzZSB3aXRoIGFuIG9yaWdpbiB0aGF0IHJldHVybnMgQ2FjaGUtQ29udHJvbCBIVFRQIHJlc3BvbnNlIGhlYWRlcnMgYW5kIGRvZXMgbm90IHNlcnZlIGRpZmZlcmVudCBjb250ZW50IGJhc2VkIG9uIHZhbHVlcyBwcmVzZW50IGluIHRoZSBxdWVyeSBzdHJpbmcuXG4gICAqL1xuICBVU0VfT1JJR0lOX0NBQ0hFX0NPTlRST0xfSEVBREVSUyA9IFwiTWFuYWdlZC1Vc2VPcmlnaW5DYWNoZUNvbnRyb2xIZWFkZXJzXCIsXG4gIC8qKlxuICAgKiBEZXNpZ25lZCBmb3IgdXNlIHdpdGggYW4gb3JpZ2luIHRoYXQgcmV0dXJucyBDYWNoZS1Db250cm9sIEhUVFAgcmVzcG9uc2UgaGVhZGVycyBhbmQgc2VydmVzIGRpZmZlcmVudCBjb250ZW50IGJhc2VkIG9uIHZhbHVlcyBwcmVzZW50IGluIHRoZSBxdWVyeSBzdHJpbmcuXG4gICAqL1xuICBVU0VfT1JJR0lOX0NBQ0hFX0NPTlRST0xfSEVBREVSU19RVUVSWV9TVFJJTkdTID0gXCJNYW5hZ2VkLVVzZU9yaWdpbkNhY2hlQ29udHJvbEhlYWRlcnMtUXVlcnlTdHJpbmdzXCIsXG59XG5cbi8qKlxuICogT3JpZ2luIFJlcXVlc3QgUG9saWN5IGNvbmZpZ3VyYXRpb24uXG4gKlxuICogQGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkRnJvbnQvbGF0ZXN0L0RldmVsb3Blckd1aWRlL3VzaW5nLW1hbmFnZWQtb3JpZ2luLXJlcXVlc3QtcG9saWNpZXMuaHRtbFxuICogQGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS42MC4wL2RvY3MvZGF0YS1zb3VyY2VzL2Nsb3VkZnJvbnRfb3JpZ2luX3JlcXVlc3RfcG9saWN5I2F3cy1tYW5hZ2VkLXBvbGljaWVzXG4gKi9cbmV4cG9ydCBlbnVtIE1hbmFnZWRPcmlnaW5SZXF1ZXN0UG9saWN5IHtcbiAgLyoqIFRoaXMgcG9saWN5IGluY2x1ZGVzIG9ubHkgdGhlIFVzZXItQWdlbnQgYW5kIFJlZmVyZXIgaGVhZGVycy4gSXQgZG9lc27igJl0IGluY2x1ZGUgYW55IHF1ZXJ5IHN0cmluZ3Mgb3IgY29va2llcy4gKi9cbiAgVVNFUl9BR0VOVF9SRUZFUkVSX0hFQURFUlMgPSBcIk1hbmFnZWQtVXNlckFnZW50UmVmZXJlckhlYWRlcnNcIixcbiAgLyoqIFRoaXMgcG9saWN5IGluY2x1ZGVzIHRoZSBoZWFkZXIgdGhhdCBlbmFibGVzIGNyb3NzLW9yaWdpbiByZXNvdXJjZSBzaGFyaW5nIChDT1JTKSByZXF1ZXN0cyB3aGVuIHRoZSBvcmlnaW4gaXMgYSBjdXN0b20gb3JpZ2luLiAqL1xuICBDT1JTX0NVU1RPTV9PUklHSU4gPSBcIk1hbmFnZWQtQ09SUy1DdXN0b21PcmlnaW5cIixcbiAgLyoqIFRoaXMgcG9saWN5IGluY2x1ZGVzIHRoZSBoZWFkZXJzIHRoYXQgZW5hYmxlIGNyb3NzLW9yaWdpbiByZXNvdXJjZSBzaGFyaW5nIChDT1JTKSByZXF1ZXN0cyB3aGVuIHRoZSBvcmlnaW4gaXMgYW4gQW1hem9uIFMzIGJ1Y2tldC4gKi9cbiAgQ09SU19TM19PUklHSU4gPSBcIk1hbmFnZWQtQ09SUy1TM09yaWdpblwiLFxuICAvKiogVGhpcyBwb2xpY3kgaW5jbHVkZXMgYWxsIHZhbHVlcyAocXVlcnkgc3RyaW5ncywgaGVhZGVycywgYW5kIGNvb2tpZXMpIGluIHRoZSB2aWV3ZXIgcmVxdWVzdC4gKi9cbiAgQUxMX1ZJRVdFUiA9IFwiTWFuYWdlZC1BbGxWaWV3ZXJcIixcbiAgLyoqIFRoaXMgcG9saWN5IGlzIGRlc2lnbmVkIGZvciB1c2Ugd2l0aCBhbiBvcmlnaW4gdGhhdCBpcyBhbiBBV1MgRWxlbWVudGFsIE1lZGlhVGFpbG9yIGVuZHBvaW50LiAqL1xuICBFTEVNRU5UQUxfTUVESUFfVEFJTE9SID0gXCJNYW5hZ2VkLUVsZW1lbnRhbC1NZWRpYVRhaWxvci1QZXJzb25hbGl6ZWRNYW5pZmVzdHNcIixcbiAgLyoqIFRoaXMgcG9saWN5IGluY2x1ZGVzIGFsbCB2YWx1ZXMgKGhlYWRlcnMsIGNvb2tpZXMsIGFuZCBxdWVyeSBzdHJpbmdzKSBpbiB0aGUgdmlld2VyIHJlcXVlc3QsIGFuZCBhbGwgQ2xvdWRGcm9udCBoZWFkZXJzIHRoYXQgd2VyZSByZWxlYXNlZCB0aHJvdWdoIEp1bmUgMjAyMiAoQ2xvdWRGcm9udCBoZWFkZXJzIHJlbGVhc2VkIGFmdGVyIEp1bmUgMjAyMiBhcmUgbm90IGluY2x1ZGVkKS4gKi9cbiAgQUxMX1ZJRVdFUl9BTkRfQ0xPVURGUk9OVF8yMDIyID0gXCJNYW5hZ2VkLUFsbFZpZXdlckFuZENsb3VkRnJvbnRIZWFkZXJzLTIwMjItMDZcIixcbiAgLyoqIFRoaXMgcG9saWN5IGluY2x1ZGVzIGFsbCB2YWx1ZXMgKHF1ZXJ5IHN0cmluZ3MsIGFuZCBjb29raWVzKSBleGNlcHQgdGhlIGhlYWRlciBpbiB0aGUgdmlld2VyIHJlcXVlc3QuICovXG4gIEFMTF9WSUVXRVJfRVhDRVBUX0hPU1RfSEVBREVSID0gXCJNYW5hZ2VkLUFsbFZpZXdlckV4Y2VwdEhvc3RIZWFkZXJcIixcbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { route53Record } from "@cdktf/provider-aws";
1
+ import { route53Record } from "@cdktn/provider-aws";
2
2
  import { IRecordSet, IDnsZone, IDistribution } from ".";
3
3
  import { IDomainName } from "../compute/domain-name";
4
4
  import { ILoadBalancerBaseV2 } from "../compute/lb-shared/base-load-balancer";
@@ -21,7 +21,7 @@ class DistributionTarget {
21
21
  }
22
22
  exports.DistributionTarget = DistributionTarget;
23
23
  _a = JSII_RTTI_SYMBOL_1;
24
- DistributionTarget[_a] = { fqn: "terraconstructs.aws.edge.DistributionTarget", version: "0.2.4" };
24
+ DistributionTarget[_a] = { fqn: "terraconstructs.aws.edge.DistributionTarget", version: "0.2.6" };
25
25
  /**
26
26
  * Use Bucket as an alias record target
27
27
  */
@@ -43,7 +43,7 @@ class BucketWebsiteTarget {
43
43
  }
44
44
  exports.BucketWebsiteTarget = BucketWebsiteTarget;
45
45
  _b = JSII_RTTI_SYMBOL_1;
46
- BucketWebsiteTarget[_b] = { fqn: "terraconstructs.aws.edge.BucketWebsiteTarget", version: "0.2.4" };
46
+ BucketWebsiteTarget[_b] = { fqn: "terraconstructs.aws.edge.BucketWebsiteTarget", version: "0.2.6" };
47
47
  /**
48
48
  * Use an ELBv2 as an alias record target
49
49
  */
@@ -65,7 +65,7 @@ class LoadBalancerTarget {
65
65
  }
66
66
  exports.LoadBalancerTarget = LoadBalancerTarget;
67
67
  _c = JSII_RTTI_SYMBOL_1;
68
- LoadBalancerTarget[_c] = { fqn: "terraconstructs.aws.edge.LoadBalancerTarget", version: "0.2.4" };
68
+ LoadBalancerTarget[_c] = { fqn: "terraconstructs.aws.edge.LoadBalancerTarget", version: "0.2.6" };
69
69
  /**
70
70
  * Defines an API Gateway domain name as the alias target.
71
71
  *
@@ -86,7 +86,7 @@ class ApiGatewayDomain {
86
86
  }
87
87
  exports.ApiGatewayDomain = ApiGatewayDomain;
88
88
  _d = JSII_RTTI_SYMBOL_1;
89
- ApiGatewayDomain[_d] = { fqn: "terraconstructs.aws.edge.ApiGatewayDomain", version: "0.2.4" };
89
+ ApiGatewayDomain[_d] = { fqn: "terraconstructs.aws.edge.ApiGatewayDomain", version: "0.2.6" };
90
90
  /**
91
91
  * Defines an API Gateway REST API as the alias target. Requires that the domain
92
92
  * name will be defined through `RestApiProps.domainName`.
@@ -104,7 +104,7 @@ class ApiGatewayTarget extends ApiGatewayDomain {
104
104
  }
105
105
  exports.ApiGatewayTarget = ApiGatewayTarget;
106
106
  _e = JSII_RTTI_SYMBOL_1;
107
- ApiGatewayTarget[_e] = { fqn: "terraconstructs.aws.edge.ApiGatewayTarget", version: "0.2.4" };
107
+ ApiGatewayTarget[_e] = { fqn: "terraconstructs.aws.edge.ApiGatewayTarget", version: "0.2.6" };
108
108
  /**
109
109
  * Defines an API Gateway V2 domain name as the alias target.
110
110
  */
@@ -127,5 +127,5 @@ class ApiGatewayv2DomainProperties {
127
127
  }
128
128
  exports.ApiGatewayv2DomainProperties = ApiGatewayv2DomainProperties;
129
129
  _f = JSII_RTTI_SYMBOL_1;
130
- ApiGatewayv2DomainProperties[_f] = { fqn: "terraconstructs.aws.edge.ApiGatewayv2DomainProperties", version: "0.2.4" };
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLWFsaWFzLXJlY29yZC10YXJnZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9lZGdlL2Rucy1hbGlhcy1yZWNvcmQtdGFyZ2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLGdGQUdpRDtBQWVqRDs7R0FFRztBQUNILE1BQWEsa0JBQWtCO0lBQzdCLFlBQTZCLFlBQTJCO1FBQTNCLGlCQUFZLEdBQVosWUFBWSxDQUFlO0lBQUcsQ0FBQztJQUVyRCxJQUFJLENBQ1QsT0FBbUIsRUFDbkIsS0FBZ0I7UUFFaEIsT0FBTztZQUNMLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVk7WUFDdEMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVTtZQUNsQyxvQkFBb0IsRUFBRSxLQUFLO1NBQzVCLENBQUM7SUFDSixDQUFDOztBQVpILGdEQWFDOzs7QUFFRDs7R0FFRztBQUNILE1BQWEsbUJBQW1CO0lBQzlCLFlBQTZCLE1BQWU7UUFBZixXQUFNLEdBQU4sTUFBTSxDQUFTO0lBQUcsQ0FBQztJQUV6QyxJQUFJLENBQ1QsT0FBbUIsRUFDbkIsS0FBZ0I7UUFFaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksS0FBSyxDQUNiLDJEQUEyRCxDQUM1RCxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDO1FBRTVDLE9BQU87WUFDTCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZO1lBQ2hDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQjtZQUNuQyxvQkFBb0IsRUFBRSxJQUFJO1NBQzNCLENBQUM7SUFDSixDQUFDOztBQW5CSCxrREFvQkM7OztBQUVEOztHQUVHO0FBQ0gsTUFBYSxrQkFBa0I7SUFDdEIsTUFBTSxDQUFDLGNBQWMsQ0FDMUIsaUNBQXlDLEVBQ3pDLG1CQUEyQjtRQUUzQixNQUFNLFFBQVEsR0FBRyxJQUFJLHlDQUFvQixDQUN2QyxpQ0FBaUMsRUFDakMsbUJBQW1CLENBQ3BCLENBQUM7UUFDRixPQUFPLElBQUksa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNELFlBQTZCLFlBQWlDO1FBQWpDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtJQUFHLENBQUM7SUFFM0QsSUFBSSxDQUNULE9BQW1CLEVBQ25CLEtBQWdCO1FBRWhCLE9BQU87WUFDTCxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQ0FBaUM7WUFDM0QsSUFBSSxFQUFFLGFBQWEsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRTtZQUMxRCxvQkFBb0IsRUFBRSxJQUFJO1NBQzNCLENBQUM7SUFDSixDQUFDOztBQXRCSCxnREF1QkM7OztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBYSxnQkFBZ0I7SUFDM0IsWUFBNkIsVUFBdUI7UUFBdkIsZUFBVSxHQUFWLFVBQVUsQ0FBYTtJQUFHLENBQUM7SUFFakQsSUFBSSxDQUNULE9BQW1CLEVBQ25CLEtBQWdCO1FBRWhCLE9BQU87WUFDTCxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQywyQkFBMkI7WUFDbkQsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMseUJBQXlCO1lBQy9DLG9CQUFvQixFQUFFLElBQUk7U0FDM0IsQ0FBQztJQUNKLENBQUM7O0FBWkgsNENBYUM7OztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsZ0JBQWdCO0lBQ3BELFlBQVksR0FBZ0I7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7O0FBUEgsNENBUUM7OztBQUVEOztHQUVHO0FBQ0gsTUFBYSw0QkFBNEI7SUFDdkM7OztPQUdHO0lBQ0gsWUFDbUIsa0JBQTBCLEVBQzFCLG9CQUE0QjtRQUQ1Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVE7UUFDMUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFRO0lBQzVDLENBQUM7SUFFRyxJQUFJLENBQ1QsT0FBbUIsRUFDbkIsS0FBZ0I7UUFFaEIsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzdCLE1BQU0sRUFBRSxJQUFJLENBQUMsb0JBQW9CO1lBQ2pDLG9CQUFvQixFQUFFLElBQUk7U0FDM0IsQ0FBQztJQUNKLENBQUM7O0FBbkJILG9FQW9CQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJvdXRlNTNSZWNvcmQgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgSVJlY29yZFNldCwgSURuc1pvbmUsIElEaXN0cmlidXRpb24gfSBmcm9tIFwiLlwiO1xuaW1wb3J0IHsgSURvbWFpbk5hbWUgfSBmcm9tIFwiLi4vY29tcHV0ZS9kb21haW4tbmFtZVwiO1xuaW1wb3J0IHtcbiAgSUxvYWRCYWxhbmNlckJhc2VWMixcbiAgSW1wb3J0ZWRMb2FkQmFsYW5jZXIsXG59IGZyb20gXCIuLi9jb21wdXRlL2xiLXNoYXJlZC9iYXNlLWxvYWQtYmFsYW5jZXJcIjtcbmltcG9ydCB7IFJlc3RBcGlCYXNlIH0gZnJvbSBcIi4uL2NvbXB1dGUvcmVzdGFwaVwiO1xuaW1wb3J0IHsgSUJ1Y2tldCB9IGZyb20gXCIuLi9zdG9yYWdlXCI7XG5cbi8qKlxuICogQ2xhc3NlcyB0aGF0IGFyZSB2YWxpZCBhbGlhcyByZWNvcmQgdGFyZ2V0cywgbGlrZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbnMgbG9hZFxuICogYmFsYW5jZXJzLCBzaG91bGQgaW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElBbGlhc1JlY29yZFRhcmdldCB7XG4gIC8qKlxuICAgKiBSZXR1cm4gaG9zdGVkIHpvbmUgSUQgYW5kIEROUyBuYW1lLCB1c2FibGUgZm9yIFJvdXRlNTMgYWxpYXMgdGFyZ2V0c1xuICAgKi9cbiAgYmluZChyZWNvcmQ6IElSZWNvcmRTZXQsIHpvbmU/OiBJRG5zWm9uZSk6IHJvdXRlNTNSZWNvcmQuUm91dGU1M1JlY29yZEFsaWFzO1xufVxuXG4vKipcbiAqIFVzZSBhIENsb3VkRnJvbnQgRGlzdHJpYnV0aW9uIGFzIGFuIGFsaWFzIHJlY29yZCB0YXJnZXRcbiAqL1xuZXhwb3J0IGNsYXNzIERpc3RyaWJ1dGlvblRhcmdldCBpbXBsZW1lbnRzIElBbGlhc1JlY29yZFRhcmdldCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGlzdHJpYnV0aW9uOiBJRGlzdHJpYnV0aW9uKSB7fVxuXG4gIHB1YmxpYyBiaW5kKFxuICAgIF9yZWNvcmQ6IElSZWNvcmRTZXQsXG4gICAgX3pvbmU/OiBJRG5zWm9uZSxcbiAgKTogcm91dGU1M1JlY29yZC5Sb3V0ZTUzUmVjb3JkQWxpYXMge1xuICAgIHJldHVybiB7XG4gICAgICB6b25lSWQ6IHRoaXMuZGlzdHJpYnV0aW9uLmhvc3RlZFpvbmVJZCxcbiAgICAgIG5hbWU6IHRoaXMuZGlzdHJpYnV0aW9uLmRvbWFpbk5hbWUsXG4gICAgICBldmFsdWF0ZVRhcmdldEhlYWx0aDogZmFsc2UsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFVzZSBCdWNrZXQgYXMgYW4gYWxpYXMgcmVjb3JkIHRhcmdldFxuICovXG5leHBvcnQgY2xhc3MgQnVja2V0V2Vic2l0ZVRhcmdldCBpbXBsZW1lbnRzIElBbGlhc1JlY29yZFRhcmdldCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYnVja2V0OiBJQnVja2V0KSB7fVxuXG4gIHB1YmxpYyBiaW5kKFxuICAgIF9yZWNvcmQ6IElSZWNvcmRTZXQsXG4gICAgX3pvbmU/OiBJRG5zWm9uZSxcbiAgKTogcm91dGU1M1JlY29yZC5Sb3V0ZTUzUmVjb3JkQWxpYXMge1xuICAgIGlmICghdGhpcy5idWNrZXQuaXNXZWJzaXRlKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJDYW5ub3QgdXNlIGEgbm9uLXdlYnNpdGUgYnVja2V0IGFzIGFuIGFsaWFzIHJlY29yZCB0YXJnZXRcIixcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuYnVja2V0LmJ1Y2tldE91dHB1dHMud2Vic2l0ZURvbWFpbk5hbWU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgem9uZUlkOiB0aGlzLmJ1Y2tldC5ob3N0ZWRab25lSWQsXG4gICAgICBuYW1lOiB0aGlzLmJ1Y2tldC53ZWJzaXRlRG9tYWluTmFtZSxcbiAgICAgIGV2YWx1YXRlVGFyZ2V0SGVhbHRoOiB0cnVlLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBVc2UgYW4gRUxCdjIgYXMgYW4gYWxpYXMgcmVjb3JkIHRhcmdldFxuICovXG5leHBvcnQgY2xhc3MgTG9hZEJhbGFuY2VyVGFyZ2V0IGltcGxlbWVudHMgSUFsaWFzUmVjb3JkVGFyZ2V0IHtcbiAgcHVibGljIHN0YXRpYyBmcm9tQXR0cmlidXRlcyhcbiAgICBsb2FkQmFsYW5jZXJDYW5vbmljYWxIb3N0ZWRab25lSWQ6IHN0cmluZyxcbiAgICBsb2FkQmFsYW5jZXJEbnNOYW1lOiBzdHJpbmcsXG4gICkge1xuICAgIGNvbnN0IGltcG9ydGVkID0gbmV3IEltcG9ydGVkTG9hZEJhbGFuY2VyKFxuICAgICAgbG9hZEJhbGFuY2VyQ2Fub25pY2FsSG9zdGVkWm9uZUlkLFxuICAgICAgbG9hZEJhbGFuY2VyRG5zTmFtZSxcbiAgICApO1xuICAgIHJldHVybiBuZXcgTG9hZEJhbGFuY2VyVGFyZ2V0KGltcG9ydGVkKTtcbiAgfVxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGxvYWRCYWxhbmNlcjogSUxvYWRCYWxhbmNlckJhc2VWMikge31cblxuICBwdWJsaWMgYmluZChcbiAgICBfcmVjb3JkOiBJUmVjb3JkU2V0LFxuICAgIF96b25lPzogSURuc1pvbmUsXG4gICk6IHJvdXRlNTNSZWNvcmQuUm91dGU1M1JlY29yZEFsaWFzIHtcbiAgICByZXR1cm4ge1xuICAgICAgem9uZUlkOiB0aGlzLmxvYWRCYWxhbmNlci5sb2FkQmFsYW5jZXJDYW5vbmljYWxIb3N0ZWRab25lSWQsXG4gICAgICBuYW1lOiBgZHVhbHN0YWNrLiR7dGhpcy5sb2FkQmFsYW5jZXIubG9hZEJhbGFuY2VyRG5zTmFtZX1gLFxuICAgICAgZXZhbHVhdGVUYXJnZXRIZWFsdGg6IHRydWUsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIERlZmluZXMgYW4gQVBJIEdhdGV3YXkgZG9tYWluIG5hbWUgYXMgdGhlIGFsaWFzIHRhcmdldC5cbiAqXG4gKiBVc2UgdGhlIGBBcGlHYXRld2F5VGFyZ2V0YCBjbGFzcyBpZiB5b3Ugd2lzaCB0byBtYXAgdGhlIGFsaWFzIHRvIGFuIFJFU1QgQVBJIHdpdGggYVxuICogZG9tYWluIG5hbWUgZGVmaW5lZCB0aHJvdWdoIHRoZSBgUmVzdEFwaVByb3BzLmRvbWFpbk5hbWVgIHByb3AuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcGlHYXRld2F5RG9tYWluIGltcGxlbWVudHMgSUFsaWFzUmVjb3JkVGFyZ2V0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkb21haW5OYW1lOiBJRG9tYWluTmFtZSkge31cblxuICBwdWJsaWMgYmluZChcbiAgICBfcmVjb3JkOiBJUmVjb3JkU2V0LFxuICAgIF96b25lPzogSURuc1pvbmUsXG4gICk6IHJvdXRlNTNSZWNvcmQuUm91dGU1M1JlY29yZEFsaWFzIHtcbiAgICByZXR1cm4ge1xuICAgICAgem9uZUlkOiB0aGlzLmRvbWFpbk5hbWUuZG9tYWluTmFtZUFsaWFzSG9zdGVkWm9uZUlkLFxuICAgICAgbmFtZTogdGhpcy5kb21haW5OYW1lLmRvbWFpbk5hbWVBbGlhc0RvbWFpbk5hbWUsXG4gICAgICBldmFsdWF0ZVRhcmdldEhlYWx0aDogdHJ1ZSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogRGVmaW5lcyBhbiBBUEkgR2F0ZXdheSBSRVNUIEFQSSBhcyB0aGUgYWxpYXMgdGFyZ2V0LiBSZXF1aXJlcyB0aGF0IHRoZSBkb21haW5cbiAqIG5hbWUgd2lsbCBiZSBkZWZpbmVkIHRocm91Z2ggYFJlc3RBcGlQcm9wcy5kb21haW5OYW1lYC5cbiAqXG4gKiBZb3UgY2FuIGRpcmVjdCB0aGUgYWxpYXMgdG8gYW55IGBhcGlnYXRld2F5LkRvbWFpbk5hbWVgIHJlc291cmNlIHRocm91Z2ggdGhlXG4gKiBgQXBpR2F0ZXdheURvbWFpbmAgY2xhc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcGlHYXRld2F5VGFyZ2V0IGV4dGVuZHMgQXBpR2F0ZXdheURvbWFpbiB7XG4gIGNvbnN0cnVjdG9yKGFwaTogUmVzdEFwaUJhc2UpIHtcbiAgICBpZiAoIWFwaS5kb21haW5OYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEFQSSBkb2VzIG5vdCBkZWZpbmUgYSBkZWZhdWx0IGRvbWFpbiBuYW1lOiAke2FwaX1gKTtcbiAgICB9XG5cbiAgICBzdXBlcihhcGkuZG9tYWluTmFtZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBEZWZpbmVzIGFuIEFQSSBHYXRld2F5IFYyIGRvbWFpbiBuYW1lIGFzIHRoZSBhbGlhcyB0YXJnZXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcGlHYXRld2F5djJEb21haW5Qcm9wZXJ0aWVzIGltcGxlbWVudHMgSUFsaWFzUmVjb3JkVGFyZ2V0IHtcbiAgLyoqXG4gICAqIEBwYXJhbSByZWdpb25hbERvbWFpbk5hbWUgdGhlIGRvbWFpbiBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVnaW9uYWwgZW5kcG9pbnQgZm9yIHRoaXMgY3VzdG9tIGRvbWFpbiBuYW1lLlxuICAgKiBAcGFyYW0gcmVnaW9uYWxIb3N0ZWRab25lSWQgdGhlIHJlZ2lvbi1zcGVjaWZpYyBBbWF6b24gUm91dGUgNTMgSG9zdGVkIFpvbmUgSUQgb2YgdGhlIHJlZ2lvbmFsIGVuZHBvaW50LlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWdpb25hbERvbWFpbk5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lvbmFsSG9zdGVkWm9uZUlkOiBzdHJpbmcsXG4gICkge31cblxuICBwdWJsaWMgYmluZChcbiAgICBfcmVjb3JkOiBJUmVjb3JkU2V0LFxuICAgIF96b25lPzogSURuc1pvbmUsXG4gICk6IHJvdXRlNTNSZWNvcmQuUm91dGU1M1JlY29yZEFsaWFzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogdGhpcy5yZWdpb25hbERvbWFpbk5hbWUsXG4gICAgICB6b25lSWQ6IHRoaXMucmVnaW9uYWxIb3N0ZWRab25lSWQsXG4gICAgICBldmFsdWF0ZVRhcmdldEhlYWx0aDogdHJ1ZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
130
+ ApiGatewayv2DomainProperties[_f] = { fqn: "terraconstructs.aws.edge.ApiGatewayv2DomainProperties", version: "0.2.6" };
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLWFsaWFzLXJlY29yZC10YXJnZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9lZGdlL2Rucy1hbGlhcy1yZWNvcmQtdGFyZ2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLGdGQUdpRDtBQWVqRDs7R0FFRztBQUNILE1BQWEsa0JBQWtCO0lBQzdCLFlBQTZCLFlBQTJCO1FBQTNCLGlCQUFZLEdBQVosWUFBWSxDQUFlO0lBQUcsQ0FBQztJQUVyRCxJQUFJLENBQ1QsT0FBbUIsRUFDbkIsS0FBZ0I7UUFFaEIsT0FBTztZQUNMLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVk7WUFDdEMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVTtZQUNsQyxvQkFBb0IsRUFBRSxLQUFLO1NBQzVCLENBQUM7SUFDSixDQUFDOztBQVpILGdEQWFDOzs7QUFFRDs7R0FFRztBQUNILE1BQWEsbUJBQW1CO0lBQzlCLFlBQTZCLE1BQWU7UUFBZixXQUFNLEdBQU4sTUFBTSxDQUFTO0lBQUcsQ0FBQztJQUV6QyxJQUFJLENBQ1QsT0FBbUIsRUFDbkIsS0FBZ0I7UUFFaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksS0FBSyxDQUNiLDJEQUEyRCxDQUM1RCxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDO1FBRTVDLE9BQU87WUFDTCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZO1lBQ2hDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQjtZQUNuQyxvQkFBb0IsRUFBRSxJQUFJO1NBQzNCLENBQUM7SUFDSixDQUFDOztBQW5CSCxrREFvQkM7OztBQUVEOztHQUVHO0FBQ0gsTUFBYSxrQkFBa0I7SUFDdEIsTUFBTSxDQUFDLGNBQWMsQ0FDMUIsaUNBQXlDLEVBQ3pDLG1CQUEyQjtRQUUzQixNQUFNLFFBQVEsR0FBRyxJQUFJLHlDQUFvQixDQUN2QyxpQ0FBaUMsRUFDakMsbUJBQW1CLENBQ3BCLENBQUM7UUFDRixPQUFPLElBQUksa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNELFlBQTZCLFlBQWlDO1FBQWpDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtJQUFHLENBQUM7SUFFM0QsSUFBSSxDQUNULE9BQW1CLEVBQ25CLEtBQWdCO1FBRWhCLE9BQU87WUFDTCxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQ0FBaUM7WUFDM0QsSUFBSSxFQUFFLGFBQWEsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRTtZQUMxRCxvQkFBb0IsRUFBRSxJQUFJO1NBQzNCLENBQUM7SUFDSixDQUFDOztBQXRCSCxnREF1QkM7OztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBYSxnQkFBZ0I7SUFDM0IsWUFBNkIsVUFBdUI7UUFBdkIsZUFBVSxHQUFWLFVBQVUsQ0FBYTtJQUFHLENBQUM7SUFFakQsSUFBSSxDQUNULE9BQW1CLEVBQ25CLEtBQWdCO1FBRWhCLE9BQU87WUFDTCxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQywyQkFBMkI7WUFDbkQsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMseUJBQXlCO1lBQy9DLG9CQUFvQixFQUFFLElBQUk7U0FDM0IsQ0FBQztJQUNKLENBQUM7O0FBWkgsNENBYUM7OztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsZ0JBQWdCO0lBQ3BELFlBQVksR0FBZ0I7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7O0FBUEgsNENBUUM7OztBQUVEOztHQUVHO0FBQ0gsTUFBYSw0QkFBNEI7SUFDdkM7OztPQUdHO0lBQ0gsWUFDbUIsa0JBQTBCLEVBQzFCLG9CQUE0QjtRQUQ1Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVE7UUFDMUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFRO0lBQzVDLENBQUM7SUFFRyxJQUFJLENBQ1QsT0FBbUIsRUFDbkIsS0FBZ0I7UUFFaEIsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzdCLE1BQU0sRUFBRSxJQUFJLENBQUMsb0JBQW9CO1lBQ2pDLG9CQUFvQixFQUFFLElBQUk7U0FDM0IsQ0FBQztJQUNKLENBQUM7O0FBbkJILG9FQW9CQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJvdXRlNTNSZWNvcmQgfSBmcm9tIFwiQGNka3RuL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgSVJlY29yZFNldCwgSURuc1pvbmUsIElEaXN0cmlidXRpb24gfSBmcm9tIFwiLlwiO1xuaW1wb3J0IHsgSURvbWFpbk5hbWUgfSBmcm9tIFwiLi4vY29tcHV0ZS9kb21haW4tbmFtZVwiO1xuaW1wb3J0IHtcbiAgSUxvYWRCYWxhbmNlckJhc2VWMixcbiAgSW1wb3J0ZWRMb2FkQmFsYW5jZXIsXG59IGZyb20gXCIuLi9jb21wdXRlL2xiLXNoYXJlZC9iYXNlLWxvYWQtYmFsYW5jZXJcIjtcbmltcG9ydCB7IFJlc3RBcGlCYXNlIH0gZnJvbSBcIi4uL2NvbXB1dGUvcmVzdGFwaVwiO1xuaW1wb3J0IHsgSUJ1Y2tldCB9IGZyb20gXCIuLi9zdG9yYWdlXCI7XG5cbi8qKlxuICogQ2xhc3NlcyB0aGF0IGFyZSB2YWxpZCBhbGlhcyByZWNvcmQgdGFyZ2V0cywgbGlrZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbnMgbG9hZFxuICogYmFsYW5jZXJzLCBzaG91bGQgaW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElBbGlhc1JlY29yZFRhcmdldCB7XG4gIC8qKlxuICAgKiBSZXR1cm4gaG9zdGVkIHpvbmUgSUQgYW5kIEROUyBuYW1lLCB1c2FibGUgZm9yIFJvdXRlNTMgYWxpYXMgdGFyZ2V0c1xuICAgKi9cbiAgYmluZChyZWNvcmQ6IElSZWNvcmRTZXQsIHpvbmU/OiBJRG5zWm9uZSk6IHJvdXRlNTNSZWNvcmQuUm91dGU1M1JlY29yZEFsaWFzO1xufVxuXG4vKipcbiAqIFVzZSBhIENsb3VkRnJvbnQgRGlzdHJpYnV0aW9uIGFzIGFuIGFsaWFzIHJlY29yZCB0YXJnZXRcbiAqL1xuZXhwb3J0IGNsYXNzIERpc3RyaWJ1dGlvblRhcmdldCBpbXBsZW1lbnRzIElBbGlhc1JlY29yZFRhcmdldCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGlzdHJpYnV0aW9uOiBJRGlzdHJpYnV0aW9uKSB7fVxuXG4gIHB1YmxpYyBiaW5kKFxuICAgIF9yZWNvcmQ6IElSZWNvcmRTZXQsXG4gICAgX3pvbmU/OiBJRG5zWm9uZSxcbiAgKTogcm91dGU1M1JlY29yZC5Sb3V0ZTUzUmVjb3JkQWxpYXMge1xuICAgIHJldHVybiB7XG4gICAgICB6b25lSWQ6IHRoaXMuZGlzdHJpYnV0aW9uLmhvc3RlZFpvbmVJZCxcbiAgICAgIG5hbWU6IHRoaXMuZGlzdHJpYnV0aW9uLmRvbWFpbk5hbWUsXG4gICAgICBldmFsdWF0ZVRhcmdldEhlYWx0aDogZmFsc2UsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFVzZSBCdWNrZXQgYXMgYW4gYWxpYXMgcmVjb3JkIHRhcmdldFxuICovXG5leHBvcnQgY2xhc3MgQnVja2V0V2Vic2l0ZVRhcmdldCBpbXBsZW1lbnRzIElBbGlhc1JlY29yZFRhcmdldCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYnVja2V0OiBJQnVja2V0KSB7fVxuXG4gIHB1YmxpYyBiaW5kKFxuICAgIF9yZWNvcmQ6IElSZWNvcmRTZXQsXG4gICAgX3pvbmU/OiBJRG5zWm9uZSxcbiAgKTogcm91dGU1M1JlY29yZC5Sb3V0ZTUzUmVjb3JkQWxpYXMge1xuICAgIGlmICghdGhpcy5idWNrZXQuaXNXZWJzaXRlKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJDYW5ub3QgdXNlIGEgbm9uLXdlYnNpdGUgYnVja2V0IGFzIGFuIGFsaWFzIHJlY29yZCB0YXJnZXRcIixcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuYnVja2V0LmJ1Y2tldE91dHB1dHMud2Vic2l0ZURvbWFpbk5hbWU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgem9uZUlkOiB0aGlzLmJ1Y2tldC5ob3N0ZWRab25lSWQsXG4gICAgICBuYW1lOiB0aGlzLmJ1Y2tldC53ZWJzaXRlRG9tYWluTmFtZSxcbiAgICAgIGV2YWx1YXRlVGFyZ2V0SGVhbHRoOiB0cnVlLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBVc2UgYW4gRUxCdjIgYXMgYW4gYWxpYXMgcmVjb3JkIHRhcmdldFxuICovXG5leHBvcnQgY2xhc3MgTG9hZEJhbGFuY2VyVGFyZ2V0IGltcGxlbWVudHMgSUFsaWFzUmVjb3JkVGFyZ2V0IHtcbiAgcHVibGljIHN0YXRpYyBmcm9tQXR0cmlidXRlcyhcbiAgICBsb2FkQmFsYW5jZXJDYW5vbmljYWxIb3N0ZWRab25lSWQ6IHN0cmluZyxcbiAgICBsb2FkQmFsYW5jZXJEbnNOYW1lOiBzdHJpbmcsXG4gICkge1xuICAgIGNvbnN0IGltcG9ydGVkID0gbmV3IEltcG9ydGVkTG9hZEJhbGFuY2VyKFxuICAgICAgbG9hZEJhbGFuY2VyQ2Fub25pY2FsSG9zdGVkWm9uZUlkLFxuICAgICAgbG9hZEJhbGFuY2VyRG5zTmFtZSxcbiAgICApO1xuICAgIHJldHVybiBuZXcgTG9hZEJhbGFuY2VyVGFyZ2V0KGltcG9ydGVkKTtcbiAgfVxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGxvYWRCYWxhbmNlcjogSUxvYWRCYWxhbmNlckJhc2VWMikge31cblxuICBwdWJsaWMgYmluZChcbiAgICBfcmVjb3JkOiBJUmVjb3JkU2V0LFxuICAgIF96b25lPzogSURuc1pvbmUsXG4gICk6IHJvdXRlNTNSZWNvcmQuUm91dGU1M1JlY29yZEFsaWFzIHtcbiAgICByZXR1cm4ge1xuICAgICAgem9uZUlkOiB0aGlzLmxvYWRCYWxhbmNlci5sb2FkQmFsYW5jZXJDYW5vbmljYWxIb3N0ZWRab25lSWQsXG4gICAgICBuYW1lOiBgZHVhbHN0YWNrLiR7dGhpcy5sb2FkQmFsYW5jZXIubG9hZEJhbGFuY2VyRG5zTmFtZX1gLFxuICAgICAgZXZhbHVhdGVUYXJnZXRIZWFsdGg6IHRydWUsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIERlZmluZXMgYW4gQVBJIEdhdGV3YXkgZG9tYWluIG5hbWUgYXMgdGhlIGFsaWFzIHRhcmdldC5cbiAqXG4gKiBVc2UgdGhlIGBBcGlHYXRld2F5VGFyZ2V0YCBjbGFzcyBpZiB5b3Ugd2lzaCB0byBtYXAgdGhlIGFsaWFzIHRvIGFuIFJFU1QgQVBJIHdpdGggYVxuICogZG9tYWluIG5hbWUgZGVmaW5lZCB0aHJvdWdoIHRoZSBgUmVzdEFwaVByb3BzLmRvbWFpbk5hbWVgIHByb3AuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcGlHYXRld2F5RG9tYWluIGltcGxlbWVudHMgSUFsaWFzUmVjb3JkVGFyZ2V0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkb21haW5OYW1lOiBJRG9tYWluTmFtZSkge31cblxuICBwdWJsaWMgYmluZChcbiAgICBfcmVjb3JkOiBJUmVjb3JkU2V0LFxuICAgIF96b25lPzogSURuc1pvbmUsXG4gICk6IHJvdXRlNTNSZWNvcmQuUm91dGU1M1JlY29yZEFsaWFzIHtcbiAgICByZXR1cm4ge1xuICAgICAgem9uZUlkOiB0aGlzLmRvbWFpbk5hbWUuZG9tYWluTmFtZUFsaWFzSG9zdGVkWm9uZUlkLFxuICAgICAgbmFtZTogdGhpcy5kb21haW5OYW1lLmRvbWFpbk5hbWVBbGlhc0RvbWFpbk5hbWUsXG4gICAgICBldmFsdWF0ZVRhcmdldEhlYWx0aDogdHJ1ZSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogRGVmaW5lcyBhbiBBUEkgR2F0ZXdheSBSRVNUIEFQSSBhcyB0aGUgYWxpYXMgdGFyZ2V0LiBSZXF1aXJlcyB0aGF0IHRoZSBkb21haW5cbiAqIG5hbWUgd2lsbCBiZSBkZWZpbmVkIHRocm91Z2ggYFJlc3RBcGlQcm9wcy5kb21haW5OYW1lYC5cbiAqXG4gKiBZb3UgY2FuIGRpcmVjdCB0aGUgYWxpYXMgdG8gYW55IGBhcGlnYXRld2F5LkRvbWFpbk5hbWVgIHJlc291cmNlIHRocm91Z2ggdGhlXG4gKiBgQXBpR2F0ZXdheURvbWFpbmAgY2xhc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcGlHYXRld2F5VGFyZ2V0IGV4dGVuZHMgQXBpR2F0ZXdheURvbWFpbiB7XG4gIGNvbnN0cnVjdG9yKGFwaTogUmVzdEFwaUJhc2UpIHtcbiAgICBpZiAoIWFwaS5kb21haW5OYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEFQSSBkb2VzIG5vdCBkZWZpbmUgYSBkZWZhdWx0IGRvbWFpbiBuYW1lOiAke2FwaX1gKTtcbiAgICB9XG5cbiAgICBzdXBlcihhcGkuZG9tYWluTmFtZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBEZWZpbmVzIGFuIEFQSSBHYXRld2F5IFYyIGRvbWFpbiBuYW1lIGFzIHRoZSBhbGlhcyB0YXJnZXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcGlHYXRld2F5djJEb21haW5Qcm9wZXJ0aWVzIGltcGxlbWVudHMgSUFsaWFzUmVjb3JkVGFyZ2V0IHtcbiAgLyoqXG4gICAqIEBwYXJhbSByZWdpb25hbERvbWFpbk5hbWUgdGhlIGRvbWFpbiBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVnaW9uYWwgZW5kcG9pbnQgZm9yIHRoaXMgY3VzdG9tIGRvbWFpbiBuYW1lLlxuICAgKiBAcGFyYW0gcmVnaW9uYWxIb3N0ZWRab25lSWQgdGhlIHJlZ2lvbi1zcGVjaWZpYyBBbWF6b24gUm91dGUgNTMgSG9zdGVkIFpvbmUgSUQgb2YgdGhlIHJlZ2lvbmFsIGVuZHBvaW50LlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWdpb25hbERvbWFpbk5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lvbmFsSG9zdGVkWm9uZUlkOiBzdHJpbmcsXG4gICkge31cblxuICBwdWJsaWMgYmluZChcbiAgICBfcmVjb3JkOiBJUmVjb3JkU2V0LFxuICAgIF96b25lPzogSURuc1pvbmUsXG4gICk6IHJvdXRlNTNSZWNvcmQuUm91dGU1M1JlY29yZEFsaWFzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogdGhpcy5yZWdpb25hbERvbWFpbk5hbWUsXG4gICAgICB6b25lSWQ6IHRoaXMucmVnaW9uYWxIb3N0ZWRab25lSWQsXG4gICAgICBldmFsdWF0ZVRhcmdldEhlYWx0aDogdHJ1ZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { route53Record } from "@cdktf/provider-aws";
1
+ import { route53Record } from "@cdktn/provider-aws";
2
2
  import { Construct } from "constructs";
3
3
  import { IDnsZone, IAliasRecordTarget } from ".";
4
4
  import { IAwsConstruct, AwsConstructProps, AwsConstructBase } from "../";