terraconstructs 0.0.20 → 0.0.22

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 (213) hide show
  1. package/.jsii +5 -5
  2. package/CLAUDE.md +160 -0
  3. package/go.mod +2 -2
  4. package/lib/aws/arn.js +1 -1
  5. package/lib/aws/aws-construct.js +1 -1
  6. package/lib/aws/aws-stack.js +1 -1
  7. package/lib/aws/aws-tags.js +2 -2
  8. package/lib/aws/cloudwatch/actions/ec2.js +1 -1
  9. package/lib/aws/cloudwatch/actions/lambda.js +1 -1
  10. package/lib/aws/cloudwatch/alarm-base.js +1 -1
  11. package/lib/aws/cloudwatch/alarm-rule.js +1 -1
  12. package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
  13. package/lib/aws/cloudwatch/alarm.js +1 -1
  14. package/lib/aws/cloudwatch/composite-alarm.js +1 -1
  15. package/lib/aws/cloudwatch/dashboard.js +1 -1
  16. package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
  17. package/lib/aws/cloudwatch/graph.js +8 -8
  18. package/lib/aws/cloudwatch/layout.js +3 -3
  19. package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
  20. package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
  21. package/lib/aws/cloudwatch/log-group.js +1 -1
  22. package/lib/aws/cloudwatch/log-query.js +1 -1
  23. package/lib/aws/cloudwatch/log-stream.js +1 -1
  24. package/lib/aws/cloudwatch/metric-filter.js +1 -1
  25. package/lib/aws/cloudwatch/metric.js +2 -2
  26. package/lib/aws/cloudwatch/pattern.js +3 -3
  27. package/lib/aws/cloudwatch/policy.js +1 -1
  28. package/lib/aws/cloudwatch/query-definition.js +2 -2
  29. package/lib/aws/cloudwatch/stats.js +1 -1
  30. package/lib/aws/cloudwatch/subscription-filter.js +1 -1
  31. package/lib/aws/cloudwatch/text.js +1 -1
  32. package/lib/aws/cloudwatch/variable.js +3 -3
  33. package/lib/aws/cloudwatch/widget.js +1 -1
  34. package/lib/aws/compute/activity.js +1 -1
  35. package/lib/aws/compute/alb/application-listener-action.js +1 -1
  36. package/lib/aws/compute/alb/application-listener-certificate.js +1 -1
  37. package/lib/aws/compute/alb/application-listener-rule.js +1 -1
  38. package/lib/aws/compute/alb/application-listener.js +1 -1
  39. package/lib/aws/compute/alb/application-load-balancer.js +1 -1
  40. package/lib/aws/compute/alb/application-target-group.js +1 -1
  41. package/lib/aws/compute/alb/conditions.js +1 -1
  42. package/lib/aws/compute/alb/trust-store-revocation.js +1 -1
  43. package/lib/aws/compute/alb/trust-store.js +1 -1
  44. package/lib/aws/compute/architecture.js +1 -1
  45. package/lib/aws/compute/aspects/require-imdsv2-aspect.js +2 -2
  46. package/lib/aws/compute/bastion-host.js +1 -1
  47. package/lib/aws/compute/chain.js +1 -1
  48. package/lib/aws/compute/client-vpn-authorization-rule.js +1 -1
  49. package/lib/aws/compute/client-vpn-endpoint.js +2 -2
  50. package/lib/aws/compute/client-vpn-route.js +2 -2
  51. package/lib/aws/compute/condition.js +1 -1
  52. package/lib/aws/compute/connections.js +1 -1
  53. package/lib/aws/compute/event-invoke-config.js +1 -1
  54. package/lib/aws/compute/event-source-filter.js +2 -2
  55. package/lib/aws/compute/event-source-mapping.js +1 -1
  56. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
  57. package/lib/aws/compute/event-sources/s3.js +1 -1
  58. package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
  59. package/lib/aws/compute/event-sources/sqs.js +1 -1
  60. package/lib/aws/compute/fields.js +4 -4
  61. package/lib/aws/compute/function-alias.js +1 -1
  62. package/lib/aws/compute/function-base.js +2 -2
  63. package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
  64. package/lib/aws/compute/function-destinations/function.js +1 -1
  65. package/lib/aws/compute/function-destinations/sqs.js +1 -1
  66. package/lib/aws/compute/function-nodejs.js +1 -1
  67. package/lib/aws/compute/function-url.js +1 -1
  68. package/lib/aws/compute/function.js +1 -1
  69. package/lib/aws/compute/instance-types.js +1 -1
  70. package/lib/aws/compute/instance.js +4 -20
  71. package/lib/aws/compute/ip-addresses.js +2 -2
  72. package/lib/aws/compute/ipam.js +1 -1
  73. package/lib/aws/compute/key-pair.js +1 -1
  74. package/lib/aws/compute/launch-template.js +2 -2
  75. package/lib/aws/compute/lb-shared/base-listener.js +1 -1
  76. package/lib/aws/compute/lb-shared/base-load-balancer.js +2 -2
  77. package/lib/aws/compute/lb-shared/base-target-group.js +1 -1
  78. package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
  79. package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
  80. package/lib/aws/compute/lb-targets/alb-target.js +3 -3
  81. package/lib/aws/compute/lb-targets/instance-target.js +2 -2
  82. package/lib/aws/compute/lb-targets/ip-target.js +1 -1
  83. package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
  84. package/lib/aws/compute/load-balancer.js +3 -3
  85. package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
  86. package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
  87. package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
  88. package/lib/aws/compute/machine-image/common.js +1 -1
  89. package/lib/aws/compute/machine-image/machine-image.js +8 -8
  90. package/lib/aws/compute/nat.js +5 -5
  91. package/lib/aws/compute/network-acl-types.js +2 -2
  92. package/lib/aws/compute/network-acl.js +3 -3
  93. package/lib/aws/compute/nlb/network-listener-action.js +1 -1
  94. package/lib/aws/compute/nlb/network-listener.js +1 -1
  95. package/lib/aws/compute/nlb/network-load-balancer.js +1 -1
  96. package/lib/aws/compute/nlb/network-target-group.js +1 -1
  97. package/lib/aws/compute/peer.js +1 -1
  98. package/lib/aws/compute/placement-group.js +1 -1
  99. package/lib/aws/compute/port.js +1 -1
  100. package/lib/aws/compute/prefix-list.js +1 -1
  101. package/lib/aws/compute/private/ebs-util.js +22 -26
  102. package/lib/aws/compute/route.js +8 -8
  103. package/lib/aws/compute/security-group.js +1 -1
  104. package/lib/aws/compute/state-graph.js +1 -1
  105. package/lib/aws/compute/state-machine-fragment.js +1 -1
  106. package/lib/aws/compute/state-machine.js +4 -4
  107. package/lib/aws/compute/states/choice.js +1 -1
  108. package/lib/aws/compute/states/custom-state.js +1 -1
  109. package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
  110. package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
  111. package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
  112. package/lib/aws/compute/states/distributed-map.js +1 -1
  113. package/lib/aws/compute/states/fail.js +1 -1
  114. package/lib/aws/compute/states/map-base.js +1 -1
  115. package/lib/aws/compute/states/map.js +1 -1
  116. package/lib/aws/compute/states/parallel.js +1 -1
  117. package/lib/aws/compute/states/pass.js +2 -2
  118. package/lib/aws/compute/states/state.js +1 -1
  119. package/lib/aws/compute/states/succeed.js +1 -1
  120. package/lib/aws/compute/states/task-base.js +2 -2
  121. package/lib/aws/compute/states/task.js +1 -1
  122. package/lib/aws/compute/states/wait.js +2 -2
  123. package/lib/aws/compute/subnet-v2.js +2 -2
  124. package/lib/aws/compute/subnet.js +1 -1
  125. package/lib/aws/compute/task-credentials.js +1 -1
  126. package/lib/aws/compute/task-input.js +1 -1
  127. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
  128. package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
  129. package/lib/aws/compute/tasks/http/invoke.js +1 -1
  130. package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
  131. package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
  132. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
  133. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
  134. package/lib/aws/compute/types.js +1 -1
  135. package/lib/aws/compute/user-data.js +3 -3
  136. package/lib/aws/compute/volume.js +2 -2
  137. package/lib/aws/compute/vpc-endpoint-service.js +1 -1
  138. package/lib/aws/compute/vpc-endpoint.js +6 -6
  139. package/lib/aws/compute/vpc-flow-logs.js +4 -4
  140. package/lib/aws/compute/vpc-v2-base.js +1 -1
  141. package/lib/aws/compute/vpc-v2.js +2 -2
  142. package/lib/aws/compute/vpc.js +4 -4
  143. package/lib/aws/compute/vpn.js +3 -3
  144. package/lib/aws/edge/certificate.js +1 -1
  145. package/lib/aws/edge/distribution.js +3 -3
  146. package/lib/aws/edge/dns-alias-record-targets.js +3 -3
  147. package/lib/aws/edge/dns-record.js +13 -13
  148. package/lib/aws/edge/dns-zone.js +1 -1
  149. package/lib/aws/edge/function.js +2 -2
  150. package/lib/aws/edge/key-value-store.js +4 -4
  151. package/lib/aws/edge/origin.js +3 -3
  152. package/lib/aws/edge/response-headers-policy.js +1 -1
  153. package/lib/aws/encryption/alias.js +1 -1
  154. package/lib/aws/encryption/key.js +1 -1
  155. package/lib/aws/encryption/via-service-principal.js +1 -1
  156. package/lib/aws/iam/grant.js +2 -2
  157. package/lib/aws/iam/group.js +1 -1
  158. package/lib/aws/iam/instance-profile.js +1 -1
  159. package/lib/aws/iam/managed-policy.js +1 -1
  160. package/lib/aws/iam/oidc-provider.js +1 -1
  161. package/lib/aws/iam/policy-document.js +1 -1
  162. package/lib/aws/iam/policy-statement.js +1 -1
  163. package/lib/aws/iam/policy.js +1 -1
  164. package/lib/aws/iam/principals.js +20 -20
  165. package/lib/aws/iam/role.js +1 -1
  166. package/lib/aws/iam/saml-provider.js +2 -2
  167. package/lib/aws/iam/unknown-principal.js +1 -1
  168. package/lib/aws/iam/user.js +1 -1
  169. package/lib/aws/network/simple-ipv4-vpc.js +1 -1
  170. package/lib/aws/network/subnet-group.js +3 -3
  171. package/lib/aws/network/subnet.js +4 -4
  172. package/lib/aws/notify/archive.js +1 -1
  173. package/lib/aws/notify/connection.js +3 -3
  174. package/lib/aws/notify/event-bus.js +3 -3
  175. package/lib/aws/notify/event-pattern.js +1 -1
  176. package/lib/aws/notify/input.js +2 -2
  177. package/lib/aws/notify/kinesis-stream.js +1 -1
  178. package/lib/aws/notify/notification-rule.js +1 -1
  179. package/lib/aws/notify/policy.js +1 -1
  180. package/lib/aws/notify/queue-policy.js +1 -1
  181. package/lib/aws/notify/queue.js +1 -1
  182. package/lib/aws/notify/resource-policy.js +1 -1
  183. package/lib/aws/notify/rule.js +1 -1
  184. package/lib/aws/notify/schedule.js +1 -1
  185. package/lib/aws/notify/subscription-filter.js +1 -1
  186. package/lib/aws/notify/subscription.js +4 -4
  187. package/lib/aws/notify/subscriptions/email.js +1 -1
  188. package/lib/aws/notify/subscriptions/lambda.js +1 -1
  189. package/lib/aws/notify/subscriptions/sms.js +1 -1
  190. package/lib/aws/notify/subscriptions/sqs.js +1 -1
  191. package/lib/aws/notify/subscriptions/url.js +1 -1
  192. package/lib/aws/notify/targets/event-bus.js +1 -1
  193. package/lib/aws/notify/targets/function.js +1 -1
  194. package/lib/aws/notify/targets/log-group.js +2 -2
  195. package/lib/aws/notify/targets/sqs.js +1 -1
  196. package/lib/aws/notify/targets/state-machine.js +1 -1
  197. package/lib/aws/notify/topic-base.js +1 -1
  198. package/lib/aws/notify/topic.js +1 -1
  199. package/lib/aws/storage/bucket-notifications.js +1 -1
  200. package/lib/aws/storage/bucket-policy.js +1 -1
  201. package/lib/aws/storage/bucket-source.js +1 -1
  202. package/lib/aws/storage/bucket.js +2 -2
  203. package/lib/aws/storage/notification-targets/function.js +1 -1
  204. package/lib/aws/storage/notification-targets/queue.js +1 -1
  205. package/lib/aws/storage/origin-access-identity.js +1 -1
  206. package/lib/aws/storage/parameter.js +2 -2
  207. package/lib/construct-base.js +2 -2
  208. package/lib/duration.js +1 -1
  209. package/lib/expiration.js +1 -1
  210. package/lib/size.js +1 -1
  211. package/lib/stack-base.js +1 -1
  212. package/lib/terra-func.js +1 -1
  213. package/package.json +1 -1
@@ -85,7 +85,7 @@ class NatProvider {
85
85
  }
86
86
  exports.NatProvider = NatProvider;
87
87
  _a = JSII_RTTI_SYMBOL_1;
88
- NatProvider[_a] = { fqn: "terraconstructs.aws.compute.NatProvider", version: "0.0.20" };
88
+ NatProvider[_a] = { fqn: "terraconstructs.aws.compute.NatProvider", version: "0.0.22" };
89
89
  /**
90
90
  * Provider for NAT Gateways
91
91
  */
@@ -131,7 +131,7 @@ class NatGatewayProvider extends NatProvider {
131
131
  }
132
132
  exports.NatGatewayProvider = NatGatewayProvider;
133
133
  _b = JSII_RTTI_SYMBOL_1;
