New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

ngx-validator

Package Overview
Dependencies
Maintainers
1
Versions
52
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ngx-validator - npm Package Compare versions

Comparing version 0.10.2 to 0.10.3

66

esm2015/core/reflect-input.models.js
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -9,12 +9,10 @@ /**

export function ParamInputModel() { }
function ParamInputModel_tsickle_Closure_declarations() {
/** @type {?|undefined} */
ParamInputModel.prototype.value;
/** @type {?|undefined} */
ParamInputModel.prototype.field;
/** @type {?} */
ParamInputModel.prototype.error;
/** @type {?|undefined} */
ParamInputModel.prototype.customValue;
}
/** @type {?|undefined} */
ParamInputModel.prototype.value;
/** @type {?|undefined} */
ParamInputModel.prototype.field;
/** @type {?} */
ParamInputModel.prototype.error;
/** @type {?|undefined} */
ParamInputModel.prototype.customValue;
/**

@@ -24,10 +22,8 @@ * @record

export function RangeInputModel() { }
function RangeInputModel_tsickle_Closure_declarations() {
/** @type {?|undefined} */
RangeInputModel.prototype.min;
/** @type {?|undefined} */
RangeInputModel.prototype.max;
/** @type {?} */
RangeInputModel.prototype.error;
}
/** @type {?|undefined} */
RangeInputModel.prototype.min;
/** @type {?|undefined} */
RangeInputModel.prototype.max;
/** @type {?} */
RangeInputModel.prototype.error;
/** @enum {number} */

@@ -47,12 +43,12 @@ const DataTypeEnum = {

export { DataTypeEnum };
DataTypeEnum[DataTypeEnum.Int] = "Int";
DataTypeEnum[DataTypeEnum.Number] = "Number";
DataTypeEnum[DataTypeEnum.MultilineText] = "MultilineText";
DataTypeEnum[DataTypeEnum.Url] = "Url";
DataTypeEnum[DataTypeEnum.ImageUrl] = "ImageUrl";
DataTypeEnum[DataTypeEnum.Password] = "Password";
DataTypeEnum[DataTypeEnum.Hexadecimal] = "Hexadecimal";
DataTypeEnum[DataTypeEnum.Date] = "Date";
DataTypeEnum[DataTypeEnum.Array] = "Array";
DataTypeEnum[DataTypeEnum.Upload] = "Upload";
DataTypeEnum[DataTypeEnum.Int] = 'Int';
DataTypeEnum[DataTypeEnum.Number] = 'Number';
DataTypeEnum[DataTypeEnum.MultilineText] = 'MultilineText';
DataTypeEnum[DataTypeEnum.Url] = 'Url';
DataTypeEnum[DataTypeEnum.ImageUrl] = 'ImageUrl';
DataTypeEnum[DataTypeEnum.Password] = 'Password';
DataTypeEnum[DataTypeEnum.Hexadecimal] = 'Hexadecimal';
DataTypeEnum[DataTypeEnum.Date] = 'Date';
DataTypeEnum[DataTypeEnum.Array] = 'Array';
DataTypeEnum[DataTypeEnum.Upload] = 'Upload';
/**

@@ -62,9 +58,7 @@ * @record

export function DecoratorReturnModel() { }
function DecoratorReturnModel_tsickle_Closure_declarations() {
/** @type {?} */
DecoratorReturnModel.prototype.key;
/** @type {?} */
DecoratorReturnModel.prototype.value;
}
/** @type {?} */
DecoratorReturnModel.prototype.key;
/** @type {?} */
DecoratorReturnModel.prototype.value;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdC1pbnB1dC5tb2RlbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdmFsaWRhdG9yLyIsInNvdXJjZXMiOlsiY29yZS9yZWZsZWN0LWlucHV0Lm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBQYXJhbUlucHV0TW9kZWwge1xyXG4gICAgdmFsdWU/OiBhbnk7XHJcbiAgICBmaWVsZD86IHN0cmluZztcclxuICAgIGVycm9yOiBzdHJpbmc7XHJcbiAgICBjdXN0b21WYWx1ZT86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSYW5nZUlucHV0TW9kZWwge1xyXG4gICAgbWluPzogbnVtYmVyIHwgRGF0ZTtcclxuICAgIG1heD86IG51bWJlciB8IERhdGU7XHJcbiAgICBlcnJvcjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBEYXRhVHlwZUVudW0ge1xyXG4gICAgSW50LFxyXG4gICAgTnVtYmVyLFxyXG4gICAgTXVsdGlsaW5lVGV4dCxcclxuICAgIFVybCxcclxuICAgIEltYWdlVXJsLFxyXG4gICAgUGFzc3dvcmQsXHJcbiAgICBIZXhhZGVjaW1hbCxcclxuICAgIERhdGUsXHJcbiAgICBBcnJheSxcclxuICAgIFVwbG9hZFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERlY29yYXRvclJldHVybk1vZGVsIHtcclxuICAgIGtleTogc3RyaW5nO1xyXG4gICAgdmFsdWU6IGFueTtcclxufVxyXG5cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdC1pbnB1dC5tb2RlbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdmFsaWRhdG9yLyIsInNvdXJjZXMiOlsiY29yZS9yZWZsZWN0LWlucHV0Lm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBY0ksTUFBRztJQUNILFNBQU07SUFDTixnQkFBYTtJQUNiLE1BQUc7SUFDSCxXQUFRO0lBQ1IsV0FBUTtJQUNSLGNBQVc7SUFDWCxPQUFJO0lBQ0osUUFBSztJQUNMLFNBQU07OzswQkFUTixHQUFHOzBCQUNILE1BQU07MEJBQ04sYUFBYTswQkFDYixHQUFHOzBCQUNILFFBQVE7MEJBQ1IsUUFBUTswQkFDUixXQUFXOzBCQUNYLElBQUk7MEJBQ0osS0FBSzswQkFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBQYXJhbUlucHV0TW9kZWwge1xyXG4gICAgdmFsdWU/OiBhbnk7XHJcbiAgICBmaWVsZD86IHN0cmluZztcclxuICAgIGVycm9yOiBzdHJpbmc7XHJcbiAgICBjdXN0b21WYWx1ZT86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSYW5nZUlucHV0TW9kZWwge1xyXG4gICAgbWluPzogbnVtYmVyIHwgRGF0ZTtcclxuICAgIG1heD86IG51bWJlciB8IERhdGU7XHJcbiAgICBlcnJvcjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBEYXRhVHlwZUVudW0ge1xyXG4gICAgSW50LFxyXG4gICAgTnVtYmVyLFxyXG4gICAgTXVsdGlsaW5lVGV4dCxcclxuICAgIFVybCxcclxuICAgIEltYWdlVXJsLFxyXG4gICAgUGFzc3dvcmQsXHJcbiAgICBIZXhhZGVjaW1hbCxcclxuICAgIERhdGUsXHJcbiAgICBBcnJheSxcclxuICAgIFVwbG9hZFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERlY29yYXRvclJldHVybk1vZGVsIHtcclxuICAgIGtleTogc3RyaW5nO1xyXG4gICAgdmFsdWU6IGFueTtcclxufVxyXG5cclxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -151,6 +151,9 @@ import 'reflect-metadata';

