@aws-cdk/aws-elasticloadbalancing
Advanced tools
Comparing version 0.20.0 to 0.21.0
import cdk = require('@aws-cdk/cdk'); | ||
/** | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html | ||
*/ | ||
export interface CfnLoadBalancerProps { | ||
/** | ||
* ``AWS::ElasticLoadBalancing::LoadBalancer.Listeners`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-listeners | ||
*/ | ||
listeners: Array<CfnLoadBalancer.ListenersProperty | cdk.Token> | cdk.Token; | ||
/** | ||
* ``AWS::ElasticLoadBalancing::LoadBalancer.AccessLoggingPolicy`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-accessloggingpolicy | ||
*/ | ||
accessLoggingPolicy?: CfnLoadBalancer.AccessLoggingPolicyProperty | cdk.Token; | ||
/** | ||
* ``AWS::ElasticLoadBalancing::LoadBalancer.AppCookieStickinessPolicy`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-appcookiestickinesspolicy | ||
*/ | ||
appCookieStickinessPolicy?: Array<CfnLoadBalancer.AppCookieStickinessPolicyProperty | cdk.Token> | cdk.Token; | ||
/** | ||
* ``AWS::ElasticLoadBalancing::LoadBalancer.AvailabilityZones`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-availabilityzones | ||
*/ | ||
availabilityZones?: Array<string | cdk.Token> | cdk.Token; | ||
/** | ||
* ``AWS::ElasticLoadBalancing::LoadBalancer.ConnectionDrainingPolicy`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-connectiondrainingpolicy | ||
*/ | ||
connectionDrainingPolicy?: CfnLoadBalancer.ConnectionDrainingPolicyProperty | cdk.Token; | ||
/** | ||
* ``AWS::ElasticLoadBalancing::LoadBalancer.ConnectionSettings`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-connectionsettings | ||
*/ | ||
connectionSettings?: CfnLoadBalancer.ConnectionSettingsProperty | cdk.Token; | ||
/** | ||
* ``AWS::ElasticLoadBalancing::LoadBalancer.CrossZone`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-crosszone | ||
*/ | ||
crossZone?: boolean | cdk.Token; | ||
/** | ||
* ``AWS::ElasticLoadBalancing::LoadBalancer.HealthCheck`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-healthcheck | ||
*/ | ||
healthCheck?: CfnLoadBalancer.HealthCheckProperty | cdk.Token; | ||
/** | ||
* ``AWS::ElasticLoadBalancing::LoadBalancer.Instances`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-instances | ||
*/ | ||
instances?: Array<string | cdk.Token> | cdk.Token; | ||
/** | ||
* ``AWS::ElasticLoadBalancing::LoadBalancer.LBCookieStickinessPolicy`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-lbcookiestickinesspolicy | ||
*/ | ||
lbCookieStickinessPolicy?: Array<CfnLoadBalancer.LBCookieStickinessPolicyProperty | cdk.Token> | cdk.Token; | ||
/** | ||
* ``AWS::ElasticLoadBalancing::LoadBalancer.LoadBalancerName`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-elbname | ||
*/ | ||
loadBalancerName?: string | cdk.Token; | ||
/** | ||
* ``AWS::ElasticLoadBalancing::LoadBalancer.Policies`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-policies | ||
*/ | ||
policies?: Array<CfnLoadBalancer.PoliciesProperty | cdk.Token> | cdk.Token; | ||
/** | ||
* ``AWS::ElasticLoadBalancing::LoadBalancer.Scheme`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-scheme | ||
*/ | ||
scheme?: string | cdk.Token; | ||
/** | ||
* ``AWS::ElasticLoadBalancing::LoadBalancer.SecurityGroups`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-securitygroups | ||
*/ | ||
securityGroups?: Array<string | cdk.Token> | cdk.Token; | ||
/** | ||
* ``AWS::ElasticLoadBalancing::LoadBalancer.Subnets`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-subnets | ||
*/ | ||
subnets?: Array<string | cdk.Token> | cdk.Token; | ||
/** | ||
* ``AWS::ElasticLoadBalancing::LoadBalancer.Tags`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-elasticloadbalancing-loadbalancer-tags | ||
*/ | ||
tags?: Array<cdk.Tag | cdk.Token> | cdk.Token; | ||
} | ||
/** | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html | ||
*/ | ||
export declare class CfnLoadBalancer extends cdk.Resource { | ||
/** | ||
* The CloudFormation resource type name for this resource class. | ||
*/ | ||
static readonly resourceTypeName = "AWS::ElasticLoadBalancing::LoadBalancer"; | ||
/** | ||
* @cloudformation_attribute CanonicalHostedZoneName | ||
*/ | ||
readonly loadBalancerCanonicalHostedZoneName: string; | ||
/** | ||
* @cloudformation_attribute CanonicalHostedZoneNameID | ||
*/ | ||
readonly loadBalancerCanonicalHostedZoneNameId: string; | ||
/** | ||
* @cloudformation_attribute DNSName | ||
*/ | ||
readonly loadBalancerDnsName: string; | ||
/** | ||
* @cloudformation_attribute SourceSecurityGroup.GroupName | ||
*/ | ||
readonly loadBalancerSourceSecurityGroupGroupName: string; | ||
/** | ||
* @cloudformation_attribute SourceSecurityGroup.OwnerAlias | ||
*/ | ||
readonly loadBalancerSourceSecurityGroupOwnerAlias: string; | ||
readonly loadBalancerName: string; | ||
/** | ||
* Creates a new ``AWS::ElasticLoadBalancing::LoadBalancer``. | ||
* | ||
* @param parent the ``cdk.Construct`` this ``CfnLoadBalancer`` is a part of | ||
* @param name the name of the resource in the ``cdk.Construct`` tree | ||
* @param properties the properties of this ``CfnLoadBalancer`` | ||
*/ | ||
constructor(parent: cdk.Construct, name: string, properties: CfnLoadBalancerProps); | ||
readonly propertyOverrides: CfnLoadBalancerProps; | ||
protected renderProperties(properties: any): { | ||
[key: string]: any; | ||
}; | ||
} | ||
export declare namespace CfnLoadBalancer { | ||
/** | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-accessloggingpolicy.html | ||
*/ | ||
interface AccessLoggingPolicyProperty { | ||
/** | ||
* ``CfnLoadBalancer.AccessLoggingPolicyProperty.EmitInterval`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-accessloggingpolicy.html#cfn-elb-accessloggingpolicy-emitinterval | ||
*/ | ||
emitInterval?: number | cdk.Token; | ||
/** | ||
* ``CfnLoadBalancer.AccessLoggingPolicyProperty.Enabled`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-accessloggingpolicy.html#cfn-elb-accessloggingpolicy-enabled | ||
*/ | ||
enabled: boolean | cdk.Token; | ||
/** | ||
* ``CfnLoadBalancer.AccessLoggingPolicyProperty.S3BucketName`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-accessloggingpolicy.html#cfn-elb-accessloggingpolicy-s3bucketname | ||
*/ | ||
s3BucketName: string | cdk.Token; | ||
/** | ||
* ``CfnLoadBalancer.AccessLoggingPolicyProperty.S3BucketPrefix`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-accessloggingpolicy.html#cfn-elb-accessloggingpolicy-s3bucketprefix | ||
*/ | ||
s3BucketPrefix?: string | cdk.Token; | ||
} | ||
} | ||
export declare namespace CfnLoadBalancer { | ||
/** | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-AppCookieStickinessPolicy.html | ||
*/ | ||
interface AppCookieStickinessPolicyProperty { | ||
/** | ||
* ``CfnLoadBalancer.AppCookieStickinessPolicyProperty.CookieName`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-AppCookieStickinessPolicy.html#cfn-elb-appcookiestickinesspolicy-cookiename | ||
*/ | ||
cookieName: string | cdk.Token; | ||
/** | ||
* ``CfnLoadBalancer.AppCookieStickinessPolicyProperty.PolicyName`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-AppCookieStickinessPolicy.html#cfn-elb-appcookiestickinesspolicy-policyname | ||
*/ | ||
policyName: string | cdk.Token; | ||
} | ||
} | ||
export declare namespace CfnLoadBalancer { | ||
/** | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-connectiondrainingpolicy.html | ||
*/ | ||
interface ConnectionDrainingPolicyProperty { | ||
/** | ||
* ``CfnLoadBalancer.ConnectionDrainingPolicyProperty.Enabled`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-connectiondrainingpolicy.html#cfn-elb-connectiondrainingpolicy-enabled | ||
*/ | ||
enabled: boolean | cdk.Token; | ||
/** | ||
* ``CfnLoadBalancer.ConnectionDrainingPolicyProperty.Timeout`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-connectiondrainingpolicy.html#cfn-elb-connectiondrainingpolicy-timeout | ||
*/ | ||
timeout?: number | cdk.Token; | ||
} | ||
} | ||
export declare namespace CfnLoadBalancer { | ||
/** | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-connectionsettings.html | ||
*/ | ||
interface ConnectionSettingsProperty { | ||
/** | ||
* ``CfnLoadBalancer.ConnectionSettingsProperty.IdleTimeout`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-connectionsettings.html#cfn-elb-connectionsettings-idletimeout | ||
*/ | ||
idleTimeout: number | cdk.Token; | ||
} | ||
} | ||
export declare namespace CfnLoadBalancer { | ||
/** | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-health-check.html | ||
*/ | ||
interface HealthCheckProperty { | ||
/** | ||
* ``CfnLoadBalancer.HealthCheckProperty.HealthyThreshold`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-health-check.html#cfn-elb-healthcheck-healthythreshold | ||
*/ | ||
healthyThreshold: string | cdk.Token; | ||
/** | ||
* ``CfnLoadBalancer.HealthCheckProperty.Interval`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-health-check.html#cfn-elb-healthcheck-interval | ||
*/ | ||
interval: string | cdk.Token; | ||
/** | ||
* ``CfnLoadBalancer.HealthCheckProperty.Target`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-health-check.html#cfn-elb-healthcheck-target | ||
*/ | ||
target: string | cdk.Token; | ||
/** | ||
* ``CfnLoadBalancer.HealthCheckProperty.Timeout`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-health-check.html#cfn-elb-healthcheck-timeout | ||
*/ | ||
timeout: string | cdk.Token; | ||
/** | ||
* ``CfnLoadBalancer.HealthCheckProperty.UnhealthyThreshold`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-health-check.html#cfn-elb-healthcheck-unhealthythreshold | ||
*/ | ||
unhealthyThreshold: string | cdk.Token; | ||
} | ||
} | ||
export declare namespace CfnLoadBalancer { | ||
/** | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-LBCookieStickinessPolicy.html | ||
*/ | ||
interface LBCookieStickinessPolicyProperty { | ||
/** | ||
* ``CfnLoadBalancer.LBCookieStickinessPolicyProperty.CookieExpirationPeriod`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-LBCookieStickinessPolicy.html#cfn-elb-lbcookiestickinesspolicy-cookieexpirationperiod | ||
*/ | ||
cookieExpirationPeriod?: string | cdk.Token; | ||
/** | ||
* ``CfnLoadBalancer.LBCookieStickinessPolicyProperty.PolicyName`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-LBCookieStickinessPolicy.html#cfn-elb-lbcookiestickinesspolicy-policyname | ||
*/ | ||
policyName?: string | cdk.Token; | ||
} | ||
} | ||
export declare namespace CfnLoadBalancer { | ||
/** | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-listener.html | ||
*/ | ||
interface ListenersProperty { | ||
/** | ||
* ``CfnLoadBalancer.ListenersProperty.InstancePort`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-listener.html#cfn-ec2-elb-listener-instanceport | ||
*/ | ||
instancePort: string | cdk.Token; | ||
/** | ||
* ``CfnLoadBalancer.ListenersProperty.InstanceProtocol`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-listener.html#cfn-ec2-elb-listener-instanceprotocol | ||
*/ | ||
instanceProtocol?: string | cdk.Token; | ||
/** | ||
* ``CfnLoadBalancer.ListenersProperty.LoadBalancerPort`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-listener.html#cfn-ec2-elb-listener-loadbalancerport | ||
*/ | ||
loadBalancerPort: string | cdk.Token; | ||
/** | ||
* ``CfnLoadBalancer.ListenersProperty.PolicyNames`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-listener.html#cfn-ec2-elb-listener-policynames | ||
*/ | ||
policyNames?: Array<string | cdk.Token> | cdk.Token; | ||
/** | ||
* ``CfnLoadBalancer.ListenersProperty.Protocol`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-listener.html#cfn-ec2-elb-listener-protocol | ||
*/ | ||
protocol: string | cdk.Token; | ||
/** | ||
* ``CfnLoadBalancer.ListenersProperty.SSLCertificateId`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-listener.html#cfn-ec2-elb-listener-sslcertificateid | ||
*/ | ||
sslCertificateId?: string | cdk.Token; | ||
} | ||
} | ||
export declare namespace CfnLoadBalancer { | ||
/** | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-policy.html | ||
*/ | ||
interface PoliciesProperty { | ||
/** | ||
* ``CfnLoadBalancer.PoliciesProperty.Attributes`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-policy.html#cfn-ec2-elb-policy-attributes | ||
*/ | ||
attributes: Array<object | cdk.Token> | cdk.Token; | ||
/** | ||
* ``CfnLoadBalancer.PoliciesProperty.InstancePorts`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-policy.html#cfn-ec2-elb-policy-instanceports | ||
*/ | ||
instancePorts?: Array<string | cdk.Token> | cdk.Token; | ||
/** | ||
* ``CfnLoadBalancer.PoliciesProperty.LoadBalancerPorts`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-policy.html#cfn-ec2-elb-policy-loadbalancerports | ||
*/ | ||
loadBalancerPorts?: Array<string | cdk.Token> | cdk.Token; | ||
/** | ||
* ``CfnLoadBalancer.PoliciesProperty.PolicyName`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-policy.html#cfn-ec2-elb-policy-policyname | ||
*/ | ||
policyName: string | cdk.Token; | ||
/** | ||
* ``CfnLoadBalancer.PoliciesProperty.PolicyType`` | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-policy.html#cfn-ec2-elb-policy-policytype | ||
*/ | ||
policyType: string | cdk.Token; | ||
} | ||
} | ||
export declare namespace cloudformation { | ||
@@ -89,2 +407,3 @@ /** | ||
/** | ||
* @deprecated "cloudformation.LoadBalancerResource" will be deprecated in a future release in favor of "CfnLoadBalancer" (see https://github.com/awslabs/aws-cdk/issues/878) | ||
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html | ||
@@ -91,0 +410,0 @@ */ |
@@ -33,3 +33,3 @@ "use strict"; | ||
const subnets = props.internetFacing ? props.vpc.publicSubnets : props.vpc.privateSubnets; | ||
this.elb = new elasticloadbalancing_generated_1.cloudformation.LoadBalancerResource(this, 'Resource', { | ||
this.elb = new elasticloadbalancing_generated_1.CfnLoadBalancer(this, 'Resource', { | ||
securityGroups: [this.securityGroup.securityGroupId], | ||
@@ -182,2 +182,2 @@ subnets: subnets.map(s => s.subnetId), | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1iYWxhbmNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxvYWQtYmFsYW5jZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwREFBMkQ7QUFDM0QsOENBQ2tFO0FBQ2xFLG9DQUFxQztBQUNyQyxxRkFBa0U7QUE0S2xFLElBQVkscUJBS1g7QUFMRCxXQUFZLHFCQUFxQjtJQUMvQixvQ0FBVyxDQUFBO0lBQ1gsb0NBQVcsQ0FBQTtJQUNYLHNDQUFhLENBQUE7SUFDYix3Q0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFMVyxxQkFBcUIsR0FBckIsNkJBQXFCLEtBQXJCLDZCQUFxQixRQUtoQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxHQUFHLENBQUMsU0FBUztJQWtCN0MsWUFBWSxNQUFxQixFQUFFLElBQVksRUFBRSxLQUF3QjtRQUN2RSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBYnRCOztXQUVHO1FBQ2Esa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBSWxDLGNBQVMsR0FBNEQsRUFBRSxDQUFDO1FBRXhFLGtCQUFhLEdBQWEsRUFBRSxDQUFDO1FBQzdCLFlBQU8sR0FBMEIsRUFBRSxDQUFDO1FBS25ELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSx1QkFBYSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzNHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxxQkFBVyxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU3RSwwRkFBMEY7UUFDMUYsTUFBTSxPQUFPLEdBQW1CLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFL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QUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtRQUN6RSxRQUFRLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO1FBQzFELE1BQU07UUFDTixPQUFPLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO1FBQ3ZELGtCQUFrQixFQUFFLFdBQVcsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0tBQzlFLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvZGVkZXBsb3kgPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtY29kZWRlcGxveS1hcGknKTtcbmltcG9ydCB7IEFueUlQdjQsIENvbm5lY3Rpb25zLCBJQ29ubmVjdGFibGUsIElQb3J0UmFuZ2UsIFNlY3VyaXR5R3JvdXAsIFNlY3VyaXR5R3JvdXBSZWYsXG4gIFRjcFBvcnQsIFZwY05ldHdvcmtSZWYsIFZwY1N1Ym5ldFJlZiAgfSBmcm9tICdAYXdzLWNkay9hd3MtZWMyJztcbmltcG9ydCBjZGsgPSByZXF1aXJlKCdAYXdzLWNkay9jZGsnKTtcbmltcG9ydCB7IGNsb3VkZm9ybWF0aW9uIH0gZnJvbSAnLi9lbGFzdGljbG9hZGJhbGFuY2luZy5nZW5lcmF0ZWQnO1xuXG4vKipcbiAqIENvbnN0cnVjdGlvbiBwcm9wZXJ0aWVzIGZvciBhIExvYWRCYWxhbmNlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvYWRCYWxhbmNlclByb3BzIHtcbiAgLyoqXG4gICAqIFZQQyBuZXR3b3JrIG9mIHRoZSBmbGVldCBpbnN0YW5jZXNcbiAgICovXG4gIHZwYzogVnBjTmV0d29ya1JlZjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGlzIGFuIGludGVybmV0LWZhY2luZyBMb2FkIEJhbGFuY2VyXG4gICAqXG4gICAqIFRoaXMgY29udHJvbHMgd2hldGhlciB0aGUgTEIgaGFzIGEgcHVibGljIElQIGFkZHJlc3MgYXNzaWduZWQuIEl0IGRvZXNcbiAgICogbm90IG9wZW4gdXAgdGhlIExvYWQgQmFsYW5jZXIncyBzZWN1cml0eSBncm91cHMgdG8gcHVibGljIGludGVybmV0IGFjY2Vzcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGludGVybmV0RmFjaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hhdCBsaXN0ZW5lcnMgdG8gc2V0IHVwIGZvciB0aGUgbG9hZCBiYWxhbmNlci5cbiAgICpcbiAgICogQ2FuIGFsc28gYmUgYWRkZWQgYnkgLmFkZExpc3RlbmVyKClcbiAgICovXG4gIGxpc3RlbmVycz86IExvYWRCYWxhbmNlckxpc3RlbmVyW107XG5cbiAgLyoqXG4gICAqIFdoYXQgdGFyZ2V0cyB0byBsb2FkIGJhbGFuY2UgdG8uXG4gICAqXG4gICAqIENhbiBhbHNvIGJlIGFkZGVkIGJ5IC5hZGRUYXJnZXQoKVxuICAgKi9cbiAgdGFyZ2V0cz86IElMb2FkQmFsYW5jZXJUYXJnZXRbXTtcblxuICAvKipcbiAgICogSGVhbHRoIGNoZWNrIHNldHRpbmdzIGZvciB0aGUgbG9hZCBiYWxhbmNpbmcgdGFyZ2V0cy5cbiAgICpcbiAgICogTm90IHJlcXVpcmVkIGJ1dCByZWNvbW1lbmRlZC5cbiAgICovXG4gIGhlYWx0aENoZWNrPzogSGVhbHRoQ2hlY2s7XG59XG5cbi8qKlxuICogRGVzY3JpYmUgdGhlIGhlYWx0aCBjaGVjayB0byBhIGxvYWQgYmFsYW5jZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIZWFsdGhDaGVjayB7XG4gIC8qKlxuICAgKiBXaGF0IHBvcnQgbnVtYmVyIHRvIGhlYWx0aCBjaGVjayBvblxuICAgKi9cbiAgcG9ydDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGF0IHByb3RvY29sIHRvIHVzZSBmb3IgaGVhbHRoIGNoZWNraW5nXG4gICAqXG4gICAqIFRoZSBwcm90b2NvbCBpcyBhdXRvbWF0aWNhbGx5IGRldGVybWluZWQgZnJvbSB0aGUgcG9ydCBpZiBpdCdzIG5vdCBzdXBwbGllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgQXV0b21hdGljXG4gICAqL1xuICBwcm90b2NvbD86IExvYWRCYWxhbmNpbmdQcm90b2NvbDtcblxuICAvKipcbiAgICogV2hhdCBwYXRoIHRvIHVzZSBmb3IgSFRUUCBvciBIVFRQUyBoZWFsdGggY2hlY2sgKG11c3QgcmV0dXJuIDIwMClcbiAgICpcbiAgICogRm9yIFNTTCBhbmQgVENQIGhlYWx0aCBjaGVja3MsIGFjY2VwdGluZyBjb25uZWN0aW9ucyBpcyBlbm91Z2ggdG8gYmUgY29uc2lkZXJlZFxuICAgKiBoZWFsdGh5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIi9cIlxuICAgKi9cbiAgcGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogQWZ0ZXIgaG93IG1hbnkgc3VjY2Vzc2Z1bCBjaGVja3MgaXMgYW4gaW5zdGFuY2UgY29uc2lkZXJlZCBoZWFsdGh5XG4gICAqXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIGhlYWx0aHlUaHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFmdGVyIGhvdyBtYW55IHVuc3VjY2Vzc2Z1bCBjaGVja3MgaXMgYW4gaW5zdGFuY2UgY29uc2lkZXJlZCB1bmhlYWx0aHlcbiAgICpcbiAgICogQGRlZmF1bHQgNVxuICAgKi9cbiAgdW5oZWFsdGh5VGhyZXNob2xkPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygc2Vjb25kcyBiZXR3ZWVuIGhlYWx0aCBjaGVja3NcbiAgICpcbiAgICogQGRlZmF1bHQgMzBcbiAgICovXG4gIGludGVydmFsPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBIZWFsdGggY2hlY2sgdGltZW91dFxuICAgKlxuICAgKiBAZGVmYXVsdCA1XG4gICAqL1xuICB0aW1lb3V0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSB0aGF0IGlzIGdvaW5nIHRvIGJlIGltcGxlbWVudGVkIGJ5IGNvbnN0cnVjdHMgdGhhdCB5b3UgY2FuIGxvYWQgYmFsYW5jZSB0b1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElMb2FkQmFsYW5jZXJUYXJnZXQgZXh0ZW5kcyBJQ29ubmVjdGFibGUge1xuICAvKipcbiAgICogQXR0YWNoIGxvYWQtYmFsYW5jZWQgdGFyZ2V0IHRvIGEgY2xhc3NpYyBFTEJcbiAgICovXG4gIGF0dGFjaFRvQ2xhc3NpY0xCKGxvYWRCYWxhbmNlcjogTG9hZEJhbGFuY2VyKTogdm9pZDtcbn1cblxuLyoqXG4gKiBBZGQgYSBiYWNrZW5kIHRvIHRoZSBsb2FkIGJhbGFuY2VyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZEJhbGFuY2VyTGlzdGVuZXIge1xuICAvKipcbiAgICogRXh0ZXJuYWwgbGlzdGVuaW5nIHBvcnRcbiAgICovXG4gIGV4dGVybmFsUG9ydDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGF0IHB1YmxpYyBwcm90b2NvbCB0byB1c2UgZm9yIGxvYWQgYmFsYW5jaW5nXG4gICAqXG4gICAqIEVpdGhlciAndGNwJywgJ3NzbCcsICdodHRwJyBvciAnaHR0cHMnLlxuICAgKlxuICAgKiBNYXkgYmUgb21pdHRlZCBpZiB0aGUgZXh0ZXJuYWwgcG9ydCBpcyBlaXRoZXIgODAgb3IgNDQzLlxuICAgKi9cbiAgZXh0ZXJuYWxQcm90b2NvbD86IExvYWRCYWxhbmNpbmdQcm90b2NvbDtcblxuICAvKipcbiAgICogSW5zdGFuY2UgbGlzdGVuaW5nIHBvcnRcbiAgICpcbiAgICogU2FtZSBhcyB0aGUgZXh0ZXJuYWxQb3J0IGlmIG5vdCBzcGVjaWZpZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGV4dGVybmFsUG9ydFxuICAgKi9cbiAgaW50ZXJuYWxQb3J0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGF0IHB1YmxpYyBwcm90b2NvbCB0byB1c2UgZm9yIGxvYWQgYmFsYW5jaW5nXG4gICAqXG4gICAqIEVpdGhlciAndGNwJywgJ3NzbCcsICdodHRwJyBvciAnaHR0cHMnLlxuICAgKlxuICAgKiBNYXkgYmUgb21pdHRlZCBpZiB0aGUgaW50ZXJuYWwgcG9ydCBpcyBlaXRoZXIgODAgb3IgNDQzLlxuICAgKlxuICAgKiBUaGUgaW5zdGFuY2UgcHJvdG9jb2wgaXMgJ3RjcCcgaWYgdGhlIGZyb250LWVuZCBwcm90b2NvbFxuICAgKiBpcyAndGNwJyBvciAnc3NsJywgdGhlIGluc3RhbmNlIHByb3RvY29sIGlzICdodHRwJyBpZiB0aGVcbiAgICogZnJvbnQtZW5kIHByb3RvY29sIGlzICdodHRwcycuXG4gICAqL1xuICBpbnRlcm5hbFByb3RvY29sPzogTG9hZEJhbGFuY2luZ1Byb3RvY29sO1xuXG4gIC8qKlxuICAgKiBTU0wgcG9saWN5IG5hbWVzXG4gICAqL1xuICBwb2xpY3lOYW1lcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJRCBvZiBTU0wgY2VydGlmaWNhdGVcbiAgICovXG4gIHNzbENlcnRpZmljYXRlSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFsbG93IGNvbm5lY3Rpb25zIHRvIHRoZSBsb2FkIGJhbGFuY2VyIGZyb20gdGhlIGdpdmVuIHNldCBvZiBjb25uZWN0aW9uIHBlZXJzXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGNvbm5lY3Rpb25zIHdpbGwgYmUgYWxsb3dlZCBmcm9tIGFueXdoZXJlLiBTZXQgdGhpcyB0byBhbiBlbXB0eSBsaXN0XG4gICAqIHRvIGRlbnkgY29ubmVjdGlvbnMsIG9yIHN1cHBseSBhIGN1c3RvbSBsaXN0IG9mIHBlZXJzIHRvIGFsbG93IGNvbm5lY3Rpb25zIGZyb21cbiAgICogKElQIHJhbmdlcyBvciBzZWN1cml0eSBncm91cHMpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBBbnl3aGVyZVxuICAgKi9cbiAgYWxsb3dDb25uZWN0aW9uc0Zyb20/OiBJQ29ubmVjdGFibGVbXTtcbn1cblxuZXhwb3J0IGVudW0gTG9hZEJhbGFuY2luZ1Byb3RvY29sIHtcbiAgVGNwID0gJ3RjcCcsXG4gIFNzbCA9ICdzc2wnLFxuICBIdHRwID0gJ2h0dHAnLFxuICBIdHRwcyA9ICdodHRwcydcbn1cblxuLyoqXG4gKiBBIGxvYWQgYmFsYW5jZXIgd2l0aCBhIHNpbmdsZSBsaXN0ZW5lclxuICpcbiAqIFJvdXRlcyB0byBhIGZsZWV0IG9mIG9mIGluc3RhbmNlcyBpbiBhIFZQQy5cbiAqL1xuZXhwb3J0IGNsYXNzIExvYWRCYWxhbmNlciBleHRlbmRzIGNkay5Db25zdHJ1Y3QgaW1wbGVtZW50cyBJQ29ubmVjdGFibGUsIGNvZGVkZXBsb3kuSUxvYWRCYWxhbmNlciB7XG4gIC8qKlxuICAgKiBDb250cm9sIGFsbCBjb25uZWN0aW9ucyBmcm9tIGFuZCB0byB0aGlzIGxvYWQgYmFsYW5jZXJcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb25uZWN0aW9uczogQ29ubmVjdGlvbnM7XG5cbiAgLyoqXG4gICAqIEFuIG9iamVjdCBjb250cm9sbGluZyBzcGVjaWZpY2FsbHkgdGhlIGNvbm5lY3Rpb25zIGZvciBlYWNoIGxpc3RlbmVyIGFkZGVkIHRvIHRoaXMgbG9hZCBiYWxhbmNlclxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGxpc3RlbmVyUG9ydHM6IExpc3RlbmVyUG9ydFtdID0gW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlbGI6IGNsb3VkZm9ybWF0aW9uLkxvYWRCYWxhbmNlclJlc291cmNlO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXA6IFNlY3VyaXR5R3JvdXA7XG4gIHByaXZhdGUgcmVhZG9ubHkgbGlzdGVuZXJzOiBjbG91ZGZvcm1hdGlvbi5Mb2FkQmFsYW5jZXJSZXNvdXJjZS5MaXN0ZW5lcnNQcm9wZXJ0eVtdID0gW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpbnN0YW5jZVBvcnRzOiBudW1iZXJbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldHM6IElMb2FkQmFsYW5jZXJUYXJnZXRbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgbmFtZTogc3RyaW5nLCBwcm9wczogTG9hZEJhbGFuY2VyUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIG5hbWUpO1xuXG4gICAgdGhpcy5zZWN1cml0eUdyb3VwID0gbmV3IFNlY3VyaXR5R3JvdXAodGhpcywgJ1NlY3VyaXR5R3JvdXAnLCB7IHZwYzogcHJvcHMudnBjLCBhbGxvd0FsbE91dGJvdW5kOiBmYWxzZSB9KTtcbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gbmV3IENvbm5lY3Rpb25zKHsgc2VjdXJpdHlHcm91cHM6IFt0aGlzLnNlY3VyaXR5R3JvdXBdIH0pO1xuXG4gICAgLy8gRGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIEVMQiBoYXMgcHVibGljIG9yIGludGVybmFsIElQcywgcGljayB0aGUgcmlnaHQgYmFja2VuZCBzdWJuZXRzXG4gICAgY29uc3Qgc3VibmV0czogVnBjU3VibmV0UmVmW10gPSBwcm9wcy5pbnRlcm5ldEZhY2luZyA/IHByb3BzLnZwYy5wdWJsaWNTdWJuZXRzIDogcHJvcHMudnBjLnByaXZhdGVTdWJuZXRzO1xuXG4gICAgdGhpcy5lbGIgPSBuZXcgY2xvdWRmb3JtYXRpb24uTG9hZEJhbGFuY2VyUmVzb3VyY2UodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgc2VjdXJpdHlHcm91cHM6IFsgdGhpcy5zZWN1cml0eUdyb3VwLnNlY3VyaXR5R3JvdXBJZCBdLFxuICAgICAgc3VibmV0czogc3VibmV0cy5tYXAocyA9PiBzLnN1Ym5ldElkKSxcbiAgICAgIGxpc3RlbmVyczogbmV3IGNkay5Ub2tlbigoKSA9PiB0aGlzLmxpc3RlbmVycyksXG4gICAgICBzY2hlbWU6IHByb3BzLmludGVybmV0RmFjaW5nID8gJ2ludGVybmV0LWZhY2luZycgOiAnaW50ZXJuYWwnLFxuICAgICAgaGVhbHRoQ2hlY2s6IHByb3BzLmhlYWx0aENoZWNrICYmIGhlYWx0aENoZWNrVG9KU09OKHByb3BzLmhlYWx0aENoZWNrKSxcbiAgICB9KTtcbiAgICBpZiAocHJvcHMuaW50ZXJuZXRGYWNpbmcpIHtcbiAgICAgIHRoaXMuZWxiLmFkZERlcGVuZGVuY3kocHJvcHMudnBjLmludGVybmV0RGVwZW5kZW5jeSgpKTtcbiAgICB9XG5cbiAgICBpZlVuZGVmaW5lZChwcm9wcy5saXN0ZW5lcnMsIFtdKS5mb3JFYWNoKGIgPT4gdGhpcy5hZGRMaXN0ZW5lcihiKSk7XG4gICAgaWZVbmRlZmluZWQocHJvcHMudGFyZ2V0cywgW10pLmZvckVhY2godCA9PiB0aGlzLmFkZFRhcmdldCh0KSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgYmFja2VuZCB0byB0aGUgbG9hZCBiYWxhbmNlclxuICAgKlxuICAgKiBAcmV0dXJucyBBIExpc3RlbmVyUG9ydCBvYmplY3QgdGhhdCBjb250cm9scyBjb25uZWN0aW9ucyB0byB0aGUgbGlzdGVuZXIgcG9ydFxuICAgKi9cbiAgcHVibGljIGFkZExpc3RlbmVyKGxpc3RlbmVyOiBMb2FkQmFsYW5jZXJMaXN0ZW5lcik6IExpc3RlbmVyUG9ydCB7XG4gICAgY29uc3QgcHJvdG9jb2wgPSBpZlVuZGVmaW5lZExhenkobGlzdGVuZXIuZXh0ZXJuYWxQcm90b2NvbCwgKCkgPT4gd2VsbEtub3duUHJvdG9jb2wobGlzdGVuZXIuZXh0ZXJuYWxQb3J0KSk7XG4gICAgY29uc3QgaW5zdGFuY2VQb3J0ID0gbGlzdGVuZXIuaW50ZXJuYWxQb3J0IHx8IGxpc3RlbmVyLmV4dGVybmFsUG9ydDtcbiAgICBjb25zdCBpbnN0YW5jZVByb3RvY29sID0gaWZVbmRlZmluZWQobGlzdGVuZXIuaW50ZXJuYWxQcm90b2NvbCxcbiAgICAgICAgICAgICAgICAgaWZVbmRlZmluZWQodHJ5V2VsbEtub3duUHJvdG9jb2woaW5zdGFuY2VQb3J0KSxcbiAgICAgICAgICAgICAgICAgaXNIdHRwUHJvdG9jb2wocHJvdG9jb2wpID8gTG9hZEJhbGFuY2luZ1Byb3RvY29sLkh0dHAgOiBMb2FkQmFsYW5jaW5nUHJvdG9jb2wuVGNwKSk7XG5cbiAgICB0aGlzLmxpc3RlbmVycy5wdXNoKHtcbiAgICAgIGxvYWRCYWxhbmNlclBvcnQ6IGxpc3RlbmVyLmV4dGVybmFsUG9ydC50b1N0cmluZygpLFxuICAgICAgcHJvdG9jb2wsXG4gICAgICBpbnN0YW5jZVBvcnQ6IGluc3RhbmNlUG9ydC50b1N0cmluZygpLFxuICAgICAgaW5zdGFuY2VQcm90b2NvbCxcbiAgICAgIHNzbENlcnRpZmljYXRlSWQ6IGxpc3RlbmVyLnNzbENlcnRpZmljYXRlSWQsXG4gICAgICBwb2xpY3lOYW1lczogbGlzdGVuZXIucG9saWN5TmFtZXNcbiAgICB9KTtcblxuICAgIGNvbnN0IHBvcnQgPSBuZXcgTGlzdGVuZXJQb3J0KHRoaXMuc2VjdXJpdHlHcm91cCwgbmV3IFRjcFBvcnQobGlzdGVuZXIuZXh0ZXJuYWxQb3J0KSk7XG5cbiAgICAvLyBBbGxvdyBjb25uZWN0aW9ucyBvbiB0aGUgcHVibGljIHBvcnQgZm9yIGFsbCBzdXBwbGllZCBwZWVycyAoZGVmYXVsdDogZXZlcnlvbmUpXG4gICAgaWZVbmRlZmluZWQobGlzdGVuZXIuYWxsb3dDb25uZWN0aW9uc0Zyb20sIFtuZXcgQW55SVB2NCgpXSkuZm9yRWFjaChwZWVyID0+IHtcbiAgICAgIHBvcnQuY29ubmVjdGlvbnMuYWxsb3dEZWZhdWx0UG9ydEZyb20ocGVlciwgYERlZmF1bHQgcnVsZSBhbGxvdyBvbiAke2xpc3RlbmVyLmV4dGVybmFsUG9ydH1gKTtcbiAgICB9KTtcblxuICAgIHRoaXMubmV3SW5zdGFuY2VQb3J0KGluc3RhbmNlUG9ydCk7XG5cbiAgICAvLyBLZWVwIHRyYWNrIHVzaW5nIGFycmF5IHNvIHVzZXIgY2FuIGdldCB0byB0aGVtIGV2ZW4gaWYgdGhleSB3ZXJlIGFsbCBzdXBwbGllZCBpbiB0aGUgY29uc3RydWN0b3JcbiAgICB0aGlzLmxpc3RlbmVyUG9ydHMucHVzaChwb3J0KTtcblxuICAgIHJldHVybiBwb3J0O1xuICB9XG5cbiAgcHVibGljIGFkZFRhcmdldCh0YXJnZXQ6IElMb2FkQmFsYW5jZXJUYXJnZXQpIHtcbiAgICB0YXJnZXQuYXR0YWNoVG9DbGFzc2ljTEIodGhpcyk7XG5cbiAgICB0aGlzLm5ld1RhcmdldCh0YXJnZXQpO1xuICB9XG5cbiAgcHVibGljIGdldCBsb2FkQmFsYW5jZXJOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmVsYi5yZWY7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvYWRCYWxhbmNlckNhbm9uaWNhbEhvc3RlZFpvbmVOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmVsYi5sb2FkQmFsYW5jZXJDYW5vbmljYWxIb3N0ZWRab25lTmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9hZEJhbGFuY2VyRG5zTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGIubG9hZEJhbGFuY2VyRG5zTmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9hZEJhbGFuY2VyU291cmNlU2VjdXJpdHlHcm91cEdyb3VwTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGIubG9hZEJhbGFuY2VyU291cmNlU2VjdXJpdHlHcm91cEdyb3VwTmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9hZEJhbGFuY2VyU291cmNlU2VjdXJpdHlHcm91cE93bmVyQWxpYXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxiLmxvYWRCYWxhbmNlclNvdXJjZVNlY3VyaXR5R3JvdXBPd25lckFsaWFzO1xuICB9XG5cbiAgcHVibGljIGFzQ29kZURlcGxveUxvYWRCYWxhbmNlcigpOiBjb2RlZGVwbG95LklMb2FkQmFsYW5jZXJQcm9wcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdlbmVyYXRpb246IGNvZGVkZXBsb3kuTG9hZEJhbGFuY2VyR2VuZXJhdGlvbi5GaXJzdCxcbiAgICAgIG5hbWU6IHRoaXMubG9hZEJhbGFuY2VyTmFtZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93IGNvbm5lY3Rpb25zIHRvIGFsbCBleGlzdGluZyB0YXJnZXRzIG9uIG5ldyBpbnN0YW5jZSBwb3J0XG4gICAqL1xuICBwcml2YXRlIG5ld0luc3RhbmNlUG9ydChpbnN0YW5jZVBvcnQ6IG51bWJlcikge1xuICAgIHRoaXMudGFyZ2V0cy5mb3JFYWNoKHQgPT4gdGhpcy5hbGxvd1RhcmdldENvbm5lY3Rpb24oaW5zdGFuY2VQb3J0LCB0KSk7XG5cbiAgICAvLyBLZWVwIHRyYWNrIG9mIHBvcnQgZm9yIGZ1dHVyZSB0YXJnZXRzXG4gICAgdGhpcy5pbnN0YW5jZVBvcnRzLnB1c2goaW5zdGFuY2VQb3J0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvdyBjb25uZWN0aW9ucyB0byB0YXJnZXQgb24gYWxsIGV4aXN0aW5nIGluc3RhbmNlIHBvcnRzXG4gICAqL1xuICBwcml2YXRlIG5ld1RhcmdldCh0YXJnZXQ6IElMb2FkQmFsYW5jZXJUYXJnZXQpIHtcbiAgICB0aGlzLmluc3RhbmNlUG9ydHMuZm9yRWFjaChwID0+IHRoaXMuYWxsb3dUYXJnZXRDb25uZWN0aW9uKHAsIHRhcmdldCkpO1xuXG4gICAgLy8gS2VlcCB0cmFjayBvZiB0YXJnZXQgZm9yIGZ1dHVyZSBsaXN0ZW5lcnMuXG4gICAgdGhpcy50YXJnZXRzLnB1c2godGFyZ2V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvdyBjb25uZWN0aW9ucyBmb3IgYSBzaW5nbGUgKHBvcnQsIHRhcmdldCkgcGFpclxuICAgKi9cbiAgcHJpdmF0ZSBhbGxvd1RhcmdldENvbm5lY3Rpb24oaW5zdGFuY2VQb3J0OiBudW1iZXIsIHRhcmdldDogSUxvYWRCYWxhbmNlclRhcmdldCkge1xuICAgIHRoaXMuY29ubmVjdGlvbnMuYWxsb3dUbyhcbiAgICAgIHRhcmdldCxcbiAgICAgIG5ldyBUY3BQb3J0KGluc3RhbmNlUG9ydCksXG4gICAgICBgUG9ydCAke2luc3RhbmNlUG9ydH0gTEIgdG8gZmxlZXRgKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlZmVyZW5jZSB0byBhIGxpc3RlbmVyJ3MgcG9ydCBqdXN0IGNyZWF0ZWQuXG4gKlxuICogVGhpcyBpbXBsZW1lbnRzIElDb25uZWN0YWJsZSB3aXRoIGEgZGVmYXVsdCBwb3J0ICh0aGUgcG9ydCB0aGF0IGFuIEVMQlxuICogbGlzdGVuZXIgd2FzIGp1c3QgY3JlYXRlZCBvbikgZm9yIGEgZ2l2ZW4gc2VjdXJpdHkgZ3JvdXAgc28gdGhhdCBpdCBjYW4gYmVcbiAqIGNvbnZlbmllbnRseSB1c2VkIGp1c3QgbGlrZSBhbnkgQ29ubmVjdGFibGUuIEUuZzpcbiAqXG4gKiAgICBjb25zdCBsaXN0ZW5lciA9IGVsYi5hZGRMaXN0ZW5lciguLi4pO1xuICpcbiAqICAgIGxpc3RlbmVyLmNvbm5lY3Rpb25zLmFsbG93RGVmYXVsdFBvcnRGcm9tQW55SVB2NCgpO1xuICogICAgLy8gb3JcbiAqICAgIGluc3RhbmNlLmNvbm5lY3Rpb25zLmFsbG93VG9EZWZhdWx0UG9ydChsaXN0ZW5lcik7XG4gKi9cbmV4cG9ydCBjbGFzcyBMaXN0ZW5lclBvcnQgaW1wbGVtZW50cyBJQ29ubmVjdGFibGUge1xuICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdGlvbnM6IENvbm5lY3Rpb25zO1xuXG4gIGNvbnN0cnVjdG9yKHNlY3VyaXR5R3JvdXA6IFNlY3VyaXR5R3JvdXBSZWYsIGRlZmF1bHRQb3J0UmFuZ2U6IElQb3J0UmFuZ2UpIHtcbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gbmV3IENvbm5lY3Rpb25zKHsgc2VjdXJpdHlHcm91cHM6IFtzZWN1cml0eUdyb3VwXSAsIGRlZmF1bHRQb3J0UmFuZ2UgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gd2VsbEtub3duUHJvdG9jb2wocG9ydDogbnVtYmVyKTogTG9hZEJhbGFuY2luZ1Byb3RvY29sIHtcbiAgY29uc3QgcHJvdG8gPSB0cnlXZWxsS25vd25Qcm90b2NvbChwb3J0KTtcbiAgaWYgKCFwcm90bykge1xuICAgIHRocm93IG5ldyBFcnJvcihgUGxlYXNlIHN1cHBseSBwcm90b2NvbCB0byBnbyB3aXRoIHBvcnQgJHtwb3J0fWApO1xuICB9XG4gIHJldHVybiBwcm90bztcbn1cblxuZnVuY3Rpb24gdHJ5V2VsbEtub3duUHJvdG9jb2wocG9ydDogbnVtYmVyKTogTG9hZEJhbGFuY2luZ1Byb3RvY29sIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHBvcnQgPT09IDgwKSB7IHJldHVybiBMb2FkQmFsYW5jaW5nUHJvdG9jb2wuSHR0cDsgfVxuICBpZiAocG9ydCA9PT0gNDQzKSB7IHJldHVybiBMb2FkQmFsYW5jaW5nUHJvdG9jb2wuSHR0cHM7IH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaXNIdHRwUHJvdG9jb2wocHJvdG86IExvYWRCYWxhbmNpbmdQcm90b2NvbCk6IGJvb2xlYW4ge1xuICByZXR1cm4gcHJvdG8gPT09IExvYWRCYWxhbmNpbmdQcm90b2NvbC5IdHRwcyB8fCBwcm90byA9PT0gTG9hZEJhbGFuY2luZ1Byb3RvY29sLkh0dHA7XG59XG5cbmZ1bmN0aW9uIGlmVW5kZWZpbmVkPFQ+KHg6IFQgfCB1bmRlZmluZWQsIGRlZjogVCk6IFQge1xuICByZXR1cm4geCAhPSBudWxsID8geCA6IGRlZjtcbn1cblxuZnVuY3Rpb24gaWZVbmRlZmluZWRMYXp5PFQ+KHg6IFQgfCB1bmRlZmluZWQsIGRlZjogKCkgPT4gVCk6IFQge1xuICByZXR1cm4geCAhPSBudWxsID8geCA6IGRlZigpO1xufVxuXG4vKipcbiAqIFR1cm4gaGVhbHRoIGNoZWNrIHBhcmFtZXRlcnMgaW50byBhIHBhcmFtZXRlciBibG9iIGZvciB0aGUgTEJcbiAqL1xuZnVuY3Rpb24gaGVhbHRoQ2hlY2tUb0pTT04oaGVhbHRoQ2hlY2s6IEhlYWx0aENoZWNrKTogY2xvdWRmb3JtYXRpb24uTG9hZEJhbGFuY2VyUmVzb3VyY2UuSGVhbHRoQ2hlY2tQcm9wZXJ0eSB7XG4gIGNvbnN0IHByb3RvY29sID0gaWZVbmRlZmluZWQoaGVhbHRoQ2hlY2sucHJvdG9jb2wsXG4gICAgICAgICAgIGlmVW5kZWZpbmVkKHRyeVdlbGxLbm93blByb3RvY29sKGhlYWx0aENoZWNrLnBvcnQpLFxuICAgICAgICAgICBMb2FkQmFsYW5jaW5nUHJvdG9jb2wuVGNwKSk7XG5cbiAgY29uc3QgcGF0aCA9IHByb3RvY29sID09PSBMb2FkQmFsYW5jaW5nUHJvdG9jb2wuSHR0cCB8fCBwcm90b2NvbCA9PT0gTG9hZEJhbGFuY2luZ1Byb3RvY29sLkh0dHBzID8gaWZVbmRlZmluZWQoaGVhbHRoQ2hlY2sucGF0aCwgXCIvXCIpIDogXCJcIjtcblxuICBjb25zdCB0YXJnZXQgPSBgJHtwcm90b2NvbC50b1VwcGVyQ2FzZSgpfToke2hlYWx0aENoZWNrLnBvcnR9JHtwYXRofWA7XG5cbiAgcmV0dXJuIHtcbiAgICBoZWFsdGh5VGhyZXNob2xkOiBpZlVuZGVmaW5lZChoZWFsdGhDaGVjay5oZWFsdGh5VGhyZXNob2xkLCAyKS50b1N0cmluZygpLFxuICAgIGludGVydmFsOiBpZlVuZGVmaW5lZChoZWFsdGhDaGVjay5pbnRlcnZhbCwgMzApLnRvU3RyaW5nKCksXG4gICAgdGFyZ2V0LFxuICAgIHRpbWVvdXQ6IGlmVW5kZWZpbmVkKGhlYWx0aENoZWNrLnRpbWVvdXQsIDUpLnRvU3RyaW5nKCksXG4gICAgdW5oZWFsdGh5VGhyZXNob2xkOiBpZlVuZGVmaW5lZChoZWFsdGhDaGVjay51bmhlYWx0aHlUaHJlc2hvbGQsIDUpLnRvU3RyaW5nKCksXG4gIH07XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1iYWxhbmNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxvYWQtYmFsYW5jZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwREFBMkQ7QUFDM0QsOENBQ2tFO0FBQ2xFLG9DQUFxQztBQUNyQyxxRkFBbUU7QUE0S25FLElBQVkscUJBS1g7QUFMRCxXQUFZLHFCQUFxQjtJQUMvQixvQ0FBVyxDQUFBO0lBQ1gsb0NBQVcsQ0FBQTtJQUNYLHNDQUFhLENBQUE7SUFDYix3Q0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFMVyxxQkFBcUIsR0FBckIsNkJBQXFCLEtBQXJCLDZCQUFxQixRQUtoQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxHQUFHLENBQUMsU0FBUztJQWtCN0MsWUFBWSxNQUFxQixFQUFFLElBQVksRUFBRSxLQUF3QjtRQUN2RSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBYnRCOztXQUVHO1FBQ2Esa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBSWxDLGNBQVMsR0FBd0MsRUFBRSxDQUFDO1FBRXBELGtCQUFhLEdBQWEsRUFBRSxDQUFDO1FBQzdCLFlBQU8sR0FBMEIsRUFBRSxDQUFDO1FBS25ELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSx1QkFBYSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzNHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxxQkFBVyxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU3RSwwRkFBMEY7UUFDMUYsTUFBTSxPQUFPLEdBQW1CLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFL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QyxDQUFDLFFBQVEsRUFBRTtRQUN6RSxRQUFRLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO1FBQzFELE1BQU07UUFDTixPQUFPLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO1FBQ3ZELGtCQUFrQixFQUFFLFdBQVcsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0tBQzlFLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvZGVkZXBsb3kgPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtY29kZWRlcGxveS1hcGknKTtcbmltcG9ydCB7IEFueUlQdjQsIENvbm5lY3Rpb25zLCBJQ29ubmVjdGFibGUsIElQb3J0UmFuZ2UsIFNlY3VyaXR5R3JvdXAsIFNlY3VyaXR5R3JvdXBSZWYsXG4gIFRjcFBvcnQsIFZwY05ldHdvcmtSZWYsIFZwY1N1Ym5ldFJlZiAgfSBmcm9tICdAYXdzLWNkay9hd3MtZWMyJztcbmltcG9ydCBjZGsgPSByZXF1aXJlKCdAYXdzLWNkay9jZGsnKTtcbmltcG9ydCB7IENmbkxvYWRCYWxhbmNlciB9IGZyb20gJy4vZWxhc3RpY2xvYWRiYWxhbmNpbmcuZ2VuZXJhdGVkJztcblxuLyoqXG4gKiBDb25zdHJ1Y3Rpb24gcHJvcGVydGllcyBmb3IgYSBMb2FkQmFsYW5jZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2FkQmFsYW5jZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBWUEMgbmV0d29yayBvZiB0aGUgZmxlZXQgaW5zdGFuY2VzXG4gICAqL1xuICB2cGM6IFZwY05ldHdvcmtSZWY7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBpcyBhbiBpbnRlcm5ldC1mYWNpbmcgTG9hZCBCYWxhbmNlclxuICAgKlxuICAgKiBUaGlzIGNvbnRyb2xzIHdoZXRoZXIgdGhlIExCIGhhcyBhIHB1YmxpYyBJUCBhZGRyZXNzIGFzc2lnbmVkLiBJdCBkb2VzXG4gICAqIG5vdCBvcGVuIHVwIHRoZSBMb2FkIEJhbGFuY2VyJ3Mgc2VjdXJpdHkgZ3JvdXBzIHRvIHB1YmxpYyBpbnRlcm5ldCBhY2Nlc3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBpbnRlcm5ldEZhY2luZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoYXQgbGlzdGVuZXJzIHRvIHNldCB1cCBmb3IgdGhlIGxvYWQgYmFsYW5jZXIuXG4gICAqXG4gICAqIENhbiBhbHNvIGJlIGFkZGVkIGJ5IC5hZGRMaXN0ZW5lcigpXG4gICAqL1xuICBsaXN0ZW5lcnM/OiBMb2FkQmFsYW5jZXJMaXN0ZW5lcltdO1xuXG4gIC8qKlxuICAgKiBXaGF0IHRhcmdldHMgdG8gbG9hZCBiYWxhbmNlIHRvLlxuICAgKlxuICAgKiBDYW4gYWxzbyBiZSBhZGRlZCBieSAuYWRkVGFyZ2V0KClcbiAgICovXG4gIHRhcmdldHM/OiBJTG9hZEJhbGFuY2VyVGFyZ2V0W107XG5cbiAgLyoqXG4gICAqIEhlYWx0aCBjaGVjayBzZXR0aW5ncyBmb3IgdGhlIGxvYWQgYmFsYW5jaW5nIHRhcmdldHMuXG4gICAqXG4gICAqIE5vdCByZXF1aXJlZCBidXQgcmVjb21tZW5kZWQuXG4gICAqL1xuICBoZWFsdGhDaGVjaz86IEhlYWx0aENoZWNrO1xufVxuXG4vKipcbiAqIERlc2NyaWJlIHRoZSBoZWFsdGggY2hlY2sgdG8gYSBsb2FkIGJhbGFuY2VyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGVhbHRoQ2hlY2sge1xuICAvKipcbiAgICogV2hhdCBwb3J0IG51bWJlciB0byBoZWFsdGggY2hlY2sgb25cbiAgICovXG4gIHBvcnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogV2hhdCBwcm90b2NvbCB0byB1c2UgZm9yIGhlYWx0aCBjaGVja2luZ1xuICAgKlxuICAgKiBUaGUgcHJvdG9jb2wgaXMgYXV0b21hdGljYWxseSBkZXRlcm1pbmVkIGZyb20gdGhlIHBvcnQgaWYgaXQncyBub3Qgc3VwcGxpZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IEF1dG9tYXRpY1xuICAgKi9cbiAgcHJvdG9jb2w/OiBMb2FkQmFsYW5jaW5nUHJvdG9jb2w7XG5cbiAgLyoqXG4gICAqIFdoYXQgcGF0aCB0byB1c2UgZm9yIEhUVFAgb3IgSFRUUFMgaGVhbHRoIGNoZWNrIChtdXN0IHJldHVybiAyMDApXG4gICAqXG4gICAqIEZvciBTU0wgYW5kIFRDUCBoZWFsdGggY2hlY2tzLCBhY2NlcHRpbmcgY29ubmVjdGlvbnMgaXMgZW5vdWdoIHRvIGJlIGNvbnNpZGVyZWRcbiAgICogaGVhbHRoeS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCIvXCJcbiAgICovXG4gIHBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFmdGVyIGhvdyBtYW55IHN1Y2Nlc3NmdWwgY2hlY2tzIGlzIGFuIGluc3RhbmNlIGNvbnNpZGVyZWQgaGVhbHRoeVxuICAgKlxuICAgKiBAZGVmYXVsdCAyXG4gICAqL1xuICBoZWFsdGh5VGhyZXNob2xkPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBZnRlciBob3cgbWFueSB1bnN1Y2Nlc3NmdWwgY2hlY2tzIGlzIGFuIGluc3RhbmNlIGNvbnNpZGVyZWQgdW5oZWFsdGh5XG4gICAqXG4gICAqIEBkZWZhdWx0IDVcbiAgICovXG4gIHVuaGVhbHRoeVRocmVzaG9sZD86IG51bWJlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIHNlY29uZHMgYmV0d2VlbiBoZWFsdGggY2hlY2tzXG4gICAqXG4gICAqIEBkZWZhdWx0IDMwXG4gICAqL1xuICBpbnRlcnZhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogSGVhbHRoIGNoZWNrIHRpbWVvdXRcbiAgICpcbiAgICogQGRlZmF1bHQgNVxuICAgKi9cbiAgdGltZW91dD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgdGhhdCBpcyBnb2luZyB0byBiZSBpbXBsZW1lbnRlZCBieSBjb25zdHJ1Y3RzIHRoYXQgeW91IGNhbiBsb2FkIGJhbGFuY2UgdG9cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTG9hZEJhbGFuY2VyVGFyZ2V0IGV4dGVuZHMgSUNvbm5lY3RhYmxlIHtcbiAgLyoqXG4gICAqIEF0dGFjaCBsb2FkLWJhbGFuY2VkIHRhcmdldCB0byBhIGNsYXNzaWMgRUxCXG4gICAqL1xuICBhdHRhY2hUb0NsYXNzaWNMQihsb2FkQmFsYW5jZXI6IExvYWRCYWxhbmNlcik6IHZvaWQ7XG59XG5cbi8qKlxuICogQWRkIGEgYmFja2VuZCB0byB0aGUgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvYWRCYWxhbmNlckxpc3RlbmVyIHtcbiAgLyoqXG4gICAqIEV4dGVybmFsIGxpc3RlbmluZyBwb3J0XG4gICAqL1xuICBleHRlcm5hbFBvcnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogV2hhdCBwdWJsaWMgcHJvdG9jb2wgdG8gdXNlIGZvciBsb2FkIGJhbGFuY2luZ1xuICAgKlxuICAgKiBFaXRoZXIgJ3RjcCcsICdzc2wnLCAnaHR0cCcgb3IgJ2h0dHBzJy5cbiAgICpcbiAgICogTWF5IGJlIG9taXR0ZWQgaWYgdGhlIGV4dGVybmFsIHBvcnQgaXMgZWl0aGVyIDgwIG9yIDQ0My5cbiAgICovXG4gIGV4dGVybmFsUHJvdG9jb2w/OiBMb2FkQmFsYW5jaW5nUHJvdG9jb2w7XG5cbiAgLyoqXG4gICAqIEluc3RhbmNlIGxpc3RlbmluZyBwb3J0XG4gICAqXG4gICAqIFNhbWUgYXMgdGhlIGV4dGVybmFsUG9ydCBpZiBub3Qgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBleHRlcm5hbFBvcnRcbiAgICovXG4gIGludGVybmFsUG9ydD86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hhdCBwdWJsaWMgcHJvdG9jb2wgdG8gdXNlIGZvciBsb2FkIGJhbGFuY2luZ1xuICAgKlxuICAgKiBFaXRoZXIgJ3RjcCcsICdzc2wnLCAnaHR0cCcgb3IgJ2h0dHBzJy5cbiAgICpcbiAgICogTWF5IGJlIG9taXR0ZWQgaWYgdGhlIGludGVybmFsIHBvcnQgaXMgZWl0aGVyIDgwIG9yIDQ0My5cbiAgICpcbiAgICogVGhlIGluc3RhbmNlIHByb3RvY29sIGlzICd0Y3AnIGlmIHRoZSBmcm9udC1lbmQgcHJvdG9jb2xcbiAgICogaXMgJ3RjcCcgb3IgJ3NzbCcsIHRoZSBpbnN0YW5jZSBwcm90b2NvbCBpcyAnaHR0cCcgaWYgdGhlXG4gICAqIGZyb250LWVuZCBwcm90b2NvbCBpcyAnaHR0cHMnLlxuICAgKi9cbiAgaW50ZXJuYWxQcm90b2NvbD86IExvYWRCYWxhbmNpbmdQcm90b2NvbDtcblxuICAvKipcbiAgICogU1NMIHBvbGljeSBuYW1lc1xuICAgKi9cbiAgcG9saWN5TmFtZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSUQgb2YgU1NMIGNlcnRpZmljYXRlXG4gICAqL1xuICBzc2xDZXJ0aWZpY2F0ZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbGxvdyBjb25uZWN0aW9ucyB0byB0aGUgbG9hZCBiYWxhbmNlciBmcm9tIHRoZSBnaXZlbiBzZXQgb2YgY29ubmVjdGlvbiBwZWVyc1xuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBjb25uZWN0aW9ucyB3aWxsIGJlIGFsbG93ZWQgZnJvbSBhbnl3aGVyZS4gU2V0IHRoaXMgdG8gYW4gZW1wdHkgbGlzdFxuICAgKiB0byBkZW55IGNvbm5lY3Rpb25zLCBvciBzdXBwbHkgYSBjdXN0b20gbGlzdCBvZiBwZWVycyB0byBhbGxvdyBjb25uZWN0aW9ucyBmcm9tXG4gICAqIChJUCByYW5nZXMgb3Igc2VjdXJpdHkgZ3JvdXBzKS5cbiAgICpcbiAgICogQGRlZmF1bHQgQW55d2hlcmVcbiAgICovXG4gIGFsbG93Q29ubmVjdGlvbnNGcm9tPzogSUNvbm5lY3RhYmxlW107XG59XG5cbmV4cG9ydCBlbnVtIExvYWRCYWxhbmNpbmdQcm90b2NvbCB7XG4gIFRjcCA9ICd0Y3AnLFxuICBTc2wgPSAnc3NsJyxcbiAgSHR0cCA9ICdodHRwJyxcbiAgSHR0cHMgPSAnaHR0cHMnXG59XG5cbi8qKlxuICogQSBsb2FkIGJhbGFuY2VyIHdpdGggYSBzaW5nbGUgbGlzdGVuZXJcbiAqXG4gKiBSb3V0ZXMgdG8gYSBmbGVldCBvZiBvZiBpbnN0YW5jZXMgaW4gYSBWUEMuXG4gKi9cbmV4cG9ydCBjbGFzcyBMb2FkQmFsYW5jZXIgZXh0ZW5kcyBjZGsuQ29uc3RydWN0IGltcGxlbWVudHMgSUNvbm5lY3RhYmxlLCBjb2RlZGVwbG95LklMb2FkQmFsYW5jZXIge1xuICAvKipcbiAgICogQ29udHJvbCBhbGwgY29ubmVjdGlvbnMgZnJvbSBhbmQgdG8gdGhpcyBsb2FkIGJhbGFuY2VyXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdGlvbnM6IENvbm5lY3Rpb25zO1xuXG4gIC8qKlxuICAgKiBBbiBvYmplY3QgY29udHJvbGxpbmcgc3BlY2lmaWNhbGx5IHRoZSBjb25uZWN0aW9ucyBmb3IgZWFjaCBsaXN0ZW5lciBhZGRlZCB0byB0aGlzIGxvYWQgYmFsYW5jZXJcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBsaXN0ZW5lclBvcnRzOiBMaXN0ZW5lclBvcnRbXSA9IFtdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZWxiOiBDZm5Mb2FkQmFsYW5jZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VjdXJpdHlHcm91cDogU2VjdXJpdHlHcm91cDtcbiAgcHJpdmF0ZSByZWFkb25seSBsaXN0ZW5lcnM6IENmbkxvYWRCYWxhbmNlci5MaXN0ZW5lcnNQcm9wZXJ0eVtdID0gW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpbnN0YW5jZVBvcnRzOiBudW1iZXJbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldHM6IElMb2FkQmFsYW5jZXJUYXJnZXRbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgbmFtZTogc3RyaW5nLCBwcm9wczogTG9hZEJhbGFuY2VyUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIG5hbWUpO1xuXG4gICAgdGhpcy5zZWN1cml0eUdyb3VwID0gbmV3IFNlY3VyaXR5R3JvdXAodGhpcywgJ1NlY3VyaXR5R3JvdXAnLCB7IHZwYzogcHJvcHMudnBjLCBhbGxvd0FsbE91dGJvdW5kOiBmYWxzZSB9KTtcbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gbmV3IENvbm5lY3Rpb25zKHsgc2VjdXJpdHlHcm91cHM6IFt0aGlzLnNlY3VyaXR5R3JvdXBdIH0pO1xuXG4gICAgLy8gRGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIEVMQiBoYXMgcHVibGljIG9yIGludGVybmFsIElQcywgcGljayB0aGUgcmlnaHQgYmFja2VuZCBzdWJuZXRzXG4gICAgY29uc3Qgc3VibmV0czogVnBjU3VibmV0UmVmW10gPSBwcm9wcy5pbnRlcm5ldEZhY2luZyA/IHByb3BzLnZwYy5wdWJsaWNTdWJuZXRzIDogcHJvcHMudnBjLnByaXZhdGVTdWJuZXRzO1xuXG4gICAgdGhpcy5lbGIgPSBuZXcgQ2ZuTG9hZEJhbGFuY2VyKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIHNlY3VyaXR5R3JvdXBzOiBbIHRoaXMuc2VjdXJpdHlHcm91cC5zZWN1cml0eUdyb3VwSWQgXSxcbiAgICAgIHN1Ym5ldHM6IHN1Ym5ldHMubWFwKHMgPT4gcy5zdWJuZXRJZCksXG4gICAgICBsaXN0ZW5lcnM6IG5ldyBjZGsuVG9rZW4oKCkgPT4gdGhpcy5saXN0ZW5lcnMpLFxuICAgICAgc2NoZW1lOiBwcm9wcy5pbnRlcm5ldEZhY2luZyA/ICdpbnRlcm5ldC1mYWNpbmcnIDogJ2ludGVybmFsJyxcbiAgICAgIGhlYWx0aENoZWNrOiBwcm9wcy5oZWFsdGhDaGVjayAmJiBoZWFsdGhDaGVja1RvSlNPTihwcm9wcy5oZWFsdGhDaGVjayksXG4gICAgfSk7XG4gICAgaWYgKHByb3BzLmludGVybmV0RmFjaW5nKSB7XG4gICAgICB0aGlzLmVsYi5hZGREZXBlbmRlbmN5KHByb3BzLnZwYy5pbnRlcm5ldERlcGVuZGVuY3koKSk7XG4gICAgfVxuXG4gICAgaWZVbmRlZmluZWQocHJvcHMubGlzdGVuZXJzLCBbXSkuZm9yRWFjaChiID0+IHRoaXMuYWRkTGlzdGVuZXIoYikpO1xuICAgIGlmVW5kZWZpbmVkKHByb3BzLnRhcmdldHMsIFtdKS5mb3JFYWNoKHQgPT4gdGhpcy5hZGRUYXJnZXQodCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGJhY2tlbmQgdG8gdGhlIGxvYWQgYmFsYW5jZXJcbiAgICpcbiAgICogQHJldHVybnMgQSBMaXN0ZW5lclBvcnQgb2JqZWN0IHRoYXQgY29udHJvbHMgY29ubmVjdGlvbnMgdG8gdGhlIGxpc3RlbmVyIHBvcnRcbiAgICovXG4gIHB1YmxpYyBhZGRMaXN0ZW5lcihsaXN0ZW5lcjogTG9hZEJhbGFuY2VyTGlzdGVuZXIpOiBMaXN0ZW5lclBvcnQge1xuICAgIGNvbnN0IHByb3RvY29sID0gaWZVbmRlZmluZWRMYXp5KGxpc3RlbmVyLmV4dGVybmFsUHJvdG9jb2wsICgpID0+IHdlbGxLbm93blByb3RvY29sKGxpc3RlbmVyLmV4dGVybmFsUG9ydCkpO1xuICAgIGNvbnN0IGluc3RhbmNlUG9ydCA9IGxpc3RlbmVyLmludGVybmFsUG9ydCB8fCBsaXN0ZW5lci5leHRlcm5hbFBvcnQ7XG4gICAgY29uc3QgaW5zdGFuY2VQcm90b2NvbCA9IGlmVW5kZWZpbmVkKGxpc3RlbmVyLmludGVybmFsUHJvdG9jb2wsXG4gICAgICAgICAgICAgICAgIGlmVW5kZWZpbmVkKHRyeVdlbGxLbm93blByb3RvY29sKGluc3RhbmNlUG9ydCksXG4gICAgICAgICAgICAgICAgIGlzSHR0cFByb3RvY29sKHByb3RvY29sKSA/IExvYWRCYWxhbmNpbmdQcm90b2NvbC5IdHRwIDogTG9hZEJhbGFuY2luZ1Byb3RvY29sLlRjcCkpO1xuXG4gICAgdGhpcy5saXN0ZW5lcnMucHVzaCh7XG4gICAgICBsb2FkQmFsYW5jZXJQb3J0OiBsaXN0ZW5lci5leHRlcm5hbFBvcnQudG9TdHJpbmcoKSxcbiAgICAgIHByb3RvY29sLFxuICAgICAgaW5zdGFuY2VQb3J0OiBpbnN0YW5jZVBvcnQudG9TdHJpbmcoKSxcbiAgICAgIGluc3RhbmNlUHJvdG9jb2wsXG4gICAgICBzc2xDZXJ0aWZpY2F0ZUlkOiBsaXN0ZW5lci5zc2xDZXJ0aWZpY2F0ZUlkLFxuICAgICAgcG9saWN5TmFtZXM6IGxpc3RlbmVyLnBvbGljeU5hbWVzXG4gICAgfSk7XG5cbiAgICBjb25zdCBwb3J0ID0gbmV3IExpc3RlbmVyUG9ydCh0aGlzLnNlY3VyaXR5R3JvdXAsIG5ldyBUY3BQb3J0KGxpc3RlbmVyLmV4dGVybmFsUG9ydCkpO1xuXG4gICAgLy8gQWxsb3cgY29ubmVjdGlvbnMgb24gdGhlIHB1YmxpYyBwb3J0IGZvciBhbGwgc3VwcGxpZWQgcGVlcnMgKGRlZmF1bHQ6IGV2ZXJ5b25lKVxuICAgIGlmVW5kZWZpbmVkKGxpc3RlbmVyLmFsbG93Q29ubmVjdGlvbnNGcm9tLCBbbmV3IEFueUlQdjQoKV0pLmZvckVhY2gocGVlciA9PiB7XG4gICAgICBwb3J0LmNvbm5lY3Rpb25zLmFsbG93RGVmYXVsdFBvcnRGcm9tKHBlZXIsIGBEZWZhdWx0IHJ1bGUgYWxsb3cgb24gJHtsaXN0ZW5lci5leHRlcm5hbFBvcnR9YCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm5ld0luc3RhbmNlUG9ydChpbnN0YW5jZVBvcnQpO1xuXG4gICAgLy8gS2VlcCB0cmFjayB1c2luZyBhcnJheSBzbyB1c2VyIGNhbiBnZXQgdG8gdGhlbSBldmVuIGlmIHRoZXkgd2VyZSBhbGwgc3VwcGxpZWQgaW4gdGhlIGNvbnN0cnVjdG9yXG4gICAgdGhpcy5saXN0ZW5lclBvcnRzLnB1c2gocG9ydCk7XG5cbiAgICByZXR1cm4gcG9ydDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUYXJnZXQodGFyZ2V0OiBJTG9hZEJhbGFuY2VyVGFyZ2V0KSB7XG4gICAgdGFyZ2V0LmF0dGFjaFRvQ2xhc3NpY0xCKHRoaXMpO1xuXG4gICAgdGhpcy5uZXdUYXJnZXQodGFyZ2V0KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9hZEJhbGFuY2VyTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGIucmVmO1xuICB9XG5cbiAgcHVibGljIGdldCBsb2FkQmFsYW5jZXJDYW5vbmljYWxIb3N0ZWRab25lTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGIubG9hZEJhbGFuY2VyQ2Fub25pY2FsSG9zdGVkWm9uZU5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvYWRCYWxhbmNlckRuc05hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxiLmxvYWRCYWxhbmNlckRuc05hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvYWRCYWxhbmNlclNvdXJjZVNlY3VyaXR5R3JvdXBHcm91cE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxiLmxvYWRCYWxhbmNlclNvdXJjZVNlY3VyaXR5R3JvdXBHcm91cE5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvYWRCYWxhbmNlclNvdXJjZVNlY3VyaXR5R3JvdXBPd25lckFsaWFzKCkge1xuICAgIHJldHVybiB0aGlzLmVsYi5sb2FkQmFsYW5jZXJTb3VyY2VTZWN1cml0eUdyb3VwT3duZXJBbGlhcztcbiAgfVxuXG4gIHB1YmxpYyBhc0NvZGVEZXBsb3lMb2FkQmFsYW5jZXIoKTogY29kZWRlcGxveS5JTG9hZEJhbGFuY2VyUHJvcHMge1xuICAgIHJldHVybiB7XG4gICAgICBnZW5lcmF0aW9uOiBjb2RlZGVwbG95LkxvYWRCYWxhbmNlckdlbmVyYXRpb24uRmlyc3QsXG4gICAgICBuYW1lOiB0aGlzLmxvYWRCYWxhbmNlck5hbWUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvdyBjb25uZWN0aW9ucyB0byBhbGwgZXhpc3RpbmcgdGFyZ2V0cyBvbiBuZXcgaW5zdGFuY2UgcG9ydFxuICAgKi9cbiAgcHJpdmF0ZSBuZXdJbnN0YW5jZVBvcnQoaW5zdGFuY2VQb3J0OiBudW1iZXIpIHtcbiAgICB0aGlzLnRhcmdldHMuZm9yRWFjaCh0ID0+IHRoaXMuYWxsb3dUYXJnZXRDb25uZWN0aW9uKGluc3RhbmNlUG9ydCwgdCkpO1xuXG4gICAgLy8gS2VlcCB0cmFjayBvZiBwb3J0IGZvciBmdXR1cmUgdGFyZ2V0c1xuICAgIHRoaXMuaW5zdGFuY2VQb3J0cy5wdXNoKGluc3RhbmNlUG9ydCk7XG4gIH1cblxuICAvKipcbiAgICogQWxsb3cgY29ubmVjdGlvbnMgdG8gdGFyZ2V0IG9uIGFsbCBleGlzdGluZyBpbnN0YW5jZSBwb3J0c1xuICAgKi9cbiAgcHJpdmF0ZSBuZXdUYXJnZXQodGFyZ2V0OiBJTG9hZEJhbGFuY2VyVGFyZ2V0KSB7XG4gICAgdGhpcy5pbnN0YW5jZVBvcnRzLmZvckVhY2gocCA9PiB0aGlzLmFsbG93VGFyZ2V0Q29ubmVjdGlvbihwLCB0YXJnZXQpKTtcblxuICAgIC8vIEtlZXAgdHJhY2sgb2YgdGFyZ2V0IGZvciBmdXR1cmUgbGlzdGVuZXJzLlxuICAgIHRoaXMudGFyZ2V0cy5wdXNoKHRhcmdldCk7XG4gIH1cblxuICAvKipcbiAgICogQWxsb3cgY29ubmVjdGlvbnMgZm9yIGEgc2luZ2xlIChwb3J0LCB0YXJnZXQpIHBhaXJcbiAgICovXG4gIHByaXZhdGUgYWxsb3dUYXJnZXRDb25uZWN0aW9uKGluc3RhbmNlUG9ydDogbnVtYmVyLCB0YXJnZXQ6IElMb2FkQmFsYW5jZXJUYXJnZXQpIHtcbiAgICB0aGlzLmNvbm5lY3Rpb25zLmFsbG93VG8oXG4gICAgICB0YXJnZXQsXG4gICAgICBuZXcgVGNwUG9ydChpbnN0YW5jZVBvcnQpLFxuICAgICAgYFBvcnQgJHtpbnN0YW5jZVBvcnR9IExCIHRvIGZsZWV0YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWZlcmVuY2UgdG8gYSBsaXN0ZW5lcidzIHBvcnQganVzdCBjcmVhdGVkLlxuICpcbiAqIFRoaXMgaW1wbGVtZW50cyBJQ29ubmVjdGFibGUgd2l0aCBhIGRlZmF1bHQgcG9ydCAodGhlIHBvcnQgdGhhdCBhbiBFTEJcbiAqIGxpc3RlbmVyIHdhcyBqdXN0IGNyZWF0ZWQgb24pIGZvciBhIGdpdmVuIHNlY3VyaXR5IGdyb3VwIHNvIHRoYXQgaXQgY2FuIGJlXG4gKiBjb252ZW5pZW50bHkgdXNlZCBqdXN0IGxpa2UgYW55IENvbm5lY3RhYmxlLiBFLmc6XG4gKlxuICogICAgY29uc3QgbGlzdGVuZXIgPSBlbGIuYWRkTGlzdGVuZXIoLi4uKTtcbiAqXG4gKiAgICBsaXN0ZW5lci5jb25uZWN0aW9ucy5hbGxvd0RlZmF1bHRQb3J0RnJvbUFueUlQdjQoKTtcbiAqICAgIC8vIG9yXG4gKiAgICBpbnN0YW5jZS5jb25uZWN0aW9ucy5hbGxvd1RvRGVmYXVsdFBvcnQobGlzdGVuZXIpO1xuICovXG5leHBvcnQgY2xhc3MgTGlzdGVuZXJQb3J0IGltcGxlbWVudHMgSUNvbm5lY3RhYmxlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcblxuICBjb25zdHJ1Y3RvcihzZWN1cml0eUdyb3VwOiBTZWN1cml0eUdyb3VwUmVmLCBkZWZhdWx0UG9ydFJhbmdlOiBJUG9ydFJhbmdlKSB7XG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IG5ldyBDb25uZWN0aW9ucyh7IHNlY3VyaXR5R3JvdXBzOiBbc2VjdXJpdHlHcm91cF0gLCBkZWZhdWx0UG9ydFJhbmdlIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHdlbGxLbm93blByb3RvY29sKHBvcnQ6IG51bWJlcik6IExvYWRCYWxhbmNpbmdQcm90b2NvbCB7XG4gIGNvbnN0IHByb3RvID0gdHJ5V2VsbEtub3duUHJvdG9jb2wocG9ydCk7XG4gIGlmICghcHJvdG8pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFBsZWFzZSBzdXBwbHkgcHJvdG9jb2wgdG8gZ28gd2l0aCBwb3J0ICR7cG9ydH1gKTtcbiAgfVxuICByZXR1cm4gcHJvdG87XG59XG5cbmZ1bmN0aW9uIHRyeVdlbGxLbm93blByb3RvY29sKHBvcnQ6IG51bWJlcik6IExvYWRCYWxhbmNpbmdQcm90b2NvbCB8IHVuZGVmaW5lZCB7XG4gIGlmIChwb3J0ID09PSA4MCkgeyByZXR1cm4gTG9hZEJhbGFuY2luZ1Byb3RvY29sLkh0dHA7IH1cbiAgaWYgKHBvcnQgPT09IDQ0MykgeyByZXR1cm4gTG9hZEJhbGFuY2luZ1Byb3RvY29sLkh0dHBzOyB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGlzSHR0cFByb3RvY29sKHByb3RvOiBMb2FkQmFsYW5jaW5nUHJvdG9jb2wpOiBib29sZWFuIHtcbiAgcmV0dXJuIHByb3RvID09PSBMb2FkQmFsYW5jaW5nUHJvdG9jb2wuSHR0cHMgfHwgcHJvdG8gPT09IExvYWRCYWxhbmNpbmdQcm90b2NvbC5IdHRwO1xufVxuXG5mdW5jdGlvbiBpZlVuZGVmaW5lZDxUPih4OiBUIHwgdW5kZWZpbmVkLCBkZWY6IFQpOiBUIHtcbiAgcmV0dXJuIHggIT0gbnVsbCA/IHggOiBkZWY7XG59XG5cbmZ1bmN0aW9uIGlmVW5kZWZpbmVkTGF6eTxUPih4OiBUIHwgdW5kZWZpbmVkLCBkZWY6ICgpID0+IFQpOiBUIHtcbiAgcmV0dXJuIHggIT0gbnVsbCA/IHggOiBkZWYoKTtcbn1cblxuLyoqXG4gKiBUdXJuIGhlYWx0aCBjaGVjayBwYXJhbWV0ZXJzIGludG8gYSBwYXJhbWV0ZXIgYmxvYiBmb3IgdGhlIExCXG4gKi9cbmZ1bmN0aW9uIGhlYWx0aENoZWNrVG9KU09OKGhlYWx0aENoZWNrOiBIZWFsdGhDaGVjayk6IENmbkxvYWRCYWxhbmNlci5IZWFsdGhDaGVja1Byb3BlcnR5IHtcbiAgY29uc3QgcHJvdG9jb2wgPSBpZlVuZGVmaW5lZChoZWFsdGhDaGVjay5wcm90b2NvbCxcbiAgICAgICAgICAgaWZVbmRlZmluZWQodHJ5V2VsbEtub3duUHJvdG9jb2woaGVhbHRoQ2hlY2sucG9ydCksXG4gICAgICAgICAgIExvYWRCYWxhbmNpbmdQcm90b2NvbC5UY3ApKTtcblxuICBjb25zdCBwYXRoID0gcHJvdG9jb2wgPT09IExvYWRCYWxhbmNpbmdQcm90b2NvbC5IdHRwIHx8IHByb3RvY29sID09PSBMb2FkQmFsYW5jaW5nUHJvdG9jb2wuSHR0cHMgPyBpZlVuZGVmaW5lZChoZWFsdGhDaGVjay5wYXRoLCBcIi9cIikgOiBcIlwiO1xuXG4gIGNvbnN0IHRhcmdldCA9IGAke3Byb3RvY29sLnRvVXBwZXJDYXNlKCl9OiR7aGVhbHRoQ2hlY2sucG9ydH0ke3BhdGh9YDtcblxuICByZXR1cm4ge1xuICAgIGhlYWx0aHlUaHJlc2hvbGQ6IGlmVW5kZWZpbmVkKGhlYWx0aENoZWNrLmhlYWx0aHlUaHJlc2hvbGQsIDIpLnRvU3RyaW5nKCksXG4gICAgaW50ZXJ2YWw6IGlmVW5kZWZpbmVkKGhlYWx0aENoZWNrLmludGVydmFsLCAzMCkudG9TdHJpbmcoKSxcbiAgICB0YXJnZXQsXG4gICAgdGltZW91dDogaWZVbmRlZmluZWQoaGVhbHRoQ2hlY2sudGltZW91dCwgNSkudG9TdHJpbmcoKSxcbiAgICB1bmhlYWx0aHlUaHJlc2hvbGQ6IGlmVW5kZWZpbmVkKGhlYWx0aENoZWNrLnVuaGVhbHRoeVRocmVzaG9sZCwgNSkudG9TdHJpbmcoKSxcbiAgfTtcbn1cbiJdfQ== |
{ | ||
"name": "@aws-cdk/aws-elasticloadbalancing", | ||
"version": "0.20.0", | ||
"version": "0.21.0", | ||
"description": "CDK Constructs for AWS ElasticLoadBalancing", | ||
@@ -55,19 +55,22 @@ "main": "lib/index.js", | ||
"devDependencies": { | ||
"@aws-cdk/assert": "^0.20.0", | ||
"cdk-build-tools": "^0.20.0", | ||
"cdk-integ-tools": "^0.20.0", | ||
"cfn2ts": "^0.20.0", | ||
"pkglint": "^0.20.0" | ||
"@aws-cdk/assert": "^0.21.0", | ||
"cdk-build-tools": "^0.21.0", | ||
"cdk-integ-tools": "^0.21.0", | ||
"cfn2ts": "^0.21.0", | ||
"pkglint": "^0.21.0" | ||
}, | ||
"dependencies": { | ||
"@aws-cdk/aws-codedeploy-api": "^0.20.0", | ||
"@aws-cdk/aws-ec2": "^0.20.0", | ||
"@aws-cdk/cdk": "^0.20.0" | ||
"@aws-cdk/aws-codedeploy-api": "^0.21.0", | ||
"@aws-cdk/aws-ec2": "^0.21.0", | ||
"@aws-cdk/cdk": "^0.21.0" | ||
}, | ||
"homepage": "https://github.com/awslabs/aws-cdk", | ||
"peerDependencies": { | ||
"@aws-cdk/aws-codedeploy-api": "^0.20.0", | ||
"@aws-cdk/aws-ec2": "^0.20.0", | ||
"@aws-cdk/cdk": "^0.20.0" | ||
"@aws-cdk/aws-codedeploy-api": "^0.21.0", | ||
"@aws-cdk/aws-ec2": "^0.21.0", | ||
"@aws-cdk/cdk": "^0.21.0" | ||
}, | ||
"engines": { | ||
"node": ">= 8.10.0" | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
415254
2275
+ Added@aws-cdk/aws-codedeploy-api@0.21.0(transitive)
+ Added@aws-cdk/aws-ec2@0.21.0(transitive)
+ Added@aws-cdk/aws-iam@0.21.0(transitive)
+ Added@aws-cdk/cdk@0.21.0(transitive)
+ Added@aws-cdk/cx-api@0.21.0(transitive)
- Removed@aws-cdk/aws-codedeploy-api@0.20.0(transitive)
- Removed@aws-cdk/aws-ec2@0.20.0(transitive)
- Removed@aws-cdk/aws-iam@0.20.0(transitive)
- Removed@aws-cdk/cdk@0.20.0(transitive)
- Removed@aws-cdk/cx-api@0.20.0(transitive)
Updated@aws-cdk/aws-ec2@^0.21.0
Updated@aws-cdk/cdk@^0.21.0