@pwrdrvr/microapps-cdk
Version:
MicroApps framework, by PwrDrvr LLC, delivered as an AWS CDK construct that provides the DynamoDB, Router service, Deploy service, API Gateway, and CloudFront distribution.
94 lines • 14.1 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MicroAppsS3 = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const aws_cdk_lib_1 = require("aws-cdk-lib");
const cf = require("aws-cdk-lib/aws-cloudfront");
const cforigins = require("aws-cdk-lib/aws-cloudfront-origins");
const s3 = require("aws-cdk-lib/aws-s3");
const constructs_1 = require("constructs");
/**
* Create the durable MicroApps S3 Buckets
*
* These should be created in a stack that will not be deleted if
* there are breaking changes to MicroApps in the future.
*/
class MicroAppsS3 extends constructs_1.Construct {
get bucketApps() {
return this._bucketApps;
}
get bucketAppsOAI() {
return this._bucketAppsOAI;
}
get bucketAppsOriginApp() {
return this._bucketAppsOriginApp;
}
get bucketAppsOriginS3() {
return this._bucketAppsOriginS3;
}
get bucketAppsStaging() {
return this._bucketAppsStaging;
}
get bucketLogs() {
return this._bucketLogs;
}
constructor(scope, id, props) {
super(scope, id);
if (props === undefined) {
throw new Error('props must be set');
}
const { removalPolicy, assetNameRoot, assetNameSuffix, originShieldRegion } = props;
// Use Auto-Delete S3Bucket if removal policy is DESTROY
const s3AutoDeleteItems = removalPolicy === aws_cdk_lib_1.RemovalPolicy.DESTROY;
//
// S3 Bucket for Logging - Usable by many stacks
//
this._bucketLogs = new s3.Bucket(this, 'logs', {
bucketName: props.bucketLogsName,
autoDeleteObjects: s3AutoDeleteItems,
accessControl: s3.BucketAccessControl.BUCKET_OWNER_FULL_CONTROL,
objectOwnership: s3.ObjectOwnership.BUCKET_OWNER_PREFERRED,
removalPolicy,
});
//
// S3 Buckets for Apps
//
this._bucketApps = new s3.Bucket(this, 'apps', {
bucketName: props.bucketAppsName,
autoDeleteObjects: s3AutoDeleteItems,
removalPolicy,
});
this._bucketAppsStaging = new s3.Bucket(this, 'staging', {
bucketName: props.bucketAppsStagingName,
autoDeleteObjects: s3AutoDeleteItems,
removalPolicy,
});
// Create S3 Origin Identity
this._bucketAppsOAI = new cf.OriginAccessIdentity(this, 'oai', {
comment: assetNameRoot !== undefined ? `${assetNameRoot}${assetNameSuffix}` : undefined,
});
if (removalPolicy !== undefined) {
this._bucketAppsOAI.applyRemovalPolicy(removalPolicy);
}
// Add Origin for CloudFront
this._bucketAppsOriginS3 = new cforigins.S3Origin(this._bucketApps, {
originAccessIdentity: this.bucketAppsOAI,
originShieldRegion,
customHeaders: {
'x-microapps-origin': 's3',
},
});
this._bucketAppsOriginApp = new cforigins.S3Origin(this._bucketApps, {
originAccessIdentity: this.bucketAppsOAI,
originShieldRegion,
customHeaders: {
'x-microapps-origin': 'app',
},
});
}
}
exports.MicroAppsS3 = MicroAppsS3;
_a = JSII_RTTI_SYMBOL_1;
MicroAppsS3[_a] = { fqn: "@pwrdrvr/microapps-cdk.MicroAppsS3", version: "1.1.2" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWljcm9BcHBzUzMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvTWljcm9BcHBzUzMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBNEM7QUFDNUMsaURBQWlEO0FBQ2pELGdFQUFnRTtBQUNoRSx5Q0FBeUM7QUFDekMsMkNBQXVDO0FBd0d2Qzs7Ozs7R0FLRztBQUNILE1BQWEsV0FBWSxTQUFRLHNCQUFTO0lBRXhDLElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUdELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUdELElBQVcsbUJBQW1CO1FBQzVCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFHRCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0lBR0QsSUFBVyxpQkFBaUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUdELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBd0I7UUFDaEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUVELE1BQU0sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUVwRix3REFBd0Q7UUFDeEQsTUFBTSxpQkFBaUIsR0FBRyxhQUFhLEtBQUssMkJBQWEsQ0FBQyxPQUFPLENBQUM7UUFFbEUsRUFBRTtRQUNGLGdEQUFnRDtRQUNoRCxFQUFFO1FBQ0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUM3QyxVQUFVLEVBQUUsS0FBSyxDQUFDLGNBQWM7WUFDaEMsaUJBQWlCLEVBQUUsaUJBQWlCO1lBQ3BDLGFBQWEsRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMseUJBQXlCO1lBQy9ELGVBQWUsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLHNCQUFzQjtZQUMxRCxhQUFhO1NBQ2QsQ0FBQyxDQUFDO1FBRUgsRUFBRTtRQUNGLHNCQUFzQjtRQUN0QixFQUFFO1FBQ0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUM3QyxVQUFVLEVBQUUsS0FBSyxDQUFDLGNBQWM7WUFDaEMsaUJBQWlCLEVBQUUsaUJBQWlCO1lBQ3BDLGFBQWE7U0FDZCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDdkQsVUFBVSxFQUFFLEtBQUssQ0FBQyxxQkFBcUI7WUFDdkMsaUJBQWlCLEVBQUUsaUJBQWlCO1lBQ3BDLGFBQWE7U0FDZCxDQUFDLENBQUM7UUFFSCw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQzdELE9BQU8sRUFBRSxhQUFhLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsR0FBRyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUN4RixDQUFDLENBQUM7UUFDSCxJQUFJLGFBQWEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xFLG9CQUFvQixFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ3hDLGtCQUFrQjtZQUNsQixhQUFhLEVBQUU7Z0JBQ2Isb0JBQW9CLEVBQUUsSUFBSTthQUMzQjtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNuRSxvQkFBb0IsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUN4QyxrQkFBa0I7WUFDbEIsYUFBYSxFQUFFO2dCQUNiLG9CQUFvQixFQUFFLEtBQUs7YUFDNUI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQTVGSCxrQ0E2RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZW1vdmFsUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgY2YgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQnO1xuaW1wb3J0ICogYXMgY2ZvcmlnaW5zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZGZyb250LW9yaWdpbnMnO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBNaWNyb0FwcHMgUzNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTWljcm9BcHBzUzMge1xuICAvKipcbiAgICogUzMgYnVja2V0IGZvciBkZXBsb3llZCBhcHBsaWNhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldEFwcHM6IHMzLklCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIENsb3VkRnJvbnQgT3JpZ2luIEFjY2VzcyBJZGVudGl0eSBmb3IgdGhlIGRlcGxveWVkIGFwcGxpY2F0aW9ucyBidWNrZXRcbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldEFwcHNPQUk6IGNmLk9yaWdpbkFjY2Vzc0lkZW50aXR5O1xuXG4gIC8qKlxuICAgKiBDbG91ZEZyb250IE9yaWdpbiBmb3IgdGhlIGRlcGxveWVkIGFwcGxpY2F0aW9ucyBidWNrZXRcbiAgICogTWFya2VkIHdpdGggYHgtbWljcm9hcHBzLW9yaWdpbjogYXBwYCBzbyB0aGUgT3JpZ2luUmVxdWVzdCBmdW5jdGlvblxuICAgKiBrbm93cyB0byBzZW5kIHRoZSByZXF1ZXN0IHRvIHRoZSBhcHBsaWNhdGlvbiBvcmlnaW4gZmlyc3QsIGlmIGNvbmZpZ3VyZWRcbiAgICogZm9yIGEgcGFydGljdWxhciBhcHBsaWNhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldEFwcHNPcmlnaW5BcHA6IGNmb3JpZ2lucy5TM09yaWdpbjtcblxuICAvKipcbiAgICogQ2xvdWRGcm9udCBPcmlnaW4gZm9yIHRoZSBkZXBsb3llZCBhcHBsaWNhdGlvbnMgYnVja2V0XG4gICAqIE1hcmtlZCB3aXRoIGB4LW1pY3JvYXBwcy1vcmlnaW46IHMzYCBzbyB0aGUgT3JpZ2luUmVxdWVzdCBmdW5jdGlvblxuICAgKiBrbm93cyB0byBOT1Qgc2VuZCB0aGUgcmVxdWVzdCB0byB0aGUgYXBwbGljYXRpb24gb3JpZ2luIGFuZCBpbnN0ZWFkXG4gICAqIGxldCBpdCBmYWxsIHRocm91Z2ggdG8gdGhlIFMzIGJ1Y2tldC5cbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldEFwcHNPcmlnaW5TMzogY2ZvcmlnaW5zLlMzT3JpZ2luO1xuXG4gIC8qKlxuICAgKiBTMyBidWNrZXQgZm9yIHN0YWdlZCBhcHBsaWNhdGlvbnMgKHByaW9yIHRvIGRlcGxveSlcbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldEFwcHNTdGFnaW5nOiBzMy5JQnVja2V0O1xuXG4gIC8qKlxuICAgKiBTMyBidWNrZXQgZm9yIENsb3VkRnJvbnQgbG9nc1xuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0TG9nczogczMuSUJ1Y2tldDtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGluaXRpYWxpemUgYW4gaW5zdGFuY2Ugb2YgYE1pY3JvQXBwc1MzYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNaWNyb0FwcHNTM1Byb3BzIHtcbiAgLyoqXG4gICAqIFJlbW92YWxQb2xpY3kgb3ZlcnJpZGUgZm9yIGNoaWxkIHJlc291cmNlc1xuICAgKlxuICAgKiBOb3RlOiBpZiBzZXQgdG8gREVTVFJPWSB0aGUgUzMgYnVja2V0cyB3aWxsIGhhdmUgYGF1dG9EZWxldGVPYmplY3RzYCBzZXQgdG8gYHRydWVgXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcGVyIHJlc291cmNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBSZW1vdmFsUG9saWN5O1xuXG4gIC8qKlxuICAgKiBTMyBkZXBsb3llZCBhcHBzIGJ1Y2tldCBuYW1lXG4gICAqXG4gICAqIEBkZWZhdWx0IGF1dG8tYXNzaWduZWRcbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldEFwcHNOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTMyBzdGFnaW5nIGFwcHMgYnVja2V0IG5hbWVcbiAgICpcbiAgICogQGRlZmF1bHQgYXV0by1hc3NpZ25lZFxuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0QXBwc1N0YWdpbmdOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTMyBsb2dzIGJ1Y2tldCBuYW1lXG4gICAqXG4gICAqIEBkZWZhdWx0IGF1dG8tYXNzaWduZWRcbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldExvZ3NOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBhc3NldCBuYW1lIHJvb3RcbiAgICpcbiAgICogQGV4YW1wbGUgbWljcm9hcHBzXG4gICAqIEBkZWZhdWx0IC0gcmVzb3VyY2UgbmFtZXMgYXV0byBhc3NpZ25lZFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXROYW1lUm9vdD86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgYXNzZXQgbmFtZSBzdWZmaXhcbiAgICpcbiAgICogQGV4YW1wbGUgLWRldi1wci0xMlxuICAgKiBAZGVmYXVsdCBub25lXG4gICAqL1xuICByZWFkb25seSBhc3NldE5hbWVTdWZmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIE9yaWdpbiBTaGllbGQgUmVnaW9uXG4gICAqXG4gICAqIFRoaXMgc2hvdWxkIGJlIHRoZSByZWdpb24gd2hlcmUgdGhlIER5bmFtb0RCIGlzIGxvY2F0ZWQgc28gdGhlXG4gICAqIEVkZ2VUb09yaWdpbiBjYWxscyBoYXZlIHRoZSBsb3dlc3QgbGF0ZW5jeSAofjEgbXMpLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IG9yaWdpblNoaWVsZFJlZ2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDcmVhdGUgdGhlIGR1cmFibGUgTWljcm9BcHBzIFMzIEJ1Y2tldHNcbiAqXG4gKiBUaGVzZSBzaG91bGQgYmUgY3JlYXRlZCBpbiBhIHN0YWNrIHRoYXQgd2lsbCBub3QgYmUgZGVsZXRlZCBpZlxuICogdGhlcmUgYXJlIGJyZWFraW5nIGNoYW5nZXMgdG8gTWljcm9BcHBzIGluIHRoZSBmdXR1cmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBNaWNyb0FwcHNTMyBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElNaWNyb0FwcHNTMyB7XG4gIHByaXZhdGUgX2J1Y2tldEFwcHM6IHMzLklCdWNrZXQ7XG4gIHB1YmxpYyBnZXQgYnVja2V0QXBwcygpOiBzMy5JQnVja2V0IHtcbiAgICByZXR1cm4gdGhpcy5fYnVja2V0QXBwcztcbiAgfVxuXG4gIHByaXZhdGUgX2J1Y2tldEFwcHNPQUk6IGNmLk9yaWdpbkFjY2Vzc0lkZW50aXR5O1xuICBwdWJsaWMgZ2V0IGJ1Y2tldEFwcHNPQUkoKTogY2YuT3JpZ2luQWNjZXNzSWRlbnRpdHkge1xuICAgIHJldHVybiB0aGlzLl9idWNrZXRBcHBzT0FJO1xuICB9XG5cbiAgcHJpdmF0ZSBfYnVja2V0QXBwc09yaWdpbkFwcDogY2ZvcmlnaW5zLlMzT3JpZ2luO1xuICBwdWJsaWMgZ2V0IGJ1Y2tldEFwcHNPcmlnaW5BcHAoKTogY2ZvcmlnaW5zLlMzT3JpZ2luIHtcbiAgICByZXR1cm4gdGhpcy5fYnVja2V0QXBwc09yaWdpbkFwcDtcbiAgfVxuXG4gIHByaXZhdGUgX2J1Y2tldEFwcHNPcmlnaW5TMzogY2ZvcmlnaW5zLlMzT3JpZ2luO1xuICBwdWJsaWMgZ2V0IGJ1Y2tldEFwcHNPcmlnaW5TMygpOiBjZm9yaWdpbnMuUzNPcmlnaW4ge1xuICAgIHJldHVybiB0aGlzLl9idWNrZXRBcHBzT3JpZ2luUzM7XG4gIH1cblxuICBwcml2YXRlIF9idWNrZXRBcHBzU3RhZ2luZzogczMuSUJ1Y2tldDtcbiAgcHVibGljIGdldCBidWNrZXRBcHBzU3RhZ2luZygpOiBzMy5JQnVja2V0IHtcbiAgICByZXR1cm4gdGhpcy5fYnVja2V0QXBwc1N0YWdpbmc7XG4gIH1cblxuICBwcml2YXRlIF9idWNrZXRMb2dzOiBzMy5JQnVja2V0O1xuICBwdWJsaWMgZ2V0IGJ1Y2tldExvZ3MoKTogczMuSUJ1Y2tldCB7XG4gICAgcmV0dXJuIHRoaXMuX2J1Y2tldExvZ3M7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IE1pY3JvQXBwc1MzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgaWYgKHByb3BzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncHJvcHMgbXVzdCBiZSBzZXQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IHJlbW92YWxQb2xpY3ksIGFzc2V0TmFtZVJvb3QsIGFzc2V0TmFtZVN1ZmZpeCwgb3JpZ2luU2hpZWxkUmVnaW9uIH0gPSBwcm9wcztcblxuICAgIC8vIFVzZSBBdXRvLURlbGV0ZSBTM0J1Y2tldCBpZiByZW1vdmFsIHBvbGljeSBpcyBERVNUUk9ZXG4gICAgY29uc3QgczNBdXRvRGVsZXRlSXRlbXMgPSByZW1vdmFsUG9saWN5ID09PSBSZW1vdmFsUG9saWN5LkRFU1RST1k7XG5cbiAgICAvL1xuICAgIC8vIFMzIEJ1Y2tldCBmb3IgTG9nZ2luZyAtIFVzYWJsZSBieSBtYW55IHN0YWNrc1xuICAgIC8vXG4gICAgdGhpcy5fYnVja2V0TG9ncyA9IG5ldyBzMy5CdWNrZXQodGhpcywgJ2xvZ3MnLCB7XG4gICAgICBidWNrZXROYW1lOiBwcm9wcy5idWNrZXRMb2dzTmFtZSxcbiAgICAgIGF1dG9EZWxldGVPYmplY3RzOiBzM0F1dG9EZWxldGVJdGVtcyxcbiAgICAgIGFjY2Vzc0NvbnRyb2w6IHMzLkJ1Y2tldEFjY2Vzc0NvbnRyb2wuQlVDS0VUX09XTkVSX0ZVTExfQ09OVFJPTCxcbiAgICAgIG9iamVjdE93bmVyc2hpcDogczMuT2JqZWN0T3duZXJzaGlwLkJVQ0tFVF9PV05FUl9QUkVGRVJSRUQsXG4gICAgICByZW1vdmFsUG9saWN5LFxuICAgIH0pO1xuXG4gICAgLy9cbiAgICAvLyBTMyBCdWNrZXRzIGZvciBBcHBzXG4gICAgLy9cbiAgICB0aGlzLl9idWNrZXRBcHBzID0gbmV3IHMzLkJ1Y2tldCh0aGlzLCAnYXBwcycsIHtcbiAgICAgIGJ1Y2tldE5hbWU6IHByb3BzLmJ1Y2tldEFwcHNOYW1lLFxuICAgICAgYXV0b0RlbGV0ZU9iamVjdHM6IHMzQXV0b0RlbGV0ZUl0ZW1zLFxuICAgICAgcmVtb3ZhbFBvbGljeSxcbiAgICB9KTtcbiAgICB0aGlzLl9idWNrZXRBcHBzU3RhZ2luZyA9IG5ldyBzMy5CdWNrZXQodGhpcywgJ3N0YWdpbmcnLCB7XG4gICAgICBidWNrZXROYW1lOiBwcm9wcy5idWNrZXRBcHBzU3RhZ2luZ05hbWUsXG4gICAgICBhdXRvRGVsZXRlT2JqZWN0czogczNBdXRvRGVsZXRlSXRlbXMsXG4gICAgICByZW1vdmFsUG9saWN5LFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIFMzIE9yaWdpbiBJZGVudGl0eVxuICAgIHRoaXMuX2J1Y2tldEFwcHNPQUkgPSBuZXcgY2YuT3JpZ2luQWNjZXNzSWRlbnRpdHkodGhpcywgJ29haScsIHtcbiAgICAgIGNvbW1lbnQ6IGFzc2V0TmFtZVJvb3QgIT09IHVuZGVmaW5lZCA/IGAke2Fzc2V0TmFtZVJvb3R9JHthc3NldE5hbWVTdWZmaXh9YCA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgICBpZiAocmVtb3ZhbFBvbGljeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9idWNrZXRBcHBzT0FJLmFwcGx5UmVtb3ZhbFBvbGljeShyZW1vdmFsUG9saWN5KTtcbiAgICB9XG5cbiAgICAvLyBBZGQgT3JpZ2luIGZvciBDbG91ZEZyb250XG4gICAgdGhpcy5fYnVja2V0QXBwc09yaWdpblMzID0gbmV3IGNmb3JpZ2lucy5TM09yaWdpbih0aGlzLl9idWNrZXRBcHBzLCB7XG4gICAgICBvcmlnaW5BY2Nlc3NJZGVudGl0eTogdGhpcy5idWNrZXRBcHBzT0FJLFxuICAgICAgb3JpZ2luU2hpZWxkUmVnaW9uLFxuICAgICAgY3VzdG9tSGVhZGVyczoge1xuICAgICAgICAneC1taWNyb2FwcHMtb3JpZ2luJzogJ3MzJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLl9idWNrZXRBcHBzT3JpZ2luQXBwID0gbmV3IGNmb3JpZ2lucy5TM09yaWdpbih0aGlzLl9idWNrZXRBcHBzLCB7XG4gICAgICBvcmlnaW5BY2Nlc3NJZGVudGl0eTogdGhpcy5idWNrZXRBcHBzT0FJLFxuICAgICAgb3JpZ2luU2hpZWxkUmVnaW9uLFxuICAgICAgY3VzdG9tSGVhZGVyczoge1xuICAgICAgICAneC1taWNyb2FwcHMtb3JpZ2luJzogJ2FwcCcsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=