@cdk-cloudformation/freyraim-impactapi-apihandle-module
Version:
Schema for Module Fragment of type FreyrAIM::ImpactApi::ApiHandle::MODULE
318 lines • 58 kB
JavaScript
"use strict";
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CfnApiHandleModule = exports.toJson_CfnApiHandleModulePropsResourcesLambdaFunctionCreateRole = exports.toJson_CfnApiHandleModulePropsResourcesImpactApiHandleLambdaFunction = exports.toJson_CfnApiHandleModulePropsResourcesLambdaPermission = exports.toJson_CfnApiHandleModulePropsResourcesDeploymentDocContentPost = exports.toJson_CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsAccount = exports.toJson_CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsRole = exports.toJson_CfnApiHandleModulePropsResourcesClassifierResource = exports.toJson_CfnApiHandleModulePropsResourcesImpactApi = exports.toJson_CfnApiHandleModulePropsResourcesDocContentResource = exports.toJson_CfnApiHandleModulePropsResourcesDocContentPostMethod = exports.toJson_CfnApiHandleModulePropsParametersSimilarityUrl = exports.toJson_CfnApiHandleModulePropsParametersEndpointName = exports.toJson_CfnApiHandleModulePropsParametersFunctionName = exports.toJson_CfnApiHandleModulePropsParametersImageUri = exports.toJson_CfnApiHandleModulePropsResources = exports.toJson_CfnApiHandleModulePropsParameters = exports.toJson_CfnApiHandleModuleProps = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
// Generated by cdk-import
const cdk = require("aws-cdk-lib");
/**
* Converts an object of type 'CfnApiHandleModuleProps' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnApiHandleModuleProps(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Parameters': toJson_CfnApiHandleModulePropsParameters(obj.parameters),
'Resources': toJson_CfnApiHandleModulePropsResources(obj.resources),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnApiHandleModuleProps = toJson_CfnApiHandleModuleProps;
/**
* Converts an object of type 'CfnApiHandleModulePropsParameters' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnApiHandleModulePropsParameters(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'ImageUri': toJson_CfnApiHandleModulePropsParametersImageUri(obj.imageUri),
'FunctionName': toJson_CfnApiHandleModulePropsParametersFunctionName(obj.functionName),
'EndpointName': toJson_CfnApiHandleModulePropsParametersEndpointName(obj.endpointName),
'SimilarityUrl': toJson_CfnApiHandleModulePropsParametersSimilarityUrl(obj.similarityUrl),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnApiHandleModulePropsParameters = toJson_CfnApiHandleModulePropsParameters;
/**
* Converts an object of type 'CfnApiHandleModulePropsResources' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnApiHandleModulePropsResources(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'DocContentPostMethod': toJson_CfnApiHandleModulePropsResourcesDocContentPostMethod(obj.docContentPostMethod),
'DocContentResource': toJson_CfnApiHandleModulePropsResourcesDocContentResource(obj.docContentResource),
'ImpactApi': toJson_CfnApiHandleModulePropsResourcesImpactApi(obj.impactApi),
'ClassifierResource': toJson_CfnApiHandleModulePropsResourcesClassifierResource(obj.classifierResource),
'ApiGatewayCloudWatchLogsRole': toJson_CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsRole(obj.apiGatewayCloudWatchLogsRole),
'ApiGatewayCloudWatchLogsAccount': toJson_CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsAccount(obj.apiGatewayCloudWatchLogsAccount),
'DeploymentDocContentPost': toJson_CfnApiHandleModulePropsResourcesDeploymentDocContentPost(obj.deploymentDocContentPost),
'LambdaPermission': toJson_CfnApiHandleModulePropsResourcesLambdaPermission(obj.lambdaPermission),
'ImpactApiHandleLambdaFunction': toJson_CfnApiHandleModulePropsResourcesImpactApiHandleLambdaFunction(obj.impactApiHandleLambdaFunction),
'LambdaFunctionCreateRole': toJson_CfnApiHandleModulePropsResourcesLambdaFunctionCreateRole(obj.lambdaFunctionCreateRole),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnApiHandleModulePropsResources = toJson_CfnApiHandleModulePropsResources;
/**
* Converts an object of type 'CfnApiHandleModulePropsParametersImageUri' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnApiHandleModulePropsParametersImageUri(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Description': obj.description,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnApiHandleModulePropsParametersImageUri = toJson_CfnApiHandleModulePropsParametersImageUri;
/**
* Converts an object of type 'CfnApiHandleModulePropsParametersFunctionName' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnApiHandleModulePropsParametersFunctionName(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Description': obj.description,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnApiHandleModulePropsParametersFunctionName = toJson_CfnApiHandleModulePropsParametersFunctionName;
/**
* Converts an object of type 'CfnApiHandleModulePropsParametersEndpointName' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnApiHandleModulePropsParametersEndpointName(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Description': obj.description,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnApiHandleModulePropsParametersEndpointName = toJson_CfnApiHandleModulePropsParametersEndpointName;
/**
* Converts an object of type 'CfnApiHandleModulePropsParametersSimilarityUrl' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnApiHandleModulePropsParametersSimilarityUrl(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Description': obj.description,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnApiHandleModulePropsParametersSimilarityUrl = toJson_CfnApiHandleModulePropsParametersSimilarityUrl;
/**
* Converts an object of type 'CfnApiHandleModulePropsResourcesDocContentPostMethod' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnApiHandleModulePropsResourcesDocContentPostMethod(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Properties': obj.properties,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnApiHandleModulePropsResourcesDocContentPostMethod = toJson_CfnApiHandleModulePropsResourcesDocContentPostMethod;
/**
* Converts an object of type 'CfnApiHandleModulePropsResourcesDocContentResource' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnApiHandleModulePropsResourcesDocContentResource(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Properties': obj.properties,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnApiHandleModulePropsResourcesDocContentResource = toJson_CfnApiHandleModulePropsResourcesDocContentResource;
/**
* Converts an object of type 'CfnApiHandleModulePropsResourcesImpactApi' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnApiHandleModulePropsResourcesImpactApi(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Properties': obj.properties,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnApiHandleModulePropsResourcesImpactApi = toJson_CfnApiHandleModulePropsResourcesImpactApi;
/**
* Converts an object of type 'CfnApiHandleModulePropsResourcesClassifierResource' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnApiHandleModulePropsResourcesClassifierResource(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Properties': obj.properties,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnApiHandleModulePropsResourcesClassifierResource = toJson_CfnApiHandleModulePropsResourcesClassifierResource;
/**
* Converts an object of type 'CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsRole' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsRole(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Properties': obj.properties,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsRole = toJson_CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsRole;
/**
* Converts an object of type 'CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsAccount' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsAccount(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Properties': obj.properties,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsAccount = toJson_CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsAccount;
/**
* Converts an object of type 'CfnApiHandleModulePropsResourcesDeploymentDocContentPost' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnApiHandleModulePropsResourcesDeploymentDocContentPost(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Properties': obj.properties,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnApiHandleModulePropsResourcesDeploymentDocContentPost = toJson_CfnApiHandleModulePropsResourcesDeploymentDocContentPost;
/**
* Converts an object of type 'CfnApiHandleModulePropsResourcesLambdaPermission' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnApiHandleModulePropsResourcesLambdaPermission(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Properties': obj.properties,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnApiHandleModulePropsResourcesLambdaPermission = toJson_CfnApiHandleModulePropsResourcesLambdaPermission;
/**
* Converts an object of type 'CfnApiHandleModulePropsResourcesImpactApiHandleLambdaFunction' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnApiHandleModulePropsResourcesImpactApiHandleLambdaFunction(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Properties': obj.properties,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnApiHandleModulePropsResourcesImpactApiHandleLambdaFunction = toJson_CfnApiHandleModulePropsResourcesImpactApiHandleLambdaFunction;
/**
* Converts an object of type 'CfnApiHandleModulePropsResourcesLambdaFunctionCreateRole' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnApiHandleModulePropsResourcesLambdaFunctionCreateRole(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Properties': obj.properties,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnApiHandleModulePropsResourcesLambdaFunctionCreateRole = toJson_CfnApiHandleModulePropsResourcesLambdaFunctionCreateRole;
/* eslint-enable max-len, quote-props */
/**
* A CloudFormation `FreyrAIM::ImpactApi::ApiHandle::MODULE`
*
* @cloudformationResource FreyrAIM::ImpactApi::ApiHandle::MODULE
* @stability external
* @link http://unknown-url
*/
class CfnApiHandleModule extends cdk.CfnResource {
/**
* Create a new `FreyrAIM::ImpactApi::ApiHandle::MODULE`.
*
* @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: CfnApiHandleModule.CFN_RESOURCE_TYPE_NAME, properties: toJson_CfnApiHandleModuleProps(props) });
this.props = props;
}
}
exports.CfnApiHandleModule = CfnApiHandleModule;
_a = JSII_RTTI_SYMBOL_1;
CfnApiHandleModule[_a] = { fqn: "@cdk-cloudformation/freyraim-impactapi-apihandle-module.CfnApiHandleModule", version: "1.0.0-alpha.7" };
/**
* The CloudFormation resource type name for this resource class.
*/
CfnApiHandleModule.CFN_RESOURCE_TYPE_NAME = "FreyrAIM::ImpactApi::ApiHandle::MODULE";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwQkFBMEI7QUFDMUIsbUNBQW1DO0FBcUJuQzs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQiw4QkFBOEIsQ0FBQyxHQUF3QztJQUNyRixJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsWUFBWSxFQUFFLHdDQUF3QyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDdEUsV0FBVyxFQUFFLHVDQUF1QyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7S0FDcEUsQ0FBQztJQUNGLDBCQUEwQjtJQUMxQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxRyxDQUFDO0FBUkQsd0VBUUM7QUFxQ0Q7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsU0FBZ0Isd0NBQXdDLENBQUMsR0FBa0Q7SUFDekcsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUM1QyxNQUFNLE1BQU0sR0FBRztRQUNiLFVBQVUsRUFBRSxnREFBZ0QsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQzFFLGNBQWMsRUFBRSxvREFBb0QsQ0FBQyxHQUFHLENBQUMsWUFBWSxD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RCxDQUFDLEdBQXlFO0lBQ3ZKLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtRQUFFLE9BQU8sU0FBUyxDQUFDO0tBQUU7SUFDNUMsTUFBTSxNQUFNLEdBQUc7UUFDYixNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUk7UUFDaEIsWUFBWSxFQUFFLEdBQUcsQ0FBQyxVQUFVO0tBQzdCLENBQUM7SUFDRiwwQkFBMEI7SUFDMUIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDMUcsQ0FBQztBQVJELDBJQVFDO0FBQ0Qsd0NBQXdDO0FBR3hDOzs7Ozs7R0FNRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsR0FBRyxDQUFDLFdBQVc7SUFZckQ7Ozs7OztPQU1HO0lBQ0gsWUFBWSxLQUEyQixFQUFFLEVBQVUsRUFBRSxLQUE4QjtRQUNqRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsOEJBQThCLENBQUMsS0FBSyxDQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTFILElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRXJCLENBQUM7O0FBeEJILGdEQXlCQzs7O0FBeEJDOztFQUVFO0FBQ3FCLHlDQUFzQixHQUFHLHdDQUF3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGNkay1pbXBvcnRcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFNjaGVtYSBmb3IgTW9kdWxlIEZyYWdtZW50IG9mIHR5cGUgRnJleXJBSU06OkltcGFjdEFwaTo6QXBpSGFuZGxlOjpNT0RVTEVcbiAqXG4gKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHMge1xuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wcyNQYXJhbWV0ZXJzXG4gICAqL1xuICByZWFkb25seSBwYXJhbWV0ZXJzPzogQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzI1Jlc291cmNlc1xuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VzPzogQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzKG9iajogQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdQYXJhbWV0ZXJzJzogdG9Kc29uX0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVycyhvYmoucGFyYW1ldGVycyksXG4gICAgJ1Jlc291cmNlcyc6IHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlcyhvYmoucmVzb3VyY2VzKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVycyB7XG4gIC8qKlxuICAgKiBUaGUgbGFtYmRhIGZ1bmN0aW9uYHMgSW1hZ2UgVVJJXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzI0ltYWdlVXJpXG4gICAqL1xuICByZWFkb25seSBpbWFnZVVyaT86IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc0ltYWdlVXJpO1xuXG4gIC8qKlxuICAgKiBUaGUgbGFtYmRhIGZ1bmN0aW9uYHMgbmFtZVxuICAgKlxuICAgKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVycyNGdW5jdGlvbk5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uTmFtZT86IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc0Z1bmN0aW9uTmFtZTtcblxuICAvKipcbiAgICogVGhlIGVuZHBvaW50IG5hbWVcbiAgICpcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnMjRW5kcG9pbnROYW1lXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludE5hbWU/OiBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbmRwb2ludE5hbWU7XG5cbiAgLyoqXG4gICAqIFRoZSBzaW1pbGFyaXR5IHVybFxuICAgKlxuICAgKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVycyNTaW1pbGFyaXR5VXJsXG4gICAqL1xuICByZWFkb25seSBzaW1pbGFyaXR5VXJsPzogQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzU2ltaWxhcml0eVVybDtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVycyhvYmo6IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVycyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ0ltYWdlVXJpJzogdG9Kc29uX0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc0ltYWdlVXJpKG9iai5pbWFnZVVyaSksXG4gICAgJ0Z1bmN0aW9uTmFtZSc6IHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNGdW5jdGlvbk5hbWUob2JqLmZ1bmN0aW9uTmFtZSksXG4gICAgJ0VuZHBvaW50TmFtZSc6IHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbmRwb2ludE5hbWUob2JqLmVuZHBvaW50TmFtZSksXG4gICAgJ1NpbWlsYXJpdHlVcmwnOiB0b0pzb25fQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzU2ltaWxhcml0eVVybChvYmouc2ltaWxhcml0eVVybCksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXMjRG9jQ29udGVudFBvc3RNZXRob2RcbiAgICovXG4gIHJlYWRvbmx5IGRvY0NvbnRlbnRQb3N0TWV0aG9kPzogQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNEb2NDb250ZW50UG9zdE1ldGhvZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlcyNEb2NDb250ZW50UmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IGRvY0NvbnRlbnRSZXNvdXJjZT86IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzRG9jQ29udGVudFJlc291cmNlO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzI0ltcGFjdEFwaVxuICAgKi9cbiAgcmVhZG9ubHkgaW1wYWN0QXBpPzogQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNJbXBhY3RBcGk7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXMjQ2xhc3NpZmllclJlc291cmNlXG4gICAqL1xuICByZWFkb25seSBjbGFzc2lmaWVyUmVzb3VyY2U/OiBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0NsYXNzaWZpZXJSZXNvdXJjZTtcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlcyNBcGlHYXRld2F5Q2xvdWRXYXRjaExvZ3NSb2xlXG4gICAqL1xuICByZWFkb25seSBhcGlHYXRld2F5Q2xvdWRXYXRjaExvZ3NSb2xlPzogQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNBcGlHYXRld2F5Q2xvdWRXYXRjaExvZ3NSb2xlO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzI0FwaUdhdGV3YXlDbG91ZFdhdGNoTG9nc0FjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGFwaUdhdGV3YXlDbG91ZFdhdGNoTG9nc0FjY291bnQ/OiBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0FwaUdhdGV3YXlDbG91ZFdhdGNoTG9nc0FjY291bnQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXMjRGVwbG95bWVudERvY0NvbnRlbnRQb3N0XG4gICAqL1xuICByZWFkb25seSBkZXBsb3ltZW50RG9jQ29udGVudFBvc3Q/OiBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0RlcGxveW1lbnREb2NDb250ZW50UG9zdDtcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlcyNMYW1iZGFQZXJtaXNzaW9uXG4gICAqL1xuICByZWFkb25seSBsYW1iZGFQZXJtaXNzaW9uPzogQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNMYW1iZGFQZXJtaXNzaW9uO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzI0ltcGFjdEFwaUhhbmRsZUxhbWJkYUZ1bmN0aW9uXG4gICAqL1xuICByZWFkb25seSBpbXBhY3RBcGlIYW5kbGVMYW1iZGFGdW5jdGlvbj86IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzSW1wYWN0QXBpSGFuZGxlTGFtYmRhRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXMjTGFtYmRhRnVuY3Rpb25DcmVhdGVSb2xlXG4gICAqL1xuICByZWFkb25seSBsYW1iZGFGdW5jdGlvbkNyZWF0ZVJvbGU/OiBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0xhbWJkYUZ1bmN0aW9uQ3JlYXRlUm9sZTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXMob2JqOiBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ0RvY0NvbnRlbnRQb3N0TWV0aG9kJzogdG9Kc29uX0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzRG9jQ29udGVudFBvc3RNZXRob2Qob2JqLmRvY0NvbnRlbnRQb3N0TWV0aG9kKSxcbiAgICAnRG9jQ29udGVudFJlc291cmNlJzogdG9Kc29uX0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzRG9jQ29udGVudFJlc291cmNlKG9iai5kb2NDb250ZW50UmVzb3VyY2UpLFxuICAgICdJbXBhY3RBcGknOiB0b0pzb25fQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNJbXBhY3RBcGkob2JqLmltcGFjdEFwaSksXG4gICAgJ0NsYXNzaWZpZXJSZXNvdXJjZSc6IHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0NsYXNzaWZpZXJSZXNvdXJjZShvYmouY2xhc3NpZmllclJlc291cmNlKSxcbiAgICAnQXBpR2F0ZXdheUNsb3VkV2F0Y2hMb2dzUm9sZSc6IHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0FwaUdhdGV3YXlDbG91ZFdhdGNoTG9nc1JvbGUob2JqLmFwaUdhdGV3YXlDbG91ZFdhdGNoTG9nc1JvbGUpLFxuICAgICdBcGlHYXRld2F5Q2xvdWRXYXRjaExvZ3NBY2NvdW50JzogdG9Kc29uX0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzQXBpR2F0ZXdheUNsb3VkV2F0Y2hMb2dzQWNjb3VudChvYmouYXBpR2F0ZXdheUNsb3VkV2F0Y2hMb2dzQWNjb3VudCksXG4gICAgJ0RlcGxveW1lbnREb2NDb250ZW50UG9zdCc6IHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0RlcGxveW1lbnREb2NDb250ZW50UG9zdChvYmouZGVwbG95bWVudERvY0NvbnRlbnRQb3N0KSxcbiAgICAnTGFtYmRhUGVybWlzc2lvbic6IHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0xhbWJkYVBlcm1pc3Npb24ob2JqLmxhbWJkYVBlcm1pc3Npb24pLFxuICAgICdJbXBhY3RBcGlIYW5kbGVMYW1iZGFGdW5jdGlvbic6IHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0ltcGFjdEFwaUhhbmRsZUxhbWJkYUZ1bmN0aW9uKG9iai5pbXBhY3RBcGlIYW5kbGVMYW1iZGFGdW5jdGlvbiksXG4gICAgJ0xhbWJkYUZ1bmN0aW9uQ3JlYXRlUm9sZSc6IHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0xhbWJkYUZ1bmN0aW9uQ3JlYXRlUm9sZShvYmoubGFtYmRhRnVuY3Rpb25DcmVhdGVSb2xlKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBUaGUgbGFtYmRhIGZ1bmN0aW9uYHMgSW1hZ2UgVVJJXG4gKlxuICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNJbWFnZVVyaVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc0ltYWdlVXJpIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzSW1hZ2VVcmkjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc0ltYWdlVXJpI0Rlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc0ltYWdlVXJpJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNJbWFnZVVyaShvYmo6IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc0ltYWdlVXJpIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnVHlwZSc6IG9iai50eXBlLFxuICAgICdEZXNjcmlwdGlvbic6IG9iai5kZXNjcmlwdGlvbixcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBUaGUgbGFtYmRhIGZ1bmN0aW9uYHMgbmFtZVxuICpcbiAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzRnVuY3Rpb25OYW1lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzRnVuY3Rpb25OYW1lIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzRnVuY3Rpb25OYW1lI1R5cGVcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNGdW5jdGlvbk5hbWUjRGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzRnVuY3Rpb25OYW1lJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNGdW5jdGlvbk5hbWUob2JqOiBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNGdW5jdGlvbk5hbWUgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdUeXBlJzogb2JqLnR5cGUsXG4gICAgJ0Rlc2NyaXB0aW9uJzogb2JqLmRlc2NyaXB0aW9uLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFRoZSBlbmRwb2ludCBuYW1lXG4gKlxuICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbmRwb2ludE5hbWVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbmRwb2ludE5hbWUge1xuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbmRwb2ludE5hbWUjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc0VuZHBvaW50TmFtZSNEZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbmRwb2ludE5hbWUnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc0VuZHBvaW50TmFtZShvYmo6IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc0VuZHBvaW50TmFtZSB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ1R5cGUnOiBvYmoudHlwZSxcbiAgICAnRGVzY3JpcHRpb24nOiBvYmouZGVzY3JpcHRpb24sXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogVGhlIHNpbWlsYXJpdHkgdXJsXG4gKlxuICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNTaW1pbGFyaXR5VXJsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzU2ltaWxhcml0eVVybCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc1NpbWlsYXJpdHlVcmwjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc1NpbWlsYXJpdHlVcmwjRGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzU2ltaWxhcml0eVVybCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzU2ltaWxhcml0eVVybChvYmo6IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc1NpbWlsYXJpdHlVcmwgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdUeXBlJzogb2JqLnR5cGUsXG4gICAgJ0Rlc2NyaXB0aW9uJzogb2JqLmRlc2NyaXB0aW9uLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNEb2NDb250ZW50UG9zdE1ldGhvZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzRG9jQ29udGVudFBvc3RNZXRob2Qge1xuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0RvY0NvbnRlbnRQb3N0TWV0aG9kI1R5cGVcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNEb2NDb250ZW50UG9zdE1ldGhvZCNQcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogYW55O1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzRG9jQ29udGVudFBvc3RNZXRob2QnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzRG9jQ29udGVudFBvc3RNZXRob2Qob2JqOiBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0RvY0NvbnRlbnRQb3N0TWV0aG9kIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnVHlwZSc6IG9iai50eXBlLFxuICAgICdQcm9wZXJ0aWVzJzogb2JqLnByb3BlcnRpZXMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0RvY0NvbnRlbnRSZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzRG9jQ29udGVudFJlc291cmNlIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNEb2NDb250ZW50UmVzb3VyY2UjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0RvY0NvbnRlbnRSZXNvdXJjZSNQcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogYW55O1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzRG9jQ29udGVudFJlc291cmNlJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0RvY0NvbnRlbnRSZXNvdXJjZShvYmo6IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzRG9jQ29udGVudFJlc291cmNlIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnVHlwZSc6IG9iai50eXBlLFxuICAgICdQcm9wZXJ0aWVzJzogb2JqLnByb3BlcnRpZXMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0ltcGFjdEFwaVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzSW1wYWN0QXBpIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNJbXBhY3RBcGkjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0ltcGFjdEFwaSNQcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogYW55O1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzSW1wYWN0QXBpJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0ltcGFjdEFwaShvYmo6IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzSW1wYWN0QXBpIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnVHlwZSc6IG9iai50eXBlLFxuICAgICdQcm9wZXJ0aWVzJzogb2JqLnByb3BlcnRpZXMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0NsYXNzaWZpZXJSZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzQ2xhc3NpZmllclJlc291cmNlIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNDbGFzc2lmaWVyUmVzb3VyY2UjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0NsYXNzaWZpZXJSZXNvdXJjZSNQcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogYW55O1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzQ2xhc3NpZmllclJlc291cmNlJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0NsYXNzaWZpZXJSZXNvdXJjZShvYmo6IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzQ2xhc3NpZmllclJlc291cmNlIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnVHlwZSc6IG9iai50eXBlLFxuICAgICdQcm9wZXJ0aWVzJzogb2JqLnByb3BlcnRpZXMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0FwaUdhdGV3YXlDbG91ZFdhdGNoTG9nc1JvbGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0FwaUdhdGV3YXlDbG91ZFdhdGNoTG9nc1JvbGUge1xuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0FwaUdhdGV3YXlDbG91ZFdhdGNoTG9nc1JvbGUjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0FwaUdhdGV3YXlDbG91ZFdhdGNoTG9nc1JvbGUjUHJvcGVydGllc1xuICAgKi9cbiAgcmVhZG9ubHkgcHJvcGVydGllcz86IGFueTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0FwaUdhdGV3YXlDbG91ZFdhdGNoTG9nc1JvbGUnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzQXBpR2F0ZXdheUNsb3VkV2F0Y2hMb2dzUm9sZShvYmo6IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzQXBpR2F0ZXdheUNsb3VkV2F0Y2hMb2dzUm9sZSB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ1R5cGUnOiBvYmoudHlwZSxcbiAgICAnUHJvcGVydGllcyc6IG9iai5wcm9wZXJ0aWVzLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNBcGlHYXRld2F5Q2xvdWRXYXRjaExvZ3NBY2NvdW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNBcGlHYXRld2F5Q2xvdWRXYXRjaExvZ3NBY2NvdW50IHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNBcGlHYXRld2F5Q2xvdWRXYXRjaExvZ3NBY2NvdW50I1R5cGVcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNBcGlHYXRld2F5Q2xvdWRXYXRjaExvZ3NBY2NvdW50I1Byb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IHByb3BlcnRpZXM/OiBhbnk7XG5cb