134
- NatGatewayProvider[_b] = { fqn: "terraconstructs.aws.compute.NatGatewayProvider", version: "0.0.20" };
134
+ NatGatewayProvider[_b] = { fqn: "terraconstructs.aws.compute.NatGatewayProvider", version: "0.0.22" };
135
135
  /**
136
136
  * NAT provider which uses NAT Instances
137
137
  *
@@ -245,7 +245,7 @@ class NatInstanceProvider extends NatProvider {
245
245
  }
246
246
  exports.NatInstanceProvider = NatInstanceProvider;
247
247
  _c = JSII_RTTI_SYMBOL_1;
248
- NatInstanceProvider[_c] = { fqn: "terraconstructs.aws.compute.NatInstanceProvider", version: "0.0.20" };
248
+ NatInstanceProvider[_c] = { fqn: "terraconstructs.aws.compute.NatInstanceProvider", version: "0.0.22" };
249
249
  /**
250
250
  * Preferential set
251
251
  *
@@ -401,7 +401,7 @@ class NatInstanceProviderV2 extends NatProvider {
401
401
  }
402
402
  exports.NatInstanceProviderV2 = NatInstanceProviderV2;
403
403
  _d = JSII_RTTI_SYMBOL_1;
404
- NatInstanceProviderV2[_d] = { fqn: "terraconstructs.aws.compute.NatInstanceProviderV2", version: "0.0.20" };
404
+ NatInstanceProviderV2[_d] = { fqn: "terraconstructs.aws.compute.NatInstanceProviderV2", version: "0.0.22" };
405
405
  /**
406
406
  * Amazon Linux 2023 NAT instance user data commands
407
407
  * Enable iptables on the instance, enable persistent IP forwarding, configure NAT on instance
@@ -432,7 +432,7 @@ class NatInstanceImage extends machine_image_1.LookupMachineImage {
432
432
  }
433
433
  exports.NatInstanceImage = NatInstanceImage;
434
434
  _e = JSII_RTTI_SYMBOL_1;
435
- NatInstanceImage[_e] = { fqn: "terraconstructs.aws.compute.NatInstanceImage", version: "0.0.20" };
435
+ NatInstanceImage[_e] = { fqn: "terraconstructs.aws.compute.NatInstanceImage", version: "0.0.22" };
436
436
  function isOutboundAllowed(direction) {
437
437
  return (direction === NatTrafficDirection.INBOUND_AND_OUTBOUND ||
438
438
  direction === NatTrafficDirection.OUTBOUND_ONLY);
@@ -39,7 +39,7 @@ class AclCidr {
39
39
  }
40
40
  exports.AclCidr = AclCidr;
41
41
  _a = JSII_RTTI_SYMBOL_1;
42
- AclCidr[_a] = { fqn: "terraconstructs.aws.compute.AclCidr", version: "0.0.20" };
42
+ AclCidr[_a] = { fqn: "terraconstructs.aws.compute.AclCidr", version: "0.0.22" };
43
43
  class AclCidrImpl extends AclCidr {
44
44
  constructor(config) {
45
45
  super();
@@ -134,7 +134,7 @@ class AclTraffic {
134
134
  }
135
135
  exports.AclTraffic = AclTraffic;
136
136
  _b = JSII_RTTI_SYMBOL_1;
137
- AclTraffic[_b] = { fqn: "terraconstructs.aws.compute.AclTraffic", version: "0.0.20" };
137
+ AclTraffic[_b] = { fqn: "terraconstructs.aws.compute.AclTraffic", version: "0.0.22" };
138
138
  class AclTrafficImpl extends AclTraffic {
139
139
  constructor(config) {
140
140
  super();
@@ -83,7 +83,7 @@ class NetworkAcl extends NetworkAclBase {
83
83
  }
84
84
  exports.NetworkAcl = NetworkAcl;
85
85
  _a = JSII_RTTI_SYMBOL_1;
86
- NetworkAcl[_a] = { fqn: "terraconstructs.aws.compute.NetworkAcl", version: "0.0.20" };
86
+ NetworkAcl[_a] = { fqn: "terraconstructs.aws.compute.NetworkAcl", version: "0.0.22" };
87
87
  /**
88
88
  * What action to apply to traffic matching the ACL
89
89
  *
@@ -159,7 +159,7 @@ class NetworkAclEntry extends NetworkAclEntryBase {
159
159
  }
160
160
  exports.NetworkAclEntry = NetworkAclEntry;
161
161
  _b = JSII_RTTI_SYMBOL_1;
162
- NetworkAclEntry[_b] = { fqn: "terraconstructs.aws.compute.NetworkAclEntry", version: "0.0.20" };
162
+ NetworkAclEntry[_b] = { fqn: "terraconstructs.aws.compute.NetworkAclEntry", version: "0.0.22" };
163
163
  /**
164
164
  * Associate a network ACL with a subnet
165
165
  *
@@ -203,5 +203,5 @@ class SubnetNetworkAclAssociation extends SubnetNetworkAclAssociationBase {
203
203
  }
204
204
  exports.SubnetNetworkAclAssociation = SubnetNetworkAclAssociation;
205
205
  _c = JSII_RTTI_SYMBOL_1;
206
- SubnetNetworkAclAssociation[_c] = { fqn: "terraconstructs.aws.compute.SubnetNetworkAclAssociation", version: "0.0.20" };
206
+ SubnetNetworkAclAssociation[_c] = { fqn: "terraconstructs.aws.compute.SubnetNetworkAclAssociation", version: "0.0.22" };
207
207
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay1hY2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvbmV0d29yay1hY2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrRkFBK0Y7QUFFL0Ysc0RBSTZCO0FBSTdCLG9EQUkwQjtBQUMxQiw4Q0FBOEM7QUFDOUMsMENBQW1DO0FBQ25DLHdDQUF3QztBQUV4Qzs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFXLE1BQU0sQ0FBQztBQTRCaEM7Ozs7R0FJRztBQUNILE1BQWUsY0FBZSxTQUFRLGdDQUFnQjtJQUNwRCxJQUFXLGlCQUFpQjtRQUMxQixPQUFPO1lBQ0wsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ2hDLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7SUFHRDs7T0FFRztJQUNJLFFBQVEsQ0FDYixFQUFVLEVBQ1YsT0FBcUM7UUFFckMsT0FBTyxJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ25DLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWlDRDs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxVQUFXLFNBQVEsY0FBYztJQUM1Qzs7T0FFRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDNUIsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLFlBQW9CO1FBRXBCLE1BQU0sTUFBTyxTQUFRLGNBQWM7WUFBbkM7O2dCQUNrQixpQkFBWSxHQUFHLFlBQVksQ0FBQztZQUM5QyxDQUFDO1NBQUE7UUFFRCxPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBbUJELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7UUFDOUQsS0FBSyxDQUFDLEtBQUssRUFB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UUFFRixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyx3Q0FBd0MsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUN0RSxDQUFDOztBQXpESCxrRUEwREMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNzUuMS9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtZWMyL2xpYi9uZXR3b3JrLWFjbC50c1xuXG5pbXBvcnQge1xuICBuZXR3b3JrQWNsIGFzIHRmTmV0d29ya0FjbCxcbiAgbmV0d29ya0FjbFJ1bGUgYXMgdGZOZXR3b3JrQWNsUnVsZSxcbiAgbmV0d29ya0FjbEFzc29jaWF0aW9uIGFzIHRmTmV0d29ya0FjbEFzc29jaWF0aW9uLFxufSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEFjbENpZHIsIEFjbFRyYWZmaWMgfSBmcm9tIFwiLi9uZXR3b3JrLWFjbC10eXBlc1wiO1xuaW1wb3J0IHsgSVN1Ym5ldCwgSVZwYywgU3VibmV0U2VsZWN0aW9uIH0gZnJvbSBcIi4vdnBjXCI7XG5pbXBvcnQge1xuICBJQXdzQ29uc3RydWN0LFxuICBBd3NDb25zdHJ1Y3RCYXNlLFxuICBBd3NDb25zdHJ1Y3RQcm9wcyxcbn0gZnJvbSBcIi4uL2F3cy1jb25zdHJ1Y3RcIjtcbi8vIFRPRE86IFVzZSBUYWdNYW5hZ2VyIGFuZCB0YWctYXNwZWN0IGluc3RlYWRcbmltcG9ydCB7IFRhZ3MgfSBmcm9tIFwiLi4vYXdzLXRhZ3NcIjtcbi8vIGltcG9ydCB7IFRhZ3MgfSBmcm9tIFwiLi4vdGFnLWFzcGVjdFwiO1xuXG4vKipcbiAqIE5hbWUgdGFnIGNvbnN0YW50XG4gKi9cbmNvbnN0IE5BTUVfVEFHOiBzdHJpbmcgPSBcIk5hbWVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrQWNsT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIE5ldHdvcmtBQ0xcbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcmtBY2xJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgTmV0d29ya0FjbFxuICpcbiAqXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU5ldHdvcmtBY2wgZXh0ZW5kcyBJQXdzQ29uc3RydWN0IHtcbiAgcmVhZG9ubHkgbmV0d29ya0FjbE91dHB1dHM6IE5ldHdvcmtBY2xPdXRwdXRzO1xuICAvKipcbiAgICogSUQgZm9yIHRoZSBjdXJyZW50IE5ldHdvcmsgQUNMXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcmtBY2xJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgZW50cnkgdG8gdGhlIEFDTFxuICAgKi9cbiAgYWRkRW50cnkoaWQ6IHN0cmluZywgb3B0aW9uczogQ29tbW9uTmV0d29ya0FjbEVudHJ5T3B0aW9ucyk6IE5ldHdvcmtBY2xFbnRyeTtcbn1cblxuLyoqXG4gKiBBIE5ldHdvcmtBY2xCYXNlIHRoYXQgaXMgbm90IGNyZWF0ZWQgaW4gdGhpcyB0ZW1wbGF0ZVxuICpcbiAqXG4gKi9cbmFic3RyYWN0IGNsYXNzIE5ldHdvcmtBY2xCYXNlIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElOZXR3b3JrQWNsIHtcbiAgcHVibGljIGdldCBuZXR3b3JrQWNsT3V0cHV0cygpOiBOZXR3b3JrQWNsT3V0cHV0cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5ldHdvcmtBY2xJZDogdGhpcy5uZXR3b3JrQWNsSWQsXG4gICAgfTtcbiAgfVxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMubmV0d29ya0FjbE91dHB1dHM7XG4gIH1cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IG5ldHdvcmtBY2xJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgZW50cnkgdG8gdGhlIEFDTFxuICAgKi9cbiAgcHVibGljIGFkZEVudHJ5KFxuICAgIGlkOiBzdHJpbmcsXG4gICAgb3B0aW9uczogQ29tbW9uTmV0d29ya0FjbEVudHJ5T3B0aW9ucyxcbiAgKTogTmV0d29ya0FjbEVudHJ5IHtcbiAgICByZXR1cm4gbmV3IE5ldHdvcmtBY2xFbnRyeSh0aGlzLCBpZCwge1xuICAgICAgbmV0d29ya0FjbDogdGhpcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGNyZWF0ZSBOZXR3b3JrQWNsXG4gKlxuICpcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrQWNsUHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIE5ldHdvcmtBY2wuXG4gICAqXG4gICAqIFNpbmNlIHRoZSBOZXR3b3JrQWNsIHJlc291cmNlIGRvZXNuJ3Qgc3VwcG9ydCBwcm92aWRpbmcgYSBwaHlzaWNhbCBuYW1lLCB0aGUgdmFsdWUgcHJvdmlkZWQgaGVyZSB3aWxsIGJlIHJlY29yZGVkIGluIHRoZSBgTmFtZWAgdGFnLlxuICAgKlxuICAgKiBAZGVmYXVsdCBDREsgZ2VuZXJhdGVkIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcmtBY2xOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIGluIHdoaWNoIHRvIGNyZWF0ZSB0aGUgTmV0d29ya0FDTC5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogSVZwYztcblxuICAvKipcbiAgICogU3VibmV0cyBpbiB0aGUgZ2l2ZW4gVlBDIHRvIGFzc29jaWF0ZSB0aGUgQUNMIHdpdGhcbiAgICpcbiAgICogTW9yZSBzdWJuZXRzIGNhbiBhbHdheXMgYmUgYWRkZWQgbGF0ZXIgYnkgY2FsbGluZ1xuICAgKiBgYXNzb2NpYXRlV2l0aFN1Ym5ldHMoKWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gc3VibmV0cyBhc3NvY2lhdGVkXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRTZWxlY3Rpb24/OiBTdWJuZXRTZWxlY3Rpb247XG59XG5cbi8qKlxuICogRGVmaW5lIGEgbmV3IGN1c3RvbSBuZXR3b3JrIEFDTFxuICpcbiAqIEJ5IGRlZmF1bHQsIHdpbGwgZGVueSBhbGwgaW5ib3VuZCBhbmQgb3V0Ym91bmQgdHJhZmZpYyB1bmxlc3MgZW50cmllcyBhcmVcbiAqIGFkZGVkIGV4cGxpY2l0bHkgYWxsb3dpbmcgaXQuXG4gKlxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIE5ldHdvcmtBY2wgZXh0ZW5kcyBOZXR3b3JrQWNsQmFzZSB7XG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgTmV0d29ya0FjbCBpbnRvIHRoaXMgYXBwLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tTmV0d29ya0FjbElkKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBuZXR3b3JrQWNsSWQ6IHN0cmluZyxcbiAgKTogSU5ldHdvcmtBY2wge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIE5ldHdvcmtBY2xCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBuZXR3b3JrQWNsSWQgPSBuZXR3b3JrQWNsSWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIE5ldHdvcmtBQ0xcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5ldHdvcmtBY2xJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIElEIGZvciB0aGlzIE5ldHdvcmtBQ0xcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5ldHdvcmtBY2xWcGNJZDogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbmV0d29ya0FjbDogdGZOZXR3b3JrQWNsLk5ldHdvcmtBY2w7XG4gIHByaXZhdGUgcmVhZG9ubHkgdnBjOiBJVnBjO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOZXR3b3JrQWNsUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy52cGMgPSBwcm9wcy52cGM7XG5cbiAgICBUYWdzLm9mKHRoaXMpLmFkZChOQU1FX1RBRywgcHJvcHMubmV0d29ya0FjbE5hbWUgfHwgdGhpcy5ub2RlLnBhdGgpO1xuXG4gICAgdGhpcy5uZXR3b3JrQWNsID0gbmV3IHRmTmV0d29ya0FjbC5OZXR3b3JrQWNsKHRoaXMsIFwiUmVzb3VyY2VcIiwge1xuICAgICAgdnBjSWQ6IHByb3BzLnZwYy52cGNJZCxcbiAgICB9KTtcblxuICAgIHRoaXMubmV0d29ya0FjbElkID0gdGhpcy5uZXR3b3JrQWNsLmlkO1xuICAgIHRoaXMubmV0d29ya0FjbFZwY0lkID0gdGhpcy5uZXR3b3JrQWNsLnZwY0lkO1xuXG4gICAgaWYgKHByb3BzLnN1Ym5ldFNlbGVjdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmFzc29jaWF0ZVdpdGhTdWJuZXQoXCJEZWZhdWx0QXNzb2NpYXRpb25cIiwgcHJvcHMuc3VibmV0U2VsZWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXNzb2NpYXRlIHRoZSBBQ0wgd2l0aCBhIGdpdmVuIHNldCBvZiBzdWJuZXRzXG4gICAqL1xuICBwdWJsaWMgYXNzb2NpYXRlV2l0aFN1Ym5ldChpZDogc3RyaW5nLCBzZWxlY3Rpb246IFN1Ym5ldFNlbGVjdGlvbikge1xuICAgIGNvbnN0IHN1Ym5ldHMgPSB0aGlzLnZwYy5zZWxlY3RTdWJuZXRzKHNlbGVjdGlvbik7XG4gICAgZm9yIChjb25zdCBzdWJuZXQgb2Ygc3VibmV0cy5zdWJuZXRzKSB7XG4gICAgICBzdWJuZXQuYXNzb2NpYXRlTmV0d29ya0FjbChpZCwgdGhpcyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogV2hhdCBhY3Rpb24gdG8gYXBwbHkgdG8gdHJhZmZpYyBtYXRjaGluZyB0aGUgQUNMXG4gKlxuICpcbiAqL1xuZXhwb3J0IGVudW0gQWN0aW9uIHtcbiAgLyoqXG4gICAqIEFsbG93IHRoZSB0cmFmZmljXG4gICAqL1xuICBBTExPVyA9IFwiYWxsb3dcIixcblxuICAvKipcbiAgICogRGVueSB0aGUgdHJhZmZpY1xuICAgKi9cbiAgREVOWSA9IFwiZGVueVwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtBY2xFbnRyeU91dHB1dHMge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBOZXR3b3JrQUNMXG4gICAqL1xuICByZWFkb25seSBuZXR3b3JrQWNsSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIE5ldHdvcmtBY2xFbnRyeVxuICpcbiAqXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU5ldHdvcmtBY2xFbnRyeSBleHRlbmRzIElBd3NDb25zdHJ1Y3Qge1xuICByZWFkb25seSBuZXR3b3JrQWNsRW50cnlPdXRwdXRzOiBOZXR3b3JrQWNsRW50cnlPdXRwdXRzO1xuICAvKipcbiAgICogVGhlIG5ldHdvcmsgQUNMLlxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya0FjbDogSU5ldHdvcmtBY2w7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgTmV0d29ya0FjbEVudHJpZXNcbiAqXG4gKlxuICovXG5hYnN0cmFjdCBjbGFzcyBOZXR3b3JrQWNsRW50cnlCYXNlXG4gIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZVxuICBpbXBsZW1lbnRzIElOZXR3b3JrQWNsRW50cnlcbntcbiAgcHVibGljIGdldCBuZXR3b3JrQWNsRW50cnlPdXRwdXRzKCk6IE5ldHdvcmtBY2xFbnRyeU91dHB1dHMge1xuICAgIHJldHVybiB7XG4gICAgICBuZXR3b3JrQWNsSWQ6IHRoaXMubmV0d29ya0FjbC5uZXR3b3JrQWNsSWQsXG4gICAgfTtcbiAgfVxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMubmV0d29ya0FjbEVudHJ5T3V0cHV0cztcbiAgfVxuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgbmV0d29ya0FjbDogSU5ldHdvcmtBY2w7XG59XG5cbi8qKlxuICogRGlyZWN0aW9uIG9mIHRyYWZmaWMgdGhlIEFjbEVudHJ5IGFwcGxpZXMgdG9cbiAqXG4gKlxuICovXG5leHBvcnQgZW51bSBUcmFmZmljRGlyZWN0aW9uIHtcbiAgLyoqXG4gICAqIFRyYWZmaWMgbGVhdmluZyB0aGUgc3VibmV0XG4gICAqL1xuICBFR1JFU1MsXG5cbiAgLyoqXG4gICAqIFRyYWZmaWMgZW50ZXJpbmcgdGhlIHN1Ym5ldFxuICAgKi9cbiAgSU5HUkVTUyxcbn1cblxuLyoqXG4gKiBCYXNpYyBOZXR3b3JrQUNMIGVudHJ5IHByb3BzXG4gKlxuICpcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25OZXR3b3JrQWNsRW50cnlPcHRpb25zIHtcbiAgLy8gLyoqXG4gIC8vICAqIFRoZSBuYW1lIG9mIHRoZSBOZXR3b3JrQWNsRW50cnkuXG4gIC8vICAqXG4gIC8vICAqIEl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byB1c2UgYW4gZXhwbGljaXQgZ3JvdXAgbmFtZS5cbiAgLy8gICpcbiAgLy8gICogQGRlZmF1bHQgSWYgeW91IGRvbid0IHNwZWNpZnkgYSBOZXR3b3JrQWNsTmFtZSwgQVdTIENsb3VkRm9ybWF0aW9uIGdlbmVyYXRlcyBhXG4gIC8vICAqIHVuaXF1ZSBwaHlzaWNhbCBJRCBhbmQgdXNlcyB0aGF0IElEIGZvciB0aGUgZ3JvdXAgbmFtZS5cbiAgLy8gICovXG4gIC8vIHJlYWRvbmx5IG5ldHdvcmtBY2xFbnRyeU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBDSURSIHJhbmdlIHRvIGFsbG93IG9yIGRlbnkuXG4gICAqL1xuICByZWFkb25seSBjaWRyOiBBY2xDaWRyO1xuXG4gIC8qKlxuICAgKiBXaGF0IGtpbmQgb2YgdHJhZmZpYyB0aGlzIEFDTCBydWxlIGFwcGxpZXMgdG9cbiAgICovXG4gIHJlYWRvbmx5IHRyYWZmaWM6IEFjbFRyYWZmaWM7XG5cbiAgLyoqXG4gICAqIFRyYWZmaWMgZGlyZWN0aW9uLCB3aXRoIHJlc3BlY3QgdG8gdGhlIHN1Ym5ldCwgdGhpcyBydWxlIGFwcGxpZXMgdG9cbiAgICpcbiAgICogQGRlZmF1bHQgVHJhZmZpY0RpcmVjdGlvbi5JTkdSRVNTXG4gICAqL1xuICByZWFkb25seSBkaXJlY3Rpb24/OiBUcmFmZmljRGlyZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IG9yIGRlbnkgdHJhZmZpYyB0aGF0IG1hdGNoZXMgdGhlIHJ1bGU7IHZhbGlkIHZhbHVlcyBhcmUgXCJhbGxvd1wiIG9yIFwiZGVueVwiLlxuICAgKlxuICAgKiBBbnkgdHJhZmZpYyB0aGF0IGlzIG5vdCBleHBsaWNpdGx5IGFsbG93ZWQgaXMgYXV0b21hdGljYWxseSBkZW5pZWQgaW4gYSBjdXN0b21cbiAgICogQUNMLCBhbGwgdHJhZmZpYyBpcyBhdXRvbWF0aWNhbGx5IGFsbG93ZWQgaW4gYSBkZWZhdWx0IEFDTC5cbiAgICpcbiAgICogQGRlZmF1bHQgQUxMT1dcbiAgICovXG4gIHJlYWRvbmx5IHJ1bGVBY3Rpb24/OiBBY3Rpb247XG5cbiAgLyoqXG4gICAqIFJ1bGUgbnVtYmVyIHRvIGFzc2lnbiB0byB0aGUgZW50cnksIHN1Y2ggYXMgMTAwLiBBQ0wgZW50cmllcyBhcmUgcHJvY2Vzc2VkIGluIGFzY2VuZGluZyBvcmRlciBieSBydWxlIG51bWJlci5cbiAgICogRW50cmllcyBjYW4ndCB1c2UgdGhlIHNhbWUgcnVsZSBudW1iZXIgdW5sZXNzIG9uZSBpcyBhbiBlZ3Jlc3MgcnVsZSBhbmQgdGhlIG90aGVyIGlzIGFuIGluZ3Jlc3MgcnVsZS5cbiAgICovXG4gIHJlYWRvbmx5IHJ1bGVOdW1iZXI6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGNyZWF0ZSBOZXR3b3JrQWNsRW50cnlcbiAqXG4gKlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtBY2xFbnRyeVByb3BzXG4gIGV4dGVuZHMgQ29tbW9uTmV0d29ya0FjbEVudHJ5T3B0aW9ucyxcbiAgICBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmV0d29yayBBQ0wgdGhpcyBlbnRyeSBhcHBsaWVzIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya0FjbDogSU5ldHdvcmtBY2w7XG59XG5cbi8qKlxuICogRGVmaW5lIGFuIGVudHJ5IGluIGEgTmV0d29yayBBQ0wgdGFibGVcbiAqXG4gKlxuICovXG5leHBvcnQgY2xhc3MgTmV0d29ya0FjbEVudHJ5IGV4dGVuZHMgTmV0d29ya0FjbEVudHJ5QmFzZSB7XG4gIHB1YmxpYyByZWFkb25seSBuZXR3b3JrQWNsOiBJTmV0d29ya0FjbDtcbiAgcHVibGljIHJlc291cmNlOiB0Zk5ldHdvcmtBY2xSdWxlLk5ldHdvcmtBY2xSdWxlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOZXR3b3JrQWNsRW50cnlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIC8vIGNvbnN0IG5ldHdvcmtBY2xFbnRyeU5hbWUgPVxuICAgIC8vICAgcHJvcHMubmV0d29ya0FjbEVudHJ5TmFtZSB8fFxuICAgIC8vICAgdGhpcy5zdGFjay51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge1xuICAgIC8vICAgICBwcmVmaXg6IHRoaXMuZ3JpZFVVSUQsXG4gICAgLy8gICB9KTtcblxuICAgIHRoaXMubmV0d29ya0FjbCA9IHByb3BzLm5ldHdvcmtBY2w7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IHRmTmV0d29ya0FjbFJ1bGUuTmV0d29ya0FjbFJ1bGUodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICBuZXR3b3JrQWNsSWQ6IHRoaXMubmV0d29ya0FjbC5uZXR3b3JrQWNsSWQsXG4gICAgICBydWxlTnVtYmVyOiBwcm9wcy5ydWxlTnVtYmVyLFxuICAgICAgcnVsZUFjdGlvbjogcHJvcHMucnVsZUFjdGlvbiA/PyBBY3Rpb24uQUxMT1csXG4gICAgICBlZ3Jlc3M6XG4gICAgICAgIHByb3BzLmRpcmVjdGlvbiAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyBwcm9wcy5kaXJlY3Rpb24gPT09IFRyYWZmaWNEaXJlY3Rpb24uRUdSRVNTXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAuLi5wcm9wcy50cmFmZmljLnRvVGZUcmFmZmljQ29uZmlnKCksXG4gICAgICAuLi5wcm9wcy5jaWRyLnRvQ2lkckNvbmZpZygpLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIFN1Ym5ldE5ldHdvcmtBY2xBc3NvY2lhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uQXNzb2NpYXRpb25JZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uXG4gKlxuICpcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uIGV4dGVuZHMgSUF3c0NvbnN0cnVjdCB7XG4gIHJlYWRvbmx5IHN1Ym5ldE5ldHdvcmtBY2xBc3NvY2lhdGlvbk91dHB1dHM6IFN1Ym5ldE5ldHdvcmtBY2xBc3NvY2lhdGlvbk91dHB1dHM7XG4gIC8qKlxuICAgKiBJRCBmb3IgdGhlIGN1cnJlbnQgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldE5ldHdvcmtBY2xBc3NvY2lhdGlvbkFzc29jaWF0aW9uSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGNyZWF0ZSBhIFN1Ym5ldE5ldHdvcmtBY2xBc3NvY2lhdGlvblxuICpcbiAqXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uUHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8vIC8qKlxuICAvLyAgKiBUaGUgbmFtZSBvZiB0aGUgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uLlxuICAvLyAgKlxuICAvLyAgKiBJdCBpcyBub3QgcmVjb21tZW5kZWQgdG8gdXNlIGFuIGV4cGxpY2l0IG5hbWUuXG4gIC8vICAqXG4gIC8vICAqIEBkZWZhdWx0IElmIHlvdSBkb24ndCBzcGVjaWZ5IGEgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uTmFtZSwgQVdTIENsb3VkRm9ybWF0aW9uIGdlbmVyYXRlcyBhXG4gIC8vICAqIHVuaXF1ZSBwaHlzaWNhbCBJRCBhbmQgdXNlcyB0aGF0IElEIGZvciB0aGUgZ3JvdXAgbmFtZS5cbiAgLy8gICovXG4gIC8vIHJlYWRvbmx5IHN1Ym5ldE5ldHdvcmtBY2xBc3NvY2lhdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBOZXR3b3JrIEFDTCB0aGlzIGFzc29jaWF0aW9uIGlzIGRlZmluZWQgZm9yXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcmtBY2w6IElOZXR3b3JrQWNsO1xuXG4gIC8qKlxuICAgKiBJRCBvZiB0aGUgU3VibmV0XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldDogSVN1Ym5ldDtcbn1cblxuLyoqXG4gKiBBc3NvY2lhdGUgYSBuZXR3b3JrIEFDTCB3aXRoIGEgc3VibmV0XG4gKlxuICpcbiAqL1xuYWJzdHJhY3QgY2xhc3MgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uQmFzZVxuICBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2VcbiAgaW1wbGVtZW50cyBJU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uXG57XG4gIHB1YmxpYyBnZXQgc3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uT3V0cHV0cygpOiBTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb25PdXRwdXRzIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uQXNzb2NpYXRpb25JZDpcbiAgICAgICAgdGhpcy5zdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb25Bc3NvY2lhdGlvbklkLFxuICAgIH07XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLnN1Ym5ldE5ldHdvcmtBY2xBc3NvY2lhdGlvbk91dHB1dHM7XG4gIH1cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHN1Ym5ldE5ldHdvcmtBY2xBc3NvY2lhdGlvbkFzc29jaWF0aW9uSWQ6IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb24gZXh0ZW5kcyBTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb25CYXNlIHtcbiAgcHVibGljIHN0YXRpYyBmcm9tU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uQXNzb2NpYXRpb25JZChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgc3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uQXNzb2NpYXRpb25JZDogc3RyaW5nLFxuICApOiBJU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uIHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb25CYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBzdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb25Bc3NvY2lhdGlvbklkID1cbiAgICAgICAgc3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uQXNzb2NpYXRpb25JZDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG4gIC8qKlxuICAgKiBJRCBmb3IgdGhlIGN1cnJlbnQgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb25Bc3NvY2lhdGlvbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElEIGZvciB0aGUgY3VycmVudCBOZXR3b3JrIEFDTFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbmV0d29ya0FjbDogSU5ldHdvcmtBY2w7XG5cbiAgLyoqXG4gICAqIElEIG9mIHRoZSBTdWJuZXRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN1Ym5ldDogSVN1Ym5ldDtcblxuICBwcml2YXRlIGFzc29jaWF0aW9uOiB0Zk5ldHdvcmtBY2xBc3NvY2lhdGlvbi5OZXR3b3JrQWNsQXNzb2NpYXRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb25Qcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgLy8gY29uc3Qgc3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uTmFtZSA9XG4gICAgLy8gICBwcm9wcy5zdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb25OYW1lIHx8XG4gICAgLy8gICB0aGlzLnN0YWNrLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgLy8gICAgIHByZWZpeDogdGhpcy5ncmlkVVVJRCxcbiAgICAvLyAgIH0pO1xuXG4gICAgdGhpcy5hc3NvY2lhdGlvbiA9IG5ldyB0Zk5ldHdvcmtBY2xBc3NvY2lhdGlvbi5OZXR3b3JrQWNsQXNzb2NpYXRpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJSZXNvdXJjZVwiLFxuICAgICAge1xuICAgICAgICBuZXR3b3JrQWNsSWQ6IHByb3BzLm5ldHdvcmtBY2wubmV0d29ya0FjbElkLFxuICAgICAgICBzdWJuZXRJZDogcHJvcHMuc3VibmV0LnN1Ym5ldElkLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy5uZXR3b3JrQWNsID0gcHJvcHMubmV0d29ya0FjbDtcbiAgICB0aGlzLnN1Ym5ldCA9IHByb3BzLnN1Ym5ldDtcbiAgICB0aGlzLnN1Ym5ldE5ldHdvcmtBY2xBc3NvY2lhdGlvbkFzc29jaWF0aW9uSWQgPSB0aGlzLmFzc29jaWF0aW9uLmlkO1xuICB9XG59XG4iXX0=
@@ -128,7 +128,7 @@ class NetworkListenerAction {
128
128
  }
129
129
  exports.NetworkListenerAction = NetworkListenerAction;
130
130
  _a = JSII_RTTI_SYMBOL_1;
131
- NetworkListenerAction[_a] = { fqn: "terraconstructs.aws.compute.NetworkListenerAction", version: "0.0.20" };
131
+ NetworkListenerAction[_a] = { fqn: "terraconstructs.aws.compute.NetworkListenerAction", version: "0.0.22" };
132
132
  /**
133
133
  * Listener Action that calls "registerListener" on TargetGroups
134
134
  */
@@ -213,5 +213,5 @@ class NetworkListener extends base_listener_1.BaseListener {
213
213
  }
214
214
  exports.NetworkListener = NetworkListener;
215
215
  _a = JSII_RTTI_SYMBOL_1;
