UNPKG

awscdk-resources-mongodbatlas

Version:

MongoDB Atlas CDK Construct Library for AWS CloudFormation Resources

172 lines 33.2 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.CfnCloudBackupSchedule = void 0; exports.toJson_CfnCloudBackupScheduleProps = toJson_CfnCloudBackupScheduleProps; exports.toJson_Export = toJson_Export; exports.toJson_ApiAtlasDiskBackupCopySettingView = toJson_ApiAtlasDiskBackupCopySettingView; exports.toJson_ApiDeleteCopiedBackupsView = toJson_ApiDeleteCopiedBackupsView; exports.toJson_ApiPolicyView = toJson_ApiPolicyView; exports.toJson_Link = toJson_Link; exports.toJson_ApiPolicyItemView = toJson_ApiPolicyItemView; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); // Generated by cdk-import const cdk = require("aws-cdk-lib"); /** * Converts an object of type 'CfnCloudBackupScheduleProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_CfnCloudBackupScheduleProps(obj) { if (obj === undefined) { return undefined; } const result = { ProjectId: obj.projectId, ClusterName: obj.clusterName, Id: obj.id, AutoExportEnabled: obj.autoExportEnabled, UseOrgAndGroupNamesInExportPrefix: obj.useOrgAndGroupNamesInExportPrefix, Export: toJson_Export(obj.export), CopySettings: obj.copySettings?.map((y) => toJson_ApiAtlasDiskBackupCopySettingView(y)), DeleteCopiedBackups: obj.deleteCopiedBackups?.map((y) => toJson_ApiDeleteCopiedBackupsView(y)), Policies: obj.policies?.map((y) => toJson_ApiPolicyView(y)), ReferenceHourOfDay: obj.referenceHourOfDay, ReferenceMinuteOfHour: obj.referenceMinuteOfHour, RestoreWindowDays: obj.restoreWindowDays, UpdateSnapshots: obj.updateSnapshots, Profile: obj.profile, Links: obj.links?.map((y) => toJson_Link(y)), }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {}); } /** * Converts an object of type 'Export' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_Export(obj) { if (obj === undefined) { return undefined; } const result = { ExportBucketId: obj.exportBucketId, FrequencyType: obj.frequencyType, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {}); } /** * Converts an object of type 'ApiAtlasDiskBackupCopySettingView' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_ApiAtlasDiskBackupCopySettingView(obj) { if (obj === undefined) { return undefined; } const result = { CloudProvider: obj.cloudProvider, RegionName: obj.regionName, ReplicationSpecId: obj.replicationSpecId, ShouldCopyOplogs: obj.shouldCopyOplogs, Frequencies: obj.frequencies?.map((y) => y), }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {}); } /** * Converts an object of type 'ApiDeleteCopiedBackupsView' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_ApiDeleteCopiedBackupsView(obj) { if (obj === undefined) { return undefined; } const result = { CloudProvider: obj.cloudProvider, RegionName: obj.regionName, ReplicationSpecId: obj.replicationSpecId, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {}); } /** * Converts an object of type 'ApiPolicyView' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_ApiPolicyView(obj) { if (obj === undefined) { return undefined; } const result = { ID: obj.id, PolicyItems: obj.policyItems?.map((y) => toJson_ApiPolicyItemView(y)), }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {}); } /** * Converts an object of type 'Link' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_Link(obj) { if (obj === undefined) { return undefined; } const result = { Href: obj.href, Rel: obj.rel, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {}); } /** * Converts an object of type 'ApiPolicyItemView' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_ApiPolicyItemView(obj) { if (obj === undefined) { return undefined; } const result = { ID: obj.id, FrequencyType: obj.frequencyType, FrequencyInterval: obj.frequencyInterval, RetentionValue: obj.retentionValue, RetentionUnit: obj.retentionUnit, }; // 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 */ /** * A CloudFormation `MongoDB::Atlas::CloudBackupSchedule` * * @cloudformationResource MongoDB::Atlas::CloudBackupSchedule * @stability external */ class CfnCloudBackupSchedule extends cdk.CfnResource { /** * Create a new `MongoDB::Atlas::CloudBackupSchedule`. * * @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: CfnCloudBackupSchedule.CFN_RESOURCE_TYPE_NAME, properties: toJson_CfnCloudBackupScheduleProps(props), }); this.props = props; this.attrClusterId = cdk.Token.asString(this.getAtt("ClusterId")); this.attrNextSnapshot = cdk.Token.asString(this.getAtt("NextSnapshot")); } } exports.CfnCloudBackupSchedule = CfnCloudBackupSchedule; _a = JSII_RTTI_SYMBOL_1; CfnCloudBackupSchedule[_a] = { fqn: "awscdk-resources-mongodbatlas.CfnCloudBackupSchedule", version: "3.13.1" }; /** * The CloudFormation resource type name for this resource class. */ CfnCloudBackupSchedule.CFN_RESOURCE_TYPE_NAME = "MongoDB::Atlas::CloudBackupSchedule"; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbDEtcmVzb3VyY2VzL2Nsb3VkLWJhY2t1cC1zY2hlZHVsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBd0hBLGdGQWdDQztBQTBCRCxzQ0FlQztBQStDRCw0RkFrQkM7QUFpQ0QsOEVBZ0JDO0FBd0JELG9EQWVDO0FBMEJELGtDQWVDO0FBK0NELDREQWtCQzs7QUFwY0QsMEJBQTBCO0FBQzFCLG1DQUFtQztBQW1IbkM7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsU0FBZ0Isa0NBQWtDLENBQ2hELEdBQTRDO0lBRTVDLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRztRQUNiLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUztRQUN4QixXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVc7UUFDNUIsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1FBQ1YsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLGlCQUFpQjtRQUN4QyxpQ0FBaUMsRUFBRSxHQUFHLENBQUMsaUNBQWlDO1FBQ3hFLE1BQU0sRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUNqQyxZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUN4Qyx3Q0FBd0MsQ0FBQyxDQUFDLENBQUMsQ0FDNUM7UUFDRCxtQkFBbUIsRUFBRSxHQUFHLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDdEQsaUNBQWlDLENBQUMsQ0FBQyxDQUFDLENBQ3JDO1FBQ0QsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFD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bnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGNkay1pbXBvcnRcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuLyoqXG4gKiBBbiBleGFtcGxlIHJlc291cmNlIHNjaGVtYSBkZW1vbnN0cmF0aW5nIHNvbWUgYmFzaWMgY29uc3RydWN0cyBhbmQgdmFsaWRhdGlvbiBydWxlcy5cbiAqXG4gKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU2NoZWR1bGVQcm9wc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkNsb3VkQmFja3VwU2NoZWR1bGVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHByb2plY3QgZm9yIHRoZSBBdGxhcyBjbHVzdGVyLlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU2NoZWR1bGVQcm9wcyNQcm9qZWN0SWRcbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3RJZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIEF0bGFzIGNsdXN0ZXIgdGhhdCBjb250YWlucyB0aGUgc25hcHNob3RzIHlvdSB3YW50IHRvIHJldHJpZXZlLlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU2NoZWR1bGVQcm9wcyNDbHVzdGVyTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3Rlck5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBzbmFwc2hvdC5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNjaGVkdWxlUHJvcHMjSWRcbiAgICovXG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGbGFnIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgYXV0b21hdGljIGV4cG9ydCBvZiBjbG91ZCBiYWNrdXAgc25hcHNob3RzIHRvIHRoZSBBV1MgYnVja2V0IGlzIGVuYWJsZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQ2xvdWRCYWNrdXBTY2hlZHVsZVByb3BzI0F1dG9FeHBvcnRFbmFibGVkXG4gICAqL1xuICByZWFkb25seSBhdXRvRXhwb3J0RW5hYmxlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmeSB0cnVlIHRvIHVzZSBvcmdhbml6YXRpb24gYW5kIHByb2plY3QgbmFtZXMgaW5zdGVhZCBvZiBvcmdhbml6YXRpb24gYW5kIHByb2plY3QgVVVJRHMgaW4gdGhlIHBhdGggZm9yIHRoZSBtZXRhZGF0YSBmaWxlcyB0aGF0IEF0bGFzIHVwbG9hZHMgdG8geW91ciBTMyBidWNrZXQgYWZ0ZXIgaXQgZmluaXNoZXMgZXhwb3J0aW5nIHRoZSBzbmFwc2hvdHMuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQ2xvdWRCYWNrdXBTY2hlZHVsZVByb3BzI1VzZU9yZ0FuZEdyb3VwTmFtZXNJbkV4cG9ydFByZWZpeFxuICAgKi9cbiAgcmVhZG9ubHkgdXNlT3JnQW5kR3JvdXBOYW1lc0luRXhwb3J0UHJlZml4PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUG9saWN5IGZvciBhdXRvbWF0aWNhbGx5IGV4cG9ydGluZyBjbG91ZCBiYWNrdXAgc25hcHNob3RzLlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU2NoZWR1bGVQcm9wcyNFeHBvcnRcbiAgICovXG4gIHJlYWRvbmx5IGV4cG9ydD86IEV4cG9ydDtcblxuICAvKipcbiAgICogTGlzdCB0aGF0IGNvbnRhaW5zIGEgZG9jdW1lbnQgZm9yIGVhY2ggY29weSBzZXR0aW5nIGl0ZW0gaW4gdGhlIGRlc2lyZWQgYmFja3VwIHBvbGljeS5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNjaGVkdWxlUHJvcHMjQ29weVNldHRpbmdzXG4gICAqL1xuICByZWFkb25seSBjb3B5U2V0dGluZ3M/OiBBcGlBdGxhc0Rpc2tCYWNrdXBDb3B5U2V0dGluZ1ZpZXdbXTtcblxuICAvKipcbiAgICogTGlzdCB0aGF0IGNvbnRhaW5zIGEgZG9jdW1lbnQgZm9yIGVhY2ggZGVsZXRlZCBjb3B5IHNldHRpbmcgd2hvc2UgYmFja3VwIGNvcGllcyB5b3Ugd2FudCB0byBkZWxldGUuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQ2xvdWRCYWNrdXBTY2hlZHVsZVByb3BzI0RlbGV0ZUNvcGllZEJhY2t1cHNcbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZUNvcGllZEJhY2t1cHM/OiBBcGlEZWxldGVDb3BpZWRCYWNrdXBzVmlld1tdO1xuXG4gIC8qKlxuICAgKiBSdWxlcyBzZXQgZm9yIHRoaXMgYmFja3VwIHNjaGVkdWxlLlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU2NoZWR1bGVQcm9wcyNQb2xpY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgcG9saWNpZXM/OiBBcGlQb2xpY3lWaWV3W107XG5cbiAgLyoqXG4gICAqIFVUQyBIb3VyIG9mIGRheSBiZXR3ZWVuIDAgYW5kIDIzIHJlcHJlc2VudGluZyB3aGljaCBob3VyIG9mIHRoZSBkYXkgdGhhdCBBdGxhcyB0YWtlcyBhIHNuYXBzaG90XG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQ2xvdWRCYWNrdXBTY2hlZHVsZVByb3BzI1JlZmVyZW5jZUhvdXJPZkRheVxuICAgKi9cbiAgcmVhZG9ubHkgcmVmZXJlbmNlSG91ck9mRGF5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBVVEMgTWludXRlIG9mIGRheSBiZXR3ZWVuIDAgYW5kIDU5IHJlcHJlc2VudGluZyB3aGljaCBtaW51dGUgb2YgdGhlIHJlZmVyZW5jZUhvdXJPZkRheSB0aGF0IEF0bGFzIHRha2VzIHRoZSBzbmFwc2hvdC5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNjaGVkdWxlUHJvcHMjUmVmZXJlbmNlTWludXRlT2ZIb3VyXG4gICAqL1xuICByZWFkb25seSByZWZlcmVuY2VNaW51dGVPZkhvdXI/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBkYXlzIGJhY2sgaW4gdGltZSB5b3UgY2FuIHJlc3RvcmUgdG8gd2l0aCBDb250aW51b3VzIENsb3VkIEJhY2t1cCBhY2N1cmFjeS4gTXVzdCBiZSBhIHBvc2l0aXZlLCBub24temVybyBpbnRlZ2VyLlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU2NoZWR1bGVQcm9wcyNSZXN0b3JlV2luZG93RGF5c1xuICAgKi9cbiAgcmVhZG9ubHkgcmVzdG9yZVdpbmRvd0RheXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEZsYWcgaW5kaWNhdGluZyBpZiB1cGRhdGVzIHRvIHJldGVudGlvbiBpbiB0aGUgYmFja3VwIHBvbGljeSB3ZXJlIGFwcGxpZWQgdG8gc25hcHNob3RzIHRoYXQgQXRsYXMgdG9vayBlYXJsaWVyLlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkNsb3VkQmFja3VwU2NoZWR1bGVQcm9wcyNVcGRhdGVTbmFwc2hvdHNcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZVNuYXBzaG90cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFByb2ZpbGUgdXNlZCB0byBwcm92aWRlIGNyZWRlbnRpYWxzIGluZm9ybWF0aW9uLCAoYSBzZWNyZXQgd2l0aCB0aGUgY2ZuL2F0bGFzL3Byb2ZpbGUve1Byb2ZpbGV9LCBpcyByZXF1aXJlZCksIGlmIG5vdCBwcm92aWRlZCBkZWZhdWx0IGlzIHVzZWRcbiAgICpcbiAgICogQHNjaGVtYSBDZm5DbG91ZEJhY2t1cFNjaGVkdWxlUHJvcHMjUHJvZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogTGlzdCBvZiBvbmUgb3IgbW9yZSBVbmlmb3JtIFJlc291cmNlIExvY2F0b3JzIChVUkxzKSB0aGF0IHBvaW50IHRvIEFQSSBzdWItcmVzb3VyY2VzLCByZWxhdGVkIEFQSSByZXNvdXJjZXMsIG9yIGJvdGguIFJGQyA1OTg4IG91dGxpbmVzIHRoZXNlIHJlbGF0aW9uc2hpcHMuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQ2xvdWRCYWNrdXBTY2hlZHVsZVByb3BzI0xpbmtzXG4gICAqL1xuICByZWFkb25seSBsaW5rcz86IExpbmtbXTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQ2ZuQ2xvdWRCYWNrdXBTY2hlZHVsZVByb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5DbG91ZEJhY2t1cFNjaGVkdWxlUHJvcHMoXG4gIG9iajogQ2ZuQ2xvdWRCYWNrdXBTY2hlZHVsZVByb3BzIHwgdW5kZWZpbmVkXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgUHJvamVjdElkOiBvYmoucHJvamVjdElkLFxuICAgIENsdXN0ZXJOYW1lOiBvYmouY2x1c3Rlck5hbWUsXG4gICAgSWQ6IG9iai5pZCxcbiAgICBBdXRvRXhwb3J0RW5hYmxlZDogb2JqLmF1dG9FeHBvcnRFbmFibGVkLFxuICAgIFVzZU9yZ0FuZEdyb3VwTmFtZXNJbkV4cG9ydFByZWZpeDogb2JqLnVzZU9yZ0FuZEdyb3VwTmFtZXNJbkV4cG9ydFByZWZpeCxcbiAgICBFeHBvcnQ6IHRvSnNvbl9FeHBvcnQob2JqLmV4cG9ydCksXG4gICAgQ29weVNldHRpbmdzOiBvYmouY29weVNldHRpbmdzPy5tYXAoKHkpID0+XG4gICAgICB0b0pzb25fQXBpQXRsYXNEaXNrQmFja3VwQ29weVNldHRpbmdWaWV3KHkpXG4gICAgKSxcbiAgICBEZWxldGVDb3BpZWRCYWNrdXBzOiBvYmouZGVsZXRlQ29waWVkQmFja3Vwcz8ubWFwKCh5KSA9PlxuICAgICAgdG9Kc29uX0FwaURlbGV0ZUNvcGllZEJhY2t1cHNWaWV3KHkpXG4gICAgKSxcbiAgICBQb2xpY2llczogb2JqLnBvbGljaWVzPy5tYXAoKHkpID0+IHRvSnNvbl9BcGlQb2xpY3lWaWV3KHkpKSxcbiAgICBSZWZlcmVuY2VIb3VyT2ZEYXk6IG9iai5yZWZlcmVuY2VIb3VyT2ZEYXksXG4gICAgUmVmZXJlbmNlTWludXRlT2ZIb3VyOiBvYmoucmVmZXJlbmNlTWludXRlT2ZIb3VyLFxuICAgIFJlc3RvcmVXaW5kb3dEYXlzOiBvYmoucmVzdG9yZVdpbmRvd0RheXMsXG4gICAgVXBkYXRlU25hcHNob3RzOiBvYmoudXBkYXRlU25hcHNob3RzLFxuICAgIFByb2ZpbGU6IG9iai5wcm9maWxlLFxuICAgIExpbmtzOiBvYmoubGlua3M/Lm1hcCgoeSkgPT4gdG9Kc29uX0xpbmsoeSkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoXG4gICAgKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQgPyByIDogeyAuLi5yLCBbaVswXV06IGlbMV0gfSksXG4gICAge31cbiAgKTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEV4cG9ydFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4cG9ydCB7XG4gIC8qKlxuICAgKiBVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgQVdTIGJ1Y2tldCB0byBleHBvcnQgdGhlIGNsb3VkIGJhY2t1cCBzbmFwc2hvdCB0b1xuICAgKlxuICAgKiBAc2NoZW1hIEV4cG9ydCNFeHBvcnRCdWNrZXRJZFxuICAgKi9cbiAgcmVhZG9ubHkgZXhwb3J0QnVja2V0SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZyZXF1ZW5jeSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4cG9ydCBwb2xpY3kuIFZhbHVlIGNhbiBiZSBkYWlseSwgd2Vla2x5LCBtb250aGx5IG9yIHllYXJseS5cbiAgICpcbiAgICogQHNjaGVtYSBFeHBvcnQjRnJlcXVlbmN5VHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgZnJlcXVlbmN5VHlwZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRXhwb3J0JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9FeHBvcnQoXG4gIG9iajogRXhwb3J0IHwgdW5kZWZpbmVkXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgRXhwb3J0QnVja2V0SWQ6IG9iai5leHBvcnRCdWNrZXRJZCxcbiAgICBGcmVxdWVuY3lUeXBlOiBvYmouZnJlcXVlbmN5VHlwZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKFxuICAgIChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkID8gciA6IHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLFxuICAgIHt9XG4gICk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBDb3B5U2V0dGluZ1ZpZXdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlBdGxhc0Rpc2tCYWNrdXBDb3B5U2V0dGluZ1ZpZXcge1xuICAvKipcbiAgICogQSBsYWJlbCB0aGF0IGlkZW50aWZpZXMgdGhlIGNsb3VkIHByb3ZpZGVyIHRoYXQgc3RvcmVzIHRoZSBzbmFwc2hvdCBjb3B5LlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cENvcHlTZXR0aW5nVmlldyNDbG91ZFByb3ZpZGVyXG4gICAqL1xuICByZWFkb25seSBjbG91ZFByb3ZpZGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYXJnZXQgcmVnaW9uIHRvIGNvcHkgc25hcHNob3RzIGJlbG9uZ2luZyB0byByZXBsaWNhdGlvblNwZWNJZCB0by5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBDb3B5U2V0dGluZ1ZpZXcjUmVnaW9uTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVW5pcXVlIDI0LWhleGFkZWNpbWFsIGRpZ2l0IHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHJlcGxpY2F0aW9uIG9iamVjdCBmb3IgYSB6b25lIGluIGEgY2x1c3Rlci5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBDb3B5U2V0dGluZ1ZpZXcjUmVwbGljYXRpb25TcGVjSWRcbiAgICovXG4gIHJlYWRvbmx5IHJlcGxpY2F0aW9uU3BlY0lkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGbGFnIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdG8gY29weSB0aGUgb3Bsb2dzIHRvIHRoZSB0YXJnZXQgcmVnaW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRGlza0JhY2t1cENvcHlTZXR0aW5nVmlldyNTaG91bGRDb3B5T3Bsb2dzXG4gICAqL1xuICByZWFkb25seSBzaG91bGRDb3B5T3Bsb2dzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTGlzdCB0aGF0IGRlc2NyaWJlcyB3aGljaCB0eXBlcyBvZiBzbmFwc2hvdHMgdG8gY29weS5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0Rpc2tCYWNrdXBDb3B5U2V0dGluZ1ZpZXcjRnJlcXVlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IGZyZXF1ZW5jaWVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0FwaUF0bGFzRGlza0JhY2t1cENvcHlTZXR0aW5nVmlldycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQXBpQXRsYXNEaXNrQmFja3VwQ29weVNldHRpbmdWaWV3KFxuICBvYmo6IEFwaUF0bGFzRGlza0JhY2t1cENvcHlTZXR0aW5nVmlldyB8IHVuZGVmaW5lZFxuKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIENsb3VkUHJvdmlkZXI6IG9iai5jbG91ZFByb3ZpZGVyLFxuICAgIFJlZ2lvbk5hbWU6IG9iai5yZWdpb25OYW1lLFxuICAgIFJlcGxpY2F0aW9uU3BlY0lkOiBvYmoucmVwbGljYXRpb25TcGVjSWQsXG4gICAgU2hvdWxkQ29weU9wbG9nczogb2JqLnNob3VsZENvcHlPcGxvZ3MsXG4gICAgRnJlcXVlbmNpZXM6IG9iai5mcmVxdWVuY2llcz8ubWFwKCh5KSA9PiB5KSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKFxuICAgIChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkID8gciA6IHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLFxuICAgIHt9XG4gICk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBBcGlEZWxldGVDb3BpZWRCYWNrdXBzVmlld1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaURlbGV0ZUNvcGllZEJhY2t1cHNWaWV3IHtcbiAgLyoqXG4gICAqIEEgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHRoZSBjbG91ZCBwcm92aWRlciBmb3IgdGhlIGRlbGV0ZWQgY29weSBzZXR0aW5nIHdob3NlIGJhY2t1cCBjb3BpZXMgeW91IHdhbnQgdG8gZGVsZXRlXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpRGVsZXRlQ29waWVkQmFja3Vwc1ZpZXcjQ2xvdWRQcm92aWRlclxuICAgKi9cbiAgcmVhZG9ubHkgY2xvdWRQcm92aWRlcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGFyZ2V0IHJlZ2lvbiBmb3IgdGhlIGRlbGV0ZWQgY29weSBzZXR0aW5nIHdob3NlIGJhY2t1cCBjb3BpZXMgeW91IHdhbnQgdG8gZGVsZXRlLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaURlbGV0ZUNvcGllZEJhY2t1cHNWaWV3I1JlZ2lvbk5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSAyNC1oZXhhZGVjaW1hbCBkaWdpdCBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSByZXBsaWNhdGlvbiBvYmplY3QgZm9yIGEgem9uZSBpbiBhIGNsdXN0ZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpRGVsZXRlQ29waWVkQmFja3Vwc1ZpZXcjUmVwbGljYXRpb25TcGVjSWRcbiAgICovXG4gIHJlYWRvbmx5IHJlcGxpY2F0aW9uU3BlY0lkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdBcGlEZWxldGVDb3BpZWRCYWNrdXBzVmlldycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQXBpRGVsZXRlQ29waWVkQmFja3Vwc1ZpZXcoXG4gIG9iajogQXBpRGVsZXRlQ29waWVkQmFja3Vwc1ZpZXcgfCB1bmRlZmluZWRcbik6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBDbG91ZFByb3ZpZGVyOiBvYmouY2xvdWRQcm92aWRlcixcbiAgICBSZWdpb25OYW1lOiBvYmoucmVnaW9uTmFtZSxcbiAgICBSZXBsaWNhdGlvblNwZWNJZDogb2JqLnJlcGxpY2F0aW9uU3BlY0lkLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoXG4gICAgKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQgPyByIDogeyAuLi5yLCBbaVswXV06IGlbMV0gfSksXG4gICAge31cbiAgKTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEFwaVBvbGljeVZpZXdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlQb2xpY3lWaWV3IHtcbiAgLyoqXG4gICAqIFVuaXF1ZSAyNC1oZXhhZGVjaW1hbCBkaWdpdCBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoaXMgYmFja3VwIHBvbGljeS4gVGhlIHBvbGljeSBpZCBjYW4gYmUgcmV0cmlldmVkIGJ5IHJ1bm5pbmc6IGF0bGFzIGJhY2t1cHMgc2NoZWR1bGUgZGVzY3JpYmUgXCIke2NsdXN0ZXJOYW1lfVwiIC0tcHJvamVjdElkIFwiJHtwcm9qZWN0SWR9XCIgfCBqcSAtciAnLnBvbGljaWVzWzBdLmlkJ1xuICAgKlxuICAgKiBAc2NoZW1hIEFwaVBvbGljeVZpZXcjSURcbiAgICovXG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEFwaVBvbGljeVZpZXcjUG9saWN5SXRlbXNcbiAgICovXG4gIHJlYWRvbmx5IHBvbGljeUl0ZW1zPzogQXBpUG9saWN5SXRlbVZpZXdbXTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQXBpUG9saWN5VmlldycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQXBpUG9saWN5VmlldyhcbiAgb2JqOiBBcGlQb2xpY3lWaWV3IHwgdW5kZWZpbmVkXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgSUQ6IG9iai5pZCxcbiAgICBQb2xpY3lJdGVtczogb2JqLnBvbGljeUl0ZW1zPy5tYXAoKHkpID0+IHRvSnNvbl9BcGlQb2xpY3lJdGVtVmlldyh5KSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZShcbiAgICAociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCA/IHIgOiB7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSxcbiAgICB7fVxuICApO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgTGlua1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExpbmsge1xuICAvKipcbiAgICogVW5pZm9ybSBSZXNvdXJjZSBMb2NhdG9yIChVUkwpIHRoYXQgcG9pbnRzIGFub3RoZXIgQVBJIHJlc291cmNlIHRvIHdoaWNoIHRoaXMgcmVzcG9uc2UgaGFzIHNvbWUgcmVsYXRpb25zaGlwLiBUaGlzIFVSTCBvZnRlbiBiZWdpbnMgd2l0aCBgaHR0cHM6Ly9tbXMubW9uZ29kYi5jb21gLlxuICAgKlxuICAgKiBAc2NoZW1hIExpbmsjSHJlZlxuICAgKi9cbiAgcmVhZG9ubHkgaHJlZj86IHN0cmluZztcblxuICAvKipcbiAgICogVW5pZm9ybSBSZXNvdXJjZSBMb2NhdG9yIChVUkwpIHRoYXQgZGVmaW5lcyB0aGUgc2VtYW50aWMgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyByZXNvdXJjZSBhbmQgYW5vdGhlciBBUEkgcmVzb3VyY2UuIFRoaXMgVVJMIG9mdGVuIGJlZ2lucyB3aXRoIGBodHRwczovL21tcy5tb25nb2RiLmNvbWAuXG4gICAqXG4gICAqIEBzY2hlbWEgTGluayNSZWxcbiAgICovXG4gIHJlYWRvbmx5IHJlbD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnTGluaycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fTGluayhcbiAgb2JqOiBMaW5rIHwgdW5kZWZpbmVkXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgSHJlZjogb2JqLmhyZWYsXG4gICAgUmVsOiBvYmoucmVsLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoXG4gICAgKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQgPyByIDogeyAuLi5yLCBbaVswXV06IGlbMV0gfSksXG4gICAge31cbiAgKTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEFwaVBvbGljeUl0ZW1WaWV3XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpUG9saWN5SXRlbVZpZXcge1xuICAvKipcbiAgICogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGJhY2t1cCBwb2xpY3kgaXRlbS5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlQb2xpY3lJdGVtVmlldyNJRFxuICAgKi9cbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZyZXF1ZW5jeSBhc3NvY2lhdGVkIHdpdGggdGhlIGJhY2t1cCBwb2xpY3kgaXRlbS4gT25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOiBob3VybHksIGRhaWx5LCB3ZWVrbHksIG1vbnRobHkgb3IgeWVhcmx5LlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaVBvbGljeUl0ZW1WaWV3I0ZyZXF1ZW5jeVR5cGVcbiAgICovXG4gIHJlYWRvbmx5IGZyZXF1ZW5jeVR5cGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2lyZWQgZnJlcXVlbmN5IG9mIHRoZSBuZXcgYmFja3VwIHBvbGljeSBpdGVtIHNwZWNpZmllZCBieSBmcmVxdWVuY3lUeXBlLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaVBvbGljeUl0ZW1WaWV3I0ZyZXF1ZW5jeUludGVydmFsXG4gICAqL1xuICByZWFkb25seSBmcmVxdWVuY3lJbnRlcnZhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogRHVyYXRpb24gZm9yIHdoaWNoIHRoZSBiYWNrdXAgaXMga2VwdC4gQXNzb2NpYXRlZCB3aXRoIHJldGVudGlvblVuaXQuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpUG9saWN5SXRlbVZpZXcjUmV0ZW50aW9uVmFsdWVcbiAgICovXG4gIHJlYWRvbmx5IHJldGVudGlvblZhbHVlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNZXRyaWMgb2YgZHVyYXRpb24gb2YgdGhlIGJhY2t1cCBwb2xpY3kgaXRlbTogZGF5cywgd2Vla3MsIG1vbnRocyBvciB5ZWFycy5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlQb2xpY3lJdGVtVmlldyNSZXRlbnRpb25Vbml0XG4gICAqL1xuICByZWFkb25seSByZXRlbnRpb25Vbml0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdBcGlQb2xpY3lJdGVtVmlldycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQXBpUG9saWN5SXRlbVZpZXcoXG4gIG9iajogQXBpUG9saWN5SXRlbVZpZXcgfCB1bmRlZmluZWRcbik6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBJRDogb2JqLmlkLFxuICAgIEZyZXF1ZW5jeVR5cGU6IG9iai5mcmVxdWVuY3lUeXBlLFxuICAgIEZyZXF1ZW5jeUludGVydmFsOiBvYmouZnJlcXVlbmN5SW50ZXJ2YWwsXG4gICAgUmV0ZW50aW9uVmFsdWU6IG9iai5yZXRlbnRpb25WYWx1ZSxcbiAgICBSZXRlbnRpb25Vbml0OiBvYmoucmV0ZW50aW9uVW5pdCxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKFxuICAgIChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkID8gciA6IHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLFxuICAgIHt9XG4gICk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQSBDbG91ZEZvcm1hdGlvbiBgTW9uZ29EQjo6QXRsYXM6OkNsb3VkQmFja3VwU2NoZWR1bGVgXG4gKlxuICogQGNsb3VkZm9ybWF0aW9uUmVzb3VyY2UgTW9uZ29EQjo6QXRsYXM6OkNsb3VkQmFja3VwU2NoZWR1bGVcbiAqIEBzdGFiaWxpdHkgZXh0ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIENmbkNsb3VkQmFja3VwU2NoZWR1bGUgZXh0ZW5kcyBjZGsuQ2ZuUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGUgbmFtZSBmb3IgdGhpcyByZXNvdXJjZSBjbGFzcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0ZOX1JFU09VUkNFX1RZUEVfTkFNRSA9XG4gICAgXCJNb25nb0RCOjpBdGxhczo6Q2xvdWRCYWNrdXBTY2hlZHVsZVwiO1xuXG4gIC8qKlxuICAgKiBSZXNvdXJjZSBwcm9wcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcm9wczogQ2ZuQ2xvdWRCYWNrdXBTY2hlZHVsZVByb3BzO1xuXG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgYE1vbmdvREI6OkF0bGFzOjpDbG91ZEJhY2t1cFNjaGVkdWxlLkNsdXN0ZXJJZGBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRyQ2x1c3RlcklkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgYE1vbmdvREI6OkF0bGFzOjpDbG91ZEJhY2t1cFNjaGVkdWxlLk5leHRTbmFwc2hvdGBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRyTmV4dFNuYXBzaG90OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBgTW9uZ29EQjo6QXRsYXM6OkNsb3VkQmFja3VwU2NoZWR1bGVgLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBzY29wZSBpbiB3aGljaCB0aGlzIHJlc291cmNlIGlzIGRlZmluZWRcbiAgICogQHBhcmFtIGlkICAgIC0gc2NvcGVkIGlkIG9mIHRoZSByZXNvdXJjZVxuICAgKiBAcGFyYW0gcHJvcHMgLSByZXNvdXJjZSBwcm9wZXJ0aWVzXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogQ2ZuQ2xvdWRCYWNrdXBTY2hlZHVsZVByb3BzXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgdHlwZTogQ2ZuQ2xvdWRCYWNrdXBTY2hlZHVsZS5DRk5fUkVTT1VSQ0VfVFlQRV9OQU1FLFxuICAgICAgcHJvcGVydGllczogdG9Kc29uX0NmbkNsb3VkQmFja3VwU2NoZWR1bGVQcm9wcyhwcm9wcykhLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5hdHRyQ2x1c3RlcklkID0gY2RrLlRva2VuLmFzU3RyaW5nKHRoaXMuZ2V0QXR0KFwiQ2x1c3RlcklkXCIpKTtcbiAgICB0aGlzLmF0dHJOZXh0U25hcHNob3QgPSBjZGsuVG9rZW4uYXNTdHJpbmcodGhpcy5nZXRBdHQoXCJOZXh0U25hcHNob3RcIikpO1xuICB9XG59XG4iXX0=