@aws-cdk/aws-eks-v2-alpha
Version:
This module is deprecated. All constructs are now available under aws-cdk-lib/aws-eks-v2
90 lines • 16.9 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.HelmChart = void 0;
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const core_1 = require("aws-cdk-lib/core");
const constructs_1 = require("constructs");
const kubectl_provider_1 = require("./kubectl-provider");
/**
* Represents a helm chart within the Kubernetes system.
*
* Applies/deletes the resources using `kubectl` in sync with the resource.
*/
class HelmChart extends constructs_1.Construct {
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-eks-v2-alpha.HelmChart", version: "2.240.0-alpha.0" };
/**
* The CloudFormation resource type.
*/
static RESOURCE_TYPE = 'Custom::AWSCDK-EKS-HelmChart';
chart;
repository;
version;
chartAsset;
atomic;
constructor(scope, id, props) {
super(scope, id);
try {
jsiiDeprecationWarnings.print("@aws-cdk/aws-eks-v2-alpha.HelmChart", "");
jsiiDeprecationWarnings._aws_cdk_aws_eks_v2_alpha_HelmChartProps(props);
}
catch (error) {
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
Error.captureStackTrace(error, HelmChart);
}
throw error;
}
// Exposing these properties is done for convenience
// For more details see issue #26678
this.chart = props.chart;
this.repository = props.repository;
this.version = props.version;
this.chartAsset = props.chartAsset;
const stack = core_1.Stack.of(this);
const provider = kubectl_provider_1.KubectlProvider.getKubectlProvider(this, props.cluster);
if (!provider) {
throw new core_1.ValidationError('Kubectl Provider is not defined in this cluster. Define it when creating the cluster', this);
}
const timeout = props.timeout?.toSeconds();
if (timeout && timeout > 900) {
throw new core_1.ValidationError('Helm chart timeout cannot be higher than 15 minutes.', this);
}
if (!this.chart && !this.chartAsset) {
throw new core_1.ValidationError("Either 'chart' or 'chartAsset' must be specified to install a helm chart", this);
}
if (this.chartAsset && (this.repository || this.version)) {
throw new core_1.ValidationError("Neither 'repository' nor 'version' can be used when configuring 'chartAsset'", this);
}
// default not to wait
const wait = props.wait ?? false;
// default to create new namespace
const createNamespace = props.createNamespace ?? true;
// default to not skip crd installation
const skipCrds = props.skipCrds ?? false;
// default to set atomic as false
const atomic = props.atomic ?? false;
this.chartAsset?.grantRead(provider.role);
new core_1.CustomResource(this, 'Resource', {
serviceToken: provider.serviceToken,
resourceType: HelmChart.RESOURCE_TYPE,
removalPolicy: props.removalPolicy,
properties: {
ClusterName: props.cluster.clusterName,
Release: props.release ?? core_1.Names.uniqueId(this).slice(-53).toLowerCase(), // Helm has a 53 character limit for the name
Chart: this.chart,
ChartAssetURL: this.chartAsset?.s3ObjectUrl,
Version: this.version,
Wait: wait || undefined, // props are stringified so we encode “false” as undefined
Timeout: timeout ? `${timeout.toString()}s` : undefined, // Helm v3 expects duration instead of integer
Values: (props.values ? stack.toJsonString(props.values) : undefined),
Namespace: props.namespace ?? 'default',
Repository: this.repository,
CreateNamespace: createNamespace || undefined,
SkipCrds: skipCrds || undefined,
Atomic: atomic || undefined, // props are stringified so we encode “false” as undefined
},
});
}
}
exports.HelmChart = HelmChart;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVsbS1jaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhlbG0tY2hhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSwyQ0FBaUY7QUFDakYsMkNBQXVDO0FBRXZDLHlEQUFxRDtBQXFIckQ7Ozs7R0FJRztBQUNILE1BQWEsU0FBVSxTQUFRLHNCQUFTOztJQUN0Qzs7T0FFRztJQUNJLE1BQU0sQ0FBVSxhQUFhLEdBQUcsOEJBQThCLENBQUM7SUFDdEQsS0FBSyxDQUFVO0lBQ2YsVUFBVSxDQUFVO0lBQ3BCLE9BQU8sQ0FBVTtJQUNqQixVQUFVLENBQVM7SUFDbkIsTUFBTSxDQUFXO0lBRWpDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUI7UUFDN0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzs7Ozs7OzsrQ0FaUixTQUFTOzs7O1FBY2xCLG9EQUFvRDtRQUNwRCxvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBRW5DLE1BQU0sS0FBSyxHQUFHLFlBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0IsTUFBTSxRQUFRLEdBQUcsa0NBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxzQkFBZSxDQUFDLHNGQUFzRixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFILENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQzNDLElBQUksT0FBTyxJQUFJLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksc0JBQWUsQ0FBQyxzREFBc0QsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEMsTUFBTSxJQUFJLHNCQUFlLENBQUMsMEVBQTBFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUcsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDekQsTUFBTSxJQUFJLHNCQUFlLENBQ3ZCLDhFQUE4RSxFQUM5RSxJQUFJLENBQ0wsQ0FBQztRQUNKLENBQUM7UUFFRCxzQkFBc0I7UUFDdEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUM7UUFDakMsa0NBQWtDO1FBQ2xDLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDO1FBQ3RELHVDQUF1QztRQUN2QyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztRQUN6QyxpQ0FBaUM7UUFDakMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7UUFFckMsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUssQ0FBQyxDQUFDO1FBRTNDLElBQUkscUJBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ25DLFlBQVksRUFBRSxRQUFRLENBQUMsWUFBWTtZQUNuQyxZQUFZLEVBQUUsU0FBUyxDQUFDLGFBQWE7WUFDckMsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1lBQ2xDLFVBQVUsRUFBRTtnQkFDVixXQUFXLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXO2dCQUN0QyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxZQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLDZDQUE2QztnQkFDdEgsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixhQUFhLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXO2dCQUMzQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ3JCLElBQUksRUFBRSxJQUFJLElBQUksU0FBUyxFQUFFLDBEQUEwRDtnQkFDbkYsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLDhDQUE4QztnQkFDdkcsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDckUsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksU0FBUztnQkFDdkMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMzQixlQUFlLEVBQUUsZUFBZSxJQUFJLFNBQVM7Z0JBQzdDLFFBQVEsRUFBRSxRQUFRLElBQUksU0FBUztnQkFDL0IsTUFBTSxFQUFFLE1BQU0sSUFBSSxTQUFTLEVBQUUsMERBQTBEO2FBQ3hGO1NBQ0YsQ0FBQyxDQUFDO0tBQ0o7O0FBM0VILDhCQTRFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXNzZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtYXNzZXRzJztcbmltcG9ydCB0eXBlIHsgRHVyYXRpb24sIFJlbW92YWxQb2xpY3kgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IEN1c3RvbVJlc291cmNlLCBOYW1lcywgU3RhY2ssIFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgdHlwZSB7IElDbHVzdGVyIH0gZnJvbSAnLi9jbHVzdGVyJztcbmltcG9ydCB7IEt1YmVjdGxQcm92aWRlciB9IGZyb20gJy4va3ViZWN0bC1wcm92aWRlcic7XG5cbi8qKlxuICogSGVsbSBDaGFydCBvcHRpb25zLlxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVsbUNoYXJ0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2hhcnQuXG4gICAqIEVpdGhlciB0aGlzIG9yIGBjaGFydEFzc2V0YCBtdXN0IGJlIHNwZWNpZmllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBjaGFydCBuYW1lLiBJbXBsaWVzIGBjaGFydEFzc2V0YCBpcyB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgY2hhcnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSByZWxlYXNlLlxuICAgKiBAZGVmYXVsdCAtIElmIG5vIHJlbGVhc2UgbmFtZSBpcyBnaXZlbiwgaXQgd2lsbCB1c2UgdGhlIGxhc3QgNTMgY2hhcmFjdGVycyBvZiB0aGUgbm9kZSdzIHVuaXF1ZSBpZC5cbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjaGFydCB2ZXJzaW9uIHRvIGluc3RhbGwuXG4gICAqIEBkZWZhdWx0IC0gSWYgdGhpcyBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgbGF0ZXN0IHZlcnNpb24gaXMgaW5zdGFsbGVkXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVwb3NpdG9yeSB3aGljaCBjb250YWlucyB0aGUgY2hhcnQuIEZvciBleGFtcGxlOiBodHRwczovL2NoYXJ0cy5oZWxtLnNoL3N0YWJsZS9cbiAgICogQGRlZmF1bHQgLSBObyByZXBvc2l0b3J5IHdpbGwgYmUgdXNlZCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgY2hhcnQgbmVlZHMgdG8gYmUgYW4gYWJzb2x1dGUgVVJMLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3NpdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNoYXJ0IGluIHRoZSBmb3JtIG9mIGFuIGFzc2V0LlxuICAgKiBFaXRoZXIgdGhpcyBvciBgY2hhcnRgIG11c3QgYmUgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGNoYXJ0IGFzc2V0LiBJbXBsaWVzIGBjaGFydGAgaXMgdXNlZC5cbiAgICovXG4gIHJlYWRvbmx5IGNoYXJ0QXNzZXQ/OiBBc3NldDtcblxuICAvKipcbiAgICogVGhlIEt1YmVybmV0ZXMgbmFtZXNwYWNlIHNjb3BlIG9mIHRoZSByZXF1ZXN0cy5cbiAgICogQGRlZmF1bHQgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWVzIHRvIGJlIHVzZWQgYnkgdGhlIGNoYXJ0LlxuICAgKiBGb3IgbmVzdGVkIHZhbHVlcyB1c2UgYSBuZXN0ZWQgZGljdGlvbmFyeS4gRm9yIGV4YW1wbGU6XG4gICAqIHZhbHVlczoge1xuICAgKiAgaW5zdGFsbGF0aW9uQ1JEczogdHJ1ZSxcbiAgICogIHdlYmhvb2s6IHsgcG9ydDogOTQ0MyB9XG4gICAqIH1cbiAgICogQGRlZmF1bHQgLSBObyB2YWx1ZXMgYXJlIHByb3ZpZGVkIHRvIHRoZSBjaGFydC5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlcz86IHtba2V5OiBzdHJpbmddOiBhbnl9O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCBIZWxtIHNob3VsZCB3YWl0IHVudGlsIGFsbCBQb2RzLCBQVkNzLCBTZXJ2aWNlcywgYW5kIG1pbmltdW0gbnVtYmVyIG9mIFBvZHMgb2YgYVxuICAgKiBEZXBsb3ltZW50LCBTdGF0ZWZ1bFNldCwgb3IgUmVwbGljYVNldCBhcmUgaW4gYSByZWFkeSBzdGF0ZSBiZWZvcmUgbWFya2luZyB0aGUgcmVsZWFzZSBhcyBzdWNjZXNzZnVsLlxuICAgKiBAZGVmYXVsdCAtIEhlbG0gd2lsbCBub3Qgd2FpdCBiZWZvcmUgbWFya2luZyByZWxlYXNlIGFzIHN1Y2Nlc3NmdWxcbiAgICovXG4gIHJlYWRvbmx5IHdhaXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbW91bnQgb2YgdGltZSB0byB3YWl0IGZvciBhbnkgaW5kaXZpZHVhbCBLdWJlcm5ldGVzIG9wZXJhdGlvbi4gTWF4aW11bSAxNSBtaW51dGVzLlxuICAgKiBAZGVmYXVsdCBEdXJhdGlvbi5taW51dGVzKDUpXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IEhlbG0gc2hvdWxkIHRyZWF0IHRoaXMgb3BlcmF0aW9uIGFzIGF0b21pYzsgaWYgc2V0LCB1cGdyYWRlIHByb2Nlc3Mgcm9sbHMgYmFjayBjaGFuZ2VzXG4gICAqIG1hZGUgaW4gY2FzZSBvZiBmYWlsZWQgdXBncmFkZS4gVGhlIC0td2FpdCBmbGFnIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgaWYgLS1hdG9taWMgaXMgdXNlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGF0b21pYz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGNyZWF0ZSBuYW1lc3BhY2UgaWYgbm90IGV4aXN0XG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZU5hbWVzcGFjZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGlmIHNldCwgbm8gQ1JEcyB3aWxsIGJlIGluc3RhbGxlZFxuICAgKiBAZGVmYXVsdCAtIENSRHMgYXJlIGluc3RhbGxlZCBpZiBub3QgYWxyZWFkeSBwcmVzZW50XG4gICAqL1xuICByZWFkb25seSBza2lwQ3Jkcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSByZW1vdmFsIHBvbGljeSBhcHBsaWVkIHRvIHRoZSBjdXN0b20gcmVzb3VyY2UgdGhhdCBtYW5hZ2VzIHRoZSBIZWxtIGNoYXJ0LlxuICAgKlxuICAgKiBUaGUgcmVtb3ZhbCBwb2xpY3kgY29udHJvbHMgd2hhdCBoYXBwZW5zIHRvIHRoZSByZXNvdXJjZSBpZiBpdCBzdG9wcyBiZWluZyBtYW5hZ2VkIGJ5IENsb3VkRm9ybWF0aW9uLlxuICAgKiBUaGlzIGNhbiBoYXBwZW4gaW4gb25lIG9mIHRocmVlIHNpdHVhdGlvbnM6XG4gICAqXG4gICAqIC0gVGhlIHJlc291cmNlIGlzIHJlbW92ZWQgZnJvbSB0aGUgdGVtcGxhdGUsIHNvIENsb3VkRm9ybWF0aW9uIHN0b3BzIG1hbmFnaW5nIGl0XG4gICAqIC0gQSBjaGFuZ2UgdG8gdGhlIHJlc291cmNlIGlzIG1hZGUgdGhhdCByZXF1aXJlcyBpdCB0byBiZSByZXBsYWNlZCwgc28gQ2xvdWRGb3JtYXRpb24gc3RvcHMgbWFuYWdpbmcgaXRcbiAgICogLSBUaGUgc3RhY2sgaXMgZGVsZXRlZCwgc28gQ2xvdWRGb3JtYXRpb24gc3RvcHMgbWFuYWdpbmcgYWxsIHJlc291cmNlcyBpbiBpdFxuICAgKlxuICAgKiBAZGVmYXVsdCBSZW1vdmFsUG9saWN5LkRFU1RST1lcbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBSZW1vdmFsUG9saWN5O1xufVxuXG4vKipcbiAqIEhlbG0gQ2hhcnQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIZWxtQ2hhcnRQcm9wcyBleHRlbmRzIEhlbG1DaGFydE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIEVLUyBjbHVzdGVyIHRvIGFwcGx5IHRoaXMgY29uZmlndXJhdGlvbiB0by5cbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpyZWYtdmlhLWludGVyZmFjZV1cbiAgICovXG4gIHJlYWRvbmx5IGNsdXN0ZXI6IElDbHVzdGVyO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBoZWxtIGNoYXJ0IHdpdGhpbiB0aGUgS3ViZXJuZXRlcyBzeXN0ZW0uXG4gKlxuICogQXBwbGllcy9kZWxldGVzIHRoZSByZXNvdXJjZXMgdXNpbmcgYGt1YmVjdGxgIGluIHN5bmMgd2l0aCB0aGUgcmVzb3VyY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBIZWxtQ2hhcnQgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFJFU09VUkNFX1RZUEUgPSAnQ3VzdG9tOjpBV1NDREstRUtTLUhlbG1DaGFydCc7XG4gIHB1YmxpYyByZWFkb25seSBjaGFydD86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHJlcG9zaXRvcnk/OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgY2hhcnRBc3NldD86IEFzc2V0O1xuICBwdWJsaWMgcmVhZG9ubHkgYXRvbWljPzogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSGVsbUNoYXJ0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gRXhwb3NpbmcgdGhlc2UgcHJvcGVydGllcyBpcyBkb25lIGZvciBjb252ZW5pZW5jZVxuICAgIC8vIEZvciBtb3JlIGRldGFpbHMgc2VlIGlzc3VlICMyNjY3OFxuICAgIHRoaXMuY2hhcnQgPSBwcm9wcy5jaGFydDtcbiAgICB0aGlzLnJlcG9zaXRvcnkgPSBwcm9wcy5yZXBvc2l0b3J5O1xuICAgIHRoaXMudmVyc2lvbiA9IHByb3BzLnZlcnNpb247XG4gICAgdGhpcy5jaGFydEFzc2V0ID0gcHJvcHMuY2hhcnRBc3NldDtcblxuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2YodGhpcyk7XG5cbiAgICBjb25zdCBwcm92aWRlciA9IEt1YmVjdGxQcm92aWRlci5nZXRLdWJlY3RsUHJvdmlkZXIodGhpcywgcHJvcHMuY2x1c3Rlcik7XG4gICAgaWYgKCFwcm92aWRlcikge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignS3ViZWN0bCBQcm92aWRlciBpcyBub3QgZGVmaW5lZCBpbiB0aGlzIGNsdXN0ZXIuIERlZmluZSBpdCB3aGVuIGNyZWF0aW5nIHRoZSBjbHVzdGVyJywgdGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3QgdGltZW91dCA9IHByb3BzLnRpbWVvdXQ/LnRvU2Vjb25kcygpO1xuICAgIGlmICh0aW1lb3V0ICYmIHRpbWVvdXQgPiA5MDApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0hlbG0gY2hhcnQgdGltZW91dCBjYW5ub3QgYmUgaGlnaGVyIHRoYW4gMTUgbWludXRlcy4nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY2hhcnQgJiYgIXRoaXMuY2hhcnRBc3NldCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcIkVpdGhlciAnY2hhcnQnIG9yICdjaGFydEFzc2V0JyBtdXN0IGJlIHNwZWNpZmllZCB0byBpbnN0YWxsIGEgaGVsbSBjaGFydFwiLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jaGFydEFzc2V0ICYmICh0aGlzLnJlcG9zaXRvcnkgfHwgdGhpcy52ZXJzaW9uKSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgXCJOZWl0aGVyICdyZXBvc2l0b3J5JyBub3IgJ3ZlcnNpb24nIGNhbiBiZSB1c2VkIHdoZW4gY29uZmlndXJpbmcgJ2NoYXJ0QXNzZXQnXCIsXG4gICAgICAgIHRoaXMsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIGRlZmF1bHQgbm90IHRvIHdhaXRcbiAgICBjb25zdCB3YWl0ID0gcHJvcHMud2FpdCA/PyBmYWxzZTtcbiAgICAvLyBkZWZhdWx0IHRvIGNyZWF0ZSBuZXcgbmFtZXNwYWNlXG4gICAgY29uc3QgY3JlYXRlTmFtZXNwYWNlID0gcHJvcHMuY3JlYXRlTmFtZXNwYWNlID8/IHRydWU7XG4gICAgLy8gZGVmYXVsdCB0byBub3Qgc2tpcCBjcmQgaW5zdGFsbGF0aW9uXG4gICAgY29uc3Qgc2tpcENyZHMgPSBwcm9wcy5za2lwQ3JkcyA/PyBmYWxzZTtcbiAgICAvLyBkZWZhdWx0IHRvIHNldCBhdG9taWMgYXMgZmFsc2VcbiAgICBjb25zdCBhdG9taWMgPSBwcm9wcy5hdG9taWMgPz8gZmFsc2U7XG5cbiAgICB0aGlzLmNoYXJ0QXNzZXQ/LmdyYW50UmVhZChwcm92aWRlci5yb2xlISk7XG5cbiAgICBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgc2VydmljZVRva2VuOiBwcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICByZXNvdXJjZVR5cGU6IEhlbG1DaGFydC5SRVNPVVJDRV9UWVBFLFxuICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmVtb3ZhbFBvbGljeSxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgQ2x1c3Rlck5hbWU6IHByb3BzLmNsdXN0ZXIuY2x1c3Rlck5hbWUsXG4gICAgICAgIFJlbGVhc2U6IHByb3BzLnJlbGVhc2UgPz8gTmFtZXMudW5pcXVlSWQodGhpcykuc2xpY2UoLTUzKS50b0xvd2VyQ2FzZSgpLCAvLyBIZWxtIGhhcyBhIDUzIGNoYXJhY3RlciBsaW1pdCBmb3IgdGhlIG5hbWVcbiAgICAgICAgQ2hhcnQ6IHRoaXMuY2hhcnQsXG4gICAgICAgIENoYXJ0QXNzZXRVUkw6IHRoaXMuY2hhcnRBc3NldD8uczNPYmplY3RVcmwsXG4gICAgICAgIFZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICAgICAgV2FpdDogd2FpdCB8fCB1bmRlZmluZWQsIC8vIHByb3BzIGFyZSBzdHJpbmdpZmllZCBzbyB3ZSBlbmNvZGUg4oCcZmFsc2XigJ0gYXMgdW5kZWZpbmVkXG4gICAgICAgIFRpbWVvdXQ6IHRpbWVvdXQgPyBgJHt0aW1lb3V0LnRvU3RyaW5nKCl9c2AgOiB1bmRlZmluZWQsIC8vIEhlbG0gdjMgZXhwZWN0cyBkdXJhdGlvbiBpbnN0ZWFkIG9mIGludGVnZXJcbiAgICAgICAgVmFsdWVzOiAocHJvcHMudmFsdWVzID8gc3RhY2sudG9Kc29uU3RyaW5nKHByb3BzLnZhbHVlcykgOiB1bmRlZmluZWQpLFxuICAgICAgICBOYW1lc3BhY2U6IHByb3BzLm5hbWVzcGFjZSA/PyAnZGVmYXVsdCcsXG4gICAgICAgIFJlcG9zaXRvcnk6IHRoaXMucmVwb3NpdG9yeSxcbiAgICAgICAgQ3JlYXRlTmFtZXNwYWNlOiBjcmVhdGVOYW1lc3BhY2UgfHwgdW5kZWZpbmVkLFxuICAgICAgICBTa2lwQ3Jkczogc2tpcENyZHMgfHwgdW5kZWZpbmVkLFxuICAgICAgICBBdG9taWM6IGF0b21pYyB8fCB1bmRlZmluZWQsIC8vIHByb3BzIGFyZSBzdHJpbmdpZmllZCBzbyB3ZSBlbmNvZGUg4oCcZmFsc2XigJ0gYXMgdW5kZWZpbmVkXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=