216
- NetworkListener[_a] = { fqn: "terraconstructs.aws.compute.NetworkListener", version: "0.0.20" };
216
+ NetworkListener[_a] = { fqn: "terraconstructs.aws.compute.NetworkListener", version: "0.0.22" };
217
217
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay1saXN0ZW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9ubGIvbmV0d29yay1saXN0ZW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDJIQUEySDtBQUUzSCxpQ0FBb0M7QUFFcEMsdUVBQWtFO0FBQ2xFLGlGQUE0RTtBQUU1RSxpRUFJZ0M7QUFDaEMsZ0RBQTZDO0FBQzdDLHVEQUF1RDtBQUN2RCw4REFJb0M7QUFFcEMsOENBQXVFO0FBTXZFLDRDQUE0RDtBQTRHNUQ7Ozs7R0FJRztBQUNILE1BQWEsZUFBZ0IsU0FBUSw0QkFBWTtJQUMvQyxnQ0FBZ0M7SUFDaEMsTUFBTTtJQUNOLGlDQUFpQztJQUNqQyxNQUFNO0lBQ04sNEJBQTRCO0lBQzVCLHNCQUFzQjtJQUN0QixnQkFBZ0I7SUFDaEIsMkNBQTJDO0lBQzNDLHdCQUF3QjtJQUN4QixvRUFBb0U7SUFDcEUsb0NBQW9DO0lBQ3BDLHlEQUF5RDtJQUV6RCwwQ0FBMEM7SUFDMUMsMkJBQTJCO0lBQzNCLCtEQUErRDtJQUMvRCxpQkFBaUI7SUFDakIsMkJBQTJCO0lBQzNCLCtEQUErRDtJQUMvRCxpQkFBaUI7SUFDakIsK0JBQStCO0lBQy9CLG1FQUFtRTtJQUNuRSxpQkFBaUI7SUFDakIsMkJBQTJCO0lBQzNCLCtEQUErRDtJQUMvRCxpQkFBaUI7SUFDakIsUUFBUTtJQUNSLE1BQU07SUFFTiw4REFBOEQ7SUFDOUQsNEJBQTRCO0lBQzVCLDBDQUEwQztJQUMxQyxrREFBa0Q7SUFDbEQsUUFBUTtJQUVSLDBFQUEwRTtJQUMxRSw4Q0FBOEM7SUFDOUMsTUFBTTtJQUVOLG9DQUFvQztJQUNwQyxJQUFJO0lBRUo7O09BRUc7SUFDSSxNQUFNLENBQUMsc0JBQXNCLENBQ2xDLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixrQkFBMEI7UUFFMUIsTUFBTSxNQUFPLFNBQVEsZ0NBQWdCO1lBQXJDOztnQkFDUyxnQkFBVyxH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UUFDSixDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSx5Q0FBa0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRTtZQUN2RCxtQkFBbUIsRUFBRSxLQUFLLENBQUMsbUJBQW1CO1lBQzlDLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVE7WUFDekMsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlO1lBQ3RDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7WUFDeEMsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlO1lBQ3RDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHO1NBQzNCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWhDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCLENBQUMsTUFBNkI7UUFDcEQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7O0FBcFJILDBDQXFSQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE3NS4xL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyL2xpYi9ubGIvbmV0d29yay1saXN0ZW5lci50c1xuXG5pbXBvcnQgeyBMYXp5LCBUb2tlbiB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IE5ldHdvcmtMaXN0ZW5lckFjdGlvbiB9IGZyb20gXCIuL25ldHdvcmstbGlzdGVuZXItYWN0aW9uXCI7XG5pbXBvcnQgeyBOZXR3b3JrTGlzdGVuZXJDZXJ0aWZpY2F0ZSB9IGZyb20gXCIuL25ldHdvcmstbGlzdGVuZXItY2VydGlmaWNhdGVcIjtcbmltcG9ydCB7IElOZXR3b3JrTG9hZEJhbGFuY2VyIH0gZnJvbSBcIi4vbmV0d29yay1sb2FkLWJhbGFuY2VyXCI7XG5pbXBvcnQge1xuICBJTmV0d29ya0xvYWRCYWxhbmNlclRhcmdldCxcbiAgSU5ldHdvcmtUYXJnZXRHcm91cCxcbiAgTmV0d29ya1RhcmdldEdyb3VwLFxufSBmcm9tIFwiLi9uZXR3b3JrLXRhcmdldC1ncm91cFwiO1xuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tIFwiLi4vLi4vLi4vZHVyYXRpb25cIjtcbmltcG9ydCB7IEF3c0NvbnN0cnVjdEJhc2UgfSBmcm9tIFwiLi4vLi4vYXdzLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHtcbiAgQmFzZUxpc3RlbmVyLFxuICBCYXNlTGlzdGVuZXJMb29rdXBPcHRpb25zLFxuICBJTGlzdGVuZXIsXG59IGZyb20gXCIuLi9sYi1zaGFyZWQvYmFzZS1saXN0ZW5lclwiO1xuaW1wb3J0IHsgSGVhbHRoQ2hlY2sgfSBmcm9tIFwiLi4vbGItc2hhcmVkL2Jhc2UtdGFyZ2V0LWdyb3VwXCI7XG5pbXBvcnQgeyBBbHBuUG9saWN5LCBMYlByb3RvY29sLCBTc2xQb2xpY3kgfSBmcm9tIFwiLi4vbGItc2hhcmVkL2VudW1zXCI7XG4vLyBpbXBvcnQge1xuLy8gICBMb2FkQmFsYW5jZXJUeXBlLFxuLy8gICBMb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sLFxuLy8gfSBmcm9tIFwiLi4vbGItc2hhcmVkL2dyaWQtbG9va3VwLXR5cGVzXCI7XG5pbXBvcnQgeyBJTGlzdGVuZXJDZXJ0aWZpY2F0ZSB9IGZyb20gXCIuLi9sYi1zaGFyZWQvbGlzdGVuZXItY2VydGlmaWNhdGVcIjtcbmltcG9ydCB7IHZhbGlkYXRlTmV0d29ya1Byb3RvY29sIH0gZnJvbSBcIi4uL2xiLXNoYXJlZC91dGlsXCI7XG5cbi8qKlxuICogQmFzaWMgcHJvcGVydGllcyBmb3IgYSBOZXR3b3JrIExpc3RlbmVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZU5ldHdvcmtMaXN0ZW5lclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBwb3J0IG9uIHdoaWNoIHRoZSBsaXN0ZW5lciBsaXN0ZW5zIGZvciByZXF1ZXN0cy5cbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogRGVmYXVsdCB0YXJnZXQgZ3JvdXBzIHRvIGxvYWQgYmFsYW5jZSB0b1xuICAgKlxuICAgKiBBbGwgdGFyZ2V0IGdyb3VwcyB3aWxsIGJlIGxvYWQgYmFsYW5jZWQgdG8gd2l0aCBlcXVhbCB3ZWlnaHQgYW5kIHdpdGhvdXRcbiAgICogc3RpY2tpbmVzcy4gRm9yIGEgbW9yZSBjb21wbGV4IGNvbmZpZ3VyYXRpb24gdGhhbiB0aGF0LCB1c2VcbiAgICogZWl0aGVyIGBkZWZhdWx0QWN0aW9uYCBvciBgYWRkQWN0aW9uKClgLlxuICAgKlxuICAgKiBDYW5ub3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggYGRlZmF1bHRBY3Rpb25gLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmUuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0VGFyZ2V0R3JvdXBzPzogSU5ldHdvcmtUYXJnZXRHcm91cFtdO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGFjdGlvbiB0byB0YWtlIGZvciByZXF1ZXN0cyB0byB0aGlzIGxpc3RlbmVyXG4gICAqXG4gICAqIFRoaXMgYWxsb3dzIGZ1bGwgY29udHJvbCBvZiB0aGUgZGVmYXVsdCBBY3Rpb24gb2YgdGhlIGxvYWQgYmFsYW5jZXIsXG4gICAqIGluY2x1ZGluZyB3ZWlnaHRlZCBmb3J3YXJkaW5nLiBTZWUgdGhlIGBOZXR3b3JrTGlzdGVuZXJBY3Rpb25gIGNsYXNzIGZvclxuICAgKiBhbGwgb3B0aW9ucy5cbiAgICpcbiAgICogQ2Fubm90IGJlIHNwZWNpZmllZCB0b2dldGhlciB3aXRoIGBkZWZhdWx0VGFyZ2V0R3JvdXBzYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdEFjdGlvbj86IE5ldHdvcmtMaXN0ZW5lckFjdGlvbjtcblxuICAvKipcbiAgICogUHJvdG9jb2wgZm9yIGxpc3RlbmVyLCBleHBlY3RzIFRDUCwgVExTLCBVRFAsIG9yIFRDUF9VRFAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVExTIGlmIGNlcnRpZmljYXRlcyBhcmUgcHJvdmlkZWQuIFRDUCBvdGhlcndpc2UuXG4gICAqL1xuICByZWFkb25seSBwcm90b2NvbD86IExiUHJvdG9jb2w7XG5cbiAgLyoqXG4gICAqIENlcnRpZmljYXRlIGxpc3Qgb2YgQUNNIGNlcnQgQVJOcy4gWW91IG11c3QgcHJvdmlkZSBleGFjdGx5IG9uZSBjZXJ0aWZpY2F0ZSBpZiB0aGUgbGlzdGVuZXIgcHJvdG9jb2wgaXMgSFRUUFMgb3IgVExTLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGNlcnRpZmljYXRlcy5cbiAgICovXG4gIHJlYWRvbmx5IGNlcnRpZmljYXRlcz86IElMaXN0ZW5lckNlcnRpZmljYXRlW107XG5cbiAgLyoqXG4gICAqIFNTTCBQb2xpY3lcbiAgICpcbiAgICogQGRlZmF1bHQgLSBDdXJyZW50IHByZWRlZmluZWQgc2VjdXJpdHkgcG9saWN5LlxuICAgKi9cbiAgcmVhZG9ubHkgc3NsUG9saWN5PzogU3NsUG9saWN5O1xuXG4gIC8qKlxuICAgKiBBcHBsaWNhdGlvbi1MYXllciBQcm90b2NvbCBOZWdvdGlhdGlvbiAoQUxQTikgaXMgYSBUTFMgZXh0ZW5zaW9uIHRoYXQgaXMgc2VudCBvbiB0aGUgaW5pdGlhbCBUTFMgaGFuZHNoYWtlIGhlbGxvIG1lc3NhZ2VzLlxuICAgKiBBTFBOIGVuYWJsZXMgdGhlIGFwcGxpY2F0aW9uIGxheWVyIHRvIG5lZ290aWF0ZSB3aGljaCBwcm90b2NvbHMgc2hvdWxkIGJlIHVzZWQgb3ZlciBhIHNlY3VyZSBjb25uZWN0aW9uLCBzdWNoIGFzIEhUVFAvMSBhbmQgSFRUUC8yLlxuICAgKlxuICAgKiBDYW4gb25seSBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBQcm90b2NvbCBUTFMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxwblBvbGljeT86IEFscG5Qb2xpY3k7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2FkIGJhbGFuY2VyIFRDUCBpZGxlIHRpbWVvdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IER1cmF0aW9uLnNlY29uZHMoMzUwKVxuICAgKi9cbiAgcmVhZG9ubHkgdGNwSWRsZVRpbWVvdXQ/OiBEdXJhdGlvbjtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhZGRpbmcgYSBjZXJ0aWZpY2F0ZSB0byBhIGxpc3RlbmVyXG4gKlxuICogVGhpcyBpbnRlcmZhY2UgZXhpc3RzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgSUxpc3RlbmVyQ2VydGlmaWNhdGUgaW5zdGVhZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElOZXR3b3JrTGlzdGVuZXJDZXJ0aWZpY2F0ZVByb3BzXG4gIGV4dGVuZHMgSUxpc3RlbmVyQ2VydGlmaWNhdGUge31cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIE5ldHdvcmsgTGlzdGVuZXIgYXR0YWNoZWQgdG8gYSBMb2FkIEJhbGFuY2VyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya0xpc3RlbmVyUHJvcHMgZXh0ZW5kcyBCYXNlTmV0d29ya0xpc3RlbmVyUHJvcHMge1xuICAvKipcbiAgICogVGhlIGxvYWQgYmFsYW5jZXIgdG8gYXR0YWNoIHRoaXMgbGlzdGVuZXIgdG9cbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlcjogSU5ldHdvcmtMb2FkQmFsYW5jZXI7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgbG9va2luZyB1cCBhIG5ldHdvcmsgbGlzdGVuZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya0xpc3RlbmVyTG9va3VwT3B0aW9uc1xuICBleHRlbmRzIEJhc2VMaXN0ZW5lckxvb2t1cE9wdGlvbnMge1xuICAvKipcbiAgICogUHJvdG9jb2wgb2YgdGhlIGxpc3RlbmVyIHBvcnRcbiAgICogQGRlZmF1bHQgLSBsaXN0ZW5lciBpcyBub3QgZmlsdGVyZWQgYnkgcHJvdG9jb2xcbiAgICovXG4gIHJlYWRvbmx5IGxpc3RlbmVyUHJvdG9jb2w/OiBMYlByb3RvY29sO1xufVxuXG4vKipcbiAqIERlZmluZSBhIE5ldHdvcmsgTGlzdGVuZXJcbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpFbGFzdGljTG9hZEJhbGFuY2luZ1YyOjpMaXN0ZW5lclxuICovXG5leHBvcnQgY2xhc3MgTmV0d29ya0xpc3RlbmVyIGV4dGVuZHMgQmFzZUxpc3RlbmVyIGltcGxlbWVudHMgSU5ldHdvcmtMaXN0ZW5lciB7XG4gIC8vIFRPRE86IEFkZCBHcmlkIExvb2t1cCBzdXBwb3J0XG4gIC8vIC8qKlxuICAvLyAgKiBMb29rcyB1cCBhIG5ldHdvcmsgbGlzdGVuZXJcbiAgLy8gICovXG4gIC8vIHB1YmxpYyBzdGF0aWMgZnJvbUxvb2t1cChcbiAgLy8gICBzY29wZTogQ29uc3RydWN0LFxuICAvLyAgIGlkOiBzdHJpbmcsXG4gIC8vICAgb3B0aW9uczogTmV0d29ya0xpc3RlbmVyTG9va3VwT3B0aW9ucyxcbiAgLy8gKTogSU5ldHdvcmtMaXN0ZW5lciB7XG4gIC8vICAgbGV0IGxpc3RlbmVyUHJvdG9jb2w6IExvYWRCYWxhbmNlckxpc3RlbmVyUHJvdG9jb2wgfCB1bmRlZmluZWQ7XG4gIC8vICAgaWYgKG9wdGlvbnMubGlzdGVuZXJQcm90b2NvbCkge1xuICAvLyAgICAgdmFsaWRhdGVOZXR3b3JrUHJvdG9jb2wob3B0aW9ucy5saXN0ZW5lclByb3RvY29sKTtcblxuICAvLyAgICAgc3dpdGNoIChvcHRpb25zLmxpc3RlbmVyUHJvdG9jb2wpIHtcbiAgLy8gICAgICAgY2FzZSBQcm90b2NvbC5UQ1A6XG4gIC8vICAgICAgICAgbGlzdGVuZXJQcm90b2NvbCA9IExvYWRCYWxhbmNlckxpc3RlbmVyUHJvdG9jb2wuVENQO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICBjYXNlIFByb3RvY29sLlVEUDpcbiAgLy8gICAgICAgICBsaXN0ZW5lclByb3RvY29sID0gTG9hZEJhbGFuY2VyTGlzdGVuZXJQcm90b2NvbC5VRFA7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIGNhc2UgUHJvdG9jb2wuVENQX1VEUDpcbiAgLy8gICAgICAgICBsaXN0ZW5lclByb3RvY29sID0gTG9hZEJhbGFuY2VyTGlzdGVuZXJQcm90b2NvbC5UQ1BfVURQO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICBjYXNlIFByb3RvY29sLlRMUzpcbiAgLy8gICAgICAgICBsaXN0ZW5lclByb3RvY29sID0gTG9hZEJhbGFuY2VyTGlzdGVuZXJQcm90b2NvbC5UTFM7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICB9XG4gIC8vICAgfVxuXG4gIC8vICAgY29uc3QgcHJvcHMgPSBCYXNlTGlzdGVuZXIuX3F1ZXJ5Q29udGV4dFByb3ZpZGVyKHNjb3BlLCB7XG4gIC8vICAgICB1c2VyT3B0aW9uczogb3B0aW9ucyxcbiAgLy8gICAgIGxpc3RlbmVyUHJvdG9jb2w6IGxpc3RlbmVyUHJvdG9jb2wsXG4gIC8vICAgICBsb2FkQmFsYW5jZXJUeXBlOiBMb2FkQmFsYW5jZXJUeXBlLk5FVFdPUkssXG4gIC8vICAgfSk7XG5cbiAgLy8gICBjbGFzcyBMb29rZWRVcCBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJTmV0d29ya0xpc3RlbmVyIHtcbiAgLy8gICAgIHB1YmxpYyBsaXN0ZW5lckFybiA9IHByb3BzLmxpc3RlbmVyQXJuO1xuICAvLyAgIH1cblxuICAvLyAgIHJldHVybiBuZXcgTG9va2VkVXAoc2NvcGUsIGlkKTtcbiAgLy8gfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgbGlzdGVuZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbU5ldHdvcmtMaXN0ZW5lckFybihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgbmV0d29ya0xpc3RlbmVyQXJuOiBzdHJpbmcsXG4gICk6IElOZXR3b3JrTGlzdGVuZXIge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJTmV0d29ya0xpc3RlbmVyIHtcbiAgICAgIHB1YmxpYyBsaXN0ZW5lckFybiA9IG5ldHdvcmtMaXN0ZW5lckFybjtcbiAgICAgIHB1YmxpYyBsaXN0ZW5lck91dHB1dHMgPSB7XG4gICAgICAgIGxpc3RlbmVyQXJuOiBuZXR3b3JrTGlzdGVuZXJBcm4sXG4gICAgICB9O1xuICAgICAgcHVibGljIG91dHB1dHMgPSB7XG4gICAgICAgIGxpc3RlbmVyQXJuOiBuZXR3b3JrTGlzdGVuZXJBcm4sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGxvYWQgYmFsYW5jZXIgdGhpcyBsaXN0ZW5lciBpcyBhdHRhY2hlZCB0b1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGxvYWRCYWxhbmNlcjogSU5ldHdvcmtMb2FkQmFsYW5jZXI7XG5cbiAgLyoqXG4gICAqIEFSTnMgb2YgY2VydGlmaWNhdGVzIGFkZGVkIHRvIHRoaXMgbGlzdGVuZXJcbiAgICpcbiAgICogVGhlIGZpcnN0IGNlcnRpZmljYXRlIGlzIHVzZWQgYXMgdGhlIGRlZmF1bHQgY2VydGlmaWNhdGUuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGNlcnRpZmljYXRlQXJuczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIHRoZSBwcm90b2NvbCBvZiB0aGUgbGlzdGVuZXJcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvdG9jb2w6IExiUHJvdG9jb2w7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5ldHdvcmtMaXN0ZW5lclByb3BzKSB7XG4gICAgY29uc3QgY2VydHMgPSBwcm9wcy5jZXJ0aWZpY2F0ZXMgfHwgW107XG4gICAgY29uc3QgcHJvdG8gPVxuICAgICAgcHJvcHMucHJvdG9jb2wgfHwgKGNlcnRzLmxlbmd0aCA+IDAgPyBMYlByb3RvY29sLlRMUyA6IExiUHJvdG9jb2wuVENQKTtcblxuICAgIHZhbGlkYXRlTmV0d29ya1Byb3RvY29sKHByb3RvKTtcblxuICAgIGlmIChcbiAgICAgIHByb3RvID09PSBMYlByb3RvY29sLlRMUyAmJlxuICAgICAgY2VydHMuZmlsdGVyKCh2KSA9PiB2ICE9IG51bGwpLmxlbmd0aCA9PT0gMFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIldoZW4gdGhlIHByb3RvY29sIGlzIHNldCB0byBUTFMsIHlvdSBtdXN0IHNwZWNpZnkgY2VydGlmaWNhdGVzXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChwcm90byAhPT0gTGJQcm90b2NvbC5UTFMgJiYgY2VydHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIlByb3RvY29sIG11c3QgYmUgVExTIHdoZW4gY2VydGlmaWNhdGVzIGhhdmUgYmVlbiBzcGVjaWZpZWRcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHByb3RvICE9PSBMYlByb3RvY29sLlRMUyAmJiBwcm9wcy5hbHBuUG9saWN5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiUHJvdG9jb2wgbXVzdCBiZSBUTFMgd2hlbiBhbHBuUG9saWN5IGhhdmUgYmVlbiBzcGVjaWZpZWRcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBsb2FkQmFsYW5jZXJBcm46IHByb3BzLmxvYWRCYWxhbmNlci5sb2FkQmFsYW5jZXJBcm4sXG4gICAgICBwcm90b2NvbDogcHJvdG8sXG4gICAgICBwb3J0OiBwcm9wcy5wb3J0LFxuICAgICAgc3NsUG9saWN5OiBwcm9wcy5zc2xQb2xpY3ksXG4gICAgICBjZXJ0aWZpY2F0ZUFybjogTGF6eS5zdHJpbmdWYWx1ZSh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgdGhpcy5jZXJ0aWZpY2F0ZUFybnMubGVuZ3RoID4gMCA/IHRoaXMuY2VydGlmaWNhdGVBcm5zWzBdIDogdW5kZWZpbmVkLFxuICAgICAgfSksXG4gICAgICBhbHBuUG9saWN5OiBwcm9wcy5hbHBuUG9saWN5ID8gcHJvcHMuYWxwblBvbGljeSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIHRoaXMuY2VydGlmaWNhdGVBcm5zID0gW107XG4gICAgdGhpcy5sb2FkQmFsYW5jZXIgPSBwcm9wcy5sb2FkQmFsYW5jZXI7XG4gICAgdGhpcy5wcm90b2NvbCA9IHByb3RvO1xuXG4gICAgaWYgKGNlcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYWRkQ2VydGlmaWNhdGVzKFwiRGVmYXVsdENlcnRpZmljYXRlc1wiLCBjZXJ0cyk7XG4gICAgfVxuICAgIGlmIChwcm9wcy5kZWZhdWx0QWN0aW9uICYmIHByb3BzLmRlZmF1bHRUYXJnZXRHcm91cHMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJTcGVjaWZ5IGF0IG1vc3Qgb25lIG9mICdkZWZhdWx0QWN0aW9uJyBhbmQgJ2RlZmF1bHRUYXJnZXRHcm91cHMnXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5kZWZhdWx0QWN0aW9uKSB7XG4gICAgICB0aGlzLnNldERlZmF1bHRBY3Rpb24ocHJvcHMuZGVmYXVsdEFjdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmRlZmF1bHRUYXJnZXRHcm91cHMpIHtcbiAgICAgIHRoaXMuc2V0RGVmYXVsdEFjdGlvbihcbiAgICAgICAgTmV0d29ya0xpc3RlbmVyQWN0aW9uLmZvcndhcmQocHJvcHMuZGVmYXVsdFRhcmdldEdyb3VwcyksXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHByb3BzLnRjcElkbGVUaW1lb3V0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICFUb2tlbi5pc1VucmVzb2x2ZWQocHJvcHMudGNwSWRsZVRpbWVvdXQpXG4gICAgKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHByb3BzLnRjcElkbGVUaW1lb3V0LnRvTWlsbGlzZWNvbmRzKCkgPFxuICAgICAgICBEdXJhdGlvbi5zZWNvbmRzKDEpLnRvTWlsbGlzZWNvbmRzKClcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFxcYHRjcElkbGVUaW1lb3V0XFxgIG11c3QgYmUgYmV0d2VlbiA2MCBhbmQgNjAwMCBzZWNvbmRzLCBnb3QgJHtwcm9wcy50Y3BJZGxlVGltZW91dC50b01pbGxpc2Vjb25kcygpfSBtaWxsaXNlY29uZHMuYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGNwSWRsZVRpbWVvdXRTZWNvbmRzID0gcHJvcHMudGNwSWRsZVRpbWVvdXQudG9TZWNvbmRzKCk7XG5cbiAgICAgIGlmIChwcm90byA9PT0gTGJQcm90b2NvbC5VRFApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIFwiYHRjcElkbGVUaW1lb3V0YCBjYW5ub3QgYmUgc2V0IHdoZW4gYHByb3RvY29sYCBpcyBgUHJvdG9jb2wuVURQYC5cIixcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRjcElkbGVUaW1lb3V0U2Vjb25kcyA8IDYwIHx8IHRjcElkbGVUaW1lb3V0U2Vjb25kcyA+IDYwMDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBcXGB0Y3BJZGxlVGltZW91dFxcYCBtdXN0IGJlIGJldHdlZW4gNjAgYW5kIDYwMDAgc2Vjb25kcywgZ290ICR7dGNwSWRsZVRpbWVvdXRTZWNvbmRzfSBzZWNvbmRzLmAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlKFxuICAgICAgICBcInRjcC5pZGxlX3RpbWVvdXQuc2Vjb25kc1wiLFxuICAgICAgICB0Y3BJZGxlVGltZW91dFNlY29uZHMudG9TdHJpbmcoKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBvbmUgb3IgbW9yZSBjZXJ0aWZpY2F0ZXMgdG8gdGhpcyBsaXN0ZW5lci5cbiAgICpcbiAgICogQWZ0ZXIgdGhlIGZpcnN0IGNlcnRpZmljYXRlLCB0aGlzIGNyZWF0ZXMgTmV0d29ya0xpc3RlbmVyQ2VydGlmaWNhdGVzXG4gICAqIHJlc291cmNlcyBzaW5jZSBjbG91ZGZvcm1hdGlvbiByZXF1aXJlcyB0aGUgY2VydGlmaWNhdGVzIGFycmF5IG9uIHRoZVxuICAgKiBsaXN0ZW5lciByZXNvdXJjZSB0byBoYXZlIGEgbGVuZ3RoIG9mIDEuXG4gICAqL1xuICBwdWJsaWMgYWRkQ2VydGlmaWNhdGVzKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgY2VydGlmaWNhdGVzOiBJTGlzdGVuZXJDZXJ0aWZpY2F0ZVtdLFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBhZGRpdGlvbmFsQ2VydHMgPSBbLi4uY2VydGlmaWNhdGVzXTtcbiAgICBpZiAodGhpcy5jZXJ0aWZpY2F0ZUFybnMubGVuZ3RoID09PSAwICYmIGFkZGl0aW9uYWxDZXJ0cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaXJzdCA9IGFkZGl0aW9uYWxDZXJ0cy5zcGxpY2UoMCwgMSlbMF07XG4gICAgICB0aGlzLmNlcnRpZmljYXRlQXJucy5wdXNoKGZpcnN0LmNlcnRpZmljYXRlQXJuKTtcbiAgICB9XG4gICAgLy8gT25seSBvbmUgY2VydGlmaWNhdGUgY2FuIGJlIHNwZWNpZmllZCBwZXIgcmVzb3VyY2UsIGV2ZW4gdGhvdWdoXG4gICAgLy8gYGNlcnRpZmljYXRlc2AgaXMgb2YgdHlwZSBBcnJheVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWRkaXRpb25hbENlcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBuZXcgTmV0d29ya0xpc3RlbmVyQ2VydGlmaWNhdGUodGhpcywgYCR7aWR9JHtpICsgMX1gLCB7XG4gICAgICAgIGxpc3RlbmVyOiB0aGlzLFxuICAgICAgICBjZXJ0aWZpY2F0ZXM6IFthZGRpdGlvbmFsQ2VydHNbaV1dLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZSBpbmNvbWluZyByZXF1ZXN0cyB0byB0aGUgZ2l2ZW4gdGFyZ2V0IGdyb3Vwcy5cbiAgICpcbiAgICogQWxsIHRhcmdldCBncm91cHMgd2lsbCBiZSBsb2FkIGJhbGFuY2VkIHRvIHdpdGggZXF1YWwgd2VpZ2h0IGFuZCB3aXRob3V0XG4gICAqIHN0aWNraW5lc3MuIEZvciBhIG1vcmUgY29tcGxleCBjb25maWd1cmF0aW9uIHRoYW4gdGhhdCwgdXNlIGBhZGRBY3Rpb24oKWAuXG4gICAqL1xuICBwdWJsaWMgYWRkVGFyZ2V0R3JvdXBzKFxuICAgIF9pZDogc3RyaW5nLFxuICAgIC4uLnRhcmdldEdyb3VwczogSU5ldHdvcmtUYXJnZXRHcm91cFtdXG4gICk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGVmYXVsdEFjdGlvbihOZXR3b3JrTGlzdGVuZXJBY3Rpb24uZm9yd2FyZCh0YXJnZXRHcm91cHMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtIHRoZSBnaXZlbiBBY3Rpb24gb24gaW5jb21pbmcgcmVxdWVzdHNcbiAgICpcbiAgICogVGhpcyBhbGxvd3MgZnVsbCBjb250cm9sIG9mIHRoZSBkZWZhdWx0IEFjdGlvbiBvZiB0aGUgbG9hZCBiYWxhbmNlcixcbiAgICogaW5jbHVkaW5nIHdlaWdodGVkIGZvcndhcmRpbmcuIFNlZSB0aGUgYE5ldHdvcmtMaXN0ZW5lckFjdGlvbmAgY2xhc3MgZm9yXG4gICAqIGFsbCBvcHRpb25zLlxuICAgKi9cbiAgcHVibGljIGFkZEFjdGlvbihfaWQ6IHN0cmluZywgcHJvcHM6IEFkZE5ldHdvcmtBY3Rpb25Qcm9wcyk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGVmYXVsdEFjdGlvbihwcm9wcy5hY3Rpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZSBpbmNvbWluZyByZXF1ZXN0cyB0byB0aGUgZ2l2ZW4gbG9hZCBiYWxhbmNpbmcgdGFyZ2V0cy5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgaW1wbGljaXRseSBjcmVhdGVzIGEgTmV0d29ya1RhcmdldEdyb3VwIGZvciB0aGUgdGFyZ2V0c1xuICAgKiBpbnZvbHZlZCwgYW5kIGEgJ2ZvcndhcmQnIGFjdGlvbiB0byByb3V0ZSB0cmFmZmljIHRvIHRoZSBnaXZlbiBUYXJnZXRHcm91cC5cbiAgICpcbiAgICogSWYgeW91IHdhbnQgbW9yZSBjb250cm9sIG92ZXIgdGhlIHByZWNpc2Ugc2V0dXAsIGNyZWF0ZSB0aGUgVGFyZ2V0R3JvdXBcbiAgICogYW5kIHVzZSBgYWRkQWN0aW9uYCB5b3Vyc2VsZi5cbiAgICpcbiAgICogSXQncyBwb3NzaWJsZSB0byBhZGQgY29uZGl0aW9ucyB0byB0aGUgdGFyZ2V0cyBhZGRlZCBpbiB0aGlzIHdheS4gQXQgbGVhc3RcbiAgICogb25lIHNldCBvZiB0YXJnZXRzIG11c3QgYmUgYWRkZWQgd2l0aG91dCBjb25kaXRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgbmV3bHkgY3JlYXRlZCB0YXJnZXQgZ3JvdXBcbiAgICovXG4gIHB1YmxpYyBhZGRUYXJnZXRzKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEFkZE5ldHdvcmtUYXJnZXRzUHJvcHMsXG4gICk6IE5ldHdvcmtUYXJnZXRHcm91cCB7XG4gICAgaWYgKCF0aGlzLmxvYWRCYWxhbmNlci52cGMpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQ2FuIG9ubHkgY2FsbCBhZGRUYXJnZXRzKCkgd2hlbiB1c2luZyBhIGNvbnN0cnVjdGVkIExvYWQgQmFsYW5jZXIgb3IgaW1wb3J0ZWQgTG9hZCBCYWxhbmNlciB3aXRoIHNwZWNpZmllZCBWUEM7IGNvbnN0cnVjdCBhIG5ldyBUYXJnZXRHcm91cCBhbmQgdXNlIGFkZFRhcmdldEdyb3VwXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGdyb3VwID0gbmV3IE5ldHdvcmtUYXJnZXRHcm91cCh0aGlzLCBpZCArIFwiR3JvdXBcIiwge1xuICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTogcHJvcHMuZGVyZWdpc3RyYXRpb25EZWxheSxcbiAgICAgIGhlYWx0aENoZWNrOiBwcm9wcy5oZWFsdGhDaGVjayxcbiAgICAgIHBvcnQ6IHByb3BzLnBvcnQsXG4gICAgICBwcm90b2NvbDogcHJvcHMucHJvdG9jb2wgPz8gdGhpcy5wcm90b2NvbCxcbiAgICAgIHByb3h5UHJvdG9jb2xWMjogcHJvcHMucHJveHlQcm90b2NvbFYyLFxuICAgICAgcHJlc2VydmVDbGllbnRJcDogcHJvcHMucHJlc2VydmVDbGllbnRJcCxcbiAgICAgIHRhcmdldEdyb3VwTmFtZTogcHJvcHMudGFyZ2V0R3JvdXBOYW1lLFxuICAgICAgdGFyZ2V0czogcHJvcHMudGFyZ2V0cyxcbiAgICAgIHZwYzogdGhpcy5sb2FkQmFsYW5jZXIudnBjLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRUYXJnZXRHcm91cHMoaWQsIGdyb3VwKTtcblxuICAgIHJldHVybiBncm91cDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcmFwcGVyIGZvciBfc2V0RGVmYXVsdEFjdGlvbiB3aGljaCBkb2VzIGEgdHlwZS1zYWZlIGJpbmRcbiAgICovXG4gIHByaXZhdGUgc2V0RGVmYXVsdEFjdGlvbihhY3Rpb246IE5ldHdvcmtMaXN0ZW5lckFjdGlvbikge1xuICAgIGFjdGlvbi5iaW5kKHRoaXMsIHRoaXMpO1xuICAgIHRoaXMuX3NldERlZmF1bHRBY3Rpb24oYWN0aW9uKTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gcmVmZXJlbmNlIGFuIGV4aXN0aW5nIGxpc3RlbmVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU5ldHdvcmtMaXN0ZW5lciBleHRlbmRzIElMaXN0ZW5lciB7fVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGFkZGluZyBhIG5ldyBhY3Rpb24gdG8gYSBsaXN0ZW5lclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFkZE5ldHdvcmtBY3Rpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBBY3Rpb24gdG8gcGVyZm9ybVxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uOiBOZXR3b3JrTGlzdGVuZXJBY3Rpb247XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYWRkaW5nIG5ldyBuZXR3b3JrIHRhcmdldHMgdG8gYSBsaXN0ZW5lclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFkZE5ldHdvcmtUYXJnZXRzUHJvcHMge1xuICAvKipcbiAgICogVGhlIHBvcnQgb24gd2hpY2ggdGhlIHRhcmdldCByZWNlaXZlcyB0cmFmZmljLlxuICAgKlxuICAgKiBAZGVmYXVsdCBEZXRlcm1pbmVkIGZyb20gcHJvdG9jb2wgaWYga25vd25cbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogUHJvdG9jb2wgZm9yIHRhcmdldCBncm91cCwgZXhwZWN0cyBUQ1AsIFRMUywgVURQLCBvciBUQ1BfVURQLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGluaGVyaXRzIHRoZSBwcm90b2NvbCBvZiB0aGUgbGlzdGVuZXJcbiAgICovXG4gIHJlYWRvbmx5IHByb3RvY29sPzogTGJQcm90b2NvbDtcblxuICAvKipcbiAgICogVGhlIHRhcmdldHMgdG8gYWRkIHRvIHRoaXMgdGFyZ2V0IGdyb3VwLlxuICAgKlxuICAgKiBDYW4gYmUgYEluc3RhbmNlYCwgYElQQWRkcmVzc2AsIG9yIGFueSBzZWxmLXJlZ2lzdGVyaW5nIGxvYWQgYmFsYW5jaW5nXG4gICAqIHRhcmdldC4gSWYgeW91IHVzZSBlaXRoZXIgYEluc3RhbmNlYCBvciBgSVBBZGRyZXNzYCBhcyB0YXJnZXRzLCBhbGxcbiAgICogdGFyZ2V0IG11c3QgYmUgb2YgdGhlIHNhbWUgdHlwZS5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldHM/OiBJTmV0d29ya0xvYWRCYWxhbmNlclRhcmdldFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdGFyZ2V0IGdyb3VwLlxuICAgKlxuICAgKiBUaGlzIG5hbWUgbXVzdCBiZSB1bmlxdWUgcGVyIHJlZ2lvbiBwZXIgYWNjb3VudCwgY2FuIGhhdmUgYSBtYXhpbXVtIG9mXG4gICAqIDMyIGNoYXJhY3RlcnMsIG11c3QgY29udGFpbiBvbmx5IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9yIGh5cGhlbnMsIGFuZFxuICAgKiBtdXN0IG5vdCBiZWdpbiBvciBlbmQgd2l0aCBhIGh5cGhlbi5cbiAgICpcbiAgICogQGRlZmF1bHQgQXV0b21hdGljYWxseSBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldEdyb3VwTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiB0aW1lIGZvciBFbGFzdGljIExvYWQgQmFsYW5jaW5nIHRvIHdhaXQgYmVmb3JlIGRlcmVnaXN0ZXJpbmcgYSB0YXJnZXQuXG4gICAqXG4gICAqIFRoZSByYW5nZSBpcyAwLTM2MDAgc2Vjb25kcy5cbiAgICpcbiAgICogQGRlZmF1bHQgRHVyYXRpb24ubWludXRlcyg1KVxuICAgKi9cbiAgcmVhZG9ubHkgZGVyZWdpc3RyYXRpb25EZWxheT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBQcm94eSBQcm90b2NvbCB2ZXJzaW9uIDIgaXMgZW5hYmxlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHByb3h5UHJvdG9jb2xWMj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIGNsaWVudCBJUCBwcmVzZXJ2YXRpb24gaXMgZW5hYmxlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2UgaWYgdGhlIHRhcmdldCBncm91cCB0eXBlIGlzIElQIGFkZHJlc3MgYW5kIHRoZVxuICAgKiB0YXJnZXQgZ3JvdXAgcHJvdG9jb2wgaXMgVENQIG9yIFRMUy4gT3RoZXJ3aXNlLCB0cnVlLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlc2VydmVDbGllbnRJcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEhlYWx0aCBjaGVjayBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVGhlIGRlZmF1bHQgdmFsdWUgZm9yIGVhY2ggcHJvcGVydHkgaW4gdGhpcyBjb25maWd1cmF0aW9uIHZhcmllcyBkZXBlbmRpbmcgb24gdGhlIHRhcmdldC5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi10YXJnZXRncm91cC5odG1sI2F3cy1yZXNvdXJjZS1lbGFzdGljbG9hZGJhbGFuY2luZ3YyLXRhcmdldGdyb3VwLXByb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IGhlYWx0aENoZWNrPzogSGVhbHRoQ2hlY2s7XG59XG4iXX0=
@@ -356,5 +356,5 @@ class NetworkLoadBalancer extends base_load_balancer_1.BaseLoadBalancer {
356
356
  }