export function getDecorators(target, propertyName) {
const /** @type {?} */ keys = Reflect.getMetadataKeys(target, propertyName);
const /** @type {?} */ decorators = keys.filter(key => key.toString().startsWith('custom-reflect:'))
/** @type {?} */
const keys = Reflect.getMetadataKeys(target, propertyName);
/** @type {?} */
const decorators = keys.filter(key => key.toString().startsWith('custom-reflect:'))
.reduce((values, key) => {
const /** @type {?} */ value = Reflect.getMetadata(key, target, propertyName);
/** @type {?} */
const value = Reflect.getMetadata(key, target, propertyName);
return values.concat({ key: key.toString().replace('custom-reflect:', ''), value });

@@ -168,3 +171,4 @@ }, []);

export function ngxValidate(key, param, value, dataModel) {
let /** @type {?} */ retstr;
/** @type {?} */
let retstr;
if ((value === null || value === undefined || value === '') && key !== 'Required' && key !== 'Compare') {

@@ -182,18 +186,34 @@ return null;

value = value.replace(/[- ]+/g, '');
const /** @type {?} */ Visa = /^4[0-9]{12}(?:[0-9]{3})?$/;
const /** @type {?} */ MasterCard = /^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$/;
const /** @type {?} */ Amex = /^3[47][0-9]{13}$/;
const /** @type {?} */ DinersClub = /^3(?:0[0-5]|[68][0-9])[0-9]{11}$/;
const /** @type {?} */ Discover = /^6(?:011|5[0-9]{2})[0-9]{12}$/;
const /** @type {?} */ JCB = /^(?:2131|1800|35\d{3})\d{11}$/;
const /** @type {?} */ BCGlobal = /^(6541|6556)[0-9]{12}$/;
const /** @type {?} */ CarteBlanche = /^389[0-9]{11}$/;
const /** @type {?} */ InstaPayment = /^63[7-9][0-9]{13}$/;
const /** @type {?} */ KoreanLocalCard = /^9[0-9]{15}$/;
const /** @type {?} */ Laser = /^(6304|6706|6709|6771)[0-9]{12,15}$/;
const /** @type {?} */ Maestro = /^(5018|5020|5038|6304|6759|6761|6763)[0-9]{8,15}$/;
const /** @type {?} */ Solo = /^(6334|6767)[0-9]{12}|(6334|6767)[0-9]{14}|(6334|6767)[0-9]{15}$/;
const /** @type {?} */ Switch = /^(4903|4905|4911|4936|6333|6759)[0-9]{12}|(4903|4905|4911|4936|6333|6759)[0-9]{14}|(4903|4905|4911|4936|6333|6759)[0-9]{15}|564182[0-9]{10}|564182[0-9]{12}|564182[0-9]{13}|633110[0-9]{10}|633110[0-9]{12}|633110[0-9]{13}$/;
const /** @type {?} */ UnionPay = /^(62[0-9]{14,17})$/;
const /** @type {?} */ VisaMasterCard = /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14})$/;
/** @type {?} */
const Visa = /^4[0-9]{12}(?:[0-9]{3})?$/;
/** @type {?} */
const MasterCard = /^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$/;
/** @type {?} */
const Amex = /^3[47][0-9]{13}$/;
/** @type {?} */
const DinersClub = /^3(?:0[0-5]|[68][0-9])[0-9]{11}$/;
/** @type {?} */
const Discover = /^6(?:011|5[0-9]{2})[0-9]{12}$/;
/** @type {?} */
const JCB = /^(?:2131|1800|35\d{3})\d{11}$/;
/** @type {?} */
const BCGlobal = /^(6541|6556)[0-9]{12}$/;
/** @type {?} */
const CarteBlanche = /^389[0-9]{11}$/;
/** @type {?} */
const InstaPayment = /^63[7-9][0-9]{13}$/;
/** @type {?} */
const KoreanLocalCard = /^9[0-9]{15}$/;
/** @type {?} */
const Laser = /^(6304|6706|6709|6771)[0-9]{12,15}$/;
/** @type {?} */
const Maestro = /^(5018|5020|5038|6304|6759|6761|6763)[0-9]{8,15}$/;
/** @type {?} */
const Solo = /^(6334|6767)[0-9]{12}|(6334|6767)[0-9]{14}|(6334|6767)[0-9]{15}$/;
/** @type {?} */
const Switch = /^(4903|4905|4911|4936|6333|6759)[0-9]{12}|(4903|4905|4911|4936|6333|6759)[0-9]{14}|(4903|4905|4911|4936|6333|6759)[0-9]{15}|564182[0-9]{10}|564182[0-9]{12}|564182[0-9]{13}|633110[0-9]{10}|633110[0-9]{12}|633110[0-9]{13}$/;
/** @type {?} */
const UnionPay = /^(62[0-9]{14,17})$/;
/** @type {?} */
const VisaMasterCard = /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14})$/;
if (!checkLuhn(value) ||

@@ -222,3 +242,4 @@ !(Visa.test(value) || MasterCard.test(value) || Amex.test(value) || DinersClub.test(value) || Discover.test(value) || JCB.test(value)

if ((/** @type {?} */ (param)).value === DataTypeEnum.Number) {
const /** @type {?} */ reg = /^[+-]?\d+(\.\d+)?$/;
/** @type {?} */
const reg = /^[+-]?\d+(\.\d+)?$/;
if (isNaN(parseFloat(value)) || !reg.test(value)) {

@@ -234,3 +255,4 @@ retstr = (/** @type {?} */ (param)).error;

if ((/** @type {?} */ (param)).value === DataTypeEnum.Hexadecimal) {
const /** @type {?} */ expression = /^([0-9a-fA-F]+)$/i;
/** @type {?} */
const expression = /^([0-9a-fA-F]+)$/i;
if (!expression.test(value)) {

@@ -241,3 +263,4 @@ retstr = (/** @type {?} */ (param)).error;

if ((/** @type {?} */ (param)).value === DataTypeEnum.Int) {
const /** @type {?} */ reg = /^[+\-]?\d+$/;
/** @type {?} */
const reg = /^[+\-]?\d+$/;
if (isNaN(parseFloat(value))

@@ -269,3 +292,4 @@ || !isNaN(parseFloat(value)) && (parseFloat(value) - parseInt(value, 10) !== 0)

case 'Pattern': {
const /** @type {?} */ pat = (/** @type {?} */ (param)).value;
/** @type {?} */
const pat = (/** @type {?} */ (param)).value;
if (!pat.test(value)) {

@@ -301,4 +325,4 @@ retstr = (/** @type {?} */ (param)).error;

case 'Email': {
// credits http://emailregex.com/
const /** @type {?} */ emreg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
/** @type {?} */
const emreg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
if (!emreg.test(value)) {

@@ -321,9 +345,14 @@ retstr = /** @type {?} */ (param);

function checkLuhn(value) {
// credits https://github.com/JamesEggers1/node-luhn
const /** @type {?} */ trimmed = String(value).replace(/[\s]/g, '');
const /** @type {?} */ length = trimmed.length;
let /** @type {?} */ odd = false;
let /** @type {?} */ total = 0;
let /** @type {?} */ calc;
let /** @type {?} */ calc2;
/** @type {?} */
const trimmed = String(value).replace(/[\s]/g, '');
/** @type {?} */
const length = trimmed.length;
/** @type {?} */
let odd = false;
/** @type {?} */
let total = 0;
/** @type {?} */
let calc;
/** @type {?} */
let calc2;
if (length === 0) {

@@ -335,3 +364,3 @@ return true;

}
for (let /** @type {?} */ i = length; i > 0; i--) {
for (let i = length; i > 0; i--) {
calc = parseInt(trimmed.charAt(i - 1), 10);

@@ -368,2 +397,2 @@ if (!odd) {

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdG9yLWZ1bmN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC12YWxpZGF0b3IvIiwic291cmNlcyI6WyJjb3JlL3JlZmxlY3Rvci1mdW5jdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUEwRCxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFHOUcsTUFBTSxtQkFBbUIsS0FBc0I7SUFDM0MsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMseUJBQXlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNqRixDQUFDO0NBQ0w7Ozs7O0FBRUQsTUFBTSxxQkFBcUIsS0FBc0I7SUFDN0MsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMsMkJBQTJCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNuRixDQUFDO0NBQ0w7Ozs7O0FBRUQsTUFBTSxrQkFBa0IsS0FBc0I7SUFDMUMsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNoRixDQUFDO0NBQ0w7Ozs7O0FBRUQsTUFBTSxtQkFBbUIsS0FBc0I7SUFDM0MsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMseUJBQXlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNqRixDQUFDO0NBQ0w7Ozs7O0FBUUQsTUFBTSxlQUFlLEtBQWE7SUFDOUIsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8s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QUssQ0FBQyxDQUFDLENBQUM7Q0FDOUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xyXG5pbXBvcnQgeyBQYXJhbUlucHV0TW9kZWwsIFJhbmdlSW5wdXRNb2RlbCwgRGVjb3JhdG9yUmV0dXJuTW9kZWwsIERhdGFUeXBlRW51bSB9IGZyb20gJy4vcmVmbGVjdC1pbnB1dC5tb2RlbHMnO1xyXG4vLyBpbXBvcnQgeyBpc1ZhbGlkIH0gZnJvbSAnaWJhbic7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gRGF0YVR5cGUocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OkRhdGFUeXBlJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIENyZWRpdENhcmQocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OkNyZWRpdENhcmQnLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gQ29tcGFyZShwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6Q29tcGFyZScsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBDb250YWlucyhwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6Q29udGFpbnMnLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG4vLyBleHBvcnQgZnVuY3Rpb24gSUJBTihwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbi8vICAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbi8vICAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6SUJBTicsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuLy8gICAgIH07XHJcbi8vIH1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBOYW1lKHBhcmFtOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpOYW1lJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFJlcXVpcmVkKHBhcmFtOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpSZXF1aXJlZCcsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBQYXR0ZXJuKHBhcmFtOiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpQYXR0ZXJuJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE1pblZhbHVlKGlucHV0OiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpNaW5WYWx1ZScsIGlucHV0LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBNYXhWYWx1ZShpbnB1dDogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6TWF4VmFsdWUnLCBpbnB1dCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gTm90Q29udGFpbnMocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0Ok5vdENvbnRhaW5zJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFN0cmluZ0xlbmd0aChpbnB1dDogUmFuZ2VJbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6U3RyaW5nTGVuZ3RoJywgaW5wdXQsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gRW1haWwoaW5wdXQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OkVtYWlsJywgaW5wdXQsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gUGxhY2Vob2xkZXIoaW5wdXQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OlBsYWNlaG9sZGVyJywgaW5wdXQsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFZhbHVlUmFuZ2UoaW5wdXQ6IFJhbmdlSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OlZhbHVlUmFuZ2UnLCBpbnB1dCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJhYmxlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcclxuICAgICAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHZhbHVlO1xyXG4gICAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFBsYWNlaG9sZGVyKHN0cmluZylcclxuICogVmFsaWRhdGU6IGZ1bmN0aW9uXHJcbiAqIENvbXBhcmU6PyDhg53hg6Dhg5gg4YOV4YOU4YOa4YOY4YOhIOGDqOGDlOGDk+GDkOGDoOGDlOGDkeGDkFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldERlY29yYXRvcnModGFyZ2V0OiBhbnksIHByb3BlcnR5TmFtZTogc3RyaW5nIHwgc3ltYm9sKTogRGVjb3JhdG9yUmV0dXJuTW9kZWxbXSB7XHJcbiAgICBjb25zdCBrZXlzOiBhbnlbXSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGFLZXlzKHRhcmdldCwgcHJvcGVydHlOYW1lKTtcclxuXHJcbiAgICBjb25zdCBkZWNvcmF0b3JzID0ga2V5cy5maWx0ZXIoa2V5ID0+IGtleS50b1N0cmluZygpLnN0YXJ0c1dpdGgoJ2N1c3RvbS1yZWZsZWN0OicpKVxyXG4gICAgICAgIC5yZWR1Y2UoKHZhbHVlcywga2V5KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gUmVmbGVjdC5nZXRNZXRhZGF0YShrZXksIHRhcmdldCwgcHJvcGVydHlOYW1lKTtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlcy5jb25jYXQoeyBrZXk6IGtleS50b1N0cmluZygpLnJlcGxhY2UoJ2N1c3RvbS1yZWZsZWN0OicsICcnKSwgdmFsdWUgfSk7XHJcbiAgICAgICAgfSwgW10pO1xyXG4gICAgcmV0dXJuIGRlY29yYXRvcnM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBuZ3hWYWxpZGF0ZShrZXk6IHN0cmluZywgcGFyYW06IHN0cmluZyB8IFBhcmFtSW5wdXRNb2RlbCB8IFJhbmdlSW5wdXRNb2RlbCwgdmFsdWU6IGFueSwgZGF0YU1vZGVsPzogYW55KTogc3RyaW5nIHtcclxuXHJcbiAgICBsZXQgcmV0c3RyOiBzdHJpbmc7XHJcblxyXG4gICAgaWYgKCh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykgJiYga2V5ICE9PSAnUmVxdWlyZWQnICYmIGtleSAhPT0gJ0NvbXBhcmUnKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgICAvLyBjYXNlICdJQkFOJzoge1xyXG4gICAgICAgIC8vICAgICBpZiAoIWlzVmFsaWQodmFsdWUpKSB7XHJcbiAgICAgICAgLy8gICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vICAgICBicmVhaztcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgY2FzZSAnQ3JlZGl0Q2FyZCc6IHtcclxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bLSBdKy9nLCAnJyk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBWaXNhID0gL140WzAtOV17MTJ9KD86WzAtOV17M30pPyQvO1xyXG4gICAgICAgICAgICBjb25zdCBNYXN0ZXJDYXJkID0gL14oPzo1WzEtNV1bMC05XXsyfXwyMjJbMS05XXwyMlszLTldWzAtOV18MlszLTZdWzAtOV17Mn18MjdbMDFdWzAtOV18MjcyMClbMC05XXsxMn0kLztcclxuICAgICAgICAgICAgY29uc3QgQW1leCA9IC9eM1s0N11bMC05XXsxM30kLztcclxuICAgICAgICAgICAgY29uc3QgRGluZXJzQ2x1YiA9IC9eMyg/OjBbMC01XXxbNjhdWzAtOV0pWzAtOV17MTF9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IERpc2NvdmVyID0gL142KD86MDExfDVbMC05XXsyfSlbMC05XXsxMn0kLztcclxuICAgICAgICAgICAgY29uc3QgSkNCID0gL14oPzoyMTMxfDE4MDB8MzVcXGR7M30pXFxkezExfSQvO1xyXG4gICAgICAgICAgICBjb25zdCBCQ0dsb2JhbCA9IC9eKDY1NDF8NjU1NilbMC05XXsxMn0kLztcclxuICAgICAgICAgICAgY29uc3QgQ2FydGVCbGFuY2hlID0gL14zODlbMC05XXsxMX0kLztcclxuICAgICAgICAgICAgY29uc3QgSW5zdGFQYXltZW50ID0gL142M1s3LTldWzAtOV17MTN9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IEtvcmVhbkxvY2FsQ2FyZCA9IC9eOVswLTldezE1fSQvO1xyXG4gICAgICAgICAgICBjb25zdCBMYXNlciA9IC9eKDYzMDR8NjcwNnw2NzA5fDY3NzEpWzAtOV17MTIsMTV9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IE1hZXN0cm8gPSAvXig1MDE4fDUwMjB8NTAzOHw2MzA0fDY3NTl8Njc2MXw2NzYzKVswLTldezgsMTV9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IFNvbG8gPSAvXig2MzM0fDY3NjcpWzAtOV17MTJ9fCg2MzM0fDY3NjcpWzAtOV17MTR9fCg2MzM0fDY3NjcpWzAtOV17MTV9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IFN3aXRjaCA9IC9eKDQ5MDN8NDkwNXw0OTExfDQ5MzZ8NjMzM3w2NzU5KVswLTldezEyfXwoNDkwM3w0OTA1fDQ5MTF8NDkzNnw2MzMzfDY3NTkpWzAtOV17MTR9fCg0OTAzfDQ5MDV8NDkxMXw0OTM2fDYzMzN8Njc1OSlbMC05XXsxNX18NTY0MTgyWzAtOV17MTB9fDU2NDE4MlswLTldezEyfXw1NjQxODJbMC05XXsxM318NjMzMTEwWzAtOV17MTB9fDYzMzExMFswLTldezEyfXw2MzMxMTBbMC05XXsxM30kLztcclxuICAgICAgICAgICAgY29uc3QgVW5pb25QYXkgPSAvXig2MlswLTldezE0LDE3fSkkLztcclxuICAgICAgICAgICAgY29uc3QgVmlzYU1hc3RlckNhcmQgPSAvXig/OjRbMC05XXsxMn0oPzpbMC05XXszfSk/fDVbMS01XVswLTldezE0fSkkLztcclxuXHJcbiAgICAgICAgICAgIGlmICghY2hlY2tMdWhuKHZhbHVlKSB8fFxyXG4gICAgICAgICAgICAgICAgIShWaXNhLnRlc3QodmFsdWUpIHx8IE1hc3RlckNhcmQudGVzdCh2YWx1ZSkgfHwgQW1leC50ZXN0KHZhbHVlKSB8fCBEaW5lcnNDbHViLnRlc3QodmFsdWUpIHx8IERpc2NvdmVyLnRlc3QodmFsdWUpIHx8IEpDQi50ZXN0KHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIHx8IEJDR2xvYmFsLnRlc3QodmFsdWUpIHx8IENhcnRlQmxhbmNoZS50ZXN0KHZhbHVlKSB8fCBJbnN0YVBheW1lbnQudGVzdCh2YWx1ZSkgfHwgS29yZWFuTG9jYWxDYXJkLnRlc3QodmFsdWUpIHx8IExhc2VyLnRlc3QodmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgTWFlc3Ryby50ZXN0KHZhbHVlKSB8fCBTb2xvLnRlc3QodmFsdWUpIHx8IFN3aXRjaC50ZXN0KHZhbHVlKSB8fCBVbmlvblBheS50ZXN0KHZhbHVlKSB8fCBWaXNhTWFzdGVyQ2FyZC50ZXN0KHZhbHVlKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICgocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5jdXN0b21WYWx1ZSAmJiAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5jdXN0b21WYWx1ZS50ZXN0KHZhbHVlKSkpKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnQ29tcGFyZSc6IHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBkYXRhTW9kZWxbKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZmllbGRdKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnQ29udGFpbnMnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZS5pbmRleE9mKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLmVycm9yO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdEYXRhVHlwZSc6IHtcclxuICAgICAgICAgICAgaWYgKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlID09PSBEYXRhVHlwZUVudW0uTnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZWcgPSAvXlsrLV0/XFxkKyhcXC5cXGQrKT8kLztcclxuICAgICAgICAgICAgICAgIGlmIChpc05hTihwYXJzZUZsb2F0KHZhbHVlKSkgfHwgIXJlZy50ZXN0KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHN0ciA9IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLmVycm9yO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSA9PT0gRGF0YVR5cGVFbnVtLkRhdGUpIHtcclxuICAgICAgICAgICAgICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUgPT09IERhdGFUeXBlRW51bS5IZXhhZGVjaW1hbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IC9eKFswLTlhLWZBLUZdKykkL2k7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWV4cHJlc3Npb24udGVzdCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUgPT09IERhdGFUeXBlRW51bS5JbnQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlZyA9IC9eWytcXC1dP1xcZCskLztcclxuICAgICAgICAgICAgICAgIGlmIChpc05hTihwYXJzZUZsb2F0KHZhbHVlKSlcclxuICAgICAgICAgICAgICAgICAgICB8fCAhaXNOYU4ocGFyc2VGbG9hdCh2YWx1ZSkpICYmIChwYXJzZUZsb2F0KHZhbHVlKSAtIHBhcnNlSW50KHZhbHVlLCAxMCkgIT09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgIXJlZy50ZXN0KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHN0ciA9IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLmVycm9yO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSA9PT0gRGF0YVR5cGVFbnVtLkFycmF5KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3I7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ05vdENvbnRhaW5zJzoge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUuaW5kZXhPZigocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSkgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnUmVxdWlyZWQnOiB7XHJcbiAgICAgICAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IHBhcmFtIGFzIHN0cmluZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnUGF0dGVybic6IHtcclxuICAgICAgICAgICAgY29uc3QgcGF0ID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWU7XHJcbiAgICAgICAgICAgIGlmICghcGF0LnRlc3QodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnTWluVmFsdWUnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSA8IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvci5yZXBsYWNlKCd7MH0nLCAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZS50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnTWF4VmFsdWUnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSA+IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvci5yZXBsYWNlKCd7MH0nLCAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZS50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnU3RyaW5nTGVuZ3RoJzoge1xyXG4gICAgICAgICAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCA8IChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1pbiB8fCB2YWx1ZS5sZW5ndGggPiAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5tYXgpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLmVycm9yLnJlcGxhY2UoJ3swfScsIChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1pbi50b1N0cmluZygpKS5yZXBsYWNlKCd7MX0nLCAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5tYXgudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ1ZhbHVlUmFuZ2UnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSA8IChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1pbiB8fCB2YWx1ZSA+IChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1heCkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFJhbmdlSW5wdXRNb2RlbCkuZXJyb3IucmVwbGFjZSgnezB9JywgKHBhcmFtIGFzIFJhbmdlSW5wdXRNb2RlbCkubWluLnRvU3RyaW5nKCkpLnJlcGxhY2UoJ3sxfScsIChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1heC50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnRW1haWwnOiB7XHJcbiAgICAgICAgICAgIC8vIGNyZWRpdHMgaHR0cDovL2VtYWlscmVnZXguY29tL1xyXG4gICAgICAgICAgICBjb25zdCBlbXJlZyA9IC9eKChbXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvO1xyXG4gICAgICAgICAgICBpZiAoIWVtcmVnLnRlc3QodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSBwYXJhbSBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAgICAgcmV0c3RyID0gbnVsbDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXRzdHI7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNoZWNrTHVobih2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAvLyBjcmVkaXRzIGh0dHBzOi8vZ2l0aHViLmNvbS9KYW1lc0VnZ2VyczEvbm9kZS1sdWhuXHJcbiAgICBjb25zdCB0cmltbWVkID0gU3RyaW5nKHZhbHVlKS5yZXBsYWNlKC9bXFxzXS9nLCAnJyk7XHJcbiAgICBjb25zdCBsZW5ndGggPSB0cmltbWVkLmxlbmd0aDtcclxuICAgIGxldCBvZGQgPSBmYWxzZTtcclxuICAgIGxldCB0b3RhbCA9IDA7XHJcbiAgICBsZXQgY2FsYztcclxuICAgIGxldCBjYWxjMjtcclxuXHJcbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEvXlswLTldKyQvLnRlc3QodHJpbW1lZCkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IGxlbmd0aDsgaSA+IDA7IGktLSkge1xyXG4gICAgICAgIGNhbGMgPSBwYXJzZUludCh0cmltbWVkLmNoYXJBdChpIC0gMSksIDEwKTtcclxuICAgICAgICBpZiAoIW9kZCkge1xyXG4gICAgICAgICAgICB0b3RhbCArPSBjYWxjO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNhbGMyID0gY2FsYyAqIDI7XHJcblxyXG4gICAgICAgICAgICBzd2l0Y2ggKGNhbGMyKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDEwOiBjYWxjMiA9IDE7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAxMjogY2FsYzIgPSAzOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgMTQ6IGNhbGMyID0gNTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDE2OiBjYWxjMiA9IDc7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAxODogY2FsYzIgPSA5OyBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGNhbGMyID0gY2FsYzI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdG90YWwgKz0gY2FsYzI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9kZCA9ICFvZGQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKHRvdGFsICE9PSAwICYmICh0b3RhbCAlIDEwKSA9PT0gMCk7XHJcbn1cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdG9yLWZ1bmN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC12YWxpZGF0b3IvIiwic291cmNlcyI6WyJjb3JlL3JlZmxlY3Rvci1mdW5jdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUEwRCxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFHOUcsTUFBTSxtQkFBbUIsS0FBc0I7SUFDM0MsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMseUJBQXlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNqRixDQUFDO0NBQ0w7Ozs7O0FBRUQsTUFBTSxxQkFBcUIsS0FBc0I7SUFDN0MsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMsMkJBQTJCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNuRixDQUFDO0NBQ0w7Ozs7O0FBRUQsTUFBTSxrQkFBa0IsS0FBc0I7SUFDMUMsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNoRixDQUFDO0NBQ0w7Ozs7O0FBRUQsTUFBTSxtQkFBbUIsS0FBc0I7SUFDM0MsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMseUJBQXlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNqRixDQUFDO0NBQ0w7Ozs7O0FBUUQsTUFBTSxlQUFlLEtBQWE7SUFDOUIsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8s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Q0FBQyxDQUFDLENBQUM7Q0FDOUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xyXG5pbXBvcnQgeyBQYXJhbUlucHV0TW9kZWwsIFJhbmdlSW5wdXRNb2RlbCwgRGVjb3JhdG9yUmV0dXJuTW9kZWwsIERhdGFUeXBlRW51bSB9IGZyb20gJy4vcmVmbGVjdC1pbnB1dC5tb2RlbHMnO1xyXG4vLyBpbXBvcnQgeyBpc1ZhbGlkIH0gZnJvbSAnaWJhbic7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gRGF0YVR5cGUocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OkRhdGFUeXBlJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIENyZWRpdENhcmQocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OkNyZWRpdENhcmQnLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gQ29tcGFyZShwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6Q29tcGFyZScsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBDb250YWlucyhwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6Q29udGFpbnMnLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG4vLyBleHBvcnQgZnVuY3Rpb24gSUJBTihwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbi8vICAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbi8vICAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6SUJBTicsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuLy8gICAgIH07XHJcbi8vIH1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBOYW1lKHBhcmFtOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpOYW1lJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFJlcXVpcmVkKHBhcmFtOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpSZXF1aXJlZCcsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBQYXR0ZXJuKHBhcmFtOiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpQYXR0ZXJuJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE1pblZhbHVlKGlucHV0OiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpNaW5WYWx1ZScsIGlucHV0LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBNYXhWYWx1ZShpbnB1dDogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6TWF4VmFsdWUnLCBpbnB1dCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gTm90Q29udGFpbnMocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0Ok5vdENvbnRhaW5zJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFN0cmluZ0xlbmd0aChpbnB1dDogUmFuZ2VJbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6U3RyaW5nTGVuZ3RoJywgaW5wdXQsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gRW1haWwoaW5wdXQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OkVtYWlsJywgaW5wdXQsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gUGxhY2Vob2xkZXIoaW5wdXQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OlBsYWNlaG9sZGVyJywgaW5wdXQsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFZhbHVlUmFuZ2UoaW5wdXQ6IFJhbmdlSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OlZhbHVlUmFuZ2UnLCBpbnB1dCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJhYmxlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcclxuICAgICAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHZhbHVlO1xyXG4gICAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFBsYWNlaG9sZGVyKHN0cmluZylcclxuICogVmFsaWRhdGU6IGZ1bmN0aW9uXHJcbiAqIENvbXBhcmU6PyDhg53hg6Dhg5gg4YOV4YOU4YOa4YOY4YOhIOGDqOGDlOGDk+GDkOGDoOGDlOGDkeGDkFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldERlY29yYXRvcnModGFyZ2V0OiBhbnksIHByb3BlcnR5TmFtZTogc3RyaW5nIHwgc3ltYm9sKTogRGVjb3JhdG9yUmV0dXJuTW9kZWxbXSB7XHJcbiAgICBjb25zdCBrZXlzOiBhbnlbXSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGFLZXlzKHRhcmdldCwgcHJvcGVydHlOYW1lKTtcclxuXHJcbiAgICBjb25zdCBkZWNvcmF0b3JzID0ga2V5cy5maWx0ZXIoa2V5ID0+IGtleS50b1N0cmluZygpLnN0YXJ0c1dpdGgoJ2N1c3RvbS1yZWZsZWN0OicpKVxyXG4gICAgICAgIC5yZWR1Y2UoKHZhbHVlcywga2V5KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gUmVmbGVjdC5nZXRNZXRhZGF0YShrZXksIHRhcmdldCwgcHJvcGVydHlOYW1lKTtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlcy5jb25jYXQoeyBrZXk6IGtleS50b1N0cmluZygpLnJlcGxhY2UoJ2N1c3RvbS1yZWZsZWN0OicsICcnKSwgdmFsdWUgfSk7XHJcbiAgICAgICAgfSwgW10pO1xyXG4gICAgcmV0dXJuIGRlY29yYXRvcnM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBuZ3hWYWxpZGF0ZShrZXk6IHN0cmluZywgcGFyYW06IHN0cmluZyB8IFBhcmFtSW5wdXRNb2RlbCB8IFJhbmdlSW5wdXRNb2RlbCwgdmFsdWU6IGFueSwgZGF0YU1vZGVsPzogYW55KTogc3RyaW5nIHtcclxuXHJcbiAgICBsZXQgcmV0c3RyOiBzdHJpbmc7XHJcblxyXG4gICAgaWYgKCh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykgJiYga2V5ICE9PSAnUmVxdWlyZWQnICYmIGtleSAhPT0gJ0NvbXBhcmUnKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgICAvLyBjYXNlICdJQkFOJzoge1xyXG4gICAgICAgIC8vICAgICBpZiAoIWlzVmFsaWQodmFsdWUpKSB7XHJcbiAgICAgICAgLy8gICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vICAgICBicmVhaztcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgY2FzZSAnQ3JlZGl0Q2FyZCc6IHtcclxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bLSBdKy9nLCAnJyk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBWaXNhID0gL140WzAtOV17MTJ9KD86WzAtOV17M30pPyQvO1xyXG4gICAgICAgICAgICBjb25zdCBNYXN0ZXJDYXJkID0gL14oPzo1WzEtNV1bMC05XXsyfXwyMjJbMS05XXwyMlszLTldWzAtOV18MlszLTZdWzAtOV17Mn18MjdbMDFdWzAtOV18MjcyMClbMC05XXsxMn0kLztcclxuICAgICAgICAgICAgY29uc3QgQW1leCA9IC9eM1s0N11bMC05XXsxM30kLztcclxuICAgICAgICAgICAgY29uc3QgRGluZXJzQ2x1YiA9IC9eMyg/OjBbMC01XXxbNjhdWzAtOV0pWzAtOV17MTF9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IERpc2NvdmVyID0gL142KD86MDExfDVbMC05XXsyfSlbMC05XXsxMn0kLztcclxuICAgICAgICAgICAgY29uc3QgSkNCID0gL14oPzoyMTMxfDE4MDB8MzVcXGR7M30pXFxkezExfSQvO1xyXG4gICAgICAgICAgICBjb25zdCBCQ0dsb2JhbCA9IC9eKDY1NDF8NjU1NilbMC05XXsxMn0kLztcclxuICAgICAgICAgICAgY29uc3QgQ2FydGVCbGFuY2hlID0gL14zODlbMC05XXsxMX0kLztcclxuICAgICAgICAgICAgY29uc3QgSW5zdGFQYXltZW50ID0gL142M1s3LTldWzAtOV17MTN9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IEtvcmVhbkxvY2FsQ2FyZCA9IC9eOVswLTldezE1fSQvO1xyXG4gICAgICAgICAgICBjb25zdCBMYXNlciA9IC9eKDYzMDR8NjcwNnw2NzA5fDY3NzEpWzAtOV17MTIsMTV9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IE1hZXN0cm8gPSAvXig1MDE4fDUwMjB8NTAzOHw2MzA0fDY3NTl8Njc2MXw2NzYzKVswLTldezgsMTV9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IFNvbG8gPSAvXig2MzM0fDY3NjcpWzAtOV17MTJ9fCg2MzM0fDY3NjcpWzAtOV17MTR9fCg2MzM0fDY3NjcpWzAtOV17MTV9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IFN3aXRjaCA9IC9eKDQ5MDN8NDkwNXw0OTExfDQ5MzZ8NjMzM3w2NzU5KVswLTldezEyfXwoNDkwM3w0OTA1fDQ5MTF8NDkzNnw2MzMzfDY3NTkpWzAtOV17MTR9fCg0OTAzfDQ5MDV8NDkxMXw0OTM2fDYzMzN8Njc1OSlbMC05XXsxNX18NTY0MTgyWzAtOV17MTB9fDU2NDE4MlswLTldezEyfXw1NjQxODJbMC05XXsxM318NjMzMTEwWzAtOV17MTB9fDYzMzExMFswLTldezEyfXw2MzMxMTBbMC05XXsxM30kLztcclxuICAgICAgICAgICAgY29uc3QgVW5pb25QYXkgPSAvXig2MlswLTldezE0LDE3fSkkLztcclxuICAgICAgICAgICAgY29uc3QgVmlzYU1hc3RlckNhcmQgPSAvXig/OjRbMC05XXsxMn0oPzpbMC05XXszfSk/fDVbMS01XVswLTldezE0fSkkLztcclxuXHJcbiAgICAgICAgICAgIGlmICghY2hlY2tMdWhuKHZhbHVlKSB8fFxyXG4gICAgICAgICAgICAgICAgIShWaXNhLnRlc3QodmFsdWUpIHx8IE1hc3RlckNhcmQudGVzdCh2YWx1ZSkgfHwgQW1leC50ZXN0KHZhbHVlKSB8fCBEaW5lcnNDbHViLnRlc3QodmFsdWUpIHx8IERpc2NvdmVyLnRlc3QodmFsdWUpIHx8IEpDQi50ZXN0KHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIHx8IEJDR2xvYmFsLnRlc3QodmFsdWUpIHx8IENhcnRlQmxhbmNoZS50ZXN0KHZhbHVlKSB8fCBJbnN0YVBheW1lbnQudGVzdCh2YWx1ZSkgfHwgS29yZWFuTG9jYWxDYXJkLnRlc3QodmFsdWUpIHx8IExhc2VyLnRlc3QodmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgTWFlc3Ryby50ZXN0KHZhbHVlKSB8fCBTb2xvLnRlc3QodmFsdWUpIHx8IFN3aXRjaC50ZXN0KHZhbHVlKSB8fCBVbmlvblBheS50ZXN0KHZhbHVlKSB8fCBWaXNhTWFzdGVyQ2FyZC50ZXN0KHZhbHVlKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICgocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5jdXN0b21WYWx1ZSAmJiAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5jdXN0b21WYWx1ZS50ZXN0KHZhbHVlKSkpKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnQ29tcGFyZSc6IHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBkYXRhTW9kZWxbKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZmllbGRdKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnQ29udGFpbnMnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZS5pbmRleE9mKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLmVycm9yO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdEYXRhVHlwZSc6IHtcclxuICAgICAgICAgICAgaWYgKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlID09PSBEYXRhVHlwZUVudW0uTnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZWcgPSAvXlsrLV0/XFxkKyhcXC5cXGQrKT8kLztcclxuICAgICAgICAgICAgICAgIGlmIChpc05hTihwYXJzZUZsb2F0KHZhbHVlKSkgfHwgIXJlZy50ZXN0KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHN0ciA9IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLmVycm9yO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSA9PT0gRGF0YVR5cGVFbnVtLkRhdGUpIHtcclxuICAgICAgICAgICAgICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUgPT09IERhdGFUeXBlRW51bS5IZXhhZGVjaW1hbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IC9eKFswLTlhLWZBLUZdKykkL2k7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWV4cHJlc3Npb24udGVzdCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUgPT09IERhdGFUeXBlRW51bS5JbnQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlZyA9IC9eWytcXC1dP1xcZCskLztcclxuICAgICAgICAgICAgICAgIGlmIChpc05hTihwYXJzZUZsb2F0KHZhbHVlKSlcclxuICAgICAgICAgICAgICAgICAgICB8fCAhaXNOYU4ocGFyc2VGbG9hdCh2YWx1ZSkpICYmIChwYXJzZUZsb2F0KHZhbHVlKSAtIHBhcnNlSW50KHZhbHVlLCAxMCkgIT09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgIXJlZy50ZXN0KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHN0ciA9IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLmVycm9yO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSA9PT0gRGF0YVR5cGVFbnVtLkFycmF5KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3I7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ05vdENvbnRhaW5zJzoge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUuaW5kZXhPZigocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSkgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnUmVxdWlyZWQnOiB7XHJcbiAgICAgICAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IHBhcmFtIGFzIHN0cmluZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnUGF0dGVybic6IHtcclxuICAgICAgICAgICAgY29uc3QgcGF0ID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWU7XHJcbiAgICAgICAgICAgIGlmICghcGF0LnRlc3QodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnTWluVmFsdWUnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSA8IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvci5yZXBsYWNlKCd7MH0nLCAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZS50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnTWF4VmFsdWUnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSA+IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvci5yZXBsYWNlKCd7MH0nLCAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZS50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnU3RyaW5nTGVuZ3RoJzoge1xyXG4gICAgICAgICAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCA8IChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1pbiB8fCB2YWx1ZS5sZW5ndGggPiAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5tYXgpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLmVycm9yLnJlcGxhY2UoJ3swfScsIChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1pbi50b1N0cmluZygpKS5yZXBsYWNlKCd7MX0nLCAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5tYXgudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ1ZhbHVlUmFuZ2UnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSA8IChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1pbiB8fCB2YWx1ZSA+IChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1heCkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFJhbmdlSW5wdXRNb2RlbCkuZXJyb3IucmVwbGFjZSgnezB9JywgKHBhcmFtIGFzIFJhbmdlSW5wdXRNb2RlbCkubWluLnRvU3RyaW5nKCkpLnJlcGxhY2UoJ3sxfScsIChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1heC50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnRW1haWwnOiB7XHJcbiAgICAgICAgICAgIC8vIGNyZWRpdHMgaHR0cDovL2VtYWlscmVnZXguY29tL1xyXG4gICAgICAgICAgICBjb25zdCBlbXJlZyA9IC9eKChbXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvO1xyXG4gICAgICAgICAgICBpZiAoIWVtcmVnLnRlc3QodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSBwYXJhbSBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAgICAgcmV0c3RyID0gbnVsbDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXRzdHI7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNoZWNrTHVobih2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAvLyBjcmVkaXRzIGh0dHBzOi8vZ2l0aHViLmNvbS9KYW1lc0VnZ2VyczEvbm9kZS1sdWhuXHJcbiAgICBjb25zdCB0cmltbWVkID0gU3RyaW5nKHZhbHVlKS5yZXBsYWNlKC9bXFxzXS9nLCAnJyk7XHJcbiAgICBjb25zdCBsZW5ndGggPSB0cmltbWVkLmxlbmd0aDtcclxuICAgIGxldCBvZGQgPSBmYWxzZTtcclxuICAgIGxldCB0b3RhbCA9IDA7XHJcbiAgICBsZXQgY2FsYztcclxuICAgIGxldCBjYWxjMjtcclxuXHJcbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEvXlswLTldKyQvLnRlc3QodHJpbW1lZCkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IGxlbmd0aDsgaSA+IDA7IGktLSkge1xyXG4gICAgICAgIGNhbGMgPSBwYXJzZUludCh0cmltbWVkLmNoYXJBdChpIC0gMSksIDEwKTtcclxuICAgICAgICBpZiAoIW9kZCkge1xyXG4gICAgICAgICAgICB0b3RhbCArPSBjYWxjO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNhbGMyID0gY2FsYyAqIDI7XHJcblxyXG4gICAgICAgICAgICBzd2l0Y2ggKGNhbGMyKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDEwOiBjYWxjMiA9IDE7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAxMjogY2FsYzIgPSAzOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgMTQ6IGNhbGMyID0gNTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDE2OiBjYWxjMiA9IDc7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAxODogY2FsYzIgPSA5OyBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGNhbGMyID0gY2FsYzI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdG90YWwgKz0gY2FsYzI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9kZCA9ICFvZGQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKHRvdGFsICE9PSAwICYmICh0b3RhbCAlIDEwKSA9PT0gMCk7XHJcbn1cclxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -59,3 +59,3 @@ // credits to https://github.com/clbond/form-example

}
function ValueAccessorBase_tsickle_Closure_declarations() {
if (false) {
/** @type {?} */

@@ -62,0 +62,0 @@ ValueAccessorBase.prototype.innerValue;

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -29,3 +29,4 @@ import { Component, Input, ViewChild, ElementRef, Renderer2 } from '@angular/core';

ngOnInit() {
const /** @type {?} */ attribs = getDecorators(this.model, this.el.nativeElement.getAttribute('name'));
/** @type {?} */
const attribs = getDecorators(this.model, this.el.nativeElement.getAttribute('name'));
if (attribs.find(x => x.key === 'DataType')) {

@@ -47,6 +48,9 @@ this.dataType = (/** @type {?} */ (attribs.find(x => x.key === 'DataType').value)).value;

validate(control) {
const /** @type {?} */ attribs = getDecorators(this.model, this.el.nativeElement.getAttribute('name'));
const /** @type {?} */ errs = {};
for (const /** @type {?} */ item of attribs) {
const /** @type {?} */ messg = ngxValidate(item.key, item.value, control.value, this.model);
/** @type {?} */
const attribs = getDecorators(this.model, this.el.nativeElement.getAttribute('name'));
/** @type {?} */
const errs = {};
for (const item of attribs) {
/** @type {?} */
const messg = ngxValidate(item.key, item.value, control.value, this.model);
if (messg) {

@@ -95,3 +99,3 @@ errs[item.key] = messg;

};
function NgxInputForComponent_tsickle_Closure_declarations() {
if (false) {
/** @type {?} */

@@ -119,2 +123,2 @@ NgxInputForComponent.prototype.model;

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWlucHV0LWZvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdmFsaWRhdG9yLyIsInNvdXJjZXMiOlsibGliL25neC1pbnB1dC1mb3Ivbmd4LWlucHV0LWZvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQThCLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBbUIsTUFBTSxpQ0FBaUMsQ0FBQztBQTJCaEYsTUFBTSwyQkFBNEIsU0FBUSxpQkFBeUI7Ozs7O0lBbUJqRSxZQUFvQixFQUFjLEVBQ2Q7UUFDbEIsS0FBSyxFQUFFLENBQUM7UUFGVSxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsYUFBUSxHQUFSLFFBQVE7d0JBZGpCLGNBQWM7NEJBRVYsWUFBWTsyQkFRYixFQUFFO29CQUNULEVBQUU7UUFNUCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDdkU7Ozs7SUFFRCxRQUFRO1FBQ04sdUJBQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLG1CQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUMsQ0FBQyxLQUFLLENBQUM7U0FDMUY7UUFFRCxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDckU7UUFFRCxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDOUQ7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUN6RDs7Ozs7SUFFRCxRQUFRLENBQUMsT0FBd0I7UUFFL0IsdUJBQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLHVCQUFNLElBQUksR0FBb0MsRUFBRSxDQUFDO1FBRWpELEdBQUcsQ0FBQyxDQUFDLHVCQUFNLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzNCLHVCQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7YUFDeEI7U0FDRjtRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUM7S0FDYjs7O1lBL0VGLFNBQVMsU0FBQzs7Z0JBRVQsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7O2dCQVlJO2dCQUNkLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDWixTQUFTLEVBQUUsQ0FBQzt3QkFDVixPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsb0JBQW9CO3dCQUNqQyxLQUFLLEVBQUUsSUFBSTtxQkFDWjtvQkFDRCxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUM1RTs7OztZQTdCNkMsVUFBVTtZQUFFLFNBQVM7OztvQkFpQ2hFLEtBQUs7dUJBR0wsS0FBSztzQkFRTCxTQUFTLFNBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBSZW5kZXJlcjIsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWx1ZUFjY2Vzc29yQmFzZSB9IGZyb20gJy4uLy4uL2NvcmUvdmFsdWUtYWNjZXNzb3InO1xuaW1wb3J0IHsgTmdNb2RlbCwgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRvciwgQWJzdHJhY3RDb250cm9sLCBOR19WQUxJREFUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZ2V0RGVjb3JhdG9ycywgbmd4VmFsaWRhdGUgfSBmcm9tICcuLi8uLi9jb3JlL3JlZmxlY3Rvci1mdW5jdGlvbnMnO1xuaW1wb3J0IHsgRGF0YVR5cGVFbnVtLCBQYXJhbUlucHV0TW9kZWwgfSBmcm9tICcuLi8uLi9jb3JlL3JlZmxlY3QtaW5wdXQubW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICduZ3gtaW5wdXQtZm9yJyxcbiAgdGVtcGxhdGU6IGA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJkYXRhVHlwZVwiPlxuICAgIDxhIFtocmVmXT1cInZhbHVlXCIgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlRW51bS5VcmxcIiBbbmdDbGFzc109XCJjc3NDbGFzc1wiPnt7bmFtZSB8IHRyYW5zbGF0ZX19PC9hPlxuXG4gICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiICpuZ1N3aXRjaENhc2U9XCJEYXRhVHlwZUVudW0uUGFzc3dvcmRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgW2lkXT1cImZpZWxkXCIgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIi8+XG5cbiAgICA8aW1nICpuZ1N3aXRjaENhc2U9XCJEYXRhVHlwZUVudW0uSW1hZ2VVcmxcIiBbc3JjXT1cInZhbHVlXCIgW2lkXT1cImZpZWxkXCIgLz5cblxuICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiICpuZ1N3aXRjaENhc2U9XCJEYXRhVHlwZUVudW0uVXBsb2FkXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIFtpZF09XCJmaWVsZFwiIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCIvPlxuXG4gICAgPHRleHRhcmVhICpuZ1N3aXRjaENhc2U9XCJEYXRhVHlwZUVudW0uTXVsdGlsaW5lVGV4dFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZUhvbGRlclwiIFsobmdNb2RlbCldPVwidmFsdWVcIiBbaWRdPVwiZmllbGRcIiByb3dzPVwiNVwiIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCI+PC90ZXh0YXJlYT5cblxuICAgIDxpbnB1dCAqbmdTd2l0Y2hEZWZhdWx0IHR5cGU9XCJ0ZXh0XCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIFtpZF09XCJmaWVsZFwiIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCIgLz5cbjwvbmctY29udGFpbmVyPmAsXG4gIHN0eWxlczogW2BgXSxcbiAgcHJvdmlkZXJzOiBbe1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBOZ3hJbnB1dEZvckNvbXBvbmVudCxcbiAgICBtdWx0aTogdHJ1ZSxcbiAgfSxcbiAgeyBwcm92aWRlOiBOR19WQUxJREFUT1JTLCB1c2VFeGlzdGluZzogTmd4SW5wdXRGb3JDb21wb25lbnQsIG11bHRpOiB0cnVlIH1dLFxufSlcblxuZXhwb3J0IGNsYXNzIE5neElucHV0Rm9yQ29tcG9uZW50IGV4dGVuZHMgVmFsdWVBY2Nlc3NvckJhc2U8c3RyaW5nPiBpbXBsZW1lbnRzIE9uSW5pdCwgVmFsaWRhdG9yIHtcblxuICBASW5wdXQoKVxuICBtb2RlbDogYW55O1xuXG4gIEBJbnB1dCgpXG4gIGNzc0NsYXNzID0gJ2Zvcm0tY29udHJvbCc7XG5cbiAgRGF0YVR5cGVFbnVtID0gRGF0YVR5cGVFbnVtO1xuICBkYXRhVHlwZTogbnVtYmVyO1xuXG4gIGZpZWxkOiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZChOZ01vZGVsKVxuICBuZ01vZGVsOiBOZ01vZGVsO1xuXG4gIHBsYWNlSG9sZGVyID0gJyc7XG4gIG5hbWUgPSAnJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnbmFtZScsICdoZXJvTmFtZScpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgYXR0cmlicyA9IGdldERlY29yYXRvcnModGhpcy5tb2RlbCwgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnbmFtZScpKTtcbiAgICBpZiAoYXR0cmlicy5maW5kKHggPT4geC5rZXkgPT09ICdEYXRhVHlwZScpKSB7XG4gICAgICB0aGlzLmRhdGFUeXBlID0gKGF0dHJpYnMuZmluZCh4ID0+IHgua2V5ID09PSAnRGF0YVR5cGUnKS52YWx1ZSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlO1xuICAgIH1cblxuICAgIGlmIChhdHRyaWJzLmZpbmQoeCA9PiB4LmtleSA9PT0gJ1BsYWNlaG9sZGVyJykpIHtcbiAgICAgIHRoaXMucGxhY2VIb2xkZXIgPSBhdHRyaWJzLmZpbmQoeCA9PiB4LmtleSA9PT0gJ1BsYWNlaG9sZGVyJykudmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKGF0dHJpYnMuZmluZCh4ID0+IHgua2V5ID09PSAnTmFtZScpKSB7XG4gICAgICB0aGlzLnBsYWNlSG9sZGVyID0gYXR0cmlicy5maW5kKHggPT4geC5rZXkgPT09ICdOYW1lJykudmFsdWU7XG4gICAgfVxuICAgIHRoaXMuZmllbGQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCduYW1lJyk7XG4gIH1cblxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFt2YWxpZGF0b3I6IHN0cmluZ106IHN0cmluZyB9IHtcblxuICAgIGNvbnN0IGF0dHJpYnMgPSBnZXREZWNvcmF0b3JzKHRoaXMubW9kZWwsIHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ25hbWUnKSk7XG4gICAgY29uc3QgZXJyczogeyBbdmFsaWRhdG9yOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGF0dHJpYnMpIHtcbiAgICAgIGNvbnN0IG1lc3NnID0gbmd4VmFsaWRhdGUoaXRlbS5rZXksIGl0ZW0udmFsdWUsIGNvbnRyb2wudmFsdWUsIHRoaXMubW9kZWwpO1xuICAgICAgaWYgKG1lc3NnKSB7XG4gICAgICAgIGVycnNbaXRlbS5rZXldID0gbWVzc2c7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlcnJzO1xuICB9XG5cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWlucHV0LWZvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdmFsaWRhdG9yLyIsInNvdXJjZXMiOlsibGliL25neC1pbnB1dC1mb3Ivbmd4LWlucHV0LWZvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQThCLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBbUIsTUFBTSxpQ0FBaUMsQ0FBQztBQTJCaEYsTUFBTSwyQkFBNEIsU0FBUSxpQkFBeUI7Ozs7O0lBbUJqRSxZQUFvQixFQUFjLEVBQ2Q7UUFDbEIsS0FBSyxFQUFFLENBQUM7UUFGVSxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsYUFBUSxHQUFSLFFBQVE7d0JBZGpCLGNBQWM7NEJBRVYsWUFBWTsyQkFRYixFQUFFO29CQUNULEVBQUU7UUFNUCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDdkU7Ozs7SUFFRCxRQUFROztRQUNOLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLG1CQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUMsQ0FBQyxLQUFLLENBQUM7U0FDMUY7UUFFRCxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDckU7UUFFRCxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDOUQ7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUN6RDs7Ozs7SUFFRCxRQUFRLENBQUMsT0FBd0I7O1FBRS9CLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDOztRQUN0RixNQUFNLElBQUksR0FBb0MsRUFBRSxDQUFDO1FBRWpELEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7O1lBQzNCLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0UsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDVixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQzthQUN4QjtTQUNGO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQztLQUNiOzs7WUEvRUYsU0FBUyxTQUFDOztnQkFFVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Z0JBWUk7Z0JBQ2QsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNaLFNBQVMsRUFBRSxDQUFDO3dCQUNWLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxvQkFBb0I7d0JBQ2pDLEtBQUssRUFBRSxJQUFJO3FCQUNaO29CQUNELEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO2FBQzVFOzs7O1lBN0I2QyxVQUFVO1lBQUUsU0FBUzs7O29CQWlDaEUsS0FBSzt1QkFHTCxLQUFLO3NCQVFMLFNBQVMsU0FBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbHVlQWNjZXNzb3JCYXNlIH0gZnJvbSAnLi4vLi4vY29yZS92YWx1ZS1hY2Nlc3Nvcic7XG5pbXBvcnQgeyBOZ01vZGVsLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdG9yLCBBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTElEQVRPUlMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBnZXREZWNvcmF0b3JzLCBuZ3hWYWxpZGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUvcmVmbGVjdG9yLWZ1bmN0aW9ucyc7XG5pbXBvcnQgeyBEYXRhVHlwZUVudW0sIFBhcmFtSW5wdXRNb2RlbCB9IGZyb20gJy4uLy4uL2NvcmUvcmVmbGVjdC1pbnB1dC5tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ25neC1pbnB1dC1mb3InLFxuICB0ZW1wbGF0ZTogYDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImRhdGFUeXBlXCI+XG4gICAgPGEgW2hyZWZdPVwidmFsdWVcIiAqbmdTd2l0Y2hDYXNlPVwiRGF0YVR5cGVFbnVtLlVybFwiIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCI+e3tuYW1lIHwgdHJhbnNsYXRlfX08L2E+XG5cbiAgICA8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlRW51bS5QYXNzd29yZFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZUhvbGRlclwiIFsobmdNb2RlbCldPVwidmFsdWVcIiBbaWRdPVwiZmllbGRcIiBbbmdDbGFzc109XCJjc3NDbGFzc1wiLz5cblxuICAgIDxpbWcgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlRW51bS5JbWFnZVVybFwiIFtzcmNdPVwidmFsdWVcIiBbaWRdPVwiZmllbGRcIiAvPlxuXG4gICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlRW51bS5VcGxvYWRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgW2lkXT1cImZpZWxkXCIgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIi8+XG5cbiAgICA8dGV4dGFyZWEgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlRW51bS5NdWx0aWxpbmVUZXh0XCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIFtpZF09XCJmaWVsZFwiIHJvd3M9XCI1XCIgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIj48L3RleHRhcmVhPlxuXG4gICAgPGlucHV0ICpuZ1N3aXRjaERlZmF1bHQgdHlwZT1cInRleHRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgW2lkXT1cImZpZWxkXCIgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIiAvPlxuPC9uZy1jb250YWluZXI+YCxcbiAgc3R5bGVzOiBbYGBdLFxuICBwcm92aWRlcnM6IFt7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IE5neElucHV0Rm9yQ29tcG9uZW50LFxuICAgIG11bHRpOiB0cnVlLFxuICB9LFxuICB7IHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBOZ3hJbnB1dEZvckNvbXBvbmVudCwgbXVsdGk6IHRydWUgfV0sXG59KVxuXG5leHBvcnQgY2xhc3MgTmd4SW5wdXRGb3JDb21wb25lbnQgZXh0ZW5kcyBWYWx1ZUFjY2Vzc29yQmFzZTxzdHJpbmc+IGltcGxlbWVudHMgT25Jbml0LCBWYWxpZGF0b3Ige1xuXG4gIEBJbnB1dCgpXG4gIG1vZGVsOiBhbnk7XG5cbiAgQElucHV0KClcbiAgY3NzQ2xhc3MgPSAnZm9ybS1jb250cm9sJztcblxuICBEYXRhVHlwZUVudW0gPSBEYXRhVHlwZUVudW07XG4gIGRhdGFUeXBlOiBudW1iZXI7XG5cbiAgZmllbGQ6IHN0cmluZztcblxuICBAVmlld0NoaWxkKE5nTW9kZWwpXG4gIG5nTW9kZWw6IE5nTW9kZWw7XG5cbiAgcGxhY2VIb2xkZXIgPSAnJztcbiAgbmFtZSA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICduYW1lJywgJ2hlcm9OYW1lJyk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBhdHRyaWJzID0gZ2V0RGVjb3JhdG9ycyh0aGlzLm1vZGVsLCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCduYW1lJykpO1xuICAgIGlmIChhdHRyaWJzLmZpbmQoeCA9PiB4LmtleSA9PT0gJ0RhdGFUeXBlJykpIHtcbiAgICAgIHRoaXMuZGF0YVR5cGUgPSAoYXR0cmlicy5maW5kKHggPT4geC5rZXkgPT09ICdEYXRhVHlwZScpLnZhbHVlIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKGF0dHJpYnMuZmluZCh4ID0+IHgua2V5ID09PSAnUGxhY2Vob2xkZXInKSkge1xuICAgICAgdGhpcy5wbGFjZUhvbGRlciA9IGF0dHJpYnMuZmluZCh4ID0+IHgua2V5ID09PSAnUGxhY2Vob2xkZXInKS52YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoYXR0cmlicy5maW5kKHggPT4geC5rZXkgPT09ICdOYW1lJykpIHtcbiAgICAgIHRoaXMucGxhY2VIb2xkZXIgPSBhdHRyaWJzLmZpbmQoeCA9PiB4LmtleSA9PT0gJ05hbWUnKS52YWx1ZTtcbiAgICB9XG4gICAgdGhpcy5maWVsZCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ25hbWUnKTtcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW3ZhbGlkYXRvcjogc3RyaW5nXTogc3RyaW5nIH0ge1xuXG4gICAgY29uc3QgYXR0cmlicyA9IGdldERlY29yYXRvcnModGhpcy5tb2RlbCwgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnbmFtZScpKTtcbiAgICBjb25zdCBlcnJzOiB7IFt2YWxpZGF0b3I6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXR0cmlicykge1xuICAgICAgY29uc3QgbWVzc2cgPSBuZ3hWYWxpZGF0ZShpdGVtLmtleSwgaXRlbS52YWx1ZSwgY29udHJvbC52YWx1ZSwgdGhpcy5tb2RlbCk7XG4gICAgICBpZiAobWVzc2cpIHtcbiAgICAgICAgZXJyc1tpdGVtLmtleV0gPSBtZXNzZztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVycnM7XG4gIH1cblxufVxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -36,3 +36,3 @@ import { Component, Input } from '@angular/core';

};
function NgxLabelForComponent_tsickle_Closure_declarations() {
if (false) {
/** @type {?} */

@@ -39,0 +39,0 @@ NgxLabelForComponent.prototype.model;

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -17,3 +17,3 @@ import { Component, Input } from '@angular/core';

if (value) {
for (const /** @type {?} */ item of Object.keys(value)) {
for (const item of Object.keys(value)) {
this.messages.push(value[item]);

@@ -37,3 +37,3 @@ }

};
function NgxValidatorForComponent_tsickle_Closure_declarations() {
if (false) {
/** @type {?} */

@@ -43,2 +43,2 @@ NgxValidatorForComponent.prototype.messages;

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZhbGlkYXRvci1mb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXZhbGlkYXRvci8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtdmFsaWRhdG9yLWZvci9uZ3gtdmFsaWRhdG9yLWZvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBVXpELE1BQU07O3dCQUVjLEVBQUU7Ozs7OztJQUVwQixJQUNJLE1BQU0sQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDVixHQUFHLENBQUMsQ0FBQyx1QkFBTSxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ2pDO1NBQ0Y7S0FDRjs7O1lBcEJGLFNBQVMsU0FBQzs7Z0JBRVQsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsUUFBUSxFQUFFOztRQUVKO2dCQUNOLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQzthQUNiOzs7cUJBS0UsS0FBSyxTQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICduZ3gtdmFsaWRhdG9yLWZvcicsXG4gIHRlbXBsYXRlOiBgPGRpdiDCoGNsYXNzPVwidGV4dC1kYW5nZXJcIj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgbWVzc2FnZSBvZiBtZXNzYWdlc1wiPnt7bWVzc2FnZSB8IHRyYW5zbGF0ZX19PC9kaXY+XG4gPC9kaXY+YCxcbiAgc3R5bGVzOiBbYGBdXG59KVxuZXhwb3J0IGNsYXNzIE5neFZhbGlkYXRvckZvckNvbXBvbmVudCB7XG5cbiAgbWVzc2FnZXM6IGFueVtdID0gW107XG5cbiAgQElucHV0KCdlcnJvcnMnKVxuICBzZXQgZXJyb3JzKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLm1lc3NhZ2VzID0gW107XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgT2JqZWN0LmtleXModmFsdWUpKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZXMucHVzaCh2YWx1ZVtpdGVtXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZhbGlkYXRvci1mb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXZhbGlkYXRvci8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtdmFsaWRhdG9yLWZvci9uZ3gtdmFsaWRhdG9yLWZvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBVXpELE1BQU07O3dCQUVjLEVBQUU7Ozs7OztJQUVwQixJQUNJLE1BQU0sQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDVixHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDakM7U0FDRjtLQUNGOzs7WUFwQkYsU0FBUyxTQUFDOztnQkFFVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixRQUFRLEVBQUU7O1FBRUo7Z0JBQ04sTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO2FBQ2I7OztxQkFLRSxLQUFLLFNBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ25neC12YWxpZGF0b3ItZm9yJyxcbiAgdGVtcGxhdGU6IGA8ZGl2IMKgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCBtZXNzYWdlIG9mIG1lc3NhZ2VzXCI+e3ttZXNzYWdlIHwgdHJhbnNsYXRlfX08L2Rpdj5cbiA8L2Rpdj5gLFxuICBzdHlsZXM6IFtgYF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4VmFsaWRhdG9yRm9yQ29tcG9uZW50IHtcblxuICBtZXNzYWdlczogYW55W10gPSBbXTtcblxuICBASW5wdXQoJ2Vycm9ycycpXG4gIHNldCBlcnJvcnModmFsdWU6IGFueSkge1xuICAgIHRoaXMubWVzc2FnZXMgPSBbXTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBPYmplY3Qua2V5cyh2YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlcy5wdXNoKHZhbHVlW2l0ZW1dKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -27,8 +27,11 @@ import { Directive, Input, ElementRef } from '@angular/core';

validate(control) {
const /** @type {?} */ attribs = getDecorators(this.dataModel, this.el.nativeElement.getAttribute('name'));
const /** @type {?} */ errs = {};
/** @type {?} */
const attribs = getDecorators(this.dataModel, this.el.nativeElement.getAttribute('name'));
/** @type {?} */
const errs = {};
// const t = await validate(this.skValidator);
// return t[0].constraints;
for (const /** @type {?} */ item of attribs) {
const /** @type {?} */ messg = ngxValidate(item.key, item.value, control.value, this.dataModel);
for (const item of attribs) {
/** @type {?} */
const messg = ngxValidate(item.key, item.value, control.value, this.dataModel);
if (messg) {

@@ -57,3 +60,3 @@ errs[item.key] = messg;

};
function NgxValidatorDirective_tsickle_Closure_declarations() {
if (false) {
/** @type {?} */

@@ -65,2 +68,2 @@ NgxValidatorDirective.prototype.dataModel;

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZhbGlkYXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdmFsaWRhdG9yLyIsInNvdXJjZXMiOlsibGliL25neC12YWxpZGF0b3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBOEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBU3pFLE1BQU07Ozs7SUFTSixZQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtLQUFLOzs7OztJQUx2QyxJQUNJLEVBQUUsQ0FBQyxLQUFVO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7S0FDeEI7Ozs7O0lBSUQsUUFBUSxDQUFDLE9BQXdCO1FBRS9CLHVCQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMxRix1QkFBTSxJQUFJLEdBQW9DLEVBQUUsQ0FBQzs7O1FBS2pELEdBQUcsQ0FBQyxDQUFDLHVCQUFNLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzNCLHVCQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQy9FLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7YUFDeEI7U0FDRjtRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUM7S0FDYjs7O1lBakNGLFNBQVMsU0FBQzs7Z0JBRVQsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsU0FBUyxFQUFFO29CQUNULEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtpQkFDNUU7YUFDRjs7OztZQVYwQixVQUFVOzs7aUJBZWxDLEtBQUssU0FBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMSURBVE9SUywgVmFsaWRhdG9yLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBnZXREZWNvcmF0b3JzLCBuZ3hWYWxpZGF0ZSB9IGZyb20gJy4uL2NvcmUvcmVmbGVjdG9yLWZ1bmN0aW9ucyc7XG5cbkBEaXJlY3RpdmUoe1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6ZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnW25neC12YWxpZGF0b3JdJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBOR19WQUxJREFUT1JTLCB1c2VFeGlzdGluZzogTmd4VmFsaWRhdG9yRGlyZWN0aXZlLCBtdWx0aTogdHJ1ZSB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4VmFsaWRhdG9yRGlyZWN0aXZlIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcblxuICBwcml2YXRlIGRhdGFNb2RlbDogYW55O1xuXG4gIEBJbnB1dCgnbmd4LXZhbGlkYXRvcicpXG4gIHNldCBzayh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5kYXRhTW9kZWwgPSB2YWx1ZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHsgfVxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW3ZhbGlkYXRvcjogc3RyaW5nXTogc3RyaW5nIH0ge1xuXG4gICAgY29uc3QgYXR0cmlicyA9IGdldERlY29yYXRvcnModGhpcy5kYXRhTW9kZWwsIHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ25hbWUnKSk7XG4gICAgY29uc3QgZXJyczogeyBbdmFsaWRhdG9yOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXG4gICAgLy8gY29uc3QgdCA9IGF3YWl0IHZhbGlkYXRlKHRoaXMuc2tWYWxpZGF0b3IpO1xuICAgIC8vIHJldHVybiB0WzBdLmNvbnN0cmFpbnRzO1xuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGF0dHJpYnMpIHtcbiAgICAgIGNvbnN0IG1lc3NnID0gbmd4VmFsaWRhdGUoaXRlbS5rZXksIGl0ZW0udmFsdWUsIGNvbnRyb2wudmFsdWUsIHRoaXMuZGF0YU1vZGVsKTtcbiAgICAgIGlmIChtZXNzZykge1xuICAgICAgICBlcnJzW2l0ZW0ua2V5XSA9IG1lc3NnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXJycztcbiAgfVxuXG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZhbGlkYXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdmFsaWRhdG9yLyIsInNvdXJjZXMiOlsibGliL25neC12YWxpZGF0b3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBOEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBU3pFLE1BQU07Ozs7SUFTSixZQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtLQUFLOzs7OztJQUx2QyxJQUNJLEVBQUUsQ0FBQyxLQUFVO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7S0FDeEI7Ozs7O0lBSUQsUUFBUSxDQUFDLE9BQXdCOztRQUUvQixNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzs7UUFDMUYsTUFBTSxJQUFJLEdBQW9DLEVBQUUsQ0FBQzs7O1FBS2pELEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7O1lBQzNCLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDL0UsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDVixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQzthQUN4QjtTQUNGO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQztLQUNiOzs7WUFqQ0YsU0FBUyxTQUFDOztnQkFFVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixTQUFTLEVBQUU7b0JBQ1QsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2lCQUM1RTthQUNGOzs7O1lBVjBCLFVBQVU7OztpQkFlbEMsS0FBSyxTQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxJREFUT1JTLCBWYWxpZGF0b3IsIEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGdldERlY29yYXRvcnMsIG5neFZhbGlkYXRlIH0gZnJvbSAnLi4vY29yZS9yZWZsZWN0b3ItZnVuY3Rpb25zJztcblxuQERpcmVjdGl2ZSh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbbmd4LXZhbGlkYXRvcl0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBOZ3hWYWxpZGF0b3JEaXJlY3RpdmUsIG11bHRpOiB0cnVlIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hWYWxpZGF0b3JEaXJlY3RpdmUgaW1wbGVtZW50cyBWYWxpZGF0b3Ige1xuXG4gIHByaXZhdGUgZGF0YU1vZGVsOiBhbnk7XG5cbiAgQElucHV0KCduZ3gtdmFsaWRhdG9yJylcbiAgc2V0IHNrKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmRhdGFNb2RlbCA9IHZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikgeyB9XG5cbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBbdmFsaWRhdG9yOiBzdHJpbmddOiBzdHJpbmcgfSB7XG5cbiAgICBjb25zdCBhdHRyaWJzID0gZ2V0RGVjb3JhdG9ycyh0aGlzLmRhdGFNb2RlbCwgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnbmFtZScpKTtcbiAgICBjb25zdCBlcnJzOiB7IFt2YWxpZGF0b3I6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgICAvLyBjb25zdCB0ID0gYXdhaXQgdmFsaWRhdGUodGhpcy5za1ZhbGlkYXRvcik7XG4gICAgLy8gcmV0dXJuIHRbMF0uY29uc3RyYWludHM7XG5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXR0cmlicykge1xuICAgICAgY29uc3QgbWVzc2cgPSBuZ3hWYWxpZGF0ZShpdGVtLmtleSwgaXRlbS52YWx1ZSwgY29udHJvbC52YWx1ZSwgdGhpcy5kYXRhTW9kZWwpO1xuICAgICAgaWYgKG1lc3NnKSB7XG4gICAgICAgIGVycnNbaXRlbS5rZXldID0gbWVzc2c7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlcnJzO1xuICB9XG5cbn1cbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ import { NgModule } from '@angular/core';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ import { Injectable } from '@angular/core';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /**

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /*

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -9,12 +9,10 @@ /**

export function ParamInputModel() { }
function ParamInputModel_tsickle_Closure_declarations() {
/** @type {?|undefined} */
ParamInputModel.prototype.value;
/** @type {?|undefined} */
ParamInputModel.prototype.field;
/** @type {?} */
ParamInputModel.prototype.error;
/** @type {?|undefined} */
ParamInputModel.prototype.customValue;
}
/** @type {?|undefined} */
ParamInputModel.prototype.value;
/** @type {?|undefined} */
ParamInputModel.prototype.field;
/** @type {?} */
ParamInputModel.prototype.error;
/** @type {?|undefined} */
ParamInputModel.prototype.customValue;
/**

@@ -24,10 +22,8 @@ * @record

export function RangeInputModel() { }
function RangeInputModel_tsickle_Closure_declarations() {
/** @type {?|undefined} */
RangeInputModel.prototype.min;
/** @type {?|undefined} */
RangeInputModel.prototype.max;
/** @type {?} */
RangeInputModel.prototype.error;
}
/** @type {?|undefined} */
RangeInputModel.prototype.min;
/** @type {?|undefined} */
RangeInputModel.prototype.max;
/** @type {?} */
RangeInputModel.prototype.error;
/** @enum {number} */

@@ -47,12 +43,12 @@ var DataTypeEnum = {

export { DataTypeEnum };
DataTypeEnum[DataTypeEnum.Int] = "Int";
DataTypeEnum[DataTypeEnum.Number] = "Number";
DataTypeEnum[DataTypeEnum.MultilineText] = "MultilineText";
DataTypeEnum[DataTypeEnum.Url] = "Url";
DataTypeEnum[DataTypeEnum.ImageUrl] = "ImageUrl";
DataTypeEnum[DataTypeEnum.Password] = "Password";
DataTypeEnum[DataTypeEnum.Hexadecimal] = "Hexadecimal";
DataTypeEnum[DataTypeEnum.Date] = "Date";
DataTypeEnum[DataTypeEnum.Array] = "Array";
DataTypeEnum[DataTypeEnum.Upload] = "Upload";
DataTypeEnum[DataTypeEnum.Int] = 'Int';
DataTypeEnum[DataTypeEnum.Number] = 'Number';
DataTypeEnum[DataTypeEnum.MultilineText] = 'MultilineText';
DataTypeEnum[DataTypeEnum.Url] = 'Url';
DataTypeEnum[DataTypeEnum.ImageUrl] = 'ImageUrl';
DataTypeEnum[DataTypeEnum.Password] = 'Password';
DataTypeEnum[DataTypeEnum.Hexadecimal] = 'Hexadecimal';
DataTypeEnum[DataTypeEnum.Date] = 'Date';
DataTypeEnum[DataTypeEnum.Array] = 'Array';
DataTypeEnum[DataTypeEnum.Upload] = 'Upload';
/**

@@ -62,9 +58,7 @@ * @record

export function DecoratorReturnModel() { }
function DecoratorReturnModel_tsickle_Closure_declarations() {
/** @type {?} */
DecoratorReturnModel.prototype.key;
/** @type {?} */
DecoratorReturnModel.prototype.value;
}
/** @type {?} */
DecoratorReturnModel.prototype.key;
/** @type {?} */
DecoratorReturnModel.prototype.value;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdC1pbnB1dC5tb2RlbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdmFsaWRhdG9yLyIsInNvdXJjZXMiOlsiY29yZS9yZWZsZWN0LWlucHV0Lm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBQYXJhbUlucHV0TW9kZWwge1xyXG4gICAgdmFsdWU/OiBhbnk7XHJcbiAgICBmaWVsZD86IHN0cmluZztcclxuICAgIGVycm9yOiBzdHJpbmc7XHJcbiAgICBjdXN0b21WYWx1ZT86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSYW5nZUlucHV0TW9kZWwge1xyXG4gICAgbWluPzogbnVtYmVyIHwgRGF0ZTtcclxuICAgIG1heD86IG51bWJlciB8IERhdGU7XHJcbiAgICBlcnJvcjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBEYXRhVHlwZUVudW0ge1xyXG4gICAgSW50LFxyXG4gICAgTnVtYmVyLFxyXG4gICAgTXVsdGlsaW5lVGV4dCxcclxuICAgIFVybCxcclxuICAgIEltYWdlVXJsLFxyXG4gICAgUGFzc3dvcmQsXHJcbiAgICBIZXhhZGVjaW1hbCxcclxuICAgIERhdGUsXHJcbiAgICBBcnJheSxcclxuICAgIFVwbG9hZFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERlY29yYXRvclJldHVybk1vZGVsIHtcclxuICAgIGtleTogc3RyaW5nO1xyXG4gICAgdmFsdWU6IGFueTtcclxufVxyXG5cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdC1pbnB1dC5tb2RlbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdmFsaWRhdG9yLyIsInNvdXJjZXMiOlsiY29yZS9yZWZsZWN0LWlucHV0Lm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBY0ksTUFBRztJQUNILFNBQU07SUFDTixnQkFBYTtJQUNiLE1BQUc7SUFDSCxXQUFRO0lBQ1IsV0FBUTtJQUNSLGNBQVc7SUFDWCxPQUFJO0lBQ0osUUFBSztJQUNMLFNBQU07OzswQkFUTixHQUFHOzBCQUNILE1BQU07MEJBQ04sYUFBYTswQkFDYixHQUFHOzBCQUNILFFBQVE7MEJBQ1IsUUFBUTswQkFDUixXQUFXOzBCQUNYLElBQUk7MEJBQ0osS0FBSzswQkFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBQYXJhbUlucHV0TW9kZWwge1xyXG4gICAgdmFsdWU/OiBhbnk7XHJcbiAgICBmaWVsZD86IHN0cmluZztcclxuICAgIGVycm9yOiBzdHJpbmc7XHJcbiAgICBjdXN0b21WYWx1ZT86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSYW5nZUlucHV0TW9kZWwge1xyXG4gICAgbWluPzogbnVtYmVyIHwgRGF0ZTtcclxuICAgIG1heD86IG51bWJlciB8IERhdGU7XHJcbiAgICBlcnJvcjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBEYXRhVHlwZUVudW0ge1xyXG4gICAgSW50LFxyXG4gICAgTnVtYmVyLFxyXG4gICAgTXVsdGlsaW5lVGV4dCxcclxuICAgIFVybCxcclxuICAgIEltYWdlVXJsLFxyXG4gICAgUGFzc3dvcmQsXHJcbiAgICBIZXhhZGVjaW1hbCxcclxuICAgIERhdGUsXHJcbiAgICBBcnJheSxcclxuICAgIFVwbG9hZFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERlY29yYXRvclJldHVybk1vZGVsIHtcclxuICAgIGtleTogc3RyaW5nO1xyXG4gICAgdmFsdWU6IGFueTtcclxufVxyXG5cclxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -151,6 +151,9 @@ import 'reflect-metadata';

export function getDecorators(target, propertyName) {
var /** @type {?} */ keys = Reflect.getMetadataKeys(target, propertyName);
var /** @type {?} */ decorators = keys.filter(function (key) { return key.toString().startsWith('custom-reflect:'); })
/** @type {?} */
var keys = Reflect.getMetadataKeys(target, propertyName);
/** @type {?} */
var decorators = keys.filter(function (key) { return key.toString().startsWith('custom-reflect:'); })
.reduce(function (values, key) {
var /** @type {?} */ value = Reflect.getMetadata(key, target, propertyName);
/** @type {?} */
var value = Reflect.getMetadata(key, target, propertyName);
return values.concat({ key: key.toString().replace('custom-reflect:', ''), value: value });

@@ -168,3 +171,4 @@ }, []);

export function ngxValidate(key, param, value, dataModel) {
var /** @type {?} */ retstr;
/** @type {?} */
var retstr;
if ((value === null || value === undefined || value === '') && key !== 'Required' && key !== 'Compare') {

@@ -182,18 +186,34 @@ return null;

value = value.replace(/[- ]+/g, '');
var /** @type {?} */ Visa = /^4[0-9]{12}(?:[0-9]{3})?$/;
var /** @type {?} */ MasterCard = /^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$/;
var /** @type {?} */ Amex = /^3[47][0-9]{13}$/;
var /** @type {?} */ DinersClub = /^3(?:0[0-5]|[68][0-9])[0-9]{11}$/;
var /** @type {?} */ Discover = /^6(?:011|5[0-9]{2})[0-9]{12}$/;
var /** @type {?} */ JCB = /^(?:2131|1800|35\d{3})\d{11}$/;
var /** @type {?} */ BCGlobal = /^(6541|6556)[0-9]{12}$/;
var /** @type {?} */ CarteBlanche = /^389[0-9]{11}$/;
var /** @type {?} */ InstaPayment = /^63[7-9][0-9]{13}$/;
var /** @type {?} */ KoreanLocalCard = /^9[0-9]{15}$/;
var /** @type {?} */ Laser = /^(6304|6706|6709|6771)[0-9]{12,15}$/;
var /** @type {?} */ Maestro = /^(5018|5020|5038|6304|6759|6761|6763)[0-9]{8,15}$/;
var /** @type {?} */ Solo = /^(6334|6767)[0-9]{12}|(6334|6767)[0-9]{14}|(6334|6767)[0-9]{15}$/;
var /** @type {?} */ Switch = /^(4903|4905|4911|4936|6333|6759)[0-9]{12}|(4903|4905|4911|4936|6333|6759)[0-9]{14}|(4903|4905|4911|4936|6333|6759)[0-9]{15}|564182[0-9]{10}|564182[0-9]{12}|564182[0-9]{13}|633110[0-9]{10}|633110[0-9]{12}|633110[0-9]{13}$/;
var /** @type {?} */ UnionPay = /^(62[0-9]{14,17})$/;
var /** @type {?} */ VisaMasterCard = /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14})$/;
/** @type {?} */
var Visa = /^4[0-9]{12}(?:[0-9]{3})?$/;
/** @type {?} */
var MasterCard = /^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$/;
/** @type {?} */
var Amex = /^3[47][0-9]{13}$/;
/** @type {?} */
var DinersClub = /^3(?:0[0-5]|[68][0-9])[0-9]{11}$/;
/** @type {?} */
var Discover = /^6(?:011|5[0-9]{2})[0-9]{12}$/;
/** @type {?} */
var JCB = /^(?:2131|1800|35\d{3})\d{11}$/;
/** @type {?} */
var BCGlobal = /^(6541|6556)[0-9]{12}$/;
/** @type {?} */
var CarteBlanche = /^389[0-9]{11}$/;
/** @type {?} */
var InstaPayment = /^63[7-9][0-9]{13}$/;
/** @type {?} */
var KoreanLocalCard = /^9[0-9]{15}$/;
/** @type {?} */
var Laser = /^(6304|6706|6709|6771)[0-9]{12,15}$/;
/** @type {?} */
var Maestro = /^(5018|5020|5038|6304|6759|6761|6763)[0-9]{8,15}$/;
/** @type {?} */
var Solo = /^(6334|6767)[0-9]{12}|(6334|6767)[0-9]{14}|(6334|6767)[0-9]{15}$/;
/** @type {?} */
var Switch = /^(4903|4905|4911|4936|6333|6759)[0-9]{12}|(4903|4905|4911|4936|6333|6759)[0-9]{14}|(4903|4905|4911|4936|6333|6759)[0-9]{15}|564182[0-9]{10}|564182[0-9]{12}|564182[0-9]{13}|633110[0-9]{10}|633110[0-9]{12}|633110[0-9]{13}$/;
/** @type {?} */
var UnionPay = /^(62[0-9]{14,17})$/;
/** @type {?} */
var VisaMasterCard = /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14})$/;
if (!checkLuhn(value) ||

@@ -222,3 +242,4 @@ !(Visa.test(value) || MasterCard.test(value) || Amex.test(value) || DinersClub.test(value) || Discover.test(value) || JCB.test(value)

if ((/** @type {?} */ (param)).value === DataTypeEnum.Number) {
var /** @type {?} */ reg = /^[+-]?\d+(\.\d+)?$/;
/** @type {?} */
var reg = /^[+-]?\d+(\.\d+)?$/;
if (isNaN(parseFloat(value)) || !reg.test(value)) {

@@ -234,3 +255,4 @@ retstr = (/** @type {?} */ (param)).error;

if ((/** @type {?} */ (param)).value === DataTypeEnum.Hexadecimal) {
var /** @type {?} */ expression = /^([0-9a-fA-F]+)$/i;
/** @type {?} */
var expression = /^([0-9a-fA-F]+)$/i;
if (!expression.test(value)) {

@@ -241,3 +263,4 @@ retstr = (/** @type {?} */ (param)).error;

if ((/** @type {?} */ (param)).value === DataTypeEnum.Int) {
var /** @type {?} */ reg = /^[+\-]?\d+$/;
/** @type {?} */
var reg = /^[+\-]?\d+$/;
if (isNaN(parseFloat(value))

@@ -269,3 +292,4 @@ || !isNaN(parseFloat(value)) && (parseFloat(value) - parseInt(value, 10) !== 0)

case 'Pattern': {
var /** @type {?} */ pat = (/** @type {?} */ (param)).value;
/** @type {?} */
var pat = (/** @type {?} */ (param)).value;
if (!pat.test(value)) {

@@ -301,4 +325,4 @@ retstr = (/** @type {?} */ (param)).error;

case 'Email': {
// credits http://emailregex.com/
var /** @type {?} */ emreg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
/** @type {?} */
var emreg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
if (!emreg.test(value)) {

@@ -321,9 +345,14 @@ retstr = /** @type {?} */ (param);

function checkLuhn(value) {
// credits https://github.com/JamesEggers1/node-luhn
var /** @type {?} */ trimmed = String(value).replace(/[\s]/g, '');
var /** @type {?} */ length = trimmed.length;
var /** @type {?} */ odd = false;
var /** @type {?} */ total = 0;
var /** @type {?} */ calc;
var /** @type {?} */ calc2;
/** @type {?} */
var trimmed = String(value).replace(/[\s]/g, '');
/** @type {?} */
var length = trimmed.length;
/** @type {?} */
var odd = false;
/** @type {?} */
var total = 0;
/** @type {?} */
var calc;
/** @type {?} */
var calc2;
if (length === 0) {

@@ -335,3 +364,3 @@ return true;

}
for (var /** @type {?} */ i = length; i > 0; i--) {
for (var i = length; i > 0; i--) {
calc = parseInt(trimmed.charAt(i - 1), 10);

@@ -368,2 +397,2 @@ if (!odd) {

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdG9yLWZ1bmN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC12YWxpZGF0b3IvIiwic291cmNlcyI6WyJjb3JlL3JlZmxlY3Rvci1mdW5jdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUEwRCxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFHOUcsTUFBTSxtQkFBbUIsS0FBc0I7SUFDM0MsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMseUJBQXlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNqRixDQUFDO0NBQ0w7Ozs7O0FBRUQsTUFBTSxxQkFBcUIsS0FBc0I7SUFDN0MsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMsMkJBQTJCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNuRixDQUFDO0NBQ0w7Ozs7O0FBRUQsTUFBTSxrQkFBa0IsS0FBc0I7SUFDMUMsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNoRixDQUFDO0NBQ0w7Ozs7O0FBRUQsTUFBTSxtQkFBbUIsS0FBc0I7SUFDM0MsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMseUJBQXlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNqRixDQUFDO0NBQ0w7Ozs7O0FBUUQsTUFBTSxlQUFlLEtBQWE7SUFDOUIsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8s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Q0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0NBQzlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcclxuaW1wb3J0IHsgUGFyYW1JbnB1dE1vZGVsLCBSYW5nZUlucHV0TW9kZWwsIERlY29yYXRvclJldHVybk1vZGVsLCBEYXRhVHlwZUVudW0gfSBmcm9tICcuL3JlZmxlY3QtaW5wdXQubW9kZWxzJztcclxuLy8gaW1wb3J0IHsgaXNWYWxpZCB9IGZyb20gJ2liYW4nO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIERhdGFUeXBlKHBhcmFtOiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpEYXRhVHlwZScsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBDcmVkaXRDYXJkKHBhcmFtOiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpDcmVkaXRDYXJkJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIENvbXBhcmUocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OkNvbXBhcmUnLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gQ29udGFpbnMocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OkNvbnRhaW5zJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuLy8gZXhwb3J0IGZ1bmN0aW9uIElCQU4ocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4vLyAgICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4vLyAgICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OklCQU4nLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbi8vICAgICB9O1xyXG4vLyB9XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gTmFtZShwYXJhbTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6TmFtZScsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBSZXF1aXJlZChwYXJhbTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6UmVxdWlyZWQnLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gUGF0dGVybihwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6UGF0dGVybicsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBNaW5WYWx1ZShpbnB1dDogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6TWluVmFsdWUnLCBpbnB1dCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gTWF4VmFsdWUoaW5wdXQ6IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0Ok1heFZhbHVlJywgaW5wdXQsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE5vdENvbnRhaW5zKHBhcmFtOiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpOb3RDb250YWlucycsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBTdHJpbmdMZW5ndGgoaW5wdXQ6IFJhbmdlSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OlN0cmluZ0xlbmd0aCcsIGlucHV0LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIEVtYWlsKGlucHV0OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpFbWFpbCcsIGlucHV0LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIFBsYWNlaG9sZGVyKGlucHV0OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpQbGFjZWhvbGRlcicsIGlucHV0LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBWYWx1ZVJhbmdlKGlucHV0OiBSYW5nZUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpWYWx1ZVJhbmdlJywgaW5wdXQsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ3VyYWJsZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSB7XHJcbiAgICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB2YWx1ZTtcclxuICAgIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQbGFjZWhvbGRlcihzdHJpbmcpXHJcbiAqIFZhbGlkYXRlOiBmdW5jdGlvblxyXG4gKiBDb21wYXJlOj8g4YOd4YOg4YOYIOGDleGDlOGDmuGDmOGDoSDhg6jhg5Thg5Phg5Dhg6Dhg5Thg5Hhg5BcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXREZWNvcmF0b3JzKHRhcmdldDogYW55LCBwcm9wZXJ0eU5hbWU6IHN0cmluZyB8IHN5bWJvbCk6IERlY29yYXRvclJldHVybk1vZGVsW10ge1xyXG4gICAgY29uc3Qga2V5czogYW55W10gPSBSZWZsZWN0LmdldE1ldGFkYXRhS2V5cyh0YXJnZXQsIHByb3BlcnR5TmFtZSk7XHJcblxyXG4gICAgY29uc3QgZGVjb3JhdG9ycyA9IGtleXMuZmlsdGVyKGtleSA9PiBrZXkudG9TdHJpbmcoKS5zdGFydHNXaXRoKCdjdXN0b20tcmVmbGVjdDonKSlcclxuICAgICAgICAucmVkdWNlKCh2YWx1ZXMsIGtleSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoa2V5LCB0YXJnZXQsIHByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXMuY29uY2F0KHsga2V5OiBrZXkudG9TdHJpbmcoKS5yZXBsYWNlKCdjdXN0b20tcmVmbGVjdDonLCAnJyksIHZhbHVlIH0pO1xyXG4gICAgICAgIH0sIFtdKTtcclxuICAgIHJldHVybiBkZWNvcmF0b3JzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbmd4VmFsaWRhdGUoa2V5OiBzdHJpbmcsIHBhcmFtOiBzdHJpbmcgfCBQYXJhbUlucHV0TW9kZWwgfCBSYW5nZUlucHV0TW9kZWwsIHZhbHVlOiBhbnksIGRhdGFNb2RlbD86IGFueSk6IHN0cmluZyB7XHJcblxyXG4gICAgbGV0IHJldHN0cjogc3RyaW5nO1xyXG5cclxuICAgIGlmICgodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpICYmIGtleSAhPT0gJ1JlcXVpcmVkJyAmJiBrZXkgIT09ICdDb21wYXJlJykge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgICAgLy8gY2FzZSAnSUJBTic6IHtcclxuICAgICAgICAvLyAgICAgaWYgKCFpc1ZhbGlkKHZhbHVlKSkge1xyXG4gICAgICAgIC8vICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3I7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIGNhc2UgJ0NyZWRpdENhcmQnOiB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvWy0gXSsvZywgJycpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgVmlzYSA9IC9eNFswLTldezEyfSg/OlswLTldezN9KT8kLztcclxuICAgICAgICAgICAgY29uc3QgTWFzdGVyQ2FyZCA9IC9eKD86NVsxLTVdWzAtOV17Mn18MjIyWzEtOV18MjJbMy05XVswLTldfDJbMy02XVswLTldezJ9fDI3WzAxXVswLTldfDI3MjApWzAtOV17MTJ9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IEFtZXggPSAvXjNbNDddWzAtOV17MTN9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IERpbmVyc0NsdWIgPSAvXjMoPzowWzAtNV18WzY4XVswLTldKVswLTldezExfSQvO1xyXG4gICAgICAgICAgICBjb25zdCBEaXNjb3ZlciA9IC9eNig/OjAxMXw1WzAtOV17Mn0pWzAtOV17MTJ9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IEpDQiA9IC9eKD86MjEzMXwxODAwfDM1XFxkezN9KVxcZHsxMX0kLztcclxuICAgICAgICAgICAgY29uc3QgQkNHbG9iYWwgPSAvXig2NTQxfDY1NTYpWzAtOV17MTJ9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IENhcnRlQmxhbmNoZSA9IC9eMzg5WzAtOV17MTF9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IEluc3RhUGF5bWVudCA9IC9eNjNbNy05XVswLTldezEzfSQvO1xyXG4gICAgICAgICAgICBjb25zdCBLb3JlYW5Mb2NhbENhcmQgPSAvXjlbMC05XXsxNX0kLztcclxuICAgICAgICAgICAgY29uc3QgTGFzZXIgPSAvXig2MzA0fDY3MDZ8NjcwOXw2NzcxKVswLTldezEyLDE1fSQvO1xyXG4gICAgICAgICAgICBjb25zdCBNYWVzdHJvID0gL14oNTAxOHw1MDIwfDUwMzh8NjMwNHw2NzU5fDY3NjF8Njc2MylbMC05XXs4LDE1fSQvO1xyXG4gICAgICAgICAgICBjb25zdCBTb2xvID0gL14oNjMzNHw2NzY3KVswLTldezEyfXwoNjMzNHw2NzY3KVswLTldezE0fXwoNjMzNHw2NzY3KVswLTldezE1fSQvO1xyXG4gICAgICAgICAgICBjb25zdCBTd2l0Y2ggPSAvXig0OTAzfDQ5MDV8NDkxMXw0OTM2fDYzMzN8Njc1OSlbMC05XXsxMn18KDQ5MDN8NDkwNXw0OTExfDQ5MzZ8NjMzM3w2NzU5KVswLTldezE0fXwoNDkwM3w0OTA1fDQ5MTF8NDkzNnw2MzMzfDY3NTkpWzAtOV17MTV9fDU2NDE4MlswLTldezEwfXw1NjQxODJbMC05XXsxMn18NTY0MTgyWzAtOV17MTN9fDYzMzExMFswLTldezEwfXw2MzMxMTBbMC05XXsxMn18NjMzMTEwWzAtOV17MTN9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IFVuaW9uUGF5ID0gL14oNjJbMC05XXsxNCwxN30pJC87XHJcbiAgICAgICAgICAgIGNvbnN0IFZpc2FNYXN0ZXJDYXJkID0gL14oPzo0WzAtOV17MTJ9KD86WzAtOV17M30pP3w1WzEtNV1bMC05XXsxNH0pJC87XHJcblxyXG4gICAgICAgICAgICBpZiAoIWNoZWNrTHVobih2YWx1ZSkgfHxcclxuICAgICAgICAgICAgICAgICEoVmlzYS50ZXN0KHZhbHVlKSB8fCBNYXN0ZXJDYXJkLnRlc3QodmFsdWUpIHx8IEFtZXgudGVzdCh2YWx1ZSkgfHwgRGluZXJzQ2x1Yi50ZXN0KHZhbHVlKSB8fCBEaXNjb3Zlci50ZXN0KHZhbHVlKSB8fCBKQ0IudGVzdCh2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICB8fCBCQ0dsb2JhbC50ZXN0KHZhbHVlKSB8fCBDYXJ0ZUJsYW5jaGUudGVzdCh2YWx1ZSkgfHwgSW5zdGFQYXltZW50LnRlc3QodmFsdWUpIHx8IEtvcmVhbkxvY2FsQ2FyZC50ZXN0KHZhbHVlKSB8fCBMYXNlci50ZXN0KHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIHx8IE1hZXN0cm8udGVzdCh2YWx1ZSkgfHwgU29sby50ZXN0KHZhbHVlKSB8fCBTd2l0Y2gudGVzdCh2YWx1ZSkgfHwgVW5pb25QYXkudGVzdCh2YWx1ZSkgfHwgVmlzYU1hc3RlckNhcmQudGVzdCh2YWx1ZSkgfHxcclxuICAgICAgICAgICAgICAgICAgICAoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuY3VzdG9tVmFsdWUgJiYgKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuY3VzdG9tVmFsdWUudGVzdCh2YWx1ZSkpKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3I7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ0NvbXBhcmUnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gZGF0YU1vZGVsWyhwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLmZpZWxkXSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3I7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ0NvbnRhaW5zJzoge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUuaW5kZXhPZigocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnRGF0YVR5cGUnOiB7XHJcbiAgICAgICAgICAgIGlmICgocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSA9PT0gRGF0YVR5cGVFbnVtLk51bWJlcikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVnID0gL15bKy1dP1xcZCsoXFwuXFxkKyk/JC87XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4ocGFyc2VGbG9hdCh2YWx1ZSkpIHx8ICFyZWcudGVzdCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUgPT09IERhdGFUeXBlRW51bS5EYXRlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3I7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlID09PSBEYXRhVHlwZUVudW0uSGV4YWRlY2ltYWwpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAvXihbMC05YS1mQS1GXSspJC9pO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFleHByZXNzaW9uLnRlc3QodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3I7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlID09PSBEYXRhVHlwZUVudW0uSW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZWcgPSAvXlsrXFwtXT9cXGQrJC87XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4ocGFyc2VGbG9hdCh2YWx1ZSkpXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgIWlzTmFOKHBhcnNlRmxvYXQodmFsdWUpKSAmJiAocGFyc2VGbG9hdCh2YWx1ZSkgLSBwYXJzZUludCh2YWx1ZSwgMTApICE9PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgIHx8ICFyZWcudGVzdCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUgPT09IERhdGFUeXBlRW51bS5BcnJheSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHN0ciA9IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLmVycm9yO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdOb3RDb250YWlucyc6IHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUpICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3I7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ1JlcXVpcmVkJzoge1xyXG4gICAgICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSBwYXJhbSBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ1BhdHRlcm4nOiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhdCA9IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlO1xyXG4gICAgICAgICAgICBpZiAoIXBhdC50ZXN0KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3I7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ01pblZhbHVlJzoge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUgPCAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3IucmVwbGFjZSgnezB9JywgKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ01heFZhbHVlJzoge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUgPiAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3IucmVwbGFjZSgnezB9JywgKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ1N0cmluZ0xlbmd0aCc6IHtcclxuICAgICAgICAgICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZS5sZW5ndGggPCAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5taW4gfHwgdmFsdWUubGVuZ3RoID4gKHBhcmFtIGFzIFJhbmdlSW5wdXRNb2RlbCkubWF4KSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5lcnJvci5yZXBsYWNlKCd7MH0nLCAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5taW4udG9TdHJpbmcoKSkucmVwbGFjZSgnezF9JywgKHBhcmFtIGFzIFJhbmdlSW5wdXRNb2RlbCkubWF4LnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdWYWx1ZVJhbmdlJzoge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUgPCAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5taW4gfHwgdmFsdWUgPiAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5tYXgpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLmVycm9yLnJlcGxhY2UoJ3swfScsIChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1pbi50b1N0cmluZygpKS5yZXBsYWNlKCd7MX0nLCAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5tYXgudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ0VtYWlsJzoge1xyXG4gICAgICAgICAgICAvLyBjcmVkaXRzIGh0dHA6Ly9lbWFpbHJlZ2V4LmNvbS9cclxuICAgICAgICAgICAgY29uc3QgZW1yZWcgPSAvXigoW148PigpXFxbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31dKXwoKFthLXpBLVpcXC0wLTldK1xcLikrW2EtekEtWl17Mix9KSkkLztcclxuICAgICAgICAgICAgaWYgKCFlbXJlZy50ZXN0KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gcGFyYW0gYXMgc3RyaW5nO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkZWZhdWx0OiB7XHJcbiAgICAgICAgICAgIHJldHN0ciA9IG51bGw7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmV0c3RyO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjaGVja0x1aG4odmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgLy8gY3JlZGl0cyBodHRwczovL2dpdGh1Yi5jb20vSmFtZXNFZ2dlcnMxL25vZGUtbHVoblxyXG4gICAgY29uc3QgdHJpbW1lZCA9IFN0cmluZyh2YWx1ZSkucmVwbGFjZSgvW1xcc10vZywgJycpO1xyXG4gICAgY29uc3QgbGVuZ3RoID0gdHJpbW1lZC5sZW5ndGg7XHJcbiAgICBsZXQgb2RkID0gZmFsc2U7XHJcbiAgICBsZXQgdG90YWwgPSAwO1xyXG4gICAgbGV0IGNhbGM7XHJcbiAgICBsZXQgY2FsYzI7XHJcblxyXG4gICAgaWYgKGxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghL15bMC05XSskLy50ZXN0KHRyaW1tZWQpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSBsZW5ndGg7IGkgPiAwOyBpLS0pIHtcclxuICAgICAgICBjYWxjID0gcGFyc2VJbnQodHJpbW1lZC5jaGFyQXQoaSAtIDEpLCAxMCk7XHJcbiAgICAgICAgaWYgKCFvZGQpIHtcclxuICAgICAgICAgICAgdG90YWwgKz0gY2FsYztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjYWxjMiA9IGNhbGMgKiAyO1xyXG5cclxuICAgICAgICAgICAgc3dpdGNoIChjYWxjMikge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAxMDogY2FsYzIgPSAxOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgMTI6IGNhbGMyID0gMzsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDE0OiBjYWxjMiA9IDU7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAxNjogY2FsYzIgPSA3OyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgMTg6IGNhbGMyID0gOTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBjYWxjMiA9IGNhbGMyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRvdGFsICs9IGNhbGMyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvZGQgPSAhb2RkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICh0b3RhbCAhPT0gMCAmJiAodG90YWwgJSAxMCkgPT09IDApO1xyXG59XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdG9yLWZ1bmN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC12YWxpZGF0b3IvIiwic291cmNlcyI6WyJjb3JlL3JlZmxlY3Rvci1mdW5jdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUEwRCxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFHOUcsTUFBTSxtQkFBbUIsS0FBc0I7SUFDM0MsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMseUJBQXlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNqRixDQUFDO0NBQ0w7Ozs7O0FBRUQsTUFBTSxxQkFBcUIsS0FBc0I7SUFDN0MsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMsMkJBQTJCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNuRixDQUFDO0NBQ0w7Ozs7O0FBRUQsTUFBTSxrQkFBa0IsS0FBc0I7SUFDMUMsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNoRixDQUFDO0NBQ0w7Ozs7O0FBRUQsTUFBTSxtQkFBbUIsS0FBc0I7SUFDM0MsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMseUJBQXlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNqRixDQUFDO0NBQ0w7Ozs7O0FBUUQsTUFBTSxlQUFlLEtBQWE7SUFDOUIsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMscUJBQXFCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztLQUM3RSxDQUFDO0NBQ0w7Ozs7O0FBRUQsTUFBTSxtQkFBbUIsS0FBYTtJQUNsQyxNQUFNLENBQUMsVUFBVSxNQUFjLEVBQUUsV0FBbUI7UUFDaEQsT0FBTyxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0tBQ2pGLENBQUM7Q0FDTDs7Ozs7QUFFRCxNQUFNLGtCQUFrQixLQUFzQjtJQUMxQyxNQUFNLENBQUMsVUFBVSxNQUFjLEVBQUUsV0FBbUI7UUFDaEQsT0FBTyxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0tBQ2hGLENBQUM7Q0FDTDs7Ozs7QUFFRCxNQUFNLG1CQUFtQixLQUFzQjtJQUMzQyxNQUFNLENBQUMsVUFBVSxNQUFjLEVBQUUsV0FBbUI7UUFDaEQsT0FBTyxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0tBQ2pGLENBQUM7Q0FDTDs7Ozs7QUFFRCxNQUFNLG1CQUFtQixLQUFzQjtJQUMzQyxNQUFNLENBQUMsVUFBVSxNQUFjLEVBQUUsV0FBbUI7UUFDaEQsT0FBTyxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0tBQ2pGLENBQUM7Q0FDTDs7Ozs7QUFFRCxNQUFNLHNCQUFzQixLQUFzQjtJQUM5QyxNQUFNLENBQUMsVUFBVSxNQUFjLEVBQUUsV0FBbUI7UUFDaEQsT0FBTyxDQUFDLGNBQWMsQ0FBQyw0QkFBNEIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0tBQ3BGLENBQUM7Q0FDTDs7Ozs7QUFFRCxNQUFNLHVCQUF1QixLQUFzQjtJQUMvQyxNQUFNLENBQUMsVUFBVSxNQUFjLEVBQUUsV0FBbUI7UUFDaEQsT0FBTyxDQUFDLGNBQWMsQ0FBQyw2QkFBNkIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0tBQ3JGLENBQUM7Q0FDTDs7Ozs7QUFDRCxNQUFNLGdCQUFnQixLQUFhO0lBQy9CLE1BQU0sQ0FBQyxVQUFVLE1BQWMsRUFBRSxXQUFtQjtRQUNoRCxPQUFPLENBQUMsY0FBYyxDQUFDLHNCQUFzQixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDOUUsQ0FBQztDQUNMOzs7OztBQUNELE1BQU0sc0JBQXNCLEtBQWE7SUFDckMsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNwRixDQUFDO0NBQ0w7Ozs7O0FBRUQsTUFBTSxxQkFBcUIsS0FBc0I7SUFDN0MsTUFBTSxDQUFDLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMsMkJBQTJCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNuRixDQUFDO0NBQ0w7Ozs7O0FBRUQsTUFBTSx1QkFBdUIsS0FBYztJQUN2QyxNQUFNLENBQUMsVUFBVSxNQUFXLEVBQUUsV0FBbUIsRUFBRSxVQUE4QjtRQUM3RSxVQUFVLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztLQUNuQyxDQUFDO0NBQ0w7Ozs7Ozs7OztBQU9ELE1BQU0sd0JBQXdCLE1BQVcsRUFBRSxZQUE2Qjs7SUFDcEUsSUFBTSxJQUFJLEdBQVUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7O0lBRWxFLElBQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEVBQTVDLENBQTRDLENBQUM7U0FDOUUsTUFBTSxDQUFDLFVBQUMsTUFBTSxFQUFFLEdBQUc7O1FBQ2hCLElBQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM3RCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssT0FBQSxFQUFFLENBQUMsQ0FBQztLQUN2RixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1gsTUFBTSxDQUFDLFVBQVUsQ0FBQztDQUNyQjs7Ozs7Ozs7QUFFRCxNQUFNLHNCQUFzQixHQUFXLEVBQUUsS0FBaUQsRUFBRSxLQUFVLEVBQUUsU0FBZTs7SUFFbkgsSUFBSSxNQUFNLENBQVM7SUFFbkIsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEdBQUcsS0FBSyxVQUFVLElBQUksR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDckcsTUFBTSxDQUFDLElBQUksQ0FBQztLQUNmO0lBRUQsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzs7Ozs7OztRQU9WLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDaEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDOztZQUVwQyxJQUFNLElBQUksR0FBRywyQkFBMkIsQ0FBQzs7WUFDekMsSUFBTSxVQUFVLEdBQUcscUZBQXFGLENBQUM7O1lBQ3pHLElBQU0sSUFBSSxHQUFHLGtCQUFrQixDQUFDOztZQUNoQyxJQUFNLFVBQVUsR0FBRyxrQ0FBa0MsQ0FBQzs7WUFDdEQsSUFBTSxRQUFRLEdBQUcsK0JBQStCLENBQUM7O1lBQ2pELElBQU0sR0FBRyxHQUFHLCtCQUErQixDQUFDOztZQUM1QyxJQUFNLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQzs7WUFDMUMsSUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUM7O1lBQ3RDLElBQU0sWUFBWSxHQUFHLG9CQUFvQixDQUFDOztZQUMxQyxJQUFNLGVBQWUsR0FBRyxjQUFjLENBQUM7O1lBQ3ZDLElBQU0sS0FBSyxHQUFHLHFDQUFxQyxDQUFDOztZQUNwRCxJQUFNLE9BQU8sR0FBRyxtREFBbUQsQ0FBQzs7WUFDcEUsSUFBTSxJQUFJLEdBQUcsa0VBQWtFLENBQUM7O1lBQ2hGLElBQU0sTUFBTSxHQUFHLDhOQUE4TixDQUFDOztZQUM5TyxJQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQzs7WUFDdEMsSUFBTSxjQUFjLEdBQUcsK0NBQStDLENBQUM7WUFFdkUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO2dCQUNqQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO3VCQUM5SCxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO3VCQUNoSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO29CQUN0SCxDQUFDLG1CQUFDLEtBQXdCLEVBQUMsQ0FBQyxXQUFXLElBQUksbUJBQUMsS0FBd0IsRUFBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEcsTUFBTSxHQUFHLG1CQUFDLEtBQXdCLEVBQUMsQ0FBQyxLQUFLLENBQUM7YUFDN0M7WUFDRCxLQUFLLENBQUM7U0FDVDtRQUNELEtBQUssU0FBUyxFQUFFLENBQUM7WUFDYixFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLG1CQUFDLEtBQXdCLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hELE1BQU0sR0FBRyxtQkFBQyxLQUF3QixFQUFDLENBQUMsS0FBSyxDQUFDO2FBQzdDO1lBQ0QsS0FBSyxDQUFDO1NBQ1Q7UUFDRCxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2QsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxtQkFBQyxLQUF3QixFQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxNQUFNLEdBQUcsbUJBQUMsS0FBd0IsRUFBQyxDQUFDLEtBQUssQ0FBQzthQUM3QztZQUNELEtBQUssQ0FBQztTQUNUO1FBQ0QsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNkLEVBQUUsQ0FBQyxDQUFDLG1CQUFDLEtBQXdCLEVBQUMsQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7O2dCQUMzRCxJQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQztnQkFDakMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQy9DLE1BQU0sR0FBRyxtQkFBQyxLQUF3QixFQUFDLENBQUMsS0FBSyxDQUFDO2lCQUM3QzthQUNKO1lBQ0QsRUFBRSxDQUFDLENBQUMsbUJBQUMsS0FBd0IsRUFBQyxDQUFDLEtBQUssS0FBSyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDekQsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzNCLE1BQU0sR0FBRyxtQkFBQyxLQUF3QixFQUFDLENBQUMsS0FBSyxDQUFDO2lCQUM3QzthQUNKO1lBQ0QsRUFBRSxDQUFDLENBQUMsbUJBQUMsS0FBd0IsRUFBQyxDQUFDLEtBQUssS0FBSyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQzs7Z0JBQ2hFLElBQU0sVUFBVSxHQUFHLG1CQUFtQixDQUFDO2dCQUN2QyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUMxQixNQUFNLEdBQUcsbUJBQUMsS0FBd0IsRUFBQyxDQUFDLEtBQUssQ0FBQztpQkFDN0M7YUFDSjtZQUNELEVBQUUsQ0FBQyxDQUFDLG1CQUFDLEtBQXdCLEVBQUMsQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7O2dCQUN4RCxJQUFNLEdBQUcsR0FBRyxhQUFhLENBQUM7Z0JBQzFCLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7dUJBQ3JCLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO3VCQUM1RSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN0QixNQUFNLEdBQUcsbUJBQUMsS0FBd0IsRUFBQyxDQUFDLEtBQUssQ0FBQztpQkFDN0M7YUFDSjtZQUNELEVBQUUsQ0FBQyxDQUFDLG1CQUFDLEtBQXdCLEVBQUMsQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQzFELEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3hCLE1BQU0sR0FBRyxtQkFBQyxLQUF3QixFQUFDLENBQUMsS0FBSyxDQUFDO2lCQUM3QzthQUNKO1lBQ0QsS0FBSyxDQUFDO1NBQ1Q7UUFDRCxLQUFLLGFBQWEsRUFBRSxDQUFDO1lBQ2pCLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsbUJBQUMsS0FBd0IsRUFBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekQsTUFBTSxHQUFHLG1CQUFDLEtBQXdCLEVBQUMsQ0FBQyxLQUFLLENBQUM7YUFDN0M7WUFDRCxLQUFLLENBQUM7U0FDVDtRQUNELEtBQUssVUFBVSxFQUFFLENBQUM7WUFDZCxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ1QsTUFBTSxxQkFBRyxLQUFlLENBQUEsQ0FBQzthQUM1QjtZQUNELEtBQUssQ0FBQztTQUNUO1FBQ0QsS0FBSyxTQUFTLEVBQUUsQ0FBQzs7WUFDYixJQUFNLEdBQUcsR0FBRyxtQkFBQyxLQUF3QixFQUFDLENBQUMsS0FBSyxDQUFDO1lBQzdDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25CLE1BQU0sR0FBRyxtQkFBQyxLQUF3QixFQUFDLENBQUMsS0FBSyxDQUFDO2FBQzdDO1lBQ0QsS0FBSyxDQUFDO1NBQ1Q7UUFDRCxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2QsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLG1CQUFDLEtBQXdCLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxNQUFNLEdBQUcsbUJBQUMsS0FBd0IsRUFBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLG1CQUFDLEtBQXdCLEVBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQzthQUN6RztZQUNELEtBQUssQ0FBQztTQUNUO1FBQ0QsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNkLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxtQkFBQyxLQUF3QixFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDM0MsTUFBTSxHQUFHLG1CQUFDLEtBQXdCLEVBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxtQkFBQyxLQUF3QixFQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7YUFDekc7WUFDRCxLQUFLLENBQUM7U0FDVDtRQUNELEtBQUssY0FBYyxFQUFFLENBQUM7WUFDbEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxtQkFBQyxLQUF3QixFQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsbUJBQUMsS0FBd0IsRUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzNHLE1BQU0sR0FBRyxtQkFBQyxLQUF3QixFQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsbUJBQUMsS0FBd0IsRUFBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsbUJBQUMsS0FBd0IsRUFBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2FBQ2pLO1lBQ0QsS0FBSyxDQUFDO1NBQ1Q7UUFDRCxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ2hCLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxtQkFBQyxLQUF3QixFQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssR0FBRyxtQkFBQyxLQUF3QixFQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDbkYsTUFBTSxHQUFHLG1CQUFDLEtBQXdCLEVBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxtQkFBQyxLQUF3QixFQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxtQkFBQyxLQUF3QixFQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7YUFDaks7WUFDRCxLQUFLLENBQUM7U0FDVDtRQUNELEtBQUssT0FBTyxFQUFFLENBQUM7O1lBRVgsSUFBTSxLQUFLLEdBQUcsd0pBQXdKLENBQUM7WUFDdkssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckIsTUFBTSxxQkFBRyxLQUFlLENBQUEsQ0FBQzthQUM1QjtZQUNELEtBQUssQ0FBQztTQUNUO1FBQ0QsU0FBUyxDQUFDO1lBQ04sTUFBTSxHQUFHLElBQUksQ0FBQztZQUNkLEtBQUssQ0FBQztTQUNUO0tBQ0o7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDO0NBQ2pCOzs7OztBQUVELG1CQUFtQixLQUFhOztJQUU1QixJQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQzs7SUFDbkQsSUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQzs7SUFDOUIsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDOztJQUNoQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7O0lBQ2QsSUFBSSxJQUFJLENBQUM7O0lBQ1QsSUFBSSxLQUFLLENBQUM7SUFFVixFQUFFLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUM7S0FDZjtJQUVELEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsTUFBTSxDQUFDLEtBQUssQ0FBQztLQUNoQjtJQUVELEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDOUIsSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDUCxLQUFLLElBQUksSUFBSSxDQUFDO1NBQ2pCO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDSixLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUVqQixNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNaLEtBQUssRUFBRTtvQkFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUFDLEtBQUssQ0FBQztnQkFDMUIsS0FBSyxFQUFFO29CQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7b0JBQUMsS0FBSyxDQUFDO2dCQUMxQixLQUFLLEVBQUU7b0JBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztvQkFBQyxLQUFLLENBQUM7Z0JBQzFCLEtBQUssRUFBRTtvQkFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUFDLEtBQUssQ0FBQztnQkFDMUIsS0FBSyxFQUFFO29CQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7b0JBQUMsS0FBSyxDQUFDO2dCQUMxQixTQUFTLEtBQUssR0FBRyxLQUFLLENBQUM7YUFDMUI7WUFDRCxLQUFLLElBQUksS0FBSyxDQUFDO1NBQ2xCO1FBQ0QsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO0tBQ2Q7SUFDRCxNQUFNLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0NBQzlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcclxuaW1wb3J0IHsgUGFyYW1JbnB1dE1vZGVsLCBSYW5nZUlucHV0TW9kZWwsIERlY29yYXRvclJldHVybk1vZGVsLCBEYXRhVHlwZUVudW0gfSBmcm9tICcuL3JlZmxlY3QtaW5wdXQubW9kZWxzJztcclxuLy8gaW1wb3J0IHsgaXNWYWxpZCB9IGZyb20gJ2liYW4nO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIERhdGFUeXBlKHBhcmFtOiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpEYXRhVHlwZScsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBDcmVkaXRDYXJkKHBhcmFtOiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpDcmVkaXRDYXJkJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIENvbXBhcmUocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OkNvbXBhcmUnLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gQ29udGFpbnMocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OkNvbnRhaW5zJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuLy8gZXhwb3J0IGZ1bmN0aW9uIElCQU4ocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4vLyAgICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4vLyAgICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OklCQU4nLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbi8vICAgICB9O1xyXG4vLyB9XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gTmFtZShwYXJhbTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6TmFtZScsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBSZXF1aXJlZChwYXJhbTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6UmVxdWlyZWQnLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gUGF0dGVybihwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6UGF0dGVybicsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBNaW5WYWx1ZShpbnB1dDogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6TWluVmFsdWUnLCBpbnB1dCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gTWF4VmFsdWUoaW5wdXQ6IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0Ok1heFZhbHVlJywgaW5wdXQsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE5vdENvbnRhaW5zKHBhcmFtOiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpOb3RDb250YWlucycsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBTdHJpbmdMZW5ndGgoaW5wdXQ6IFJhbmdlSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OlN0cmluZ0xlbmd0aCcsIGlucHV0LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIEVtYWlsKGlucHV0OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpFbWFpbCcsIGlucHV0LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIFBsYWNlaG9sZGVyKGlucHV0OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpQbGFjZWhvbGRlcicsIGlucHV0LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBWYWx1ZVJhbmdlKGlucHV0OiBSYW5nZUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpWYWx1ZVJhbmdlJywgaW5wdXQsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ3VyYWJsZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSB7XHJcbiAgICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB2YWx1ZTtcclxuICAgIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQbGFjZWhvbGRlcihzdHJpbmcpXHJcbiAqIFZhbGlkYXRlOiBmdW5jdGlvblxyXG4gKiBDb21wYXJlOj8g4YOd4YOg4YOYIOGDleGDlOGDmuGDmOGDoSDhg6jhg5Thg5Phg5Dhg6Dhg5Thg5Hhg5BcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXREZWNvcmF0b3JzKHRhcmdldDogYW55LCBwcm9wZXJ0eU5hbWU6IHN0cmluZyB8IHN5bWJvbCk6IERlY29yYXRvclJldHVybk1vZGVsW10ge1xyXG4gICAgY29uc3Qga2V5czogYW55W10gPSBSZWZsZWN0LmdldE1ldGFkYXRhS2V5cyh0YXJnZXQsIHByb3BlcnR5TmFtZSk7XHJcblxyXG4gICAgY29uc3QgZGVjb3JhdG9ycyA9IGtleXMuZmlsdGVyKGtleSA9PiBrZXkudG9TdHJpbmcoKS5zdGFydHNXaXRoKCdjdXN0b20tcmVmbGVjdDonKSlcclxuICAgICAgICAucmVkdWNlKCh2YWx1ZXMsIGtleSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoa2V5LCB0YXJnZXQsIHByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXMuY29uY2F0KHsga2V5OiBrZXkudG9TdHJpbmcoKS5yZXBsYWNlKCdjdXN0b20tcmVmbGVjdDonLCAnJyksIHZhbHVlIH0pO1xyXG4gICAgICAgIH0sIFtdKTtcclxuICAgIHJldHVybiBkZWNvcmF0b3JzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbmd4VmFsaWRhdGUoa2V5OiBzdHJpbmcsIHBhcmFtOiBzdHJpbmcgfCBQYXJhbUlucHV0TW9kZWwgfCBSYW5nZUlucHV0TW9kZWwsIHZhbHVlOiBhbnksIGRhdGFNb2RlbD86IGFueSk6IHN0cmluZyB7XHJcblxyXG4gICAgbGV0IHJldHN0cjogc3RyaW5nO1xyXG5cclxuICAgIGlmICgodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpICYmIGtleSAhPT0gJ1JlcXVpcmVkJyAmJiBrZXkgIT09ICdDb21wYXJlJykge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgICAgLy8gY2FzZSAnSUJBTic6IHtcclxuICAgICAgICAvLyAgICAgaWYgKCFpc1ZhbGlkKHZhbHVlKSkge1xyXG4gICAgICAgIC8vICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3I7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIGNhc2UgJ0NyZWRpdENhcmQnOiB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvWy0gXSsvZywgJycpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgVmlzYSA9IC9eNFswLTldezEyfSg/OlswLTldezN9KT8kLztcclxuICAgICAgICAgICAgY29uc3QgTWFzdGVyQ2FyZCA9IC9eKD86NVsxLTVdWzAtOV17Mn18MjIyWzEtOV18MjJbMy05XVswLTldfDJbMy02XVswLTldezJ9fDI3WzAxXVswLTldfDI3MjApWzAtOV17MTJ9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IEFtZXggPSAvXjNbNDddWzAtOV17MTN9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IERpbmVyc0NsdWIgPSAvXjMoPzowWzAtNV18WzY4XVswLTldKVswLTldezExfSQvO1xyXG4gICAgICAgICAgICBjb25zdCBEaXNjb3ZlciA9IC9eNig/OjAxMXw1WzAtOV17Mn0pWzAtOV17MTJ9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IEpDQiA9IC9eKD86MjEzMXwxODAwfDM1XFxkezN9KVxcZHsxMX0kLztcclxuICAgICAgICAgICAgY29uc3QgQkNHbG9iYWwgPSAvXig2NTQxfDY1NTYpWzAtOV17MTJ9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IENhcnRlQmxhbmNoZSA9IC9eMzg5WzAtOV17MTF9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IEluc3RhUGF5bWVudCA9IC9eNjNbNy05XVswLTldezEzfSQvO1xyXG4gICAgICAgICAgICBjb25zdCBLb3JlYW5Mb2NhbENhcmQgPSAvXjlbMC05XXsxNX0kLztcclxuICAgICAgICAgICAgY29uc3QgTGFzZXIgPSAvXig2MzA0fDY3MDZ8NjcwOXw2NzcxKVswLTldezEyLDE1fSQvO1xyXG4gICAgICAgICAgICBjb25zdCBNYWVzdHJvID0gL14oNTAxOHw1MDIwfDUwMzh8NjMwNHw2NzU5fDY3NjF8Njc2MylbMC05XXs4LDE1fSQvO1xyXG4gICAgICAgICAgICBjb25zdCBTb2xvID0gL14oNjMzNHw2NzY3KVswLTldezEyfXwoNjMzNHw2NzY3KVswLTldezE0fXwoNjMzNHw2NzY3KVswLTldezE1fSQvO1xyXG4gICAgICAgICAgICBjb25zdCBTd2l0Y2ggPSAvXig0OTAzfDQ5MDV8NDkxMXw0OTM2fDYzMzN8Njc1OSlbMC05XXsxMn18KDQ5MDN8NDkwNXw0OTExfDQ5MzZ8NjMzM3w2NzU5KVswLTldezE0fXwoNDkwM3w0OTA1fDQ5MTF8NDkzNnw2MzMzfDY3NTkpWzAtOV17MTV9fDU2NDE4MlswLTldezEwfXw1NjQxODJbMC05XXsxMn18NTY0MTgyWzAtOV17MTN9fDYzMzExMFswLTldezEwfXw2MzMxMTBbMC05XXsxMn18NjMzMTEwWzAtOV17MTN9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IFVuaW9uUGF5ID0gL14oNjJbMC05XXsxNCwxN30pJC87XHJcbiAgICAgICAgICAgIGNvbnN0IFZpc2FNYXN0ZXJDYXJkID0gL14oPzo0WzAtOV17MTJ9KD86WzAtOV17M30pP3w1WzEtNV1bMC05XXsxNH0pJC87XHJcblxyXG4gICAgICAgICAgICBpZiAoIWNoZWNrTHVobih2YWx1ZSkgfHxcclxuICAgICAgICAgICAgICAgICEoVmlzYS50ZXN0KHZhbHVlKSB8fCBNYXN0ZXJDYXJkLnRlc3QodmFsdWUpIHx8IEFtZXgudGVzdCh2YWx1ZSkgfHwgRGluZXJzQ2x1Yi50ZXN0KHZhbHVlKSB8fCBEaXNjb3Zlci50ZXN0KHZhbHVlKSB8fCBKQ0IudGVzdCh2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICB8fCBCQ0dsb2JhbC50ZXN0KHZhbHVlKSB8fCBDYXJ0ZUJsYW5jaGUudGVzdCh2YWx1ZSkgfHwgSW5zdGFQYXltZW50LnRlc3QodmFsdWUpIHx8IEtvcmVhbkxvY2FsQ2FyZC50ZXN0KHZhbHVlKSB8fCBMYXNlci50ZXN0KHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIHx8IE1hZXN0cm8udGVzdCh2YWx1ZSkgfHwgU29sby50ZXN0KHZhbHVlKSB8fCBTd2l0Y2gudGVzdCh2YWx1ZSkgfHwgVW5pb25QYXkudGVzdCh2YWx1ZSkgfHwgVmlzYU1hc3RlckNhcmQudGVzdCh2YWx1ZSkgfHxcclxuICAgICAgICAgICAgICAgICAgICAoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuY3VzdG9tVmFsdWUgJiYgKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuY3VzdG9tVmFsdWUudGVzdCh2YWx1ZSkpKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3I7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ0NvbXBhcmUnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gZGF0YU1vZGVsWyhwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLmZpZWxkXSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3I7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ0NvbnRhaW5zJzoge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUuaW5kZXhPZigocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnRGF0YVR5cGUnOiB7XHJcbiAgICAgICAgICAgIGlmICgocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSA9PT0gRGF0YVR5cGVFbnVtLk51bWJlcikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVnID0gL15bKy1dP1xcZCsoXFwuXFxkKyk/JC87XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4ocGFyc2VGbG9hdCh2YWx1ZSkpIHx8ICFyZWcudGVzdCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUgPT09IERhdGFUeXBlRW51bS5EYXRlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3I7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlID09PSBEYXRhVHlwZUVudW0uSGV4YWRlY2ltYWwpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAvXihbMC05YS1mQS1GXSspJC9pO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFleHByZXNzaW9uLnRlc3QodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3I7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlID09PSBEYXRhVHlwZUVudW0uSW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZWcgPSAvXlsrXFwtXT9cXGQrJC87XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4ocGFyc2VGbG9hdCh2YWx1ZSkpXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgIWlzTmFOKHBhcnNlRmxvYXQodmFsdWUpKSAmJiAocGFyc2VGbG9hdCh2YWx1ZSkgLSBwYXJzZUludCh2YWx1ZSwgMTApICE9PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgIHx8ICFyZWcudGVzdCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUgPT09IERhdGFUeXBlRW51bS5BcnJheSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHN0ciA9IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLmVycm9yO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdOb3RDb250YWlucyc6IHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUpICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3I7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ1JlcXVpcmVkJzoge1xyXG4gICAgICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSBwYXJhbSBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ1BhdHRlcm4nOiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhdCA9IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlO1xyXG4gICAgICAgICAgICBpZiAoIXBhdC50ZXN0KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3I7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ01pblZhbHVlJzoge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUgPCAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3IucmVwbGFjZSgnezB9JywgKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ01heFZhbHVlJzoge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUgPiAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3IucmVwbGFjZSgnezB9JywgKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ1N0cmluZ0xlbmd0aCc6IHtcclxuICAgICAgICAgICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZS5sZW5ndGggPCAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5taW4gfHwgdmFsdWUubGVuZ3RoID4gKHBhcmFtIGFzIFJhbmdlSW5wdXRNb2RlbCkubWF4KSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5lcnJvci5yZXBsYWNlKCd7MH0nLCAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5taW4udG9TdHJpbmcoKSkucmVwbGFjZSgnezF9JywgKHBhcmFtIGFzIFJhbmdlSW5wdXRNb2RlbCkubWF4LnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdWYWx1ZVJhbmdlJzoge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUgPCAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5taW4gfHwgdmFsdWUgPiAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5tYXgpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLmVycm9yLnJlcGxhY2UoJ3swfScsIChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1pbi50b1N0cmluZygpKS5yZXBsYWNlKCd7MX0nLCAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5tYXgudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ0VtYWlsJzoge1xyXG4gICAgICAgICAgICAvLyBjcmVkaXRzIGh0dHA6Ly9lbWFpbHJlZ2V4LmNvbS9cclxuICAgICAgICAgICAgY29uc3QgZW1yZWcgPSAvXigoW148PigpXFxbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31dKXwoKFthLXpBLVpcXC0wLTldK1xcLikrW2EtekEtWl17Mix9KSkkLztcclxuICAgICAgICAgICAgaWYgKCFlbXJlZy50ZXN0KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gcGFyYW0gYXMgc3RyaW5nO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkZWZhdWx0OiB7XHJcbiAgICAgICAgICAgIHJldHN0ciA9IG51bGw7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmV0c3RyO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjaGVja0x1aG4odmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgLy8gY3JlZGl0cyBodHRwczovL2dpdGh1Yi5jb20vSmFtZXNFZ2dlcnMxL25vZGUtbHVoblxyXG4gICAgY29uc3QgdHJpbW1lZCA9IFN0cmluZyh2YWx1ZSkucmVwbGFjZSgvW1xcc10vZywgJycpO1xyXG4gICAgY29uc3QgbGVuZ3RoID0gdHJpbW1lZC5sZW5ndGg7XHJcbiAgICBsZXQgb2RkID0gZmFsc2U7XHJcbiAgICBsZXQgdG90YWwgPSAwO1xyXG4gICAgbGV0IGNhbGM7XHJcbiAgICBsZXQgY2FsYzI7XHJcblxyXG4gICAgaWYgKGxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghL15bMC05XSskLy50ZXN0KHRyaW1tZWQpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSBsZW5ndGg7IGkgPiAwOyBpLS0pIHtcclxuICAgICAgICBjYWxjID0gcGFyc2VJbnQodHJpbW1lZC5jaGFyQXQoaSAtIDEpLCAxMCk7XHJcbiAgICAgICAgaWYgKCFvZGQpIHtcclxuICAgICAgICAgICAgdG90YWwgKz0gY2FsYztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjYWxjMiA9IGNhbGMgKiAyO1xyXG5cclxuICAgICAgICAgICAgc3dpdGNoIChjYWxjMikge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAxMDogY2FsYzIgPSAxOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgMTI6IGNhbGMyID0gMzsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDE0OiBjYWxjMiA9IDU7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAxNjogY2FsYzIgPSA3OyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgMTg6IGNhbGMyID0gOTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBjYWxjMiA9IGNhbGMyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRvdGFsICs9IGNhbGMyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvZGQgPSAhb2RkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICh0b3RhbCAhPT0gMCAmJiAodG90YWwgJSAxMCkgPT09IDApO1xyXG59XHJcbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -88,3 +88,3 @@ // credits to https://github.com/clbond/form-example

export { ValueAccessorBase };
function ValueAccessorBase_tsickle_Closure_declarations() {
if (false) {
/** @type {?} */

@@ -91,0 +91,0 @@ ValueAccessorBase.prototype.innerValue;

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -31,3 +31,4 @@ import * as tslib_1 from "tslib";

function () {
var /** @type {?} */ attribs = getDecorators(this.model, this.el.nativeElement.getAttribute('name'));
/** @type {?} */
var attribs = getDecorators(this.model, this.el.nativeElement.getAttribute('name'));
if (attribs.find(function (x) { return x.key === 'DataType'; })) {

@@ -53,8 +54,11 @@ this.dataType = (/** @type {?} */ (attribs.find(function (x) { return x.key === 'DataType'; }).value)).value;

function (control) {
var /** @type {?} */ attribs = getDecorators(this.model, this.el.nativeElement.getAttribute('name'));
var /** @type {?} */ errs = {};
/** @type {?} */
var attribs = getDecorators(this.model, this.el.nativeElement.getAttribute('name'));
/** @type {?} */
var errs = {};
try {
for (var attribs_1 = tslib_1.__values(attribs), attribs_1_1 = attribs_1.next(); !attribs_1_1.done; attribs_1_1 = attribs_1.next()) {
var item = attribs_1_1.value;
var /** @type {?} */ messg = ngxValidate(item.key, item.value, control.value, this.model);
/** @type {?} */
var messg = ngxValidate(item.key, item.value, control.value, this.model);
if (messg) {

@@ -102,3 +106,3 @@ errs[item.key] = messg;

export { NgxInputForComponent };
function NgxInputForComponent_tsickle_Closure_declarations() {
if (false) {
/** @type {?} */

@@ -126,2 +130,2 @@ NgxInputForComponent.prototype.model;

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWlucHV0LWZvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdmFsaWRhdG9yLyIsInNvdXJjZXMiOlsibGliL25neC1pbnB1dC1mb3Ivbmd4LWlucHV0LWZvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUE4QixhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQW1CLE1BQU0saUNBQWlDLENBQUM7O0lBMkJ0QyxnREFBeUI7SUFtQmpFLDhCQUFvQixFQUFjLEVBQ2Q7UUFEcEIsWUFFRSxpQkFBTyxTQUdSO1FBTG1CLFFBQUUsR0FBRixFQUFFLENBQVk7UUFDZCxjQUFRLEdBQVIsUUFBUTt5QkFkakIsY0FBYzs2QkFFVixZQUFZOzRCQVFiLEVBQUU7cUJBQ1QsRUFBRTtRQU1QLEtBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQzs7S0FDdkU7Ozs7SUFFRCx1Q0FBUTs7O0lBQVI7UUFDRSxxQkFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDdEYsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxHQUFHLEtBQUssVUFBVSxFQUFwQixDQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsbUJBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxHQUFHLEtBQUssVUFBVSxFQUFwQixDQUFvQixDQUFDLENBQUMsS0FBd0IsRUFBQyxDQUFDLEtBQUssQ0FBQztTQUMxRjtRQUVELEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsR0FBRyxLQUFLLGFBQWEsRUFBdkIsQ0FBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsR0FBRyxLQUFLLGFBQWEsRUFBdkIsQ0FBdUIsQ0FBQyxDQUFDLEtBQUssQ0FBQztTQUNyRTtRQUVELEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsR0FBRyxLQUFLLE1BQU0sRUFBaEIsQ0FBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsR0FBRyxLQUFLLE1BQU0sRUFBaEIsQ0FBZ0IsQ0FBQyxDQUFDLEtBQUssQ0FBQztTQUM5RDtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3pEOzs7OztJQUVELHVDQUFROzs7O0lBQVIsVUFBUyxPQUF3QjtRQUUvQixxQkFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDdEYscUJBQU0sSUFBSSxHQUFvQyxFQUFFLENBQUM7O1lBRWpELEdBQUcsQ0FBQyxDQUFlLElBQUEsWUFBQSxpQkFBQSxPQUFPLENBQUEsZ0NBQUE7Z0JBQXJCLElBQU0sSUFBSSxvQkFBQTtnQkFDYixxQkFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0UsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDVixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztpQkFDeEI7YUFDRjs7Ozs7Ozs7O1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQzs7S0FDYjs7Z0JBL0VGLFNBQVMsU0FBQzs7b0JBRVQsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFFBQVEsRUFBRSxzM0JBWUk7b0JBQ2QsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUNaLFNBQVMsRUFBRSxDQUFDOzRCQUNWLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxvQkFBb0I7NEJBQ2pDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNELEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO2lCQUM1RTs7OztnQkE3QjZDLFVBQVU7Z0JBQUUsU0FBUzs7O3dCQWlDaEUsS0FBSzsyQkFHTCxLQUFLOzBCQVFMLFNBQVMsU0FBQyxPQUFPOzsrQkE1Q3BCO0VBK0IwQyxpQkFBaUI7U0FBOUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbHVlQWNjZXNzb3JCYXNlIH0gZnJvbSAnLi4vLi4vY29yZS92YWx1ZS1hY2Nlc3Nvcic7XG5pbXBvcnQgeyBOZ01vZGVsLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdG9yLCBBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTElEQVRPUlMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBnZXREZWNvcmF0b3JzLCBuZ3hWYWxpZGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUvcmVmbGVjdG9yLWZ1bmN0aW9ucyc7XG5pbXBvcnQgeyBEYXRhVHlwZUVudW0sIFBhcmFtSW5wdXRNb2RlbCB9IGZyb20gJy4uLy4uL2NvcmUvcmVmbGVjdC1pbnB1dC5tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ25neC1pbnB1dC1mb3InLFxuICB0ZW1wbGF0ZTogYDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImRhdGFUeXBlXCI+XG4gICAgPGEgW2hyZWZdPVwidmFsdWVcIiAqbmdTd2l0Y2hDYXNlPVwiRGF0YVR5cGVFbnVtLlVybFwiIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCI+e3tuYW1lIHwgdHJhbnNsYXRlfX08L2E+XG5cbiAgICA8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlRW51bS5QYXNzd29yZFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZUhvbGRlclwiIFsobmdNb2RlbCldPVwidmFsdWVcIiBbaWRdPVwiZmllbGRcIiBbbmdDbGFzc109XCJjc3NDbGFzc1wiLz5cblxuICAgIDxpbWcgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlRW51bS5JbWFnZVVybFwiIFtzcmNdPVwidmFsdWVcIiBbaWRdPVwiZmllbGRcIiAvPlxuXG4gICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlRW51bS5VcGxvYWRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgW2lkXT1cImZpZWxkXCIgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIi8+XG5cbiAgICA8dGV4dGFyZWEgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlRW51bS5NdWx0aWxpbmVUZXh0XCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIFtpZF09XCJmaWVsZFwiIHJvd3M9XCI1XCIgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIj48L3RleHRhcmVhPlxuXG4gICAgPGlucHV0ICpuZ1N3aXRjaERlZmF1bHQgdHlwZT1cInRleHRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgW2lkXT1cImZpZWxkXCIgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIiAvPlxuPC9uZy1jb250YWluZXI+YCxcbiAgc3R5bGVzOiBbYGBdLFxuICBwcm92aWRlcnM6IFt7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IE5neElucHV0Rm9yQ29tcG9uZW50LFxuICAgIG11bHRpOiB0cnVlLFxuICB9LFxuICB7IHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBOZ3hJbnB1dEZvckNvbXBvbmVudCwgbXVsdGk6IHRydWUgfV0sXG59KVxuXG5leHBvcnQgY2xhc3MgTmd4SW5wdXRGb3JDb21wb25lbnQgZXh0ZW5kcyBWYWx1ZUFjY2Vzc29yQmFzZTxzdHJpbmc+IGltcGxlbWVudHMgT25Jbml0LCBWYWxpZGF0b3Ige1xuXG4gIEBJbnB1dCgpXG4gIG1vZGVsOiBhbnk7XG5cbiAgQElucHV0KClcbiAgY3NzQ2xhc3MgPSAnZm9ybS1jb250cm9sJztcblxuICBEYXRhVHlwZUVudW0gPSBEYXRhVHlwZUVudW07XG4gIGRhdGFUeXBlOiBudW1iZXI7XG5cbiAgZmllbGQ6IHN0cmluZztcblxuICBAVmlld0NoaWxkKE5nTW9kZWwpXG4gIG5nTW9kZWw6IE5nTW9kZWw7XG5cbiAgcGxhY2VIb2xkZXIgPSAnJztcbiAgbmFtZSA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICduYW1lJywgJ2hlcm9OYW1lJyk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBhdHRyaWJzID0gZ2V0RGVjb3JhdG9ycyh0aGlzLm1vZGVsLCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCduYW1lJykpO1xuICAgIGlmIChhdHRyaWJzLmZpbmQoeCA9PiB4LmtleSA9PT0gJ0RhdGFUeXBlJykpIHtcbiAgICAgIHRoaXMuZGF0YVR5cGUgPSAoYXR0cmlicy5maW5kKHggPT4geC5rZXkgPT09ICdEYXRhVHlwZScpLnZhbHVlIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKGF0dHJpYnMuZmluZCh4ID0+IHgua2V5ID09PSAnUGxhY2Vob2xkZXInKSkge1xuICAgICAgdGhpcy5wbGFjZUhvbGRlciA9IGF0dHJpYnMuZmluZCh4ID0+IHgua2V5ID09PSAnUGxhY2Vob2xkZXInKS52YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoYXR0cmlicy5maW5kKHggPT4geC5rZXkgPT09ICdOYW1lJykpIHtcbiAgICAgIHRoaXMucGxhY2VIb2xkZXIgPSBhdHRyaWJzLmZpbmQoeCA9PiB4LmtleSA9PT0gJ05hbWUnKS52YWx1ZTtcbiAgICB9XG4gICAgdGhpcy5maWVsZCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ25hbWUnKTtcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW3ZhbGlkYXRvcjogc3RyaW5nXTogc3RyaW5nIH0ge1xuXG4gICAgY29uc3QgYXR0cmlicyA9IGdldERlY29yYXRvcnModGhpcy5tb2RlbCwgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnbmFtZScpKTtcbiAgICBjb25zdCBlcnJzOiB7IFt2YWxpZGF0b3I6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXR0cmlicykge1xuICAgICAgY29uc3QgbWVzc2cgPSBuZ3hWYWxpZGF0ZShpdGVtLmtleSwgaXRlbS52YWx1ZSwgY29udHJvbC52YWx1ZSwgdGhpcy5tb2RlbCk7XG4gICAgICBpZiAobWVzc2cpIHtcbiAgICAgICAgZXJyc1tpdGVtLmtleV0gPSBtZXNzZztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVycnM7XG4gIH1cblxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWlucHV0LWZvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdmFsaWRhdG9yLyIsInNvdXJjZXMiOlsibGliL25neC1pbnB1dC1mb3Ivbmd4LWlucHV0LWZvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUE4QixhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQW1CLE1BQU0saUNBQWlDLENBQUM7O0lBMkJ0QyxnREFBeUI7SUFtQmpFLDhCQUFvQixFQUFjLEVBQ2Q7UUFEcEIsWUFFRSxpQkFBTyxTQUdSO1FBTG1CLFFBQUUsR0FBRixFQUFFLENBQVk7UUFDZCxjQUFRLEdBQVIsUUFBUTt5QkFkakIsY0FBYzs2QkFFVixZQUFZOzRCQVFiLEVBQUU7cUJBQ1QsRUFBRTtRQU1QLEtBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQzs7S0FDdkU7Ozs7SUFFRCx1Q0FBUTs7O0lBQVI7O1FBQ0UsSUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDdEYsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxHQUFHLEtBQUssVUFBVSxFQUFwQixDQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsbUJBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxHQUFHLEtBQUssVUFBVSxFQUFwQixDQUFvQixDQUFDLENBQUMsS0FBd0IsRUFBQyxDQUFDLEtBQUssQ0FBQztTQUMxRjtRQUVELEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsR0FBRyxLQUFLLGFBQWEsRUFBdkIsQ0FBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsR0FBRyxLQUFLLGFBQWEsRUFBdkIsQ0FBdUIsQ0FBQyxDQUFDLEtBQUssQ0FBQztTQUNyRTtRQUVELEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsR0FBRyxLQUFLLE1BQU0sRUFBaEIsQ0FBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsR0FBRyxLQUFLLE1BQU0sRUFBaEIsQ0FBZ0IsQ0FBQyxDQUFDLEtBQUssQ0FBQztTQUM5RDtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3pEOzs7OztJQUVELHVDQUFROzs7O0lBQVIsVUFBUyxPQUF3Qjs7UUFFL0IsSUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7O1FBQ3RGLElBQU0sSUFBSSxHQUFvQyxFQUFFLENBQUM7O1lBRWpELEdBQUcsQ0FBQyxDQUFlLElBQUEsWUFBQSxpQkFBQSxPQUFPLENBQUEsZ0NBQUE7Z0JBQXJCLElBQU0sSUFBSSxvQkFBQTs7Z0JBQ2IsSUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0UsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDVixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztpQkFDeEI7YUFDRjs7Ozs7Ozs7O1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQzs7S0FDYjs7Z0JBL0VGLFNBQVMsU0FBQzs7b0JBRVQsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFFBQVEsRUFBRSxzM0JBWUk7b0JBQ2QsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUNaLFNBQVMsRUFBRSxDQUFDOzRCQUNWLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxvQkFBb0I7NEJBQ2pDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNELEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO2lCQUM1RTs7OztnQkE3QjZDLFVBQVU7Z0JBQUUsU0FBUzs7O3dCQWlDaEUsS0FBSzsyQkFHTCxLQUFLOzBCQVFMLFNBQVMsU0FBQyxPQUFPOzsrQkE1Q3BCO0VBK0IwQyxpQkFBaUI7U0FBOUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbHVlQWNjZXNzb3JCYXNlIH0gZnJvbSAnLi4vLi4vY29yZS92YWx1ZS1hY2Nlc3Nvcic7XG5pbXBvcnQgeyBOZ01vZGVsLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdG9yLCBBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTElEQVRPUlMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBnZXREZWNvcmF0b3JzLCBuZ3hWYWxpZGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUvcmVmbGVjdG9yLWZ1bmN0aW9ucyc7XG5pbXBvcnQgeyBEYXRhVHlwZUVudW0sIFBhcmFtSW5wdXRNb2RlbCB9IGZyb20gJy4uLy4uL2NvcmUvcmVmbGVjdC1pbnB1dC5tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ25neC1pbnB1dC1mb3InLFxuICB0ZW1wbGF0ZTogYDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImRhdGFUeXBlXCI+XG4gICAgPGEgW2hyZWZdPVwidmFsdWVcIiAqbmdTd2l0Y2hDYXNlPVwiRGF0YVR5cGVFbnVtLlVybFwiIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCI+e3tuYW1lIHwgdHJhbnNsYXRlfX08L2E+XG5cbiAgICA8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlRW51bS5QYXNzd29yZFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZUhvbGRlclwiIFsobmdNb2RlbCldPVwidmFsdWVcIiBbaWRdPVwiZmllbGRcIiBbbmdDbGFzc109XCJjc3NDbGFzc1wiLz5cblxuICAgIDxpbWcgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlRW51bS5JbWFnZVVybFwiIFtzcmNdPVwidmFsdWVcIiBbaWRdPVwiZmllbGRcIiAvPlxuXG4gICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlRW51bS5VcGxvYWRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgW2lkXT1cImZpZWxkXCIgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIi8+XG5cbiAgICA8dGV4dGFyZWEgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlRW51bS5NdWx0aWxpbmVUZXh0XCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIFtpZF09XCJmaWVsZFwiIHJvd3M9XCI1XCIgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIj48L3RleHRhcmVhPlxuXG4gICAgPGlucHV0ICpuZ1N3aXRjaERlZmF1bHQgdHlwZT1cInRleHRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgW2lkXT1cImZpZWxkXCIgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIiAvPlxuPC9uZy1jb250YWluZXI+YCxcbiAgc3R5bGVzOiBbYGBdLFxuICBwcm92aWRlcnM6IFt7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IE5neElucHV0Rm9yQ29tcG9uZW50LFxuICAgIG11bHRpOiB0cnVlLFxuICB9LFxuICB7IHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBOZ3hJbnB1dEZvckNvbXBvbmVudCwgbXVsdGk6IHRydWUgfV0sXG59KVxuXG5leHBvcnQgY2xhc3MgTmd4SW5wdXRGb3JDb21wb25lbnQgZXh0ZW5kcyBWYWx1ZUFjY2Vzc29yQmFzZTxzdHJpbmc+IGltcGxlbWVudHMgT25Jbml0LCBWYWxpZGF0b3Ige1xuXG4gIEBJbnB1dCgpXG4gIG1vZGVsOiBhbnk7XG5cbiAgQElucHV0KClcbiAgY3NzQ2xhc3MgPSAnZm9ybS1jb250cm9sJztcblxuICBEYXRhVHlwZUVudW0gPSBEYXRhVHlwZUVudW07XG4gIGRhdGFUeXBlOiBudW1iZXI7XG5cbiAgZmllbGQ6IHN0cmluZztcblxuICBAVmlld0NoaWxkKE5nTW9kZWwpXG4gIG5nTW9kZWw6IE5nTW9kZWw7XG5cbiAgcGxhY2VIb2xkZXIgPSAnJztcbiAgbmFtZSA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICduYW1lJywgJ2hlcm9OYW1lJyk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBhdHRyaWJzID0gZ2V0RGVjb3JhdG9ycyh0aGlzLm1vZGVsLCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCduYW1lJykpO1xuICAgIGlmIChhdHRyaWJzLmZpbmQoeCA9PiB4LmtleSA9PT0gJ0RhdGFUeXBlJykpIHtcbiAgICAgIHRoaXMuZGF0YVR5cGUgPSAoYXR0cmlicy5maW5kKHggPT4geC5rZXkgPT09ICdEYXRhVHlwZScpLnZhbHVlIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKGF0dHJpYnMuZmluZCh4ID0+IHgua2V5ID09PSAnUGxhY2Vob2xkZXInKSkge1xuICAgICAgdGhpcy5wbGFjZUhvbGRlciA9IGF0dHJpYnMuZmluZCh4ID0+IHgua2V5ID09PSAnUGxhY2Vob2xkZXInKS52YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoYXR0cmlicy5maW5kKHggPT4geC5rZXkgPT09ICdOYW1lJykpIHtcbiAgICAgIHRoaXMucGxhY2VIb2xkZXIgPSBhdHRyaWJzLmZpbmQoeCA9PiB4LmtleSA9PT0gJ05hbWUnKS52YWx1ZTtcbiAgICB9XG4gICAgdGhpcy5maWVsZCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ25hbWUnKTtcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW3ZhbGlkYXRvcjogc3RyaW5nXTogc3RyaW5nIH0ge1xuXG4gICAgY29uc3QgYXR0cmlicyA9IGdldERlY29yYXRvcnModGhpcy5tb2RlbCwgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnbmFtZScpKTtcbiAgICBjb25zdCBlcnJzOiB7IFt2YWxpZGF0b3I6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXR0cmlicykge1xuICAgICAgY29uc3QgbWVzc2cgPSBuZ3hWYWxpZGF0ZShpdGVtLmtleSwgaXRlbS52YWx1ZSwgY29udHJvbC52YWx1ZSwgdGhpcy5tb2RlbCk7XG4gICAgICBpZiAobWVzc2cpIHtcbiAgICAgICAgZXJyc1tpdGVtLmtleV0gPSBtZXNzZztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVycnM7XG4gIH1cblxufVxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -41,3 +41,3 @@ import { Component, Input } from '@angular/core';

export { NgxLabelForComponent };
function NgxLabelForComponent_tsickle_Closure_declarations() {
if (false) {
/** @type {?} */

@@ -44,0 +44,0 @@ NgxLabelForComponent.prototype.model;

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -52,3 +52,3 @@ import * as tslib_1 from "tslib";

export { NgxValidatorForComponent };
function NgxValidatorForComponent_tsickle_Closure_declarations() {
if (false) {
/** @type {?} */

@@ -55,0 +55,0 @@ NgxValidatorForComponent.prototype.messages;

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -33,4 +33,6 @@ import * as tslib_1 from "tslib";

function (control) {
var /** @type {?} */ attribs = getDecorators(this.dataModel, this.el.nativeElement.getAttribute('name'));
var /** @type {?} */ errs = {};
/** @type {?} */
var attribs = getDecorators(this.dataModel, this.el.nativeElement.getAttribute('name'));
/** @type {?} */
var errs = {};
try {

@@ -41,3 +43,4 @@ // const t = await validate(this.skValidator);

var item = attribs_1_1.value;
var /** @type {?} */ messg = ngxValidate(item.key, item.value, control.value, this.dataModel);
/** @type {?} */
var messg = ngxValidate(item.key, item.value, control.value, this.dataModel);
if (messg) {

@@ -77,3 +80,3 @@ errs[item.key] = messg;

export { NgxValidatorDirective };
function NgxValidatorDirective_tsickle_Closure_declarations() {
if (false) {
/** @type {?} */

@@ -85,2 +88,2 @@ NgxValidatorDirective.prototype.dataModel;

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZhbGlkYXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdmFsaWRhdG9yLyIsInNvdXJjZXMiOlsibGliL25neC12YWxpZGF0b3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQThCLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7SUFrQnZFLCtCQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtLQUFLO0lBTHZDLHNCQUNJLHFDQUFFOzs7OztRQUROLFVBQ08sS0FBVTtZQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQ3hCOzs7T0FBQTs7Ozs7SUFJRCx3Q0FBUTs7OztJQUFSLFVBQVMsT0FBd0I7UUFFL0IscUJBQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzFGLHFCQUFNLElBQUksR0FBb0MsRUFBRSxDQUFDOztZQUVqRCw4Q0FBOEM7WUFDOUMsMkJBQTJCO1lBRTNCLEdBQUcsQ0FBQyxDQUFlLElBQUEsWUFBQSxpQkFBQSxPQUFPLENBQUEsZ0NBQUE7Z0JBQXJCLElBQU0sSUFBSSxvQkFBQTtnQkFDYixxQkFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDL0UsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDVixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztpQkFDeEI7YUFDRjs7Ozs7Ozs7O1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQzs7S0FDYjs7Z0JBakNGLFNBQVMsU0FBQzs7b0JBRVQsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsU0FBUyxFQUFFO3dCQUNULEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtxQkFDNUU7aUJBQ0Y7Ozs7Z0JBVjBCLFVBQVU7OztxQkFlbEMsS0FBSyxTQUFDLGVBQWU7O2dDQWZ4Qjs7U0FXYSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxJREFUT1JTLCBWYWxpZGF0b3IsIEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGdldERlY29yYXRvcnMsIG5neFZhbGlkYXRlIH0gZnJvbSAnLi4vY29yZS9yZWZsZWN0b3ItZnVuY3Rpb25zJztcblxuQERpcmVjdGl2ZSh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbbmd4LXZhbGlkYXRvcl0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBOZ3hWYWxpZGF0b3JEaXJlY3RpdmUsIG11bHRpOiB0cnVlIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hWYWxpZGF0b3JEaXJlY3RpdmUgaW1wbGVtZW50cyBWYWxpZGF0b3Ige1xuXG4gIHByaXZhdGUgZGF0YU1vZGVsOiBhbnk7XG5cbiAgQElucHV0KCduZ3gtdmFsaWRhdG9yJylcbiAgc2V0IHNrKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmRhdGFNb2RlbCA9IHZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikgeyB9XG5cbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBbdmFsaWRhdG9yOiBzdHJpbmddOiBzdHJpbmcgfSB7XG5cbiAgICBjb25zdCBhdHRyaWJzID0gZ2V0RGVjb3JhdG9ycyh0aGlzLmRhdGFNb2RlbCwgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnbmFtZScpKTtcbiAgICBjb25zdCBlcnJzOiB7IFt2YWxpZGF0b3I6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgICAvLyBjb25zdCB0ID0gYXdhaXQgdmFsaWRhdGUodGhpcy5za1ZhbGlkYXRvcik7XG4gICAgLy8gcmV0dXJuIHRbMF0uY29uc3RyYWludHM7XG5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXR0cmlicykge1xuICAgICAgY29uc3QgbWVzc2cgPSBuZ3hWYWxpZGF0ZShpdGVtLmtleSwgaXRlbS52YWx1ZSwgY29udHJvbC52YWx1ZSwgdGhpcy5kYXRhTW9kZWwpO1xuICAgICAgaWYgKG1lc3NnKSB7XG4gICAgICAgIGVycnNbaXRlbS5rZXldID0gbWVzc2c7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlcnJzO1xuICB9XG5cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZhbGlkYXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdmFsaWRhdG9yLyIsInNvdXJjZXMiOlsibGliL25neC12YWxpZGF0b3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQThCLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7SUFrQnZFLCtCQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtLQUFLO0lBTHZDLHNCQUNJLHFDQUFFOzs7OztRQUROLFVBQ08sS0FBVTtZQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQ3hCOzs7T0FBQTs7Ozs7SUFJRCx3Q0FBUTs7OztJQUFSLFVBQVMsT0FBd0I7O1FBRS9CLElBQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDOztRQUMxRixJQUFNLElBQUksR0FBb0MsRUFBRSxDQUFDOztZQUVqRCw4Q0FBOEM7WUFDOUMsMkJBQTJCO1lBRTNCLEdBQUcsQ0FBQyxDQUFlLElBQUEsWUFBQSxpQkFBQSxPQUFPLENBQUEsZ0NBQUE7Z0JBQXJCLElBQU0sSUFBSSxvQkFBQTs7Z0JBQ2IsSUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDL0UsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDVixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztpQkFDeEI7YUFDRjs7Ozs7Ozs7O1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQzs7S0FDYjs7Z0JBakNGLFNBQVMsU0FBQzs7b0JBRVQsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsU0FBUyxFQUFFO3dCQUNULEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtxQkFDNUU7aUJBQ0Y7Ozs7Z0JBVjBCLFVBQVU7OztxQkFlbEMsS0FBSyxTQUFDLGVBQWU7O2dDQWZ4Qjs7U0FXYSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxJREFUT1JTLCBWYWxpZGF0b3IsIEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGdldERlY29yYXRvcnMsIG5neFZhbGlkYXRlIH0gZnJvbSAnLi4vY29yZS9yZWZsZWN0b3ItZnVuY3Rpb25zJztcblxuQERpcmVjdGl2ZSh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbbmd4LXZhbGlkYXRvcl0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBOZ3hWYWxpZGF0b3JEaXJlY3RpdmUsIG11bHRpOiB0cnVlIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hWYWxpZGF0b3JEaXJlY3RpdmUgaW1wbGVtZW50cyBWYWxpZGF0b3Ige1xuXG4gIHByaXZhdGUgZGF0YU1vZGVsOiBhbnk7XG5cbiAgQElucHV0KCduZ3gtdmFsaWRhdG9yJylcbiAgc2V0IHNrKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmRhdGFNb2RlbCA9IHZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikgeyB9XG5cbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBbdmFsaWRhdG9yOiBzdHJpbmddOiBzdHJpbmcgfSB7XG5cbiAgICBjb25zdCBhdHRyaWJzID0gZ2V0RGVjb3JhdG9ycyh0aGlzLmRhdGFNb2RlbCwgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnbmFtZScpKTtcbiAgICBjb25zdCBlcnJzOiB7IFt2YWxpZGF0b3I6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgICAvLyBjb25zdCB0ID0gYXdhaXQgdmFsaWRhdGUodGhpcy5za1ZhbGlkYXRvcik7XG4gICAgLy8gcmV0dXJuIHRbMF0uY29uc3RyYWludHM7XG5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXR0cmlicykge1xuICAgICAgY29uc3QgbWVzc2cgPSBuZ3hWYWxpZGF0ZShpdGVtLmtleSwgaXRlbS52YWx1ZSwgY29udHJvbC52YWx1ZSwgdGhpcy5kYXRhTW9kZWwpO1xuICAgICAgaWYgKG1lc3NnKSB7XG4gICAgICAgIGVycnNbaXRlbS5rZXldID0gbWVzc2c7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlcnJzO1xuICB9XG5cbn1cbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ import { NgModule } from '@angular/core';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ import { Injectable } from '@angular/core';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /**

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /*

{
"license": "MIT",
"name": "ngx-validator",
"version": "0.10.2",
"version": "0.10.3",
"peerDependencies": {

@@ -16,3 +16,5 @@ "@angular/common": "^6.0.0-rc.0 || ^6.0.0",

"reflection",
"property decorators"
"property decorators",
"dataanotations",
"html helpers"
],

@@ -19,0 +21,0 @@ "repository": {

# ngx-validator for angular template driven forms
It is a angular custom validator directive, based on typesript class property decorators, which replaces html input validators like `required`, `pattern`, `email`, `min`, etc and adds many others. It is analog of data annotations in C#. This library depends on @ngx-translate/core for translations support.
It is a angular custom validator directive, based on typesript class property decorators, which replaces html input validators like `required`, `pattern`, `email`, `min`, etc and adds many others. It is analog of data annotations in C#. This library depends on @ngx-translate/core for translations support.
This library contains 3 angular components - `<ngx-label-for>`, `<ngx-validator-for>`, `ngx-input-for` and a directive `ngx-validator`.
This library contains 2 angular components - `<ngx-label-for>`, `<ngx-validator-for>` and a directive `ngx-validator`.
## ngx-validator

@@ -13,4 +12,4 @@

ngx-input-for generates control component from @Datatype() decorator data (just like C# razor helpers) and perfoms input validations if necessary.
Generated form contols are folowing:
ngx-input-for generates control component from @Datatype() decorator data (just like C# razor helpers) and perfoms input validations if necessary.
Generated form contols are folowing:
DataTypeEnum:

@@ -70,4 +69,3 @@

The variable `model` here is the instance of a class, where we have our decorators defined. The class instance should always be created by `new` keyword, otherwise library will not work.
The variable `model` here is the instance of a class, where we have our decorators defined. The class instance should always be created by `new` keyword, otherwise library will not work.
Example of a class and usage:

@@ -213,4 +211,4 @@

Support for angular reactive forms (Do we really need it?)
Add custom validation logic(soon)
Add `ngx-form-for` component to generate form template based on class instance and decorator data. (soon)
Support for angular reactive forms (Do we really need it?)
Add custom validation logic(soon)
Add `ngx-form-for` component to generate form template based on class instance and decorator data. (soon)

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc