UNPKG

awscdk-resources-mongodbatlas

Version:

MongoDB Atlas CDK Construct Library for AWS CloudFormation Resources

233 lines 42.9 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.CfnCloudBackupSnapshot = exports.ApiAtlasDiskBackupShardedClusterSnapshotViewType = exports.ApiAtlasDiskBackupShardedClusterSnapshotViewStatus = exports.ApiAtlasDiskBackupShardedClusterSnapshotViewSnapshotType = exports.ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType = exports.ApiAtlasDiskBackupShardedClusterSnapshotMemberViewCloudProvider = exports.CfnCloudBackupSnapshotPropsSnapshotType = exports.CfnCloudBackupSnapshotPropsFrequencyType = exports.CfnCloudBackupSnapshotPropsInstanceType = void 0; exports.toJson_CfnCloudBackupSnapshotProps = toJson_CfnCloudBackupSnapshotProps; exports.toJson_ApiAtlasDiskBackupShardedClusterSnapshotMemberView = toJson_ApiAtlasDiskBackupShardedClusterSnapshotMemberView; exports.toJson_ApiAtlasDiskBackupShardedClusterSnapshotView = toJson_ApiAtlasDiskBackupShardedClusterSnapshotView; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); // Generated by cdk-import const cdk = require("aws-cdk-lib"); /** * Converts an object of type 'CfnCloudBackupSnapshotProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_CfnCloudBackupSnapshotProps(obj) { if (obj === undefined) { return undefined; } const result = { Profile: obj.profile, InstanceType: obj.instanceType, InstanceName: obj.instanceName, Description: obj.description, FrequencyType: obj.frequencyType, ProjectId: obj.projectId, IncludeCount: obj.includeCount, ItemsPerPage: obj.itemsPerPage, Members: obj.members?.map((y) => toJson_ApiAtlasDiskBackupShardedClusterSnapshotMemberView(y)), PageNum: obj.pageNum, PolicyItems: obj.policyItems?.map((y) => y), Results: obj.results?.map((y) => toJson_ApiAtlasDiskBackupShardedClusterSnapshotView(y)), RetentionInDays: obj.retentionInDays, SnapshotType: obj.snapshotType, TotalCount: obj.totalCount, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** * Type of instance specified on the Instance Name. * * @schema CfnCloudBackupSnapshotPropsInstanceType */ var CfnCloudBackupSnapshotPropsInstanceType; (function (CfnCloudBackupSnapshotPropsInstanceType) { /** cluster */ CfnCloudBackupSnapshotPropsInstanceType["CLUSTER"] = "cluster"; })(CfnCloudBackupSnapshotPropsInstanceType || (exports.CfnCloudBackupSnapshotPropsInstanceType = CfnCloudBackupSnapshotPropsInstanceType = {})); /** * Human-readable label that identifies how often this snapshot triggers. * * @schema CfnCloudBackupSnapshotPropsFrequencyType */ var CfnCloudBackupSnapshotPropsFrequencyType; (function (CfnCloudBackupSnapshotPropsFrequencyType) { /** hourly */ CfnCloudBackupSnapshotPropsFrequencyType["HOURLY"] = "hourly"; /** daily */ CfnCloudBackupSnapshotPropsFrequencyType["DAILY"] = "daily"; /** weekly */ CfnCloudBackupSnapshotPropsFrequencyType["WEEKLY"] = "weekly"; /** monthly */ CfnCloudBackupSnapshotPropsFrequencyType["MONTHLY"] = "monthly"; })(CfnCloudBackupSnapshotPropsFrequencyType || (exports.CfnCloudBackupSnapshotPropsFrequencyType = CfnCloudBackupSnapshotPropsFrequencyType = {})); /** * Converts an object of type 'ApiAtlasDiskBackupShardedClusterSnapshotMemberView' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_ApiAtlasDiskBackupShardedClusterSnapshotMemberView(obj) { if (obj === undefined) { return undefined; } const result = { CloudProvider: obj.cloudProvider, Id: obj.id, ReplicaSetName: obj.replicaSetName, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {}); } /** * Converts an object of type 'ApiAtlasDiskBackupShardedClusterSnapshotView' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_ApiAtlasDiskBackupShardedClusterSnapshotView(obj) { if (obj === undefined) { return undefined; } const result = { CreatedAt: obj.createdAt, Description: obj.description, ExpiresAt: obj.expiresAt, FrequencyType: obj.frequencyType, Id: obj.id, MasterKeyUUID: obj.masterKeyUuid, Members: obj.members?.map((y) => toJson_ApiAtlasDiskBackupShardedClusterSnapshotMemberView(y)), MongodVersion: obj.mongodVersion, PolicyItems: obj.policyItems?.map((y) => y), SnapshotIds: obj.snapshotIds?.map((y) => y), SnapshotType: obj.snapshotType, Status: obj.status, StorageSizeBytes: obj.storageSizeBytes, Type: obj.type, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** * Human-readable label that identifies when this snapshot triggers. * * @schema CfnCloudBackupSnapshotPropsSnapshotType */ var CfnCloudBackupSnapshotPropsSnapshotType; (function (CfnCloudBackupSnapshotPropsSnapshotType) { /** onDemand */ CfnCloudBackupSnapshotPropsSnapshotType["ON_DEMAND"] = "onDemand"; /** scheduled */ CfnCloudBackupSnapshotPropsSnapshotType["SCHEDULED"] = "scheduled"; })(CfnCloudBackupSnapshotPropsSnapshotType || (exports.CfnCloudBackupSnapshotPropsSnapshotType = CfnCloudBackupSnapshotPropsSnapshotType = {})); /** * Human-readable label that identifies the cloud provider that stores this snapshot. The resource returns this parameter when `"type": "replicaSet".` * * @schema ApiAtlasDiskBackupShardedClusterSnapshotMemberViewCloudProvider */ var ApiAtlasDiskBackupShardedClusterSnapshotMemberViewCloudProvider; (function (ApiAtlasDiskBackupShardedClusterSnapshotMemberViewCloudProvider) { /** AWS */ ApiAtlasDiskBackupShardedClusterSnapshotMemberViewCloudProvider["AWS"] = "AWS"; /** AZURE */ ApiAtlasDiskBackupShardedClusterSnapshotMemberViewCloudProvider["AZURE"] = "AZURE"; /** GCP */ ApiAtlasDiskBackupShardedClusterSnapshotMemberViewCloudProvider["GCP"] = "GCP"; })(ApiAtlasDiskBackupShardedClusterSnapshotMemberViewCloudProvider || (exports.ApiAtlasDiskBackupShardedClusterSnapshotMemberViewCloudProvider = ApiAtlasDiskBackupShardedClusterSnapshotMemberViewCloudProvider = {})); /** * Human-readable label that identifies how often this snapshot triggers. * * @schema ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType */ var ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType; (function (ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType) { /** hourly */ ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType["HOURLY"] = "hourly"; /** daily */ ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType["DAILY"] = "daily"; /** weekly */ ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType["WEEKLY"] = "weekly"; /** monthly */ ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType["MONTHLY"] = "monthly"; })(ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType || (exports.ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType = ApiAtlasDiskBackupShardedClusterSnapshotViewFrequencyType = {})); /** * Human-readable label that identifies when this snapshot triggers. * * @schema ApiAtlasDiskBackupShardedClusterSnapshotViewSnapshotType */ var ApiAtlasDiskBackupShardedClusterSnapshotViewSnapshotType; (function (ApiAtlasDiskBackupShardedClusterSnapshotViewSnapshotType) { /** onDemand */ ApiAtlasDiskBackupShardedClusterSnapshotViewSnapshotType["ON_DEMAND"] = "onDemand"; /** scheduled */ ApiAtlasDiskBackupShardedClusterSnapshotViewSnapshotType["SCHEDULED"] = "scheduled"; })(ApiAtlasDiskBackupShardedClusterSnapshotViewSnapshotType || (exports.ApiAtlasDiskBackupShardedClusterSnapshotViewSnapshotType = ApiAtlasDiskBackupShardedClusterSnapshotViewSnapshotType = {})); /** * Human-readable label that indicates the stage of the backup process for this snapshot. * * @schema ApiAtlasDiskBackupShardedClusterSnapshotViewStatus */ var ApiAtlasDiskBackupShardedClusterSnapshotViewStatus; (function (ApiAtlasDiskBackupShardedClusterSnapshotViewStatus) { /** queued */ ApiAtlasDiskBackupShardedClusterSnapshotViewStatus["QUEUED"] = "queued"; /** inProgress */ ApiAtlasDiskBackupShardedClusterSnapshotViewStatus["IN_PROGRESS"] = "inProgress"; /** completed */ ApiAtlasDiskBackupShardedClusterSnapshotViewStatus["COMPLETED"] = "completed"; /** failed */ ApiAtlasDiskBackupShardedClusterSnapshotViewStatus["FAILED"] = "failed"; })(ApiAtlasDiskBackupShardedClusterSnapshotViewStatus || (exports.ApiAtlasDiskBackupShardedClusterSnapshotViewStatus = ApiAtlasDiskBackupShardedClusterSnapshotViewStatus = {})); /** * Human-readable label that categorizes the cluster as a replica set or sharded cluster. * * @schema ApiAtlasDiskBackupShardedClusterSnapshotViewType */ var ApiAtlasDiskBackupShardedClusterSnapshotViewType; (function (ApiAtlasDiskBackupShardedClusterSnapshotViewType) { /** REPLICA_SET */ ApiAtlasDiskBackupShardedClusterSnapshotViewType["REPLICA_SET"] = "REPLICA_SET"; /** SHARDED_CLUSTER */ ApiAtlasDiskBackupShardedClusterSnapshotViewType["SHARDED_CLUSTER"] = "SHARDED_CLUSTER"; })(ApiAtlasDiskBackupShardedClusterSnapshotViewType || (exports.ApiAtlasDiskBackupShardedClusterSnapshotViewType = ApiAtlasDiskBackupShardedClusterSnapshotViewType = {})); /** * A CloudFormation `MongoDB::Atlas::CloudBackupSnapshot` * * @cloudformationResource MongoDB::Atlas::CloudBackupSnapshot * @stability external */ class CfnCloudBackupSnapshot extends cdk.CfnResource { /** * Create a new `MongoDB::Atlas::CloudBackupSnapshot`. * * @param scope - scope in which this resource is defined * @param id - scoped id of the resource * @param props - resource properties */ constructor(scope, id, props) { super(scope, id, { type: CfnCloudBackupSnapshot.CFN_RESOURCE_TYPE_NAME, properties: toJson_CfnCloudBackupSnapshotProps(props), }); this.props = props; this.attrSnapshotId = cdk.Token.asString(this.getAtt("SnapshotId")); this.attrSnapshotIds = cdk.Token.asList(this.getAtt("SnapshotIds")); this.attrMasterKeyUUID = cdk.Token.asString(this.getAtt("MasterKeyUUID")); this.attrType = cdk.Token.asString(this.getAtt("Type")); this.attrExpiresAt = cdk.Token.asString(this.getAtt("ExpiresAt")); this.attrStorageSizeBytes = cdk.Token.asString(this.getAtt("StorageSizeBytes")); this.attrId = cdk.Token.asString(this.getAtt("Id")); this.attrCreatedAt = cdk.Token.asString(this.getAtt("CreatedAt")); this.attrCloudProvider = cdk.Token.asString(this.getAtt("CloudProvider")); this.attrMongodVersion = cdk.Token.asString(this.getAtt("MongodVersion")); this.attrReplicaSetName = cdk.Token.asString(this.getAtt("ReplicaSetName")); this.attrStatus = cdk.Token.asString(this.getAtt("Status")); } } exports.CfnCloudBackupSnapshot = CfnCloudBackupSnapshot; _a = JSII_RTTI_SYMBOL_1; CfnCloudBackupSnapshot[_a] = { fqn: "awscdk-resources-mongodbatlas.CfnCloudBackupSnapshot", version: "4.0.0" }; /** * The CloudFormation resource type name for this resource class. */ CfnCloudBackupSnapshot.CFN_RESOURCE_TYPE_NAME = "MongoDB::Atlas::CloudBackupSnapshot"; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbDEtcmVzb3VyY2VzL2Nsb3VkLWJhY2t1cC1zbmFwc2hvdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBd0hBLGdGQWdDQztBQTJERCw4SEFnQkM7QUE4R0Qsa0hBNkJDOztBQTlXRCwwQkFBMEI7QUFDMUIsbUNBQW1DO0FBbUhuQzs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQixrQ0FBa0MsQ0FDaEQsR0FBNEM7SUFFNUMsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDdEIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHO1FBQ2IsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO1FBQ3BCLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWTtRQUM5QixZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVk7UUFDOUIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXO1FBQzVCLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYTtRQUNoQyxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7UUFDeEIsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZO1FBQzlCLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWTtRQUM5QixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUM5Qix5REFBeUQsQ0FBQyxDQUFDLENBQUMsQ0FDN0Q7UUFDRCxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87UUFDcEIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0MsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDOUIsbURBQW1ELENBQUMsQ0FB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QUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQzs7QUE5Rkgsd0RBK0ZDOzs7QUE5RkM7O0dBRUc7QUFDb0IsNkNBQXNCLEdBQzNDLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGNkay1pbXBvcnRcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuLyoqXG4gKiBSZXR1cm5zLCB0YWtlcywgYW5kIHJlbW92ZXMgQ2xvdWQgQmFja3VwIHNuYXBzaG90cy5cbiAqXG4gKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgcHJvZmlsZSBpcyBkZWZpbmVkIGluIEFXUyBTZWNyZXQgbWFuYWdlci4gU2VlIFtTZWNyZXQgTWFuYWdlciBQcm9maWxlIHNldHVwXSguLi8uLi8uLi9leGFtcGxlcy9wcm9maWxlLXNlY3JldC55YW1sKS5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjUHJvZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZSBvZiBpbnN0YW5jZSBzcGVjaWZpZWQgb24gdGhlIEluc3RhbmNlIE5hbWUuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzI0luc3RhbmNlVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VUeXBlOiBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHNJbnN0YW5jZVR5cGU7XG5cbiAgLyoqXG4gICAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjSW5zdGFuY2VOYW1lXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgcGhyYXNlIG9yIHNlbnRlbmNlIHRoYXQgZXhwbGFpbnMgdGhlIHB1cnBvc2Ugb2YgdGhlIHNuYXBzaG90LiBUaGUgcmVzb3VyY2UgcmV0dXJucyB0aGlzIHBhcmFtZXRlciB3aGVuIGBcInN0YXR1c1wiOiBcIm9uRGVtYW5kXCJgLlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wcyNEZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyBob3cgb2Z0ZW4gdGhpcyBzbmFwc2hvdCB0cmlnZ2Vycy5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjRnJlcXVlbmN5VHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgZnJlcXVlbmN5VHlwZT86IENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wc0ZyZXF1ZW5jeVR5cGU7XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSAyNC1oZXhhZGVjaW1hbCBkaWdpdCBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHlvdXIgcHJvamVjdC5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjUHJvamVjdElkXG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogRmxhZyB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSByZXNwb25zZSByZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgKCoqdG90YWxDb3VudCoqKSBpbiB0aGUgcmVzcG9uc2UuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzI0luY2x1ZGVDb3VudFxuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZUNvdW50PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGl0ZW1zIHRoYXQgdGhlIHJlc3BvbnNlIHJldHVybnMgcGVyIHBhZ2UuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzI0l0ZW1zUGVyUGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgaXRlbXNQZXJQYWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBMaXN0IHRoYXQgaW5jbHVkZXMgdGhlIHNuYXBzaG90cyBhbmQgdGhlIGNsb3VkIHByb3ZpZGVyIHRoYXQgc3RvcmVzIHRoZSBzbmFwc2hvdHMuIFRoZSByZXNvdXJjZSByZXR1cm5zIHRoaXMgcGFyYW1ldGVyIHdoZW4gYFwidHlwZVwiIDogXCJTSEFSREVEX0NMVVNURVJcImAuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzI01lbWJlcnNcbiAgICovXG4gIHJlYWRvbmx5IG1lbWJlcnM/OiBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90TWVtYmVyVmlld1tdO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgdGhlIHBhZ2UgdGhhdCBkaXNwbGF5cyB0aGUgY3VycmVudCBzZXQgb2YgdGhlIHRvdGFsIG9iamVjdHMgdGhhdCB0aGUgcmVzcG9uc2UgcmV0dXJucy5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjUGFnZU51bVxuICAgKi9cbiAgcmVhZG9ubHkgcGFnZU51bT86IG51bWJlcjtcblxuICAvKipcbiAgICogTGlzdCB0aGF0IGNvbnRhaW5zIHVuaXF1ZSBpZGVudGlmaWVycyBmb3IgdGhlIHBvbGljeSBpdGVtcy5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjUG9saWN5SXRlbXNcbiAgICovXG4gIHJlYWRvbmx5IHBvbGljeUl0ZW1zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgcmV0dXJuZWQgZG9jdW1lbnRzIHRoYXQgTW9uZ29EQiBDbG91ZCBwcm92aWRlcyB3aGVuIGNvbXBsZXRpbmcgdGhpcyByZXF1ZXN0LlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wcyNSZXN1bHRzXG4gICAqL1xuICByZWFkb25seSByZXN1bHRzPzogQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXdbXTtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGRheXMgdGhhdCBNb25nb0RCIENsb3VkIHNob3VsZCByZXRhaW4gdGhlIG9uLWRlbWFuZCBzbmFwc2hvdC4gTXVzdCBiZSBhdCBsZWFzdCAqKjEqKlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wcyNSZXRlbnRpb25JbkRheXNcbiAgICovXG4gIHJlYWRvbmx5IHJldGVudGlvbkluRGF5cz86IG51bWJlcjtcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHdoZW4gdGhpcyBzbmFwc2hvdCB0cmlnZ2Vycy5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjU25hcHNob3RUeXBlXG4gICAqL1xuICByZWFkb25seSBzbmFwc2hvdFR5cGU/OiBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHNTbmFwc2hvdFR5cGU7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBkb2N1bWVudHMgcmV0dXJuZWQgaW4gdGhpcyByZXNwb25zZS5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjVG90YWxDb3VudFxuICAgKi9cbiAgcmVhZG9ubHkgdG90YWxDb3VudD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMoXG4gIG9iajogQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzIHwgdW5kZWZpbmVkXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgUHJvZmlsZTogb2JqLnByb2ZpbGUsXG4gICAgSW5zdGFuY2VUeXBlOiBvYmouaW5zdGFuY2VUeXBlLFxuICAgIEluc3RhbmNlTmFtZTogb2JqLmluc3RhbmNlTmFtZSxcbiAgICBEZXNjcmlwdGlvbjogb2JqLmRlc2NyaXB0aW9uLFxuICAgIEZyZXF1ZW5jeVR5cGU6IG9iai5mcmVxdWVuY3lUeXBlLFxuICAgIFByb2plY3RJZDogb2JqLnByb2plY3RJZCxcbiAgICBJbmNsdWRlQ291bnQ6IG9iai5pbmNsdWRlQ291bnQsXG4gICAgSXRlbXNQZXJQYWdlOiBvYmouaXRlbXNQZXJQYWdlLFxuICAgIE1lbWJlcnM6IG9iai5tZW1iZXJzPy5tYXAoKHkpID0+XG4gICAgICB0b0pzb25fQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdE1lbWJlclZpZXcoeSlcbiAgICApLFxuICAgIFBhZ2VOdW06IG9iai5wYWdlTnVtLFxuICAgIFBvbGljeUl0ZW1zOiBvYmoucG9saWN5SXRlbXM/Lm1hcCgoeSkgPT4geSksXG4gICAgUmVzdWx0czogb2JqLnJlc3VsdHM/Lm1hcCgoeSkgPT5cbiAgICAgIHRvSnNvbl9BcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90Vmlldyh5KVxuICAgICksXG4gICAgUmV0ZW50aW9uSW5EYXlzOiBvYmoucmV0ZW50aW9uSW5EYXlzLFxuICAgIFNuYXBzaG90VHlwZTogb2JqLnNuYXBzaG90VHlwZSxcbiAgICBUb3RhbENvdW50OiBvYmoudG90YWxDb3VudCxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKFxuICAgIChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkID8gciA6IHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLFxuICAgIHt9XG4gICk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogVHlwZSBvZiBpbnN0YW5jZSBzcGVjaWZpZWQgb24gdGhlIEluc3RhbmNlIE5hbWUuXG4gKlxuICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHNJbnN0YW5jZVR5cGVcbiAqL1xuZXhwb3J0IGVudW0gQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzSW5zdGFuY2VUeXBlIHtcbiAgLyoqIGNsdXN0ZXIgKi9cbiAgQ0xVU1RFUiA9IFwiY2x1c3RlclwiLFxufVxuXG4vKipcbiAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyBob3cgb2Z0ZW4gdGhpcyBzbmFwc2hvdCB0cmlnZ2Vycy5cbiAqXG4gKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wc0ZyZXF1ZW5jeVR5cGVcbiAqL1xuZXhwb3J0IGVudW0gQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzRnJlcXVlbmN5VHlwZSB7XG4gIC8qKiBob3VybHkgKi9cbiAgSE9VUkxZID0gXCJob3VybHlcIixcbiAgLyoqIGRhaWx5ICovXG4gIERBSUxZID0gXCJkYWlseVwiLFxuICAvKiogd2Vla2x5ICovXG4gIFdFRUtMWSA9IFwid2Vla2x5XCIsXG4gIC8qKiBtb250aGx5ICovXG4gIE1PTlRITFkgPSBcIm1vbnRobHlcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RNZW1iZXJWaWV3XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdE1lbWJlclZpZXcge1xuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHRoZSBjbG91ZCBwcm92aWRlciB0aGF0IHN0b3JlcyB0aGlzIHNuYXBzaG90LiBUaGUgcmVzb3VyY2UgcmV0dXJucyB0aGlzIHBhcmFtZXRlciB3aGVuIGBcInR5cGVcIjogXCJyZXBsaWNhU2V0XCIuYFxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RNZW1iZXJWaWV3I0Nsb3VkUHJvdmlkZXJcbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkUHJvdmlkZXI/OiBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90TWVtYmVyVmlld0Nsb3VkUHJvdmlkZXI7XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSAyNC1oZXhhZGVjaW1hbCBkaWdpdCBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSBzbmFwc2hvdC5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90TWVtYmVyVmlldyNJZFxuICAgKi9cbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyB0aGUgc2hhcmQgb3IgY29uZmlnIGhvc3QgZnJvbSB3aGljaCBNb25nb0RCIENsb3VkIHRvb2sgdGhpcyBzbmFwc2hvdC5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90TWVtYmVyVmlldyNSZXBsaWNhU2V0TmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVwbGljYVNldE5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0FwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RNZW1iZXJWaWV3JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9BcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90TWVtYmVyVmlldyhcbiAgb2JqOiBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90TWVtYmVyVmlldyB8IHVuZGVmaW5lZFxuKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIENsb3VkUHJvdmlkZXI6IG9iai5jbG91ZFByb3ZpZGVyLFxuICAgIElkOiBvYmouaWQsXG4gICAgUmVwbGljYVNldE5hbWU6IG9iai5yZXBsaWNhU2V0TmFtZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKFxuICAgIChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkID8gciA6IHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLFxuICAgIHt9XG4gICk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90Vmlld1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3IHtcbiAgLyoqXG4gICAqIERhdGUgYW5kIHRpbWUgd2hlbiBNb25nb0RCIENsb3VkIHRvb2sgdGhlIHNuYXBzaG90LiBUaGlzIHBhcmFtZXRlciBleHByZXNzZXMgaXRzIHZhbHVlIGluIHRoZSBJU08gODYwMSB0aW1lc3RhbXAgZm9ybWF0IGluIFVUQy5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90VmlldyNDcmVhdGVkQXRcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZWRBdD86IHN0cmluZztcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgcGhyYXNlIG9yIHNlbnRlbmNlIHRoYXQgZXhwbGFpbnMgdGhlIHB1cnBvc2Ugb2YgdGhlIHNuYXBzaG90LiBUaGUgcmVzb3VyY2UgcmV0dXJucyB0aGlzIHBhcmFtZXRlciB3aGVuIGBcInN0YXR1c1wiOiBcIm9uRGVtYW5kXCJgLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3I0Rlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogRGF0ZSBhbmQgdGltZSB3aGVuIE1vbmdvREIgQ2xvdWQgZGVsZXRlcyB0aGUgc25hcHNob3QuIFRoaXMgcGFyYW1ldGVyIGV4cHJlc3NlcyBpdHMgdmFsdWUgaW4gdGhlIElTTyA4NjAxIHRpbWVzdGFtcCBmb3JtYXQgaW4gVVRDLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3I0V4cGlyZXNBdFxuICAgKi9cbiAgcmVhZG9ubHkgZXhwaXJlc0F0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIdW1hbi1yZWFkYWJsZSBsYWJlbCB0aGF0IGlkZW50aWZpZXMgaG93IG9mdGVuIHRoaXMgc25hcHNob3QgdHJpZ2dlcnMuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXcjRnJlcXVlbmN5VHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgZnJlcXVlbmN5VHlwZT86IEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3RnJlcXVlbmN5VHlwZTtcblxuICAvKipcbiAgICogVW5pcXVlIDI0LWhleGFkZWNpbWFsIGRpZ2l0IHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHNuYXBzaG90LlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3I0lkXG4gICAqL1xuICByZWFkb25seSBpZD86IHN0cmluZztcblxuICAvKipcbiAgICogVW5pcXVlIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIEFtYXpvbiBXZWIgU2VydmljZXMgKEFXUykgS2V5IE1hbmFnZW1lbnQgU2VydmljZSAoS01TKSBDdXN0b21lciBNYXN0ZXIgS2V5IChDTUspIHVzZWQgdG8gZW5jcnlwdCB0aGUgc25hcHNob3QuIFRoZSByZXNvdXJjZSByZXR1cm5zIHRoaXMgdmFsdWUgd2hlbiBgXCJlbmNyeXB0aW9uRW5hYmxlZFwiIDogdHJ1ZWAuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXcjTWFzdGVyS2V5VVVJRFxuICAgKi9cbiAgcmVhZG9ubHkgbWFzdGVyS2V5VXVpZD86IHN0cmluZztcblxuICAvKipcbiAgICogTGlzdCB0aGF0IGluY2x1ZGVzIHRoZSBzbmFwc2hvdHMgYW5kIHRoZSBjbG91ZCBwcm92aWRlciB0aGF0IHN0b3JlcyB0aGUgc25hcHNob3RzLiBUaGUgcmVzb3VyY2UgcmV0dXJucyB0aGlzIHBhcmFtZXRlciB3aGVuIGBcInR5cGVcIiA6IFwiU0hBUkRFRF9DTFVTVEVSXCJgLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3I01lbWJlcnNcbiAgICovXG4gIHJlYWRvbmx5IG1lbWJlcnM/OiBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90TWVtYmVyVmlld1tdO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHRoZSBNb25nb0RCIGhvc3QgdGhhdCB0aGlzIHNuYXBzaG90IGJhY2tzIHVwLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3I01vbmdvZFZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IG1vbmdvZFZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExpc3QgdGhhdCBjb250YWlucyB1bmlxdWUgaWRlbnRpZmllcnMgZm9yIHRoZSBwb2xpY3kgaXRlbXMuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXcjUG9saWN5SXRlbXNcbiAgICovXG4gIHJlYWRvbmx5IHBvbGljeUl0ZW1zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIExpc3QgdGhhdCBjb250YWlucyB0aGUgdW5pcXVlIGlkZW50aWZpZXJzIG9mIHRoZSBzbmFwc2hvdHMgY3JlYXRlZCBmb3IgdGhlIHNoYXJkcyBhbmQgY29uZmlnIGhvc3QgZm9yIGEgc2hhcmRlZCBjbHVzdGVyLiBUaGUgcmVzb3VyY2UgcmV0dXJucyB0aGlzIHBhcmFtZXRlciB3aGVuIGBcInR5cGVcIjogXCJTSEFSREVEX0NMVVNURVJcImAuIFRoZXNlIGlkZW50aWZpZXJzIHNob3VsZCBtYXRjaCB0aGUgb25lcyBzcGVjaWZpZWQgaW4gdGhlICoqbWVtYmVyc1tuXS5pZCoqIHBhcmFtZXRlcnMuIFRoaXMgYWxsb3dzIHlvdSB0byBtYXAgYSBzbmFwc2hvdCB0byBpdHMgc2hhcmQgb3IgY29uZmlnIGhvc3QgbmFtZS5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90VmlldyNTbmFwc2hvdElkc1xuICAgKi9cbiAgcmVhZG9ubHkgc25hcHNob3RJZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHdoZW4gdGhpcyBzbmFwc2hvdCB0cmlnZ2Vycy5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90VmlldyNTbmFwc2hvdFR5cGVcbiAgICovXG4gIHJlYWRvbmx5IHNuYXBzaG90VHlwZT86IEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3U25hcHNob3RUeXBlO1xuXG4gIC8qKlxuICAgKiBIdW1hbi1yZWFkYWJsZSBsYWJlbCB0aGF0IGluZGljYXRlcyB0aGUgc3RhZ2Ugb2YgdGhlIGJhY2t1cCBwcm9jZXNzIGZvciB0aGlzIHNuYXBzaG90LlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3I1N0YXR1c1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXdTdGF0dXM7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBieXRlcyB0YWtlbiB0byBzdG9yZSB0aGUgYmFja3VwIHNuYXBzaG90LlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3I1N0b3JhZ2VTaXplQnl0ZXNcbiAgICovXG4gIHJlYWRvbmx5IHN0b3JhZ2VTaXplQnl0ZXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgY2F0ZWdvcml6ZXMgdGhlIGNsdXN0ZXIgYXMgYSByZXBsaWNhIHNldCBvciBzaGFyZGVkIGNsdXN0ZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXcjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3VHlwZTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXcnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0FwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3KFxuICBvYmo6IEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3IHwgdW5kZWZpbmVkXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgQ3JlYXRlZEF0OiBvYmouY3JlYXRlZEF0LFxuICAgIERlc2NyaXB0aW9uOiBvYmouZGVzY3JpcHRpb24sXG4gICAgRXhwaXJlc0F0OiBvYmouZXhwaXJlc0F0LFxuICAgIEZyZXF1ZW5jeVR5cGU6IG9iai5mcmVxdWVuY3lUeXBlLFxuICAgIElkOiBvYmouaWQsXG4gICAgTWFzdGVyS2V5VVVJRDogb2JqLm1hc3RlcktleVV1aWQsXG4gICAgTWVtYmVyczogb2JqLm1lbWJlcnM/Lm1hcCgoeSkgPT5cbiAgICAgIHRvSnNvbl9BcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90TWVtYmVyVmlldyh5KVxuICAgICksXG4gICAgTW9uZ29kVmVyc2lvbjogb2JqLm1vbmdvZFZlcnNpb24sXG4gICAgUG9saWN5SXRlbXM6IG9iai5wb2xpY3lJdGVtcz8ubWFwKCh5KSA9PiB5KSxcbiAgICBTbmFwc2hvdElkczogb2JqLnNuYXBzaG90SWRzPy5tYXAoKHkpID0+IHkpLFxuICAgIFNuYXBzaG90VHlwZTogb2JqLnNuYXBzaG90VHlwZSxcbiAgICBTdGF0dXM6IG9iai5zdGF0dXMsXG4gICAgU3RvcmFnZVNpemVCeXRlczogb2JqLnN0b3JhZ2VTaXplQnl0ZXMsXG4gICAgVHlwZTogb2JqLnR5cGUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZShcbiAgICAociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCA/IHIgOiB7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSxcbiAgICB7fVxuICApO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyB3aGVuIHRoaXMgc25hcHNob3QgdHJpZ2dlcnMuXG4gKlxuICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHNTbmFwc2hvdFR5cGVcbiAqL1xuZXhwb3J0IGVudW0gQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzU25hcHNob3RUeXBlIHtcbiAgLyoqIG9uRGVtYW5kICovXG4gIE9OX0RFTUFORCA9IFwib25EZW1hbmRcIixcbiAgLyoqIHNjaGVkdWxlZCAqL1xuICBTQ0hFRFVMRUQgPSBcInNjaGVkdWxlZFwiLFxufVxuXG4vKipcbiAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyB0aGUgY2xvdWQgcHJvdmlkZXIgdGhhdCBzdG9yZXMgdGhpcyBzbmFwc2hvdC4gVGhlIHJlc291cmNlIHJldHVybnMgdGhpcyBwYXJhbWV0ZXIgd2hlbiBgXCJ0eXBlXCI6IFwicmVwbGljYVNldFwiLmBcbiAqXG4gKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RNZW1iZXJWaWV3Q2xvdWRQcm92aWRlclxuICovXG5leHBvcnQgZW51bSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90TWVtYmVyVmlld0Nsb3VkUHJvdmlkZXIge1xuICAvKiogQVdTICovXG4gIEFXUyA9IFwiQVdTXCIsXG4gIC8qKiBBWlVSRSAqL1xuICBBWlVSRSA9IFwiQVpVUkVcIixcbiAgLyoqIEdDUCAqL1xuICBHQ1AgPSBcIkdDUFwiLFxufVxuXG4vKipcbiAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyBob3cgb2Z0ZW4gdGhpcyBzbmFwc2hvdCB0cmlnZ2Vycy5cbiAqXG4gKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3RnJlcXVlbmN5VHlwZVxuICovXG5leHBvcnQgZW51bSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90Vmlld0ZyZXF1ZW5jeVR5cGUge1xuICAvKiogaG91cmx5ICovXG4gIEhPVVJMWSA9IFwiaG91cmx5XCIsXG4gIC8qKiBkYWlseSAqL1xuICBEQUlMWSA9IFwiZGFpbHlcIixcbiAgLyoqIHdlZWtseSAqL1xuICBXRUVLTFkgPSBcIndlZWtseVwiLFxuICAvKiogbW9udGhseSAqL1xuICBNT05USExZID0gXCJtb250aGx5XCIsXG59XG5cbi8qKlxuICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHdoZW4gdGhpcyBzbmFwc2hvdCB0cmlnZ2Vycy5cbiAqXG4gKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3U25hcHNob3RUeXBlXG4gKi9cbmV4cG9ydCBlbnVtIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3U25hcHNob3RUeXBlIHtcbiAgLyoqIG9uRGVtYW5kICovXG4gIE9OX0RFTUFORCA9IFwib25EZW1hbmRcIixcbiAgLyoqIHNjaGVkdWxlZCAqL1xuICBTQ0hFRFVMRUQgPSBcInNjaGVkdWxlZFwiLFxufVxuXG4vKipcbiAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaW5kaWNhdGVzIHRoZSBzdGFnZSBvZiB0aGUgYmFja3VwIHByb2Nlc3MgZm9yIHRoaXMgc25hcHNob3QuXG4gKlxuICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90Vmlld1N0YXR1c1xuICovXG5leHBvcnQgZW51bSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90Vmlld1N0YXR1cyB7XG4gIC8qKiBxdWV1ZWQgKi9cbiAgUVVFVUVEID0gXCJxdWV1ZWRcIixcbiAgLyoqIGluUHJvZ3Jlc3MgKi9cbiAgSU5fUFJPR1JFU1MgPSBcImluUHJvZ3Jlc3NcIixcbiAgLyoqIGNvbXBsZXRlZCAqL1xuICBDT01QTEVURUQgPSBcImNvbXBsZXRlZFwiLFxuICAvKiogZmFpbGVkICovXG4gIEZBSUxFRCA9IFwiZmFpbGVkXCIsXG59XG5cbi8qKlxuICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBjYXRlZ29yaXplcyB0aGUgY2x1c3RlciBhcyBhIHJlcGxpY2Egc2V0IG9yIHNoYXJkZWQgY2x1c3Rlci5cbiAqXG4gKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3VHlwZVxuICovXG5leHBvcnQgZW51bSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90Vmlld1R5cGUge1xuICAvKiogUkVQTElDQV9TRVQgKi9cbiAgUkVQTElDQV9TRVQgPSBcIlJFUExJQ0FfU0VUXCIsXG4gIC8qKiBTSEFSREVEX0NMVVNURVIgKi9cbiAgU0hBUkRFRF9DTFVTVEVSID0gXCJTSEFSREVEX0NMVVNURVJcIixcbn1cblxuLyoqXG4gKiBBIENsb3VkRm9ybWF0aW9uIGBNb25nb0RCOjpBdGxhczo6Q2xvdWRCYWNrdXBTbmFwc2hvdGBcbiAqXG4gKiBAY2xvdWRmb3JtYXRpb25SZXNvdXJjZSBNb25nb0RCOjpBdGxhczo6Q2xvdWRCYWNrdXBTbmFwc2hvdFxuICogQHN0YWJpbGl0eSBleHRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdCBleHRlbmRzIGNkay5DZm5SZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZSBuYW1lIGZvciB0aGlzIHJlc291cmNlIGNsYXNzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDRk5fUkVTT1VSQ0VfVFlQRV9OQU1FID1cbiAgICBcIk1vbmdvREI6OkF0bGFzOjpDbG91ZEJhY2t1cFNuYXBzaG90XCI7XG5cbiAgLyoqXG4gICAqIFJlc291cmNlIHByb3BzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb3BzOiBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHM7XG5cbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6OkNsb3VkQmFja3VwU25hcHNob3QuU25hcHNob3RJZGBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRyU25hcHNob3RJZDogc3RyaW5nO1xuICAvKipcbiAgICogQXR0cmlidXRlIGBNb25nb0RCOjpBdGxhczo6Q2xvdWRCYWNrdXBTbmFwc2hvdC5TbmFwc2hvdElkc2BcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRyU25hcHNob3RJZHM6IHN0cmluZ1tdO1xuICAvKipcbiAgICogQXR0cmlidXRlIGBNb25nb0RCOjpBdGxhczo6Q2xvdWRCYWNrdXBTbmFwc2hvdC5NYXN0ZXJLZXlVVUlEYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJNYXN0ZXJLZXlVVUlEOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgYE1vbmdvREI6OkF0bGFzOjpDbG91ZEJhY2t1cFNuYXBzaG90LlR5cGVgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXR0clR5cGU6IHN0cmluZztcbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6OkNsb3VkQmFja3VwU25hcHNob3QuRXhwaXJlc0F0YFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJFeHBpcmVzQXQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6OkNsb3VkQmFja3VwU25hcHNob3QuU3RvcmFnZVNpemVCeXRlc2BcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRyU3RvcmFnZVNpemVCeXRlczogc3RyaW5nO1xuICAvKipcbiAgICogQXR0cmlidXRlIGBNb25nb0RCOjpBdGxhczo6Q2xvdWRCYWNrdXBTbmFwc2hvdC5JZGBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRySWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6OkNsb3VkQmFja3VwU25hcHNob3QuQ3JlYXRlZEF0YFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJDcmVhdGVkQXQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6OkNsb3VkQmFja3VwU25hcHNob3QuQ2xvdWRQcm92aWRlcmBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRyQ2xvdWRQcm92aWRlcjogc3RyaW5nO1xuICAvKipcbiAgICogQXR0cmlidXRlIGBNb25nb0RCOjpBdGxhczo6Q2xvdWRCYWNrdXBTbmFwc2hvdC5Nb25nb2RWZXJzaW9uYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJNb25nb2RWZXJzaW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgYE1vbmdvREI6OkF0bGFzOjpDbG91ZEJhY2t1cFNuYXBzaG90LlJlcGxpY2FTZXROYW1lYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJSZXBsaWNhU2V0TmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQXR0cmlidXRlIGBNb25nb0RCOjpBdGxhczo6Q2xvdWRCYWNrdXBTbmFwc2hvdC5TdGF0dXNgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXR0clN0YXR1czogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgYE1vbmdvREI6OkF0bGFzOjpDbG91ZEJhY2t1cFNuYXBzaG90YC5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gc2NvcGUgaW4gd2hpY2ggdGhpcyByZXNvdXJjZSBpcyBkZWZpbmVkXG4gICAqIEBwYXJhbSBpZCAgICAtIHNjb3BlZCBpZCBvZiB0aGUgcmVzb3VyY2VcbiAgICogQHBhcmFtIHByb3BzIC0gcmVzb3VyY2UgcHJvcGVydGllc1xuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wc1xuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHR5cGU6IENmbkNsb3VkQmFja3VwU25hcHNob3QuQ0ZOX1JFU09VUkNFX1RZUEVfTkFNRSxcbiAgICAgIHByb3BlcnRpZXM6IHRvSnNvbl9DZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMocHJvcHMpISxcbiAgICB9KTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIHRoaXMuYXR0clNuYXBzaG90SWQgPSBjZGsuVG9rZW4uYXNTdHJpbmcodGhpcy5nZXRBdHQoXCJTbmFwc2hvdElkXCIpKTtcbiAgICB0aGlzLmF0dHJTbmFwc2hvdElkcyA9IGNkay5Ub2tlbi5hc0xpc3QodGhpcy5nZXRBdHQoXCJTbmFwc2hvdElkc1wiKSk7XG4gICAgdGhpcy5hdHRyTWFzdGVyS2V5VVVJRCA9IGNkay5Ub2tlbi5hc1N0cmluZyh0aGlzLmdldEF0dChcIk1hc3RlcktleVVVSURcIikpO1xuICAgIHRoaXMuYXR0clR5cGUgPSBjZGsuVG9rZW4uYXNTdHJpbmcodGhpcy5nZXRBdHQoXCJUeXBlXCIpKTtcbiAgICB0aGlzLmF0dHJFeHBpcmVzQXQgPSBjZGsuVG9rZW4uYXNTdHJpbmcodGhpcy5nZXRBdHQoXCJFeHBpcmVzQXRcIikpO1xuICAgIHRoaXMuYXR0clN0b3JhZ2VTaXplQnl0ZXMgPSBjZGsuVG9rZW4uYXNTdHJpbmcoXG4gICAgICB0aGlzLmdldEF0dChcIlN0b3JhZ2VTaXplQnl0ZXNcIilcbiAgICApO1xuICAgIHRoaXMuYXR0cklkID0gY2RrLlRva2VuLmFzU3RyaW5nKHRoaXMuZ2V0QXR0KFwiSWRcIikpO1xuICAgIHRoaXMuYXR0ckNyZWF0ZWRBdCA9IGNkay5Ub2tlbi5hc1N0cmluZyh0aGlzLmdldEF0dChcIkNyZWF0ZWRBdFwiKSk7XG4gICAgdGhpcy5hdHRyQ2xvdWRQcm92aWRlciA9IGNkay5Ub2tlbi5hc1N0cmluZyh0aGlzLmdldEF0dChcIkNsb3VkUHJvdmlkZXJcIikpO1xuICAgIHRoaXMuYXR0ck1vbmdvZFZlcnNpb24gPSBjZGsuVG9rZW4uYXNTdHJpbmcodGhpcy5nZXRBdHQoXCJNb25nb2RWZXJzaW9uXCIpKTtcbiAgICB0aGlzLmF0dHJSZXBsaWNhU2V0TmFtZSA9IGNkay5Ub2tlbi5hc1N0cmluZyh0aGlzLmdldEF0dChcIlJlcGxpY2FTZXROYW1lXCIpKTtcbiAgICB0aGlzLmF0dHJTdGF0dXMgPSBjZGsuVG9rZW4uYXNTdHJpbmcodGhpcy5nZXRBdHQoXCJTdGF0dXNcIikpO1xuICB9XG59XG4iXX0=