357
357
  exports.NetworkLoadBalancer = NetworkLoadBalancer;
358
358
  _a = JSII_RTTI_SYMBOL_1;
359
- NetworkLoadBalancer[_a] = { fqn: "terraconstructs.aws.compute.NetworkLoadBalancer", version: "0.0.20" };
359
+ NetworkLoadBalancer[_a] = { fqn: "terraconstructs.aws.compute.NetworkLoadBalancer", version: "0.0.22" };
360
360
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay1sb2FkLWJhbGFuY2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9jb21wdXRlL25sYi9uZXR3b3JrLWxvYWQtYmFsYW5jZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnSUFBZ0k7QUFFaEksc0RBQWdEO0FBQ2hELGlDQUE2QjtBQUU3Qix5REFBK0U7QUFDL0UsdURBQTBFO0FBQzFFLCtDQUErQztBQUMvQyxnREFBMkQ7QUFDM0QsV0FBVztBQUNYLHNCQUFzQjtBQUN0QixrQ0FBa0M7QUFDbEMsMkNBQTJDO0FBQzNDLHdIQUF1RjtBQUN2Rix3RUFNeUM7QUFDekMsOENBQStEO0FBQy9ELDRDQUE4RDtBQUM5RCxzREFBa0U7QUFRbEU7Ozs7R0FJRztBQUNILElBQVksbUJBYVg7QUFiRCxXQUFZLG1CQUFtQjtJQUM3Qjs7T0FFRztJQUNILGdGQUF5RCxDQUFBO0lBQ3pEOztPQUVHO0lBQ0gsZ0dBQXlFLENBQUE7SUFDekU7O09BRUc7SUFDSCxzRUFBK0MsQ0FBQTtBQUNqRCxDQUFDLEVBYlcsbUJBQW1CLG1DQUFuQixtQkFBbUIsUUFhOUI7QUF5R0Q7O0dBRUc7QUFDSCxNQUFNLDBCQUEwQjtJQUk5QixZQUFZLEtBQWdCLEVBQUUsb0JBQTRCO1FBQ3hELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztJQUNuRCxDQUFDO0lBRU0sTUFBTSxDQUNYLFVBQWtCLEVBQ2xCLEtBQWdDO1FBRWhDLE9BQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQzNCLFNBQVMsRUFBRSxnQkFBZ0I7WUFDM0IsVUFBVTtZQUNWLGFBQWEsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDMUQsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxD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QUNwQixHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSx3QkFBd0IsQ0FBQyxLQUFnQztRQUM5RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUU7WUFDdkMsU0FBUyxFQUFFLFNBQVM7WUFDcEIsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksa0JBQWtCLENBQUMsS0FBZ0M7UUFDeEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxvQkFBb0IsQ0FBQyxLQUFnQztRQUMxRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0kseUJBQXlCLENBQUMsS0FBZ0M7UUFDL0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLHNCQUFzQixDQUFDLEtBQWdDO1FBQzVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLHlCQUF5QixDQUFDLEtBQWdDO1FBQy9ELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDOztBQWxWSCxrREFtVkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNzUuMS9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi9saWIvbmxiL25ldHdvcmstbG9hZC1iYWxhbmNlci50c1xuXG5pbXBvcnQgeyBkYXRhQXdzTGIgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgTGF6eSB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEJhc2VOZXR3b3JrTGlzdGVuZXJQcm9wcywgTmV0d29ya0xpc3RlbmVyIH0gZnJvbSBcIi4vbmV0d29yay1saXN0ZW5lclwiO1xuaW1wb3J0IHsgQXdzQ29uc3RydWN0QmFzZSwgQXdzQ29uc3RydWN0UHJvcHMgfSBmcm9tIFwiLi4vLi4vYXdzLWNvbnN0cnVjdFwiO1xuaW1wb3J0ICogYXMgY2xvdWR3YXRjaCBmcm9tIFwiLi4vLi4vY2xvdWR3YXRjaFwiO1xuaW1wb3J0IHsgQ29ubmVjdGlvbnMsIElDb25uZWN0YWJsZSB9IGZyb20gXCIuLi9jb25uZWN0aW9uc1wiO1xuLy8gaW1wb3J0IHtcbi8vICAgTG9hZEJhbGFuY2VyVHlwZSxcbi8vICAgTG9hZEJhbGFuY2VyTGlzdGVuZXJQcm90b2NvbCxcbi8vIH0gZnJvbSBcIi4uL2xiLXNoYXJlZC9ncmlkLWxvb2t1cC10eXBlc1wiO1xuaW1wb3J0IHsgTmV0d29ya0VMQk1ldHJpY3MgfSBmcm9tIFwiLi4vZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi1jYW5uZWQtbWV0cmljcy5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7XG4gIEJhc2VMb2FkQmFsYW5jZXIsXG4gIEJhc2VMb2FkQmFsYW5jZXJMb29rdXBPcHRpb25zLFxuICBCYXNlTG9hZEJhbGFuY2VyUHJvcHMsXG4gIElMb2FkQmFsYW5jZXJWMixcbiAgTG9hZEJhbGFuY2VyVjJPdXRwdXRzLFxufSBmcm9tIFwiLi4vbGItc2hhcmVkL2Jhc2UtbG9hZC1iYWxhbmNlclwiO1xuaW1wb3J0IHsgSXBBZGRyZXNzVHlwZSwgTGJQcm90b2NvbCB9IGZyb20gXCIuLi9sYi1zaGFyZWQvZW51bXNcIjtcbmltcG9ydCB7IHBhcnNlTG9hZEJhbGFuY2VyRnVsbE5hbWUgfSBmcm9tIFwiLi4vbGItc2hhcmVkL3V0aWxcIjtcbmltcG9ydCB7IElTZWN1cml0eUdyb3VwLCBTZWN1cml0eUdyb3VwIH0gZnJvbSBcIi4uL3NlY3VyaXR5LWdyb3VwXCI7XG5pbXBvcnQge1xuICBJVnBjLFxuICAvLyBUT0RPOiBBZGQgR3JpZCBMb29rdXAgc3VwcG9ydFxuICAvLyBWcGMsXG59IGZyb20gXCIuLi92cGNcIjtcbmltcG9ydCB7IElWcGNFbmRwb2ludFNlcnZpY2VMb2FkQmFsYW5jZXIgfSBmcm9tIFwiLi4vdnBjLWVuZHBvaW50LXNlcnZpY2VcIjtcblxuLyoqXG4gKiBJbmRpY2F0ZXMgaG93IHRyYWZmaWMgaXMgZGlzdHJpYnV0ZWQgYW1vbmcgdGhlIGxvYWQgYmFsYW5jZXIgQXZhaWxhYmlsaXR5IFpvbmVzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VsYXN0aWNsb2FkYmFsYW5jaW5nL2xhdGVzdC9uZXR3b3JrL25ldHdvcmstbG9hZC1iYWxhbmNlcnMuaHRtbCN6b25hbC1kbnMtYWZmaW5pdHlcbiAqL1xuZXhwb3J0IGVudW0gQ2xpZW50Um91dGluZ1BvbGljeSB7XG4gIC8qKlxuICAgKiAxMDAgcGVyY2VudCB6b25hbCBhZmZpbml0eVxuICAgKi9cbiAgQVZBSUxBQklMSVRZX1pPTkVfQUZGSU5JVFkgPSBcImF2YWlsYWJpbGl0eV96b25lX2FmZmluaXR5XCIsXG4gIC8qKlxuICAgKiA4NSBwZXJjZW50IHpvbmFsIGFmZmluaXR5XG4gICAqL1xuICBQQVJUSUFMX0FWQUlMQUJJTElUWV9aT05FX0FGRklOSVRZID0gXCJwYXJ0aWFsX2F2YWlsYWJpbGl0eV96b25lX2FmZmluaXR5XCIsXG4gIC8qKlxuICAgKiBObyB6b25hbCBhZmZpbml0eVxuICAgKi9cbiAgQU5ZX0FWQUlMQUJJTElUWV9aT05FID0gXCJhbnlfYXZhaWxhYmlsaXR5X3pvbmVcIixcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIG5ldHdvcmsgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtMb2FkQmFsYW5jZXJQcm9wcyBleHRlbmRzIEJhc2VMb2FkQmFsYW5jZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cHMgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBsb2FkIGJhbGFuY2VyXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gc2VjdXJpdHkgZ3JvdXBzIGFzc29jaWF0ZWQgd2l0aCB0aGUgbG9hZCBiYWxhbmNlci5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogSVNlY3VyaXR5R3JvdXBbXTtcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgSVAgYWRkcmVzc2VzIHRvIHVzZVxuICAgKlxuICAgKiBJZiB5b3Ugd2FudCB0byBhZGQgYSBVRFAgb3IgVENQX1VEUCBsaXN0ZW5lciB0byB0aGUgbG9hZCBiYWxhbmNlcixcbiAgICogeW91IG11c3QgY2hvb3NlIElQdjQuXG4gICAqXG4gICAqIEBkZWZhdWx0IElwQWRkcmVzc1R5cGUuSVBWNFxuICAgKi9cbiAgcmVhZG9ubHkgaXBBZGRyZXNzVHlwZT86IElwQWRkcmVzc1R5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBBWiBhZmZpbml0eSByb3V0aW5nIHBvbGljeVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lbGFzdGljbG9hZGJhbGFuY2luZy9sYXRlc3QvbmV0d29yay9uZXR3b3JrLWxvYWQtYmFsYW5jZXJzLmh0bWwjem9uYWwtZG5zLWFmZmluaXR5XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQVogYWZmaW5pdHkgaXMgZGlzYWJsZWQuXG4gICAqL1xuICByZWFkb25seSBjbGllbnRSb3V0aW5nUG9saWN5PzogQ2xpZW50Um91dGluZ1BvbGljeTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gZXZhbHVhdGUgaW5ib3VuZCBzZWN1cml0eSBncm91cCBydWxlcyBmb3IgdHJhZmZpYyBzZW50IHRvIGEgTmV0d29yayBMb2FkIEJhbGFuY2VyIHRocm91Z2ggQVdTIFByaXZhdGVMaW5rLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmZvcmNlU2VjdXJpdHlHcm91cEluYm91bmRSdWxlc09uUHJpdmF0ZUxpbmtUcmFmZmljPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgem9uYWwgc2hpZnQgaXMgZW5hYmxlZFxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lbGFzdGljbG9hZGJhbGFuY2luZy9sYXRlc3QvbmV0d29yay96b25hbC1zaGlmdC5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB6b25hbFNoaWZ0PzogYm9vbGVhbjtcblxuICAvLyBUT0RPOiBNaXNzaW5nIGluIHByb3ZpZGVyLWF3c1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1wcm92aWRlci1hd3MvaXNzdWVzLzQwMzc5XG4gIC8vIC8qKlxuICAvLyAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byB1c2UgYW4gSVB2NiBwcmVmaXggZnJvbSBlYWNoIHN1Ym5ldCBmb3Igc291cmNlIE5BVC5cbiAgLy8gICpcbiAgLy8gICogVGhlIElQIGFkZHJlc3MgdHlwZSBtdXN0IGJlIElwQWRkcmVzc1R5cGUuRFVBTFNUQUNLLlxuICAvLyAgKlxuICAvLyAgKiBAZGVmYXVsdCB1bmRlZmluZWQgLSBOTEIgZGVmYXVsdCBiZWhhdmlvciBpcyBmYWxzZVxuICAvLyAgKi9cbiAgLy8gcmVhZG9ubHkgZW5hYmxlUHJlZml4Rm9ySXB2NlNvdXJjZU5hdD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUHJvcGVydGllcyB0byByZWZlcmVuY2UgYW4gZXhpc3RpbmcgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtMb2FkQmFsYW5jZXJBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIEFSTiBvZiB0aGUgbG9hZCBiYWxhbmNlclxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjYW5vbmljYWwgaG9zdGVkIHpvbmUgSUQgb2YgdGhpcyBsb2FkIGJhbGFuY2VyXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVG9rZW4gdmlhIGRhdGEgc291cmNlIGZyb20gbG9hZEJhbGFuY2VyQXJuLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyQ2Fub25pY2FsSG9zdGVkWm9uZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgRE5TIG5hbWUgb2YgdGhpcyBsb2FkIGJhbGFuY2VyXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVG9rZW4gdmlhIGRhdGEgc291cmNlIGZyb20gbG9hZEJhbGFuY2VyQXJuLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyRG5zTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFZQQyB0byBhc3NvY2lhdGUgd2l0aCB0aGUgbG9hZCBiYWxhbmNlci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBXaGVuIG5vdCBwcm92aWRlZCwgbGlzdGVuZXJzIGNhbm5vdCBiZSBjcmVhdGVkIG9uIGltcG9ydGVkIGxvYWRcbiAgICogYmFsYW5jZXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogSVZwYztcblxuICAvKipcbiAgICogU2VjdXJpdHkgZ3JvdXBzIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgbG9hZCBiYWxhbmNlclxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHNlY3VyaXR5IGdyb3VwcyBhc3NvY2lhdGVkIHdpdGggdGhlIGxvYWQgYmFsYW5jZXIuXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXJTZWN1cml0eUdyb3Vwcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGxvb2tpbmcgdXAgYW4gTmV0d29ya0xvYWRCYWxhbmNlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtMb2FkQmFsYW5jZXJMb29rdXBPcHRpb25zXG4gIGV4dGVuZHMgQmFzZUxvYWRCYWxhbmNlckxvb2t1cE9wdGlvbnMge31cblxuLyoqXG4gKiBUaGUgbWV0cmljcyBmb3IgYSBuZXR3b3JrIGxvYWQgYmFsYW5jZXIuXG4gKi9cbmNsYXNzIE5ldHdvcmtMb2FkQmFsYW5jZXJNZXRyaWNzIGltcGxlbWVudHMgSU5ldHdvcmtMb2FkQmFsYW5jZXJNZXRyaWNzIHtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2FkQmFsYW5jZXJGdWxsTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHNjb3BlOiBDb25zdHJ1Y3Q7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgbG9hZEJhbGFuY2VyRnVsbE5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcbiAgICB0aGlzLmxvYWRCYWxhbmNlckZ1bGxOYW1lID0gbG9hZEJhbGFuY2VyRnVsbE5hbWU7XG4gIH1cblxuICBwdWJsaWMgY3VzdG9tKFxuICAgIG1ldHJpY05hbWU6IHN0cmluZyxcbiAgICBwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyxcbiAgKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgbmFtZXNwYWNlOiBcIkFXUy9OZXR3b3JrRUxCXCIsXG4gICAgICBtZXRyaWNOYW1lLFxuICAgICAgZGltZW5zaW9uc01hcDogeyBMb2FkQmFsYW5jZXI6IHRoaXMubG9hZEJhbGFuY2VyRnVsbE5hbWUgfSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pLmF0dGFjaFRvKHRoaXMuc2NvcGUpO1xuICB9XG5cbiAgcHVibGljIGFjdGl2ZUZsb3dDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmNhbm5lZE1ldHJpYyhOZXR3b3JrRUxCTWV0cmljcy5hY3RpdmVGbG93Q291bnRBdmVyYWdlLCBwcm9wcyk7XG4gIH1cblxuICBwdWJsaWMgY29uc3VtZWRMQ1VzKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FubmVkTWV0cmljKE5ldHdvcmtFTEJNZXRyaWNzLmNvbnN1bWVkTGNVc0F2ZXJhZ2UsIHtcbiAgICAgIHN0YXRpc3RpYzogXCJTdW1cIixcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5ld0Zsb3dDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmNhbm5lZE1ldHJpYyhOZXR3b3JrRUxCTWV0cmljcy5uZXdGbG93Q291bnRTdW0sIHByb3BzKTtcbiAgfVxuXG4gIHB1YmxpYyBwcm9jZXNzZWRCeXRlcyhwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmNhbm5lZE1ldHJpYyhOZXR3b3JrRUxCTWV0cmljcy5wcm9jZXNzZWRCeXRlc1N1bSwgcHJvcHMpO1xuICB9XG5cbiAgcHVibGljIHRjcENsaWVudFJlc2V0Q291bnQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5jYW5uZWRNZXRyaWMoTmV0d29ya0VMQk1ldHJpY3MudGNwQ2xpZW50UmVzZXRDb3VudFN1bSwgcHJvcHMpO1xuICB9XG4gIHB1YmxpYyB0Y3BFbGJSZXNldENvdW50KHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FubmVkTWV0cmljKE5ldHdvcmtFTEJNZXRyaWNzLnRjcEVsYlJlc2V0Q291bnRTdW0sIHByb3BzKTtcbiAgfVxuICBwdWJsaWMgdGNwVGFyZ2V0UmVzZXRDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmNhbm5lZE1ldHJpYyhOZXR3b3JrRUxCTWV0cmljcy50Y3BUYXJnZXRSZXNldENvdW50U3VtLCBwcm9wcyk7XG4gIH1cblxuICBwcml2YXRlIGNhbm5lZE1ldHJpYyhcbiAgICBmbjogKGRpbXM6IHsgTG9hZEJhbGFuY2VyOiBzdHJpbmcgfSkgPT4gY2xvdWR3YXRjaC5NZXRyaWNQcm9wcyxcbiAgICBwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyxcbiAgKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgLi4uZm4oeyBMb2FkQmFsYW5jZXI6IHRoaXMubG9hZEJhbGFuY2VyRnVsbE5hbWUgfSksXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KS5hdHRhY2hUbyh0aGlzLnNjb3BlKTtcbiAgfVxufVxuXG4vKipcbiAqIERlZmluZSBhIG5ldyBuZXR3b3JrIGxvYWQgYmFsYW5jZXJcbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpFbGFzdGljTG9hZEJhbGFuY2luZ1YyOjpMb2FkQmFsYW5jZXJcbiAqL1xuZXhwb3J0IGNsYXNzIE5ldHdvcmtMb2FkQmFsYW5jZXJcbiAgZXh0ZW5kcyBCYXNlTG9hZEJhbGFuY2VyXG4gIGltcGxlbWVudHMgSU5ldHdvcmtMb2FkQmFsYW5jZXJcbntcbiAgLy8gVE9ETzogQWRkIEdyaWQgbG9va3VwIHN1cHBvcnRcbiAgLy8gLyoqXG4gIC8vICAqIExvb2tzIHVwIHRoZSBuZXR3b3JrIGxvYWQgYmFsYW5jZXIuXG4gIC8vICAqL1xuICAvLyBwdWJsaWMgc3RhdGljIGZyb21Mb29rdXAoXG4gIC8vICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgLy8gICBpZDogc3RyaW5nLFxuICAvLyAgIG9wdGlvbnM6IE5ldHdvcmtMb2FkQmFsYW5jZXJMb29rdXBPcHRpb25zLFxuICAvLyApOiBJTmV0d29ya0xvYWRCYWxhbmNlciB7XG4gIC8vICAgY29uc3QgcHJvcHMgPSBCYXNlTG9hZEJhbGFuY2VyLl9xdWVyeUNvbnRleHRQcm92aWRlcihzY29wZSwge1xuICAvLyAgICAgdXNlck9wdGlvbnM6IG9wdGlvbnMsXG4gIC8vICAgICBsb2FkQmFsYW5jZXJUeXBlOiBMb2FkQmFsYW5jZXJUeXBlLk5FVFdPUkssXG4gIC8vICAgfSk7XG5cbiAgLy8gICByZXR1cm4gbmV3IExvb2tlZFVwTmV0d29ya0xvYWRCYWxhbmNlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgLy8gfVxuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbU5ldHdvcmtMb2FkQmFsYW5jZXJBdHRyaWJ1dGVzKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBhdHRyczogTmV0d29ya0xvYWRCYWxhbmNlckF0dHJpYnV0ZXMsXG4gICk6IElOZXR3b3JrTG9hZEJhbGFuY2VyIHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSU5ldHdvcmtMb2FkQmFsYW5jZXIge1xuICAgICAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucyA9IG5ldyBDb25uZWN0aW9ucyh7XG4gICAgICAgIHNlY3VyaXR5R3JvdXBzOiBhdHRycy5sb2FkQmFsYW5jZXJTZWN1cml0eUdyb3Vwcz8ubWFwKFxuICAgICAgICAgIChzZWN1cml0eUdyb3VwSWQsIGluZGV4KSA9PlxuICAgICAgICAgICAgU2VjdXJpdHlHcm91cC5mcm9tU2VjdXJpdHlHcm91cElkKFxuICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICBgU2VjdXJpdHlHcm91cC0ke2luZGV4fWAsXG4gICAgICAgICAgICAgIHNlY3VyaXR5R3JvdXBJZCxcbiAgICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICB9KTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBsb2FkQmFsYW5jZXJBcm4gPSBhdHRycy5sb2FkQmFsYW5jZXJBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdnBjPzogSVZwYyA9IGF0dHJzLnZwYztcbiAgICAgIHB1YmxpYyByZWFkb25seSBtZXRyaWNzOiBJTmV0d29ya0xvYWRCYWxhbmNlck1ldHJpY3MgPVxuICAgICAgICBuZXcgTmV0d29ya0xvYWRCYWxhbmNlck1ldHJpY3MoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwYXJzZUxvYWRCYWxhbmNlckZ1bGxOYW1lKGF0dHJzLmxvYWRCYWxhbmNlckFybiksXG4gICAgICAgICk7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlHcm91cHM/OiBzdHJpbmdbXSA9XG4gICAgICAgIGF0dHJzLmxvYWRCYWxhbmNlclNlY3VyaXR5R3JvdXBzO1xuXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IGRhdGFBd3NMYi5EYXRhQXdzTGI7XG4gICAgICBjb25zdHJ1Y3Rvcihwcm9wczogQXdzQ29uc3RydWN0UHJvcHMpIHtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgZGF0YUF3c0xiLkRhdGFBd3NMYih0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgICAgICBhcm46IGF0dHJzLmxvYWRCYWxhbmNlckFybixcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHB1YmxpYyBhZGRMaXN0ZW5lcihcbiAgICAgICAgbGlkOiBzdHJpbmcsXG4gICAgICAgIHByb3BzOiBCYXNlTmV0d29ya0xpc3RlbmVyUHJvcHMsXG4gICAgICApOiBOZXR3b3JrTGlzdGVuZXIge1xuICAgICAgICByZXR1cm4gbmV3IE5ldHdvcmtMaXN0ZW5lcih0aGlzLCBsaWQsIHtcbiAgICAgICAgICBsb2FkQmFsYW5jZXI6IHRoaXMsXG4gICAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBwdWJsaWMgZ2V0IGxvYWRCYWxhbmNlckNhbm9uaWNhbEhvc3RlZFpvbmVJZCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAoYXR0cnMubG9hZEJhbGFuY2VyQ2Fub25pY2FsSG9zdGVkWm9uZUlkKSB7XG4gICAgICAgICAgcmV0dXJuIGF0dHJzLmxvYWRCYWxhbmNlckNhbm9uaWNhbEhvc3RlZFpvbmVJZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS56b25lSWQ7XG4gICAgICAgIC8vIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgIC8vIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgLy8gICBgJ2xvYWRCYWxhbmNlckNhbm9uaWNhbEhvc3RlZFpvbmVJZCcgd2FzIG5vdCBwcm92aWRlZCB3aGVuIGNvbnN0cnVjdGluZyBOZXR3b3JrIExvYWQgQmFsYW5jZXIgJHt0aGlzLm5vZGUucGF0aH0gZnJvbSBhdHRyaWJ1dGVzYCxcbiAgICAgICAgLy8gKTtcbiAgICAgIH1cblxuICAgICAgcHVibGljIGdldCBsb2FkQmFsYW5jZXJEbnNOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChhdHRycy5sb2FkQmFsYW5jZXJEbnNOYW1lKSB7XG4gICAgICAgICAgcmV0dXJuIGF0dHJzLmxvYWRCYWxhbmNlckRuc05hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb3VyY2UuZG5zTmFtZTtcbiAgICAgICAgLy8gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgLy8gdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAvLyAgIGAnbG9hZEJhbGFuY2VyRG5zTmFtZScgd2FzIG5vdCBwcm92aWRlZCB3aGVuIGNvbnN0cnVjdGluZyBOZXR3b3JrIExvYWQgQmFsYW5jZXIgJHt0aGlzLm5vZGUucGF0aH0gZnJvbSBhdHRyaWJ1dGVzYCxcbiAgICAgICAgLy8gKTtcbiAgICAgIH1cblxuICAgICAgcHVibGljIGdldCBsb2FkQmFsYW5jZXJWMk91dHB1dHMoKTogTG9hZEJhbGFuY2VyVjJPdXRwdXRzIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsb2FkQmFsYW5jZXJDYW5vbmljYWxIb3N0ZWRab25lSWQ6XG4gICAgICAgICAgICB0aGlzLmxvYWRCYWxhbmNlckNhbm9uaWNhbEhvc3RlZFpvbmVJZCxcbiAgICAgICAgICBsb2FkQmFsYW5jZXJEbnNOYW1lOiB0aGlzLmxvYWRCYWxhbmNlckRuc05hbWUsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRCYWxhbmNlclYyT3V0cHV0cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydCh7IGVudmlyb25tZW50RnJvbUFybjogYXR0cnMubG9hZEJhbGFuY2VyQXJuIH0pO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IG1ldHJpY3M6IElOZXR3b3JrTG9hZEJhbGFuY2VyTWV0cmljcztcbiAgcHVibGljIHJlYWRvbmx5IGlwQWRkcmVzc1R5cGU/OiBJcEFkZHJlc3NUeXBlO1xuICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdGlvbnM6IENvbm5lY3Rpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IGlzU2VjdXJpdHlHcm91cHNQcm9wZXJ0eURlZmluZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VuZm9yY2VTZWN1cml0eUdyb3VwSW5ib3VuZFJ1bGVzT25Qcml2YXRlTGlua1RyYWZmaWM/OiBib29sZWFuO1xuICAvLyBUT0RPOiBNaXNzaW5nIGluIHByb3ZpZGVyLWF3c1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1wcm92aWRlci1hd3MvaXNzdWVzLzQwMzc5XG4gIC8vIHByaXZhdGUgZW5hYmxlUHJlZml4Rm9ySXB2NlNvdXJjZU5hdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFmdGVyIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgSUNvbm5lY3RhYmxlYCAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9wdWxsLzI4NDk0KSwgdGhlIGRlZmF1bHRcbiAgICogdmFsdWUgZm9yIGBzZWN1cml0eUdyb3Vwc2DCoGlzIHNldCBieSB0aGUgYENvbm5lY3Rpb25zYMKgY29uc3RydWN0b3IgdG8gYW4gZW1wdHkgYXJyYXkuXG4gICAqIFRvIGtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSAoYHNlY3VyaXR5R3JvdXBzYMKgaXMgYHVuZGVmaW5lZGDCoGlmIHRoZSByZWxhdGVkIHByb3BlcnR5IGlzIG5vdCBzcGVjaWZpZWQpXG4gICAqIGEgZ2V0dGVyIGhhcyBiZWVuIGFkZGVkLlxuICAgKi9cbiAgcHVibGljIGdldCBzZWN1cml0eUdyb3VwcygpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuaXNTZWN1cml0eUdyb3Vwc1Byb3BlcnR5RGVmaW5lZCB8fFxuICAgICAgdGhpcy5jb25uZWN0aW9ucy5zZWN1cml0eUdyb3Vwcy5sZW5ndGhcbiAgICAgID8gdGhpcy5jb25uZWN0aW9ucy5zZWN1cml0eUdyb3Vwcy5tYXAoKHNnKSA9PiBzZy5zZWN1cml0eUdyb3VwSWQpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOZXR3b3JrTG9hZEJhbGFuY2VyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzLCB7XG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBcIm5ldHdvcmtcIixcbiAgICAgIHNlY3VyaXR5R3JvdXBzOiBMYXp5Lmxpc3RWYWx1ZSh7IHByb2R1Y2U6ICgpID0+IHRoaXMuc2VjdXJpdHlHcm91cHMgfSksXG4gICAgICBpcEFkZHJlc3NUeXBlOiBwcm9wcy5pcEFkZHJlc3NUeXBlLFxuICAgICAgZW5mb3JjZVNlY3VyaXR5R3JvdXBJbmJvdW5kUnVsZXNPblByaXZhdGVMaW5rVHJhZmZpYzogTGF6eS5zdHJpbmdWYWx1ZSh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgdGhpcy5lbmZvcmNlU2VjdXJpdHlHcm91cEluYm91bmRSdWxlc09uUHJpdmF0ZUxpbmtUcmFmZmljLFxuICAgICAgfSksXG4gICAgICAvLyBUT0RPOiBNaXNzaW5nIGluIHByb3ZpZGVyLWF3c1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tcHJvdmlkZXItYXdzL2lzc3Vlcy80MDM3OVxuICAgICAgLy8gZW5hYmxlUHJlZml4Rm9ySXB2NlNvdXJjZU5hdDpcbiAgICAgIC8vICAgcHJvcHMuZW5hYmxlUHJlZml4Rm9ySXB2NlNvdXJjZU5hdCA9PT0gdHJ1ZVxuICAgICAgLy8gICAgID8gXCJvblwiXG4gICAgICAvLyAgICAgOiBwcm9wcy5lbmFibGVQcmVmaXhGb3JJcHY2U291cmNlTmF0ID09PSBmYWxzZVxuICAgICAgLy8gICAgICAgPyBcIm9mZlwiXG4gICAgICAvLyAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIC8vIHRoaXMuZW5hYmxlUHJlZml4Rm9ySXB2NlNvdXJjZU5hdCA9IHByb3BzLmVuYWJsZVByZWZpeEZvcklwdjZTb3VyY2VOYXQ7XG4gICAgdGhpcy5tZXRyaWNzID0gbmV3IE5ldHdvcmtMb2FkQmFsYW5jZXJNZXRyaWNzKFxuICAgICAgdGhpcyxcbiAgICAgIHRoaXMubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgKTtcbiAgICB0aGlzLmlzU2VjdXJpdHlHcm91cHNQcm9wZXJ0eURlZmluZWQgPSAhIXByb3BzLnNlY3VyaXR5R3JvdXBzO1xuICAgIHRoaXMuY29ubmVjdGlvbnMgPSBuZXcgQ29ubmVjdGlvbnMoe1xuICAgICAgc2VjdXJpdHlHcm91cHM6IHByb3BzLnNlY3VyaXR5R3JvdXBzLFxuICAgIH0pO1xuICAgIHRoaXMuaXBBZGRyZXNzVHlwZSA9IHByb3BzLmlwQWRkcmVzc1R5cGUgPz8gSXBBZGRyZXNzVHlwZS5JUFY0O1xuICAgIGlmIChwcm9wcy5jbGllbnRSb3V0aW5nUG9saWN5KSB7XG4gICAgICB0aGlzLnNldEF0dHJpYnV0ZShcbiAgICAgICAgXCJkbnNfcmVjb3JkLmNsaWVudF9yb3V0aW5nX3BvbGljeVwiLFxuICAgICAgICBwcm9wcy5jbGllbnRSb3V0aW5nUG9saWN5LFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHByb3BzLnpvbmFsU2hpZnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoXG4gICAgICAgIFwiem9uYWxfc2hpZnQuY29uZmlnLmVuYWJsZWRcIixcbiAgICAgICAgcHJvcHMuem9uYWxTaGlmdCA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fZW5mb3JjZVNlY3VyaXR5R3JvdXBJbmJvdW5kUnVsZXNPblByaXZhdGVMaW5rVHJhZmZpYyA9XG4gICAgICBwcm9wcy5lbmZvcmNlU2VjdXJpdHlHcm91cEluYm91bmRSdWxlc09uUHJpdmF0ZUxpbmtUcmFmZmljO1xuICB9XG5cbiAgcHVibGljIGdldCBlbmZvcmNlU2VjdXJpdHlHcm91cEluYm91bmRSdWxlc09uUHJpdmF0ZUxpbmtUcmFmZmljKCk6XG4gICAgfCBzdHJpbmdcbiAgICB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5fZW5mb3JjZVNlY3VyaXR5R3JvdXBJbmJvdW5kUnVsZXNPblByaXZhdGVMaW5rVHJhZmZpYyA9PT0gdW5kZWZpbmVkXG4gICAgKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5fZW5mb3JjZVNlY3VyaXR5R3JvdXBJbmJvdW5kUnVsZXNPblByaXZhdGVMaW5rVHJhZmZpY1xuICAgICAgPyBcIm9uXCJcbiAgICAgIDogXCJvZmZcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBsaXN0ZW5lciB0byB0aGlzIGxvYWQgYmFsYW5jZXJcbiAgICpcbiAgICogQHJldHVybnMgVGhlIG5ld2x5IGNyZWF0ZWQgbGlzdGVuZXJcbiAgICovXG4gIHB1YmxpYyBhZGRMaXN0ZW5lcihcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBCYXNlTmV0d29ya0xpc3RlbmVyUHJvcHMsXG4gICk6IE5ldHdvcmtMaXN0ZW5lciB7XG4gICAgLy8gVURQIGxpc3RlbmVyIHdpdGggZHVhbCBzdGFjayBOTEIgcmVxdWlyZXMgcHJlZml4IElQdjYgc291cmNlIE5BVCB0byBiZSBlbmFibGVkXG4gICAgaWYgKFxuICAgICAgKHByb3BzLnByb3RvY29sID09PSBMYlByb3RvY29sLlVEUCB8fFxuICAgICAgICBwcm9wcy5wcm90b2NvbCA9PT0gTGJQcm90b2NvbC5UQ1BfVURQKSAmJlxuICAgICAgKHRoaXMuaXBBZGRyZXNzVHlwZSA9PT0gSXBBZGRyZXNzVHlwZS5EVUFMX1NUQUNLIHx8XG4gICAgICAgIHRoaXMuaXBBZGRyZXNzVHlwZSA9PT0gSXBBZGRyZXNzVHlwZS5EVUFMX1NUQUNLX1dJVEhPVVRfUFVCTElDX0lQVjQpIC8vICYmXG4gICAgICAvLyB0aGlzLmVuYWJsZVByZWZpeEZvcklwdjZTb3VyY2VOYXQgIT09IHRydWVcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJUbyBhZGQgYSBsaXN0ZW5lciB3aXRoIFVEUCBwcm90b2NvbCB0byBhIGR1YWwgc3RhY2sgTkxCLCBtaXNzaW5nIGluIHRlcnJhZm9ybSBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLXByb3ZpZGVyLWF3cy9pc3N1ZXMvNDAzNzkuXCIsXG4gICAgICApO1xuICAgICAgLy8gdGhyb3cgbmV3IEVycm9yKFxuICAgICAgLy8gICBcIlRvIGFkZCBhIGxpc3RlbmVyIHdpdGggVURQIHByb3RvY29sIHRvIGEgZHVhbCBzdGFjayBOTEIsICdlbmFibGVQcmVmaXhGb3JJcHY2U291cmNlTmF0JyBtdXN0IGJlIHNldCB0byB0cnVlLlwiLFxuICAgICAgLy8gKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBOZXR3b3JrTGlzdGVuZXIodGhpcywgaWQsIHtcbiAgICAgIGxvYWRCYWxhbmNlcjogdGhpcyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHNlY3VyaXR5IGdyb3VwIHRvIHRoaXMgbG9hZCBiYWxhbmNlclxuICAgKi9cbiAgcHVibGljIGFkZFNlY3VyaXR5R3JvdXAoc2VjdXJpdHlHcm91cDogSVNlY3VyaXR5R3JvdXApIHtcbiAgICB0aGlzLmNvbm5lY3Rpb25zLmFkZFNlY3VyaXR5R3JvdXAoc2VjdXJpdHlHcm91cCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBnaXZlbiBuYW1lZCBtZXRyaWMgZm9yIHRoaXMgTmV0d29yayBMb2FkIEJhbGFuY2VyXG4gICAqXG4gICAqIEBkZWZhdWx0IEF2ZXJhZ2Ugb3ZlciA1IG1pbnV0ZXNcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBgTmV0d29ya0xvYWRCYWxhbmNlci5tZXRyaWNzLmN1c3RvbWBgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBtZXRyaWMoXG4gICAgbWV0cmljTmFtZTogc3RyaW5nLFxuICAgIHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zLFxuICApOiBjbG91ZHdhdGNoLk1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICBuYW1lc3BhY2U6IFwiQVdTL05ldHdvcmtFTEJcIixcbiAgICAgIG1ldHJpY05hbWUsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IExvYWRCYWxhbmNlcjogdGhpcy5sb2FkQmFsYW5jZXJGdWxsTmFtZSB9LFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSkuYXR0YWNoVG8odGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiBjb25jdXJyZW50IFRDUCBmbG93cyAob3IgY29ubmVjdGlvbnMpIGZyb20gY2xpZW50cyB0byB0YXJnZXRzLlxuICAgKlxuICAgKiBUaGlzIG1ldHJpYyBpbmNsdWRlcyBjb25uZWN0aW9ucyBpbiB0aGUgU1lOX1NFTlQgYW5kIEVTVEFCTElTSEVEIHN0YXRlcy5cbiAgICogVENQIGNvbm5lY3Rpb25zIGFyZSBub3QgdGVybWluYXRlZCBhdCB0aGUgbG9hZCBiYWxhbmNlciwgc28gYSBjbGllbnRcbiAgICogb3BlbmluZyBhIFRDUCBjb25uZWN0aW9uIHRvIGEgdGFyZ2V0IGNvdW50cyBhcyBhIHNpbmdsZSBmbG93LlxuICAgKlxuICAgKiBAZGVmYXVsdCBBdmVyYWdlIG92ZXIgNSBtaW51dGVzXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgYE5ldHdvcmtMb2FkQmFsYW5jZXIubWV0cmljcy5hY3RpdmVGbG93Q291bnRgYCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgbWV0cmljQWN0aXZlRmxvd0NvdW50KHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljcy5hY3RpdmVGbG93Q291bnQocHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgbG9hZCBiYWxhbmNlciBjYXBhY2l0eSB1bml0cyAoTENVKSB1c2VkIGJ5IHlvdXIgbG9hZCBiYWxhbmNlci5cbiAgICpcbiAgICogQGRlZmF1bHQgU3VtIG92ZXIgNSBtaW51dGVzXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgYE5ldHdvcmtMb2FkQmFsYW5jZXIubWV0cmljcy5hY3RpdmVGbG93Q291bnRgYCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgbWV0cmljQ29uc3VtZWRMQ1VzKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljcy5jb25zdW1lZExDVXMocHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgdGFyZ2V0cyB0aGF0IGFyZSBjb25zaWRlcmVkIGhlYWx0aHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IEF2ZXJhZ2Ugb3ZlciA1IG1pbnV0ZXNcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBgTmV0d29ya1RhcmdldEdyb3VwLm1ldHJpY0hlYWx0aHlIb3N0Q291bnRgYCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgbWV0cmljSGVhbHRoeUhvc3RDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYyhcIkhlYWx0aHlIb3N0Q291bnRcIiwge1xuICAgICAgc3RhdGlzdGljOiBcIkF2ZXJhZ2VcIixcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgdGFyZ2V0cyB0aGF0IGFyZSBjb25zaWRlcmVkIHVuaGVhbHRoeS5cbiAgICpcbiAgICogQGRlZmF1bHQgQXZlcmFnZSBvdmVyIDUgbWludXRlc1xuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGBOZXR3b3JrVGFyZ2V0R3JvdXAubWV0cmljVW5IZWFsdGh5SG9zdENvdW50YGAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIG1ldHJpY1VuSGVhbHRoeUhvc3RDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYyhcIlVuSGVhbHRoeUhvc3RDb3VudFwiLCB7XG4gICAgICBzdGF0aXN0aWM6IFwiQXZlcmFnZVwiLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiBuZXcgVENQIGZsb3dzIChvciBjb25uZWN0aW9ucykgZXN0YWJsaXNoZWQgZnJvbSBjbGllbnRzIHRvIHRhcmdldHMgaW4gdGhlIHRpbWUgcGVyaW9kLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTdW0gb3ZlciA1IG1pbnV0ZXNcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBgTmV0d29ya0xvYWRCYWxhbmNlci5tZXRyaWNzLm5ld0Zsb3dDb3VudGBgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBtZXRyaWNOZXdGbG93Q291bnQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNzLm5ld0Zsb3dDb3VudChwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBwcm9jZXNzZWQgYnkgdGhlIGxvYWQgYmFsYW5jZXIsIGluY2x1ZGluZyBUQ1AvSVAgaGVhZGVycy5cbiAgICpcbiAgICogQGRlZmF1bHQgU3VtIG92ZXIgNSBtaW51dGVzXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgYE5ldHdvcmtMb2FkQmFsYW5jZXIubWV0cmljcy5wcm9jZXNzZWRCeXRlc2BgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBtZXRyaWNQcm9jZXNzZWRCeXRlcyhwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY3MucHJvY2Vzc2VkQnl0ZXMocHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2YgcmVzZXQgKFJTVCkgcGFja2V0cyBzZW50IGZyb20gYSBjbGllbnQgdG8gYSB0YXJnZXQuXG4gICAqXG4gICAqIFRoZXNlIHJlc2V0cyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBjbGllbnQgYW5kIGZvcndhcmRlZCBieSB0aGUgbG9hZCBiYWxhbmNlci5cbiAgICpcbiAgICogQGRlZmF1bHQgU3VtIG92ZXIgNSBtaW51dGVzXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgYE5ldHdvcmtMb2FkQmFsYW5jZXIubWV0cmljcy50Y3BDbGllbnRSZXNldENvdW50YGAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIG1ldHJpY1RjcENsaWVudFJlc2V0Q291bnQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNzLnRjcENsaWVudFJlc2V0Q291bnQocHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2YgcmVzZXQgKFJTVCkgcGFja2V0cyBnZW5lcmF0ZWQgYnkgdGhlIGxvYWQgYmFsYW5jZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IFN1bSBvdmVyIDUgbWludXRlc1xuICAgKiBAZGVwcmVjYXRlZCBVc2UgYGBOZXR3b3JrTG9hZEJhbGFuY2VyLm1ldHJpY3MudGNwRWxiUmVzZXRDb3VudGBgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBtZXRyaWNUY3BFbGJSZXNldENvdW50KHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljcy50Y3BFbGJSZXNldENvdW50KHByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIHJlc2V0IChSU1QpIHBhY2tldHMgc2VudCBmcm9tIGEgdGFyZ2V0IHRvIGEgY2xpZW50LlxuICAgKlxuICAgKiBUaGVzZSByZXNldHMgYXJlIGdlbmVyYXRlZCBieSB0aGUgdGFyZ2V0IGFuZCBmb3J3YXJkZWQgYnkgdGhlIGxvYWQgYmFsYW5jZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IFN1bSBvdmVyIDUgbWludXRlc1xuICAgKiBAZGVwcmVjYXRlZCBVc2UgYGBOZXR3b3JrTG9hZEJhbGFuY2VyLm1ldHJpY3MudGNwVGFyZ2V0UmVzZXRDb3VudGBgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBtZXRyaWNUY3BUYXJnZXRSZXNldENvdW50KHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljcy50Y3BUYXJnZXRSZXNldENvdW50KHByb3BzKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnRhaW5zIGFsbCBtZXRyaWNzIGZvciBhIE5ldHdvcmsgTG9hZCBCYWxhbmNlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTmV0d29ya0xvYWRCYWxhbmNlck1ldHJpY3Mge1xuICAvKipcbiAgICogUmV0dXJuIHRoZSBnaXZlbiBuYW1lZCBtZXRyaWMgZm9yIHRoaXMgTmV0d29yayBMb2FkIEJhbGFuY2VyXG4gICAqXG4gICAqIEBkZWZhdWx0IEF2ZXJhZ2Ugb3ZlciA1IG1pbnV0ZXNcbiAgICovXG4gIGN1c3RvbShcbiAgICBtZXRyaWNOYW1lOiBzdHJpbmcsXG4gICAgcHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMsXG4gICk6IGNsb3Vkd2F0Y2guTWV0cmljO1xuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIGNvbmN1cnJlbnQgVENQIGZsb3dzIChvciBjb25uZWN0aW9ucykgZnJvbSBjbGllbnRzIHRvIHRhcmdldHMuXG4gICAqXG4gICAqIFRoaXMgbWV0cmljIGluY2x1ZGVzIGNvbm5lY3Rpb25zIGluIHRoZSBTWU5fU0VOVCBhbmQgRVNUQUJMSVNIRUQgc3RhdGVzLlxuICAgKiBUQ1AgY29ubmVjdGlvbnMgYXJlIG5vdCB0ZXJtaW5hdGVkIGF0IHRoZSBsb2FkIGJhbGFuY2VyLCBzbyBhIGNsaWVudFxuICAgKiBvcGVuaW5nIGEgVENQIGNvbm5lY3Rpb24gdG8gYSB0YXJnZXQgY291bnRzIGFzIGEgc2luZ2xlIGZsb3cuXG4gICAqXG4gICAqIEBkZWZhdWx0IEF2ZXJhZ2Ugb3ZlciA1IG1pbnV0ZXNcbiAgICovXG4gIGFjdGl2ZUZsb3dDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGxvYWQgYmFsYW5jZXIgY2FwYWNpdHkgdW5pdHMgKExDVSkgdXNlZCBieSB5b3VyIGxvYWQgYmFsYW5jZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IFN1bSBvdmVyIDUgbWludXRlc1xuICAgKi9cbiAgY29uc3VtZWRMQ1VzKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWM7XG5cbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2YgbmV3IFRDUCBmbG93cyAob3IgY29ubmVjdGlvbnMpIGVzdGFibGlzaGVkIGZyb20gY2xpZW50cyB0byB0YXJnZXRzIGluIHRoZSB0aW1lIHBlcmlvZC5cbiAgICpcbiAgICogQGRlZmF1bHQgU3VtIG92ZXIgNSBtaW51dGVzXG4gICAqL1xuICBuZXdGbG93Q291bnQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYztcblxuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBwcm9jZXNzZWQgYnkgdGhlIGxvYWQgYmFsYW5jZXIsIGluY2x1ZGluZyBUQ1AvSVAgaGVhZGVycy5cbiAgICpcbiAgICogQGRlZmF1bHQgU3VtIG92ZXIgNSBtaW51dGVzXG4gICAqL1xuICBwcm9jZXNzZWRCeXRlcyhwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljO1xuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIHJlc2V0IChSU1QpIHBhY2tldHMgc2VudCBmcm9tIGEgY2xpZW50IHRvIGEgdGFyZ2V0LlxuICAgKlxuICAgKiBUaGVzZSByZXNldHMgYXJlIGdlbmVyYXRlZCBieSB0aGUgY2xpZW50IGFuZCBmb3J3YXJkZWQgYnkgdGhlIGxvYWQgYmFsYW5jZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IFN1bSBvdmVyIDUgbWludXRlc1xuICAgKi9cbiAgdGNwQ2xpZW50UmVzZXRDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljO1xuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIHJlc2V0IChSU1QpIHBhY2tldHMgZ2VuZXJhdGVkIGJ5IHRoZSBsb2FkIGJhbGFuY2VyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTdW0gb3ZlciA1IG1pbnV0ZXNcbiAgICovXG4gIHRjcEVsYlJlc2V0Q291bnQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYztcblxuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiByZXNldCAoUlNUKSBwYWNrZXRzIHNlbnQgZnJvbSBhIHRhcmdldCB0byBhIGNsaWVudC5cbiAgICpcbiAgICogVGhlc2UgcmVzZXRzIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIHRhcmdldCBhbmQgZm9yd2FyZGVkIGJ5IHRoZSBsb2FkIGJhbGFuY2VyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTdW0gb3ZlciA1IG1pbnV0ZXNcbiAgICovXG4gIHRjcFRhcmdldFJlc2V0Q291bnQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYztcbn1cblxuLyoqXG4gKiBBIG5ldHdvcmsgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIElOZXR3b3JrTG9hZEJhbGFuY2VyXG4gIGV4dGVuZHMgSUxvYWRCYWxhbmNlclYyLFxuICAgIElWcGNFbmRwb2ludFNlcnZpY2VMb2FkQmFsYW5jZXIsXG4gICAgSUNvbm5lY3RhYmxlIHtcbiAgLyoqXG4gICAqIFRoZSBWUEMgdGhpcyBsb2FkIGJhbGFuY2VyIGhhcyBiZWVuIGNyZWF0ZWQgaW4gKGlmIGF2YWlsYWJsZSlcbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IElWcGM7XG5cbiAgLyoqXG4gICAqIEFsbCBtZXRyaWNzIGF2YWlsYWJsZSBmb3IgdGhpcyBsb2FkIGJhbGFuY2VyXG4gICAqL1xuICByZWFkb25seSBtZXRyaWNzOiBJTmV0d29ya0xvYWRCYWxhbmNlck1ldHJpY3M7XG5cbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBsb2FkIGJhbGFuY2VyXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3Vwcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBJUCBhZGRyZXNzZXMgdG8gdXNlXG4gICAqXG4gICAqIEBkZWZhdWx0IElwQWRkcmVzc1R5cGUuSVBWNFxuICAgKi9cbiAgcmVhZG9ubHkgaXBBZGRyZXNzVHlwZT86IElwQWRkcmVzc1R5cGU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGV2YWx1YXRlIGluYm91bmQgc2VjdXJpdHkgZ3JvdXAgcnVsZXMgZm9yIHRyYWZmaWMgc2VudCB0byBhIE5ldHdvcmsgTG9hZCBCYWxhbmNlciB0aHJvdWdoIEFXUyBQcml2YXRlTGlua1xuICAgKlxuICAgKiBAZGVmYXVsdCBvblxuICAgKi9cbiAgcmVhZG9ubHkgZW5mb3JjZVNlY3VyaXR5R3JvdXBJbmJvdW5kUnVsZXNPblByaXZhdGVMaW5rVHJhZmZpYz86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkIGEgbGlzdGVuZXIgdG8gdGhpcyBsb2FkIGJhbGFuY2VyXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBuZXdseSBjcmVhdGVkIGxpc3RlbmVyXG4gICAqL1xuICBhZGRMaXN0ZW5lcihpZDogc3RyaW5nLCBwcm9wczogQmFzZU5ldHdvcmtMaXN0ZW5lclByb3BzKTogTmV0d29ya0xpc3RlbmVyO1xufVxuXG4vLyBUT0RPOiBBZGQgR3JpZCBMb29rdXAgc3VwcG9ydFxuLy8gY2xhc3MgTG9va2VkVXBOZXR3b3JrTG9hZEJhbGFuY2VyXG4vLyAgIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZVxuLy8gICBpbXBsZW1lbnRzIElOZXR3b3JrTG9hZEJhbGFuY2VyXG4vLyB7XG4vLyAgIHB1YmxpYyByZWFkb25seSBsb2FkQmFsYW5jZXJDYW5vbmljYWxIb3N0ZWRab25lSWQ6IHN0cmluZztcbi8vICAgcHVibGljIHJlYWRvbmx5IGxvYWRCYWxhbmNlckRuc05hbWU6IHN0cmluZztcbi8vICAgcHVibGljIHJlYWRvbmx5IGxvYWRCYWxhbmNlckFybjogc3RyaW5nO1xuLy8gICBwdWJsaWMgcmVhZG9ubHkgdnBjPzogSVZwYztcbi8vICAgcHVibGljIHJlYWRvbmx5IG1ldHJpY3M6IElOZXR3b3JrTG9hZEJhbGFuY2VyTWV0cmljcztcbi8vICAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogc3RyaW5nW107XG4vLyAgIHB1YmxpYyByZWFkb25seSBpcEFkZHJlc3NUeXBlPzogSXBBZGRyZXNzVHlwZTtcbi8vICAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcblxuLy8gICBjb25zdHJ1Y3Rvcihcbi8vICAgICBzY29wZTogQ29uc3RydWN0LFxuLy8gICAgIGlkOiBzdHJpbmcsXG4vLyAgICAgcHJvcHM6IGN4YXBpLkxvYWRCYWxhbmNlckNvbnRleHRSZXNwb25zZSxcbi8vICAgKSB7XG4vLyAgICAgc3VwZXIoc2NvcGUsIGlkLCB7IGVudmlyb25tZW50RnJvbUFybjogcHJvcHMubG9hZEJhbGFuY2VyQXJuIH0pO1xuXG4vLyAgICAgdGhpcy5sb2FkQmFsYW5jZXJBcm4gPSBwcm9wcy5sb2FkQmFsYW5jZXJBcm47XG4vLyAgICAgdGhpcy5sb2FkQmFsYW5jZXJDYW5vbmljYWxIb3N0ZWRab25lSWQgPVxuLy8gICAgICAgcHJvcHMubG9hZEJhbGFuY2VyQ2Fub25pY2FsSG9zdGVkWm9uZUlkO1xuLy8gICAgIHRoaXMubG9hZEJhbGFuY2VyRG5zTmFtZSA9IHByb3BzLmxvYWRCYWxhbmNlckRuc05hbWU7XG4vLyAgICAgdGhpcy5tZXRyaWNzID0gbmV3IE5ldHdvcmtMb2FkQmFsYW5jZXJNZXRyaWNzKFxuLy8gICAgICAgdGhpcyxcbi8vICAgICAgIHBhcnNlTG9hZEJhbGFuY2VyRnVsbE5hbWUocHJvcHMubG9hZEJhbGFuY2VyQXJuKSxcbi8vICAgICApO1xuLy8gICAgIHRoaXMuc2VjdXJpdHlHcm91cHMgPSBwcm9wcy5zZWN1cml0eUdyb3VwSWRzO1xuLy8gICAgIHRoaXMuY29ubmVjdGlvbnMgPSBuZXcgQ29ubmVjdGlvbnMoe1xuLy8gICAgICAgc2VjdXJpdHlHcm91cHM6IHByb3BzLnNlY3VyaXR5R3JvdXBJZHMubWFwKChzZWN1cml0eUdyb3VwSWQsIGluZGV4KSA9PlxuLy8gICAgICAgICBTZWN1cml0eUdyb3VwLmZyb21Mb29rdXBCeUlkKFxuLy8gICAgICAgICAgIHRoaXMsXG4vLyAgICAgICAgICAgYFNlY3VyaXR5R3JvdXAtJHtpbmRleH1gLFxuLy8gICAgICAgICAgIHNlY3VyaXR5R3JvdXBJZCxcbi8vICAgICAgICAgKSxcbi8vICAgICAgICksXG4vLyAgICAgfSk7XG5cbi8vICAgICBpZiAocHJvcHMuaXBBZGRyZXNzVHlwZSA9PT0gY3hhcGkuTG9hZEJhbGFuY2VySXBBZGRyZXNzVHlwZS5JUFY0KSB7XG4vLyAgICAgICB0aGlzLmlwQWRkcmVzc1R5cGUgPSBJcEFkZHJlc3NUeXBlLklQVjQ7XG4vLyAgICAgfSBlbHNlIGlmIChcbi8vICAgICAgIHByb3BzLmlwQWRkcmVzc1R5cGUgPT09IGN4YXBpLkxvYWRCYWxhbmNlcklwQWRkcmVzc1R5cGUuRFVBTF9TVEFDS1xuLy8gICAgICkge1xuLy8gICAgICAgdGhpcy5pcEFkZHJlc3NUeXBlID0gSXBBZGRyZXNzVHlwZS5EVUFMX1NUQUNLO1xuLy8gICAgIH1cblxuLy8gICAgIHRoaXMudnBjID0gVnBjLmZyb21Mb29rdXAodGhpcywgXCJWcGNcIiwge1xuLy8gICAgICAgdnBjSWQ6IHByb3BzLnZwY0lkLFxuLy8gICAgIH0pO1xuLy8gICB9XG5cbi8vICAgcHVibGljIGFkZExpc3RlbmVyKFxuLy8gICAgIGxpZDogc3RyaW5nLFxuLy8gICAgIHByb3BzOiBCYXNlTmV0d29ya0xpc3RlbmVyUHJvcHMsXG4vLyAgICk6IE5ldHdvcmtMaXN0ZW5lciB7XG4vLyAgICAgcmV0dXJuIG5ldyBOZXR3b3JrTGlzdGVuZXIodGhpcywgbGlkLCB7XG4vLyAgICAgICBsb2FkQmFsYW5jZXI6IHRoaXMsXG4vLyAgICAgICAuLi5wcm9wcyxcbi8vICAgICB9KTtcbi8vICAgfVxuLy8gfVxuIl19
@@ -182,7 +182,7 @@ class NetworkTargetGroup extends base_target_group_1.TargetGroupBase {
182
182
  }
