awscdk-resources-mongodbatlas
Version:
MongoDB Atlas CDK Construct Library for AWS CloudFormation Resources
235 lines • 43.3 kB
JavaScript
;
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 serverless or cluster
*
* @schema CfnCloudBackupSnapshotPropsInstanceType
*/
var CfnCloudBackupSnapshotPropsInstanceType;
(function (CfnCloudBackupSnapshotPropsInstanceType) {
/** serverless */
CfnCloudBackupSnapshotPropsInstanceType["SERVERLESS"] = "serverless";
/** 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: "3.13.1" };
/**
* The CloudFormation resource type name for this resource class.
*/
CfnCloudBackupSnapshot.CFN_RESOURCE_TYPE_NAME = "MongoDB::Atlas::CloudBackupSnapshot";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbDEtcmVzb3VyY2VzL2Nsb3VkLWJhY2t1cC1zbmFwc2hvdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBd0hBLGdGQWdDQztBQTZERCw4SEFnQkM7QUE4R0Qsa0hBNkJDOztBQWhYRCwwQkFBMEI7QUFDMUIsbUNBQW1DO0FBbUhuQzs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQixrQ0FBa0MsQ0FDaEQsR0FBNEM7SUFFNUMsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDdEIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHO1FBQ2IsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO1FBQ3BCLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWTtRQUM5QixZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVk7UUFDOUIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXO1FBQzVCLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYTtRQUNoQyxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7UUFDeEIsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZO1FBQzlCLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWTtRQUM5QixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUM5Qix5REFBeUQsQ0FBQyxDQUFDLENBQUMsQ0FDN0Q7UUFDRCxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87UUFDcEIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0MsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDOUIsbURBQW1ELENBQUMsQ0FB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QUFlLENBQUMsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7O0FBOUZILHdEQStGQzs7O0FBOUZDOztHQUVHO0FBQ29CLDZDQUFzQixHQUMzQyxxQ0FBcUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdlbmVyYXRlZCBieSBjZGstaW1wb3J0XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbi8qKlxuICogUmV0dXJucywgdGFrZXMsIGFuZCByZW1vdmVzIENsb3VkIEJhY2t1cCBzbmFwc2hvdHMuXG4gKlxuICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMge1xuICAvKipcbiAgICogVGhlIHByb2ZpbGUgaXMgZGVmaW5lZCBpbiBBV1MgU2VjcmV0IG1hbmFnZXIuIFNlZSBbU2VjcmV0IE1hbmFnZXIgUHJvZmlsZSBzZXR1cF0oLi4vLi4vLi4vZXhhbXBsZXMvcHJvZmlsZS1zZWNyZXQueWFtbCkuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzI1Byb2ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHByb2ZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgaW5zdGFuY2Ugc3BlY2lmaWVkIG9uIHRoZSBJbnN0YW5jZSBOYW1lIHNlcnZlcmxlc3Mgb3IgY2x1c3RlclxuICAgKlxuICAgKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wcyNJbnN0YW5jZVR5cGVcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlVHlwZTogQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzSW5zdGFuY2VUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5zdGFuY2UgbmFtZSBvZiB0aGUgU2VydmVybGVzcy9DbHVzdGVyIHdob3NlIHNuYXBzaG90IHlvdSB3YW50IHRvIHJlc3RvcmUgb3IgeW91IHdhbnQgdG8gcmV0cmlldmUgcmVzdG9yZSBzbmFwc2hvdC5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjSW5zdGFuY2VOYW1lXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgcGhyYXNlIG9yIHNlbnRlbmNlIHRoYXQgZXhwbGFpbnMgdGhlIHB1cnBvc2Ugb2YgdGhlIHNuYXBzaG90LiBUaGUgcmVzb3VyY2UgcmV0dXJucyB0aGlzIHBhcmFtZXRlciB3aGVuIGBcInN0YXR1c1wiOiBcIm9uRGVtYW5kXCJgLlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wcyNEZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyBob3cgb2Z0ZW4gdGhpcyBzbmFwc2hvdCB0cmlnZ2Vycy5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjRnJlcXVlbmN5VHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgZnJlcXVlbmN5VHlwZT86IENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wc0ZyZXF1ZW5jeVR5cGU7XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSAyNC1oZXhhZGVjaW1hbCBkaWdpdCBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHlvdXIgcHJvamVjdC5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjUHJvamVjdElkXG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogRmxhZyB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSByZXNwb25zZSByZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgKCoqdG90YWxDb3VudCoqKSBpbiB0aGUgcmVzcG9uc2UuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzI0luY2x1ZGVDb3VudFxuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZUNvdW50PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGl0ZW1zIHRoYXQgdGhlIHJlc3BvbnNlIHJldHVybnMgcGVyIHBhZ2UuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzI0l0ZW1zUGVyUGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgaXRlbXNQZXJQYWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBMaXN0IHRoYXQgaW5jbHVkZXMgdGhlIHNuYXBzaG90cyBhbmQgdGhlIGNsb3VkIHByb3ZpZGVyIHRoYXQgc3RvcmVzIHRoZSBzbmFwc2hvdHMuIFRoZSByZXNvdXJjZSByZXR1cm5zIHRoaXMgcGFyYW1ldGVyIHdoZW4gYFwidHlwZVwiIDogXCJTSEFSREVEX0NMVVNURVJcImAuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzI01lbWJlcnNcbiAgICovXG4gIHJlYWRvbmx5IG1lbWJlcnM/OiBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90TWVtYmVyVmlld1tdO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgdGhlIHBhZ2UgdGhhdCBkaXNwbGF5cyB0aGUgY3VycmVudCBzZXQgb2YgdGhlIHRvdGFsIG9iamVjdHMgdGhhdCB0aGUgcmVzcG9uc2UgcmV0dXJucy5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjUGFnZU51bVxuICAgKi9cbiAgcmVhZG9ubHkgcGFnZU51bT86IG51bWJlcjtcblxuICAvKipcbiAgICogTGlzdCB0aGF0IGNvbnRhaW5zIHVuaXF1ZSBpZGVudGlmaWVycyBmb3IgdGhlIHBvbGljeSBpdGVtcy5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjUG9saWN5SXRlbXNcbiAgICovXG4gIHJlYWRvbmx5IHBvbGljeUl0ZW1zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgcmV0dXJuZWQgZG9jdW1lbnRzIHRoYXQgTW9uZ29EQiBDbG91ZCBwcm92aWRlcyB3aGVuIGNvbXBsZXRpbmcgdGhpcyByZXF1ZXN0LlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wcyNSZXN1bHRzXG4gICAqL1xuICByZWFkb25seSByZXN1bHRzPzogQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXdbXTtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGRheXMgdGhhdCBNb25nb0RCIENsb3VkIHNob3VsZCByZXRhaW4gdGhlIG9uLWRlbWFuZCBzbmFwc2hvdC4gTXVzdCBiZSBhdCBsZWFzdCAqKjEqKlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wcyNSZXRlbnRpb25JbkRheXNcbiAgICovXG4gIHJlYWRvbmx5IHJldGVudGlvbkluRGF5cz86IG51bWJlcjtcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHdoZW4gdGhpcyBzbmFwc2hvdCB0cmlnZ2Vycy5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjU25hcHNob3RUeXBlXG4gICAqL1xuICByZWFkb25seSBzbmFwc2hvdFR5cGU/OiBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHNTbmFwc2hvdFR5cGU7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBkb2N1bWVudHMgcmV0dXJuZWQgaW4gdGhpcyByZXNwb25zZS5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMjVG90YWxDb3VudFxuICAgKi9cbiAgcmVhZG9ubHkgdG90YWxDb3VudD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHMoXG4gIG9iajogQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzIHwgdW5kZWZpbmVkXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgUHJvZmlsZTogb2JqLnByb2ZpbGUsXG4gICAgSW5zdGFuY2VUeXBlOiBvYmouaW5zdGFuY2VUeXBlLFxuICAgIEluc3RhbmNlTmFtZTogb2JqLmluc3RhbmNlTmFtZSxcbiAgICBEZXNjcmlwdGlvbjogb2JqLmRlc2NyaXB0aW9uLFxuICAgIEZyZXF1ZW5jeVR5cGU6IG9iai5mcmVxdWVuY3lUeXBlLFxuICAgIFByb2plY3RJZDogb2JqLnByb2plY3RJZCxcbiAgICBJbmNsdWRlQ291bnQ6IG9iai5pbmNsdWRlQ291bnQsXG4gICAgSXRlbXNQZXJQYWdlOiBvYmouaXRlbXNQZXJQYWdlLFxuICAgIE1lbWJlcnM6IG9iai5tZW1iZXJzPy5tYXAoKHkpID0+XG4gICAgICB0b0pzb25fQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdE1lbWJlclZpZXcoeSlcbiAgICApLFxuICAgIFBhZ2VOdW06IG9iai5wYWdlTnVtLFxuICAgIFBvbGljeUl0ZW1zOiBvYmoucG9saWN5SXRlbXM/Lm1hcCgoeSkgPT4geSksXG4gICAgUmVzdWx0czogb2JqLnJlc3VsdHM/Lm1hcCgoeSkgPT5cbiAgICAgIHRvSnNvbl9BcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90Vmlldyh5KVxuICAgICksXG4gICAgUmV0ZW50aW9uSW5EYXlzOiBvYmoucmV0ZW50aW9uSW5EYXlzLFxuICAgIFNuYXBzaG90VHlwZTogb2JqLnNuYXBzaG90VHlwZSxcbiAgICBUb3RhbENvdW50OiBvYmoudG90YWxDb3VudCxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKFxuICAgIChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkID8gciA6IHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLFxuICAgIHt9XG4gICk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogVHlwZSBvZiBpbnN0YW5jZSBzcGVjaWZpZWQgb24gdGhlIEluc3RhbmNlIE5hbWUgc2VydmVybGVzcyBvciBjbHVzdGVyXG4gKlxuICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHNJbnN0YW5jZVR5cGVcbiAqL1xuZXhwb3J0IGVudW0gQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzSW5zdGFuY2VUeXBlIHtcbiAgLyoqIHNlcnZlcmxlc3MgKi9cbiAgU0VSVkVSTEVTUyA9IFwic2VydmVybGVzc1wiLFxuICAvKiogY2x1c3RlciAqL1xuICBDTFVTVEVSID0gXCJjbHVzdGVyXCIsXG59XG5cbi8qKlxuICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIGhvdyBvZnRlbiB0aGlzIHNuYXBzaG90IHRyaWdnZXJzLlxuICpcbiAqIEBzY2hlbWEgQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzRnJlcXVlbmN5VHlwZVxuICovXG5leHBvcnQgZW51bSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHNGcmVxdWVuY3lUeXBlIHtcbiAgLyoqIGhvdXJseSAqL1xuICBIT1VSTFkgPSBcImhvdXJseVwiLFxuICAvKiogZGFpbHkgKi9cbiAgREFJTFkgPSBcImRhaWx5XCIsXG4gIC8qKiB3ZWVrbHkgKi9cbiAgV0VFS0xZID0gXCJ3ZWVrbHlcIixcbiAgLyoqIG1vbnRobHkgKi9cbiAgTU9OVEhMWSA9IFwibW9udGhseVwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdE1lbWJlclZpZXdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90TWVtYmVyVmlldyB7XG4gIC8qKlxuICAgKiBIdW1hbi1yZWFkYWJsZSBsYWJlbCB0aGF0IGlkZW50aWZpZXMgdGhlIGNsb3VkIHByb3ZpZGVyIHRoYXQgc3RvcmVzIHRoaXMgc25hcHNob3QuIFRoZSByZXNvdXJjZSByZXR1cm5zIHRoaXMgcGFyYW1ldGVyIHdoZW4gYFwidHlwZVwiOiBcInJlcGxpY2FTZXRcIi5gXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdE1lbWJlclZpZXcjQ2xvdWRQcm92aWRlclxuICAgKi9cbiAgcmVhZG9ubHkgY2xvdWRQcm92aWRlcj86IEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RNZW1iZXJWaWV3Q2xvdWRQcm92aWRlcjtcblxuICAvKipcbiAgICogVW5pcXVlIDI0LWhleGFkZWNpbWFsIGRpZ2l0IHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHNuYXBzaG90LlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RNZW1iZXJWaWV3I0lkXG4gICAqL1xuICByZWFkb25seSBpZD86IHN0cmluZztcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHRoZSBzaGFyZCBvciBjb25maWcgaG9zdCBmcm9tIHdoaWNoIE1vbmdvREIgQ2xvdWQgdG9vayB0aGlzIHNuYXBzaG90LlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RNZW1iZXJWaWV3I1JlcGxpY2FTZXROYW1lXG4gICAqL1xuICByZWFkb25seSByZXBsaWNhU2V0TmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdE1lbWJlclZpZXcnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0FwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RNZW1iZXJWaWV3KFxuICBvYmo6IEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RNZW1iZXJWaWV3IHwgdW5kZWZpbmVkXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgQ2xvdWRQcm92aWRlcjogb2JqLmNsb3VkUHJvdmlkZXIsXG4gICAgSWQ6IG9iai5pZCxcbiAgICBSZXBsaWNhU2V0TmFtZTogb2JqLnJlcGxpY2FTZXROYW1lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoXG4gICAgKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQgPyByIDogeyAuLi5yLCBbaVswXV06IGlbMV0gfSksXG4gICAge31cbiAgKTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXcge1xuICAvKipcbiAgICogRGF0ZSBhbmQgdGltZSB3aGVuIE1vbmdvREIgQ2xvdWQgdG9vayB0aGUgc25hcHNob3QuIFRoaXMgcGFyYW1ldGVyIGV4cHJlc3NlcyBpdHMgdmFsdWUgaW4gdGhlIElTTyA4NjAxIHRpbWVzdGFtcCBmb3JtYXQgaW4gVVRDLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3I0NyZWF0ZWRBdFxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlZEF0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIdW1hbi1yZWFkYWJsZSBwaHJhc2Ugb3Igc2VudGVuY2UgdGhhdCBleHBsYWlucyB0aGUgcHVycG9zZSBvZiB0aGUgc25hcHNob3QuIFRoZSByZXNvdXJjZSByZXR1cm5zIHRoaXMgcGFyYW1ldGVyIHdoZW4gYFwic3RhdHVzXCI6IFwib25EZW1hbmRcImAuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXcjRGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEYXRlIGFuZCB0aW1lIHdoZW4gTW9uZ29EQiBDbG91ZCBkZWxldGVzIHRoZSBzbmFwc2hvdC4gVGhpcyBwYXJhbWV0ZXIgZXhwcmVzc2VzIGl0cyB2YWx1ZSBpbiB0aGUgSVNPIDg2MDEgdGltZXN0YW1wIGZvcm1hdCBpbiBVVEMuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXcjRXhwaXJlc0F0XG4gICAqL1xuICByZWFkb25seSBleHBpcmVzQXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyBob3cgb2Z0ZW4gdGhpcyBzbmFwc2hvdCB0cmlnZ2Vycy5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90VmlldyNGcmVxdWVuY3lUeXBlXG4gICAqL1xuICByZWFkb25seSBmcmVxdWVuY3lUeXBlPzogQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXdGcmVxdWVuY3lUeXBlO1xuXG4gIC8qKlxuICAgKiBVbmlxdWUgMjQtaGV4YWRlY2ltYWwgZGlnaXQgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgc25hcHNob3QuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXcjSWRcbiAgICovXG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVbmlxdWUgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgQW1hem9uIFdlYiBTZXJ2aWNlcyAoQVdTKSBLZXkgTWFuYWdlbWVudCBTZXJ2aWNlIChLTVMpIEN1c3RvbWVyIE1hc3RlciBLZXkgKENNSykgdXNlZCB0byBlbmNyeXB0IHRoZSBzbmFwc2hvdC4gVGhlIHJlc291cmNlIHJldHVybnMgdGhpcyB2YWx1ZSB3aGVuIGBcImVuY3J5cHRpb25FbmFibGVkXCIgOiB0cnVlYC5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90VmlldyNNYXN0ZXJLZXlVVUlEXG4gICAqL1xuICByZWFkb25seSBtYXN0ZXJLZXlVdWlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMaXN0IHRoYXQgaW5jbHVkZXMgdGhlIHNuYXBzaG90cyBhbmQgdGhlIGNsb3VkIHByb3ZpZGVyIHRoYXQgc3RvcmVzIHRoZSBzbmFwc2hvdHMuIFRoZSByZXNvdXJjZSByZXR1cm5zIHRoaXMgcGFyYW1ldGVyIHdoZW4gYFwidHlwZVwiIDogXCJTSEFSREVEX0NMVVNURVJcImAuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXcjTWVtYmVyc1xuICAgKi9cbiAgcmVhZG9ubHkgbWVtYmVycz86IEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RNZW1iZXJWaWV3W107XG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgdGhlIE1vbmdvREIgaG9zdCB0aGF0IHRoaXMgc25hcHNob3QgYmFja3MgdXAuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXcjTW9uZ29kVmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgbW9uZ29kVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogTGlzdCB0aGF0IGNvbnRhaW5zIHVuaXF1ZSBpZGVudGlmaWVycyBmb3IgdGhlIHBvbGljeSBpdGVtcy5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90VmlldyNQb2xpY3lJdGVtc1xuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5SXRlbXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogTGlzdCB0aGF0IGNvbnRhaW5zIHRoZSB1bmlxdWUgaWRlbnRpZmllcnMgb2YgdGhlIHNuYXBzaG90cyBjcmVhdGVkIGZvciB0aGUgc2hhcmRzIGFuZCBjb25maWcgaG9zdCBmb3IgYSBzaGFyZGVkIGNsdXN0ZXIuIFRoZSByZXNvdXJjZSByZXR1cm5zIHRoaXMgcGFyYW1ldGVyIHdoZW4gYFwidHlwZVwiOiBcIlNIQVJERURfQ0xVU1RFUlwiYC4gVGhlc2UgaWRlbnRpZmllcnMgc2hvdWxkIG1hdGNoIHRoZSBvbmVzIHNwZWNpZmllZCBpbiB0aGUgKiptZW1iZXJzW25dLmlkKiogcGFyYW1ldGVycy4gVGhpcyBhbGxvd3MgeW91IHRvIG1hcCBhIHNuYXBzaG90IHRvIGl0cyBzaGFyZCBvciBjb25maWcgaG9zdCBuYW1lLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3I1NuYXBzaG90SWRzXG4gICAqL1xuICByZWFkb25seSBzbmFwc2hvdElkcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBIdW1hbi1yZWFkYWJsZSBsYWJlbCB0aGF0IGlkZW50aWZpZXMgd2hlbiB0aGlzIHNuYXBzaG90IHRyaWdnZXJzLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3I1NuYXBzaG90VHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgc25hcHNob3RUeXBlPzogQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXdTbmFwc2hvdFR5cGU7XG5cbiAgLyoqXG4gICAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaW5kaWNhdGVzIHRoZSBzdGFnZSBvZiB0aGUgYmFja3VwIHByb2Nlc3MgZm9yIHRoaXMgc25hcHNob3QuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXcjU3RhdHVzXG4gICAqL1xuICByZWFkb25seSBzdGF0dXM/OiBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90Vmlld1N0YXR1cztcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGJ5dGVzIHRha2VuIHRvIHN0b3JlIHRoZSBiYWNrdXAgc25hcHNob3QuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXcjU3RvcmFnZVNpemVCeXRlc1xuICAgKi9cbiAgcmVhZG9ubHkgc3RvcmFnZVNpemVCeXRlcz86IHN0cmluZztcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBjYXRlZ29yaXplcyB0aGUgY2x1c3RlciBhcyBhIHJlcGxpY2Egc2V0IG9yIHNoYXJkZWQgY2x1c3Rlci5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90VmlldyNUeXBlXG4gICAqL1xuICByZWFkb25seSB0eXBlPzogQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXdUeXBlO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdBcGlBdGxhc0Rpc2tCYWNrdXBTaGFyZGVkQ2x1c3RlclNuYXBzaG90VmlldycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXcoXG4gIG9iajogQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXcgfCB1bmRlZmluZWRcbik6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBDcmVhdGVkQXQ6IG9iai5jcmVhdGVkQXQsXG4gICAgRGVzY3JpcHRpb246IG9iai5kZXNjcmlwdGlvbixcbiAgICBFeHBpcmVzQXQ6IG9iai5leHBpcmVzQXQsXG4gICAgRnJlcXVlbmN5VHlwZTogb2JqLmZyZXF1ZW5jeVR5cGUsXG4gICAgSWQ6IG9iai5pZCxcbiAgICBNYXN0ZXJLZXlVVUlEOiBvYmoubWFzdGVyS2V5VXVpZCxcbiAgICBNZW1iZXJzOiBvYmoubWVtYmVycz8ubWFwKCh5KSA9PlxuICAgICAgdG9Kc29uX0FwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RNZW1iZXJWaWV3KHkpXG4gICAgKSxcbiAgICBNb25nb2RWZXJzaW9uOiBvYmoubW9uZ29kVmVyc2lvbixcbiAgICBQb2xpY3lJdGVtczogb2JqLnBvbGljeUl0ZW1zPy5tYXAoKHkpID0+IHkpLFxuICAgIFNuYXBzaG90SWRzOiBvYmouc25hcHNob3RJZHM/Lm1hcCgoeSkgPT4geSksXG4gICAgU25hcHNob3RUeXBlOiBvYmouc25hcHNob3RUeXBlLFxuICAgIFN0YXR1czogb2JqLnN0YXR1cyxcbiAgICBTdG9yYWdlU2l6ZUJ5dGVzOiBvYmouc3RvcmFnZVNpemVCeXRlcyxcbiAgICBUeXBlOiBvYmoudHlwZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKFxuICAgIChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkID8gciA6IHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLFxuICAgIHt9XG4gICk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHdoZW4gdGhpcyBzbmFwc2hvdCB0cmlnZ2Vycy5cbiAqXG4gKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wc1NuYXBzaG90VHlwZVxuICovXG5leHBvcnQgZW51bSBDZm5DbG91ZEJhY2t1cFNuYXBzaG90UHJvcHNTbmFwc2hvdFR5cGUge1xuICAvKiogb25EZW1hbmQgKi9cbiAgT05fREVNQU5EID0gXCJvbkRlbWFuZFwiLFxuICAvKiogc2NoZWR1bGVkICovXG4gIFNDSEVEVUxFRCA9IFwic2NoZWR1bGVkXCIsXG59XG5cbi8qKlxuICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHRoZSBjbG91ZCBwcm92aWRlciB0aGF0IHN0b3JlcyB0aGlzIHNuYXBzaG90LiBUaGUgcmVzb3VyY2UgcmV0dXJucyB0aGlzIHBhcmFtZXRlciB3aGVuIGBcInR5cGVcIjogXCJyZXBsaWNhU2V0XCIuYFxuICpcbiAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdE1lbWJlclZpZXdDbG91ZFByb3ZpZGVyXG4gKi9cbmV4cG9ydCBlbnVtIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RNZW1iZXJWaWV3Q2xvdWRQcm92aWRlciB7XG4gIC8qKiBBV1MgKi9cbiAgQVdTID0gXCJBV1NcIixcbiAgLyoqIEFaVVJFICovXG4gIEFaVVJFID0gXCJBWlVSRVwiLFxuICAvKiogR0NQICovXG4gIEdDUCA9IFwiR0NQXCIsXG59XG5cbi8qKlxuICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIGhvdyBvZnRlbiB0aGlzIHNuYXBzaG90IHRyaWdnZXJzLlxuICpcbiAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXdGcmVxdWVuY3lUeXBlXG4gKi9cbmV4cG9ydCBlbnVtIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3RnJlcXVlbmN5VHlwZSB7XG4gIC8qKiBob3VybHkgKi9cbiAgSE9VUkxZID0gXCJob3VybHlcIixcbiAgLyoqIGRhaWx5ICovXG4gIERBSUxZID0gXCJkYWlseVwiLFxuICAvKiogd2Vla2x5ICovXG4gIFdFRUtMWSA9IFwid2Vla2x5XCIsXG4gIC8qKiBtb250aGx5ICovXG4gIE1PTlRITFkgPSBcIm1vbnRobHlcIixcbn1cblxuLyoqXG4gKiBIdW1hbi1yZWFkYWJsZSBsYWJlbCB0aGF0IGlkZW50aWZpZXMgd2hlbiB0aGlzIHNuYXBzaG90IHRyaWdnZXJzLlxuICpcbiAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXdTbmFwc2hvdFR5cGVcbiAqL1xuZXhwb3J0IGVudW0gQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXdTbmFwc2hvdFR5cGUge1xuICAvKiogb25EZW1hbmQgKi9cbiAgT05fREVNQU5EID0gXCJvbkRlbWFuZFwiLFxuICAvKiogc2NoZWR1bGVkICovXG4gIFNDSEVEVUxFRCA9IFwic2NoZWR1bGVkXCIsXG59XG5cbi8qKlxuICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpbmRpY2F0ZXMgdGhlIHN0YWdlIG9mIHRoZSBiYWNrdXAgcHJvY2VzcyBmb3IgdGhpcyBzbmFwc2hvdC5cbiAqXG4gKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3U3RhdHVzXG4gKi9cbmV4cG9ydCBlbnVtIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3U3RhdHVzIHtcbiAgLyoqIHF1ZXVlZCAqL1xuICBRVUVVRUQgPSBcInF1ZXVlZFwiLFxuICAvKiogaW5Qcm9ncmVzcyAqL1xuICBJTl9QUk9HUkVTUyA9IFwiaW5Qcm9ncmVzc1wiLFxuICAvKiogY29tcGxldGVkICovXG4gIENPTVBMRVRFRCA9IFwiY29tcGxldGVkXCIsXG4gIC8qKiBmYWlsZWQgKi9cbiAgRkFJTEVEID0gXCJmYWlsZWRcIixcbn1cblxuLyoqXG4gKiBIdW1hbi1yZWFkYWJsZSBsYWJlbCB0aGF0IGNhdGVnb3JpemVzIHRoZSBjbHVzdGVyIGFzIGEgcmVwbGljYSBzZXQgb3Igc2hhcmRlZCBjbHVzdGVyLlxuICpcbiAqIEBzY2hlbWEgQXBpQXRsYXNEaXNrQmFja3VwU2hhcmRlZENsdXN0ZXJTbmFwc2hvdFZpZXdUeXBlXG4gKi9cbmV4cG9ydCBlbnVtIEFwaUF0bGFzRGlza0JhY2t1cFNoYXJkZWRDbHVzdGVyU25hcHNob3RWaWV3VHlwZSB7XG4gIC8qKiBSRVBMSUNBX1NFVCAqL1xuICBSRVBMSUNBX1NFVCA9IFwiUkVQTElDQV9TRVRcIixcbiAgLyoqIFNIQVJERURfQ0xVU1RFUiAqL1xuICBTSEFSREVEX0NMVVNURVIgPSBcIlNIQVJERURfQ0xVU1RFUlwiLFxufVxuXG4vKipcbiAqIEEgQ2xvdWRGb3JtYXRpb24gYE1vbmdvREI6OkF0bGFzOjpDbG91ZEJhY2t1cFNuYXBzaG90YFxuICpcbiAqIEBjbG91ZGZvcm1hdGlvblJlc291cmNlIE1vbmdvREI6OkF0bGFzOjpDbG91ZEJhY2t1cFNuYXBzaG90XG4gKiBAc3RhYmlsaXR5IGV4dGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBDZm5DbG91ZEJhY2t1cFNuYXBzaG90IGV4dGVuZHMgY2RrLkNmblJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSB0eXBlIG5hbWUgZm9yIHRoaXMgcmVzb3VyY2UgY2xhc3MuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENGTl9SRVNPVVJDRV9UWVBFX05BTUUgPVxuICAgIFwiTW9uZ29EQjo6QXRsYXM6OkNsb3VkQmFja3VwU25hcHNob3RcIjtcblxuICAvKipcbiAgICogUmVzb3VyY2UgcHJvcHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvcHM6IENmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wcztcblxuICAvKipcbiAgICogQXR0cmlidXRlIGBNb25nb0RCOjpBdGxhczo6Q2xvdWRCYWNrdXBTbmFwc2hvdC5TbmFwc2hvdElkYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJTbmFwc2hvdElkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgYE1vbmdvREI6OkF0bGFzOjpDbG91ZEJhY2t1cFNuYXBzaG90LlNuYXBzaG90SWRzYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJTbmFwc2hvdElkczogc3RyaW5nW107XG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgYE1vbmdvREI6OkF0bGFzOjpDbG91ZEJhY2t1cFNuYXBzaG90Lk1hc3RlcktleVVVSURgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXR0ck1hc3RlcktleVVVSUQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6OkNsb3VkQmFja3VwU25hcHNob3QuVHlwZWBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRyVHlwZTogc3RyaW5nO1xuICAvKipcbiAgICogQXR0cmlidXRlIGBNb25nb0RCOjpBdGxhczo6Q2xvdWRCYWNrdXBTbmFwc2hvdC5FeHBpcmVzQXRgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXR0ckV4cGlyZXNBdDogc3RyaW5nO1xuICAvKipcbiAgICogQXR0cmlidXRlIGBNb25nb0RCOjpBdGxhczo6Q2xvdWRCYWNrdXBTbmFwc2hvdC5TdG9yYWdlU2l6ZUJ5dGVzYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJTdG9yYWdlU2l6ZUJ5dGVzOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgYE1vbmdvREI6OkF0bGFzOjpDbG91ZEJhY2t1cFNuYXBzaG90LklkYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJJZDogc3RyaW5nO1xuICAvKipcbiAgICogQXR0cmlidXRlIGBNb25nb0RCOjpBdGxhczo6Q2xvdWRCYWNrdXBTbmFwc2hvdC5DcmVhdGVkQXRgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXR0ckNyZWF0ZWRBdDogc3RyaW5nO1xuICAvKipcbiAgICogQXR0cmlidXRlIGBNb25nb0RCOjpBdGxhczo6Q2xvdWRCYWNrdXBTbmFwc2hvdC5DbG91ZFByb3ZpZGVyYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJDbG91ZFByb3ZpZGVyOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgYE1vbmdvREI6OkF0bGFzOjpDbG91ZEJhY2t1cFNuYXBzaG90Lk1vbmdvZFZlcnNpb25gXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXR0ck1vbmdvZFZlcnNpb246IHN0cmluZztcbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6OkNsb3VkQmFja3VwU25hcHNob3QuUmVwbGljYVNldE5hbWVgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXR0clJlcGxpY2FTZXROYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgYE1vbmdvREI6OkF0bGFzOjpDbG91ZEJhY2t1cFNuYXBzaG90LlN0YXR1c2BcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRyU3RhdHVzOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBgTW9uZ29EQjo6QXRsYXM6OkNsb3VkQmFja3VwU25hcHNob3RgLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBzY29wZSBpbiB3aGljaCB0aGlzIHJlc291cmNlIGlzIGRlZmluZWRcbiAgICogQHBhcmFtIGlkICAgIC0gc2NvcGVkIGlkIG9mIHRoZSByZXNvdXJjZVxuICAgKiBAcGFyYW0gcHJvcHMgLSByZXNvdXJjZSBwcm9wZXJ0aWVzXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdFByb3BzXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgdHlwZTogQ2ZuQ2xvdWRCYWNrdXBTbmFwc2hvdC5DRk5fUkVTT1VSQ0VfVFlQRV9OQU1FLFxuICAgICAgcHJvcGVydGllczogdG9Kc29uX0NmbkNsb3VkQmFja3VwU25hcHNob3RQcm9wcyhwcm9wcykhLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5hdHRyU25hcHNob3RJZCA9IGNkay5Ub2tlbi5hc1N0cmluZyh0aGlzLmdldEF0dChcIlNuYXBzaG90SWRcIikpO1xuICAgIHRoaXMuYXR0clNuYXBzaG90SWRzID0gY2RrLlRva2VuLmFzTGlzdCh0aGlzLmdldEF0dChcIlNuYXBzaG90SWRzXCIpKTtcbiAgICB0aGlzLmF0dHJNYXN0ZXJLZXlVVUlEID0gY2RrLlRva2VuLmFzU3RyaW5nKHRoaXMuZ2V0QXR0KFwiTWFzdGVyS2V5VVVJRFwiKSk7XG4gICAgdGhpcy5hdHRyVHlwZSA9IGNkay5Ub2tlbi5hc1N0cmluZyh0aGlzLmdldEF0dChcIlR5cGVcIikpO1xuICAgIHRoaXMuYXR0ckV4cGlyZXNBdCA9IGNkay5Ub2tlbi5hc1N0cmluZyh0aGlzLmdldEF0dChcIkV4cGlyZXNBdFwiKSk7XG4gICAgdGhpcy5hdHRyU3RvcmFnZVNpemVCeXRlcyA9IGNkay5Ub2tlbi5hc1N0cmluZyhcbiAgICAgIHRoaXMuZ2V0QXR0KFwiU3RvcmFnZVNpemVCeXRlc1wiKVxuICAgICk7XG4gICAgdGhpcy5hdHRySWQgPSBjZGsuVG9rZW4uYXNTdHJpbmcodGhpcy5nZXRBdHQoXCJJZFwiKSk7XG4gICAgdGhpcy5hdHRyQ3JlYXRlZEF0ID0gY2RrLlRva2VuLmFzU3RyaW5nKHRoaXMuZ2V0QXR0KFwiQ3JlYXRlZEF0XCIpKTtcbiAgICB0aGlzLmF0dHJDbG91ZFByb3ZpZGVyID0gY2RrLlRva2VuLmFzU3RyaW5nKHRoaXMuZ2V0QXR0KFwiQ2xvdWRQcm92aWRlclwiKSk7XG4gICAgdGhpcy5hdHRyTW9uZ29kVmVyc2lvbiA9IGNkay5Ub2tlbi5hc1N0cmluZyh0aGlzLmdldEF0dChcIk1vbmdvZFZlcnNpb25cIikpO1xuICAgIHRoaXMuYXR0clJlcGxpY2FTZXROYW1lID0gY2RrLlRva2VuLmFzU3RyaW5nKHRoaXMuZ2V0QXR0KFwiUmVwbGljYVNldE5hbWVcIikpO1xuICAgIHRoaXMuYXR0clN0YXR1cyA9IGNkay5Ub2tlbi5hc1N0cmluZyh0aGlzLmdldEF0dChcIlN0YXR1c1wiKSk7XG4gIH1cbn1cbiJdfQ==