terraconstructs 0.2.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +3099 -2917
- package/CLAUDE.md +6 -6
- package/README.md +1 -1
- package/lib/asset-staging.js +3 -3
- package/lib/aws/arn.js +5 -5
- package/lib/aws/aws-asset-manager.js +9 -9
- package/lib/aws/aws-construct.js +1 -1
- package/lib/aws/aws-stack.d.ts +19 -4
- package/lib/aws/aws-stack.js +43 -18
- package/lib/aws/aws-tags.d.ts +1 -1
- package/lib/aws/aws-tags.js +5 -5
- package/lib/aws/cloudwatch/actions/appscaling.js +1 -1
- package/lib/aws/cloudwatch/actions/ec2.js +1 -1
- package/lib/aws/cloudwatch/actions/lambda.js +2 -2
- package/lib/aws/cloudwatch/actions/sns.js +1 -1
- package/lib/aws/cloudwatch/actions/ssm.js +2 -2
- package/lib/aws/cloudwatch/alarm-base.js +1 -1
- package/lib/aws/cloudwatch/alarm-rule.js +1 -1
- package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
- package/lib/aws/cloudwatch/alarm.d.ts +1 -1
- package/lib/aws/cloudwatch/alarm.js +10 -10
- package/lib/aws/cloudwatch/composite-alarm.d.ts +1 -1
- package/lib/aws/cloudwatch/composite-alarm.js +7 -7
- package/lib/aws/cloudwatch/dashboard.d.ts +1 -1
- package/lib/aws/cloudwatch/dashboard.js +7 -7
- package/lib/aws/cloudwatch/data-protection-policy.d.ts +1 -1
- package/lib/aws/cloudwatch/data-protection-policy.js +5 -5
- package/lib/aws/cloudwatch/graph.js +8 -8
- package/lib/aws/cloudwatch/layout.js +3 -3
- package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
- package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
- package/lib/aws/cloudwatch/log-group.d.ts +1 -1
- package/lib/aws/cloudwatch/log-group.js +7 -7
- package/lib/aws/cloudwatch/log-query.js +1 -1
- package/lib/aws/cloudwatch/log-stream.d.ts +1 -1
- package/lib/aws/cloudwatch/log-stream.js +3 -3
- package/lib/aws/cloudwatch/metric-filter.d.ts +1 -1
- package/lib/aws/cloudwatch/metric-filter.js +3 -3
- package/lib/aws/cloudwatch/metric.js +6 -6
- package/lib/aws/cloudwatch/pattern.js +3 -3
- package/lib/aws/cloudwatch/policy.d.ts +1 -1
- package/lib/aws/cloudwatch/policy.js +3 -3
- package/lib/aws/cloudwatch/private/drop-empty-object-at-the-end-of-an-array-token.d.ts +1 -1
- package/lib/aws/cloudwatch/private/drop-empty-object-at-the-end-of-an-array-token.js +1 -1
- package/lib/aws/cloudwatch/private/env-tokens.js +6 -6
- package/lib/aws/cloudwatch/query-definition.d.ts +1 -1
- package/lib/aws/cloudwatch/query-definition.js +4 -4
- package/lib/aws/cloudwatch/stats.js +1 -1
- package/lib/aws/cloudwatch/subscription-filter.d.ts +1 -1
- package/lib/aws/cloudwatch/subscription-filter.js +6 -6
- package/lib/aws/cloudwatch/text.js +1 -1
- package/lib/aws/cloudwatch/variable.js +3 -3
- package/lib/aws/cloudwatch/widget.js +1 -1
- package/lib/aws/compute/access-log.d.ts +1 -1
- package/lib/aws/compute/access-log.js +5 -5
- package/lib/aws/compute/activity.d.ts +1 -1
- package/lib/aws/compute/activity.js +5 -5
- package/lib/aws/compute/alb/application-listener-action.d.ts +1 -1
- package/lib/aws/compute/alb/application-listener-action.js +5 -5
- package/lib/aws/compute/alb/application-listener-certificate.js +3 -3
- package/lib/aws/compute/alb/application-listener-rule.js +9 -9
- package/lib/aws/compute/alb/application-listener.js +5 -5
- package/lib/aws/compute/alb/application-load-balancer.js +8 -8
- package/lib/aws/compute/alb/application-target-group.js +7 -7
- package/lib/aws/compute/alb/conditions.js +3 -3
- package/lib/aws/compute/alb/trust-store-revocation.js +3 -3
- package/lib/aws/compute/alb/trust-store.js +7 -7
- package/lib/aws/compute/api-definition.js +9 -9
- package/lib/aws/compute/api-key.js +6 -6
- package/lib/aws/compute/architecture.js +1 -1
- package/lib/aws/compute/aspects/require-imdsv2-aspect.d.ts +1 -1
- package/lib/aws/compute/aspects/require-imdsv2-aspect.js +6 -6
- package/lib/aws/compute/authorizer.js +1 -1
- package/lib/aws/compute/authorizers/identity-source.js +1 -1
- package/lib/aws/compute/authorizers/lambda.d.ts +1 -1
- package/lib/aws/compute/authorizers/lambda.js +6 -6
- package/lib/aws/compute/base-path-mapping.js +5 -5
- package/lib/aws/compute/base-scalable-attribute.js +1 -1
- package/lib/aws/compute/bastion-host.js +4 -4
- package/lib/aws/compute/chain.js +1 -1
- package/lib/aws/compute/client-vpn-authorization-rule.js +3 -3
- package/lib/aws/compute/client-vpn-endpoint.d.ts +1 -1
- package/lib/aws/compute/client-vpn-endpoint.js +9 -9
- package/lib/aws/compute/client-vpn-route.d.ts +1 -1
- package/lib/aws/compute/client-vpn-route.js +4 -4
- package/lib/aws/compute/code.d.ts +3 -3
- package/lib/aws/compute/code.js +15 -15
- package/lib/aws/compute/condition.js +1 -1
- package/lib/aws/compute/connections.js +1 -1
- package/lib/aws/compute/cors.js +1 -1
- package/lib/aws/compute/deployment.js +5 -5
- package/lib/aws/compute/domain-name.js +5 -5
- package/lib/aws/compute/event-invoke-config.d.ts +1 -1
- package/lib/aws/compute/event-invoke-config.js +3 -3
- package/lib/aws/compute/event-source-filter.js +2 -2
- package/lib/aws/compute/event-source-mapping.js +7 -7
- package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
- package/lib/aws/compute/event-sources/s3.js +1 -1
- package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
- package/lib/aws/compute/event-sources/sqs.js +5 -5
- package/lib/aws/compute/fields.d.ts +1 -1
- package/lib/aws/compute/fields.js +12 -12
- package/lib/aws/compute/function-alias.d.ts +1 -1
- package/lib/aws/compute/function-alias.js +3 -3
- package/lib/aws/compute/function-base.d.ts +1 -1
- package/lib/aws/compute/function-base.js +10 -9
- package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
- package/lib/aws/compute/function-destinations/function.js +1 -1
- package/lib/aws/compute/function-destinations/sqs.js +1 -1
- package/lib/aws/compute/function-nodejs/bundling.js +6 -6
- package/lib/aws/compute/function-nodejs/function.js +4 -4
- package/lib/aws/compute/function-url.d.ts +1 -1
- package/lib/aws/compute/function-url.js +3 -3
- package/lib/aws/compute/function-vpc-config.generated.d.ts +5 -5
- package/lib/aws/compute/function-vpc-config.generated.js +1 -1
- package/lib/aws/compute/function.d.ts +2 -2
- package/lib/aws/compute/function.js +9 -9
- package/lib/aws/compute/gateway-response.d.ts +1 -1
- package/lib/aws/compute/gateway-response.js +4 -4
- package/lib/aws/compute/handler.js +1 -1
- package/lib/aws/compute/instance-types.js +1 -1
- package/lib/aws/compute/instance.d.ts +1 -1
- package/lib/aws/compute/instance.js +9 -9
- package/lib/aws/compute/integration.js +4 -4
- package/lib/aws/compute/integrations/aws.js +3 -3
- package/lib/aws/compute/integrations/http.js +1 -1
- package/lib/aws/compute/integrations/lambda.js +5 -5
- package/lib/aws/compute/integrations/mock.js +1 -1
- package/lib/aws/compute/integrations/stepfunctions.js +4 -4
- package/lib/aws/compute/ip-addresses.d.ts +1 -1
- package/lib/aws/compute/ip-addresses.js +10 -10
- package/lib/aws/compute/ipam.d.ts +1 -1
- package/lib/aws/compute/ipam.js +5 -5
- package/lib/aws/compute/key-pair.d.ts +1 -1
- package/lib/aws/compute/key-pair.js +6 -6
- package/lib/aws/compute/lambda-api.js +1 -1
- package/lib/aws/compute/launch-template.d.ts +1 -1
- package/lib/aws/compute/launch-template.js +12 -12
- package/lib/aws/compute/lb-shared/base-listener.js +9 -9
- package/lib/aws/compute/lb-shared/base-load-balancer.d.ts +2 -2
- package/lib/aws/compute/lb-shared/base-load-balancer.js +12 -12
- package/lib/aws/compute/lb-shared/base-target-group.d.ts +1 -1
- package/lib/aws/compute/lb-shared/base-target-group.js +15 -15
- package/lib/aws/compute/lb-shared/lb-listener-config.generated.d.ts +34 -34
- package/lib/aws/compute/lb-shared/lb-listener-config.generated.js +1 -1
- package/lib/aws/compute/lb-shared/lb-target-group-attachment-config.generated.d.ts +11 -6
- package/lib/aws/compute/lb-shared/lb-target-group-attachment-config.generated.js +1 -1
- package/lib/aws/compute/lb-shared/listener-action.d.ts +1 -1
- package/lib/aws/compute/lb-shared/listener-action.js +1 -1
- package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
- package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
- package/lib/aws/compute/lb-shared/util.js +5 -5
- package/lib/aws/compute/lb-targets/alb-target.js +3 -3
- package/lib/aws/compute/lb-targets/instance-target.js +2 -2
- package/lib/aws/compute/lb-targets/ip-target.js +1 -1
- package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
- package/lib/aws/compute/load-balancer.d.ts +1 -1
- package/lib/aws/compute/load-balancer.js +8 -8
- package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
- package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
- package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
- package/lib/aws/compute/machine-image/common.js +1 -1
- package/lib/aws/compute/machine-image/machine-image.js +10 -10
- package/lib/aws/compute/method.js +6 -6
- package/lib/aws/compute/model.js +5 -5
- package/lib/aws/compute/nat.js +10 -10
- package/lib/aws/compute/network-acl-types.js +2 -2
- package/lib/aws/compute/network-acl.d.ts +1 -1
- package/lib/aws/compute/network-acl.js +5 -5
- package/lib/aws/compute/nlb/network-listener-action.d.ts +1 -1
- package/lib/aws/compute/nlb/network-listener-action.js +2 -2
- package/lib/aws/compute/nlb/network-listener-certificate.js +2 -2
- package/lib/aws/compute/nlb/network-listener.js +5 -5
- package/lib/aws/compute/nlb/network-load-balancer.js +6 -6
- package/lib/aws/compute/nlb/network-target-group.js +4 -4
- package/lib/aws/compute/peer.js +7 -7
- package/lib/aws/compute/placement-group.d.ts +1 -1
- package/lib/aws/compute/placement-group.js +3 -3
- package/lib/aws/compute/port.js +5 -5
- package/lib/aws/compute/prefix-list.d.ts +1 -1
- package/lib/aws/compute/prefix-list.js +5 -5
- package/lib/aws/compute/private/context-stub.js +7 -7
- package/lib/aws/compute/private/ebs-util.d.ts +1 -1
- package/lib/aws/compute/private/ebs-util.js +3 -3
- package/lib/aws/compute/private/json-path.d.ts +1 -1
- package/lib/aws/compute/private/json-path.js +8 -8
- package/lib/aws/compute/requestvalidator.js +3 -3
- package/lib/aws/compute/resource.js +5 -5
- package/lib/aws/compute/restapi.d.ts +1 -1
- package/lib/aws/compute/restapi.js +11 -11
- package/lib/aws/compute/route.d.ts +1 -1
- package/lib/aws/compute/route.js +12 -12
- package/lib/aws/compute/runtime.js +3 -3
- package/lib/aws/compute/scalable-target.d.ts +1 -1
- package/lib/aws/compute/scalable-target.js +3 -3
- package/lib/aws/compute/schedule.js +4 -4
- package/lib/aws/compute/security-group.js +12 -12
- package/lib/aws/compute/stage.d.ts +1 -1
- package/lib/aws/compute/stage.js +6 -6
- package/lib/aws/compute/state-graph.js +1 -1
- package/lib/aws/compute/state-machine-fragment.js +1 -1
- package/lib/aws/compute/state-machine.d.ts +2 -2
- package/lib/aws/compute/state-machine.js +8 -8
- package/lib/aws/compute/states/choice.js +1 -1
- package/lib/aws/compute/states/custom-state.js +5 -5
- package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
- package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
- package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
- package/lib/aws/compute/states/distributed-map.js +4 -4
- package/lib/aws/compute/states/fail.js +4 -4
- package/lib/aws/compute/states/map-base.js +4 -4
- package/lib/aws/compute/states/map.js +1 -1
- package/lib/aws/compute/states/parallel.js +1 -1
- package/lib/aws/compute/states/pass.js +2 -2
- package/lib/aws/compute/states/state.js +4 -4
- package/lib/aws/compute/states/succeed.js +1 -1
- package/lib/aws/compute/states/task-base.js +2 -2
- package/lib/aws/compute/states/task.js +1 -1
- package/lib/aws/compute/states/wait.js +2 -2
- package/lib/aws/compute/step-scaling-action.js +5 -5
- package/lib/aws/compute/step-scaling-policy.js +7 -7
- package/lib/aws/compute/stepfunctions-api.js +2 -2
- package/lib/aws/compute/subnet-v2.d.ts +1 -1
- package/lib/aws/compute/subnet-v2.js +5 -5
- package/lib/aws/compute/subnet.js +4 -4
- package/lib/aws/compute/target-tracking-scaling-policy.js +3 -3
- package/lib/aws/compute/task-credentials.js +1 -1
- package/lib/aws/compute/task-input.js +1 -1
- package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +5 -5
- package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
- package/lib/aws/compute/tasks/http/invoke.js +1 -1
- package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
- package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
- package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
- package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
- package/lib/aws/compute/types.js +1 -1
- package/lib/aws/compute/usage-plan.js +5 -5
- package/lib/aws/compute/user-data.d.ts +2 -2
- package/lib/aws/compute/user-data.js +10 -10
- package/lib/aws/compute/volume.d.ts +1 -1
- package/lib/aws/compute/volume.js +7 -7
- package/lib/aws/compute/vpc-endpoint-service.js +3 -3
- package/lib/aws/compute/vpc-endpoint.d.ts +1 -1
- package/lib/aws/compute/vpc-endpoint.js +13 -13
- package/lib/aws/compute/vpc-flow-logs.d.ts +1 -1
- package/lib/aws/compute/vpc-flow-logs.js +8 -8
- package/lib/aws/compute/vpc-link.js +5 -5
- package/lib/aws/compute/vpc-v2-base.js +6 -6
- package/lib/aws/compute/vpc-v2.d.ts +2 -2
- package/lib/aws/compute/vpc-v2.js +4 -4
- package/lib/aws/compute/vpc.d.ts +1 -1
- package/lib/aws/compute/vpc.js +24 -22
- package/lib/aws/compute/vpn.js +8 -8
- package/lib/aws/context-provider.js +4 -4
- package/lib/aws/edge/certificate.d.ts +1 -1
- package/lib/aws/edge/certificate.js +6 -6
- package/lib/aws/edge/distribution.d.ts +1 -1
- package/lib/aws/edge/distribution.js +9 -9
- package/lib/aws/edge/dns-alias-record-targets.d.ts +1 -1
- package/lib/aws/edge/dns-alias-record-targets.js +7 -7
- package/lib/aws/edge/dns-record.d.ts +1 -1
- package/lib/aws/edge/dns-record.js +19 -19
- package/lib/aws/edge/dns-zone.d.ts +2 -2
- package/lib/aws/edge/dns-zone.js +5 -5
- package/lib/aws/edge/function.d.ts +1 -1
- package/lib/aws/edge/function.js +4 -4
- package/lib/aws/edge/key-value-store.d.ts +1 -1
- package/lib/aws/edge/key-value-store.js +6 -6
- package/lib/aws/edge/origin.d.ts +1 -1
- package/lib/aws/edge/origin.js +6 -6
- package/lib/aws/edge/response-headers-policy.d.ts +1 -1
- package/lib/aws/edge/response-headers-policy.js +6 -6
- package/lib/aws/encryption/alias.d.ts +1 -1
- package/lib/aws/encryption/alias.js +8 -8
- package/lib/aws/encryption/key.d.ts +1 -1
- package/lib/aws/encryption/key.js +6 -6
- package/lib/aws/encryption/via-service-principal.js +1 -1
- package/lib/aws/iam/grant.js +3 -3
- package/lib/aws/iam/group.js +5 -5
- package/lib/aws/iam/instance-profile.d.ts +1 -1
- package/lib/aws/iam/instance-profile.js +3 -3
- package/lib/aws/iam/managed-policy.d.ts +1 -1
- package/lib/aws/iam/managed-policy.js +3 -3
- package/lib/aws/iam/oidc-provider.d.ts +1 -1
- package/lib/aws/iam/oidc-provider.js +3 -3
- package/lib/aws/iam/policy-document-config.generated.d.ts +9 -9
- package/lib/aws/iam/policy-document-config.generated.js +1 -1
- package/lib/aws/iam/policy-document.d.ts +1 -1
- package/lib/aws/iam/policy-document.js +5 -5
- package/lib/aws/iam/policy-statement-props.generated.d.ts +8 -8
- package/lib/aws/iam/policy-statement-props.generated.js +1 -1
- package/lib/aws/iam/policy-statement.d.ts +1 -1
- package/lib/aws/iam/policy-statement.js +8 -8
- package/lib/aws/iam/policy.js +3 -3
- package/lib/aws/iam/principals.js +25 -25
- package/lib/aws/iam/private/imported-role.js +3 -3
- package/lib/aws/iam/private/postprocess-policy-document.d.ts +1 -1
- package/lib/aws/iam/private/postprocess-policy-document.js +1 -1
- package/lib/aws/iam/private/util.d.ts +1 -1
- package/lib/aws/iam/private/util.js +5 -5
- package/lib/aws/iam/role.d.ts +1 -1
- package/lib/aws/iam/role.js +6 -6
- package/lib/aws/iam/saml-provider.d.ts +1 -1
- package/lib/aws/iam/saml-provider.js +6 -6
- package/lib/aws/iam/unknown-principal.js +4 -4
- package/lib/aws/iam/user.js +3 -3
- package/lib/aws/network/network.d.ts +1 -1
- package/lib/aws/network/network.js +1 -1
- package/lib/aws/network/simple-ipv4-vpc.js +12 -12
- package/lib/aws/network/subnet-group.d.ts +1 -1
- package/lib/aws/network/subnet-group.js +5 -5
- package/lib/aws/network/subnet.d.ts +1 -1
- package/lib/aws/network/subnet.js +6 -6
- package/lib/aws/notify/archive.d.ts +1 -1
- package/lib/aws/notify/archive.js +3 -3
- package/lib/aws/notify/connection.d.ts +1 -1
- package/lib/aws/notify/connection.js +5 -5
- package/lib/aws/notify/event-bus.d.ts +1 -1
- package/lib/aws/notify/event-bus.js +10 -10
- package/lib/aws/notify/event-pattern.d.ts +1 -1
- package/lib/aws/notify/event-pattern.js +5 -5
- package/lib/aws/notify/input.d.ts +1 -1
- package/lib/aws/notify/input.js +12 -12
- package/lib/aws/notify/kinesis-stream.d.ts +1 -1
- package/lib/aws/notify/kinesis-stream.js +7 -7
- package/lib/aws/notify/notification-rule.js +8 -8
- package/lib/aws/notify/policy.js +3 -3
- package/lib/aws/notify/queue-base.js +1 -1
- package/lib/aws/notify/queue-policy.js +3 -3
- package/lib/aws/notify/queue.d.ts +1 -1
- package/lib/aws/notify/queue.js +8 -8
- package/lib/aws/notify/resource-policy.js +3 -3
- package/lib/aws/notify/rule.d.ts +1 -1
- package/lib/aws/notify/rule.js +6 -6
- package/lib/aws/notify/schedule.js +4 -4
- package/lib/aws/notify/sns-grants.generated.js +1 -1
- package/lib/aws/notify/sqs-grants.generated.js +1 -1
- package/lib/aws/notify/subscription-filter.js +1 -1
- package/lib/aws/notify/subscription.js +6 -6
- package/lib/aws/notify/subscriptions/email.js +1 -1
- package/lib/aws/notify/subscriptions/lambda.js +4 -4
- package/lib/aws/notify/subscriptions/sms.js +1 -1
- package/lib/aws/notify/subscriptions/sqs.js +4 -4
- package/lib/aws/notify/subscriptions/url.js +4 -4
- package/lib/aws/notify/target.d.ts +1 -1
- package/lib/aws/notify/target.js +1 -1
- package/lib/aws/notify/targets/event-bus.js +1 -1
- package/lib/aws/notify/targets/function.js +1 -1
- package/lib/aws/notify/targets/log-group.js +2 -2
- package/lib/aws/notify/targets/sqs.js +1 -1
- package/lib/aws/notify/targets/state-machine.js +1 -1
- package/lib/aws/notify/targets/util.js +3 -3
- package/lib/aws/notify/topic-base.js +4 -4
- package/lib/aws/notify/topic.js +7 -7
- package/lib/aws/provider-config.generated.d.ts +42 -36
- package/lib/aws/provider-config.generated.js +1 -1
- package/lib/aws/region-lookup.js +4 -4
- package/lib/aws/storage/assets/image-asset.js +8 -8
- package/lib/aws/storage/assets/s3.js +1 -1
- package/lib/aws/storage/auth-token.js +2 -2
- package/lib/aws/storage/billing.js +1 -1
- package/lib/aws/storage/bucket-notifications.d.ts +1 -1
- package/lib/aws/storage/bucket-notifications.js +8 -8
- package/lib/aws/storage/bucket-policy.d.ts +1 -1
- package/lib/aws/storage/bucket-policy.js +3 -3
- package/lib/aws/storage/bucket-source.d.ts +1 -1
- package/lib/aws/storage/bucket-source.js +7 -7
- package/lib/aws/storage/bucket.d.ts +1 -1
- package/lib/aws/storage/bucket.js +8 -8
- package/lib/aws/storage/capacity.js +1 -1
- package/lib/aws/storage/cors-config.generated.d.ts +5 -5
- package/lib/aws/storage/cors-config.generated.js +1 -1
- package/lib/aws/storage/cors-rule-config.generated.d.ts +5 -5
- package/lib/aws/storage/cors-rule-config.generated.js +1 -1
- package/lib/aws/storage/ecr-repository.js +11 -11
- package/lib/aws/storage/encryption.d.ts +1 -1
- package/lib/aws/storage/encryption.js +5 -5
- package/lib/aws/storage/lifecycle-config.generated.d.ts +9 -9
- package/lib/aws/storage/lifecycle-config.generated.js +1 -1
- package/lib/aws/storage/notification-targets/function.js +2 -2
- package/lib/aws/storage/notification-targets/queue.js +4 -4
- package/lib/aws/storage/origin-access-identity.d.ts +2 -2
- package/lib/aws/storage/origin-access-identity.js +3 -3
- package/lib/aws/storage/parameter-util.js +5 -5
- package/lib/aws/storage/parameter.d.ts +2 -2
- package/lib/aws/storage/parameter.js +16 -16
- package/lib/aws/storage/stream-grants.js +1 -1
- package/lib/aws/storage/table-grants.js +1 -1
- package/lib/aws/storage/table.d.ts +1 -1
- package/lib/aws/storage/table.js +10 -10
- package/lib/aws/storage/website-config.generated.d.ts +8 -8
- package/lib/aws/storage/website-config.generated.js +1 -1
- package/lib/bundling.js +5 -5
- package/lib/construct-base.d.ts +1 -1
- package/lib/construct-base.js +10 -10
- package/lib/duration.js +9 -9
- package/lib/errors.js +1 -1
- package/lib/expiration.js +1 -1
- package/lib/fs/ignore.js +4 -4
- package/lib/fs/index.js +1 -1
- package/lib/private/terraform-dependables-aspect.d.ts +1 -1
- package/lib/private/terraform-dependables-aspect.js +6 -6
- package/lib/private/unique-resource-name.js +3 -3
- package/lib/size.js +6 -6
- package/lib/stack-base.d.ts +2 -2
- package/lib/stack-base.js +16 -16
- package/lib/terra-func.d.ts +1 -1
- package/lib/terra-func.js +18 -18
- package/lib/time-zone.js +1 -1
- package/lib/token.js +5 -5
- package/package.json +17 -17
- package/setup.js +2 -2
|
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.ZoneDelegationRecord = exports.DsRecord = exports.NsRecord = exports.MxRecord = exports.CaaAmazonRecord = exports.CaaRecord = exports.CaaTag = exports.SrvRecord = exports.TxtRecord = exports.CnameRecord = exports.AaaaRecord = exports.ARecord = exports.RecordTarget = exports.RecordType = exports.RecordSet = void 0;
|
|
5
5
|
exports.determineFullyQualifiedDomainName = determineFullyQualifiedDomainName;
|
|
6
6
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
7
|
-
const provider_aws_1 = require("@
|
|
8
|
-
const
|
|
7
|
+
const provider_aws_1 = require("@cdktn/provider-aws");
|
|
8
|
+
const cdktn_1 = require("cdktn");
|
|
9
9
|
const __1 = require("../");
|
|
10
10
|
const __2 = require("../..");
|
|
11
11
|
/**
|
|
@@ -134,7 +134,7 @@ class RecordSet extends __1.AwsConstructBase {
|
|
|
134
134
|
}
|
|
135
135
|
exports.RecordSet = RecordSet;
|
|
136
136
|
_a = JSII_RTTI_SYMBOL_1;
|
|
137
|
-
RecordSet[_a] = { fqn: "terraconstructs.aws.edge.RecordSet", version: "0.2.
|
|
137
|
+
RecordSet[_a] = { fqn: "terraconstructs.aws.edge.RecordSet", version: "0.2.6" };
|
|
138
138
|
/**
|
|
139
139
|
* The record type.
|
|
140
140
|
*/
|
|
@@ -259,7 +259,7 @@ class RecordTarget {
|
|
|
259
259
|
}
|
|
260
260
|
exports.RecordTarget = RecordTarget;
|
|
261
261
|
_b = JSII_RTTI_SYMBOL_1;
|
|
262
|
-
RecordTarget[_b] = { fqn: "terraconstructs.aws.edge.RecordTarget", version: "0.2.
|
|
262
|
+
RecordTarget[_b] = { fqn: "terraconstructs.aws.edge.RecordTarget", version: "0.2.6" };
|
|
263
263
|
/**
|
|
264
264
|
* A DNS A record
|
|
265
265
|
*
|
|
@@ -276,7 +276,7 @@ class ARecord extends RecordSet {
|
|
|
276
276
|
}
|
|
277
277
|
exports.ARecord = ARecord;
|
|
278
278
|
_c = JSII_RTTI_SYMBOL_1;
|
|
279
|
-
ARecord[_c] = { fqn: "terraconstructs.aws.edge.ARecord", version: "0.2.
|
|
279
|
+
ARecord[_c] = { fqn: "terraconstructs.aws.edge.ARecord", version: "0.2.6" };
|
|
280
280
|
/**
|
|
281
281
|
* A DNS AAAA record
|
|
282
282
|
*
|
|
@@ -293,7 +293,7 @@ class AaaaRecord extends RecordSet {
|
|
|
293
293
|
}
|
|
294
294
|
exports.AaaaRecord = AaaaRecord;
|
|
295
295
|
_d = JSII_RTTI_SYMBOL_1;
|
|
296
|
-
AaaaRecord[_d] = { fqn: "terraconstructs.aws.edge.AaaaRecord", version: "0.2.
|
|
296
|
+
AaaaRecord[_d] = { fqn: "terraconstructs.aws.edge.AaaaRecord", version: "0.2.6" };
|
|
297
297
|
/**
|
|
298
298
|
* A DNS CNAME record
|
|
299
299
|
*
|
|
@@ -310,7 +310,7 @@ class CnameRecord extends RecordSet {
|
|
|
310
310
|
}
|
|
311
311
|
exports.CnameRecord = CnameRecord;
|
|
312
312
|
_e = JSII_RTTI_SYMBOL_1;
|
|
313
|
-
CnameRecord[_e] = { fqn: "terraconstructs.aws.edge.CnameRecord", version: "0.2.
|
|
313
|
+
CnameRecord[_e] = { fqn: "terraconstructs.aws.edge.CnameRecord", version: "0.2.6" };
|
|
314
314
|
/**
|
|
315
315
|
* A DNS TXT record
|
|
316
316
|
*
|
|
@@ -327,7 +327,7 @@ class TxtRecord extends RecordSet {
|
|
|
327
327
|
}
|
|
328
328
|
exports.TxtRecord = TxtRecord;
|
|
329
329
|
_f = JSII_RTTI_SYMBOL_1;
|
|
330
|
-
TxtRecord[_f] = { fqn: "terraconstructs.aws.edge.TxtRecord", version: "0.2.
|
|
330
|
+
TxtRecord[_f] = { fqn: "terraconstructs.aws.edge.TxtRecord", version: "0.2.6" };
|
|
331
331
|
/**
|
|
332
332
|
* Formats a text value for use in a TXT record
|
|
333
333
|
*
|
|
@@ -363,7 +363,7 @@ class SrvRecord extends RecordSet {
|
|
|
363
363
|
}
|
|
364
364
|
exports.SrvRecord = SrvRecord;
|
|
365
365
|
_g = JSII_RTTI_SYMBOL_1;
|
|
366
|
-
SrvRecord[_g] = { fqn: "terraconstructs.aws.edge.SrvRecord", version: "0.2.
|
|
366
|
+
SrvRecord[_g] = { fqn: "terraconstructs.aws.edge.SrvRecord", version: "0.2.6" };
|
|
367
367
|
/**
|
|
368
368
|
* The CAA tag.
|
|
369
369
|
*/
|
|
@@ -401,7 +401,7 @@ class CaaRecord extends RecordSet {
|
|
|
401
401
|
}
|
|
402
402
|
exports.CaaRecord = CaaRecord;
|
|
403
403
|
_h = JSII_RTTI_SYMBOL_1;
|
|
404
|
-
CaaRecord[_h] = { fqn: "terraconstructs.aws.edge.CaaRecord", version: "0.2.
|
|
404
|
+
CaaRecord[_h] = { fqn: "terraconstructs.aws.edge.CaaRecord", version: "0.2.6" };
|
|
405
405
|
/**
|
|
406
406
|
* A DNS Amazon CAA record.
|
|
407
407
|
*
|
|
@@ -426,7 +426,7 @@ class CaaAmazonRecord extends CaaRecord {
|
|
|
426
426
|
}
|
|
427
427
|
exports.CaaAmazonRecord = CaaAmazonRecord;
|
|
428
428
|
_j = JSII_RTTI_SYMBOL_1;
|
|
429
|
-
CaaAmazonRecord[_j] = { fqn: "terraconstructs.aws.edge.CaaAmazonRecord", version: "0.2.
|
|
429
|
+
CaaAmazonRecord[_j] = { fqn: "terraconstructs.aws.edge.CaaAmazonRecord", version: "0.2.6" };
|
|
430
430
|
/**
|
|
431
431
|
* A DNS MX record
|
|
432
432
|
*
|
|
@@ -443,7 +443,7 @@ class MxRecord extends RecordSet {
|
|
|
443
443
|
}
|
|
444
444
|
exports.MxRecord = MxRecord;
|
|
445
445
|
_k = JSII_RTTI_SYMBOL_1;
|
|
446
|
-
MxRecord[_k] = { fqn: "terraconstructs.aws.edge.MxRecord", version: "0.2.
|
|
446
|
+
MxRecord[_k] = { fqn: "terraconstructs.aws.edge.MxRecord", version: "0.2.6" };
|
|
447
447
|
/**
|
|
448
448
|
* A DNS NS record
|
|
449
449
|
*
|
|
@@ -460,7 +460,7 @@ class NsRecord extends RecordSet {
|
|
|
460
460
|
}
|
|
461
461
|
exports.NsRecord = NsRecord;
|
|
462
462
|
_l = JSII_RTTI_SYMBOL_1;
|
|
463
|
-
NsRecord[_l] = { fqn: "terraconstructs.aws.edge.NsRecord", version: "0.2.
|
|
463
|
+
NsRecord[_l] = { fqn: "terraconstructs.aws.edge.NsRecord", version: "0.2.6" };
|
|
464
464
|
/**
|
|
465
465
|
* A DNS DS record
|
|
466
466
|
*
|
|
@@ -477,7 +477,7 @@ class DsRecord extends RecordSet {
|
|
|
477
477
|
}
|
|
478
478
|
exports.DsRecord = DsRecord;
|
|
479
479
|
_m = JSII_RTTI_SYMBOL_1;
|
|
480
|
-
DsRecord[_m] = { fqn: "terraconstructs.aws.edge.DsRecord", version: "0.2.
|
|
480
|
+
DsRecord[_m] = { fqn: "terraconstructs.aws.edge.DsRecord", version: "0.2.6" };
|
|
481
481
|
/**
|
|
482
482
|
* A record to delegate further lookups to a different set of name servers.
|
|
483
483
|
*/
|
|
@@ -486,16 +486,16 @@ class ZoneDelegationRecord extends RecordSet {
|
|
|
486
486
|
super(scope, id, {
|
|
487
487
|
...props,
|
|
488
488
|
recordType: RecordType.NS,
|
|
489
|
-
target: RecordTarget.fromValues(...(
|
|
489
|
+
target: RecordTarget.fromValues(...(cdktn_1.Token.isUnresolved(props.nameServers)
|
|
490
490
|
? props.nameServers // Can't map a string-array token!
|
|
491
|
-
: props.nameServers.map((ns) =>
|
|
491
|
+
: props.nameServers.map((ns) => cdktn_1.Token.isUnresolved(ns) || ns.endsWith(".") ? ns : `${ns}.`))),
|
|
492
492
|
ttl: props.ttl || __2.Duration.days(2),
|
|
493
493
|
});
|
|
494
494
|
}
|
|
495
495
|
}
|
|
496
496
|
exports.ZoneDelegationRecord = ZoneDelegationRecord;
|
|
497
497
|
_o = JSII_RTTI_SYMBOL_1;
|
|
498
|
-
ZoneDelegationRecord[_o] = { fqn: "terraconstructs.aws.edge.ZoneDelegationRecord", version: "0.2.
|
|
498
|
+
ZoneDelegationRecord[_o] = { fqn: "terraconstructs.aws.edge.ZoneDelegationRecord", version: "0.2.6" };
|
|
499
499
|
// ref https://github.com/aws/aws-cdk/blob/v2.156.0/packages/aws-cdk-lib/aws-route53/lib/util.ts
|
|
500
500
|
/**
|
|
501
501
|
* Route53 requires the record names are specified as fully qualified names, but this
|
|
@@ -517,7 +517,7 @@ function determineFullyQualifiedDomainName(dnsZone, recordName) {
|
|
|
517
517
|
if (!recordName) {
|
|
518
518
|
return `${dnsZone.zoneName}`;
|
|
519
519
|
}
|
|
520
|
-
if (recordName.endsWith(".") ||
|
|
520
|
+
if (recordName.endsWith(".") || cdktn_1.Token.isUnresolved(dnsZone.zoneName)) {
|
|
521
521
|
return recordName;
|
|
522
522
|
}
|
|
523
523
|
const zoneName = dnsZone.zoneName.endsWith(".")
|
|
@@ -529,4 +529,4 @@ function determineFullyQualifiedDomainName(dnsZone, recordName) {
|
|
|
529
529
|
}
|
|
530
530
|
return `${recordName}${suffix}.`;
|
|
531
531
|
}
|
|
532
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLXJlY29yZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MvZWRnZS9kbnMtcmVjb3JkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFxMkJBLDhFQXNCQzs7QUEzM0JELHNEQUFvRDtBQUNwRCxpQ0FBOEI7QUFJOUIsMkJBQXlFO0FBQ3pFLDZCQUFpQztBQXdKakM7O0dBRUc7QUFDSCxNQUFhLFNBQVUsU0FBUSxvQkFBZ0I7SUFHN0MsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQVFELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUI7UUFDN0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdELE1BQU0sSUFBSSxLQUFLLENBQ2Isb0RBQW9ELEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FDbkUsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUNFLEtBQUssQ0FBQyxhQUFhO1lBQ25CLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxFQUNwRSxDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixpRUFBaUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FDOUYsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUNFLEtBQUssQ0FBQyxhQUFhO1lBQ25CLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUztZQUMxQix3QkFB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LENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBRXJCLE1BQU0sTUFBTSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7SUFDOUIsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMzRCxPQUFPLEdBQUcsVUFBVSxHQUFHLENBQUM7SUFDMUIsQ0FBQztJQUVELE9BQU8sR0FBRyxVQUFVLEdBQUcsTUFBTSxHQUFHLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJvdXRlNTNSZWNvcmQgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG4vLyBpbXBvcnQgeyBHZW9Mb2NhdGlvbiB9IGZyb20gXCIuL2dlby1sb2NhdGlvblwiO1xuaW1wb3J0IHsgSURuc1pvbmUsIElBbGlhc1JlY29yZFRhcmdldCB9IGZyb20gXCIuXCI7XG5pbXBvcnQgeyBJQXdzQ29uc3RydWN0LCBBd3NDb25zdHJ1Y3RQcm9wcywgQXdzQ29uc3RydWN0QmFzZSB9IGZyb20gXCIuLi9cIjtcbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcIi4uLy4uXCI7XG5cbi8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTU2LjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLXJvdXRlNTMvbGliL3JlY29yZC1zZXQudHNcblxuLyoqXG4gKiBPcHRpb25zIGZvciBhIFJlY29yZFNldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWNvcmRTZXRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBob3N0ZWQgem9uZSBpbiB3aGljaCB0byBkZWZpbmUgdGhlIG5ldyByZWNvcmQuXG4gICAqL1xuICByZWFkb25seSB6b25lOiBJRG5zWm9uZTtcblxuICAvKipcbiAgICogVGhlIHN1YmRvbWFpbiBuYW1lIGZvciB0aGlzIHJlY29yZC4gVGhpcyBzaG91bGQgYmUgcmVsYXRpdmUgdG8gdGhlIHpvbmUgcm9vdCBuYW1lLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gY3JlYXRlIGEgcmVjb3JkIGZvciBhY21lLmV4YW1wbGUuY29tLCBzcGVjaWZ5XG4gICAqIFwiYWNtZVwiLlxuICAgKlxuICAgKiBZb3UgY2FuIGFsc28gc3BlY2lmeSB0aGUgZnVsbHkgcXVhbGlmaWVkIGRvbWFpbiBuYW1lIHdoaWNoIHRlcm1pbmF0ZXMgd2l0aCBhXG4gICAqIFwiLlwiLiBGb3IgZXhhbXBsZSwgXCJhY21lLmV4YW1wbGUuY29tLlwiLlxuICAgKlxuICAgKiBAZGVmYXVsdCB6b25lIHJvb3RcbiAgICovXG4gIHJlYWRvbmx5IHJlY29yZE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSByZWNvcmQgY2FjaGUgdGltZSB0byBsaXZlIChUVEwpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBEdXJhdGlvbi5taW51dGVzKDMwKVxuICAgKi9cbiAgcmVhZG9ubHkgdHRsPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGVsZXRlIHRoZSBzYW1lIHJlY29yZCBzZXQgaW4gdGhlIGhvc3RlZCB6b25lIGlmIGl0IGFscmVhZHkgZXhpc3RzIChkYW5nZXJvdXMhKVxuICAgKlxuICAgKiBUaGlzIGFsbG93cyB0byBkZXBsb3kgYSBuZXcgcmVjb3JkIHNldCB3aGlsZSBtaW5pbWl6aW5nIHRoZSBkb3dudGltZSBiZWNhdXNlIHRoZVxuICAgKiBuZXcgcmVjb3JkIHNldCB3aWxsIGJlIGNyZWF0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGV4aXN0aW5nIG9uZSBpcyBkZWxldGVkLiBJdFxuICAgKiBhbHNvIGF2b2lkcyBcIm1hbnVhbFwiIGFjdGlvbnMgdG8gZGVsZXRlIGV4aXN0aW5nIHJlY29yZCBzZXRzLlxuICAgKlxuICAgKiA+ICoqTi5CLjoqKiB0aGlzIGZlYXR1cmUgaXMgZGFuZ2Vyb3VzLCB1c2Ugd2l0aCBjYXV0aW9uIVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dPdmVyd3JpdGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbW9uZyByZXNvdXJjZSByZWNvcmQgc2V0cyB0aGF0IGhhdmUgdGhlIHNhbWUgY29tYmluYXRpb24gb2YgRE5TIG5hbWUgYW5kIHR5cGUsXG4gICAqIGEgdmFsdWUgdGhhdCBkZXRlcm1pbmVzIHRoZSBwcm9wb3J0aW9uIG9mIEROUyBxdWVyaWVzIHRoYXQgQW1hem9uIFJvdXRlIDUzIHJlc3BvbmRzIHRvIHVzaW5nIHRoZSBjdXJyZW50IHJlc291cmNlIHJlY29yZCBzZXQuXG4gICAqXG4gICAqIFJvdXRlIDUzIGNhbGN1bGF0ZXMgdGhlIHN1bSBvZiB0aGUgd2VpZ2h0cyBmb3IgdGhlIHJlc291cmNlIHJlY29yZCBzZXRzIHRoYXQgaGF2ZSB0aGUgc2FtZSBjb21iaW5hdGlvbiBvZiBETlMgbmFtZSBhbmQgdHlwZS5cbiAgICogUm91dGUgNTMgdGhlbiByZXNwb25kcyB0byBxdWVyaWVzIGJhc2VkIG9uIHRoZSByYXRpbyBvZiBhIHJlc291cmNlJ3Mgd2VpZ2h0IHRvIHRoZSB0b3RhbC5cbiAgICpcbiAgICogVGhpcyB2YWx1ZSBjYW4gYmUgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAyNTUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL1JvdXRlNTMvbGF0ZXN0L0RldmVsb3Blckd1aWRlL3JvdXRpbmctcG9saWN5LXdlaWdodGVkLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBEbyBub3Qgc2V0IHdlaWdodGVkIHJvdXRpbmdcbiAgICovXG4gIHJlYWRvbmx5IHdlaWdodD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIEFtYXpvbiBFQzIgUmVnaW9uIHdoZXJlIHlvdSBjcmVhdGVkIHRoZSByZXNvdXJjZSB0aGF0IHRoaXMgcmVzb3VyY2UgcmVjb3JkIHNldCByZWZlcnMgdG8uXG4gICAqIFRoZSByZXNvdXJjZSB0eXBpY2FsbHkgaXMgYW4gQVdTIHJlc291cmNlLCBzdWNoIGFzIGFuIEVDMiBpbnN0YW5jZSBvciBhbiBFTEIgbG9hZCBiYWxhbmNlcixcbiAgICogYW5kIGlzIHJlZmVycmVkIHRvIGJ5IGFuIElQIGFkZHJlc3Mgb3IgYSBETlMgZG9tYWluIG5hbWUsIGRlcGVuZGluZyBvbiB0aGUgcmVjb3JkIHR5cGUuXG4gICAqXG4gICAqIFdoZW4gQW1hem9uIFJvdXRlIDUzIHJlY2VpdmVzIGEgRE5TIHF1ZXJ5IGZvciBhIGRvbWFpbiBuYW1lIGFuZCB0eXBlIGZvciB3aGljaCB5b3UgaGF2ZSBjcmVhdGVkIGxhdGVuY3kgcmVzb3VyY2UgcmVjb3JkIHNldHMsXG4gICAqIFJvdXRlIDUzIHNlbGVjdHMgdGhlIGxhdGVuY3kgcmVzb3VyY2UgcmVjb3JkIHNldCB0aGF0IGhhcyB0aGUgbG93ZXN0IGxhdGVuY3kgYmV0d2VlbiB0aGUgZW5kIHVzZXIgYW5kIHRoZSBhc3NvY2lhdGVkIEFtYXpvbiBFQzIgUmVnaW9uLlxuICAgKiBSb3V0ZSA1MyB0aGVuIHJldHVybnMgdGhlIHZhbHVlIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZWxlY3RlZCByZXNvdXJjZSByZWNvcmQgc2V0LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1yb3V0ZTUzLXJlY29yZHNldC5odG1sI2Nmbi1yb3V0ZTUzLXJlY29yZHNldC1yZWdpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEbyBub3Qgc2V0IGxhdGVuY3kgYmFzZWQgcm91dGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJldHVybiBtdWx0aXBsZSB2YWx1ZXMsIHN1Y2ggYXMgSVAgYWRkcmVzc2VzIGZvciB5b3VyIHdlYiBzZXJ2ZXJzLCBpbiByZXNwb25zZSB0byBETlMgcXVlcmllcy5cbiAgICogU2V0IHRvIHRydWUgdG8gaW5kaWNhdGUgYSBtdWx0aXZhbHVlIGFuc3dlciByb3V0aW5nIHBvbGljeS4gQ29uZmxpY3RzIHdpdGggYW55IG90aGVyIHJvdXRpbmcgcG9saWN5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbXVsdGlWYWx1ZUFuc3dlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBkaWZmZXJlbnQgcmVjb3JkcyB3aXRoIHRoZSBzYW1lIGNvbWJpbmF0aW9uIG9mIEROUyBuYW1lIGFuZCB0eXBlLlxuICAgKiBJdCBjYW4gb25seSBiZSBzZXQgd2hlbiBlaXRoZXIgd2VpZ2h0IG9yIGdlb0xvY2F0aW9uIGlzIGRlZmluZWQuXG4gICAqXG4gICAqIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAxMjggY2hhcmFjdGVycyBpbiBsZW5ndGguXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQXV0byBnZW5lcmF0ZWQgc3RyaW5nXG4gICAqL1xuICByZWFkb25seSBzZXRJZGVudGlmaWVyPzogc3RyaW5nO1xuXG4gIC8vIFI1MyByZWNvcmQgY29tbWVudCBpcyBoYXJkY29kZWQgZm9yIHRlcnJhZm9ybS1wcm92aWRlci1hd3NcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tcHJvdmlkZXItYXdzL2Jsb2IvdjUuNjguMC9pbnRlcm5hbC9zZXJ2aWNlL3JvdXRlNTMvcmVjb3JkLmdvI0wzNjNcbiAgLy8gLyoqXG4gIC8vICAqIEEgY29tbWVudCB0byBhZGQgb24gdGhlIHJlY29yZC5cbiAgLy8gICpcbiAgLy8gICogQGRlZmF1bHQgXCJNYW5hZ2VkIGJ5IFRlcnJhZm9ybVwiXG4gIC8vICAqL1xuICAvLyByZWFkb25seSBjb21tZW50Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdGlvbiBwcm9wZXJ0aWVzIGZvciBhIFJlY29yZFNldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWNvcmRTZXRQcm9wcyBleHRlbmRzIFJlY29yZFNldE9wdGlvbnMsIEF3c0NvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSByZWNvcmQgdHlwZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlY29yZFR5cGU6IFJlY29yZFR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQgZm9yIHRoaXMgcmVjb3JkLCBlaXRoZXIgYFJlY29yZFRhcmdldC5mcm9tVmFsdWVzKClgIG9yXG4gICAqIGBSZWNvcmRUYXJnZXQuZnJvbUFsaWFzKClgLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0OiBSZWNvcmRUYXJnZXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkU2V0T3V0cHV0cyB7XG4gIC8qKlxuICAgKiBUaGUgZG9tYWluIG5hbWUgb2YgdGhlIHJlY29yZFxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIEZRRE5bZnFuXSBidWlsdCB1c2luZyB0aGUgem9uZSBkb21haW4gYW5kIG5hbWVcbiAgICpcbiAgICogW2Zxbl06IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Z1bGx5X3F1YWxpZmllZF9kb21haW5fbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgZnFkbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgcmVjb3JkIHNldCBBdHRyaWJ1dGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVJlY29yZFNldCBleHRlbmRzIElBd3NDb25zdHJ1Y3Qge1xuICAvKiogU3Ryb25nbHkgdHlwZWQgb3V0cHV0cyAqL1xuICByZWFkb25seSByZWNvcmRTZXRPdXRwdXRzOiBSZWNvcmRTZXRPdXRwdXRzO1xuXG4gIC8qKlxuICAgKiBUaGUgZG9tYWluIG5hbWUgb2YgdGhlIHJlY29yZFxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIFtGUUROXVtmcWRuXSBidWlsdCB1c2luZyB0aGUgem9uZSBkb21haW4gYW5kIG5hbWVcbiAgICpcbiAgICogW2ZxZG5dOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GdWxseV9xdWFsaWZpZWRfZG9tYWluX25hbWVcbiAgICovXG4gIHJlYWRvbmx5IGZxZG46IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHJlY29yZCBzZXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZWNvcmRTZXQgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSVJlY29yZFNldCB7XG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogcm91dGU1M1JlY29yZC5Sb3V0ZTUzUmVjb3JkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vdXRwdXRzOiBSZWNvcmRTZXRPdXRwdXRzO1xuICBwdWJsaWMgZ2V0IHJlY29yZFNldE91dHB1dHMoKTogUmVjb3JkU2V0T3V0cHV0cyB7XG4gICAgcmV0dXJuIHRoaXMuX291dHB1dHM7XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlY29yZFNldE91dHB1dHM7XG4gIH1cbiAgcHVibGljIHJlYWRvbmx5IGRvbWFpbk5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGZxZG46IHN0cmluZztcbiAgLy8gcHJpdmF0ZSByZWFkb25seSBnZW9Mb2NhdGlvbj86IEdlb0xvY2F0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IHdlaWdodD86IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgbXVsdGlWYWx1ZUFuc3dlcj86IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJlY29yZFNldFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMud2VpZ2h0ICYmIChwcm9wcy53ZWlnaHQgPCAwIHx8IHByb3BzLndlaWdodCA+IDI1NSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYHdlaWdodCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjU1IGluY2x1c2l2ZSwgZ290OiAke3Byb3BzLndlaWdodH1gLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgcHJvcHMuc2V0SWRlbnRpZmllciAmJlxuICAgICAgKHByb3BzLnNldElkZW50aWZpZXIubGVuZ3RoIDwgMSB8fCBwcm9wcy5zZXRJZGVudGlmaWVyLmxlbmd0aCA+IDEyOClcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYHNldElkZW50aWZpZXIgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDEyOCBjaGFyYWN0ZXJzIGxvbmcsIGdvdDogJHtwcm9wcy5zZXRJZGVudGlmaWVyLmxlbmd0aH1gLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgcHJvcHMuc2V0SWRlbnRpZmllciAmJlxuICAgICAgcHJvcHMud2VpZ2h0ID09PSB1bmRlZmluZWQgJiZcbiAgICAgIC8vICFwcm9wcy5nZW9Mb2NhdGlvbiAmJlxuICAgICAgIXByb3BzLnJlZ2lvbiAmJlxuICAgICAgIXByb3BzLm11bHRpVmFsdWVBbnN3ZXJcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJzZXRJZGVudGlmaWVyIGNhbiBvbmx5IGJlIHNwZWNpZmllZCBmb3Igbm9uLXNpbXBsZSByb3V0aW5nIHBvbGljaWVzXCIsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAocHJvcHMubXVsdGlWYWx1ZUFuc3dlciAmJiBwcm9wcy50YXJnZXQuYWxpYXNUYXJnZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIm11bHRpVmFsdWVBbnN3ZXIgY2Fubm90IGJlIHNwZWNpZmllZCBmb3IgYWxpYXMgcmVjb3JkXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IG5vblNpbXBsZVJvdXRpbmdQb2xpY2llcyA9IFtcbiAgICAgIC8vIHByb3BzLmdlb0xvY2F0aW9uLFxuICAgICAgcHJvcHMucmVnaW9uLFxuICAgICAgcHJvcHMud2VpZ2h0LFxuICAgICAgcHJvcHMubXVsdGlWYWx1ZUFuc3dlcixcbiAgICBdLmZpbHRlcigodmFyaWFibGUpID0+IHZhcmlhYmxlICE9PSB1bmRlZmluZWQpLmxlbmd0aDtcbiAgICBpZiAobm9uU2ltcGxlUm91dGluZ1BvbGljaWVzID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIk9ubHkgb25lIG9mIHJlZ2lvbiwgd2VpZ2h0LCBtdWx0aVZhbHVlQW5zd2VyIG9yIGdlb0xvY2F0aW9uIGNhbiBiZSBkZWZpbmVkXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIHRoaXMuZ2VvTG9jYXRpb24gPSBwcm9wcy5nZW9Mb2NhdGlvbjtcbiAgICB0aGlzLndlaWdodCA9IHByb3BzLndlaWdodDtcbiAgICB0aGlzLnJlZ2lvbiA9IHByb3BzLnJlZ2lvbjtcbiAgICB0aGlzLm11bHRpVmFsdWVBbnN3ZXIgPSBwcm9wcy5tdWx0aVZhbHVlQW5zd2VyO1xuXG4gICAgY29uc3QgdHRsID0gcHJvcHMudGFyZ2V0LmFsaWFzVGFyZ2V0XG4gICAgICA/IHVuZGVmaW5lZFxuICAgICAgOiAoKHByb3BzLnR0bCAmJiBwcm9wcy50dGwudG9TZWNvbmRzKCkpID8/IDE4MDApO1xuXG4gICAgY29uc3QgcmVjb3JkTmFtZSA9IGRldGVybWluZUZ1bGx5UXVhbGlmaWVkRG9tYWluTmFtZShcbiAgICAgIHByb3BzLnpvbmUsXG4gICAgICBwcm9wcy5yZWNvcmROYW1lLFxuICAgICk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IHJvdXRlNTNSZWNvcmQuUm91dGU1M1JlY29yZCh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIC4uLnByb3BzLCAvLyBjb3B5IGFsbCBNZXRhQXJndW1lbnRzXG4gICAgICB6b25lSWQ6IHByb3BzLnpvbmUuem9uZUlkLFxuICAgICAgbmFtZTogcmVjb3JkTmFtZSxcbiAgICAgIHR5cGU6IHByb3BzLnJlY29yZFR5cGUsXG4gICAgICByZWNvcmRzOiBwcm9wcy50YXJnZXQudmFsdWVzLFxuICAgICAgYWxpYXM6XG4gICAgICAgIHByb3BzLnRhcmdldC5hbGlhc1RhcmdldCAmJlxuICAgICAgICBwcm9wcy50YXJnZXQuYWxpYXNUYXJnZXQuYmluZCh0aGlzLCBwcm9wcy56b25lKSxcbiAgICAgIHR0bCxcbiAgICAgIHNldElkZW50aWZpZXI6IHByb3BzLnNldElkZW50aWZpZXIgPz8gdGhpcy5jb25maWd1cmVTZXRJZGVudGlmaWVyKCksXG4gICAgICAvLyBnZW9Mb2NhdGlvbjogcHJvcHMuZ2VvTG9jYXRpb25cbiAgICAgIC8vICAgPyB7XG4gICAgICAvLyAgICAgICBjb250aW5lbnRDb2RlOiBwcm9wcy5nZW9Mb2NhdGlvbi5jb250aW5lbnRDb2RlLFxuICAgICAgLy8gICAgICAgY291bnRyeUNvZGU6IHByb3BzLmdlb0xvY2F0aW9uLmNvdW50cnlDb2RlLFxuICAgICAgLy8gICAgICAgc3ViZGl2aXNpb25Db2RlOiBwcm9wcy5nZW9Mb2NhdGlvbi5zdWJkaXZpc2lvbkNvZGUsXG4gICAgICAvLyAgICAgfVxuICAgICAgLy8gICA6IHVuZGVmaW5lZCxcbiAgICAgIG11bHRpdmFsdWVBbnN3ZXJSb3V0aW5nUG9saWN5OiBwcm9wcy5tdWx0aVZhbHVlQW5zd2VyLFxuICAgICAgd2VpZ2h0ZWRSb3V0aW5nUG9saWN5OiBwcm9wcy53ZWlnaHRcbiAgICAgICAgPyB7XG4gICAgICAgICAgICB3ZWlnaHQ6IHByb3BzLndlaWdodCxcbiAgICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgbGF0ZW5jeVJvdXRpbmdQb2xpY3k6IHByb3BzLnJlZ2lvblxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHJlZ2lvbjogcHJvcHMucmVnaW9uLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBhbGxvd092ZXJ3cml0ZTogcHJvcHMuYWxsb3dPdmVyd3JpdGUsXG4gICAgfSk7XG5cbiAgICB0aGlzLmZxZG4gPSB0aGlzLnJlc291cmNlLmZxZG47XG4gICAgdGhpcy5kb21haW5OYW1lID0gdGhpcy5yZXNvdXJjZS5uYW1lO1xuICAgIHRoaXMuX291dHB1dHMgPSB7XG4gICAgICBkb21haW5OYW1lOiB0aGlzLmRvbWFpbk5hbWUsXG4gICAgICBmcWRuOiB0aGlzLmZxZG4sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlU2V0SWRlbnRpZmllcigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIC8vIGlmICh0aGlzLmdlb0xvY2F0aW9uKSB7XG4gICAgLy8gICBsZXQgaWRlbnRpZmllciA9IFwiR0VPXCI7XG4gICAgLy8gICBpZiAodGhpcy5nZW9Mb2NhdGlvbi5jb250aW5lbnRDb2RlKSB7XG4gICAgLy8gICAgIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmNvbmNhdChcbiAgICAvLyAgICAgICBcIl9DT05USU5FTlRfXCIsXG4gICAgLy8gICAgICAgdGhpcy5nZW9Mb2NhdGlvbi5jb250aW5lbnRDb2RlLFxuICAgIC8vICAgICApO1xuICAgIC8vICAgfVxuICAgIC8vICAgaWYgKHRoaXMuZ2VvTG9jYXRpb24uY291bnRyeUNvZGUpIHtcbiAgICAvLyAgICAgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuY29uY2F0KFxuICAgIC8vICAgICAgIFwiX0NPVU5UUllfXCIsXG4gICAgLy8gICAgICAgdGhpcy5nZW9Mb2NhdGlvbi5jb3VudHJ5Q29kZSxcbiAgICAvLyAgICAgKTtcbiAgICAvLyAgIH1cbiAgICAvLyAgIGlmICh0aGlzLmdlb0xvY2F0aW9uLnN1YmRpdmlzaW9uQ29kZSkge1xuICAgIC8vICAgICBpZGVudGlmaWVyID0gaWRlbnRpZmllci5jb25jYXQoXG4gICAgLy8gICAgICAgXCJfU1VCRElWSVNJT05fXCIsXG4gICAgLy8gICAgICAgdGhpcy5nZW9Mb2NhdGlvbi5zdWJkaXZpc2lvbkNvZGUsXG4gICAgLy8gICAgICk7XG4gICAgLy8gICB9XG4gICAgLy8gICByZXR1cm4gaWRlbnRpZmllcjtcbiAgICAvLyB9XG5cbiAgICBpZiAodGhpcy53ZWlnaHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgaWRQcmVmaXggPSBgV0VJR0hUXyR7dGhpcy53ZWlnaHR9X0lEX2A7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVJZGVudGlmaWVyKGlkUHJlZml4KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZWdpb24pIHtcbiAgICAgIGNvbnN0IGlkUHJlZml4ID0gYFJFR0lPTl8ke3RoaXMucmVnaW9ufV9JRF9gO1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlSWRlbnRpZmllcihpZFByZWZpeCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubXVsdGlWYWx1ZUFuc3dlcikge1xuICAgICAgY29uc3QgaWRQcmVmaXggPSBcIk1WQV9JRF9cIjtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUlkZW50aWZpZXIoaWRQcmVmaXgpO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUlkZW50aWZpZXIocHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7IG1heExlbmd0aDogNjQsIHByZWZpeCB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSByZWNvcmQgdHlwZS5cbiAqL1xuZXhwb3J0IGVudW0gUmVjb3JkVHlwZSB7XG4gIC8qKlxuICAgKiByb3V0ZSB0cmFmZmljIHRvIGEgcmVzb3VyY2UsIHN1Y2ggYXMgYSB3ZWIgc2VydmVyLCB1c2luZyBhbiBJUHY0IGFkZHJlc3MgaW4gZG90dGVkIGRlY2ltYWxcbiAgICogbm90YXRpb25cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vUm91dGU1My9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvUmVzb3VyY2VSZWNvcmRUeXBlcy5odG1sI0FGb3JtYXRcbiAgICovXG4gIEEgPSBcIkFcIixcblxuICAvKipcbiAgICogcm91dGUgdHJhZmZpYyB0byBhIHJlc291cmNlLCBzdWNoIGFzIGEgd2ViIHNlcnZlciwgdXNpbmcgYW4gSVB2NiBhZGRyZXNzIGluIGNvbG9uLXNlcGFyYXRlZFxuICAgKiBoZXhhZGVjaW1hbCBmb3JtYXRcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vUm91dGU1My9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvUmVzb3VyY2VSZWNvcmRUeXBlcy5odG1sI0FBQUFGb3JtYXRcbiAgICovXG4gIEFBQUEgPSBcIkFBQUFcIixcblxuICAvKipcbiAgICogQSBDQUEgcmVjb3JkIHNwZWNpZmllcyB3aGljaCBjZXJ0aWZpY2F0ZSBhdXRob3JpdGllcyAoQ0FzKSBhcmUgYWxsb3dlZCB0byBpc3N1ZSBjZXJ0aWZpY2F0ZXNcbiAgICogZm9yIGEgZG9tYWluIG9yIHN1YmRvbWFpblxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9Sb3V0ZTUzL2xhdGVzdC9EZXZlbG9wZXJHdWlkZS9SZXNvdXJjZVJlY29yZFR5cGVzLmh0bWwjQ0FBRm9ybWF0XG4gICAqL1xuICBDQUEgPSBcIkNBQVwiLFxuXG4gIC8qKlxuICAgKiBBIENOQU1FIHJlY29yZCBtYXBzIEROUyBxdWVyaWVzIGZvciB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCByZWNvcmQsIHN1Y2ggYXMgYWNtZS5leGFtcGxlLmNvbSxcbiAgICogdG8gYW5vdGhlciBkb21haW4gKGV4YW1wbGUuY29tIG9yIGV4YW1wbGUubmV0KSBvciBzdWJkb21haW4gKGFjbWUuZXhhbXBsZS5jb20gb3IgemVuaXRoLmV4YW1wbGUub3JnKS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vUm91dGU1My9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvUmVzb3VyY2VSZWNvcmRUeXBlcy5odG1sI0NOQU1FRm9ybWF0XG4gICAqL1xuICBDTkFNRSA9IFwiQ05BTUVcIixcblxuICAvKipcbiAgICogQSBkZWxlZ2F0aW9uIHNpZ25lciAoRFMpIHJlY29yZCByZWZlcnMgYSB6b25lIGtleSBmb3IgYSBkZWxlZ2F0ZWQgc3ViZG9tYWluIHpvbmUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL1JvdXRlNTMvbGF0ZXN0L0RldmVsb3Blckd1aWRlL1Jlc291cmNlUmVjb3JkVHlwZXMuaHRtbCNEU0Zvcm1hdFxuICAgKi9cbiAgRFMgPSBcIkRTXCIsXG5cbiAgLyoqXG4gICAqIEFuIE1YIHJlY29yZCBzcGVjaWZpZXMgdGhlIG5hbWVzIG9mIHlvdXIgbWFpbCBzZXJ2ZXJzIGFuZCwgaWYgeW91IGhhdmUgdHdvIG9yIG1vcmUgbWFpbCBzZXJ2ZXJzLFxuICAgKiB0aGUgcHJpb3JpdHkgb3JkZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL1JvdXRlNTMvbGF0ZXN0L0RldmVsb3Blckd1aWRlL1Jlc291cmNlUmVjb3JkVHlwZXMuaHRtbCNNWEZvcm1hdFxuICAgKi9cbiAgTVggPSBcIk1YXCIsXG5cbiAgLyoqXG4gICAqIEEgTmFtZSBBdXRob3JpdHkgUG9pbnRlciAoTkFQVFIpIGlzIGEgdHlwZSBvZiByZWNvcmQgdGhhdCBpcyB1c2VkIGJ5IER5bmFtaWMgRGVsZWdhdGlvbiBEaXNjb3ZlcnlcbiAgICogU3lzdGVtIChERERTKSBhcHBsaWNhdGlvbnMgdG8gY29udmVydCBvbmUgdmFsdWUgdG8gYW5vdGhlciBvciB0byByZXBsYWNlIG9uZSB2YWx1ZSB3aXRoIGFub3RoZXIuXG4gICAqIEZvciBleGFtcGxlLCBvbmUgY29tbW9uIHVzZSBpcyB0byBjb252ZXJ0IHBob25lIG51bWJlcnMgaW50byBTSVAgVVJJcy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vUm91dGU1My9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvUmVzb3VyY2VSZWNvcmRUeXBlcy5odG1sI05BUFRSRm9ybWF0XG4gICAqL1xuICBOQVBUUiA9IFwiTkFQVFJcIixcblxuICAvKipcbiAgICogQW4gTlMgcmVjb3JkIGlkZW50aWZpZXMgdGhlIG5hbWUgc2VydmVycyBmb3IgdGhlIGhvc3RlZCB6b25lXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL1JvdXRlNTMvbGF0ZXN0L0RldmVsb3Blckd1aWRlL1Jlc291cmNlUmVjb3JkVHlwZXMuaHRtbCNOU0Zvcm1hdFxuICAgKi9cbiAgTlMgPSBcIk5TXCIsXG5cbiAgLyoqXG4gICAqIEEgUFRSIHJlY29yZCBtYXBzIGFuIElQIGFkZHJlc3MgdG8gdGhlIGNvcnJlc3BvbmRpbmcgZG9tYWluIG5hbWUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL1JvdXRlNTMvbGF0ZXN0L0RldmVsb3Blckd1aWRlL1Jlc291cmNlUmVjb3JkVHlwZXMuaHRtbCNQVFJGb3JtYXRcbiAgICovXG4gIFBUUiA9IFwiUFRSXCIsXG5cbiAgLyoqXG4gICAqIEEgc3RhcnQgb2YgYXV0aG9yaXR5IChTT0EpIHJlY29yZCBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCBhIGRvbWFpbiBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgQW1hem9uXG4gICAqIFJvdXRlIDUzIGhvc3RlZCB6b25lXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL1JvdXRlNTMvbGF0ZXN0L0RldmVsb3Blckd1aWRlL1Jlc291cmNlUmVjb3JkVHlwZXMuaHRtbCNTT0FGb3JtYXRcbiAgICovXG4gIFNPQSA9IFwiU09BXCIsXG5cbiAgLyoqXG4gICAqIFNQRiByZWNvcmRzIHdlcmUgZm9ybWVybHkgdXNlZCB0byB2ZXJpZnkgdGhlIGlkZW50aXR5IG9mIHRoZSBzZW5kZXIgb2YgZW1haWwgbWVzc2FnZXMuXG4gICAqIEluc3RlYWQgb2YgYW4gU1BGIHJlY29yZCwgd2UgcmVjb21tZW5kIHRoYXQgeW91IGNyZWF0ZSBhIFRYVCByZWNvcmQgdGhhdCBjb250YWlucyB0aGUgYXBwbGljYWJsZSB2YWx1ZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vUm91dGU1My9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvUmVzb3VyY2VSZWNvcmRUeXBlcy5odG1sI1NQRkZvcm1hdFxuICAgKi9cbiAgU1BGID0gXCJTUEZcIixcblxuICAvKipcbiAgICogQW4gU1JWIHJlY29yZCBWYWx1ZSBlbGVtZW50IGNvbnNpc3RzIG9mIGZvdXIgc3BhY2Utc2VwYXJhdGVkIHZhbHVlcy4gVGhlIGZpcnN0IHRocmVlIHZhbHVlcyBhcmVcbiAgICogZGVjaW1hbCBudW1iZXJzIHJlcHJlc2VudGluZyBwcmlvcml0eSwgd2VpZ2h0LCBhbmQgcG9ydC4gVGhlIGZvdXJ0aCB2YWx1ZSBpcyBhIGRvbWFpbiBuYW1lLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9Sb3V0ZTUzL2xhdGVzdC9EZXZlbG9wZXJHdWlkZS9SZXNvdXJjZVJlY29yZFR5cGVzLmh0bWwjU1JWRm9ybWF0XG4gICAqL1xuICBTUlYgPSBcIlNSVlwiLFxuXG4gIC8qKlxuICAgKiBBIFRYVCByZWNvcmQgY29udGFpbnMgb25lIG9yIG1vcmUgc3RyaW5ncyB0aGF0IGFyZSBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGF0aW9uIG1hcmtzIChcIikuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL1JvdXRlNTMvbGF0ZXN0L0RldmVsb3Blckd1aWRlL1Jlc291cmNlUmVjb3JkVHlwZXMuaHRtbCNUWFRGb3JtYXRcbiAgICovXG4gIFRYVCA9IFwiVFhUXCIsXG59XG5cbi8qKlxuICogVHlwZSB1bmlvbiBmb3IgYSByZWNvcmQgdGhhdCBhY2NlcHRzIG11bHRpcGxlIHR5cGVzIG9mIHRhcmdldC5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlY29yZFRhcmdldCB7XG4gIC8qKlxuICAgKiBVc2Ugc3RyaW5nIHZhbHVlcyBhcyB0YXJnZXQuXG4gICAqXG4gICAqIFRoZXNlIGNhbiBiZSBJUCBhZGRyZXNzZXMgb3IgZG9tYWluIG5hbWVzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVmFsdWVzKC4uLnZhbHVlczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gbmV3IFJlY29yZFRhcmdldCh2YWx1ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSBhbiBhbGlhcyBhcyB0YXJnZXQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21BbGlhcyhhbGlhc1RhcmdldDogSUFsaWFzUmVjb3JkVGFyZ2V0KSB7XG4gICAgcmV0dXJuIG5ldyBSZWNvcmRUYXJnZXQodW5kZWZpbmVkLCBhbGlhc1RhcmdldCk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlcyBjb3JyZXNwb25kIHdpdGggdGhlIGNob3NlbiByZWNvcmQgdHlwZSAoZS5nLiBmb3IgJ0EnIFR5cGUsIHNwZWNpZnkgb25lIG9yIG1vcmUgSVAgYWRkcmVzc2VzKVxuICAgKiBAcGFyYW0gYWxpYXNUYXJnZXQgYWxpYXMgZm9yIHRhcmdldHMgc3VjaCBhcyBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiB0byByb3V0ZSB0cmFmZmljIHRvXG4gICAqL1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHZhbHVlcz86IHN0cmluZ1tdLFxuICAgIHB1YmxpYyByZWFkb25seSBhbGlhc1RhcmdldD86IElBbGlhc1JlY29yZFRhcmdldCxcbiAgKSB7fVxufVxuXG4vKipcbiAqIENvbnN0cnVjdGlvbiBwcm9wZXJ0aWVzIGZvciBhIEFSZWNvcmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVJlY29yZFByb3BzIGV4dGVuZHMgUmVjb3JkU2V0T3B0aW9ucywgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIHRhcmdldC5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldDogUmVjb3JkVGFyZ2V0O1xufVxuXG4vKipcbiAqIEEgRE5TIEEgcmVjb3JkXG4gKlxuICogQHJlc291cmNlIGF3c19yb3V0ZTUzX3JlY29yZFxuICovXG5leHBvcnQgY2xhc3MgQVJlY29yZCBleHRlbmRzIFJlY29yZFNldCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBUmVjb3JkUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgcmVjb3JkVHlwZTogUmVjb3JkVHlwZS5BLFxuICAgICAgdGFyZ2V0OiBwcm9wcy50YXJnZXQsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3Rpb24gcHJvcGVydGllcyBmb3IgYSBBYWFhUmVjb3JkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFhYWFSZWNvcmRQcm9wcyBleHRlbmRzIFJlY29yZFNldE9wdGlvbnMsIEF3c0NvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ6IFJlY29yZFRhcmdldDtcbn1cblxuLyoqXG4gKiBBIEROUyBBQUFBIHJlY29yZFxuICpcbiAqIEByZXNvdXJjZSBhd3Nfcm91dGU1M19yZWNvcmRcbiAqL1xuZXhwb3J0IGNsYXNzIEFhYWFSZWNvcmQgZXh0ZW5kcyBSZWNvcmRTZXQge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQWFhYVJlY29yZFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHJlY29yZFR5cGU6IFJlY29yZFR5cGUuQUFBQSxcbiAgICAgIHRhcmdldDogcHJvcHMudGFyZ2V0LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQ29uc3RydWN0aW9uIHByb3BlcnRpZXMgZm9yIGEgQ25hbWVSZWNvcmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ25hbWVSZWNvcmRQcm9wcyBleHRlbmRzIFJlY29yZFNldE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGRvbWFpbiBuYW1lIG9mIHRoZSB0YXJnZXQgdGhhdCB0aGlzIHJlY29yZCBzaG91bGQgcG9pbnQgdG8uXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBETlMgQ05BTUUgcmVjb3JkXG4gKlxuICogQHJlc291cmNlIGF3c19yb3V0ZTUzX3JlY29yZFxuICovXG5leHBvcnQgY2xhc3MgQ25hbWVSZWNvcmQgZXh0ZW5kcyBSZWNvcmRTZXQge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ25hbWVSZWNvcmRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICByZWNvcmRUeXBlOiBSZWNvcmRUeXBlLkNOQU1FLFxuICAgICAgdGFyZ2V0OiBSZWNvcmRUYXJnZXQuZnJvbVZhbHVlcyhwcm9wcy5kb21haW5OYW1lKSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnN0cnVjdGlvbiBwcm9wZXJ0aWVzIGZvciBhIFR4dFJlY29yZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeHRSZWNvcmRQcm9wcyBleHRlbmRzIFJlY29yZFNldE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHRleHQgdmFsdWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBIEROUyBUWFQgcmVjb3JkXG4gKlxuICogQHJlc291cmNlIGF3c19yb3V0ZTUzX3JlY29yZFxuICovXG5leHBvcnQgY2xhc3MgVHh0UmVjb3JkIGV4dGVuZHMgUmVjb3JkU2V0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFR4dFJlY29yZFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHJlY29yZFR5cGU6IFJlY29yZFR5cGUuVFhULFxuICAgICAgdGFyZ2V0OiBSZWNvcmRUYXJnZXQuZnJvbVZhbHVlcyguLi5wcm9wcy52YWx1ZXMubWFwKCh2KSA9PiBmb3JtYXRUeHQodikpKSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEZvcm1hdHMgYSB0ZXh0IHZhbHVlIGZvciB1c2UgaW4gYSBUWFQgcmVjb3JkXG4gKlxuICogVXNlIGBKU09OLnN0cmluZ2lmeWAgdG8gY29ycmVjdGx5IGVzY2FwZSBhbmQgZW5jbG9zZSBpbiBkb3VibGUgcXVvdGVzIChcIlwiKS5cbiAqXG4gKiBETlMgVFhUIHJlY29yZHMgY2FuIGNvbnRhaW4gdXAgdG8gMjU1IGNoYXJhY3RlcnMgaW4gYSBzaW5nbGUgc3RyaW5nLiBUWFRcbiAqIHJlY29yZCBzdHJpbmdzIG92ZXIgMjU1IGNoYXJhY3RlcnMgbXVzdCBiZSBzcGxpdCBpbnRvIG11bHRpcGxlIHRleHQgc3RyaW5nc1xuICogd2l0aGluIHRoZSBzYW1lIHJlY29yZC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vcHJlbWl1bXN1cHBvcnQva25vd2xlZGdlLWNlbnRlci9yb3V0ZTUzLXJlc29sdmUtZGtpbS10ZXh0LXJlY29yZC1lcnJvci9cbiAqL1xuZnVuY3Rpb24gZm9ybWF0VHh0KHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIGxldCBpZHggPSAwO1xuICB3aGlsZSAoaWR4IDwgc3RyaW5nLmxlbmd0aCkge1xuICAgIHJlc3VsdC5wdXNoKHN0cmluZy5zbGljZShpZHgsIChpZHggKz0gMjU1KSkpOyAvLyBjaHVua3Mgb2YgMjU1IGNoYXJhY3RlcnMgbG9uZ1xuICB9XG4gIHJldHVybiByZXN1bHQubWFwKChyKSA9PiBKU09OLnN0cmluZ2lmeShyKSkuam9pbihcIlwiKTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIFNSViByZWNvcmQgdmFsdWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3J2UmVjb3JkVmFsdWUge1xuICAvKipcbiAgICogVGhlIHByaW9yaXR5LlxuICAgKi9cbiAgcmVhZG9ubHkgcHJpb3JpdHk6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHdlaWdodC5cbiAgICovXG4gIHJlYWRvbmx5IHdlaWdodDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9ydC5cbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHNlcnZlciBob3N0IG5hbWUuXG4gICAqL1xuICByZWFkb25seSBob3N0TmFtZTogc3RyaW5nO1xufVxuLyoqXG4gKiBDb25zdHJ1Y3Rpb24gcHJvcGVydGllcyBmb3IgYSBTcnZSZWNvcmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3J2UmVjb3JkUHJvcHMgZXh0ZW5kcyBSZWNvcmRTZXRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZXMuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZXM6IFNydlJlY29yZFZhbHVlW107XG59XG5cbi8qKlxuICogQSBETlMgU1JWIHJlY29yZFxuICpcbiAqIEByZXNvdXJjZSBhd3Nfcm91dGU1M19yZWNvcmRcbiAqL1xuZXhwb3J0IGNsYXNzIFNydlJlY29yZCBleHRlbmRzIFJlY29yZFNldCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTcnZSZWNvcmRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICByZWNvcmRUeXBlOiBSZWNvcmRUeXBlLlNSVixcbiAgICAgIHRhcmdldDogUmVjb3JkVGFyZ2V0LmZyb21WYWx1ZXMoXG4gICAgICAgIC4uLnByb3BzLnZhbHVlcy5tYXAoXG4gICAgICAgICAgKHYpID0+IGAke3YucHJpb3JpdHl9ICR7di53ZWlnaHR9ICR7di5wb3J0fSAke3YuaG9zdE5hbWV9YCxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgQ0FBIHRhZy5cbiAqL1xuZXhwb3J0IGVudW0gQ2FhVGFnIHtcbiAgLyoqXG4gICAqIEV4cGxpY2l0eSBhdXRob3JpemVzIGEgc2luZ2xlIGNlcnRpZmljYXRlIGF1dGhvcml0eSB0byBpc3N1ZSBhXG4gICAqIGNlcnRpZmljYXRlIChhbnkgdHlwZSkgZm9yIHRoZSBob3N0bmFtZS5cbiAgICovXG4gIElTU1VFID0gXCJpc3N1ZVwiLFxuXG4gIC8qKlxuICAgKiBFeHBsaWNpdHkgYXV0aG9yaXplcyBhIHNpbmdsZSBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkgdG8gaXNzdWUgYVxuICAgKiB3aWxkY2FyZCBjZXJ0aWZpY2F0ZSAoYW5kIG9ubHkgd2lsZGNhcmQpIGZvciB0aGUgaG9zdG5hbWUuXG4gICAqL1xuICBJU1NVRVdJTEQgPSBcImlzc3Vld2lsZFwiLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBVUkwgdG8gd2hpY2ggYSBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkgbWF5IHJlcG9ydCBwb2xpY3lcbiAgICogdmlvbGF0aW9ucy5cbiAgICovXG4gIElPREVGID0gXCJpb2RlZlwiLFxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGEgQ0FBIHJlY29yZCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYWFSZWNvcmRWYWx1ZSB7XG4gIC8qKlxuICAgKiBUaGUgZmxhZy5cbiAgICovXG4gIHJlYWRvbmx5IGZsYWc6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHRhZy5cbiAgICovXG4gIHJlYWRvbmx5IHRhZzogQ2FhVGFnO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWcuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdGlvbiBwcm9wZXJ0aWVzIGZvciBhIENhYVJlY29yZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYWFSZWNvcmRQcm9wcyBleHRlbmRzIFJlY29yZFNldE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHZhbHVlcy5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlczogQ2FhUmVjb3JkVmFsdWVbXTtcbn1cblxuLyoqXG4gKiBBIEROUyBDQUEgcmVjb3JkXG4gKlxuICogQHJlc291cmNlIGF3c19yb3V0ZTUzX3JlY29yZFxuICovXG5leHBvcnQgY2xhc3MgQ2FhUmVjb3JkIGV4dGVuZHMgUmVjb3JkU2V0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENhYVJlY29yZFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHJlY29yZFR5cGU6IFJlY29yZFR5cGUuQ0FBLFxuICAgICAgdGFyZ2V0OiBSZWNvcmRUYXJnZXQuZnJvbVZhbHVlcyhcbiAgICAgICAgLi4ucHJvcHMudmFsdWVzLm1hcCgodikgPT4gYCR7di5mbGFnfSAke3YudGFnfSBcIiR7di52YWx1ZX1cImApLFxuICAgICAgKSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnN0cnVjdGlvbiBwcm9wZXJ0aWVzIGZvciBhIENhYUFtYXpvblJlY29yZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYWFBbWF6b25SZWNvcmRQcm9wcyBleHRlbmRzIFJlY29yZFNldE9wdGlvbnMge31cblxuLyoqXG4gKiBBIEROUyBBbWF6b24gQ0FBIHJlY29yZC5cbiAqXG4gKiBBIENBQSByZWNvcmQgdG8gcmVzdHJpY3QgY2VydGlmaWNhdGUgYXV0aG9yaXRpZXMgYWxsb3dlZFxuICogdG8gaXNzdWUgY2VydGlmaWNhdGVzIGZvciBhIGRvbWFpbiB0byBBbWF6b24gb25seS5cbiAqXG4gKiBAcmVzb3VyY2UgYXdzX3JvdXRlNTNfcmVjb3JkXG4gKi9cbmV4cG9ydCBjbGFzcyBDYWFBbWF6b25SZWNvcmQgZXh0ZW5kcyBDYWFSZWNvcmQge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ2FhQW1hem9uUmVjb3JkUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgdmFsdWVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmbGFnOiAwLFxuICAgICAgICAgIHRhZzogQ2FhVGFnLklTU1VFLFxuICAgICAgICAgIHZhbHVlOiBcImFtYXpvbi5jb21cIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIE1YIHJlY29yZCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNeFJlY29yZFZhbHVlIHtcbiAgLyoqXG4gICAqIFRoZSBwcmlvcml0eS5cbiAgICovXG4gIHJlYWRvbmx5IHByaW9yaXR5OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtYWlsIHNlcnZlciBob3N0IG5hbWUuXG4gICAqL1xuICByZWFkb25seSBob3N0TmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdGlvbiBwcm9wZXJ0aWVzIGZvciBhIE14UmVjb3JkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE14UmVjb3JkUHJvcHMgZXh0ZW5kcyBSZWNvcmRTZXRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZXMuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZXM6IE14UmVjb3JkVmFsdWVbXTtcbn1cblxuLyoqXG4gKiBBIEROUyBNWCByZWNvcmRcbiAqXG4gKiBAcmVzb3VyY2UgYXdzX3JvdXRlNTNfcmVjb3JkXG4gKi9cbmV4cG9ydCBjbGFzcyBNeFJlY29yZCBleHRlbmRzIFJlY29yZFNldCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBNeFJlY29yZFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHJlY29yZFR5cGU6IFJlY29yZFR5cGUuTVgsXG4gICAgICB0YXJnZXQ6IFJlY29yZFRhcmdldC5mcm9tVmFsdWVzKFxuICAgICAgICAuLi5wcm9wcy52YWx1ZXMubWFwKCh2KSA9PiBgJHt2LnByaW9yaXR5fSAke3YuaG9zdE5hbWV9YCksXG4gICAgICApLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQ29uc3RydWN0aW9uIHByb3BlcnRpZXMgZm9yIGEgTlNSZWNvcmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTnNSZWNvcmRQcm9wcyBleHRlbmRzIFJlY29yZFNldE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIE5TIHZhbHVlcy5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlczogc3RyaW5nW107XG59XG5cbi8qKlxuICogQSBETlMgTlMgcmVjb3JkXG4gKlxuICogQHJlc291cmNlIGF3c19yb3V0ZTUzX3JlY29yZFxuICovXG5leHBvcnQgY2xhc3MgTnNSZWNvcmQgZXh0ZW5kcyBSZWNvcmRTZXQge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTnNSZWNvcmRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICByZWNvcmRUeXBlOiBSZWNvcmRUeXBlLk5TLFxuICAgICAgdGFyZ2V0OiBSZWNvcmRUYXJnZXQuZnJvbVZhbHVlcyguLi5wcm9wcy52YWx1ZXMpLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQ29uc3RydWN0aW9uIHByb3BlcnRpZXMgZm9yIGEgRFNSZWNvcmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRHNSZWNvcmRQcm9wcyBleHRlbmRzIFJlY29yZFNldE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIERTIHZhbHVlcy5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlczogc3RyaW5nW107XG59XG5cbi8qKlxuICogQSBETlMgRFMgcmVjb3JkXG4gKlxuICogQHJlc291cmNlIGF3c19yb3V0ZTUzX3JlY29yZFxuICovXG5leHBvcnQgY2xhc3MgRHNSZWNvcmQgZXh0ZW5kcyBSZWNvcmRTZXQge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRHNSZWNvcmRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICByZWNvcmRUeXBlOiBSZWNvcmRUeXBlLkRTLFxuICAgICAgdGFyZ2V0OiBSZWNvcmRUYXJnZXQuZnJvbVZhbHVlcyguLi5wcm9wcy52YWx1ZXMpLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQ29uc3RydWN0aW9uIHByb3BlcnRpZXMgZm9yIGEgWm9uZURlbGVnYXRpb25SZWNvcmRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBab25lRGVsZWdhdGlvblJlY29yZFByb3BzIGV4dGVuZHMgUmVjb3JkU2V0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBzZXJ2ZXJzIHRvIHJlcG9ydCBpbiB0aGUgZGVsZWdhdGlvbiByZWNvcmRzLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZVNlcnZlcnM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEEgcmVjb3JkIHRvIGRlbGVnYXRlIGZ1cnRoZXIgbG9va3VwcyB0byBhIGRpZmZlcmVudCBzZXQgb2YgbmFtZSBzZXJ2ZXJzLlxuICovXG5leHBvcnQgY2xhc3MgWm9uZURlbGVnYXRpb25SZWNvcmQgZXh0ZW5kcyBSZWNvcmRTZXQge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogWm9uZURlbGVnYXRpb25SZWNvcmRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICByZWNvcmRUeXBlOiBSZWNvcmRUeXBlLk5TLFxuICAgICAgdGFyZ2V0OiBSZWNvcmRUYXJnZXQuZnJvbVZhbHVlcyhcbiAgICAgICAgLi4uKFRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy5uYW1lU2VydmVycylcbiAgICAgICAgICA/IHByb3BzLm5hbWVTZXJ2ZXJzIC8vIENhbid0IG1hcCBhIHN0cmluZy1hcnJheSB0b2tlbiFcbiAgICAgICAgICA6IHByb3BzLm5hbWVTZXJ2ZXJzLm1hcCgobnMpID0+XG4gICAgICAgICAgICAgIFRva2VuLmlzVW5yZXNvbHZlZChucykgfHwgbnMuZW5kc1dpdGgoXCIuXCIpID8gbnMgOiBgJHtuc30uYCxcbiAgICAgICAgICAgICkpLFxuICAgICAgKSxcbiAgICAgIHR0bDogcHJvcHMudHRsIHx8IER1cmF0aW9uLmRheXMoMiksXG4gICAgfSk7XG4gIH1cbn1cblxuLy8gcmVmIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE1Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1yb3V0ZTUzL2xpYi91dGlsLnRzXG5cbi8qKlxuICogUm91dGU1MyByZXF1aXJlcyB0aGUgcmVjb3JkIG5hbWVzIGFyZSBzcGVjaWZpZWQgYXMgZnVsbHkgcXVhbGlmaWVkIG5hbWVzLCBidXQgdGhpc1xuICogZm9yY2VzIGxvdHMgb2YgcmVkdW5kYW50IHdvcmsgb24gdGhlIHVzZXIgKHJlcGVhdGluZyB0aGUgem9uZSBuYW1lIG92ZXIgYW5kIG92ZXIpLlxuICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhlIHVzZXIgdG8gYmUgbGF6aWVyIGFuZCBvZmZlcnMgYSBuaWNlciBleHBlcmllbmNlLCBieVxuICogcXVhbGlmeWluZyByZWxhdGl2ZSBuYW1lcyBhcHByb3ByaWF0ZWx5OlxuICpcbiAqIEBwYXJhbSBwcm92aWRlZE5hbWUgdGhlIHVzZXItc3BlY2lmaWVkIG5hbWUgb2YgdGhlIHJlY29yZC5cbiAqIEBwYXJhbSBkbnNab25lICAgICAgdGhlIHpvbmUgdGhlIHJlY29yZCB3aWxsIGJlIGNyZWF0ZWQgaW4uXG4gKlxuICogQHJldHVybnMgPHVsPlxuICogICAgICAgIDxsaT5JZiArcHJvdmlkZWROYW1lKyBlbmRzIHdpdGggYSArLissIHVzZSBpdCBhcy1pczwvbGk+XG4gKiAgICAgICAgPGxpPklmICtkbnNab25lLnpvbmVOYW1lKyBpcyBhIHRva2VuLCB1c2UgK3Byb3ZpZGVkTmFtZSsgYXMtaXM8L2xpPlxuICogICAgICAgIDxsaT5JZiArcHJvdmlkZWROYW1lKyBlbmRzIHdpdGggb3IgZXF1YWxzICt6b25lTmFtZSssIGFwcGVuZCBhIHRyYWlsaW5nICsuKzwvbGk+XG4gKiAgICAgICAgPGxpPk90aGVyd2lzZSwgYXBwZW5kICsuKywgK3pvbmVOYW1lKyBhbmQgYSB0cmFpbGluZyArLis8L2xpPlxuICogICAgICA8L3VsPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGV0ZXJtaW5lRnVsbHlRdWFsaWZpZWREb21haW5OYW1lKFxuICBkbnNab25lOiBJRG5zWm9uZSxcbiAgcmVjb3JkTmFtZT86IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGlmICghcmVjb3JkTmFtZSkge1xuICAgIHJldHVybiBgJHtkbnNab25lLnpvbmVOYW1lfWA7XG4gIH1cblxuICBpZiAocmVjb3JkTmFtZS5lbmRzV2l0aChcIi5cIikgfHwgVG9rZW4uaXNVbnJlc29sdmVkKGRuc1pvbmUuem9uZU5hbWUpKSB7XG4gICAgcmV0dXJuIHJlY29yZE5hbWU7XG4gIH1cblxuICBjb25zdCB6b25lTmFtZSA9IGRuc1pvbmUuem9uZU5hbWUuZW5kc1dpdGgoXCIuXCIpXG4gICAgPyBkbnNab25lLnpvbmVOYW1lLnN1YnN0cmluZygwLCBkbnNab25lLnpvbmVOYW1lLmxlbmd0aCAtIDEpXG4gICAgOiBkbnNab25lLnpvbmVOYW1lO1xuXG4gIGNvbnN0IHN1ZmZpeCA9IGAuJHt6b25lTmFtZX1gO1xuICBpZiAocmVjb3JkTmFtZS5lbmRzV2l0aChzdWZmaXgpIHx8IHJlY29yZE5hbWUgPT09IHpvbmVOYW1lKSB7XG4gICAgcmV0dXJuIGAke3JlY29yZE5hbWV9LmA7XG4gIH1cblxuICByZXR1cm4gYCR7cmVjb3JkTmFtZX0ke3N1ZmZpeH0uYDtcbn1cbiJdfQ==
|
|
532
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLXJlY29yZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MvZWRnZS9kbnMtcmVjb3JkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFxMkJBLDhFQXNCQzs7QUEzM0JELHNEQUFvRDtBQUNwRCxpQ0FBOEI7QUFJOUIsMkJBQXlFO0FBQ3pFLDZCQUFpQztBQXdKakM7O0dBRUc7QUFDSCxNQUFhLFNBQVUsU0FBUSxvQkFBZ0I7SUFHN0MsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQVFELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUI7UUFDN0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdELE1BQU0sSUFBSSxLQUFLLENBQ2Isb0RBQW9ELEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FDbkUsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUNFLEtBQUssQ0FBQyxhQUFhO1lBQ25CLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxFQUNwRSxDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixpRUFBaUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FDOUYsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUNFLEtBQUssQ0FBQyxhQUFhO1lBQ25CLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUztZQUMxQix3QkFB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LENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBRXJCLE1BQU0sTUFBTSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7SUFDOUIsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMzRCxPQUFPLEdBQUcsVUFBVSxHQUFHLENBQUM7SUFDMUIsQ0FBQztJQUVELE9BQU8sR0FBRyxVQUFVLEdBQUcsTUFBTSxHQUFHLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJvdXRlNTNSZWNvcmQgfSBmcm9tIFwiQGNka3RuL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiY2RrdG5cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG4vLyBpbXBvcnQgeyBHZW9Mb2NhdGlvbiB9IGZyb20gXCIuL2dlby1sb2NhdGlvblwiO1xuaW1wb3J0IHsgSURuc1pvbmUsIElBbGlhc1JlY29yZFRhcmdldCB9IGZyb20gXCIuXCI7XG5pbXBvcnQgeyBJQXdzQ29uc3RydWN0LCBBd3NDb25zdHJ1Y3RQcm9wcywgQXdzQ29uc3RydWN0QmFzZSB9IGZyb20gXCIuLi9cIjtcbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcIi4uLy4uXCI7XG5cbi8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTU2LjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLXJvdXRlNTMvbGliL3JlY29yZC1zZXQudHNcblxuLyoqXG4gKiBPcHRpb25zIGZvciBhIFJlY29yZFNldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWNvcmRTZXRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBob3N0ZWQgem9uZSBpbiB3aGljaCB0byBkZWZpbmUgdGhlIG5ldyByZWNvcmQuXG4gICAqL1xuICByZWFkb25seSB6b25lOiBJRG5zWm9uZTtcblxuICAvKipcbiAgICogVGhlIHN1YmRvbWFpbiBuYW1lIGZvciB0aGlzIHJlY29yZC4gVGhpcyBzaG91bGQgYmUgcmVsYXRpdmUgdG8gdGhlIHpvbmUgcm9vdCBuYW1lLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gY3JlYXRlIGEgcmVjb3JkIGZvciBhY21lLmV4YW1wbGUuY29tLCBzcGVjaWZ5XG4gICAqIFwiYWNtZVwiLlxuICAgKlxuICAgKiBZb3UgY2FuIGFsc28gc3BlY2lmeSB0aGUgZnVsbHkgcXVhbGlmaWVkIGRvbWFpbiBuYW1lIHdoaWNoIHRlcm1pbmF0ZXMgd2l0aCBhXG4gICAqIFwiLlwiLiBGb3IgZXhhbXBsZSwgXCJhY21lLmV4YW1wbGUuY29tLlwiLlxuICAgKlxuICAgKiBAZGVmYXVsdCB6b25lIHJvb3RcbiAgICovXG4gIHJlYWRvbmx5IHJlY29yZE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSByZWNvcmQgY2FjaGUgdGltZSB0byBsaXZlIChUVEwpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBEdXJhdGlvbi5taW51dGVzKDMwKVxuICAgKi9cbiAgcmVhZG9ubHkgdHRsPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGVsZXRlIHRoZSBzYW1lIHJlY29yZCBzZXQgaW4gdGhlIGhvc3RlZCB6b25lIGlmIGl0IGFscmVhZHkgZXhpc3RzIChkYW5nZXJvdXMhKVxuICAgKlxuICAgKiBUaGlzIGFsbG93cyB0byBkZXBsb3kgYSBuZXcgcmVjb3JkIHNldCB3aGlsZSBtaW5pbWl6aW5nIHRoZSBkb3dudGltZSBiZWNhdXNlIHRoZVxuICAgKiBuZXcgcmVjb3JkIHNldCB3aWxsIGJlIGNyZWF0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGV4aXN0aW5nIG9uZSBpcyBkZWxldGVkLiBJdFxuICAgKiBhbHNvIGF2b2lkcyBcIm1hbnVhbFwiIGFjdGlvbnMgdG8gZGVsZXRlIGV4aXN0aW5nIHJlY29yZCBzZXRzLlxuICAgKlxuICAgKiA+ICoqTi5CLjoqKiB0aGlzIGZlYXR1cmUgaXMgZGFuZ2Vyb3VzLCB1c2Ugd2l0aCBjYXV0aW9uIVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dPdmVyd3JpdGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbW9uZyByZXNvdXJjZSByZWNvcmQgc2V0cyB0aGF0IGhhdmUgdGhlIHNhbWUgY29tYmluYXRpb24gb2YgRE5TIG5hbWUgYW5kIHR5cGUsXG4gICAqIGEgdmFsdWUgdGhhdCBkZXRlcm1pbmVzIHRoZSBwcm9wb3J0aW9uIG9mIEROUyBxdWVyaWVzIHRoYXQgQW1hem9uIFJvdXRlIDUzIHJlc3BvbmRzIHRvIHVzaW5nIHRoZSBjdXJyZW50IHJlc291cmNlIHJlY29yZCBzZXQuXG4gICAqXG4gICAqIFJvdXRlIDUzIGNhbGN1bGF0ZXMgdGhlIHN1bSBvZiB0aGUgd2VpZ2h0cyBmb3IgdGhlIHJlc291cmNlIHJlY29yZCBzZXRzIHRoYXQgaGF2ZSB0aGUgc2FtZSBjb21iaW5hdGlvbiBvZiBETlMgbmFtZSBhbmQgdHlwZS5cbiAgICogUm91dGUgNTMgdGhlbiByZXNwb25kcyB0byBxdWVyaWVzIGJhc2VkIG9uIHRoZSByYXRpbyBvZiBhIHJlc291cmNlJ3Mgd2VpZ2h0IHRvIHRoZSB0b3RhbC5cbiAgICpcbiAgICogVGhpcyB2YWx1ZSBjYW4gYmUgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAyNTUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL1JvdXRlNTMvbGF0ZXN0L0RldmVsb3Blckd1aWRlL3JvdXRpbmctcG9saWN5LXdlaWdodGVkLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBEbyBub3Qgc2V0IHdlaWdodGVkIHJvdXRpbmdcbiAgICovXG4gIHJlYWRvbmx5IHdlaWdodD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIEFtYXpvbiBFQzIgUmVnaW9uIHdoZXJlIHlvdSBjcmVhdGVkIHRoZSByZXNvdXJjZSB0aGF0IHRoaXMgcmVzb3VyY2UgcmVjb3JkIHNldCByZWZlcnMgdG8uXG4gICAqIFRoZSByZXNvdXJjZSB0eXBpY2FsbHkgaXMgYW4gQVdTIHJlc291cmNlLCBzdWNoIGFzIGFuIEVDMiBpbnN0YW5jZSBvciBhbiBFTEIgbG9hZCBiYWxhbmNlcixcbiAgICogYW5kIGlzIHJlZmVycmVkIHRvIGJ5IGFuIElQIGFkZHJlc3Mgb3IgYSBETlMgZG9tYWluIG5hbWUsIGRlcGVuZGluZyBvbiB0aGUgcmVjb3JkIHR5cGUuXG4gICAqXG4gICAqIFdoZW4gQW1hem9uIFJvdXRlIDUzIHJlY2VpdmVzIGEgRE5TIHF1ZXJ5IGZvciBhIGRvbWFpbiBuYW1lIGFuZCB0eXBlIGZvciB3aGljaCB5b3UgaGF2ZSBjcmVhdGVkIGxhdGVuY3kgcmVzb3VyY2UgcmVjb3JkIHNldHMsXG4gICAqIFJvdXRlIDUzIHNlbGVjdHMgdGhlIGxhdGVuY3kgcmVzb3VyY2UgcmVjb3JkIHNldCB0aGF0IGhhcyB0aGUgbG93ZXN0IGxhdGVuY3kgYmV0d2VlbiB0aGUgZW5kIHVzZXIgYW5kIHRoZSBhc3NvY2lhdGVkIEFtYXpvbiBFQzIgUmVnaW9uLlxuICAgKiBSb3V0ZSA1MyB0aGVuIHJldHVybnMgdGhlIHZhbHVlIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZWxlY3RlZCByZXNvdXJjZSByZWNvcmQgc2V0LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1yb3V0ZTUzLXJlY29yZHNldC5odG1sI2Nmbi1yb3V0ZTUzLXJlY29yZHNldC1yZWdpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEbyBub3Qgc2V0IGxhdGVuY3kgYmFzZWQgcm91dGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJldHVybiBtdWx0aXBsZSB2YWx1ZXMsIHN1Y2ggYXMgSVAgYWRkcmVzc2VzIGZvciB5b3VyIHdlYiBzZXJ2ZXJzLCBpbiByZXNwb25zZSB0byBETlMgcXVlcmllcy5cbiAgICogU2V0IHRvIHRydWUgdG8gaW5kaWNhdGUgYSBtdWx0aXZhbHVlIGFuc3dlciByb3V0aW5nIHBvbGljeS4gQ29uZmxpY3RzIHdpdGggYW55IG90aGVyIHJvdXRpbmcgcG9saWN5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbXVsdGlWYWx1ZUFuc3dlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBkaWZmZXJlbnQgcmVjb3JkcyB3aXRoIHRoZSBzYW1lIGNvbWJpbmF0aW9uIG9mIEROUyBuYW1lIGFuZCB0eXBlLlxuICAgKiBJdCBjYW4gb25seSBiZSBzZXQgd2hlbiBlaXRoZXIgd2VpZ2h0IG9yIGdlb0xvY2F0aW9uIGlzIGRlZmluZWQuXG4gICAqXG4gICAqIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAxMjggY2hhcmFjdGVycyBpbiBsZW5ndGguXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQXV0byBnZW5lcmF0ZWQgc3RyaW5nXG4gICAqL1xuICByZWFkb25seSBzZXRJZGVudGlmaWVyPzogc3RyaW5nO1xuXG4gIC8vIFI1MyByZWNvcmQgY29tbWVudCBpcyBoYXJkY29kZWQgZm9yIHRlcnJhZm9ybS1wcm92aWRlci1hd3NcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tcHJvdmlkZXItYXdzL2Jsb2IvdjUuNjguMC9pbnRlcm5hbC9zZXJ2aWNlL3JvdXRlNTMvcmVjb3JkLmdvI0wzNjNcbiAgLy8gLyoqXG4gIC8vICAqIEEgY29tbWVudCB0byBhZGQgb24gdGhlIHJlY29yZC5cbiAgLy8gICpcbiAgLy8gICogQGRlZmF1bHQgXCJNYW5hZ2VkIGJ5IFRlcnJhZm9ybVwiXG4gIC8vICAqL1xuICAvLyByZWFkb25seSBjb21tZW50Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdGlvbiBwcm9wZXJ0aWVzIGZvciBhIFJlY29yZFNldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWNvcmRTZXRQcm9wcyBleHRlbmRzIFJlY29yZFNldE9wdGlvbnMsIEF3c0NvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSByZWNvcmQgdHlwZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlY29yZFR5cGU6IFJlY29yZFR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQgZm9yIHRoaXMgcmVjb3JkLCBlaXRoZXIgYFJlY29yZFRhcmdldC5mcm9tVmFsdWVzKClgIG9yXG4gICAqIGBSZWNvcmRUYXJnZXQuZnJvbUFsaWFzKClgLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0OiBSZWNvcmRUYXJnZXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkU2V0T3V0cHV0cyB7XG4gIC8qKlxuICAgKiBUaGUgZG9tYWluIG5hbWUgb2YgdGhlIHJlY29yZFxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIEZRRE5bZnFuXSBidWlsdCB1c2luZyB0aGUgem9uZSBkb21haW4gYW5kIG5hbWVcbiAgICpcbiAgICogW2Zxbl06IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Z1bGx5X3F1YWxpZmllZF9kb21haW5fbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgZnFkbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgcmVjb3JkIHNldCBBdHRyaWJ1dGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVJlY29yZFNldCBleHRlbmRzIElBd3NDb25zdHJ1Y3Qge1xuICAvKiogU3Ryb25nbHkgdHlwZWQgb3V0cHV0cyAqL1xuICByZWFkb25seSByZWNvcmRTZXRPdXRwdXRzOiBSZWNvcmRTZXRPdXRwdXRzO1xuXG4gIC8qKlxuICAgKiBUaGUgZG9tYWluIG5hbWUgb2YgdGhlIHJlY29yZFxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIFtGUUROXVtmcWRuXSBidWlsdCB1c2luZyB0aGUgem9uZSBkb21haW4gYW5kIG5hbWVcbiAgICpcbiAgICogW2ZxZG5dOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GdWxseV9xdWFsaWZpZWRfZG9tYWluX25hbWVcbiAgICovXG4gIHJlYWRvbmx5IGZxZG46IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHJlY29yZCBzZXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZWNvcmRTZXQgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSVJlY29yZFNldCB7XG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogcm91dGU1M1JlY29yZC5Sb3V0ZTUzUmVjb3JkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vdXRwdXRzOiBSZWNvcmRTZXRPdXRwdXRzO1xuICBwdWJsaWMgZ2V0IHJlY29yZFNldE91dHB1dHMoKTogUmVjb3JkU2V0T3V0cHV0cyB7XG4gICAgcmV0dXJuIHRoaXMuX291dHB1dHM7XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlY29yZFNldE91dHB1dHM7XG4gIH1cbiAgcHVibGljIHJlYWRvbmx5IGRvbWFpbk5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGZxZG46IHN0cmluZztcbiAgLy8gcHJpdmF0ZSByZWFkb25seSBnZW9Mb2NhdGlvbj86IEdlb0xvY2F0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IHdlaWdodD86IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgbXVsdGlWYWx1ZUFuc3dlcj86IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJlY29yZFNldFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMud2VpZ2h0ICYmIChwcm9wcy53ZWlnaHQgPCAwIHx8IHByb3BzLndlaWdodCA+IDI1NSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYHdlaWdodCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjU1IGluY2x1c2l2ZSwgZ290OiAke3Byb3BzLndlaWdodH1gLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgcHJvcHMuc2V0SWRlbnRpZmllciAmJlxuICAgICAgKHByb3BzLnNldElkZW50aWZpZXIubGVuZ3RoIDwgMSB8fCBwcm9wcy5zZXRJZGVudGlmaWVyLmxlbmd0aCA+IDEyOClcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYHNldElkZW50aWZpZXIgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDEyOCBjaGFyYWN0ZXJzIGxvbmcsIGdvdDogJHtwcm9wcy5zZXRJZGVudGlmaWVyLmxlbmd0aH1gLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgcHJvcHMuc2V0SWRlbnRpZmllciAmJlxuICAgICAgcHJvcHMud2VpZ2h0ID09PSB1bmRlZmluZWQgJiZcbiAgICAgIC8vICFwcm9wcy5nZW9Mb2NhdGlvbiAmJlxuICAgICAgIXByb3BzLnJlZ2lvbiAmJlxuICAgICAgIXByb3BzLm11bHRpVmFsdWVBbnN3ZXJcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJzZXRJZGVudGlmaWVyIGNhbiBvbmx5IGJlIHNwZWNpZmllZCBmb3Igbm9uLXNpbXBsZSByb3V0aW5nIHBvbGljaWVzXCIsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAocHJvcHMubXVsdGlWYWx1ZUFuc3dlciAmJiBwcm9wcy50YXJnZXQuYWxpYXNUYXJnZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIm11bHRpVmFsdWVBbnN3ZXIgY2Fubm90IGJlIHNwZWNpZmllZCBmb3IgYWxpYXMgcmVjb3JkXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IG5vblNpbXBsZVJvdXRpbmdQb2xpY2llcyA9IFtcbiAgICAgIC8vIHByb3BzLmdlb0xvY2F0aW9uLFxuICAgICAgcHJvcHMucmVnaW9uLFxuICAgICAgcHJvcHMud2VpZ2h0LFxuICAgICAgcHJvcHMubXVsdGlWYWx1ZUFuc3dlcixcbiAgICBdLmZpbHRlcigodmFyaWFibGUpID0+IHZhcmlhYmxlICE9PSB1bmRlZmluZWQpLmxlbmd0aDtcbiAgICBpZiAobm9uU2ltcGxlUm91dGluZ1BvbGljaWVzID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIk9ubHkgb25lIG9mIHJlZ2lvbiwgd2VpZ2h0LCBtdWx0aVZhbHVlQW5zd2VyIG9yIGdlb0xvY2F0aW9uIGNhbiBiZSBkZWZpbmVkXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIHRoaXMuZ2VvTG9jYXRpb24gPSBwcm9wcy5nZW9Mb2NhdGlvbjtcbiAgICB0aGlzLndlaWdodCA9IHByb3BzLndlaWdodDtcbiAgICB0aGlzLnJlZ2lvbiA9IHByb3BzLnJlZ2lvbjtcbiAgICB0aGlzLm11bHRpVmFsdWVBbnN3ZXIgPSBwcm9wcy5tdWx0aVZhbHVlQW5zd2VyO1xuXG4gICAgY29uc3QgdHRsID0gcHJvcHMudGFyZ2V0LmFsaWFzVGFyZ2V0XG4gICAgICA/IHVuZGVmaW5lZFxuICAgICAgOiAoKHByb3BzLnR0bCAmJiBwcm9wcy50dGwudG9TZWNvbmRzKCkpID8/IDE4MDApO1xuXG4gICAgY29uc3QgcmVjb3JkTmFtZSA9IGRldGVybWluZUZ1bGx5UXVhbGlmaWVkRG9tYWluTmFtZShcbiAgICAgIHByb3BzLnpvbmUsXG4gICAgICBwcm9wcy5yZWNvcmROYW1lLFxuICAgICk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IHJvdXRlNTNSZWNvcmQuUm91dGU1M1JlY29yZCh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIC4uLnByb3BzLCAvLyBjb3B5IGFsbCBNZXRhQXJndW1lbnRzXG4gICAgICB6b25lSWQ6IHByb3BzLnpvbmUuem9uZUlkLFxuICAgICAgbmFtZTogcmVjb3JkTmFtZSxcbiAgICAgIHR5cGU6IHByb3BzLnJlY29yZFR5cGUsXG4gICAgICByZWNvcmRzOiBwcm9wcy50YXJnZXQudmFsdWVzLFxuICAgICAgYWxpYXM6XG4gICAgICAgIHByb3BzLnRhcmdldC5hbGlhc1RhcmdldCAmJlxuICAgICAgICBwcm9wcy50YXJnZXQuYWxpYXNUYXJnZXQuYmluZCh0aGlzLCBwcm9wcy56b25lKSxcbiAgICAgIHR0bCxcbiAgICAgIHNldElkZW50aWZpZXI6IHByb3BzLnNldElkZW50aWZpZXIgPz8gdGhpcy5jb25maWd1cmVTZXRJZGVudGlmaWVyKCksXG4gICAgICAvLyBnZW9Mb2NhdGlvbjogcHJvcHMuZ2VvTG9jYXRpb25cbiAgICAgIC8vICAgPyB7XG4gICAgICAvLyAgICAgICBjb250aW5lbnRDb2RlOiBwcm9wcy5nZW9Mb2NhdGlvbi5jb250aW5lbnRDb2RlLFxuICAgICAgLy8gICAgICAgY291bnRyeUNvZGU6IHByb3BzLmdlb0xvY2F0aW9uLmNvdW50cnlDb2RlLFxuICAgICAgLy8gICAgICAgc3ViZGl2aXNpb25Db2RlOiBwcm9wcy5nZW9Mb2NhdGlvbi5zdWJkaXZpc2lvbkNvZGUsXG4gICAgICAvLyAgICAgfVxuICAgICAgLy8gICA6IHVuZGVmaW5lZCxcbiAgICAgIG11bHRpdmFsdWVBbnN3ZXJSb3V0aW5nUG9saWN5OiBwcm9wcy5tdWx0aVZhbHVlQW5zd2VyLFxuICAgICAgd2VpZ2h0ZWRSb3V0aW5nUG9saWN5OiBwcm9wcy53ZWlnaHRcbiAgICAgICAgPyB7XG4gICAgICAgICAgICB3ZWlnaHQ6IHByb3BzLndlaWdodCxcbiAgICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgbGF0ZW5jeVJvdXRpbmdQb2xpY3k6IHByb3BzLnJlZ2lvblxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHJlZ2lvbjogcHJvcHMucmVnaW9uLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBhbGxvd092ZXJ3cml0ZTogcHJvcHMuYWxsb3dPdmVyd3JpdGUsXG4gICAgfSk7XG5cbiAgICB0aGlzLmZxZG4gPSB0aGlzLnJlc291cmNlLmZxZG47XG4gICAgdGhpcy5kb21haW5OYW1lID0gdGhpcy5yZXNvdXJjZS5uYW1lO1xuICAgIHRoaXMuX291dHB1dHMgPSB7XG4gICAgICBkb21haW5OYW1lOiB0aGlzLmRvbWFpbk5hbWUsXG4gICAgICBmcWRuOiB0aGlzLmZxZG4sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlU2V0SWRlbnRpZmllcigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIC8vIGlmICh0aGlzLmdlb0xvY2F0aW9uKSB7XG4gICAgLy8gICBsZXQgaWRlbnRpZmllciA9IFwiR0VPXCI7XG4gICAgLy8gICBpZiAodGhpcy5nZW9Mb2NhdGlvbi5jb250aW5lbnRDb2RlKSB7XG4gICAgLy8gICAgIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmNvbmNhdChcbiAgICAvLyAgICAgICBcIl9DT05USU5FTlRfXCIsXG4gICAgLy8gICAgICAgdGhpcy5nZW9Mb2NhdGlvbi5jb250aW5lbnRDb2RlLFxuICAgIC8vICAgICApO1xuICAgIC8vICAgfVxuICAgIC8vICAgaWYgKHRoaXMuZ2VvTG9jYXRpb24uY291bnRyeUNvZGUpIHtcbiAgICAvLyAgICAgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuY29uY2F0KFxuICAgIC8vICAgICAgIFwiX0NPVU5UUllfXCIsXG4gICAgLy8gICAgICAgdGhpcy5nZW9Mb2NhdGlvbi5jb3VudHJ5Q29kZSxcbiAgICAvLyAgICAgKTtcbiAgICAvLyAgIH1cbiAgICAvLyAgIGlmICh0aGlzLmdlb0xvY2F0aW9uLnN1YmRpdmlzaW9uQ29kZSkge1xuICAgIC8vICAgICBpZGVudGlmaWVyID0gaWRlbnRpZmllci5jb25jYXQoXG4gICAgLy8gICAgICAgXCJfU1VCRElWSVNJT05fXCIsXG4gICAgLy8gICAgICAgdGhpcy5nZW9Mb2NhdGlvbi5zdWJkaXZpc2lvbkNvZGUsXG4gICAgLy8gICAgICk7XG4gICAgLy8gICB9XG4gICAgLy8gICByZXR1cm4gaWRlbnRpZmllcjtcbiAgICAvLyB9XG5cbiAgICBpZiAodGhpcy53ZWlnaHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgaWRQcmVmaXggPSBgV0VJR0hUXyR7dGhpcy53ZWlnaHR9X0lEX2A7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVJZGVudGlmaWVyKGlkUHJlZml4KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZWdpb24pIHtcbiAgICAgIGNvbnN0IGlkUHJlZml4ID0gYFJFR0lPTl8ke3RoaXMucmVnaW9ufV9JRF9gO1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlSWRlbnRpZmllcihpZFByZWZpeCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubXVsdGlWYWx1ZUFuc3dlcikge1xuICAgICAgY29uc3QgaWRQcmVmaXggPSBcIk1WQV9JRF9cIjtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUlkZW50aWZpZXIoaWRQcmVmaXgpO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUlkZW50aWZpZXIocHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7IG1heExlbmd0aDogNjQsIHByZWZpeCB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSByZWNvcmQgdHlwZS5cbiAqL1xuZXhwb3J0IGVudW0gUmVjb3JkVHlwZSB7XG4gIC8qKlxuICAgKiByb3V0ZSB0cmFmZmljIHRvIGEgcmVzb3VyY2UsIHN1Y2ggYXMgYSB3ZWIgc2VydmVyLCB1c2luZyBhbiBJUHY0IGFkZHJlc3MgaW4gZG90dGVkIGRlY2ltYWxcbiAgICogbm90YXRpb25cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vUm91dGU1My9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvUmVzb3VyY2VSZWNvcmRUeXBlcy5odG1sI0FGb3JtYXRcbiAgICovXG4gIEEgPSBcIkFcIixcblxuICAvKipcbiAgICogcm91dGUgdHJhZmZpYyB0byBhIHJlc291cmNlLCBzdWNoIGFzIGEgd2ViIHNlcnZlciwgdXNpbmcgYW4gSVB2NiBhZGRyZXNzIGluIGNvbG9uLXNlcGFyYXRlZFxuICAgKiBoZXhhZGVjaW1hbCBmb3JtYXRcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vUm91dGU1My9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvUmVzb3VyY2VSZWNvcmRUeXBlcy5odG1sI0FBQUFGb3JtYXRcbiAgICovXG4gIEFBQUEgPSBcIkFBQUFcIixcblxuICAvKipcbiAgICogQSBDQUEgcmVjb3JkIHNwZWNpZmllcyB3aGljaCBjZXJ0aWZpY2F0ZSBhdXRob3JpdGllcyAoQ0FzKSBhcmUgYWxsb3dlZCB0byBpc3N1ZSBjZXJ0aWZpY2F0ZXNcbiAgICogZm9yIGEgZG9tYWluIG9yIHN1YmRvbWFpblxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9Sb3V0ZTUzL2xhdGVzdC9EZXZlbG9wZXJHdWlkZS9SZXNvdXJjZVJlY29yZFR5cGVzLmh0bWwjQ0FBRm9ybWF0XG4gICAqL1xuICBDQUEgPSBcIkNBQVwiLFxuXG4gIC8qKlxuICAgKiBBIENOQU1FIHJlY29yZCBtYXBzIEROUyBxdWVyaWVzIGZvciB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCByZWNvcmQsIHN1Y2ggYXMgYWNtZS5leGFtcGxlLmNvbSxcbiAgICogdG8gYW5vdGhlciBkb21haW4gKGV4YW1wbGUuY29tIG9yIGV4YW1wbGUubmV0KSBvciBzdWJkb21haW4gKGFjbWUuZXhhbXBsZS5jb20gb3IgemVuaXRoLmV4YW1wbGUub3JnKS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vUm91dGU1My9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvUmVzb3VyY2VSZWNvcmRUeXBlcy5odG1sI0NOQU1FRm9ybWF0XG4gICAqL1xuICBDTkFNRSA9IFwiQ05BTUVcIixcblxuICAvKipcbiAgICogQSBkZWxlZ2F0aW9uIHNpZ25lciAoRFMpIHJlY29yZCByZWZlcnMgYSB6b25lIGtleSBmb3IgYSBkZWxlZ2F0ZWQgc3ViZG9tYWluIHpvbmUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL1JvdXRlNTMvbGF0ZXN0L0RldmVsb3Blckd1aWRlL1Jlc291cmNlUmVjb3JkVHlwZXMuaHRtbCNEU0Zvcm1hdFxuICAgKi9cbiAgRFMgPSBcIkRTXCIsXG5cbiAgLyoqXG4gICAqIEFuIE1YIHJlY29yZCBzcGVjaWZpZXMgdGhlIG5hbWVzIG9mIHlvdXIgbWFpbCBzZXJ2ZXJzIGFuZCwgaWYgeW91IGhhdmUgdHdvIG9yIG1vcmUgbWFpbCBzZXJ2ZXJzLFxuICAgKiB0aGUgcHJpb3JpdHkgb3JkZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL1JvdXRlNTMvbGF0ZXN0L0RldmVsb3Blckd1aWRlL1Jlc291cmNlUmVjb3JkVHlwZXMuaHRtbCNNWEZvcm1hdFxuICAgKi9cbiAgTVggPSBcIk1YXCIsXG5cbiAgLyoqXG4gICAqIEEgTmFtZSBBdXRob3JpdHkgUG9pbnRlciAoTkFQVFIpIGlzIGEgdHlwZSBvZiByZWNvcmQgdGhhdCBpcyB1c2VkIGJ5IER5bmFtaWMgRGVsZWdhdGlvbiBEaXNjb3ZlcnlcbiAgICogU3lzdGVtIChERERTKSBhcHBsaWNhdGlvbnMgdG8gY29udmVydCBvbmUgdmFsdWUgdG8gYW5vdGhlciBvciB0byByZXBsYWNlIG9uZSB2YWx1ZSB3aXRoIGFub3RoZXIuXG4gICAqIEZvciBleGFtcGxlLCBvbmUgY29tbW9uIHVzZSBpcyB0byBjb252ZXJ0IHBob25lIG51bWJlcnMgaW50byBTSVAgVVJJcy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vUm91dGU1My9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvUmVzb3VyY2VSZWNvcmRUeXBlcy5odG1sI05BUFRSRm9ybWF0XG4gICAqL1xuICBOQVBUUiA9IFwiTkFQVFJcIixcblxuICAvKipcbiAgICogQW4gTlMgcmVjb3JkIGlkZW50aWZpZXMgdGhlIG5hbWUgc2VydmVycyBmb3IgdGhlIGhvc3RlZCB6b25lXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL1JvdXRlNTMvbGF0ZXN0L0RldmVsb3Blckd1aWRlL1Jlc291cmNlUmVjb3JkVHlwZXMuaHRtbCNOU0Zvcm1hdFxuICAgKi9cbiAgTlMgPSBcIk5TXCIsXG5cbiAgLyoqXG4gICAqIEEgUFRSIHJlY29yZCBtYXBzIGFuIElQIGFkZHJlc3MgdG8gdGhlIGNvcnJlc3BvbmRpbmcgZG9tYWluIG5hbWUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL1JvdXRlNTMvbGF0ZXN0L0RldmVsb3Blckd1aWRlL1Jlc291cmNlUmVjb3JkVHlwZXMuaHRtbCNQVFJGb3JtYXRcbiAgICovXG4gIFBUUiA9IFwiUFRSXCIsXG5cbiAgLyoqXG4gICAqIEEgc3RhcnQgb2YgYXV0aG9yaXR5IChTT0EpIHJlY29yZCBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCBhIGRvbWFpbiBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgQW1hem9uXG4gICAqIFJvdXRlIDUzIGhvc3RlZCB6b25lXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL1JvdXRlNTMvbGF0ZXN0L0RldmVsb3Blckd1aWRlL1Jlc291cmNlUmVjb3JkVHlwZXMuaHRtbCNTT0FGb3JtYXRcbiAgICovXG4gIFNPQSA9IFwiU09BXCIsXG5cbiAgLyoqXG4gICAqIFNQRiByZWNvcmRzIHdlcmUgZm9ybWVybHkgdXNlZCB0byB2ZXJpZnkgdGhlIGlkZW50aXR5IG9mIHRoZSBzZW5kZXIgb2YgZW1haWwgbWVzc2FnZXMuXG4gICAqIEluc3RlYWQgb2YgYW4gU1BGIHJlY29yZCwgd2UgcmVjb21tZW5kIHRoYXQgeW91IGNyZWF0ZSBhIFRYVCByZWNvcmQgdGhhdCBjb250YWlucyB0aGUgYXBwbGljYWJsZSB2YWx1ZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vUm91dGU1My9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvUmVzb3VyY2VSZWNvcmRUeXBlcy5odG1sI1NQRkZvcm1hdFxuICAgKi9cbiAgU1BGID0gXCJTUEZcIixcblxuICAvKipcbiAgICogQW4gU1JWIHJlY29yZCBWYWx1ZSBlbGVtZW50IGNvbnNpc3RzIG9mIGZvdXIgc3BhY2Utc2VwYXJhdGVkIHZhbHVlcy4gVGhlIGZpcnN0IHRocmVlIHZhbHVlcyBhcmVcbiAgICogZGVjaW1hbCBudW1iZXJzIHJlcHJlc2VudGluZyBwcmlvcml0eSwgd2VpZ2h0LCBhbmQgcG9ydC4gVGhlIGZvdXJ0aCB2YWx1ZSBpcyBhIGRvbWFpbiBuYW1lLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9Sb3V0ZTUzL2xhdGVzdC9EZXZlbG9wZXJHdWlkZS9SZXNvdXJjZVJlY29yZFR5cGVzLmh0bWwjU1JWRm9ybWF0XG4gICAqL1xuICBTUlYgPSBcIlNSVlwiLFxuXG4gIC8qKlxuICAgKiBBIFRYVCByZWNvcmQgY29udGFpbnMgb25lIG9yIG1vcmUgc3RyaW5ncyB0aGF0IGFyZSBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGF0aW9uIG1hcmtzIChcIikuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL1JvdXRlNTMvbGF0ZXN0L0RldmVsb3Blckd1aWRlL1Jlc291cmNlUmVjb3JkVHlwZXMuaHRtbCNUWFRGb3JtYXRcbiAgICovXG4gIFRYVCA9IFwiVFhUXCIsXG59XG5cbi8qKlxuICogVHlwZSB1bmlvbiBmb3IgYSByZWNvcmQgdGhhdCBhY2NlcHRzIG11bHRpcGxlIHR5cGVzIG9mIHRhcmdldC5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlY29yZFRhcmdldCB7XG4gIC8qKlxuICAgKiBVc2Ugc3RyaW5nIHZhbHVlcyBhcyB0YXJnZXQuXG4gICAqXG4gICAqIFRoZXNlIGNhbiBiZSBJUCBhZGRyZXNzZXMgb3IgZG9tYWluIG5hbWVzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVmFsdWVzKC4uLnZhbHVlczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gbmV3IFJlY29yZFRhcmdldCh2YWx1ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSBhbiBhbGlhcyBhcyB0YXJnZXQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21BbGlhcyhhbGlhc1RhcmdldDogSUFsaWFzUmVjb3JkVGFyZ2V0KSB7XG4gICAgcmV0dXJuIG5ldyBSZWNvcmRUYXJnZXQodW5kZWZpbmVkLCBhbGlhc1RhcmdldCk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlcyBjb3JyZXNwb25kIHdpdGggdGhlIGNob3NlbiByZWNvcmQgdHlwZSAoZS5nLiBmb3IgJ0EnIFR5cGUsIHNwZWNpZnkgb25lIG9yIG1vcmUgSVAgYWRkcmVzc2VzKVxuICAgKiBAcGFyYW0gYWxpYXNUYXJnZXQgYWxpYXMgZm9yIHRhcmdldHMgc3VjaCBhcyBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiB0byByb3V0ZSB0cmFmZmljIHRvXG4gICAqL1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHZhbHVlcz86IHN0cmluZ1tdLFxuICAgIHB1YmxpYyByZWFkb25seSBhbGlhc1RhcmdldD86IElBbGlhc1JlY29yZFRhcmdldCxcbiAgKSB7fVxufVxuXG4vKipcbiAqIENvbnN0cnVjdGlvbiBwcm9wZXJ0aWVzIGZvciBhIEFSZWNvcmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVJlY29yZFByb3BzIGV4dGVuZHMgUmVjb3JkU2V0T3B0aW9ucywgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIHRhcmdldC5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldDogUmVjb3JkVGFyZ2V0O1xufVxuXG4vKipcbiAqIEEgRE5TIEEgcmVjb3JkXG4gKlxuICogQHJlc291cmNlIGF3c19yb3V0ZTUzX3JlY29yZFxuICovXG5leHBvcnQgY2xhc3MgQVJlY29yZCBleHRlbmRzIFJlY29yZFNldCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBUmVjb3JkUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgcmVjb3JkVHlwZTogUmVjb3JkVHlwZS5BLFxuICAgICAgdGFyZ2V0OiBwcm9wcy50YXJnZXQsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3Rpb24gcHJvcGVydGllcyBmb3IgYSBBYWFhUmVjb3JkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFhYWFSZWNvcmRQcm9wcyBleHRlbmRzIFJlY29yZFNldE9wdGlvbnMsIEF3c0NvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ6IFJlY29yZFRhcmdldDtcbn1cblxuLyoqXG4gKiBBIEROUyBBQUFBIHJlY29yZFxuICpcbiAqIEByZXNvdXJjZSBhd3Nfcm91dGU1M19yZWNvcmRcbiAqL1xuZXhwb3J0IGNsYXNzIEFhYWFSZWNvcmQgZXh0ZW5kcyBSZWNvcmRTZXQge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQWFhYVJlY29yZFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHJlY29yZFR5cGU6IFJlY29yZFR5cGUuQUFBQSxcbiAgICAgIHRhcmdldDogcHJvcHMudGFyZ2V0LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQ29uc3RydWN0aW9uIHByb3BlcnRpZXMgZm9yIGEgQ25hbWVSZWNvcmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ25hbWVSZWNvcmRQcm9wcyBleHRlbmRzIFJlY29yZFNldE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGRvbWFpbiBuYW1lIG9mIHRoZSB0YXJnZXQgdGhhdCB0aGlzIHJlY29yZCBzaG91bGQgcG9pbnQgdG8uXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBETlMgQ05BTUUgcmVjb3JkXG4gKlxuICogQHJlc291cmNlIGF3c19yb3V0ZTUzX3JlY29yZFxuICovXG5leHBvcnQgY2xhc3MgQ25hbWVSZWNvcmQgZXh0ZW5kcyBSZWNvcmRTZXQge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ25hbWVSZWNvcmRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICByZWNvcmRUeXBlOiBSZWNvcmRUeXBlLkNOQU1FLFxuICAgICAgdGFyZ2V0OiBSZWNvcmRUYXJnZXQuZnJvbVZhbHVlcyhwcm9wcy5kb21haW5OYW1lKSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnN0cnVjdGlvbiBwcm9wZXJ0aWVzIGZvciBhIFR4dFJlY29yZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeHRSZWNvcmRQcm9wcyBleHRlbmRzIFJlY29yZFNldE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHRleHQgdmFsdWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBIEROUyBUWFQgcmVjb3JkXG4gKlxuICogQHJlc291cmNlIGF3c19yb3V0ZTUzX3JlY29yZFxuICovXG5leHBvcnQgY2xhc3MgVHh0UmVjb3JkIGV4dGVuZHMgUmVjb3JkU2V0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFR4dFJlY29yZFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHJlY29yZFR5cGU6IFJlY29yZFR5cGUuVFhULFxuICAgICAgdGFyZ2V0OiBSZWNvcmRUYXJnZXQuZnJvbVZhbHVlcyguLi5wcm9wcy52YWx1ZXMubWFwKCh2KSA9PiBmb3JtYXRUeHQodikpKSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEZvcm1hdHMgYSB0ZXh0IHZhbHVlIGZvciB1c2UgaW4gYSBUWFQgcmVjb3JkXG4gKlxuICogVXNlIGBKU09OLnN0cmluZ2lmeWAgdG8gY29ycmVjdGx5IGVzY2FwZSBhbmQgZW5jbG9zZSBpbiBkb3VibGUgcXVvdGVzIChcIlwiKS5cbiAqXG4gKiBETlMgVFhUIHJlY29yZHMgY2FuIGNvbnRhaW4gdXAgdG8gMjU1IGNoYXJhY3RlcnMgaW4gYSBzaW5nbGUgc3RyaW5nLiBUWFRcbiAqIHJlY29yZCBzdHJpbmdzIG92ZXIgMjU1IGNoYXJhY3RlcnMgbXVzdCBiZSBzcGxpdCBpbnRvIG11bHRpcGxlIHRleHQgc3RyaW5nc1xuICogd2l0aGluIHRoZSBzYW1lIHJlY29yZC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vcHJlbWl1bXN1cHBvcnQva25vd2xlZGdlLWNlbnRlci9yb3V0ZTUzLXJlc29sdmUtZGtpbS10ZXh0LXJlY29yZC1lcnJvci9cbiAqL1xuZnVuY3Rpb24gZm9ybWF0VHh0KHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIGxldCBpZHggPSAwO1xuICB3aGlsZSAoaWR4IDwgc3RyaW5nLmxlbmd0aCkge1xuICAgIHJlc3VsdC5wdXNoKHN0cmluZy5zbGljZShpZHgsIChpZHggKz0gMjU1KSkpOyAvLyBjaHVua3Mgb2YgMjU1IGNoYXJhY3RlcnMgbG9uZ1xuICB9XG4gIHJldHVybiByZXN1bHQubWFwKChyKSA9PiBKU09OLnN0cmluZ2lmeShyKSkuam9pbihcIlwiKTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIFNSViByZWNvcmQgdmFsdWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3J2UmVjb3JkVmFsdWUge1xuICAvKipcbiAgICogVGhlIHByaW9yaXR5LlxuICAgKi9cbiAgcmVhZG9ubHkgcHJpb3JpdHk6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHdlaWdodC5cbiAgICovXG4gIHJlYWRvbmx5IHdlaWdodDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9ydC5cbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHNlcnZlciBob3N0IG5hbWUuXG4gICAqL1xuICByZWFkb25seSBob3N0TmFtZTogc3RyaW5nO1xufVxuLyoqXG4gKiBDb25zdHJ1Y3Rpb24gcHJvcGVydGllcyBmb3IgYSBTcnZSZWNvcmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3J2UmVjb3JkUHJvcHMgZXh0ZW5kcyBSZWNvcmRTZXRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZXMuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZXM6IFNydlJlY29yZFZhbHVlW107XG59XG5cbi8qKlxuICogQSBETlMgU1JWIHJlY29yZFxuICpcbiAqIEByZXNvdXJjZSBhd3Nfcm91dGU1M19yZWNvcmRcbiAqL1xuZXhwb3J0IGNsYXNzIFNydlJlY29yZCBleHRlbmRzIFJlY29yZFNldCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTcnZSZWNvcmRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICByZWNvcmRUeXBlOiBSZWNvcmRUeXBlLlNSVixcbiAgICAgIHRhcmdldDogUmVjb3JkVGFyZ2V0LmZyb21WYWx1ZXMoXG4gICAgICAgIC4uLnByb3BzLnZhbHVlcy5tYXAoXG4gICAgICAgICAgKHYpID0+IGAke3YucHJpb3JpdHl9ICR7di53ZWlnaHR9ICR7di5wb3J0fSAke3YuaG9zdE5hbWV9YCxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgQ0FBIHRhZy5cbiAqL1xuZXhwb3J0IGVudW0gQ2FhVGFnIHtcbiAgLyoqXG4gICAqIEV4cGxpY2l0eSBhdXRob3JpemVzIGEgc2luZ2xlIGNlcnRpZmljYXRlIGF1dGhvcml0eSB0byBpc3N1ZSBhXG4gICAqIGNlcnRpZmljYXRlIChhbnkgdHlwZSkgZm9yIHRoZSBob3N0bmFtZS5cbiAgICovXG4gIElTU1VFID0gXCJpc3N1ZVwiLFxuXG4gIC8qKlxuICAgKiBFeHBsaWNpdHkgYXV0aG9yaXplcyBhIHNpbmdsZSBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkgdG8gaXNzdWUgYVxuICAgKiB3aWxkY2FyZCBjZXJ0aWZpY2F0ZSAoYW5kIG9ubHkgd2lsZGNhcmQpIGZvciB0aGUgaG9zdG5hbWUuXG4gICAqL1xuICBJU1NVRVdJTEQgPSBcImlzc3Vld2lsZFwiLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBVUkwgdG8gd2hpY2ggYSBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkgbWF5IHJlcG9ydCBwb2xpY3lcbiAgICogdmlvbGF0aW9ucy5cbiAgICovXG4gIElPREVGID0gXCJpb2RlZlwiLFxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGEgQ0FBIHJlY29yZCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYWFSZWNvcmRWYWx1ZSB7XG4gIC8qKlxuICAgKiBUaGUgZmxhZy5cbiAgICovXG4gIHJlYWRvbmx5IGZsYWc6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHRhZy5cbiAgICovXG4gIHJlYWRvbmx5IHRhZzogQ2FhVGFnO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWcuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdGlvbiBwcm9wZXJ0aWVzIGZvciBhIENhYVJlY29yZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYWFSZWNvcmRQcm9wcyBleHRlbmRzIFJlY29yZFNldE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHZhbHVlcy5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlczogQ2FhUmVjb3JkVmFsdWVbXTtcbn1cblxuLyoqXG4gKiBBIEROUyBDQUEgcmVjb3JkXG4gKlxuICogQHJlc291cmNlIGF3c19yb3V0ZTUzX3JlY29yZFxuICovXG5leHBvcnQgY2xhc3MgQ2FhUmVjb3JkIGV4dGVuZHMgUmVjb3JkU2V0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENhYVJlY29yZFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHJlY29yZFR5cGU6IFJlY29yZFR5cGUuQ0FBLFxuICAgICAgdGFyZ2V0OiBSZWNvcmRUYXJnZXQuZnJvbVZhbHVlcyhcbiAgICAgICAgLi4ucHJvcHMudmFsdWVzLm1hcCgodikgPT4gYCR7di5mbGFnfSAke3YudGFnfSBcIiR7di52YWx1ZX1cImApLFxuICAgICAgKSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnN0cnVjdGlvbiBwcm9wZXJ0aWVzIGZvciBhIENhYUFtYXpvblJlY29yZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYWFBbWF6b25SZWNvcmRQcm9wcyBleHRlbmRzIFJlY29yZFNldE9wdGlvbnMge31cblxuLyoqXG4gKiBBIEROUyBBbWF6b24gQ0FBIHJlY29yZC5cbiAqXG4gKiBBIENBQSByZWNvcmQgdG8gcmVzdHJpY3QgY2VydGlmaWNhdGUgYXV0aG9yaXRpZXMgYWxsb3dlZFxuICogdG8gaXNzdWUgY2VydGlmaWNhdGVzIGZvciBhIGRvbWFpbiB0byBBbWF6b24gb25seS5cbiAqXG4gKiBAcmVzb3VyY2UgYXdzX3JvdXRlNTNfcmVjb3JkXG4gKi9cbmV4cG9ydCBjbGFzcyBDYWFBbWF6b25SZWNvcmQgZXh0ZW5kcyBDYWFSZWNvcmQge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ2FhQW1hem9uUmVjb3JkUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgdmFsdWVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmbGFnOiAwLFxuICAgICAgICAgIHRhZzogQ2FhVGFnLklTU1VFLFxuICAgICAgICAgIHZhbHVlOiBcImFtYXpvbi5jb21cIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIE1YIHJlY29yZCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNeFJlY29yZFZhbHVlIHtcbiAgLyoqXG4gICAqIFRoZSBwcmlvcml0eS5cbiAgICovXG4gIHJlYWRvbmx5IHByaW9yaXR5OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtYWlsIHNlcnZlciBob3N0IG5hbWUuXG4gICAqL1xuICByZWFkb25seSBob3N0TmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdGlvbiBwcm9wZXJ0aWVzIGZvciBhIE14UmVjb3JkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE14UmVjb3JkUHJvcHMgZXh0ZW5kcyBSZWNvcmRTZXRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZXMuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZXM6IE14UmVjb3JkVmFsdWVbXTtcbn1cblxuLyoqXG4gKiBBIEROUyBNWCByZWNvcmRcbiAqXG4gKiBAcmVzb3VyY2UgYXdzX3JvdXRlNTNfcmVjb3JkXG4gKi9cbmV4cG9ydCBjbGFzcyBNeFJlY29yZCBleHRlbmRzIFJlY29yZFNldCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBNeFJlY29yZFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHJlY29yZFR5cGU6IFJlY29yZFR5cGUuTVgsXG4gICAgICB0YXJnZXQ6IFJlY29yZFRhcmdldC5mcm9tVmFsdWVzKFxuICAgICAgICAuLi5wcm9wcy52YWx1ZXMubWFwKCh2KSA9PiBgJHt2LnByaW9yaXR5fSAke3YuaG9zdE5hbWV9YCksXG4gICAgICApLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQ29uc3RydWN0aW9uIHByb3BlcnRpZXMgZm9yIGEgTlNSZWNvcmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTnNSZWNvcmRQcm9wcyBleHRlbmRzIFJlY29yZFNldE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIE5TIHZhbHVlcy5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlczogc3RyaW5nW107XG59XG5cbi8qKlxuICogQSBETlMgTlMgcmVjb3JkXG4gKlxuICogQHJlc291cmNlIGF3c19yb3V0ZTUzX3JlY29yZFxuICovXG5leHBvcnQgY2xhc3MgTnNSZWNvcmQgZXh0ZW5kcyBSZWNvcmRTZXQge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTnNSZWNvcmRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICByZWNvcmRUeXBlOiBSZWNvcmRUeXBlLk5TLFxuICAgICAgdGFyZ2V0OiBSZWNvcmRUYXJnZXQuZnJvbVZhbHVlcyguLi5wcm9wcy52YWx1ZXMpLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQ29uc3RydWN0aW9uIHByb3BlcnRpZXMgZm9yIGEgRFNSZWNvcmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRHNSZWNvcmRQcm9wcyBleHRlbmRzIFJlY29yZFNldE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIERTIHZhbHVlcy5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlczogc3RyaW5nW107XG59XG5cbi8qKlxuICogQSBETlMgRFMgcmVjb3JkXG4gKlxuICogQHJlc291cmNlIGF3c19yb3V0ZTUzX3JlY29yZFxuICovXG5leHBvcnQgY2xhc3MgRHNSZWNvcmQgZXh0ZW5kcyBSZWNvcmRTZXQge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRHNSZWNvcmRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICByZWNvcmRUeXBlOiBSZWNvcmRUeXBlLkRTLFxuICAgICAgdGFyZ2V0OiBSZWNvcmRUYXJnZXQuZnJvbVZhbHVlcyguLi5wcm9wcy52YWx1ZXMpLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQ29uc3RydWN0aW9uIHByb3BlcnRpZXMgZm9yIGEgWm9uZURlbGVnYXRpb25SZWNvcmRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBab25lRGVsZWdhdGlvblJlY29yZFByb3BzIGV4dGVuZHMgUmVjb3JkU2V0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBzZXJ2ZXJzIHRvIHJlcG9ydCBpbiB0aGUgZGVsZWdhdGlvbiByZWNvcmRzLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZVNlcnZlcnM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEEgcmVjb3JkIHRvIGRlbGVnYXRlIGZ1cnRoZXIgbG9va3VwcyB0byBhIGRpZmZlcmVudCBzZXQgb2YgbmFtZSBzZXJ2ZXJzLlxuICovXG5leHBvcnQgY2xhc3MgWm9uZURlbGVnYXRpb25SZWNvcmQgZXh0ZW5kcyBSZWNvcmRTZXQge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogWm9uZURlbGVnYXRpb25SZWNvcmRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICByZWNvcmRUeXBlOiBSZWNvcmRUeXBlLk5TLFxuICAgICAgdGFyZ2V0OiBSZWNvcmRUYXJnZXQuZnJvbVZhbHVlcyhcbiAgICAgICAgLi4uKFRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy5uYW1lU2VydmVycylcbiAgICAgICAgICA/IHByb3BzLm5hbWVTZXJ2ZXJzIC8vIENhbid0IG1hcCBhIHN0cmluZy1hcnJheSB0b2tlbiFcbiAgICAgICAgICA6IHByb3BzLm5hbWVTZXJ2ZXJzLm1hcCgobnMpID0+XG4gICAgICAgICAgICAgIFRva2VuLmlzVW5yZXNvbHZlZChucykgfHwgbnMuZW5kc1dpdGgoXCIuXCIpID8gbnMgOiBgJHtuc30uYCxcbiAgICAgICAgICAgICkpLFxuICAgICAgKSxcbiAgICAgIHR0bDogcHJvcHMudHRsIHx8IER1cmF0aW9uLmRheXMoMiksXG4gICAgfSk7XG4gIH1cbn1cblxuLy8gcmVmIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE1Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1yb3V0ZTUzL2xpYi91dGlsLnRzXG5cbi8qKlxuICogUm91dGU1MyByZXF1aXJlcyB0aGUgcmVjb3JkIG5hbWVzIGFyZSBzcGVjaWZpZWQgYXMgZnVsbHkgcXVhbGlmaWVkIG5hbWVzLCBidXQgdGhpc1xuICogZm9yY2VzIGxvdHMgb2YgcmVkdW5kYW50IHdvcmsgb24gdGhlIHVzZXIgKHJlcGVhdGluZyB0aGUgem9uZSBuYW1lIG92ZXIgYW5kIG92ZXIpLlxuICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhlIHVzZXIgdG8gYmUgbGF6aWVyIGFuZCBvZmZlcnMgYSBuaWNlciBleHBlcmllbmNlLCBieVxuICogcXVhbGlmeWluZyByZWxhdGl2ZSBuYW1lcyBhcHByb3ByaWF0ZWx5OlxuICpcbiAqIEBwYXJhbSBwcm92aWRlZE5hbWUgdGhlIHVzZXItc3BlY2lmaWVkIG5hbWUgb2YgdGhlIHJlY29yZC5cbiAqIEBwYXJhbSBkbnNab25lICAgICAgdGhlIHpvbmUgdGhlIHJlY29yZCB3aWxsIGJlIGNyZWF0ZWQgaW4uXG4gKlxuICogQHJldHVybnMgPHVsPlxuICogICAgICAgIDxsaT5JZiArcHJvdmlkZWROYW1lKyBlbmRzIHdpdGggYSArLissIHVzZSBpdCBhcy1pczwvbGk+XG4gKiAgICAgICAgPGxpPklmICtkbnNab25lLnpvbmVOYW1lKyBpcyBhIHRva2VuLCB1c2UgK3Byb3ZpZGVkTmFtZSsgYXMtaXM8L2xpPlxuICogICAgICAgIDxsaT5JZiArcHJvdmlkZWROYW1lKyBlbmRzIHdpdGggb3IgZXF1YWxzICt6b25lTmFtZSssIGFwcGVuZCBhIHRyYWlsaW5nICsuKzwvbGk+XG4gKiAgICAgICAgPGxpPk90aGVyd2lzZSwgYXBwZW5kICsuKywgK3pvbmVOYW1lKyBhbmQgYSB0cmFpbGluZyArLis8L2xpPlxuICogICAgICA8L3VsPlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGV0ZXJtaW5lRnVsbHlRdWFsaWZpZWREb21haW5OYW1lKFxuICBkbnNab25lOiBJRG5zWm9uZSxcbiAgcmVjb3JkTmFtZT86IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGlmICghcmVjb3JkTmFtZSkge1xuICAgIHJldHVybiBgJHtkbnNab25lLnpvbmVOYW1lfWA7XG4gIH1cblxuICBpZiAocmVjb3JkTmFtZS5lbmRzV2l0aChcIi5cIikgfHwgVG9rZW4uaXNVbnJlc29sdmVkKGRuc1pvbmUuem9uZU5hbWUpKSB7XG4gICAgcmV0dXJuIHJlY29yZE5hbWU7XG4gIH1cblxuICBjb25zdCB6b25lTmFtZSA9IGRuc1pvbmUuem9uZU5hbWUuZW5kc1dpdGgoXCIuXCIpXG4gICAgPyBkbnNab25lLnpvbmVOYW1lLnN1YnN0cmluZygwLCBkbnNab25lLnpvbmVOYW1lLmxlbmd0aCAtIDEpXG4gICAgOiBkbnNab25lLnpvbmVOYW1lO1xuXG4gIGNvbnN0IHN1ZmZpeCA9IGAuJHt6b25lTmFtZX1gO1xuICBpZiAocmVjb3JkTmFtZS5lbmRzV2l0aChzdWZmaXgpIHx8IHJlY29yZE5hbWUgPT09IHpvbmVOYW1lKSB7XG4gICAgcmV0dXJuIGAke3JlY29yZE5hbWV9LmA7XG4gIH1cblxuICByZXR1cm4gYCR7cmVjb3JkTmFtZX0ke3N1ZmZpeH0uYDtcbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { route53Zone } from "@
|
|
2
|
-
import { IResolvable } from "
|
|
1
|
+
import { route53Zone } from "@cdktn/provider-aws";
|
|
2
|
+
import { IResolvable } from "cdktn";
|
|
3
3
|
import { Construct } from "constructs";
|
|
4
4
|
import { IAwsConstruct, AwsConstructBase, AwsConstructProps } from "../";
|
|
5
5
|
import * as ec2 from "../compute";
|
package/lib/aws/edge/dns-zone.js
CHANGED
|
@@ -5,8 +5,8 @@ exports.DnsZone = void 0;
|
|
|
5
5
|
exports.makeHostedZoneArn = makeHostedZoneArn;
|
|
6
6
|
exports.validateZoneName = validateZoneName;
|
|
7
7
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
8
|
-
const provider_aws_1 = require("@
|
|
9
|
-
const
|
|
8
|
+
const provider_aws_1 = require("@cdktn/provider-aws");
|
|
9
|
+
const cdktn_1 = require("cdktn");
|
|
10
10
|
const __1 = require("../");
|
|
11
11
|
const errors_1 = require("../../errors");
|
|
12
12
|
/**
|
|
@@ -80,7 +80,7 @@ class DnsZone extends __1.AwsConstructBase {
|
|
|
80
80
|
this.resource = new provider_aws_1.route53Zone.Route53Zone(this, "Resource", {
|
|
81
81
|
name: zoneName,
|
|
82
82
|
comment: props.comment,
|
|
83
|
-
vpc:
|
|
83
|
+
vpc: cdktn_1.Lazy.anyValue({
|
|
84
84
|
produce: () => this.vpcs.length === 0
|
|
85
85
|
? undefined
|
|
86
86
|
: this.vpcs.map((n) => provider_aws_1.route53Zone.route53ZoneVpcToTerraform(n)),
|
|
@@ -133,7 +133,7 @@ class DnsZone extends __1.AwsConstructBase {
|
|
|
133
133
|
}
|
|
134
134
|
exports.DnsZone = DnsZone;
|
|
135
135
|
_a = JSII_RTTI_SYMBOL_1;
|
|
136
|
-
DnsZone[_a] = { fqn: "terraconstructs.aws.edge.DnsZone", version: "0.2.
|
|
136
|
+
DnsZone[_a] = { fqn: "terraconstructs.aws.edge.DnsZone", version: "0.2.6" };
|
|
137
137
|
function makeHostedZoneArn(construct, hostedZoneId) {
|
|
138
138
|
return __1.AwsStack.ofAwsConstruct(construct).formatArn({
|
|
139
139
|
account: "",
|
|
@@ -162,4 +162,4 @@ function validateZoneName(scope, zoneName) {
|
|
|
162
162
|
throw new errors_1.ValidationError("zone names can only contain a-z, 0-9, -, ! \" # $ % & ' ( ) * + , - / : ; < = > ? @ [ ] ^ _ ` { | } ~ .", scope);
|
|
163
163
|
}
|
|
164
164
|
}
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLXpvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2VkZ2UvZG5zLXpvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQXlUQSw4Q0FXQztBQVVELDRDQW1CQzs7QUFqV0Qsc0RBQXNFO0FBQ3RFLGlDQUEwQztBQUUxQywyQkFLYTtBQUNiLHlDQUErQztBQW9KL0M7OztHQUdHO0FBQ0gsTUFBYSxPQUFRLFNBQVEsb0JBQWdCO0lBQzNDLCtDQUErQztJQUMvQzs7Ozs7Ozs7T0FRRztJQUNJLE1BQU0sQ0FBQyxVQUFVLENBQ3RCLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixNQUFjO1FBRWQsTUFBTSxNQUFPLFNBQVEsb0JBQWdCO1lBRW5DLElBQVcsY0FBYztnQkFDdkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3ZCLENBQUM7WUFDRCxJQUFXLE9BQU87Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUM3QixDQUFDO1lBRUQsSUFBVyxRQUFRO2dCQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQzlCLENBQUM7WUFDRCxJQUFXLEdBQUc7Z0JBQ1osT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztZQUM3QixDQUFDO1lBQ0QsSUFBVyxXQUFXO2dCQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO1lBQ3JDLENBQUM7WUFDRCxJQUFXLGlCQUFpQjtnQkFDMUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDO1lBQzNDLENBQUM7WUFFRCxZQUFZLE1BQWlCLEVBQUUsR0FBVztnQkFDeEMsS0FBSyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBZlQsV0FBTSxHQUFHLE1BQU0sQ0FBQztnQkFnQjlCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxpQ0FBa0IsQ0FBQyxrQkFBa0Is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QUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzNELE1BQU0sSUFBSSx3QkFBZSxDQUN2QixvREFBb0QsRUFDcEQsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsZ0RBQWdELENBQUMsRUFBRSxDQUFDO1FBQ3RFLE1BQU0sSUFBSSx3QkFBZSxDQUN2QiwwR0FBMEcsRUFDMUcsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJvdXRlNTNab25lLCBkYXRhQXdzUm91dGU1M1pvbmUgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgTGF6eSwgSVJlc29sdmFibGUgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBBd3NTdGFjayxcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9cIjtcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCIuLi8uLi9lcnJvcnNcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiLi4vY29tcHV0ZVwiO1xuaW1wb3J0IHsgSU5ldHdvcmsgfSBmcm9tIFwiLi4vbmV0d29ya1wiO1xuXG4vLyByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE1Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1yb3V0ZTUzL2xpYi9ob3N0ZWQtem9uZS50c1xuXG4vKipcbiAqIENvbW1vbiBwcm9wZXJ0aWVzIHRvIGNyZWF0ZSBhIFJvdXRlIDUzIGhvc3RlZCB6b25lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uRG5zWm9uZVByb3BzIGV4dGVuZHMgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGRvbWFpbi4gRm9yIHJlc291cmNlIHJlY29yZCB0eXBlcyB0aGF0IGluY2x1ZGUgYSBkb21haW5cbiAgICogbmFtZSwgc3BlY2lmeSBhIGZ1bGx5IHF1YWxpZmllZCBkb21haW4gbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IHpvbmVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWRkIGEgdHJhaWxpbmcgZG90IHRvIHRoZSB6b25lIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFkZFRyYWlsaW5nRG90PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQW55IGNvbW1lbnRzIHRoYXQgeW91IHdhbnQgdG8gaW5jbHVkZSBhYm91dCB0aGUgaG9zdGVkIHpvbmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGNvbW1lbnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS42MC4wL2RvY3MvcmVzb3VyY2VzL3JvdXRlNTNfem9uZSNmb3JjZV9kZXN0cm95IFJvdXRlNTNab25lI2ZvcmNlX2Rlc3Ryb3l9XG4gICAqL1xuICByZWFkb25seSBmb3JjZURlc3Ryb3k/OiBib29sZWFuIHwgSVJlc29sdmFibGU7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBvZiBhIG5ldyBob3N0ZWQgem9uZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIERuc1pvbmVQcm9wcyBleHRlbmRzIENvbW1vbkRuc1pvbmVQcm9wcyB7XG4gIC8qKlxuICAgKiBBIFZQQyB0aGF0IHlvdSB3YW50IHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgaG9zdGVkIHpvbmUuIFdoZW4geW91IHNwZWNpZnlcbiAgICogdGhpcyBwcm9wZXJ0eSwgYSBwcml2YXRlIGhvc3RlZCB6b25lIHdpbGwgYmUgY3JlYXRlZC5cbiAgICpcbiAgICogWW91IGNhbiBhc3NvY2lhdGUgYWRkaXRpb25hbCBWUENzIHRvIHRoaXMgcHJpdmF0ZSB6b25lIHVzaW5nIGBhZGRWcGModnBjKWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHB1YmxpYyAobm8gVlBDcyBhc3NvY2lhdGVkKVxuICAgKi9cbiAgcmVhZG9ubHkgdnBjcz86IGVjMi5JVnBjW107XG5cbiAgLyoqXG4gICAqIE5ldHdvcmtzIHRoYXQgeW91IHdhbnQgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBob3N0ZWQgem9uZS4gV2hlbiB5b3Ugc3BlY2lmeVxuICAgKiB0aGlzIHByb3BlcnR5LCBhIHByaXZhdGUgaG9zdGVkIHpvbmUgd2lsbCBiZSBjcmVhdGVkLlxuICAgKlxuICAgKiBDb25mbGljdHMgd2l0aCB0aGUgYGRlbGVnYXRpb25TZXRJZGAgYW5kIGFueSBgYXdzX3JvdXRlNTNfem9uZV9hc3NvY2lhdGlvbmBcbiAgICogcmVzb3VyY2Ugc3BlY2lmeWluZyB0aGUgc2FtZSB6b25lIElELlxuICAgKlxuICAgKiBZb3UgY2FuIGFzc29jaWF0ZSBhZGRpdGlvbmFsIG5ldHdvcmtzIHRvIHRoaXMgcHJpdmF0ZSB6b25lIHVzaW5nIGBhZGROZXR3b3JrKG5ldHdvcmspYC5cbiAgICpcbiAgICogQGRlZmF1bHQgcHVibGljIChubyBuZXR3b3JrcyBhc3NvY2lhdGVkKVxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYHZwY3NgIGluc3RlYWRcbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcmtzPzogSU5ldHdvcmtbXTtcblxuICAvKipcbiAgICogRGVsZWdhdGlvbiBzZXQgSUQgZm9yIHRoZSBwcml2YXRlIGhvc3RlZCB6b25lLlxuICAgKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJldXNhYmxlIGRlbGVnYXRpb24gc2V0IHdob3NlIE5TIHJlY29yZHMgeW91IHdhbnQgdG8gYXNzaWduIHRvIHRoZSBob3N0ZWQgem9uZS5cbiAgICpcbiAgICogQ29uZmxpY3RzIHdpdGggdnBjIGFzIGRlbGVnYXRpb24gc2V0cyBjYW4gb25seSBiZSB1c2VkIGZvciBwdWJsaWMgem9uZXMuXG4gICAqL1xuICByZWFkb25seSBkZWxlZ2F0aW9uU2V0SWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3V0cHV0cyB3aGljaCBtYXkgYmUgcmVnaXN0ZXJlZCBmb3Igb3V0cHV0IHZpYSB0aGUgR3JpZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEbnNab25lT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIG9mIHRoZSBob3N0ZWQgem9uZVxuICAgKi9cbiAgcmVhZG9ubHkgem9uZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGhvc3RlZCB6b25lXG4gICAqL1xuICByZWFkb25seSB6b25lTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzZXQgb2YgbmFtZSBzZXJ2ZXJzIGZvciB0aGUgc3BlY2lmaWMgaG9zdGVkIHpvbmUuIEZvciBleGFtcGxlOlxuICAgKiBuczEuZXhhbXBsZS5jb20uXG4gICAqXG4gICAqIFRoaXMgYXR0cmlidXRlIHdpbGwgYmUgdW5kZWZpbmVkIGZvciBwcml2YXRlIGhvc3RlZCB6b25lcyBvciBob3N0ZWQgem9uZXMgaW1wb3J0ZWQgZnJvbSBhbm90aGVyIHN0YWNrLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBuYW1lU2VydmVyczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBSb3V0ZSA1MyBuYW1lIHNlcnZlciB0aGF0IGNyZWF0ZWQgdGhlIFNPQSByZWNvcmQuXG4gICAqL1xuICByZWFkb25seSBwcmltYXJ5TmFtZVNlcnZlcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEltcG9ydGVkIG9yIGNyZWF0ZWQgRE5TIHpvbmUgYXR0cmlidXRlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElEbnNab25lIGV4dGVuZHMgSUF3c0NvbnN0cnVjdCB7XG4gIC8qKiBTdHJvbmdseSB0eXBlZCBvdXRwdXRzICovXG4gIHJlYWRvbmx5IGRuc1pvbmVPdXRwdXRzOiBEbnNab25lT3V0cHV0cztcblxuICAvKipcbiAgICogSUQgb2YgdGhpcyBob3N0ZWQgem9uZSwgc3VjaCBhcyBcIloyM0FCQzRYWVpMMDVCXCJcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgem9uZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZRRE4gb2YgdGhpcyBob3N0ZWQgem9uZVxuICAgKi9cbiAgcmVhZG9ubHkgem9uZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQVJOIG9mIHRoaXMgaG9zdGVkIHpvbmUsIHN1Y2ggYXMgYXJuOiR7UGFydGl0aW9ufTpyb3V0ZTUzOjo6aG9zdGVkem9uZS8ke0lkfVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBhcm46IHN0cmluZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIG5hbWUgc2VydmVycyBpbiBhc3NvY2lhdGVkIChvciBkZWZhdWx0KSBkZWxlZ2F0aW9uIHNldC5cbiAgICogRmluZCBtb3JlIGFib3V0IGRlbGVnYXRpb24gc2V0cyBpbiBbQVdTIGRvY3NdW2RlbGVnYXRpb24gc2V0IGRvY3NdLlxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBzZXQgb2YgbmFtZSBzZXJ2ZXJzIGZvciB0aGUgc3BlY2lmaWMgaG9zdGVkIHpvbmUuIEZvciBleGFtcGxlOlxuICAgKiBuczEuZXhhbXBsZS5jb20uXG4gICAqXG4gICAqIFtkZWxlZ2F0aW9uIHNldCBkb2NzXTogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL1JvdXRlNTMvbGF0ZXN0L0RldmVsb3Blckd1aWRlL2Rucy1jb25maWd1cmluZy1kZWxlZ2F0aW9uLXNldC5odG1sXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWVTZXJ2ZXJzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIFJvdXRlIDUzIG5hbWUgc2VydmVyIHRoYXQgY3JlYXRlZCB0aGUgU09BIHJlY29yZC5cbiAgICovXG4gIHJlYWRvbmx5IHByaW1hcnlOYW1lU2VydmVyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udGFpbmVyIGZvciByZWNvcmRzLCBhbmQgcmVjb3JkcyBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byByb3V0ZSB0cmFmZmljIGZvciBhXG4gKiBzcGVjaWZpYyBkb21haW4sIHN1Y2ggYXMgZXhhbXBsZS5jb20gYW5kIGl0cyBzdWJkb21haW5zIChhY21lLmV4YW1wbGUuY29tLCB6ZW5pdGguZXhhbXBsZS5jb20pXG4gKi9cbmV4cG9ydCBjbGFzcyBEbnNab25lIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElEbnNab25lIHtcbiAgLy8gVE9ETzogQWRkIFwiZnJvbSBHcmlkIExvb2t1cFwiIHN0YXRpYyBtZXRob2RzP1xuICAvKipcbiAgICogSW1wb3J0IGEgUm91dGUgNTMgaG9zdGVkIHpvbmUgZGVmaW5lZCBlaXRoZXIgb3V0c2lkZSBvZiBUZXJyYUNvbnN0cnVjdCwgb3IgZnJvbSBHcmlkIExvb2t1cFxuICAgKlxuICAgKiBVc2Ugd2hlbiBob3N0ZWQgem9uZSBJRCBpcyBrbm93bi5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBwYXJlbnQgQ29uc3RydWN0IGZvciB0aGlzIENvbnN0cnVjdFxuICAgKiBAcGFyYW0gaWQgIHRoZSBsb2dpY2FsIG5hbWUgb2YgdGhpcyBDb25zdHJ1Y3RcbiAgICogQHBhcmFtIHpvbmVJZCB0aGUgSUQgb2YgdGhlIGhvc3RlZCB6b25lIHRvIGltcG9ydFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tWm9uZUlkKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICB6b25lSWQ6IHN0cmluZyxcbiAgKTogSURuc1pvbmUge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJRG5zWm9uZSB7XG4gICAgICBwcml2YXRlIHJlYWRvbmx5IF9vdXRwdXRzOiBEbnNab25lT3V0cHV0cztcbiAgICAgIHB1YmxpYyBnZXQgZG5zWm9uZU91dHB1dHMoKTogRG5zWm9uZU91dHB1dHMge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3V0cHV0cztcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG5zWm9uZU91dHB1dHM7XG4gICAgICB9XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgem9uZUlkID0gem9uZUlkO1xuICAgICAgcHVibGljIGdldCB6b25lTmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlLm5hbWU7XG4gICAgICB9XG4gICAgICBwdWJsaWMgZ2V0IGFybigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlLmFybjtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgbmFtZVNlcnZlcnMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlLm5hbWVTZXJ2ZXJzO1xuICAgICAgfVxuICAgICAgcHVibGljIGdldCBwcmltYXJ5TmFtZVNlcnZlcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlLnByaW1hcnlOYW1lU2VydmVyO1xuICAgICAgfVxuICAgICAgcHJpdmF0ZSByZWFkb25seSBkYXRhc291cmNlOiBkYXRhQXdzUm91dGU1M1pvbmUuRGF0YUF3c1JvdXRlNTNab25lO1xuICAgICAgY29uc3RydWN0b3IoX3Njb3BlOiBDb25zdHJ1Y3QsIF9pZDogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKF9zY29wZSwgX2lkLCB7fSk7XG4gICAgICAgIHRoaXMuZGF0YXNvdXJjZSA9IG5ldyBkYXRhQXdzUm91dGU1M1pvbmUuRGF0YUF3c1JvdXRlNTNab25lKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgXCJSZXNvdXJjZVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHpvbmVJZCxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9vdXRwdXRzID0ge1xuICAgICAgICAgIHpvbmVJZDogem9uZUlkLFxuICAgICAgICAgIHpvbmVOYW1lOiB0aGlzLmRhdGFzb3VyY2UubmFtZSxcbiAgICAgICAgICBuYW1lU2VydmVyczogdGhpcy5kYXRhc291cmNlLm5hbWVTZXJ2ZXJzLFxuICAgICAgICAgIHByaW1hcnlOYW1lU2VydmVyOiB0aGlzLmRhdGFzb3VyY2UucHJpbWFyeU5hbWVTZXJ2ZXIsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX291dHB1dHM6IERuc1pvbmVPdXRwdXRzO1xuICBwdWJsaWMgZ2V0IGRuc1pvbmVPdXRwdXRzKCk6IERuc1pvbmVPdXRwdXRzIHtcbiAgICByZXR1cm4gdGhpcy5fb3V0cHV0cztcbiAgfVxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZG5zWm9uZU91dHB1dHM7XG4gIH1cbiAgcHVibGljIHJlYWRvbmx5IHpvbmVJZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgYXJuOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSB6b25lTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZVNlcnZlcnM6IHN0cmluZ1tdO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJpbWFyeU5hbWVTZXJ2ZXI6IHN0cmluZztcblxuICAvKipcbiAgICogVlBDcyB0byB3aGljaCB0aGlzIGhvc3RlZCB6b25lIHdpbGwgYmUgYWRkZWRcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSB2cGNzID0gbmV3IEFycmF5PHJvdXRlNTNab25lLlJvdXRlNTNab25lVnBjPigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSByZXNvdXJjZTogcm91dGU1M1pvbmUuUm91dGU1M1pvbmU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERuc1pvbmVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgdmFsaWRhdGVab25lTmFtZSh0aGlzLCBwcm9wcy56b25lTmFtZSk7XG5cbiAgICAvLyBBZGQgYSBkb3QgYXQgdGhlIGVuZCBpZiB0aGUgYWRkVHJhaWxpbmdEb3QgcHJvcGVydHkgaXMgbm90IGZhbHNlLlxuICAgIGNvbnN0IHpvbmVOYW1lID1cbiAgICAgIHByb3BzLmFkZFRyYWlsaW5nRG90ID09PSBmYWxzZSB8fCBwcm9wcy56b25lTmFtZS5lbmRzV2l0aChcIi5cIilcbiAgICAgICAgPyBwcm9wcy56b25lTmFtZVxuICAgICAgICA6IGAke3Byb3BzLnpvbmVOYW1lfS5gO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyByb3V0ZTUzWm9uZS5Sb3V0ZTUzWm9uZSh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIG5hbWU6IHpvbmVOYW1lLFxuICAgICAgY29tbWVudDogcHJvcHMuY29tbWVudCxcbiAgICAgIHZwYzogTGF6eS5hbnlWYWx1ZSh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgdGhpcy52cGNzLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgIDogdGhpcy52cGNzLm1hcCgobikgPT4gcm91dGU1M1pvbmUucm91dGU1M1pvbmVWcGNUb1RlcnJhZm9ybShuKSksXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuem9uZUlkID0gdGhpcy5yZXNvdXJjZS5pZDtcbiAgICB0aGlzLmFybiA9IHRoaXMucmVzb3VyY2UuYXJuO1xuICAgIHRoaXMubmFtZVNlcnZlcnMgPSB0aGlzLnJlc291cmNlLm5hbWVTZXJ2ZXJzO1xuICAgIHRoaXMucHJpbWFyeU5hbWVTZXJ2ZXIgPSB0aGlzLnJlc291cmNlLnByaW1hcnlOYW1lU2VydmVyO1xuICAgIHRoaXMuem9uZU5hbWUgPSBwcm9wcy56b25lTmFtZTtcblxuICAgIGZvciAoY29uc3QgdnBjIG9mIHByb3BzLm5ldHdvcmtzIHx8IFtdKSB7XG4gICAgICB0aGlzLmFkZE5ldHdvcmsodnBjKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHZwYyBvZiBwcm9wcy52cGNzIHx8IFtdKSB7XG4gICAgICB0aGlzLmFkZFZwYyh2cGMpO1xuICAgIH1cblxuICAgIHRoaXMuX291dHB1dHMgPSB7XG4gICAgICB6b25lSWQ6IHRoaXMuem9uZUlkLFxuICAgICAgem9uZU5hbWU6IHRoaXMuem9uZU5hbWUsXG4gICAgICBuYW1lU2VydmVyczogdGhpcy5uYW1lU2VydmVycyxcbiAgICAgIHByaW1hcnlOYW1lU2VydmVyOiB0aGlzLnJlc291cmNlLnByaW1hcnlOYW1lU2VydmVyLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFub3RoZXIgVlBDIHRvIHRoaXMgcHJpdmF0ZSBob3N0ZWQgem9uZS5cbiAgICpcbiAgICogQHBhcmFtIHZwYyB0aGUgb3RoZXIgVlBDIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGRWcGModnBjOiBlYzIuSVZwYykge1xuICAgIHRoaXMudnBjcy5wdXNoKHtcbiAgICAgIHZwY0lkOiB2cGMudnBjSWQsXG4gICAgICB2cGNSZWdpb246IHZwYy5lbnYucmVnaW9uLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbm90aGVyIE5ldHdvcmsgdG8gdGhpcyBwcml2YXRlIGhvc3RlZCB6b25lLlxuICAgKlxuICAgKiBUaGlzIGNvbmZsaWN0cyB3aXRoIHRoZSBgZGVsZWdhdGlvblNldElkYCBhbmQgYW55XG4gICAqIGBhd3Nfcm91dGU1M196b25lX2Fzc29jaWF0aW9uYCBjcmVhdGVkIG91dHNpZGUgdGhpcyBzcGVjLlxuICAgKlxuICAgKiBAcGFyYW0gbmV0d29yayB0aGUgb3RoZXIgTmV0d29yayB0byBhZGQuXG4gICAqIEBkZXByZWNhdGVkIHVzZSBhZGRWcGMgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIGFkZE5ldHdvcmsobmV0d29yazogSU5ldHdvcmspIHtcbiAgICB0aGlzLnZwY3MucHVzaCh7XG4gICAgICB2cGNJZDogbmV0d29yay52cGNJZCxcbiAgICAgIHZwY1JlZ2lvbjogbmV0d29yay5lbnYucmVnaW9uID8/IEF3c1N0YWNrLm9mQXdzQ29uc3RydWN0KG5ldHdvcmspLnJlZ2lvbixcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUhvc3RlZFpvbmVBcm4oXG4gIGNvbnN0cnVjdDogQ29uc3RydWN0LFxuICBob3N0ZWRab25lSWQ6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIHJldHVybiBBd3NTdGFjay5vZkF3c0NvbnN0cnVjdChjb25zdHJ1Y3QpLmZvcm1hdEFybih7XG4gICAgYWNjb3VudDogXCJcIixcbiAgICByZWdpb246IFwiXCIsXG4gICAgc2VydmljZTogXCJyb3V0ZTUzXCIsXG4gICAgcmVzb3VyY2U6IFwiaG9zdGVkem9uZVwiLFxuICAgIHJlc291cmNlTmFtZTogaG9zdGVkWm9uZUlkLFxuICB9KTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSB6b25lIG5hbWUgaXMgdmFsaWQgYnkgUm91dGU1MyBzcGVjaWZjIG5hbWluZyBydWxlcyxcbiAqIGFuZCB0aGF0IHRoZXJlIGlzIG5vIHRyYWlsaW5nIGRvdCBpbiB0aGUgbmFtZS5cbiAqXG4gKiBAcGFyYW0gem9uZU5hbWUgdGhlIHpvbmUgbmFtZSB0byBiZSB2YWxpZGF0ZWQuXG4gKiBAcmV0dXJucyArem9uZU5hbWUrXG4gKiBAdGhyb3dzIFZhbGlkYXRpb25FcnJvciBpZiB0aGUgbmFtZSBpcyBub3QgdmFsaWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVpvbmVOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIHpvbmVOYW1lOiBzdHJpbmcpIHtcbiAgaWYgKHpvbmVOYW1lLmxlbmd0aCA+IDI1NSkge1xuICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICBcInpvbmUgbmFtZSBjYW5ub3QgYmUgbW9yZSB0aGFuIDI1NSBieXRlcyBsb25nXCIsXG4gICAgICBzY29wZSxcbiAgICApO1xuICB9XG4gIGlmICh6b25lTmFtZS5zcGxpdChcIi5cIikuZmluZCgobGFiZWwpID0+IGxhYmVsLmxlbmd0aCA+IDYzKSkge1xuICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICBcInpvbmUgbmFtZSBsYWJlbHMgY2Fubm90IGJlIG1vcmUgdGhhbiA2MyBieXRlcyBsb25nXCIsXG4gICAgICBzY29wZSxcbiAgICApO1xuICB9XG4gIGlmICghem9uZU5hbWUubWF0Y2goL15bYS16MC05IVwiIyQlJicoKSorLC86Ozw9Pj9AW1xcXFxcXF1eX2B7fH1+Li1dKyQvaSkpIHtcbiAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgXCJ6b25lIG5hbWVzIGNhbiBvbmx5IGNvbnRhaW4gYS16LCAwLTksIC0sICEgXFxcIiAjICQgJSAmICcgKCApICogKyAsIC0gLyA6IDsgPCA9ID4gPyBAIFsgIF0gXiBfIGAgeyB8IH0gfiAuXCIsXG4gICAgICBzY29wZSxcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLXpvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2VkZ2UvZG5zLXpvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQXlUQSw4Q0FXQztBQVVELDRDQW1CQzs7QUFqV0Qsc0RBQXNFO0FBQ3RFLGlDQUEwQztBQUUxQywyQkFLYTtBQUNiLHlDQUErQztBQW9KL0M7OztHQUdHO0FBQ0gsTUFBYSxPQUFRLFNBQVEsb0JBQWdCO0lBQzNDLCtDQUErQztJQUMvQzs7Ozs7Ozs7T0FRRztJQUNJLE1BQU0sQ0FBQyxVQUFVLENBQ3RCLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixNQUFjO1FBRWQsTUFBTSxNQUFPLFNBQVEsb0JBQWdCO1lBRW5DLElBQVcsY0FBYztnQkFDdkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3ZCLENBQUM7WUFDRCxJQUFXLE9BQU87Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUM3QixDQUFDO1lBRUQsSUFBVyxRQUFRO2dCQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQzlCLENBQUM7WUFDRCxJQUFXLEdBQUc7Z0JBQ1osT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztZQUM3QixDQUFDO1lBQ0QsSUFBVyxXQUFXO2dCQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO1lBQ3JDLENBQUM7WUFDRCxJQUFXLGlCQUFpQjtnQkFDMUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDO1lBQzNDLENBQUM7WUFFRCxZQUFZLE1BQWlCLEVBQUUsR0FBVztnQkFDeEMsS0FBSyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBZlQsV0FBTSxHQUFHLE1BQU0sQ0FBQztnQkFnQjlCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxpQ0FBa0IsQ0FBQyxrQkFBa0Is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QUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzNELE1BQU0sSUFBSSx3QkFBZSxDQUN2QixvREFBb0QsRUFDcEQsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsZ0RBQWdELENBQUMsRUFBRSxDQUFDO1FBQ3RFLE1BQU0sSUFBSSx3QkFBZSxDQUN2QiwwR0FBMEcsRUFDMUcsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJvdXRlNTNab25lLCBkYXRhQXdzUm91dGU1M1pvbmUgfSBmcm9tIFwiQGNka3RuL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgTGF6eSwgSVJlc29sdmFibGUgfSBmcm9tIFwiY2RrdG5cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBBd3NTdGFjayxcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9cIjtcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCIuLi8uLi9lcnJvcnNcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiLi4vY29tcHV0ZVwiO1xuaW1wb3J0IHsgSU5ldHdvcmsgfSBmcm9tIFwiLi4vbmV0d29ya1wiO1xuXG4vLyByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE1Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1yb3V0ZTUzL2xpYi9ob3N0ZWQtem9uZS50c1xuXG4vKipcbiAqIENvbW1vbiBwcm9wZXJ0aWVzIHRvIGNyZWF0ZSBhIFJvdXRlIDUzIGhvc3RlZCB6b25lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uRG5zWm9uZVByb3BzIGV4dGVuZHMgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGRvbWFpbi4gRm9yIHJlc291cmNlIHJlY29yZCB0eXBlcyB0aGF0IGluY2x1ZGUgYSBkb21haW5cbiAgICogbmFtZSwgc3BlY2lmeSBhIGZ1bGx5IHF1YWxpZmllZCBkb21haW4gbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IHpvbmVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWRkIGEgdHJhaWxpbmcgZG90IHRvIHRoZSB6b25lIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFkZFRyYWlsaW5nRG90PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQW55IGNvbW1lbnRzIHRoYXQgeW91IHdhbnQgdG8gaW5jbHVkZSBhYm91dCB0aGUgaG9zdGVkIHpvbmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGNvbW1lbnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS42MC4wL2RvY3MvcmVzb3VyY2VzL3JvdXRlNTNfem9uZSNmb3JjZV9kZXN0cm95IFJvdXRlNTNab25lI2ZvcmNlX2Rlc3Ryb3l9XG4gICAqL1xuICByZWFkb25seSBmb3JjZURlc3Ryb3k/OiBib29sZWFuIHwgSVJlc29sdmFibGU7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBvZiBhIG5ldyBob3N0ZWQgem9uZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIERuc1pvbmVQcm9wcyBleHRlbmRzIENvbW1vbkRuc1pvbmVQcm9wcyB7XG4gIC8qKlxuICAgKiBBIFZQQyB0aGF0IHlvdSB3YW50IHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgaG9zdGVkIHpvbmUuIFdoZW4geW91IHNwZWNpZnlcbiAgICogdGhpcyBwcm9wZXJ0eSwgYSBwcml2YXRlIGhvc3RlZCB6b25lIHdpbGwgYmUgY3JlYXRlZC5cbiAgICpcbiAgICogWW91IGNhbiBhc3NvY2lhdGUgYWRkaXRpb25hbCBWUENzIHRvIHRoaXMgcHJpdmF0ZSB6b25lIHVzaW5nIGBhZGRWcGModnBjKWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHB1YmxpYyAobm8gVlBDcyBhc3NvY2lhdGVkKVxuICAgKi9cbiAgcmVhZG9ubHkgdnBjcz86IGVjMi5JVnBjW107XG5cbiAgLyoqXG4gICAqIE5ldHdvcmtzIHRoYXQgeW91IHdhbnQgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBob3N0ZWQgem9uZS4gV2hlbiB5b3Ugc3BlY2lmeVxuICAgKiB0aGlzIHByb3BlcnR5LCBhIHByaXZhdGUgaG9zdGVkIHpvbmUgd2lsbCBiZSBjcmVhdGVkLlxuICAgKlxuICAgKiBDb25mbGljdHMgd2l0aCB0aGUgYGRlbGVnYXRpb25TZXRJZGAgYW5kIGFueSBgYXdzX3JvdXRlNTNfem9uZV9hc3NvY2lhdGlvbmBcbiAgICogcmVzb3VyY2Ugc3BlY2lmeWluZyB0aGUgc2FtZSB6b25lIElELlxuICAgKlxuICAgKiBZb3UgY2FuIGFzc29jaWF0ZSBhZGRpdGlvbmFsIG5ldHdvcmtzIHRvIHRoaXMgcHJpdmF0ZSB6b25lIHVzaW5nIGBhZGROZXR3b3JrKG5ldHdvcmspYC5cbiAgICpcbiAgICogQGRlZmF1bHQgcHVibGljIChubyBuZXR3b3JrcyBhc3NvY2lhdGVkKVxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYHZwY3NgIGluc3RlYWRcbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcmtzPzogSU5ldHdvcmtbXTtcblxuICAvKipcbiAgICogRGVsZWdhdGlvbiBzZXQgSUQgZm9yIHRoZSBwcml2YXRlIGhvc3RlZCB6b25lLlxuICAgKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJldXNhYmxlIGRlbGVnYXRpb24gc2V0IHdob3NlIE5TIHJlY29yZHMgeW91IHdhbnQgdG8gYXNzaWduIHRvIHRoZSBob3N0ZWQgem9uZS5cbiAgICpcbiAgICogQ29uZmxpY3RzIHdpdGggdnBjIGFzIGRlbGVnYXRpb24gc2V0cyBjYW4gb25seSBiZSB1c2VkIGZvciBwdWJsaWMgem9uZXMuXG4gICAqL1xuICByZWFkb25seSBkZWxlZ2F0aW9uU2V0SWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3V0cHV0cyB3aGljaCBtYXkgYmUgcmVnaXN0ZXJlZCBmb3Igb3V0cHV0IHZpYSB0aGUgR3JpZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEbnNab25lT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIG9mIHRoZSBob3N0ZWQgem9uZVxuICAgKi9cbiAgcmVhZG9ubHkgem9uZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGhvc3RlZCB6b25lXG4gICAqL1xuICByZWFkb25seSB6b25lTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzZXQgb2YgbmFtZSBzZXJ2ZXJzIGZvciB0aGUgc3BlY2lmaWMgaG9zdGVkIHpvbmUuIEZvciBleGFtcGxlOlxuICAgKiBuczEuZXhhbXBsZS5jb20uXG4gICAqXG4gICAqIFRoaXMgYXR0cmlidXRlIHdpbGwgYmUgdW5kZWZpbmVkIGZvciBwcml2YXRlIGhvc3RlZCB6b25lcyBvciBob3N0ZWQgem9uZXMgaW1wb3J0ZWQgZnJvbSBhbm90aGVyIHN0YWNrLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBuYW1lU2VydmVyczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBSb3V0ZSA1MyBuYW1lIHNlcnZlciB0aGF0IGNyZWF0ZWQgdGhlIFNPQSByZWNvcmQuXG4gICAqL1xuICByZWFkb25seSBwcmltYXJ5TmFtZVNlcnZlcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEltcG9ydGVkIG9yIGNyZWF0ZWQgRE5TIHpvbmUgYXR0cmlidXRlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElEbnNab25lIGV4dGVuZHMgSUF3c0NvbnN0cnVjdCB7XG4gIC8qKiBTdHJvbmdseSB0eXBlZCBvdXRwdXRzICovXG4gIHJlYWRvbmx5IGRuc1pvbmVPdXRwdXRzOiBEbnNab25lT3V0cHV0cztcblxuICAvKipcbiAgICogSUQgb2YgdGhpcyBob3N0ZWQgem9uZSwgc3VjaCBhcyBcIloyM0FCQzRYWVpMMDVCXCJcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgem9uZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZRRE4gb2YgdGhpcyBob3N0ZWQgem9uZVxuICAgKi9cbiAgcmVhZG9ubHkgem9uZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQVJOIG9mIHRoaXMgaG9zdGVkIHpvbmUsIHN1Y2ggYXMgYXJuOiR7UGFydGl0aW9ufTpyb3V0ZTUzOjo6aG9zdGVkem9uZS8ke0lkfVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBhcm46IHN0cmluZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIG5hbWUgc2VydmVycyBpbiBhc3NvY2lhdGVkIChvciBkZWZhdWx0KSBkZWxlZ2F0aW9uIHNldC5cbiAgICogRmluZCBtb3JlIGFib3V0IGRlbGVnYXRpb24gc2V0cyBpbiBbQVdTIGRvY3NdW2RlbGVnYXRpb24gc2V0IGRvY3NdLlxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBzZXQgb2YgbmFtZSBzZXJ2ZXJzIGZvciB0aGUgc3BlY2lmaWMgaG9zdGVkIHpvbmUuIEZvciBleGFtcGxlOlxuICAgKiBuczEuZXhhbXBsZS5jb20uXG4gICAqXG4gICAqIFtkZWxlZ2F0aW9uIHNldCBkb2NzXTogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL1JvdXRlNTMvbGF0ZXN0L0RldmVsb3Blckd1aWRlL2Rucy1jb25maWd1cmluZy1kZWxlZ2F0aW9uLXNldC5odG1sXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWVTZXJ2ZXJzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIFJvdXRlIDUzIG5hbWUgc2VydmVyIHRoYXQgY3JlYXRlZCB0aGUgU09BIHJlY29yZC5cbiAgICovXG4gIHJlYWRvbmx5IHByaW1hcnlOYW1lU2VydmVyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udGFpbmVyIGZvciByZWNvcmRzLCBhbmQgcmVjb3JkcyBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byByb3V0ZSB0cmFmZmljIGZvciBhXG4gKiBzcGVjaWZpYyBkb21haW4sIHN1Y2ggYXMgZXhhbXBsZS5jb20gYW5kIGl0cyBzdWJkb21haW5zIChhY21lLmV4YW1wbGUuY29tLCB6ZW5pdGguZXhhbXBsZS5jb20pXG4gKi9cbmV4cG9ydCBjbGFzcyBEbnNab25lIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElEbnNab25lIHtcbiAgLy8gVE9ETzogQWRkIFwiZnJvbSBHcmlkIExvb2t1cFwiIHN0YXRpYyBtZXRob2RzP1xuICAvKipcbiAgICogSW1wb3J0IGEgUm91dGUgNTMgaG9zdGVkIHpvbmUgZGVmaW5lZCBlaXRoZXIgb3V0c2lkZSBvZiBUZXJyYUNvbnN0cnVjdCwgb3IgZnJvbSBHcmlkIExvb2t1cFxuICAgKlxuICAgKiBVc2Ugd2hlbiBob3N0ZWQgem9uZSBJRCBpcyBrbm93bi5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBwYXJlbnQgQ29uc3RydWN0IGZvciB0aGlzIENvbnN0cnVjdFxuICAgKiBAcGFyYW0gaWQgIHRoZSBsb2dpY2FsIG5hbWUgb2YgdGhpcyBDb25zdHJ1Y3RcbiAgICogQHBhcmFtIHpvbmVJZCB0aGUgSUQgb2YgdGhlIGhvc3RlZCB6b25lIHRvIGltcG9ydFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tWm9uZUlkKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICB6b25lSWQ6IHN0cmluZyxcbiAgKTogSURuc1pvbmUge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJRG5zWm9uZSB7XG4gICAgICBwcml2YXRlIHJlYWRvbmx5IF9vdXRwdXRzOiBEbnNab25lT3V0cHV0cztcbiAgICAgIHB1YmxpYyBnZXQgZG5zWm9uZU91dHB1dHMoKTogRG5zWm9uZU91dHB1dHMge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3V0cHV0cztcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG5zWm9uZU91dHB1dHM7XG4gICAgICB9XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgem9uZUlkID0gem9uZUlkO1xuICAgICAgcHVibGljIGdldCB6b25lTmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlLm5hbWU7XG4gICAgICB9XG4gICAgICBwdWJsaWMgZ2V0IGFybigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlLmFybjtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgbmFtZVNlcnZlcnMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlLm5hbWVTZXJ2ZXJzO1xuICAgICAgfVxuICAgICAgcHVibGljIGdldCBwcmltYXJ5TmFtZVNlcnZlcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlLnByaW1hcnlOYW1lU2VydmVyO1xuICAgICAgfVxuICAgICAgcHJpdmF0ZSByZWFkb25seSBkYXRhc291cmNlOiBkYXRhQXdzUm91dGU1M1pvbmUuRGF0YUF3c1JvdXRlNTNab25lO1xuICAgICAgY29uc3RydWN0b3IoX3Njb3BlOiBDb25zdHJ1Y3QsIF9pZDogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKF9zY29wZSwgX2lkLCB7fSk7XG4gICAgICAgIHRoaXMuZGF0YXNvdXJjZSA9IG5ldyBkYXRhQXdzUm91dGU1M1pvbmUuRGF0YUF3c1JvdXRlNTNab25lKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgXCJSZXNvdXJjZVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHpvbmVJZCxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9vdXRwdXRzID0ge1xuICAgICAgICAgIHpvbmVJZDogem9uZUlkLFxuICAgICAgICAgIHpvbmVOYW1lOiB0aGlzLmRhdGFzb3VyY2UubmFtZSxcbiAgICAgICAgICBuYW1lU2VydmVyczogdGhpcy5kYXRhc291cmNlLm5hbWVTZXJ2ZXJzLFxuICAgICAgICAgIHByaW1hcnlOYW1lU2VydmVyOiB0aGlzLmRhdGFzb3VyY2UucHJpbWFyeU5hbWVTZXJ2ZXIsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX291dHB1dHM6IERuc1pvbmVPdXRwdXRzO1xuICBwdWJsaWMgZ2V0IGRuc1pvbmVPdXRwdXRzKCk6IERuc1pvbmVPdXRwdXRzIHtcbiAgICByZXR1cm4gdGhpcy5fb3V0cHV0cztcbiAgfVxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZG5zWm9uZU91dHB1dHM7XG4gIH1cbiAgcHVibGljIHJlYWRvbmx5IHpvbmVJZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgYXJuOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSB6b25lTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZVNlcnZlcnM6IHN0cmluZ1tdO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJpbWFyeU5hbWVTZXJ2ZXI6IHN0cmluZztcblxuICAvKipcbiAgICogVlBDcyB0byB3aGljaCB0aGlzIGhvc3RlZCB6b25lIHdpbGwgYmUgYWRkZWRcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSB2cGNzID0gbmV3IEFycmF5PHJvdXRlNTNab25lLlJvdXRlNTNab25lVnBjPigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSByZXNvdXJjZTogcm91dGU1M1pvbmUuUm91dGU1M1pvbmU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERuc1pvbmVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgdmFsaWRhdGVab25lTmFtZSh0aGlzLCBwcm9wcy56b25lTmFtZSk7XG5cbiAgICAvLyBBZGQgYSBkb3QgYXQgdGhlIGVuZCBpZiB0aGUgYWRkVHJhaWxpbmdEb3QgcHJvcGVydHkgaXMgbm90IGZhbHNlLlxuICAgIGNvbnN0IHpvbmVOYW1lID1cbiAgICAgIHByb3BzLmFkZFRyYWlsaW5nRG90ID09PSBmYWxzZSB8fCBwcm9wcy56b25lTmFtZS5lbmRzV2l0aChcIi5cIilcbiAgICAgICAgPyBwcm9wcy56b25lTmFtZVxuICAgICAgICA6IGAke3Byb3BzLnpvbmVOYW1lfS5gO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyByb3V0ZTUzWm9uZS5Sb3V0ZTUzWm9uZSh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIG5hbWU6IHpvbmVOYW1lLFxuICAgICAgY29tbWVudDogcHJvcHMuY29tbWVudCxcbiAgICAgIHZwYzogTGF6eS5hbnlWYWx1ZSh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgdGhpcy52cGNzLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgIDogdGhpcy52cGNzLm1hcCgobikgPT4gcm91dGU1M1pvbmUucm91dGU1M1pvbmVWcGNUb1RlcnJhZm9ybShuKSksXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuem9uZUlkID0gdGhpcy5yZXNvdXJjZS5pZDtcbiAgICB0aGlzLmFybiA9IHRoaXMucmVzb3VyY2UuYXJuO1xuICAgIHRoaXMubmFtZVNlcnZlcnMgPSB0aGlzLnJlc291cmNlLm5hbWVTZXJ2ZXJzO1xuICAgIHRoaXMucHJpbWFyeU5hbWVTZXJ2ZXIgPSB0aGlzLnJlc291cmNlLnByaW1hcnlOYW1lU2VydmVyO1xuICAgIHRoaXMuem9uZU5hbWUgPSBwcm9wcy56b25lTmFtZTtcblxuICAgIGZvciAoY29uc3QgdnBjIG9mIHByb3BzLm5ldHdvcmtzIHx8IFtdKSB7XG4gICAgICB0aGlzLmFkZE5ldHdvcmsodnBjKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHZwYyBvZiBwcm9wcy52cGNzIHx8IFtdKSB7XG4gICAgICB0aGlzLmFkZFZwYyh2cGMpO1xuICAgIH1cblxuICAgIHRoaXMuX291dHB1dHMgPSB7XG4gICAgICB6b25lSWQ6IHRoaXMuem9uZUlkLFxuICAgICAgem9uZU5hbWU6IHRoaXMuem9uZU5hbWUsXG4gICAgICBuYW1lU2VydmVyczogdGhpcy5uYW1lU2VydmVycyxcbiAgICAgIHByaW1hcnlOYW1lU2VydmVyOiB0aGlzLnJlc291cmNlLnByaW1hcnlOYW1lU2VydmVyLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFub3RoZXIgVlBDIHRvIHRoaXMgcHJpdmF0ZSBob3N0ZWQgem9uZS5cbiAgICpcbiAgICogQHBhcmFtIHZwYyB0aGUgb3RoZXIgVlBDIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGRWcGModnBjOiBlYzIuSVZwYykge1xuICAgIHRoaXMudnBjcy5wdXNoKHtcbiAgICAgIHZwY0lkOiB2cGMudnBjSWQsXG4gICAgICB2cGNSZWdpb246IHZwYy5lbnYucmVnaW9uLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbm90aGVyIE5ldHdvcmsgdG8gdGhpcyBwcml2YXRlIGhvc3RlZCB6b25lLlxuICAgKlxuICAgKiBUaGlzIGNvbmZsaWN0cyB3aXRoIHRoZSBgZGVsZWdhdGlvblNldElkYCBhbmQgYW55XG4gICAqIGBhd3Nfcm91dGU1M196b25lX2Fzc29jaWF0aW9uYCBjcmVhdGVkIG91dHNpZGUgdGhpcyBzcGVjLlxuICAgKlxuICAgKiBAcGFyYW0gbmV0d29yayB0aGUgb3RoZXIgTmV0d29yayB0byBhZGQuXG4gICAqIEBkZXByZWNhdGVkIHVzZSBhZGRWcGMgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIGFkZE5ldHdvcmsobmV0d29yazogSU5ldHdvcmspIHtcbiAgICB0aGlzLnZwY3MucHVzaCh7XG4gICAgICB2cGNJZDogbmV0d29yay52cGNJZCxcbiAgICAgIHZwY1JlZ2lvbjogbmV0d29yay5lbnYucmVnaW9uID8/IEF3c1N0YWNrLm9mQXdzQ29uc3RydWN0KG5ldHdvcmspLnJlZ2lvbixcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUhvc3RlZFpvbmVBcm4oXG4gIGNvbnN0cnVjdDogQ29uc3RydWN0LFxuICBob3N0ZWRab25lSWQ6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIHJldHVybiBBd3NTdGFjay5vZkF3c0NvbnN0cnVjdChjb25zdHJ1Y3QpLmZvcm1hdEFybih7XG4gICAgYWNjb3VudDogXCJcIixcbiAgICByZWdpb246IFwiXCIsXG4gICAgc2VydmljZTogXCJyb3V0ZTUzXCIsXG4gICAgcmVzb3VyY2U6IFwiaG9zdGVkem9uZVwiLFxuICAgIHJlc291cmNlTmFtZTogaG9zdGVkWm9uZUlkLFxuICB9KTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSB6b25lIG5hbWUgaXMgdmFsaWQgYnkgUm91dGU1MyBzcGVjaWZjIG5hbWluZyBydWxlcyxcbiAqIGFuZCB0aGF0IHRoZXJlIGlzIG5vIHRyYWlsaW5nIGRvdCBpbiB0aGUgbmFtZS5cbiAqXG4gKiBAcGFyYW0gem9uZU5hbWUgdGhlIHpvbmUgbmFtZSB0byBiZSB2YWxpZGF0ZWQuXG4gKiBAcmV0dXJucyArem9uZU5hbWUrXG4gKiBAdGhyb3dzIFZhbGlkYXRpb25FcnJvciBpZiB0aGUgbmFtZSBpcyBub3QgdmFsaWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVpvbmVOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIHpvbmVOYW1lOiBzdHJpbmcpIHtcbiAgaWYgKHpvbmVOYW1lLmxlbmd0aCA+IDI1NSkge1xuICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICBcInpvbmUgbmFtZSBjYW5ub3QgYmUgbW9yZSB0aGFuIDI1NSBieXRlcyBsb25nXCIsXG4gICAgICBzY29wZSxcbiAgICApO1xuICB9XG4gIGlmICh6b25lTmFtZS5zcGxpdChcIi5cIikuZmluZCgobGFiZWwpID0+IGxhYmVsLmxlbmd0aCA+IDYzKSkge1xuICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICBcInpvbmUgbmFtZSBsYWJlbHMgY2Fubm90IGJlIG1vcmUgdGhhbiA2MyBieXRlcyBsb25nXCIsXG4gICAgICBzY29wZSxcbiAgICApO1xuICB9XG4gIGlmICghem9uZU5hbWUubWF0Y2goL15bYS16MC05IVwiIyQlJicoKSorLC86Ozw9Pj9AW1xcXFxcXF1eX2B7fH1+Li1dKyQvaSkpIHtcbiAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgXCJ6b25lIG5hbWVzIGNhbiBvbmx5IGNvbnRhaW4gYS16LCAwLTksIC0sICEgXFxcIiAjICQgJSAmICcgKCApICogKyAsIC0gLyA6IDsgPCA9ID4gPyBAIFsgIF0gXiBfIGAgeyB8IH0gfiAuXCIsXG4gICAgICBzY29wZSxcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cloudfrontFunction } from "@
|
|
1
|
+
import { cloudfrontFunction } from "@cdktn/provider-aws";
|
|
2
2
|
import { Construct } from "constructs";
|
|
3
3
|
import { IKeyValueStore } from ".";
|
|
4
4
|
import { AwsConstructBase, IAwsConstruct, AwsConstructProps } from "../aws-construct";
|
package/lib/aws/edge/function.js
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.FunctionRuntime = exports.FunctionEventType = exports.Function = exports.FunctionCode = void 0;
|
|
5
5
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
6
|
const fs = require("fs");
|
|
7
|
-
const provider_aws_1 = require("@
|
|
7
|
+
const provider_aws_1 = require("@cdktn/provider-aws");
|
|
8
8
|
const aws_construct_1 = require("../aws-construct");
|
|
9
9
|
// ref: https://github.com/aws/aws-cdk/blob/v2.156.0/packages/aws-cdk-lib/aws-cloudfront/lib/function.ts
|
|
10
10
|
/**
|
|
@@ -30,7 +30,7 @@ class FunctionCode {
|
|
|
30
30
|
}
|
|
31
31
|
exports.FunctionCode = FunctionCode;
|
|
32
32
|
_a = JSII_RTTI_SYMBOL_1;
|
|
33
|
-
FunctionCode[_a] = { fqn: "terraconstructs.aws.edge.FunctionCode", version: "0.2.
|
|
33
|
+
FunctionCode[_a] = { fqn: "terraconstructs.aws.edge.FunctionCode", version: "0.2.6" };
|
|
34
34
|
/**
|
|
35
35
|
* Represents the function's source code as inline code
|
|
36
36
|
*/
|
|
@@ -108,7 +108,7 @@ class Function extends aws_construct_1.AwsConstructBase {
|
|
|
108
108
|
}
|
|
109
109
|
exports.Function = Function;
|
|
110
110
|
_b = JSII_RTTI_SYMBOL_1;
|
|
111
|
-
Function[_b] = { fqn: "terraconstructs.aws.edge.Function", version: "0.2.
|
|
111
|
+
Function[_b] = { fqn: "terraconstructs.aws.edge.Function", version: "0.2.6" };
|
|
112
112
|
/**
|
|
113
113
|
* The type of events that a CloudFront function can be invoked in response to.
|
|
114
114
|
*/
|
|
@@ -138,4 +138,4 @@ var FunctionRuntime;
|
|
|
138
138
|
*/
|
|
139
139
|
FunctionRuntime["JS_2_0"] = "cloudfront-js-2.0";
|
|
140
140
|
})(FunctionRuntime || (exports.FunctionRuntime = FunctionRuntime = {}));
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2VkZ2UvZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5QkFBeUI7QUFDekIsc0RBQXlEO0FBR3pELG9EQUkwQjtBQUUxQix3R0FBd0c7QUFFeEc7O0dBRUc7QUFDSCxNQUFzQixZQUFZO0lBQ2hDOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQVk7UUFDbkMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBd0I7UUFDN0MsT0FBTyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixDQUFDOztBQWpCSCxvQ0F1QkM7OztBQVlEOztHQUVHO0FBQ0gsTUFBTSxVQUFXLFNBQVEsWUFBWTtJQUNuQyxZQUFvQixJQUFZO1FBQzlCLEtBQUssRUFBRSxDQUFDO1FBRFUsU0FBSSxHQUFKLElBQUksQ0FBUTtJQUVoQyxDQUFDO0lBRU0sTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sUUFBUyxTQUFRLFlBQVk7SUFDakMsWUFBb0IsT0FBd0I7UUFDMUMsS0FBSyxFQUFFLENBQUM7UUFEVSxZQUFPLEdBQVAsT0FBTyxDQUFpQjtJQUU1QyxDQUFDO0lBRU0sTUFBTTtRQUNYLE9BQU8sRUFBRTthQUNOLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQzthQUMxRCxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsbUVBQW1FO0lBQ2pHLENBQUM7Q0FDRjtBQThGRDs7OztHQUlHO0FBQ0gsTUFBYSxRQUFTLFNBQVEsZ0NBQWdC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SUFDekI7O09BRUc7SUFDSCwrQ0FBNEIsQ0FBQTtJQUU1Qjs7T0FFRztJQUNILCtDQUE0QixDQUFBO0FBQzlCLENBQUMsRUFWVyxlQUFlLCtCQUFmLGVBQWUsUUFVMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGNsb3VkZnJvbnRGdW5jdGlvbiB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgSUtleVZhbHVlU3RvcmUgfSBmcm9tIFwiLlwiO1xuaW1wb3J0IHtcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5cbi8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTU2LjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQvbGliL2Z1bmN0aW9uLnRzXG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgZnVuY3Rpb24ncyBzb3VyY2UgY29kZVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRnVuY3Rpb25Db2RlIHtcbiAgLyoqXG4gICAqIElubGluZSBjb2RlIGZvciBmdW5jdGlvblxuICAgKiBAcmV0dXJucyBjb2RlIG9iamVjdCB3aXRoIGlubGluZSBjb2RlLlxuICAgKiBAcGFyYW0gY29kZSBUaGUgYWN0dWFsIGZ1bmN0aW9uIGNvZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUlubGluZShjb2RlOiBzdHJpbmcpOiBGdW5jdGlvbkNvZGUge1xuICAgIHJldHVybiBuZXcgSW5saW5lQ29kZShjb2RlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb2RlIGZyb20gZXh0ZXJuYWwgZmlsZSBmb3IgZnVuY3Rpb25cbiAgICogQHJldHVybnMgY29kZSBvYmplY3Qgd2l0aCBjb250ZW50cyBmcm9tIGZpbGUuXG4gICAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIGZvciB0aGUgZXh0ZXJuYWwgZmlsZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRmlsZShvcHRpb25zOiBGaWxlQ29kZU9wdGlvbnMpOiBGdW5jdGlvbkNvZGUge1xuICAgIHJldHVybiBuZXcgRmlsZUNvZGUob3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogcmVuZGVycyB0aGUgZnVuY3Rpb24gY29kZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlbmRlcigpOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyB3aGVuIHJlYWRpbmcgdGhlIGZ1bmN0aW9uJ3MgY29kZSBmcm9tIGFuIGV4dGVybmFsIGZpbGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlQ29kZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gcmVhZCB0aGUgY29kZSBmcm9tXG4gICAqL1xuICByZWFkb25seSBmaWxlUGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGZ1bmN0aW9uJ3Mgc291cmNlIGNvZGUgYXMgaW5saW5lIGNvZGVcbiAqL1xuY2xhc3MgSW5saW5lQ29kZSBleHRlbmRzIEZ1bmN0aW9uQ29kZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29kZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW5kZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb2RlO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgZnVuY3Rpb24ncyBzb3VyY2UgY29kZSBsb2FkZWQgZnJvbSBhbiBleHRlcm5hbCBmaWxlXG4gKi9cbmNsYXNzIEZpbGVDb2RlIGV4dGVuZHMgRnVuY3Rpb25Db2RlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvcHRpb25zOiBGaWxlQ29kZU9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIHJlbmRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBmc1xuICAgICAgLnJlYWRGaWxlU3luYyh0aGlzLm9wdGlvbnMuZmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KVxuICAgICAgLnJlcGxhY2UoL1xcJHsvZywgXCIkJCR7XCIpOyAvLyBlc2NhcGUgJHsgdG8gJCR7IGJ1dCBkb24ndCBlc2NhcGUgbmV3bGluZXMgKHVubGlrZSBGbi5yYXdTdHJpbmcpXG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgQ2xvdWRGcm9udCBGdW5jdGlvblxuICpcbiAqIEByZXNvdXJjZSBhd3NfY2xvdWRmcm9udF9mdW5jdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIElGdW5jdGlvbiBleHRlbmRzIElBd3NDb25zdHJ1Y3Qge1xuICAvKiogU3Ryb25nbHkgdHlwZWQgb3V0cHV0c1xuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbk91dHB1dHM6IEZ1bmN0aW9uT3V0cHV0cztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZnVuY3Rpb24uXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uQXJuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3V0cHV0cyBvZiBhbiBleGlzdGluZyBDbG91ZEZyb250IEZ1bmN0aW9uIHRvIGltcG9ydCBpdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBSdW50aW1lIG9mIHRoZSBmdW5jdGlvbi5cbiAgICogQGRlZmF1bHQgRnVuY3Rpb25SdW50aW1lLkpTXzFfMFxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25SdW50aW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgQ2xvdWRGcm9udCBGdW5jdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBBIG5hbWUgdG8gaWRlbnRpZnkgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZVN1ZmZpeDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNvbW1lbnQgdG8gZGVzY3JpYmUgdGhlIGZ1bmN0aW9uLlxuICAgKiBAZGVmYXVsdCAtIHNhbWUgYXMgYGZ1bmN0aW9uTmFtZWBcbiAgICovXG4gIHJlYWRvbmx5IGNvbW1lbnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgY29kZSBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBjb2RlOiBGdW5jdGlvbkNvZGU7XG5cbiAgLyoqXG4gICAqIFRoZSBydW50aW1lIGVudmlyb25tZW50IGZvciB0aGUgZnVuY3Rpb24uXG4gICAqIEBkZWZhdWx0IEZ1bmN0aW9uUnVudGltZS5KU18xXzAgKHVubGVzcyBga2V5VmFsdWVTdG9yZWAgaXMgc3BlY2lmaWVkLCB0aGVuIGBGdW5jdGlvblJ1bnRpbWUuSlNfMl8wYClcbiAgICovXG4gIHJlYWRvbmx5IHJ1bnRpbWU/OiBGdW5jdGlvblJ1bnRpbWU7XG5cbiAgLyoqXG4gICAqIFRoZSBLZXkgVmFsdWUgU3RvcmUgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBmdW5jdGlvbi5cbiAgICpcbiAgICogSW4gb3JkZXIgdG8gYXNzb2NpYXRlIGEgS2V5IFZhbHVlIFN0b3JlLCB0aGUgYHJ1bnRpbWVgIG11c3QgYmVcbiAgICogYGNsb3VkZnJvbnQtanMtMi4wYCBvciBuZXdlci5cbiAgICpcbiAgICogTm90ZTogQVdTIGxpbWl0cyBhc3NvY2lhdGlvbnMgdG8gb25lIGtleSB2YWx1ZSBzdG9yZSBwZXIgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8ga2V5IHZhbHVlIHN0b3JlIGlzIGFzc29jaWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGtleVZhbHVlU3RvcmU/OiBJS2V5VmFsdWVTdG9yZTtcblxuICAvKipcbiAgICogQSBmbGFnIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgcHVibGlzaCB0aGUgZnVuY3Rpb24gdG8gdGhlIExJVkUgc3RhZ2Ugd2hlbiBpdOKAmXMgY3JlYXRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqL1xuICByZWFkb25seSBhdXRvUHVibGlzaD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSBDbG91ZEZyb250IEZ1bmN0aW9uXG4gKlxuICogQHJlc291cmNlIGF3c19jbG91ZGZyb250X2Z1bmN0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBGdW5jdGlvbiBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJRnVuY3Rpb24ge1xuICAvLyBUT0RPOiBBZGQgc3RhdGljIGZyb21Mb29rdXA/XG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogY2xvdWRmcm9udEZ1bmN0aW9uLkNsb3VkZnJvbnRGdW5jdGlvbjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vdXRwdXRzOiBGdW5jdGlvbk91dHB1dHM7XG4gIHB1YmxpYyBnZXQgZnVuY3Rpb25PdXRwdXRzKCk6IEZ1bmN0aW9uT3V0cHV0cyB7XG4gICAgcmV0dXJuIHRoaXMuX291dHB1dHM7XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLmZ1bmN0aW9uT3V0cHV0cztcbiAgfVxuICAvKipcbiAgICogdGhlIG5hbWUgb2YgdGhlIENsb3VkRnJvbnQgZnVuY3Rpb25cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZ1bmN0aW9uTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogdGhlIEFSTiBvZiB0aGUgQ2xvdWRGcm9udCBmdW5jdGlvblxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZnVuY3Rpb25Bcm46IHN0cmluZztcbiAgLyoqXG4gICAqIHRoZSBkZXBsb3ltZW50IHN0YWdlIG9mIHRoZSBDbG91ZEZyb250IGZ1bmN0aW9uXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmdW5jdGlvblN0YWdlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiB0aGUgcnVudGltZSBvZiB0aGUgQ2xvdWRGcm9udCBmdW5jdGlvblxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZnVuY3Rpb25SdW50aW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEZ1bmN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIC8vIFRPRE86IGNvbnNpZGVyIHVzaW5nIHRoZSBgdGhpcy5zdGFjay5tYWtlVW5pcXVlUmVzb3VyY2VOYW1lYCBmdW5jdGlvbj9cbiAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9IGAke3RoaXMuZ3JpZFVVSUR9LSR7cHJvcHMubmFtZVN1ZmZpeH1gO1xuICAgIGlmICh0aGlzLmZ1bmN0aW9uTmFtZS5sZW5ndGggPCAxIHx8IHRoaXMuZnVuY3Rpb25OYW1lLmxlbmd0aCA+IDQwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBGdW5jdGlvbiBuYW1lIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA0MCBjaGFyYWN0ZXJzIGxvbmcuIFJlY2VpdmVkOiAke3RoaXMuZnVuY3Rpb25OYW1lfWAsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIS9eW1xcLlxcLV9BLVphLXowLTldKyQvLnRlc3QodGhpcy5mdW5jdGlvbk5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBGdW5jdGlvbiBuYW1lICR7dGhpcy5mdW5jdGlvbk5hbWV9IGNhbiBjb250YWluIG9ubHkgbGV0dGVycywgbnVtYmVycywgcGVyaW9kcywgaHlwaGVucywgb3IgdW5kZXJzY29yZXMgd2l0aCBubyBzcGFjZXMuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdEZ1bmN0aW9uUnVudGltZSA9IHByb3BzLmtleVZhbHVlU3RvcmVcbiAgICAgID8gRnVuY3Rpb25SdW50aW1lLkpTXzJfMFxuICAgICAgOiBGdW5jdGlvblJ1bnRpbWUuSlNfMV8wO1xuICAgIHRoaXMuZnVuY3Rpb25SdW50aW1lID0gcHJvcHMucnVudGltZSA/PyBkZWZhdWx0RnVuY3Rpb25SdW50aW1lO1xuXG4gICAgaWYgKFxuICAgICAgcHJvcHMua2V5VmFsdWVTdG9yZSAmJlxuICAgICAgdGhpcy5mdW5jdGlvblJ1bnRpbWUgPT09IEZ1bmN0aW9uUnVudGltZS5KU18xXzBcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEtleSBWYWx1ZSBTdG9yZXMgY2Fubm90IGJlIGFzc29jaWF0ZWQgdG8gZnVuY3Rpb25zIHVzaW5nIHRoZSAke3RoaXMuZnVuY3Rpb25SdW50aW1lfSBydW50aW1lYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBjbG91ZGZyb250RnVuY3Rpb24uQ2xvdWRmcm9udEZ1bmN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgIHtcbiAgICAgICAgcHVibGlzaDogcHJvcHMuYXV0b1B1Ymxpc2ggPz8gdHJ1ZSxcbiAgICAgICAgY29kZTogcHJvcHMuY29kZS5yZW5kZXIoKSxcbiAgICAgICAgY29tbWVudDogcHJvcHMuY29tbWVudCA/PyB0aGlzLmZ1bmN0aW9uTmFtZSxcbiAgICAgICAgcnVudGltZTogdGhpcy5mdW5jdGlvblJ1bnRpbWUsXG4gICAgICAgIGtleVZhbHVlU3RvcmVBc3NvY2lhdGlvbnM6IHByb3BzLmtleVZhbHVlU3RvcmVcbiAgICAgICAgICA/IFtwcm9wcy5rZXlWYWx1ZVN0b3JlLmFybl1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgbmFtZTogdGhpcy5mdW5jdGlvbk5hbWUsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLmZ1bmN0aW9uQXJuID0gdGhpcy5yZXNvdXJjZS5hcm47XG4gICAgdGhpcy5mdW5jdGlvblN0YWdlID0gdGhpcy5yZXNvdXJjZS5ldGFnO1xuICAgIHRoaXMuX291dHB1dHMgPSB7XG4gICAgICBuYW1lOiB0aGlzLnJlc291cmNlLm5hbWUsXG4gICAgICBhcm46IHRoaXMucmVzb3VyY2UuYXJuLFxuICAgICAgZnVuY3Rpb25SdW50aW1lOiB0aGlzLnJlc291cmNlLnJ1bnRpbWUsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSB0eXBlIG9mIGV2ZW50cyB0aGF0IGEgQ2xvdWRGcm9udCBmdW5jdGlvbiBjYW4gYmUgaW52b2tlZCBpbiByZXNwb25zZSB0by5cbiAqL1xuZXhwb3J0IGVudW0gRnVuY3Rpb25FdmVudFR5cGUge1xuICAvKipcbiAgICogVGhlIHZpZXdlci1yZXF1ZXN0IHNwZWNpZmllcyB0aGUgaW5jb21pbmcgcmVxdWVzdFxuICAgKi9cbiAgVklFV0VSX1JFUVVFU1QgPSBcInZpZXdlci1yZXF1ZXN0XCIsXG5cbiAgLyoqXG4gICAqIFRoZSB2aWV3ZXItcmVzcG9uc2Ugc3BlY2lmaWVzIHRoZSBvdXRnb2luZyByZXNwb25zZVxuICAgKi9cbiAgVklFV0VSX1JFU1BPTlNFID0gXCJ2aWV3ZXItcmVzcG9uc2VcIixcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgQ2xvdWRGcm9udCBmdW5jdGlvbiBhbmQgZXZlbnQgdHlwZSB3aGVuIHVzaW5nIENGIEZ1bmN0aW9ucy5cbiAqIFRoZSB0eXBlIG9mIHRoZSBgQWRkQmVoYXZpb3JPcHRpb25zLmZ1bmN0aW9uQXNzb2NpYXRpb25zYCBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbkFzc29jaWF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBDbG91ZEZyb250IGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBpbnZva2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb246IElGdW5jdGlvbjtcblxuICAvKiogVGhlIHR5cGUgb2YgZXZlbnQgd2hpY2ggc2hvdWxkIGludm9rZSB0aGUgZnVuY3Rpb24uICovXG4gIHJlYWRvbmx5IGV2ZW50VHlwZTogRnVuY3Rpb25FdmVudFR5cGU7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkRnJvbnQvbGF0ZXN0L0RldmVsb3Blckd1aWRlL2Z1bmN0aW9ucy1qYXZhc2NyaXB0LXJ1bnRpbWUtZmVhdHVyZXMuaHRtbFxuICogaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS42MC4wL2RvY3MvcmVzb3VyY2VzL2Nsb3VkZnJvbnRfZnVuY3Rpb24jcnVudGltZVxuICovXG5leHBvcnQgZW51bSBGdW5jdGlvblJ1bnRpbWUge1xuICAvKipcbiAgICogY2xvdWRmcm9udC1qcy0xLjBcbiAgICovXG4gIEpTXzFfMCA9IFwiY2xvdWRmcm9udC1qcy0xLjBcIixcblxuICAvKipcbiAgICogY2xvdWRmcm9udC1qcy0yLjBcbiAgICovXG4gIEpTXzJfMCA9IFwiY2xvdWRmcm9udC1qcy0yLjBcIixcbn1cbiJdfQ==
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2VkZ2UvZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5QkFBeUI7QUFDekIsc0RBQXlEO0FBR3pELG9EQUkwQjtBQUUxQix3R0FBd0c7QUFFeEc7O0dBRUc7QUFDSCxNQUFzQixZQUFZO0lBQ2hDOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQVk7UUFDbkMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBd0I7UUFDN0MsT0FBTyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixDQUFDOztBQWpCSCxvQ0F1QkM7OztBQVlEOztHQUVHO0FBQ0gsTUFBTSxVQUFXLFNBQVEsWUFBWTtJQUNuQyxZQUFvQixJQUFZO1FBQzlCLEtBQUssRUFBRSxDQUFDO1FBRFUsU0FBSSxHQUFKLElBQUksQ0FBUTtJQUVoQyxDQUFDO0lBRU0sTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sUUFBUyxTQUFRLFlBQVk7SUFDakMsWUFBb0IsT0FBd0I7UUFDMUMsS0FBSyxFQUFFLENBQUM7UUFEVSxZQUFPLEdBQVAsT0FBTyxDQUFpQjtJQUU1QyxDQUFDO0lBRU0sTUFBTTtRQUNYLE9BQU8sRUFBRTthQUNOLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQzthQUMxRCxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsbUVBQW1FO0lBQ2pHLENBQUM7Q0FDRjtBQThGRDs7OztHQUlHO0FBQ0gsTUFBYSxRQUFTLFNBQVEsZ0NBQWdC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SUFDekI7O09BRUc7SUFDSCwrQ0FBNEIsQ0FBQTtJQUU1Qjs7T0FFRztJQUNILCtDQUE0QixDQUFBO0FBQzlCLENBQUMsRUFWVyxlQUFlLCtCQUFmLGVBQWUsUUFVMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGNsb3VkZnJvbnRGdW5jdGlvbiB9IGZyb20gXCJAY2RrdG4vcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgSUtleVZhbHVlU3RvcmUgfSBmcm9tIFwiLlwiO1xuaW1wb3J0IHtcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5cbi8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTU2LjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQvbGliL2Z1bmN0aW9uLnRzXG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgZnVuY3Rpb24ncyBzb3VyY2UgY29kZVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRnVuY3Rpb25Db2RlIHtcbiAgLyoqXG4gICAqIElubGluZSBjb2RlIGZvciBmdW5jdGlvblxuICAgKiBAcmV0dXJucyBjb2RlIG9iamVjdCB3aXRoIGlubGluZSBjb2RlLlxuICAgKiBAcGFyYW0gY29kZSBUaGUgYWN0dWFsIGZ1bmN0aW9uIGNvZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUlubGluZShjb2RlOiBzdHJpbmcpOiBGdW5jdGlvbkNvZGUge1xuICAgIHJldHVybiBuZXcgSW5saW5lQ29kZShjb2RlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb2RlIGZyb20gZXh0ZXJuYWwgZmlsZSBmb3IgZnVuY3Rpb25cbiAgICogQHJldHVybnMgY29kZSBvYmplY3Qgd2l0aCBjb250ZW50cyBmcm9tIGZpbGUuXG4gICAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIGZvciB0aGUgZXh0ZXJuYWwgZmlsZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRmlsZShvcHRpb25zOiBGaWxlQ29kZU9wdGlvbnMpOiBGdW5jdGlvbkNvZGUge1xuICAgIHJldHVybiBuZXcgRmlsZUNvZGUob3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogcmVuZGVycyB0aGUgZnVuY3Rpb24gY29kZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlbmRlcigpOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyB3aGVuIHJlYWRpbmcgdGhlIGZ1bmN0aW9uJ3MgY29kZSBmcm9tIGFuIGV4dGVybmFsIGZpbGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlQ29kZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gcmVhZCB0aGUgY29kZSBmcm9tXG4gICAqL1xuICByZWFkb25seSBmaWxlUGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGZ1bmN0aW9uJ3Mgc291cmNlIGNvZGUgYXMgaW5saW5lIGNvZGVcbiAqL1xuY2xhc3MgSW5saW5lQ29kZSBleHRlbmRzIEZ1bmN0aW9uQ29kZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29kZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW5kZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb2RlO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgZnVuY3Rpb24ncyBzb3VyY2UgY29kZSBsb2FkZWQgZnJvbSBhbiBleHRlcm5hbCBmaWxlXG4gKi9cbmNsYXNzIEZpbGVDb2RlIGV4dGVuZHMgRnVuY3Rpb25Db2RlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvcHRpb25zOiBGaWxlQ29kZU9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIHJlbmRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBmc1xuICAgICAgLnJlYWRGaWxlU3luYyh0aGlzLm9wdGlvbnMuZmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KVxuICAgICAgLnJlcGxhY2UoL1xcJHsvZywgXCIkJCR7XCIpOyAvLyBlc2NhcGUgJHsgdG8gJCR7IGJ1dCBkb24ndCBlc2NhcGUgbmV3bGluZXMgKHVubGlrZSBGbi5yYXdTdHJpbmcpXG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgQ2xvdWRGcm9udCBGdW5jdGlvblxuICpcbiAqIEByZXNvdXJjZSBhd3NfY2xvdWRmcm9udF9mdW5jdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIElGdW5jdGlvbiBleHRlbmRzIElBd3NDb25zdHJ1Y3Qge1xuICAvKiogU3Ryb25nbHkgdHlwZWQgb3V0cHV0c1xuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbk91dHB1dHM6IEZ1bmN0aW9uT3V0cHV0cztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZnVuY3Rpb24uXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uQXJuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3V0cHV0cyBvZiBhbiBleGlzdGluZyBDbG91ZEZyb250IEZ1bmN0aW9uIHRvIGltcG9ydCBpdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBSdW50aW1lIG9mIHRoZSBmdW5jdGlvbi5cbiAgICogQGRlZmF1bHQgRnVuY3Rpb25SdW50aW1lLkpTXzFfMFxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25SdW50aW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgQ2xvdWRGcm9udCBGdW5jdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBBIG5hbWUgdG8gaWRlbnRpZnkgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZVN1ZmZpeDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNvbW1lbnQgdG8gZGVzY3JpYmUgdGhlIGZ1bmN0aW9uLlxuICAgKiBAZGVmYXVsdCAtIHNhbWUgYXMgYGZ1bmN0aW9uTmFtZWBcbiAgICovXG4gIHJlYWRvbmx5IGNvbW1lbnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgY29kZSBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBjb2RlOiBGdW5jdGlvbkNvZGU7XG5cbiAgLyoqXG4gICAqIFRoZSBydW50aW1lIGVudmlyb25tZW50IGZvciB0aGUgZnVuY3Rpb24uXG4gICAqIEBkZWZhdWx0IEZ1bmN0aW9uUnVudGltZS5KU18xXzAgKHVubGVzcyBga2V5VmFsdWVTdG9yZWAgaXMgc3BlY2lmaWVkLCB0aGVuIGBGdW5jdGlvblJ1bnRpbWUuSlNfMl8wYClcbiAgICovXG4gIHJlYWRvbmx5IHJ1bnRpbWU/OiBGdW5jdGlvblJ1bnRpbWU7XG5cbiAgLyoqXG4gICAqIFRoZSBLZXkgVmFsdWUgU3RvcmUgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBmdW5jdGlvbi5cbiAgICpcbiAgICogSW4gb3JkZXIgdG8gYXNzb2NpYXRlIGEgS2V5IFZhbHVlIFN0b3JlLCB0aGUgYHJ1bnRpbWVgIG11c3QgYmVcbiAgICogYGNsb3VkZnJvbnQtanMtMi4wYCBvciBuZXdlci5cbiAgICpcbiAgICogTm90ZTogQVdTIGxpbWl0cyBhc3NvY2lhdGlvbnMgdG8gb25lIGtleSB2YWx1ZSBzdG9yZSBwZXIgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8ga2V5IHZhbHVlIHN0b3JlIGlzIGFzc29jaWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGtleVZhbHVlU3RvcmU/OiBJS2V5VmFsdWVTdG9yZTtcblxuICAvKipcbiAgICogQSBmbGFnIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgcHVibGlzaCB0aGUgZnVuY3Rpb24gdG8gdGhlIExJVkUgc3RhZ2Ugd2hlbiBpdOKAmXMgY3JlYXRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqL1xuICByZWFkb25seSBhdXRvUHVibGlzaD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSBDbG91ZEZyb250IEZ1bmN0aW9uXG4gKlxuICogQHJlc291cmNlIGF3c19jbG91ZGZyb250X2Z1bmN0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBGdW5jdGlvbiBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJRnVuY3Rpb24ge1xuICAvLyBUT0RPOiBBZGQgc3RhdGljIGZyb21Mb29rdXA/XG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogY2xvdWRmcm9udEZ1bmN0aW9uLkNsb3VkZnJvbnRGdW5jdGlvbjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vdXRwdXRzOiBGdW5jdGlvbk91dHB1dHM7XG4gIHB1YmxpYyBnZXQgZnVuY3Rpb25PdXRwdXRzKCk6IEZ1bmN0aW9uT3V0cHV0cyB7XG4gICAgcmV0dXJuIHRoaXMuX291dHB1dHM7XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLmZ1bmN0aW9uT3V0cHV0cztcbiAgfVxuICAvKipcbiAgICogdGhlIG5hbWUgb2YgdGhlIENsb3VkRnJvbnQgZnVuY3Rpb25cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZ1bmN0aW9uTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogdGhlIEFSTiBvZiB0aGUgQ2xvdWRGcm9udCBmdW5jdGlvblxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZnVuY3Rpb25Bcm46IHN0cmluZztcbiAgLyoqXG4gICAqIHRoZSBkZXBsb3ltZW50IHN0YWdlIG9mIHRoZSBDbG91ZEZyb250IGZ1bmN0aW9uXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmdW5jdGlvblN0YWdlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiB0aGUgcnVudGltZSBvZiB0aGUgQ2xvdWRGcm9udCBmdW5jdGlvblxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZnVuY3Rpb25SdW50aW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEZ1bmN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIC8vIFRPRE86IGNvbnNpZGVyIHVzaW5nIHRoZSBgdGhpcy5zdGFjay5tYWtlVW5pcXVlUmVzb3VyY2VOYW1lYCBmdW5jdGlvbj9cbiAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9IGAke3RoaXMuZ3JpZFVVSUR9LSR7cHJvcHMubmFtZVN1ZmZpeH1gO1xuICAgIGlmICh0aGlzLmZ1bmN0aW9uTmFtZS5sZW5ndGggPCAxIHx8IHRoaXMuZnVuY3Rpb25OYW1lLmxlbmd0aCA+IDQwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBGdW5jdGlvbiBuYW1lIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA0MCBjaGFyYWN0ZXJzIGxvbmcuIFJlY2VpdmVkOiAke3RoaXMuZnVuY3Rpb25OYW1lfWAsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIS9eW1xcLlxcLV9BLVphLXowLTldKyQvLnRlc3QodGhpcy5mdW5jdGlvbk5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBGdW5jdGlvbiBuYW1lICR7dGhpcy5mdW5jdGlvbk5hbWV9IGNhbiBjb250YWluIG9ubHkgbGV0dGVycywgbnVtYmVycywgcGVyaW9kcywgaHlwaGVucywgb3IgdW5kZXJzY29yZXMgd2l0aCBubyBzcGFjZXMuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdEZ1bmN0aW9uUnVudGltZSA9IHByb3BzLmtleVZhbHVlU3RvcmVcbiAgICAgID8gRnVuY3Rpb25SdW50aW1lLkpTXzJfMFxuICAgICAgOiBGdW5jdGlvblJ1bnRpbWUuSlNfMV8wO1xuICAgIHRoaXMuZnVuY3Rpb25SdW50aW1lID0gcHJvcHMucnVudGltZSA/PyBkZWZhdWx0RnVuY3Rpb25SdW50aW1lO1xuXG4gICAgaWYgKFxuICAgICAgcHJvcHMua2V5VmFsdWVTdG9yZSAmJlxuICAgICAgdGhpcy5mdW5jdGlvblJ1bnRpbWUgPT09IEZ1bmN0aW9uUnVudGltZS5KU18xXzBcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEtleSBWYWx1ZSBTdG9yZXMgY2Fubm90IGJlIGFzc29jaWF0ZWQgdG8gZnVuY3Rpb25zIHVzaW5nIHRoZSAke3RoaXMuZnVuY3Rpb25SdW50aW1lfSBydW50aW1lYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBjbG91ZGZyb250RnVuY3Rpb24uQ2xvdWRmcm9udEZ1bmN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgIHtcbiAgICAgICAgcHVibGlzaDogcHJvcHMuYXV0b1B1Ymxpc2ggPz8gdHJ1ZSxcbiAgICAgICAgY29kZTogcHJvcHMuY29kZS5yZW5kZXIoKSxcbiAgICAgICAgY29tbWVudDogcHJvcHMuY29tbWVudCA/PyB0aGlzLmZ1bmN0aW9uTmFtZSxcbiAgICAgICAgcnVudGltZTogdGhpcy5mdW5jdGlvblJ1bnRpbWUsXG4gICAgICAgIGtleVZhbHVlU3RvcmVBc3NvY2lhdGlvbnM6IHByb3BzLmtleVZhbHVlU3RvcmVcbiAgICAgICAgICA/IFtwcm9wcy5rZXlWYWx1ZVN0b3JlLmFybl1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgbmFtZTogdGhpcy5mdW5jdGlvbk5hbWUsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLmZ1bmN0aW9uQXJuID0gdGhpcy5yZXNvdXJjZS5hcm47XG4gICAgdGhpcy5mdW5jdGlvblN0YWdlID0gdGhpcy5yZXNvdXJjZS5ldGFnO1xuICAgIHRoaXMuX291dHB1dHMgPSB7XG4gICAgICBuYW1lOiB0aGlzLnJlc291cmNlLm5hbWUsXG4gICAgICBhcm46IHRoaXMucmVzb3VyY2UuYXJuLFxuICAgICAgZnVuY3Rpb25SdW50aW1lOiB0aGlzLnJlc291cmNlLnJ1bnRpbWUsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSB0eXBlIG9mIGV2ZW50cyB0aGF0IGEgQ2xvdWRGcm9udCBmdW5jdGlvbiBjYW4gYmUgaW52b2tlZCBpbiByZXNwb25zZSB0by5cbiAqL1xuZXhwb3J0IGVudW0gRnVuY3Rpb25FdmVudFR5cGUge1xuICAvKipcbiAgICogVGhlIHZpZXdlci1yZXF1ZXN0IHNwZWNpZmllcyB0aGUgaW5jb21pbmcgcmVxdWVzdFxuICAgKi9cbiAgVklFV0VSX1JFUVVFU1QgPSBcInZpZXdlci1yZXF1ZXN0XCIsXG5cbiAgLyoqXG4gICAqIFRoZSB2aWV3ZXItcmVzcG9uc2Ugc3BlY2lmaWVzIHRoZSBvdXRnb2luZyByZXNwb25zZVxuICAgKi9cbiAgVklFV0VSX1JFU1BPTlNFID0gXCJ2aWV3ZXItcmVzcG9uc2VcIixcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgQ2xvdWRGcm9udCBmdW5jdGlvbiBhbmQgZXZlbnQgdHlwZSB3aGVuIHVzaW5nIENGIEZ1bmN0aW9ucy5cbiAqIFRoZSB0eXBlIG9mIHRoZSBgQWRkQmVoYXZpb3JPcHRpb25zLmZ1bmN0aW9uQXNzb2NpYXRpb25zYCBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbkFzc29jaWF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBDbG91ZEZyb250IGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBpbnZva2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb246IElGdW5jdGlvbjtcblxuICAvKiogVGhlIHR5cGUgb2YgZXZlbnQgd2hpY2ggc2hvdWxkIGludm9rZSB0aGUgZnVuY3Rpb24uICovXG4gIHJlYWRvbmx5IGV2ZW50VHlwZTogRnVuY3Rpb25FdmVudFR5cGU7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkRnJvbnQvbGF0ZXN0L0RldmVsb3Blckd1aWRlL2Z1bmN0aW9ucy1qYXZhc2NyaXB0LXJ1bnRpbWUtZmVhdHVyZXMuaHRtbFxuICogaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS42MC4wL2RvY3MvcmVzb3VyY2VzL2Nsb3VkZnJvbnRfZnVuY3Rpb24jcnVudGltZVxuICovXG5leHBvcnQgZW51bSBGdW5jdGlvblJ1bnRpbWUge1xuICAvKipcbiAgICogY2xvdWRmcm9udC1qcy0xLjBcbiAgICovXG4gIEpTXzFfMCA9IFwiY2xvdWRmcm9udC1qcy0xLjBcIixcblxuICAvKipcbiAgICogY2xvdWRmcm9udC1qcy0yLjBcbiAgICovXG4gIEpTXzJfMCA9IFwiY2xvdWRmcm9udC1qcy0yLjBcIixcbn1cbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cloudfrontKeyValueStore, cloudfrontkeyvaluestoreKey } from "@
|
|
1
|
+
import { cloudfrontKeyValueStore, cloudfrontkeyvaluestoreKey } from "@cdktn/provider-aws";
|
|
2
2
|
import { Construct } from "constructs";
|
|
3
3
|
import { AwsConstructBase, IAwsConstruct, AwsConstructProps } from "../aws-construct";
|
|
4
4
|
export interface IStoreData {
|