183
183
  exports.NetworkTargetGroup = NetworkTargetGroup;
184
184
  _a = JSII_RTTI_SYMBOL_1;
185
- NetworkTargetGroup[_a] = { fqn: "terraconstructs.aws.compute.NetworkTargetGroup", version: "0.0.20" };
185
+ NetworkTargetGroup[_a] = { fqn: "terraconstructs.aws.compute.NetworkTargetGroup", version: "0.0.22" };
186
186
  /**
187
187
  * An imported network target group
188
188
  */
@@ -62,7 +62,7 @@ class Peer {
62
62
  }
63
63
  exports.Peer = Peer;
64
64
  _a = JSII_RTTI_SYMBOL_1;
65
- Peer[_a] = { fqn: "terraconstructs.aws.compute.Peer", version: "0.0.20" };
65
+ Peer[_a] = { fqn: "terraconstructs.aws.compute.Peer", version: "0.0.22" };
66
66
  /**
67
67
  * A connection to and from a given IP range
68
68
  */
@@ -129,5 +129,5 @@ class PlacementGroup extends aws_construct_1.AwsConstructBase {
129
129
  }
130
130
  exports.PlacementGroup = PlacementGroup;
131
131
  _a = JSII_RTTI_SYMBOL_1;
132
- PlacementGroup[_a] = { fqn: "terraconstructs.aws.compute.PlacementGroup", version: "0.0.20" };
132
+ PlacementGroup[_a] = { fqn: "terraconstructs.aws.compute.PlacementGroup", version: "0.0.22" };
133
133
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2VtZW50LWdyb3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9jb21wdXRlL3BsYWNlbWVudC1ncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1HQUFtRztBQUVuRyxzREFBcUQ7QUFFckQsb0RBSTBCO0FBMkcxQjs7R0FFRztBQUNILElBQVkseUJBZ0JYO0FBaEJELFdBQVkseUJBQXlCO0lBQ25DOzs7OztPQUtHO0lBQ0gsMENBQWEsQ0FBQTtJQUViOzs7OztPQUtHO0lBQ0gsMENBQWEsQ0FBQTtBQUNmLENBQUMsRUFoQlcseUJBQXlCLHlDQUF6Qix5QkFBeUIsUUFnQnBDO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLHNCQXdCWDtBQXhCRCxXQUFZLHNCQUFzQjtJQUNoQzs7Ozs7T0FLRztJQUNILDZDQUFtQixDQUFBO0lBRW5COzs7Ozs7O09BT0c7SUFDSCxpREFBdUIsQ0FBQTtJQUV2Qjs7O09BR0c7SUFDSCwyQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBeEJXLHNCQUFzQixzQ0FBdEIsc0JBQXNCLFFBd0JqQztBQUVEOzs7R0FHRztBQUNILE1BQWEsY0FDWCxTQUFRLGdDQUFnQjtJQUd4Qjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxzQkFBc0IsQ0FDbEMsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLGtCQUEwQjtRQUUxQixNQUFNLE1BQU8sU0FBUSxnQ0FBZ0I7WUFBckM7O2dCQVNrQix1QkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztZQUMxRCxDQUFDO1lBVEMsSUFBVyxxQkFBcUI7Z0JBQzlCLE9BQU87b0JBQ0wsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtpQkFDNUMsQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFXLE9BQU87Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO1lBQ3BDLENBQUM7U0FFRjtRQUVELE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFPRCxJQUFXLHFCQUFxQjtRQUM5QixPQUFPO1lBQ0wsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtTQUM1QyxDQUFDO0lBQ0osQ0FBQztJQUNELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDO0lBSUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUE2QixFQUFFO1FBQ3ZFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sa0JBQWtCLEdBQ3RCLEtBQUssQ0FBQyxrQkFBa0I7WUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUTthQUN0QixDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxFQUFFLFFBQVEsQ0FBQztRQUVoQyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RDLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDeEQsTUFBTSxJQUFJLEtBQUssQ0FDYixtQkFBbUIsRUFBRSwrREFBK0QsQ0FDckYsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsc0JBQXNCLENBQUMsU0FBUyxDQUFDO1FBQ25ELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQztZQUNoRCxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNwRCxNQUFNLElBQUksS0FBSyxDQUNiLG1CQUFtQixFQUFFLDZEQUE2RCxDQUNuRixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksNkJBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNsRSxJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLGNBQWMsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMvQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksc0JBQXNCLENBQUMsT0FBTztTQUMxRCxDQUFDLENBQUM7UUFFSCx3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzNDLDhIQUE4SDtRQUM5SCxxREFBcUQ7UUFDckQsc0JBQXNCO1FBQ3RCLHFDQUFxQztRQUNyQyxxQ0FBcUM7UUFDckMsTUFBTTtJQUNSLENBQUM7O0FBM0ZILHdDQTRGQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE3NS4xL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1lYzIvbGliL3BsYWNlbWVudC1ncm91cC50c1xuXG5pbXBvcnQgeyBwbGFjZW1lbnRHcm91cCB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5cbi8qKlxuICogT3V0cHV0cyB3aGljaCBtYXkgYmUgcmVnaXN0ZXJlZCBmb3Igb3V0cHV0IHZpYSB0aGUgR3JpZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbGFjZW1lbnRHcm91cE91dHB1dHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhpcyBwbGFjZW1lbnQgZ3JvdXBcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcGxhY2VtZW50R3JvdXBOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGVyZSB5b3VyIGluc3RhbmNlcyBhcmUgcGxhY2VkIG9uIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIFBsYWNlbWVudEdyb3VwU3RyYXRlZ3lcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9wbGFjZW1lbnQtZ3JvdXBzLmh0bWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUGxhY2VtZW50R3JvdXAgZXh0ZW5kcyBJQXdzQ29uc3RydWN0IHtcbiAgLyoqIFN0cm9uZ2x5IHR5cGVkIG91dHB1dHMgKi9cbiAgcmVhZG9ubHkgcGxhY2VtZW50R3JvdXBPdXRwdXRzOiBQbGFjZW1lbnRHcm91cE91dHB1dHM7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoaXMgcGxhY2VtZW50IGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHBsYWNlbWVudEdyb3VwTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHBhcnRpdGlvbnMuIFZhbGlkIG9ubHkgd2hlbiBTdHJhdGVneSBpcyBzZXQgdG8gUEFSVElUSU9OLlxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICByZWFkb25seSBwYXJ0aXRpb25zPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBQbGFjZXMgaW5zdGFuY2VzIG9uIGRpc3RpbmN0IGhhcmR3YXJlLiBTcHJlYWQgcGxhY2VtZW50IGdyb3VwcyBhcmUgcmVjb21tZW5kZWQgZm9yIGFwcGxpY2F0aW9uc1xuICAgKiB0aGF0IGhhdmUgYSBzbWFsbCBudW1iZXIgb2YgY3JpdGljYWwgaW5zdGFuY2VzIHRoYXQgc2hvdWxkIGJlIGtlcHQgc2VwYXJhdGUgZnJvbSBlYWNoIG90aGVyLlxuICAgKiBMYXVuY2hpbmcgaW5zdGFuY2VzIGluIGEgc3ByZWFkIGxldmVsIHBsYWNlbWVudCBncm91cCByZWR1Y2VzIHRoZSByaXNrIG9mIHNpbXVsdGFuZW91cyBmYWlsdXJlc1xuICAgKiB0aGF0IG1pZ2h0IG9jY3VyIHdoZW4gaW5zdGFuY2VzIHNoYXJlIHRoZSBzYW1lIGVxdWlwbWVudC5cbiAgICogU3ByZWFkIGxldmVsIHBsYWNlbWVudCBncm91cHMgcHJvdmlkZSBhY2Nlc3MgdG8gZGlzdGluY3QgaGFyZHdhcmUsXG4gICAqIGFuZCBhcmUgdGhlcmVmb3JlIHN1aXRhYmxlIGZvciBtaXhpbmcgaW5zdGFuY2UgdHlwZXMgb3IgbGF1bmNoaW5nIGluc3RhbmNlcyBvdmVyIHRpbWUuXG4gICAqIElmIHlvdSBzdGFydCBvciBsYXVuY2ggYW4gaW5zdGFuY2UgaW4gYSBzcHJlYWQgcGxhY2VtZW50IGdyb3VwIGFuZCB0aGVyZSBpcyBpbnN1ZmZpY2llbnRcbiAgICogdW5pcXVlIGhhcmR3YXJlIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3QsIHRoZSByZXF1ZXN0IGZhaWxzLiBBbWF6b24gRUMyIG1ha2VzIG1vcmUgZGlzdGluY3QgaGFyZHdhcmVcbiAgICogYXZhaWxhYmxlIG92ZXIgdGltZSwgc28geW91IGNhbiB0cnkgeW91ciByZXF1ZXN0IGFnYWluIGxhdGVyLlxuICAgKiBQbGFjZW1lbnQgZ3JvdXBzIGNhbiBzcHJlYWQgaW5zdGFuY2VzIGFjcm9zcyByYWNrcyBvciBob3N0cy5cbiAgICogWW91IGNhbiB1c2UgaG9zdCBsZXZlbCBzcHJlYWQgcGxhY2VtZW50IGdyb3VwcyBvbmx5IHdpdGggQVdTIE91dHBvc3RzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHNwcmVhZCBsZXZlbFxuICAgKi9cbiAgcmVhZG9ubHkgc3ByZWFkTGV2ZWw/OiBQbGFjZW1lbnRHcm91cFNwcmVhZExldmVsO1xuXG4gIC8qKlxuICAgKiBXaGljaCBzdHJhdGVneSB0byB1c2Ugd2hlbiBsYXVuY2hpbmcgaW5zdGFuY2VzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYFBsYWNlbWVudEdyb3VwU3RyYXRlZ3kuUEFSVElUSU9OYCBpZiBgcGFydGl0aW9uc2AgaXMgZGVmaW5lZCwgYENMVVNURVJgIG90aGVyd2lzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RyYXRlZ3k/OiBQbGFjZW1lbnRHcm91cFN0cmF0ZWd5O1xufVxuXG4vKipcbiAqIFByb3BzIGZvciBhIFBsYWNlbWVudEdyb3VwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxhY2VtZW50R3JvdXBQcm9wcyBleHRlbmRzIEF3c0NvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIHRoZSBuYW1lIG9mIHRoaXMgcGxhY2VtZW50IGdyb3VwXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZ2VuZXJhdGVkIGJ5IENGTlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBwbGFjZW1lbnRHcm91cE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcGFydGl0aW9ucy4gVmFsaWQgb25seSB3aGVuIFN0cmF0ZWd5IGlzIHNldCB0byBwYXJ0aXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IHBhcnRpdGlvbnM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFBsYWNlcyBpbnN0YW5jZXMgb24gZGlzdGluY3QgaGFyZHdhcmUuIFNwcmVhZCBwbGFjZW1lbnQgZ3JvdXBzIGFyZSByZWNvbW1lbmRlZCBmb3IgYXBwbGljYXRpb25zXG4gICAqIHRoYXQgaGF2ZSBhIHNtYWxsIG51bWJlciBvZiBjcml0aWNhbCBpbnN0YW5jZXMgdGhhdCBzaG91bGQgYmUga2VwdCBzZXBhcmF0ZSBmcm9tIGVhY2ggb3RoZXIuXG4gICAqIExhdW5jaGluZyBpbnN0YW5jZXMgaW4gYSBzcHJlYWQgbGV2ZWwgcGxhY2VtZW50IGdyb3VwIHJlZHVjZXMgdGhlIHJpc2sgb2Ygc2ltdWx0YW5lb3VzIGZhaWx1cmVzXG4gICAqIHRoYXQgbWlnaHQgb2NjdXIgd2hlbiBpbnN0YW5jZXMgc2hhcmUgdGhlIHNhbWUgZXF1aXBtZW50LlxuICAgKiBTcHJlYWQgbGV2ZWwgcGxhY2VtZW50IGdyb3VwcyBwcm92aWRlIGFjY2VzcyB0byBkaXN0aW5jdCBoYXJkd2FyZSxcbiAgICogYW5kIGFyZSB0aGVyZWZvcmUgc3VpdGFibGUgZm9yIG1peGluZyBpbnN0YW5jZSB0eXBlcyBvciBsYXVuY2hpbmcgaW5zdGFuY2VzIG92ZXIgdGltZS5cbiAgICogSWYgeW91IHN0YXJ0IG9yIGxhdW5jaCBhbiBpbnN0YW5jZSBpbiBhIHNwcmVhZCBwbGFjZW1lbnQgZ3JvdXAgYW5kIHRoZXJlIGlzIGluc3VmZmljaWVudFxuICAgKiB1bmlxdWUgaGFyZHdhcmUgdG8gZnVsZmlsbCB0aGUgcmVxdWVzdCwgdGhlIHJlcXVlc3QgZmFpbHMuIEFtYXpvbiBFQzIgbWFrZXMgbW9yZSBkaXN0aW5jdCBoYXJkd2FyZVxuICAgKiBhdmFpbGFibGUgb3ZlciB0aW1lLCBzbyB5b3UgY2FuIHRyeSB5b3VyIHJlcXVlc3QgYWdhaW4gbGF0ZXIuXG4gICAqIFBsYWNlbWVudCBncm91cHMgY2FuIHNwcmVhZCBpbnN0YW5jZXMgYWNyb3NzIHJhY2tzIG9yIGhvc3RzLlxuICAgKiBZb3UgY2FuIHVzZSBob3N0IGxldmVsIHNwcmVhZCBwbGFjZW1lbnQgZ3JvdXBzIG9ubHkgd2l0aCBBV1MgT3V0cG9zdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc3ByZWFkIGxldmVsXG4gICAqL1xuICByZWFkb25seSBzcHJlYWRMZXZlbD86IFBsYWNlbWVudEdyb3VwU3ByZWFkTGV2ZWw7XG5cbiAgLyoqXG4gICAqIFdoaWNoIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIGxhdW5jaGluZyBpbnN0YW5jZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBgUGxhY2VtZW50R3JvdXBTdHJhdGVneS5QQVJUSVRJT05gIGlmIGBwYXJ0aXRpb25zYCBpcyBkZWZpbmVkLCBgQ0xVU1RFUmAgb3RoZXJ3aXNlXG4gICAqL1xuICByZWFkb25seSBzdHJhdGVneT86IFBsYWNlbWVudEdyb3VwU3RyYXRlZ3k7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBob3cgdGhpcyBwbGFjZW1lbnQgZ3JvdXAgc3ByZWFkcyBpbnN0YW5jZXNcbiAqL1xuZXhwb3J0IGVudW0gUGxhY2VtZW50R3JvdXBTcHJlYWRMZXZlbCB7XG4gIC8qKlxuICAgKiBIb3N0IHNwcmVhZCBsZXZlbCBwbGFjZW1lbnQgZ3JvdXBzIGFyZSBvbmx5IGF2YWlsYWJsZSB3aXRoIEFXUyBPdXRwb3N0cy5cbiAgICogRm9yIGhvc3Qgc3ByZWFkIGxldmVsIHBsYWNlbWVudCBncm91cHMsIHRoZXJlIGFyZSBubyByZXN0cmljdGlvbnMgZm9yIHJ1bm5pbmcgaW5zdGFuY2VzIHBlciBPdXRwb3N0cy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvcGxhY2VtZW50LWdyb3Vwcy1vdXRwb3N0Lmh0bWxcbiAgICovXG4gIEhPU1QgPSBcImhvc3RcIixcblxuICAvKipcbiAgICogRWFjaCBpbnN0YW5jZSBpcyBsYXVuY2hlZCBvbiBhIHNlcGFyYXRlIHJhY2suXG4gICAqIEVhY2ggaGFzIGl0cyBvd24gbmV0d29yayBhbmQgcG93ZXIgc291cmNlLlxuICAgKiBBIHJhY2sgc3ByZWFkIHBsYWNlbWVudCBncm91cCBjYW4gc3BhbiBtdWx0aXBsZSBBdmFpbGFiaWxpdHkgWm9uZXMgaW4gdGhlIHNhbWUgUmVnaW9uLlxuICAgKiBGb3IgcmFjayBzcHJlYWQgbGV2ZWwgcGxhY2VtZW50IGdyb3VwcywgeW91IGNhbiBoYXZlIGEgbWF4aW11bSBvZiBzZXZlbiBydW5uaW5nIGluc3RhbmNlcyBwZXIgQXZhaWxhYmlsaXR5IFpvbmUgcGVyIGdyb3VwLlxuICAgKi9cbiAgUkFDSyA9IFwicmFja1wiLFxufVxuXG4vKipcbiAqIFdoaWNoIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIGxhdW5jaGluZyBpbnN0YW5jZXNcbiAqL1xuZXhwb3J0IGVudW0gUGxhY2VtZW50R3JvdXBTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBQYWNrcyBpbnN0YW5jZXMgY2xvc2UgdG9nZXRoZXIgaW5zaWRlIGFuIEF2YWlsYWJpbGl0eSBab25lLlxuICAgKiBUaGlzIHN0cmF0ZWd5IGVuYWJsZXMgd29ya2xvYWRzIHRvIGFjaGlldmUgdGhlIGxvdy1sYXRlbmN5IG5ldHdvcmtcbiAgICogcGVyZm9ybWFuY2UgbmVjZXNzYXJ5IGZvciB0aWdodGx5LWNvdXBsZWQgbm9kZS10by1ub2RlIGNvbW11bmljYXRpb24gdGhhdFxuICAgKiBpcyB0eXBpY2FsIG9mIGhpZ2gtcGVyZm9ybWFuY2UgY29tcHV0aW5nIChIUEMpIGFwcGxpY2F0aW9ucy5cbiAgICovXG4gIENMVVNURVIgPSBcImNsdXN0ZXJcIixcblxuICAvKipcbiAgICogU3ByZWFkcyB5b3VyIGluc3RhbmNlcyBhY3Jvc3MgbG9naWNhbCBwYXJ0aXRpb25zIHN1Y2ggdGhhdCBncm91cHMgb2YgaW5zdGFuY2VzXG4gICAqIGluIG9uZSBwYXJ0aXRpb24gZG8gbm90IHNoYXJlIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIHdpdGggZ3JvdXBzIG9mIGluc3RhbmNlc1xuICAgKiBpbiBkaWZmZXJlbnQgcGFydGl0aW9ucy5cbiAgICpcbiAgICogVGhpcyBzdHJhdGVneSBpcyB0eXBpY2FsbHkgdXNlZCBieSBsYXJnZSBkaXN0cmlidXRlZCBhbmQgcmVwbGljYXRlZCB3b3JrbG9hZHMsXG4gICAqIHN1Y2ggYXMgSGFkb29wLCBDYXNzYW5kcmEsIGFuZCBLYWZrYS5cbiAgICovXG4gIFBBUlRJVElPTiA9IFwicGFydGl0aW9uXCIsXG5cbiAgLyoqXG4gICAqIFN0cmljdGx5IHBsYWNlcyBhIHNtYWxsIGdyb3VwIG9mIGluc3RhbmNlcyBhY3Jvc3MgZGlzdGluY3QgdW5kZXJseWluZyBoYXJkd2FyZVxuICAgKiB0byByZWR1Y2UgY29ycmVsYXRlZCBmYWlsdXJlcy5cbiAgICovXG4gIFNQUkVBRCA9IFwic3ByZWFkXCIsXG59XG5cbi8qKlxuICogRGVmaW5lcyBhIHBsYWNlbWVudCBncm91cC4gUGxhY2VtZW50IGdyb3VwcyBnaXZlIHlvdSBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyXG4gKiB3aGVyZSB5b3VyIGluc3RhbmNlcyBhcmUgcHJvdmlzaW9uZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBQbGFjZW1lbnRHcm91cFxuICBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2VcbiAgaW1wbGVtZW50cyBJUGxhY2VtZW50R3JvdXBcbntcbiAgLyoqXG4gICAqIEltcG9ydCBhIFBsYWNlbWVudEdyb3VwIGJ5IGl0cyBhcm5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVBsYWNlbWVudEdyb3VwTmFtZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcGxhY2VtZW50R3JvdXBOYW1lOiBzdHJpbmcsXG4gICk6IElQbGFjZW1lbnRHcm91cCB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElQbGFjZW1lbnRHcm91cCB7XG4gICAgICBwdWJsaWMgZ2V0IHBsYWNlbWVudEdyb3VwT3V0cHV0cygpOiBQbGFjZW1lbnRHcm91cE91dHB1dHMge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudEdyb3VwTmFtZTogdGhpcy5wbGFjZW1lbnRHcm91cE5hbWUsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYWNlbWVudEdyb3VwT3V0cHV0cztcbiAgICAgIH1cbiAgICAgIHB1YmxpYyByZWFkb25seSBwbGFjZW1lbnRHcm91cE5hbWUgPSBwbGFjZW1lbnRHcm91cE5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogcGxhY2VtZW50R3JvdXAuUGxhY2VtZW50R3JvdXA7XG5cbiAgcHVibGljIHJlYWRvbmx5IHBhcnRpdGlvbnM/OiBudW1iZXI7XG4gIHB1YmxpYyByZWFkb25seSBzcHJlYWRMZXZlbD86IFBsYWNlbWVudEdyb3VwU3ByZWFkTGV2ZWw7XG4gIHB1YmxpYyByZWFkb25seSBzdHJhdGVneT86IFBsYWNlbWVudEdyb3VwU3RyYXRlZ3k7XG4gIHB1YmxpYyBnZXQgcGxhY2VtZW50R3JvdXBPdXRwdXRzKCk6IFBsYWNlbWVudEdyb3VwT3V0cHV0cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBsYWNlbWVudEdyb3VwTmFtZTogdGhpcy5wbGFjZW1lbnRHcm91cE5hbWUsXG4gICAgfTtcbiAgfVxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMucGxhY2VtZW50R3JvdXBPdXRwdXRzO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IHBsYWNlbWVudEdyb3VwTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQbGFjZW1lbnRHcm91cFByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgICBjb25zdCBwbGFjZW1lbnRHcm91cE5hbWUgPVxuICAgICAgcHJvcHMucGxhY2VtZW50R3JvdXBOYW1lIHx8XG4gICAgICB0aGlzLnN0YWNrLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgIHByZWZpeDogdGhpcy5ncmlkVVVJRCxcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5wYXJ0aXRpb25zID0gcHJvcHMucGFydGl0aW9ucztcbiAgICB0aGlzLnNwcmVhZExldmVsID0gcHJvcHMuc3ByZWFkTGV2ZWw7XG4gICAgdGhpcy5zdHJhdGVneSA9IHByb3BzPy5zdHJhdGVneTtcblxuICAgIGlmICh0aGlzLnBhcnRpdGlvbnMgJiYgcHJvcHMuc3RyYXRlZ3kpIHtcbiAgICAgIGlmIChwcm9wcy5zdHJhdGVneSAhPT0gUGxhY2VtZW50R3JvdXBTdHJhdGVneS5QQVJUSVRJT04pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBQbGFjZW1lbnRHcm91cCAnJHtpZH0nIGNhbiBvbmx5IHNwZWNpZnkgJ3BhcnRpdGlvbnMnIHdpdGggdGhlICdQQVJUSVRJT04nIHN0cmF0ZWd5YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucGFydGl0aW9ucyAmJiAhcHJvcHMuc3RyYXRlZ3kpIHtcbiAgICAgIHRoaXMuc3RyYXRlZ3kgPSBQbGFjZW1lbnRHcm91cFN0cmF0ZWd5LlBBUlRJVElPTjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zcHJlYWRMZXZlbCkge1xuICAgICAgaWYgKCFwcm9wcy5zdHJhdGVneSkge1xuICAgICAgICB0aGlzLnN0cmF0ZWd5ID0gUGxhY2VtZW50R3JvdXBTdHJhdGVneS5TUFJFQUQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zdHJhdGVneSAhPT0gUGxhY2VtZW50R3JvdXBTdHJhdGVneS5TUFJFQUQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBQbGFjZW1lbnRHcm91cCAnJHtpZH0nIGNhbiBvbmx5IHNwZWNpZnkgJ3NwcmVhZExldmVsJyB3aXRoIHRoZSAnU1BSRUFEJyBzdHJhdGVneWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBwbGFjZW1lbnRHcm91cC5QbGFjZW1lbnRHcm91cCh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIG5hbWU6IHBsYWNlbWVudEdyb3VwTmFtZSxcbiAgICAgIHBhcnRpdGlvbkNvdW50OiB0aGlzLnBhcnRpdGlvbnMsXG4gICAgICBzcHJlYWRMZXZlbDogdGhpcy5zcHJlYWRMZXZlbCxcbiAgICAgIHN0cmF0ZWd5OiB0aGlzLnN0cmF0ZWd5ID8/IFBsYWNlbWVudEdyb3VwU3RyYXRlZ3kuQ0xVU1RFUixcbiAgICB9KTtcblxuICAgIC8vIFRPRE86IHVzZSBlbnZpcm9ubWVudC1zZW5zaXRpdmUgdG9rZW4gZm9yIHJlc291cmNlJ3MgXCJBUk5cIiBhdHRyaWJ1dGU/XG4gICAgdGhpcy5wbGFjZW1lbnRHcm91cE5hbWUgPSB0aGlzLnJlc291cmNlLmlkO1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL2EyYzYzM2YxZTY5ODI0OTQ5NmYxMTMzODMxMmFiNDJiZDdiMWU0ZjAvcGFja2FnZXMvYXdzLWNkay1saWIvY29yZS9saWIvcmVzb3VyY2UudHMjTDI4OFxuICAgIC8vIHRoaXMuZ2V0UmVzb3VyY2VBcm5BdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5uYW1lLCB7XG4gICAgLy8gICBzZXJ2aWNlOiBcImJhdGNoXCIsXG4gICAgLy8gICByZXNvdXJjZTogXCJjb21wdXRlLWVudmlyb25tZW50XCIsXG4gICAgLy8gICByZXNvdXJjZU5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgIC8vIH0pO1xuICB9XG59XG4iXX0=
@@ -349,7 +349,7 @@ class Port {
349
349
  }
