UNPKG

awscdk-resources-mongodbatlas

Version:

MongoDB Atlas CDK Construct Library for AWS CloudFormation Resources

153 lines 30.1 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.CfnSearchIndex = void 0; exports.toJson_CfnSearchIndexProps = toJson_CfnSearchIndexProps; exports.toJson_ApiAtlasFtsAnalyzersViewManual = toJson_ApiAtlasFtsAnalyzersViewManual; exports.toJson_ApiAtlasFtsMappingsViewManual = toJson_ApiAtlasFtsMappingsViewManual; exports.toJson_ApiAtlasFtsSynonymMappingDefinitionView = toJson_ApiAtlasFtsSynonymMappingDefinitionView; exports.toJson_ApiAtlasFtsAnalyzersTokenizer = toJson_ApiAtlasFtsAnalyzersTokenizer; exports.toJson_SynonymSource = toJson_SynonymSource; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); // Generated by cdk-import const cdk = require("aws-cdk-lib"); /** * Converts an object of type 'CfnSearchIndexProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_CfnSearchIndexProps(obj) { if (obj === undefined) { return undefined; } const result = { Analyzer: obj.analyzer, Analyzers: obj.analyzers?.map((y) => toJson_ApiAtlasFtsAnalyzersViewManual(y)), Profile: obj.profile, ClusterName: obj.clusterName, CollectionName: obj.collectionName, Database: obj.database, ProjectId: obj.projectId, Mappings: toJson_ApiAtlasFtsMappingsViewManual(obj.mappings), Name: obj.name, Type: obj.type, SearchAnalyzer: obj.searchAnalyzer, Synonyms: obj.synonyms?.map((y) => toJson_ApiAtlasFtsSynonymMappingDefinitionView(y)), Fields: obj.fields, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {}); } /** * Converts an object of type 'ApiAtlasFtsAnalyzersViewManual' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_ApiAtlasFtsAnalyzersViewManual(obj) { if (obj === undefined) { return undefined; } const result = { CharFilters: obj.charFilters?.map((y) => y), Name: obj.name, TokenFilters: obj.tokenFilters?.map((y) => y), Tokenizer: toJson_ApiAtlasFtsAnalyzersTokenizer(obj.tokenizer), }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {}); } /** * Converts an object of type 'ApiAtlasFtsMappingsViewManual' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_ApiAtlasFtsMappingsViewManual(obj) { if (obj === undefined) { return undefined; } const result = { Dynamic: obj.dynamic, Fields: obj.fields, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {}); } /** * Converts an object of type 'ApiAtlasFtsSynonymMappingDefinitionView' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_ApiAtlasFtsSynonymMappingDefinitionView(obj) { if (obj === undefined) { return undefined; } const result = { Analyzer: obj.analyzer, Name: obj.name, Source: toJson_SynonymSource(obj.source), }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {}); } /** * Converts an object of type 'ApiAtlasFtsAnalyzersTokenizer' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_ApiAtlasFtsAnalyzersTokenizer(obj) { if (obj === undefined) { return undefined; } const result = { MaxGram: obj.maxGram, MinGram: obj.minGram, Type: obj.type, Group: obj.group, Pattern: obj.pattern, MaxTokenLength: obj.maxTokenLength, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {}); } /** * Converts an object of type 'SynonymSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_SynonymSource(obj) { if (obj === undefined) { return undefined; } const result = { Collection: obj.collection, }; // 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::SearchIndex` * * @cloudformationResource MongoDB::Atlas::SearchIndex * @stability external */ class CfnSearchIndex extends cdk.CfnResource { /** * Create a new `MongoDB::Atlas::SearchIndex`. * * @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: CfnSearchIndex.CFN_RESOURCE_TYPE_NAME, properties: toJson_CfnSearchIndexProps(props), }); this.props = props; this.attrIndexId = cdk.Token.asString(this.getAtt("IndexId")); this.attrStatus = cdk.Token.asString(this.getAtt("Status")); } } exports.CfnSearchIndex = CfnSearchIndex; _a = JSII_RTTI_SYMBOL_1; CfnSearchIndex[_a] = { fqn: "awscdk-resources-mongodbatlas.CfnSearchIndex", version: "3.13.0" }; /** * The CloudFormation resource type name for this resource class. */ CfnSearchIndex.CFN_RESOURCE_TYPE_NAME = "MongoDB::Atlas::SearchIndex"; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbDEtcmVzb3VyY2VzL3NlYXJjaC1pbmRleC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBbUhBLGdFQThCQztBQStDRCxzRkFpQkM7QUEwQkQsb0ZBZUM7QUFpQ0Qsd0dBZ0JDO0FBd0RELG9GQW1CQztBQW1CRCxvREFjQzs7QUF2WkQsMEJBQTBCO0FBQzFCLG1DQUFtQztBQThHbkM7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsU0FBZ0IsMEJBQTBCLENBQ3hDLEdBQW9DO0lBRXBDLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRztRQUNiLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtRQUN0QixTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNsQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsQ0FDekM7UUFDRCxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87UUFDcEIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXO1FBQzVCLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYztRQUNsQyxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7UUFDdEIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO1FBQ3hCLFFBQVEsRUFBRSxvQ0FBb0MsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQzVELElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNkLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNkLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYztRQUNsQyxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNoQyw4Q0FBOEMsQ0FBQyxDQUFDLENBQUMs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QUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDOztBQXpDSCx3Q0EwQ0M7OztBQXpDQzs7R0FFRztBQUNvQixxQ0FBc0IsR0FBRyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdlbmVyYXRlZCBieSBjZGstaW1wb3J0XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbi8qKlxuICogUmV0dXJucywgYWRkcywgZWRpdHMsIGFuZCByZW1vdmVzIEF0bGFzIFNlYXJjaCBpbmRleGVzLiBBbHNvIHJldHVybnMgYW5kIHVwZGF0ZXMgdXNlci1kZWZpbmVkIGFuYWx5emVycy5cbiAqXG4gKiBAc2NoZW1hIENmblNlYXJjaEluZGV4UHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZm5TZWFyY2hJbmRleFByb3BzIHtcbiAgLyoqXG4gICAqIFNwZWNpZmljIHByZS1kZWZpbmVkIG1ldGhvZCBjaG9zZW4gdG8gY29udmVydCBkYXRhYmFzZSBmaWVsZCB0ZXh0IGludG8gc2VhcmNoYWJsZSB3b3Jkcy4gVGhpcyBjb252ZXJzaW9uIHJlZHVjZXMgdGhlIHRleHQgb2YgZmllbGRzIGludG8gdGhlIHNtYWxsZXN0IHVuaXRzIG9mIHRleHQuIFRoZXNlIHVuaXRzIGFyZSBjYWxsZWQgYSAqKnRlcm0qKiBvciAqKnRva2VuKiouIFRoaXMgcHJvY2Vzcywga25vd24gYXMgdG9rZW5pemF0aW9uLCBpbnZvbHZlcyBhIHZhcmlldHkgb2YgY2hhbmdlcyBtYWRlIHRvIHRoZSB0ZXh0IGluIGZpZWxkczpcbiAgICpcbiAgICogLSBleHRyYWN0aW5nIHdvcmRzXG4gICAqIC0gcmVtb3ZpbmcgcHVuY3R1YXRpb25cbiAgICogLSByZW1vdmluZyBhY2NlbnRzXG4gICAqIC0gY2hhbmdpbmcgdG8gbG93ZXJjYXNlXG4gICAqIC0gcmVtb3ZpbmcgY29tbW9uIHdvcmRzXG4gICAqIC0gcmVkdWNpbmcgd29yZHMgdG8gdGhlaXIgcm9vdCBmb3JtIChzdGVtbWluZylcbiAgICogLSBjaGFuZ2luZyB3b3JkcyB0byB0aGVpciBiYXNlIGZvcm0gKGxlbW1hdGl6YXRpb24pXG4gICAqIE1vbmdvREIgQ2xvdWQgdXNlcyB0aGUgc2VsZWN0ZWQgcHJvY2VzcyB0byBidWlsZCB0aGUgQXRsYXMgU2VhcmNoIGluZGV4LlxuICAgKlxuICAgKiBAc2NoZW1hIENmblNlYXJjaEluZGV4UHJvcHMjQW5hbHl6ZXJcbiAgICovXG4gIHJlYWRvbmx5IGFuYWx5emVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHVzZXItZGVmaW5lZCBtZXRob2RzIHRvIGNvbnZlcnQgZGF0YWJhc2UgZmllbGQgdGV4dCBpbnRvIHNlYXJjaGFibGUgd29yZHMuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuU2VhcmNoSW5kZXhQcm9wcyNBbmFseXplcnNcbiAgICovXG4gIHJlYWRvbmx5IGFuYWx5emVycz86IEFwaUF0bGFzRnRzQW5hbHl6ZXJzVmlld01hbnVhbFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvZmlsZSBpcyBkZWZpbmVkIGluIEFXUyBTZWNyZXQgbWFuYWdlci4gU2VlIFtTZWNyZXQgTWFuYWdlciBQcm9maWxlIHNldHVwXSguLi8uLi8uLi9leGFtcGxlcy9wcm9maWxlLXNlY3JldC55YW1sKS5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5TZWFyY2hJbmRleFByb3BzI1Byb2ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHByb2ZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGNsdXN0ZXIgdGhhdCBjb250YWlucyB0aGUgZGF0YWJhc2UgYW5kIGNvbGxlY3Rpb24gd2l0aCBvbmUgb3IgbW9yZSBBcHBsaWNhdGlvbiBTZWFyY2ggaW5kZXhlcy5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5TZWFyY2hJbmRleFByb3BzI0NsdXN0ZXJOYW1lXG4gICAqL1xuICByZWFkb25seSBjbHVzdGVyTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIdW1hbi1yZWFkYWJsZSBsYWJlbCB0aGF0IGlkZW50aWZpZXMgdGhlIGNvbGxlY3Rpb24gdGhhdCBjb250YWlucyBvbmUgb3IgbW9yZSBBdGxhcyBTZWFyY2ggaW5kZXhlcy5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5TZWFyY2hJbmRleFByb3BzI0NvbGxlY3Rpb25OYW1lXG4gICAqL1xuICByZWFkb25seSBjb2xsZWN0aW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIdW1hbi1yZWFkYWJsZSBsYWJlbCB0aGF0IGlkZW50aWZpZXMgdGhlIGRhdGFiYXNlIHRoYXQgY29udGFpbnMgdGhlIGNvbGxlY3Rpb24gd2l0aCBvbmUgb3IgbW9yZSBBdGxhcyBTZWFyY2ggaW5kZXhlcy5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5TZWFyY2hJbmRleFByb3BzI0RhdGFiYXNlXG4gICAqL1xuICByZWFkb25seSBkYXRhYmFzZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVbmlxdWUgMjQtaGV4YWRlY2ltYWwgZGlnaXQgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB5b3VyIHByb2plY3QuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuU2VhcmNoSW5kZXhQcm9wcyNQcm9qZWN0SWRcbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3RJZD86IHN0cmluZztcblxuICAvKipcbiAgICogSW5kZXggc3BlY2lmaWNhdGlvbnMgZm9yIHRoZSBjb2xsZWN0aW9uJ3MgZmllbGRzLlxuICAgKlxuICAgKiBAc2NoZW1hIENmblNlYXJjaEluZGV4UHJvcHMjTWFwcGluZ3NcbiAgICovXG4gIHJlYWRvbmx5IG1hcHBpbmdzPzogQXBpQXRsYXNGdHNNYXBwaW5nc1ZpZXdNYW51YWw7XG5cbiAgLyoqXG4gICAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyB0aGlzIGluZGV4LiBXaXRoaW4gZWFjaCBuYW1lc3BhY2UsIG5hbWVzIG9mIGFsbCBpbmRleGVzIGluIHRoZSBuYW1lc3BhY2UgbXVzdCBiZSB1bmlxdWUuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuU2VhcmNoSW5kZXhQcm9wcyNOYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUeXBlIG9mIGluZGV4OiAqKnNlYXJjaCoqIG9yICoqdmVjdG9yU2VhcmNoKiouIERlZmF1bHQgdHlwZSBpcyAqKnNlYXJjaCoqLlxuICAgKlxuICAgKiBAc2NoZW1hIENmblNlYXJjaEluZGV4UHJvcHMjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcblxuICAvKipcbiAgICogTWV0aG9kIGFwcGxpZWQgdG8gaWRlbnRpZnkgd29yZHMgd2hlbiBzZWFyY2hpbmcgdGhpcyBpbmRleC5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5TZWFyY2hJbmRleFByb3BzI1NlYXJjaEFuYWx5emVyXG4gICAqL1xuICByZWFkb25seSBzZWFyY2hBbmFseXplcj86IHN0cmluZztcblxuICAvKipcbiAgICogUnVsZSBzZXRzIHRoYXQgbWFwIHdvcmRzIHRvIHRoZWlyIHN5bm9ueW1zIGluIHRoaXMgaW5kZXguXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuU2VhcmNoSW5kZXhQcm9wcyNTeW5vbnltc1xuICAgKi9cbiAgcmVhZG9ubHkgc3lub255bXM/OiBBcGlBdGxhc0Z0c1N5bm9ueW1NYXBwaW5nRGVmaW5pdGlvblZpZXdbXTtcblxuICAvKipcbiAgICogQXJyYXkgb2YgW0ZpZWxkc10oaHR0cHM6Ly93d3cubW9uZ29kYi5jb20vZG9jcy9hdGxhcy9hdGxhcy1zZWFyY2gvZmllbGQtdHlwZXMva25uLXZlY3Rvci8jc3RkLWxhYmVsLWZ0cy1kYXRhLXR5cGVzLWtubi12ZWN0b3IpIHRvIGNvbmZpZ3VyZSB0aGlzIHZlY3RvclNlYXJjaCBpbmRleC4gU3RyaW5naWZ5IGpzb24gcmVwcmVzZW50YXRpb24gb2YgZmllbGQgd2l0aCB0eXBlcyBhbmQgcHJvcGVydGllcy4gUmVxdWlyZWQgZm9yIHZlY3RvciBpbmRleGVzLiBJdCBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lICoqdmVjdG9yKiogdHlwZSBmaWVsZC5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5TZWFyY2hJbmRleFByb3BzI0ZpZWxkc1xuICAgKi9cbiAgcmVhZG9ubHkgZmllbGRzPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdDZm5TZWFyY2hJbmRleFByb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5TZWFyY2hJbmRleFByb3BzKFxuICBvYmo6IENmblNlYXJjaEluZGV4UHJvcHMgfCB1bmRlZmluZWRcbik6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBBbmFseXplcjogb2JqLmFuYWx5emVyLFxuICAgIEFuYWx5emVyczogb2JqLmFuYWx5emVycz8ubWFwKCh5KSA9PlxuICAgICAgdG9Kc29uX0FwaUF0bGFzRnRzQW5hbHl6ZXJzVmlld01hbnVhbCh5KVxuICAgICksXG4gICAgUHJvZmlsZTogb2JqLnByb2ZpbGUsXG4gICAgQ2x1c3Rlck5hbWU6IG9iai5jbHVzdGVyTmFtZSxcbiAgICBDb2xsZWN0aW9uTmFtZTogb2JqLmNvbGxlY3Rpb25OYW1lLFxuICAgIERhdGFiYXNlOiBvYmouZGF0YWJhc2UsXG4gICAgUHJvamVjdElkOiBvYmoucHJvamVjdElkLFxuICAgIE1hcHBpbmdzOiB0b0pzb25fQXBpQXRsYXNGdHNNYXBwaW5nc1ZpZXdNYW51YWwob2JqLm1hcHBpbmdzKSxcbiAgICBOYW1lOiBvYmoubmFtZSxcbiAgICBUeXBlOiBvYmoudHlwZSxcbiAgICBTZWFyY2hBbmFseXplcjogb2JqLnNlYXJjaEFuYWx5emVyLFxuICAgIFN5bm9ueW1zOiBvYmouc3lub255bXM/Lm1hcCgoeSkgPT5cbiAgICAgIHRvSnNvbl9BcGlBdGxhc0Z0c1N5bm9ueW1NYXBwaW5nRGVmaW5pdGlvblZpZXcoeSlcbiAgICApLFxuICAgIEZpZWxkczogb2JqLmZpZWxkcyxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKFxuICAgIChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkID8gciA6IHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLFxuICAgIHt9XG4gICk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBBcGlBdGxhc0ZUU0FuYWx5emVyc1ZpZXdNYW51YWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlBdGxhc0Z0c0FuYWx5emVyc1ZpZXdNYW51YWwge1xuICAvKipcbiAgICogRmlsdGVycyB0aGF0IGV4YW1pbmUgdGV4dCBvbmUgY2hhcmFjdGVyIGF0IGEgdGltZSBhbmQgcGVyZm9ybSBmaWx0ZXJpbmcgb3BlcmF0aW9ucy5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0ZUU0FuYWx5emVyc1ZpZXdNYW51YWwjQ2hhckZpbHRlcnNcbiAgICovXG4gIHJlYWRvbmx5IGNoYXJGaWx0ZXJzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEh1bWFuLXJlYWRhYmxlIG5hbWUgdGhhdCBpZGVudGlmaWVzIHRoZSBjdXN0b20gYW5hbHl6ZXIuIE5hbWVzIG11c3QgYmUgdW5pcXVlIHdpdGhpbiBhbiBpbmRleCwgYW5kIG11c3Qgbm90IHN0YXJ0IHdpdGggYW55IG9mIHRoZSBmb2xsb3dpbmcgc3RyaW5nczpcbiAgICogLSBgbHVjZW5lLmBcbiAgICogLSBgYnVpbHRpbi5gXG4gICAqIC0gYG1vbmdvZGIuYFxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRlRTQW5hbHl6ZXJzVmlld01hbnVhbCNOYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXIgdGhhdCBwZXJmb3JtcyBvcGVyYXRpb25zIHN1Y2ggYXM6XG4gICAqXG4gICAqIC0gU3RlbW1pbmcsIHdoaWNoIHJlZHVjZXMgcmVsYXRlZCB3b3Jkcywgc3VjaCBhcyBcInRhbGtpbmdcIiwgXCJ0YWxrZWRcIiwgYW5kIFwidGFsa3NcIiB0byB0aGVpciByb290IHdvcmQgXCJ0YWxrXCIuXG4gICAqXG4gICAqIC0gUmVkYWN0aW9uLCB0aGUgcmVtb3ZhbCBvZiBzZW5zaXRpdmUgaW5mb3JtYXRpb24gZnJvbSBwdWJsaWMgZG9jdW1lbnRzLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRlRTQW5hbHl6ZXJzVmlld01hbnVhbCNUb2tlbkZpbHRlcnNcbiAgICovXG4gIHJlYWRvbmx5IHRva2VuRmlsdGVycz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUb2tlbml6ZXIgdGhhdCB5b3Ugd2FudCB0byB1c2UgdG8gY3JlYXRlIHRva2Vucy4gVG9rZW5zIGRldGVybWluZSBob3cgQXRsYXMgU2VhcmNoIHNwbGl0cyB1cCB0ZXh0IGludG8gZGlzY3JldGUgY2h1bmtzIGZvciBpbmRleGluZy5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0ZUU0FuYWx5emVyc1ZpZXdNYW51YWwjVG9rZW5pemVyXG4gICAqL1xuICByZWFkb25seSB0b2tlbml6ZXI/OiBBcGlBdGxhc0Z0c0FuYWx5emVyc1Rva2VuaXplcjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQXBpQXRsYXNGdHNBbmFseXplcnNWaWV3TWFudWFsJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9BcGlBdGxhc0Z0c0FuYWx5emVyc1ZpZXdNYW51YWwoXG4gIG9iajogQXBpQXRsYXNGdHNBbmFseXplcnNWaWV3TWFudWFsIHwgdW5kZWZpbmVkXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgQ2hhckZpbHRlcnM6IG9iai5jaGFyRmlsdGVycz8ubWFwKCh5KSA9PiB5KSxcbiAgICBOYW1lOiBvYmoubmFtZSxcbiAgICBUb2tlbkZpbHRlcnM6IG9iai50b2tlbkZpbHRlcnM/Lm1hcCgoeSkgPT4geSksXG4gICAgVG9rZW5pemVyOiB0b0pzb25fQXBpQXRsYXNGdHNBbmFseXplcnNUb2tlbml6ZXIob2JqLnRva2VuaXplciksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZShcbiAgICAociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCA/IHIgOiB7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSxcbiAgICB7fVxuICApO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgQXBpQXRsYXNGVFNNYXBwaW5nc1ZpZXdNYW51YWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlBdGxhc0Z0c01hcHBpbmdzVmlld01hbnVhbCB7XG4gIC8qKlxuICAgKiBGbGFnIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGluZGV4IHVzZXMgZHluYW1pYyBvciBzdGF0aWMgbWFwcGluZ3MuIFJlcXVpcmVkIGZvciBzZWFyY2ggaW5kZXhlcyBpZiAqKm1hcHBpbmdzLmZpZWxkcyoqIGlzIG9taXR0ZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNGVFNNYXBwaW5nc1ZpZXdNYW51YWwjRHluYW1pY1xuICAgKi9cbiAgcmVhZG9ubHkgZHluYW1pYz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9uZSBvciBtb3JlIGZpZWxkIHNwZWNpZmljYXRpb25zIGZvciB0aGUgQXRsYXMgU2VhcmNoIGluZGV4LiBTdHJpbmdpZnkganNvbiByZXByZXNlbnRhdGlvbiBvZiBmaWVsZCB3aXRoIHR5cGVzIGFuZCBwcm9wZXJ0aWVzLiBSZXF1aXJlZCBmb3Igc2VhcmNoIGluZGV4ZXMgaWYgKiptYXBwaW5ncy5keW5hbWljKiogaXMgb21pdHRlZCBvciBzZXQgdG8gKipmYWxzZSoqLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRlRTTWFwcGluZ3NWaWV3TWFudWFsI0ZpZWxkc1xuICAgKi9cbiAgcmVhZG9ubHkgZmllbGRzPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdBcGlBdGxhc0Z0c01hcHBpbmdzVmlld01hbnVhbCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQXBpQXRsYXNGdHNNYXBwaW5nc1ZpZXdNYW51YWwoXG4gIG9iajogQXBpQXRsYXNGdHNNYXBwaW5nc1ZpZXdNYW51YWwgfCB1bmRlZmluZWRcbik6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBEeW5hbWljOiBvYmouZHluYW1pYyxcbiAgICBGaWVsZHM6IG9iai5maWVsZHMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZShcbiAgICAociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCA/IHIgOiB7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSxcbiAgICB7fVxuICApO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgQXBpQXRsYXNGVFNTeW5vbnltTWFwcGluZ0RlZmluaXRpb25WaWV3XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpQXRsYXNGdHNTeW5vbnltTWFwcGluZ0RlZmluaXRpb25WaWV3IHtcbiAgLyoqXG4gICAqIFNwZWNpZmljIHByZS1kZWZpbmVkIG1ldGhvZCBjaG9zZW4gdG8gYXBwbHkgdG8gdGhlIHN5bm9ueW1zIHRvIGJlIHNlYXJjaGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRlRTU3lub255bU1hcHBpbmdEZWZpbml0aW9uVmlldyNBbmFseXplclxuICAgKi9cbiAgcmVhZG9ubHkgYW5hbHl6ZXI6IHN0cmluZztcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHRoZSBzeW5vbnltIGRlZmluaXRpb24uIEVhY2ggKipzeW5vbnltLm5hbWUqKiBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIHNhbWUgaW5kZXggZGVmaW5pdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0ZUU1N5bm9ueW1NYXBwaW5nRGVmaW5pdGlvblZpZXcjTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEYXRhIHNldCB0aGF0IHN0b3JlcyB0aGUgbWFwcGluZyBvbmUgb3IgbW9yZSB3b3JkcyBtYXAgdG8gb25lIG9yIG1vcmUgc3lub255bXMgb2YgdGhvc2Ugd29yZHMuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNGVFNTeW5vbnltTWFwcGluZ0RlZmluaXRpb25WaWV3I1NvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlOiBTeW5vbnltU291cmNlO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdBcGlBdGxhc0Z0c1N5bm9ueW1NYXBwaW5nRGVmaW5pdGlvblZpZXcnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0FwaUF0bGFzRnRzU3lub255bU1hcHBpbmdEZWZpbml0aW9uVmlldyhcbiAgb2JqOiBBcGlBdGxhc0Z0c1N5bm9ueW1NYXBwaW5nRGVmaW5pdGlvblZpZXcgfCB1bmRlZmluZWRcbik6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBBbmFseXplcjogb2JqLmFuYWx5emVyLFxuICAgIE5hbWU6IG9iai5uYW1lLFxuICAgIFNvdXJjZTogdG9Kc29uX1N5bm9ueW1Tb3VyY2Uob2JqLnNvdXJjZSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZShcbiAgICAociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCA/IHIgOiB7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSxcbiAgICB7fVxuICApO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFRva2VuaXplciB0aGF0IHlvdSB3YW50IHRvIHVzZSB0byBjcmVhdGUgdG9rZW5zLiBUb2tlbnMgZGV0ZXJtaW5lIGhvdyBBdGxhcyBTZWFyY2ggc3BsaXRzIHVwIHRleHQgaW50byBkaXNjcmV0ZSBjaHVua3MgZm9yIGluZGV4aW5nLlxuICpcbiAqIEBzY2hlbWEgQXBpQXRsYXNGVFNBbmFseXplcnNUb2tlbml6ZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlBdGxhc0Z0c0FuYWx5emVyc1Rva2VuaXplciB7XG4gIC8qKlxuICAgKiBDaGFyYWN0ZXJzIHRvIGluY2x1ZGUgaW4gdGhlIGxvbmdlc3QgdG9rZW4gdGhhdCBBdGxhcyBTZWFyY2ggY3JlYXRlcy5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0ZUU0FuYWx5emVyc1Rva2VuaXplciNNYXhHcmFtXG4gICAqL1xuICByZWFkb25seSBtYXhHcmFtPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGFyYWN0ZXJzIHRvIGluY2x1ZGUgaW4gdGhlIHNob3J0ZXN0IHRva2VuIHRoYXQgQXRsYXMgU2VhcmNoIGNyZWF0ZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNGVFNBbmFseXplcnNUb2tlbml6ZXIjTWluR3JhbVxuICAgKi9cbiAgcmVhZG9ubHkgbWluR3JhbT86IG51bWJlcjtcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHRoaXMgdG9rZW5pemVyIHR5cGUuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNGVFNBbmFseXplcnNUb2tlbml6ZXIjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcblxuICAvKipcbiAgICogSW5kZXggb2YgdGhlIGNoYXJhY3RlciBncm91cCB3aXRoaW4gdGhlIG1hdGNoaW5nIGV4cHJlc3Npb24gdG8gZXh0cmFjdCBpbnRvIHRva2Vucy4gVXNlIGAwYCB0byBleHRyYWN0IGFsbCBjaGFyYWN0ZXIgZ3JvdXBzLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRlRTQW5hbHl6ZXJzVG9rZW5pemVyI0dyb3VwXG4gICAqL1xuICByZWFkb25seSBncm91cD86IG51bWJlcjtcblxuICAvKipcbiAgICogUmVndWxhciBleHByZXNzaW9uIHRvIG1hdGNoIGFnYWluc3QuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNGVFNBbmFseXplcnNUb2tlbml6ZXIjUGF0dGVyblxuICAgKi9cbiAgcmVhZG9ubHkgcGF0dGVybj86IHN0cmluZztcblxuICAvKipcbiAgICogTWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBhIHNpbmdsZSB0b2tlbi4gVG9rZW5zIGdyZWF0ZXIgdGhhbiB0aGlzIGxlbmd0aCBhcmUgc3BsaXQgYXQgdGhpcyBsZW5ndGggaW50byBtdWx0aXBsZSB0b2tlbnMuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNGVFNBbmFseXplcnNUb2tlbml6ZXIjTWF4VG9rZW5MZW5ndGhcbiAgICovXG4gIHJlYWRvbmx5IG1heFRva2VuTGVuZ3RoPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdBcGlBdGxhc0Z0c0FuYWx5emVyc1Rva2VuaXplcicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQXBpQXRsYXNGdHNBbmFseXplcnNUb2tlbml6ZXIoXG4gIG9iajogQXBpQXRsYXNGdHNBbmFseXplcnNUb2tlbml6ZXIgfCB1bmRlZmluZWRcbik6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBNYXhHcmFtOiBvYmoubWF4R3JhbSxcbiAgICBNaW5HcmFtOiBvYmoubWluR3JhbSxcbiAgICBUeXBlOiBvYmoudHlwZSxcbiAgICBHcm91cDogb2JqLmdyb3VwLFxuICAgIFBhdHRlcm46IG9iai5wYXR0ZXJuLFxuICAgIE1heFRva2VuTGVuZ3RoOiBvYmoubWF4VG9rZW5MZW5ndGgsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZShcbiAgICAociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCA/IHIgOiB7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSxcbiAgICB7fVxuICApO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgU3lub255bVNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN5bm9ueW1Tb3VyY2Uge1xuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHRoZSBNb25nb0RCIGNvbGxlY3Rpb24gdGhhdCBzdG9yZXMgd29yZHMgYW5kIHRoZWlyIGFwcGxpY2FibGUgc3lub255bXMuXG4gICAqXG4gICAqIEBzY2hlbWEgU3lub255bVNvdXJjZSNDb2xsZWN0aW9uXG4gICAqL1xuICByZWFkb25seSBjb2xsZWN0aW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1N5bm9ueW1Tb3VyY2UnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1N5bm9ueW1Tb3VyY2UoXG4gIG9iajogU3lub255bVNvdXJjZSB8IHVuZGVmaW5lZFxuKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIENvbGxlY3Rpb246IG9iai5jb2xsZWN0aW9uLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoXG4gICAgKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQgPyByIDogeyAuLi5yLCBbaVswXV06IGlbMV0gfSksXG4gICAge31cbiAgKTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBBIENsb3VkRm9ybWF0aW9uIGBNb25nb0RCOjpBdGxhczo6U2VhcmNoSW5kZXhgXG4gKlxuICogQGNsb3VkZm9ybWF0aW9uUmVzb3VyY2UgTW9uZ29EQjo6QXRsYXM6OlNlYXJjaEluZGV4XG4gKiBAc3RhYmlsaXR5IGV4dGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBDZm5TZWFyY2hJbmRleCBleHRlbmRzIGNkay5DZm5SZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZSBuYW1lIGZvciB0aGlzIHJlc291cmNlIGNsYXNzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDRk5fUkVTT1VSQ0VfVFlQRV9OQU1FID0gXCJNb25nb0RCOjpBdGxhczo6U2VhcmNoSW5kZXhcIjtcblxuICAvKipcbiAgICogUmVzb3VyY2UgcHJvcHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvcHM6IENmblNlYXJjaEluZGV4UHJvcHM7XG5cbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6OlNlYXJjaEluZGV4LkluZGV4SWRgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXR0ckluZGV4SWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6OlNlYXJjaEluZGV4LlN0YXR1c2BcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRyU3RhdHVzOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBgTW9uZ29EQjo6QXRsYXM6OlNlYXJjaEluZGV4YC5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gc2NvcGUgaW4gd2hpY2ggdGhpcyByZXNvdXJjZSBpcyBkZWZpbmVkXG4gICAqIEBwYXJhbSBpZCAgICAtIHNjb3BlZCBpZCBvZiB0aGUgcmVzb3VyY2VcbiAgICogQHBhcmFtIHByb3BzIC0gcmVzb3VyY2UgcHJvcGVydGllc1xuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IENmblNlYXJjaEluZGV4UHJvcHNcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICB0eXBlOiBDZm5TZWFyY2hJbmRleC5DRk5fUkVTT1VSQ0VfVFlQRV9OQU1FLFxuICAgICAgcHJvcGVydGllczogdG9Kc29uX0NmblNlYXJjaEluZGV4UHJvcHMocHJvcHMpISxcbiAgICB9KTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIHRoaXMuYXR0ckluZGV4SWQgPSBjZGsuVG9rZW4uYXNTdHJpbmcodGhpcy5nZXRBdHQoXCJJbmRleElkXCIpKTtcbiAgICB0aGlzLmF0dHJTdGF0dXMgPSBjZGsuVG9rZW4uYXNTdHJpbmcodGhpcy5nZXRBdHQoXCJTdGF0dXNcIikpO1xuICB9XG59XG4iXX0=