350
350
  exports.Port = Port;
351
351
  _a = JSII_RTTI_SYMBOL_1;
352
- Port[_a] = { fqn: "terraconstructs.aws.compute.Port", version: "0.0.20" };
352
+ Port[_a] = { fqn: "terraconstructs.aws.compute.Port", version: "0.0.22" };
353
353
  /** Well-known SSH port (TCP 22) */
354
354
  Port.SSH = Port.tcp(22);
355
355
  /** Well-known SMTP port (TCP 25) */
@@ -110,5 +110,5 @@ class PrefixList extends PrefixListBase {
110
110
  }
111
111
  exports.PrefixList = PrefixList;
112
112
  _a = JSII_RTTI_SYMBOL_1;
113
- PrefixList[_a] = { fqn: "terraconstructs.aws.compute.PrefixList", version: "0.0.20" };
113
+ PrefixList[_a] = { fqn: "terraconstructs.aws.compute.PrefixList", version: "0.0.22" };
114
114
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZml4LWxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvcHJlZml4LWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrRkFBK0Y7QUFFL0Ysc0RBQTJEO0FBQzNELGlDQUE2QjtBQUU3QixvREFJMEI7QUE0QjFCOztHQUVHO0FBQ0gsSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLCtCQUFjLENBQUE7SUFDZCwrQkFBYyxDQUFBO0FBQ2hCLENBQUMsRUFIVyxhQUFhLDZCQUFiLGFBQWEsUUFHeEI7QUEyQ0Q7O0dBRUc7QUFDSCxNQUFlLGNBQWUsU0FBUSxnQ0FBZ0I7SUFDcEQsSUFBVyxpQkFBaUI7UUFDMUIsT0FBTztZQUNMLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtTQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUNELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0NBT0Y7QUFFRDs7O0dBR0c7QUFDSCxNQUFhLFVBQVcsU0FBUSxjQUFjO0lBQzVDOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDNUIsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLFlBQW9CO1FBRXBCLE1BQU0sTUFBTyxTQUFRLGdDQUFnQjtZQUFyQzs7Z0JBU2tCLGlCQUFZLEdBQUcsWUFBWSxDQUFDO1lBQzlDLENBQUM7WUFUQyxJQUFXLGlCQUFpQjtnQkFDMUIsT0FBTztvQkFDTCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7aUJBQ2hDLENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBVyxPQUFPO2dCQUNoQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUNoQyxDQUFDO1NBRUY7UUFDRCxPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBMENELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVB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TyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7SUFDbkQsQ0FBQzs7QUFqSUgsZ0NBa0lDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTc1LjEvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWVjMi9saWIvcHJlZml4LWxpc3QudHNcblxuaW1wb3J0IHsgZWMyTWFuYWdlZFByZWZpeExpc3QgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgTGF6eSB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIElBd3NDb25zdHJ1Y3QsXG4gIEF3c0NvbnN0cnVjdEJhc2UsXG4gIEF3c0NvbnN0cnVjdFByb3BzLFxufSBmcm9tIFwiLi4vYXdzLWNvbnN0cnVjdFwiO1xuXG4vKipcbiAqIE91dHB1dHMgd2hpY2ggbWF5IGJlIHJlZ2lzdGVyZWQgZm9yIG91dHB1dCB2aWEgdGhlIEdyaWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZml4TGlzdE91dHB1dHMge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBwcmVmaXggbGlzdFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBwcmVmaXhMaXN0SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHByZWZpeCBsaXN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVByZWZpeExpc3QgZXh0ZW5kcyBJQXdzQ29uc3RydWN0IHtcbiAgLyoqIHN0cm9uZ2x5IHR5cGVkIG91dHB1dHMgKi9cbiAgcmVhZG9ubHkgcHJlZml4TGlzdE91dHB1dHM6IFByZWZpeExpc3RPdXRwdXRzO1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBwcmVmaXggbGlzdFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBwcmVmaXhMaXN0SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgSVAgYWRkcmVzcyB0eXBlLlxuICovXG5leHBvcnQgZW51bSBBZGRyZXNzRmFtaWx5IHtcbiAgSVBfVjQgPSBcIklQdjRcIixcbiAgSVBfVjYgPSBcIklQdjZcIixcbn1cblxuLyoqXG4gKiBPcHRpb25zIHRvIGFkZCBhIHByZWZpeCBsaXN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZml4TGlzdE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgZm9yIHRoZSBwcmVmaXggbGlzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgQXV0b21hdGljYWxseS1jYWxjdWxhdGVkXG4gICAqL1xuICByZWFkb25seSBtYXhFbnRyaWVzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgcHJlZml4IGxpc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZml4TGlzdFByb3BzIGV4dGVuZHMgUHJlZml4TGlzdE9wdGlvbnMsIEF3c0NvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBhZGRyZXNzIGZhbWlseSBvZiB0aGUgcHJlZml4IGxpc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IEFkZHJlc3NGYW1pbHkuSVBfVjRcbiAgICovXG4gIHJlYWRvbmx5IGFkZHJlc3NGYW1pbHk/OiBBZGRyZXNzRmFtaWx5O1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcHJlZml4IGxpc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSBhbiBleHBsaWNpdCBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZml4TGlzdE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIGVudHJpZXMgZm9yIHRoZSBwcmVmaXggbGlzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IGVudHJpZXM/OiBlYzJNYW5hZ2VkUHJlZml4TGlzdC5FYzJNYW5hZ2VkUHJlZml4TGlzdEVudHJ5W107XG59XG5cbi8qKlxuICogVGhlIGJhc2UgY2xhc3MgZm9yIGEgcHJlZml4IGxpc3RcbiAqL1xuYWJzdHJhY3QgY2xhc3MgUHJlZml4TGlzdEJhc2UgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSVByZWZpeExpc3Qge1xuICBwdWJsaWMgZ2V0IHByZWZpeExpc3RPdXRwdXRzKCk6IFByZWZpeExpc3RPdXRwdXRzIHtcbiAgICByZXR1cm4ge1xuICAgICAgcHJlZml4TGlzdElkOiB0aGlzLnByZWZpeExpc3RJZCxcbiAgICB9O1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wcmVmaXhMaXN0T3V0cHV0cztcbiAgfVxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBwcmVmaXggbGlzdFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgcHJlZml4TGlzdElkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBtYW5hZ2VkIHByZWZpeCBsaXN0LlxuICogQHJlc291cmNlIEFXUzo6RUMyOjpQcmVmaXhMaXN0XG4gKi9cbmV4cG9ydCBjbGFzcyBQcmVmaXhMaXN0IGV4dGVuZHMgUHJlZml4TGlzdEJhc2Uge1xuICAvKipcbiAgICogTG9vayB1cCBwcmVmaXggbGlzdCBieSBpZC5cbiAgICpcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVByZWZpeExpc3RJZChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJlZml4TGlzdElkOiBzdHJpbmcsXG4gICk6IElQcmVmaXhMaXN0IHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSVByZWZpeExpc3Qge1xuICAgICAgcHVibGljIGdldCBwcmVmaXhMaXN0T3V0cHV0cygpOiBQcmVmaXhMaXN0T3V0cHV0cyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcHJlZml4TGlzdElkOiB0aGlzLnByZWZpeExpc3RJZCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJlZml4TGlzdE91dHB1dHM7XG4gICAgICB9XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcHJlZml4TGlzdElkID0gcHJlZml4TGlzdElkO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHByZWZpeCBsaXN0XG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcmVmaXhMaXN0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHByZWZpeCBsaXN0XG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcmVmaXhMaXN0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBwcmVmaXggbGlzdFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJlZml4TGlzdEFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgb3duZXIgSUQgb2YgdGhlIHByZWZpeCBsaXN0XG4gICAqXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb3duZXJJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgcHJlZml4IGxpc3RcbiAgICpcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2ZXJzaW9uOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBhZGRyZXNzIGZhbWlseSBvZiB0aGUgcHJlZml4IGxpc3RcbiAgICpcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhZGRyZXNzRmFtaWx5OiBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBlYzJNYW5hZ2VkUHJlZml4TGlzdC5FYzJNYW5hZ2VkUHJlZml4TGlzdDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFByZWZpeExpc3RQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIGNvbnN0IHByZWZpeExpc3ROYW1lID1cbiAgICAgIHByb3BzPy5wcmVmaXhMaXN0TmFtZSA/P1xuICAgICAgTGF6eS5zdHJpbmdWYWx1ZSh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgdGhpcy5zdGFjay51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge1xuICAgICAgICAgICAgbWF4TGVuZ3RoOiAyNTUsXG4gICAgICAgICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6IFwiLi1fXCIsXG4gICAgICAgICAgfSksXG4gICAgICB9KTtcblxuICAgIGlmIChwcmVmaXhMaXN0TmFtZSkge1xuICAgICAgaWYgKHByZWZpeExpc3ROYW1lLnN0YXJ0c1dpdGgoXCJjb20uYW1hem9uYXdzXCIpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSBuYW1lIGNhbm5vdCBzdGFydCB3aXRoICdjb20uYW1hem9uYXdzLidcIik7XG4gICAgICB9XG4gICAgICBpZiAocHJlZml4TGlzdE5hbWUubGVuZ3RoID4gMjU1KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxlbmd0aHMgZXhjZWVkaW5nIDI1NSBjaGFyYWN0ZXJzIGNhbm5vdCBiZSBzZXQuXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucHJlZml4TGlzdE5hbWUgPSBwcmVmaXhMaXN0TmFtZTtcblxuICAgIGxldCBkZWZhdWx0TWF4RW50cmllcyA9IDE7XG4gICAgaWYgKHByb3BzPy5lbnRyaWVzICYmIHByb3BzLmVudHJpZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZW50cmllcyA9IHByb3BzLmVudHJpZXM7XG4gICAgICAvLyBSZWd1bGFyIGV4cHJlc3Npb25zIGZvciB2YWxpZGF0aW5nIElQdjYgYWRkcmVzc2VzXG4gICAgICBpZiAocHJvcHM/LmFkZHJlc3NGYW1pbHkgPT09IEFkZHJlc3NGYW1pbHkuSVBfVjYpIHtcbiAgICAgICAgY29uc3QgaXB2NlJlZ2V4ID1cbiAgICAgICAgICAvXnMqKCgoWzAtOUEtRmEtZl17MSw0fTopezd9KFswLTlBLUZhLWZdezEsNH18OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezZ9KDpbMC05QS1GYS1mXXsxLDR9fCgoMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSguKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkpezN9KXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7NX0oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSwyfSl8OigoMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSguKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkpezN9KXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7NH0oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSwzfSl8KCg6WzAtOUEtRmEtZl17MSw0fSk/OigoMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSguKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkpezN9KSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezN9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsNH0pfCgoOlswLTlBLUZhLWZdezEsNH0pezAsMn06KCgyNVswLTVdfDJbMC00XWR8MWRkfFsxLTldP2QpKC4oMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSl7M30pKXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7Mn0oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSw1fSl8KCg6WzAtOUEtRmEtZl17MSw0fSl7MCwzfTooKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkoLigyNVswLTVdfDJbMC00XWR8MWRkfFsxLTldP2QpKXszfSkpfDopKXwoKFswLTlBLUZhLWZdezEsNH06KXsxfSgoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDZ9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDR9OigoMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSguKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkpezN9KSl8OikpfCg6KCgoOlswLTlBLUZhLWZdezEsNH0pezEsN30pfCgoOlswLTlBLUZhLWZdezEsNH0pezAsNX06KCgyNVswLTVdfDJbMC00XWR8MWRkfFsxLTldP2QpKC4oMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSl7M30pKXw6KSkpKCUuKyk/cyooXFwvKFswLTldfFsxLTldWzAtOV18MVswLTFdWzAtOV18MTJbMC04XSkpPyQvaTtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgaWYgKCFpcHY2UmVnZXgudGVzdChlbnRyeS5jaWRyKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIElQdjYgYWRkcmVzcyByYW5nZTogJHtlbnRyeS5jaWRyfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBSZWd1bGFyIGV4cHJlc3Npb25zIGZvciB2YWxpZGF0aW5nIElQdjQgYWRkcmVzc2VzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpcHY0UmVnZXggPVxuICAgICAgICAgIC9eKFswLTldezEsM31cXC4pezN9WzAtOV17MSwzfShcXC8oWzAtOV18WzEtMl1bMC05XXwzWzAtMl0pKT8kL2k7XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgIGlmICghaXB2NFJlZ2V4LnRlc3QoZW50cnkuY2lkcikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBJUHY0IGFkZHJlc3MgcmFuZ2U6ICR7ZW50cnkuY2lkcn1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZGVmYXVsdE1heEVudHJpZXMgPSBwcm9wcy5lbnRyaWVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IGVjMk1hbmFnZWRQcmVmaXhMaXN0LkVjMk1hbmFnZWRQcmVmaXhMaXN0KFxuICAgICAgdGhpcyxcbiAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzc0ZhbWlseTogcHJvcHM/LmFkZHJlc3NGYW1pbHkgfHwgQWRkcmVzc0ZhbWlseS5JUF9WNCxcbiAgICAgICAgbWF4RW50cmllczogcHJvcHM/Lm1heEVudHJpZXMgfHwgZGVmYXVsdE1heEVudHJpZXMsXG4gICAgICAgIG5hbWU6IHRoaXMucHJlZml4TGlzdE5hbWUsXG4gICAgICAgIGVudHJ5OiBwcm9wcz8uZW50cmllcyB8fCBbXSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHRoaXMucHJlZml4TGlzdElkID0gdGhpcy5yZXNvdXJjZS5pZDtcbiAgICB0aGlzLnByZWZpeExpc3RBcm4gPSB0aGlzLnJlc291cmNlLmFybjtcbiAgICB0aGlzLm93bmVySWQgPSB0aGlzLnJlc291cmNlLm93bmVySWQ7XG4gICAgdGhpcy52ZXJzaW9uID0gdGhpcy5yZXNvdXJjZS52ZXJzaW9uO1xuICAgIHRoaXMuYWRkcmVzc0ZhbWlseSA9IHRoaXMucmVzb3VyY2UuYWRkcmVzc0ZhbWlseTtcbiAgfVxufVxuIl19
@@ -27,31 +27,27 @@ function instanceEbsBlockDeviceMappings(construct, blockDevices, tags) {
27
27
  function launchTemplateBlockDeviceMappings(construct, blockDevices) {
28
28
  const result = [];
29
29
  for (const blockDevice of blockDevices) {
30
- if (!isRootBlockDevice(blockDevice)) {
31
- const { deviceName, volume, mappingEnabled } = blockDevice;
32
- const common = blockDeviceCommon(construct, volume);
33
- // convert EbsBlockVolume common properties for LaunchTemplateBlockDeviceMappings
34
- const deleteOnTermination = common?.deleteOnTermination !== undefined
35
- ? common.deleteOnTermination.toString()
36
- : undefined;
37
- const encrypted = common?.encrypted !== undefined
38
- ? common.encrypted.toString()
39
- : undefined;
40
- result.push({
41
- deviceName,
42
- noDevice: mappingEnabled === false ? "" : undefined,
43
- virtualName: volume.virtualName,
44
- ...(volume.virtualName
45
- ? {}
46
- : {
47
- ebs: {
48
- ...common,
49
- encrypted,
50
- deleteOnTermination,
51
- },
52
- }),
53
- });
54
- }
30
+ const { deviceName, volume, mappingEnabled } = blockDevice;
31
+ const common = blockDeviceCommon(construct, volume);
32
+ // convert EbsBlockVolume common properties for LaunchTemplateBlockDeviceMappings
33
+ const deleteOnTermination = common?.deleteOnTermination !== undefined
34
+ ? common.deleteOnTermination.toString()
35
+ : undefined;
36
+ const encrypted = common?.encrypted !== undefined ? common.encrypted.toString() : undefined;
37
+ result.push({
38
+ deviceName,
39
+ noDevice: mappingEnabled === false ? "" : undefined,
40
+ virtualName: volume.virtualName,
41
+ ...(volume.virtualName
42
+ ? {}
43
+ : {
44
+ ebs: {
45
+ ...common,
46
+ encrypted,
47
+ deleteOnTermination,
48
+ },
49
+ }),
50
+ });
55
51
  }
56
52
  return result.length === 0 ? undefined : result;
57
53
  }
@@ -142,4 +138,4 @@ function isRootBlockDevice(blockDevice, virtType = common_1.AmazonLinuxVirt.HVM)
142
138
  function isEphemeral(blockDevice) {
143
139
  return blockDevice.volume.isEphemeral();
144
140
  }
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWJzLXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvcHJpdmF0ZS9lYnMtdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsb0dBQW9HOztBQVdwRyx3RUFrQkM7QUFFRCw4RUFtQ0M7QUFFRCxvRkFZQztBQUVELHdFQWNDO0FBNEVELDhDQWFDO0FBdExELGlDQUdlO0FBRWYsb0RBQTBEO0FBQzFELHNDQUFnRjtBQUVoRixTQUFnQiw4QkFBOEIsQ0FDNUMsU0FBb0IsRUFDcEIsWUFBMkIsRUFDM0IsSUFBNkI7SUFFN0IsTUFBTSxNQUFNLEdBQXNDLEVBQUUsQ0FBQztJQUNyRCxZQUFZO1NBQ1QsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZELE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1FBQ3ZCLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDO1FBQzNDLE1BQU0sTUFBTSxHQUFHLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwRCxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ1YsVUFBVTtZQUNWLEdBQUcsTUFBTTtZQUNULElBQUk7U0FDTCxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLE9BQU8sTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ2xELENBQUM7QUFFRCxTQUFnQixpQ0FBaUMsQ0FDL0MsU0FBb0IsRUFDcEIsWUFBMkI7SUFFM0IsTUFBTSxNQUFNLEdBQXVELEVBQUUsQ0FBQztJQUN0RSxLQUFLLE1BQU0sV0FBVyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLElB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Q0FBQztZQUNELGtDQUFrQztZQUNsQyxtQkFBVyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQ2xDLDJEQUEyRCxDQUM1RCxDQUFDO1FBQ0osQ0FBQztRQUVEOzs7V0FHRztRQUVILE9BQU87WUFDTCxHQUFHLElBQUk7WUFDUCxJQUFJO1lBQ0osVUFBVTtZQUNWLFVBQVU7WUFDVixRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU07U0FDekIsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGlCQUFpQixDQUMvQixXQUF3QixFQUN4QixXQUE0Qix3QkFBZSxDQUFDLEdBQUc7SUFFL0MsUUFBUSxRQUFRLEVBQUUsQ0FBQztRQUNqQixLQUFLLHdCQUFlLENBQUMsR0FBRztZQUN0QixPQUFPLENBQ0wsV0FBVyxDQUFDLFVBQVUsS0FBSyxXQUFXO2dCQUN0QyxXQUFXLENBQUMsVUFBVSxLQUFLLFdBQVcsQ0FDdkMsQ0FBQztRQUNKLEtBQUssd0JBQWUsQ0FBQyxFQUFFO1lBQ3JCLE9BQU8sV0FBVyxDQUFDLFVBQVUsS0FBSyxXQUFXLENBQUM7SUFDbEQsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxXQUF3QjtJQUczQyxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE3NS4xL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1lYzIvbGliL3ByaXZhdGUvZWJzLXV0aWwudHNcblxuaW1wb3J0IHsgaW5zdGFuY2UsIGxhdW5jaFRlbXBsYXRlIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7XG4gIEFubm90YXRpb25zLFxuICAvL0lSZXNvbHZhYmxlXG59IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEFtYXpvbkxpbnV4VmlydCB9IGZyb20gXCIuLi9tYWNoaW5lLWltYWdlL2NvbW1vblwiO1xuaW1wb3J0IHsgQmxvY2tEZXZpY2UsIEJsb2NrRGV2aWNlVm9sdW1lLCBFYnNEZXZpY2VWb2x1bWVUeXBlIH0gZnJvbSBcIi4uL3ZvbHVtZVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFuY2VFYnNCbG9ja0RldmljZU1hcHBpbmdzKFxuICBjb25zdHJ1Y3Q6IENvbnN0cnVjdCxcbiAgYmxvY2tEZXZpY2VzOiBCbG9ja0RldmljZVtdLFxuICB0YWdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbik6IGluc3RhbmNlLkluc3RhbmNlRWJzQmxvY2tEZXZpY2VbXSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHJlc3VsdDogaW5zdGFuY2UuSW5zdGFuY2VFYnNCbG9ja0RldmljZVtdID0gW107XG4gIGJsb2NrRGV2aWNlc1xuICAgIC5maWx0ZXIoKHgpID0+ICFpc0VwaGVtZXJhbCh4KSAmJiAhaXNSb290QmxvY2tEZXZpY2UoeCkpXG4gICAgLmZvckVhY2goKGJsb2NrRGV2aWNlKSA9PiB7XG4gICAgICBjb25zdCB7IGRldmljZU5hbWUsIHZvbHVtZSB9ID0gYmxvY2tEZXZpY2U7XG4gICAgICBjb25zdCBjb21tb24gPSBibG9ja0RldmljZUNvbW1vbihjb25zdHJ1Y3QsIHZvbHVtZSk7XG4gICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgIGRldmljZU5hbWUsXG4gICAgICAgIC4uLmNvbW1vbixcbiAgICAgICAgdGFncyxcbiAgICAgIH0pO1xuICAgIH0pO1xuICByZXR1cm4gcmVzdWx0Lmxlbmd0aCA9PT0gMCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhdW5jaFRlbXBsYXRlQmxvY2tEZXZpY2VNYXBwaW5ncyhcbiAgY29uc3RydWN0OiBDb25zdHJ1Y3QsXG4gIGJsb2NrRGV2aWNlczogQmxvY2tEZXZpY2VbXSxcbik6IGxhdW5jaFRlbXBsYXRlLkxhdW5jaFRlbXBsYXRlQmxvY2tEZXZpY2VNYXBwaW5nc1tdIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcmVzdWx0OiBsYXVuY2hUZW1wbGF0ZS5MYXVuY2hUZW1wbGF0ZUJsb2NrRGV2aWNlTWFwcGluZ3NbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGJsb2NrRGV2aWNlIG9mIGJsb2NrRGV2aWNlcykge1xuICAgIGlmICghaXNSb290QmxvY2tEZXZpY2UoYmxvY2tEZXZpY2UpKSB7XG4gICAgICBjb25zdCB7IGRldmljZU5hbWUsIHZvbHVtZSwgbWFwcGluZ0VuYWJsZWQgfSA9IGJsb2NrRGV2aWNlO1xuICAgICAgY29uc3QgY29tbW9uID0gYmxvY2tEZXZpY2VDb21tb24oY29uc3RydWN0LCB2b2x1bWUpO1xuICAgICAgLy8gY29udmVydCBFYnNCbG9ja1ZvbHVtZSBjb21tb24gcHJvcGVydGllcyBmb3IgTGF1bmNoVGVtcGxhdGVCbG9ja0RldmljZU1hcHBpbmdzXG4gICAgICBjb25zdCBkZWxldGVPblRlcm1pbmF0aW9uID1cbiAgICAgICAgY29tbW9uPy5kZWxldGVPblRlcm1pbmF0aW9uICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IGNvbW1vbi5kZWxldGVPblRlcm1pbmF0aW9uLnRvU3RyaW5nKClcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGVuY3J5cHRlZCA9XG4gICAgICAgIGNvbW1vbj8uZW5jcnlwdGVkICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IGNvbW1vbi5lbmNyeXB0ZWQudG9TdHJpbmcoKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICBkZXZpY2VOYW1lLFxuICAgICAgICBub0RldmljZTogbWFwcGluZ0VuYWJsZWQgPT09IGZhbHNlID8gXCJcIiA6IHVuZGVmaW5lZCxcbiAgICAgICAgdmlydHVhbE5hbWU6IHZvbHVtZS52aXJ0dWFsTmFtZSxcbiAgICAgICAgLi4uKHZvbHVtZS52aXJ0dWFsTmFtZVxuICAgICAgICAgID8ge31cbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgZWJzOiB7XG4gICAgICAgICAgICAgICAgLi4uY29tbW9uLFxuICAgICAgICAgICAgICAgIGVuY3J5cHRlZCxcbiAgICAgICAgICAgICAgICBkZWxldGVPblRlcm1pbmF0aW9uLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdC5sZW5ndGggPT09IDAgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW5jZUVwaGVtZXJhbEJsb2NrRGV2aWNlTWFwcGluZ3MoXG4gIGJsb2NrRGV2aWNlczogQmxvY2tEZXZpY2VbXSxcbik6IGluc3RhbmNlLkluc3RhbmNlRXBoZW1lcmFsQmxvY2tEZXZpY2VbXSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGVwaGVtZXJhbEJsb2NrRGV2aWNlcyA9IGJsb2NrRGV2aWNlc1xuICAgIC5maWx0ZXIoaXNFcGhlbWVyYWwpXG4gICAgLm1hcCgoYmxvY2tEZXZpY2UpID0+IHtcbiAgICAgIGNvbnN0IHsgZGV2aWNlTmFtZSwgdm9sdW1lLCBtYXBwaW5nRW5hYmxlZCB9ID0gYmxvY2tEZXZpY2U7XG4gICAgICBjb25zdCBub0RldmljZSA9IG1hcHBpbmdFbmFibGVkID09PSBmYWxzZTtcbiAgICAgIGNvbnN0IHZpcnR1YWxOYW1lID0gbm9EZXZpY2UgPyB2b2x1bWUudmlydHVhbE5hbWUgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyBkZXZpY2VOYW1lLCB2aXJ0dWFsTmFtZSwgbm9EZXZpY2UgfTtcbiAgICB9KTtcbiAgcmV0dXJuIGVwaGVtZXJhbEJsb2NrRGV2aWNlcy5sZW5ndGggPT09IDAgPyB1bmRlZmluZWQgOiBlcGhlbWVyYWxCbG9ja0RldmljZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW5jZVJvb3RCbG9ja0RldmljZU1hcHBpbmcoXG4gIGNvbnN0cnVjdDogQ29uc3RydWN0LFxuICBibG9ja0RldmljZXM6IEJsb2NrRGV2aWNlW10sXG4gIHRhZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuKTogaW5zdGFuY2UuSW5zdGFuY2VSb290QmxvY2tEZXZpY2UgfCB1bmRlZmluZWQge1xuICBmb3IgKGNvbnN0IGJsb2NrRGV2aWNlIG9mIGJsb2NrRGV2aWNlcykge1xuICAgIGlmIChpc1Jvb3RCbG9ja0RldmljZShibG9ja0RldmljZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmJsb2NrRGV2aWNlQ29tbW9uKGNvbnN0cnVjdCwgYmxvY2tEZXZpY2Uudm9sdW1lKSxcbiAgICAgICAgdGFncyxcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGJsb2NrRGV2aWNlQ29tbW9uKGNvbnN0cnVjdDogQ29uc3RydWN0LCB2b2x1bWU6IEJsb2NrRGV2aWNlVm9sdW1lKSB7XG4gIGNvbnN0IHsgZWJzRGV2aWNlOiBlYnMgfSA9IHZvbHVtZTtcbiAgaWYgKGVicykge1xuICAgIGNvbnN0IHsgaW9wcywgdGhyb3VnaHB1dCwgdm9sdW1lVHlwZSwga21zS2V5LCAuLi5yZXN0IH0gPSBlYnM7XG5cbiAgICBpZiAodGhyb3VnaHB1dCkge1xuICAgICAgaWYgKHZvbHVtZVR5cGUgIT09IEVic0RldmljZVZvbHVtZVR5cGUuR1AzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgJ3Rocm91Z2hwdXQnIHJlcXVpcmVzICd2b2x1bWVUeXBlJzogJHtFYnNEZXZpY2VWb2x1bWVUeXBlLkdQM30sIGdvdDogJHt2b2x1bWVUeXBlfS5gLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIodGhyb3VnaHB1dCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAndGhyb3VnaHB1dCcgbXVzdCBiZSBhbiBpbnRlZ2VyLCBnb3Q6ICR7dGhyb3VnaHB1dH0uYCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aHJvdWdocHV0IDwgMTI1IHx8IHRocm91Z2hwdXQgPiAxMDAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgJ3Rocm91Z2hwdXQnIG11c3QgYmUgYmV0d2VlbiAxMjUgYW5kIDEwMDAsIGdvdCAke3Rocm91Z2hwdXR9LmAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1heGltdW1UaHJvdWdocHV0UmF0aW8gPSAwLjI1O1xuICAgICAgaWYgKGlvcHMpIHtcbiAgICAgICAgY29uc3QgaW9wc1JhdGlvID0gdGhyb3VnaHB1dCAvIGlvcHM7XG4gICAgICAgIGlmIChpb3BzUmF0aW8gPiBtYXhpbXVtVGhyb3VnaHB1dFJhdGlvKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFRocm91Z2hwdXQgKE1pQnBzKSB0byBpb3BzIHJhdGlvIG9mICR7aW9wc1JhdGlvfSBpcyB0b28gaGlnaDsgbWF4aW11bSBpcyAke21heGltdW1UaHJvdWdocHV0UmF0aW99IE1pQnBzIHBlciBpb3BzYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFpb3BzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHZvbHVtZVR5cGUgPT09IEVic0RldmljZVZvbHVtZVR5cGUuSU8xIHx8XG4gICAgICAgIHZvbHVtZVR5cGUgPT09IEVic0RldmljZVZvbHVtZVR5cGUuSU8yXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIFwiaW9wcyBwcm9wZXJ0eSBpcyByZXF1aXJlZCB3aXRoIHZvbHVtZVR5cGU6IEVic0RldmljZVZvbHVtZVR5cGUuSU8xIGFuZCBFYnNEZXZpY2VWb2x1bWVUeXBlLklPMlwiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICB2b2x1bWVUeXBlICE9PSBFYnNEZXZpY2VWb2x1bWVUeXBlLklPMSAmJlxuICAgICAgdm9sdW1lVHlwZSAhPT0gRWJzRGV2aWNlVm9sdW1lVHlwZS5JTzIgJiZcbiAgICAgIHZvbHVtZVR5cGUgIT09IEVic0RldmljZVZvbHVtZVR5cGUuR1AzXG4gICAgKSB7XG4gICAgICAvLyBcIkBhd3MtY2RrL2F3cy1lYzI6aW9wc0lnbm9yZWRcIixcbiAgICAgIEFubm90YXRpb25zLm9mKGNvbnN0cnVjdCkuYWRkV2FybmluZyhcbiAgICAgICAgXCJpb3BzIHdpbGwgYmUgaWdub3JlZCB3aXRob3V0IHZvbHVtZVR5cGU6IElPMSwgSU8yLCBvciBHUDNcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQmVjYXVzZSB0aGUgRWJzIHByb3BlcnRpZXMgb2YgdGhlIEwyIENvbnN0cnVjdHMgZG8gbm90IG1hdGNoIHRoZSBFYnMgcHJvcGVydGllc1xuICAgICAqIG9mIHRoZSBURiAqQmxvY2tEZXZpY2Ugc3RydWN0cywgd2UgaGF2ZSB0byBkbyBzb21lIHRyYW5zZm9ybWF0aW9uXG4gICAgICovXG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucmVzdCxcbiAgICAgIGlvcHMsXG4gICAgICB0aHJvdWdocHV0LFxuICAgICAgdm9sdW1lVHlwZSxcbiAgICAgIGttc0tleUlkOiBrbXNLZXk/LmtleUFybixcbiAgICB9O1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gZGV2aWNlIG5hbWUgaXMgdGhlIHJlc2VydmVkIG5hbWUgZm9yIHJvb3Qgdm9sdW1lLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2RldmljZV9uYW1pbmcuaHRtbCNhdmFpbGFibGUtZWMyLWRldmljZS1uYW1lc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSb290QmxvY2tEZXZpY2UoXG4gIGJsb2NrRGV2aWNlOiBCbG9ja0RldmljZSxcbiAgdmlydFR5cGU6IEFtYXpvbkxpbnV4VmlydCA9IEFtYXpvbkxpbnV4VmlydC5IVk0sXG4pOiBib29sZWFuIHtcbiAgc3dpdGNoICh2aXJ0VHlwZSkge1xuICAgIGNhc2UgQW1hem9uTGludXhWaXJ0LkhWTTpcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGJsb2NrRGV2aWNlLmRldmljZU5hbWUgPT09IFwiL2Rldi9zZGExXCIgfHxcbiAgICAgICAgYmxvY2tEZXZpY2UuZGV2aWNlTmFtZSA9PT0gXCIvZGV2L3h2ZGFcIlxuICAgICAgKTtcbiAgICBjYXNlIEFtYXpvbkxpbnV4VmlydC5QVjpcbiAgICAgIHJldHVybiBibG9ja0RldmljZS5kZXZpY2VOYW1lID09PSBcIi9kZXYvc2RhMVwiO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzRXBoZW1lcmFsKGJsb2NrRGV2aWNlOiBCbG9ja0RldmljZSk6IGJsb2NrRGV2aWNlIGlzIEJsb2NrRGV2aWNlICYge1xuICB2b2x1bWU6IEJsb2NrRGV2aWNlVm9sdW1lICYgeyB2aXJ0dWFsTmFtZTogc3RyaW5nIH07XG59IHtcbiAgcmV0dXJuIGJsb2NrRGV2aWNlLnZvbHVtZS5pc0VwaGVtZXJhbCgpO1xufVxuIl19
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWJzLXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvcHJpdmF0ZS9lYnMtdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsb0dBQW9HOztBQVdwRyx3RUFrQkM7QUFFRCw4RUErQkM7QUFFRCxvRkFZQztBQUVELHdFQWNDO0FBNEVELDhDQWFDO0FBbExELGlDQUdlO0FBRWYsb0RBQTBEO0FBQzFELHNDQUFnRjtBQUVoRixTQUFnQiw4QkFBOEIsQ0FDNUMsU0FBb0IsRUFDcEIsWUFBMkIsRUFDM0IsSUFBNkI7SUFFN0IsTUFBTSxNQUFNLEdBQXNDLEVBQUUsQ0FBQztJQUNyRCxZQUFZO1NBQ1QsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZELE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1FBQ3ZCLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDO1FBQzNDLE1BQU0sTUFBTSxHQUFHLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwRCxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ1YsVUFBVTtZQUNWLEdBQUcsTUFBTTtZQUNULElBQUk7U0FDTCxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLE9BQU8sTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ2xELENBQUM7QUFFRCxTQUFnQixpQ0FBaUMsQ0FDL0MsU0FBb0IsRUFDcEIsWUFBMkI7SUFFM0IsTUFBTSxNQUFNLEdBQXVELEVBQUUsQ0FBQztJQUN0RSxLQUFLLE1BQU0sV0FBVyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLE1B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QywyREFBMkQsQ0FDNUQsQ0FBQztRQUNKLENBQUM7UUFFRDs7O1dBR0c7UUFFSCxPQUFPO1lBQ0wsR0FBRyxJQUFJO1lBQ1AsSUFBSTtZQUNKLFVBQVU7WUFDVixVQUFVO1lBQ1YsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNO1NBQ3pCLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FDL0IsV0FBd0IsRUFDeEIsV0FBNEIsd0JBQWUsQ0FBQyxHQUFHO0lBRS9DLFFBQVEsUUFBUSxFQUFFLENBQUM7UUFDakIsS0FBSyx3QkFBZSxDQUFDLEdBQUc7WUFDdEIsT0FBTyxDQUNMLFdBQVcsQ0FBQyxVQUFVLEtBQUssV0FBVztnQkFDdEMsV0FBVyxDQUFDLFVBQVUsS0FBSyxXQUFXLENBQ3ZDLENBQUM7UUFDSixLQUFLLHdCQUFlLENBQUMsRUFBRTtZQUNyQixPQUFPLFdBQVcsQ0FBQyxVQUFVLEtBQUssV0FBVyxDQUFDO0lBQ2xELENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsV0FBd0I7SUFHM0MsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNzUuMS9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtZWMyL2xpYi9wcml2YXRlL2Vicy11dGlsLnRzXG5cbmltcG9ydCB7IGluc3RhbmNlLCBsYXVuY2hUZW1wbGF0ZSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQge1xuICBBbm5vdGF0aW9ucyxcbiAgLy9JUmVzb2x2YWJsZVxufSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBbWF6b25MaW51eFZpcnQgfSBmcm9tIFwiLi4vbWFjaGluZS1pbWFnZS9jb21tb25cIjtcbmltcG9ydCB7IEJsb2NrRGV2aWNlLCBCbG9ja0RldmljZVZvbHVtZSwgRWJzRGV2aWNlVm9sdW1lVHlwZSB9IGZyb20gXCIuLi92b2x1bWVcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbmNlRWJzQmxvY2tEZXZpY2VNYXBwaW5ncyhcbiAgY29uc3RydWN0OiBDb25zdHJ1Y3QsXG4gIGJsb2NrRGV2aWNlczogQmxvY2tEZXZpY2VbXSxcbiAgdGFncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4pOiBpbnN0YW5jZS5JbnN0YW5jZUVic0Jsb2NrRGV2aWNlW10gfCB1bmRlZmluZWQge1xuICBjb25zdCByZXN1bHQ6IGluc3RhbmNlLkluc3RhbmNlRWJzQmxvY2tEZXZpY2VbXSA9IFtdO1xuICBibG9ja0RldmljZXNcbiAgICAuZmlsdGVyKCh4KSA9PiAhaXNFcGhlbWVyYWwoeCkgJiYgIWlzUm9vdEJsb2NrRGV2aWNlKHgpKVxuICAgIC5mb3JFYWNoKChibG9ja0RldmljZSkgPT4ge1xuICAgICAgY29uc3QgeyBkZXZpY2VOYW1lLCB2b2x1bWUgfSA9IGJsb2NrRGV2aWNlO1xuICAgICAgY29uc3QgY29tbW9uID0gYmxvY2tEZXZpY2VDb21tb24oY29uc3RydWN0LCB2b2x1bWUpO1xuICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICBkZXZpY2VOYW1lLFxuICAgICAgICAuLi5jb21tb24sXG4gICAgICAgIHRhZ3MsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgcmV0dXJuIHJlc3VsdC5sZW5ndGggPT09IDAgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYXVuY2hUZW1wbGF0ZUJsb2NrRGV2aWNlTWFwcGluZ3MoXG4gIGNvbnN0cnVjdDogQ29uc3RydWN0LFxuICBibG9ja0RldmljZXM6IEJsb2NrRGV2aWNlW10sXG4pOiBsYXVuY2hUZW1wbGF0ZS5MYXVuY2hUZW1wbGF0ZUJsb2NrRGV2aWNlTWFwcGluZ3NbXSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHJlc3VsdDogbGF1bmNoVGVtcGxhdGUuTGF1bmNoVGVtcGxhdGVCbG9ja0RldmljZU1hcHBpbmdzW10gPSBbXTtcbiAgZm9yIChjb25zdCBibG9ja0RldmljZSBvZiBibG9ja0RldmljZXMpIHtcbiAgICBjb25zdCB7IGRldmljZU5hbWUsIHZvbHVtZSwgbWFwcGluZ0VuYWJsZWQgfSA9IGJsb2NrRGV2aWNlO1xuICAgIGNvbnN0IGNvbW1vbiA9IGJsb2NrRGV2aWNlQ29tbW9uKGNvbnN0cnVjdCwgdm9sdW1lKTtcbiAgICAvLyBjb252ZXJ0IEVic0Jsb2NrVm9sdW1lIGNvbW1vbiBwcm9wZXJ0aWVzIGZvciBMYXVuY2hUZW1wbGF0ZUJsb2NrRGV2aWNlTWFwcGluZ3NcbiAgICBjb25zdCBkZWxldGVPblRlcm1pbmF0aW9uID1cbiAgICAgIGNvbW1vbj8uZGVsZXRlT25UZXJtaW5hdGlvbiAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gY29tbW9uLmRlbGV0ZU9uVGVybWluYXRpb24udG9TdHJpbmcoKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBlbmNyeXB0ZWQgPVxuICAgICAgY29tbW9uPy5lbmNyeXB0ZWQgIT09IHVuZGVmaW5lZCA/IGNvbW1vbi5lbmNyeXB0ZWQudG9TdHJpbmcoKSA6IHVuZGVmaW5lZDtcbiAgICByZXN1bHQucHVzaCh7XG4gICAgICBkZXZpY2VOYW1lLFxuICAgICAgbm9EZXZpY2U6IG1hcHBpbmdFbmFibGVkID09PSBmYWxzZSA/IFwiXCIgOiB1bmRlZmluZWQsXG4gICAgICB2aXJ0dWFsTmFtZTogdm9sdW1lLnZpcnR1YWxOYW1lLFxuICAgICAgLi4uKHZvbHVtZS52aXJ0dWFsTmFtZVxuICAgICAgICA/IHt9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgZWJzOiB7XG4gICAgICAgICAgICAgIC4uLmNvbW1vbixcbiAgICAgICAgICAgICAgZW5jcnlwdGVkLFxuICAgICAgICAgICAgICBkZWxldGVPblRlcm1pbmF0aW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0Lmxlbmd0aCA9PT0gMCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbmNlRXBoZW1lcmFsQmxvY2tEZXZpY2VNYXBwaW5ncyhcbiAgYmxvY2tEZXZpY2VzOiBCbG9ja0RldmljZVtdLFxuKTogaW5zdGFuY2UuSW5zdGFuY2VFcGhlbWVyYWxCbG9ja0RldmljZVtdIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZXBoZW1lcmFsQmxvY2tEZXZpY2VzID0gYmxvY2tEZXZpY2VzXG4gICAgLmZpbHRlcihpc0VwaGVtZXJhbClcbiAgICAubWFwKChibG9ja0RldmljZSkgPT4ge1xuICAgICAgY29uc3QgeyBkZXZpY2VOYW1lLCB2b2x1bWUsIG1hcHBpbmdFbmFibGVkIH0gPSBibG9ja0RldmljZTtcbiAgICAgIGNvbnN0IG5vRGV2aWNlID0gbWFwcGluZ0VuYWJsZWQgPT09IGZhbHNlO1xuICAgICAgY29uc3QgdmlydHVhbE5hbWUgPSBub0RldmljZSA/IHZvbHVtZS52aXJ0dWFsTmFtZSA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB7IGRldmljZU5hbWUsIHZpcnR1YWxOYW1lLCBub0RldmljZSB9O1xuICAgIH0pO1xuICByZXR1cm4gZXBoZW1lcmFsQmxvY2tEZXZpY2VzLmxlbmd0aCA9PT0gMCA/IHVuZGVmaW5lZCA6IGVwaGVtZXJhbEJsb2NrRGV2aWNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbmNlUm9vdEJsb2NrRGV2aWNlTWFwcGluZyhcbiAgY29uc3RydWN0OiBDb25zdHJ1Y3QsXG4gIGJsb2NrRGV2aWNlczogQmxvY2tEZXZpY2VbXSxcbiAgdGFncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4pOiBpbnN0YW5jZS5JbnN0YW5jZVJvb3RCbG9ja0RldmljZSB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3QgYmxvY2tEZXZpY2Ugb2YgYmxvY2tEZXZpY2VzKSB7XG4gICAgaWYgKGlzUm9vdEJsb2NrRGV2aWNlKGJsb2NrRGV2aWNlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYmxvY2tEZXZpY2VDb21tb24oY29uc3RydWN0LCBibG9ja0RldmljZS52b2x1bWUpLFxuICAgICAgICB0YWdzLFxuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gYmxvY2tEZXZpY2VDb21tb24oY29uc3RydWN0OiBDb25zdHJ1Y3QsIHZvbHVtZTogQmxvY2tEZXZpY2VWb2x1bWUpIHtcbiAgY29uc3QgeyBlYnNEZXZpY2U6IGVicyB9ID0gdm9sdW1lO1xuICBpZiAoZWJzKSB7XG4gICAgY29uc3QgeyBpb3BzLCB0aHJvdWdocHV0LCB2b2x1bWVUeXBlLCBrbXNLZXksIC4uLnJlc3QgfSA9IGVicztcblxuICAgIGlmICh0aHJvdWdocHV0KSB7XG4gICAgICBpZiAodm9sdW1lVHlwZSAhPT0gRWJzRGV2aWNlVm9sdW1lVHlwZS5HUDMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGAndGhyb3VnaHB1dCcgcmVxdWlyZXMgJ3ZvbHVtZVR5cGUnOiAke0Vic0RldmljZVZvbHVtZVR5cGUuR1AzfSwgZ290OiAke3ZvbHVtZVR5cGV9LmAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcih0aHJvdWdocHV0KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCd0aHJvdWdocHV0JyBtdXN0IGJlIGFuIGludGVnZXIsIGdvdDogJHt0aHJvdWdocHV0fS5gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRocm91Z2hwdXQgPCAxMjUgfHwgdGhyb3VnaHB1dCA+IDEwMDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGAndGhyb3VnaHB1dCcgbXVzdCBiZSBiZXR3ZWVuIDEyNSBhbmQgMTAwMCwgZ290ICR7dGhyb3VnaHB1dH0uYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWF4aW11bVRocm91Z2hwdXRSYXRpbyA9IDAuMjU7XG4gICAgICBpZiAoaW9wcykge1xuICAgICAgICBjb25zdCBpb3BzUmF0aW8gPSB0aHJvdWdocHV0IC8gaW9wcztcbiAgICAgICAgaWYgKGlvcHNSYXRpbyA+IG1heGltdW1UaHJvdWdocHV0UmF0aW8pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgVGhyb3VnaHB1dCAoTWlCcHMpIHRvIGlvcHMgcmF0aW8gb2YgJHtpb3BzUmF0aW99IGlzIHRvbyBoaWdoOyBtYXhpbXVtIGlzICR7bWF4aW11bVRocm91Z2hwdXRSYXRpb30gTWlCcHMgcGVyIGlvcHNgLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWlvcHMpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdm9sdW1lVHlwZSA9PT0gRWJzRGV2aWNlVm9sdW1lVHlwZS5JTzEgfHxcbiAgICAgICAgdm9sdW1lVHlwZSA9PT0gRWJzRGV2aWNlVm9sdW1lVHlwZS5JTzJcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJpb3BzIHByb3BlcnR5IGlzIHJlcXVpcmVkIHdpdGggdm9sdW1lVHlwZTogRWJzRGV2aWNlVm9sdW1lVHlwZS5JTzEgYW5kIEVic0RldmljZVZvbHVtZVR5cGUuSU8yXCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHZvbHVtZVR5cGUgIT09IEVic0RldmljZVZvbHVtZVR5cGUuSU8xICYmXG4gICAgICB2b2x1bWVUeXBlICE9PSBFYnNEZXZpY2VWb2x1bWVUeXBlLklPMiAmJlxuICAgICAgdm9sdW1lVHlwZSAhPT0gRWJzRGV2aWNlVm9sdW1lVHlwZS5HUDNcbiAgICApIHtcbiAgICAgIC8vIFwiQGF3cy1jZGsvYXdzLWVjMjppb3BzSWdub3JlZFwiLFxuICAgICAgQW5ub3RhdGlvbnMub2YoY29uc3RydWN0KS5hZGRXYXJuaW5nKFxuICAgICAgICBcImlvcHMgd2lsbCBiZSBpZ25vcmVkIHdpdGhvdXQgdm9sdW1lVHlwZTogSU8xLCBJTzIsIG9yIEdQM1wiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCZWNhdXNlIHRoZSBFYnMgcHJvcGVydGllcyBvZiB0aGUgTDIgQ29uc3RydWN0cyBkbyBub3QgbWF0Y2ggdGhlIEVicyBwcm9wZXJ0aWVzXG4gICAgICogb2YgdGhlIFRGICpCbG9ja0RldmljZSBzdHJ1Y3RzLCB3ZSBoYXZlIHRvIGRvIHNvbWUgdHJhbnNmb3JtYXRpb25cbiAgICAgKi9cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5yZXN0LFxuICAgICAgaW9wcyxcbiAgICAgIHRocm91Z2hwdXQsXG4gICAgICB2b2x1bWVUeXBlLFxuICAgICAga21zS2V5SWQ6IGttc0tleT8ua2V5QXJuLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiBkZXZpY2UgbmFtZSBpcyB0aGUgcmVzZXJ2ZWQgbmFtZSBmb3Igcm9vdCB2b2x1bWUuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZGV2aWNlX25hbWluZy5odG1sI2F2YWlsYWJsZS1lYzItZGV2aWNlLW5hbWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Jvb3RCbG9ja0RldmljZShcbiAgYmxvY2tEZXZpY2U6IEJsb2NrRGV2aWNlLFxuICB2aXJ0VHlwZTogQW1hem9uTGludXhWaXJ0ID0gQW1hem9uTGludXhWaXJ0LkhWTSxcbik6IGJvb2xlYW4ge1xuICBzd2l0Y2ggKHZpcnRUeXBlKSB7XG4gICAgY2FzZSBBbWF6b25MaW51eFZpcnQuSFZNOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgYmxvY2tEZXZpY2UuZGV2aWNlTmFtZSA9PT0gXCIvZGV2L3NkYTFcIiB8fFxuICAgICAgICBibG9ja0RldmljZS5kZXZpY2VOYW1lID09PSBcIi9kZXYveHZkYVwiXG4gICAgICApO1xuICAgIGNhc2UgQW1hem9uTGludXhWaXJ0LlBWOlxuICAgICAgcmV0dXJuIGJsb2NrRGV2aWNlLmRldmljZU5hbWUgPT09IFwiL2Rldi9zZGExXCI7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNFcGhlbWVyYWwoYmxvY2tEZXZpY2U6IEJsb2NrRGV2aWNlKTogYmxvY2tEZXZpY2UgaXMgQmxvY2tEZXZpY2UgJiB7XG4gIHZvbHVtZTogQmxvY2tEZXZpY2VWb2x1bWUgJiB7IHZpcnR1YWxOYW1lOiBzdHJpbmcgfTtcbn0ge1xuICByZXR1cm4gYmxvY2tEZXZpY2Uudm9sdW1lLmlzRXBoZW1lcmFsKCk7XG59XG4iXX0=